Смоделируйте выбор клиентов
Откройте Библиотеку моделирования процессов в панели Палитра и перетащите на диаграмму процесса Main блок SelectOutput в свободное место между блоками source и queue. Возможно, вам понадобится переместить несколько блоков, чтобы увеличить длину соединителя между ними. Вы можете выделить несколько блоков диаграммы процесса и переместить их все вместе или перемещать блоки по одному.
SelectOutput является блоком принятия решения. В зависимости от заданного вами условия, агент, поступивший в объект, будет поступать на один из двух выходных портов объекта.
Выделите блок selectOutput в диаграмме процесса. В панели Свойства этого блока выберите опцию При выполнении условия в параметре Выход true выбирается. Убедитесь, что в поле Условие стоит выражение randomTrue( 0.5 ).
В этом случае к кассирам и банкомату будет приходить примерно равное количество клиентов.
Соедините блоки selectOutput и service с другими блоками так, как показано на рисунке ниже:
Добавьте ресурсы для сервиса
Откройте Библиотеку моделирования процессов в панели Палитра и перетащите блок ResourcePool на диаграмму агента Main. Объект ResourcePool задает ресурсы определенного типа (в нашей модели это будут банковские клерки).
Поместите его, например, под блоком service и перейдите в панель Свойства.
Назовите объект tellers.
Задайте число кассиров в поле Кол-во ресурсов: 4.
Блок ResourcePool указывается в объектах, использующих ресурсы, в нашем случае это блок Service. Поэтому нам необходимо изменить свойства блока service диаграммы процесса.
Выделите блок service и перейдите в панель Свойства. Выберите опцию Ресурсы одного типа в параметре Захватить ресурсы. Затем укажите блок tellers, который мы добавили на диаграмму, в параметре Блок ResourcePool. Вы можете выбрать его из выпадающего списка подходящих объектов, щелкнув стрелку "вниз", или выбрать фигуру из графического редактора, предварительно щелкнув кнопку справа от параметра (в таком случае все неподходящие объекты в графическом редакторе будут обесцвечены).
7.Поскольку наша модель изменилась, мы должны изменить и ее анимацию.
Добавление фигур разметки пространства
Теперь давайте нарисуем область для ожидания и место обслуживания клиентов кассирами.
Задайте фигуру разметки для электронной очереди
В этот раз мы будем рисовать место ожидания клиентами, используя прямоугольный узел. Вначале откройте палитру Разметка пространства панели Палитра.
Двойным щелчком выделите элемент Прямоугольный узел палитры Разметка пространства, чтобы перейти в режим рисования.
Щелкните мышью в графическом редакторе, чтобы задать вершину верхнего левого угла, затем тащите прямоугольник, не отпуская кнопки мыши. Отпустите, когда прямоугольный узел достигнет нужной формы. Вы можете редактировать фигуру и после того, как ее рисование завершено
Назовите эту область waitingArea.
Переключите элемент управления Видимость в положение нет. Таким образом разметка пространства не будет видна на анимации во время выполнения модели.
Выделите щелчком блок service block в диаграмме процесса и перейдите в его свойства.
Выберите только что нарисованный нами узел waitingArea в параметре Место агентов (queue)
Задайте фигуру разметки места обслуживания клиентов
Клиентам банка требуется место, на котором они могли бы находиться во время обслуживания у кассиров. Мы нарисуем такую область, используя прямоугольный узел.
Вначале откройте палитру Разметка пространства панели Палитра.
Двойным щелчком выделите элемент Прямоугольный узел палитры Разметка пространства, чтобы перейти в режим рисования.
Щелкните мышью в графическом редакторе, чтобы задать вершину верхнего левого угла, затем тащите прямоугольник, не отпуская кнопки мыши. Отпустите, когда прямоугольный узел имеет нужную форму. Вы можете редактировать фигуру и после того, как ее рисование завершено.
Назовите эту область customerPlaces.
Переключите элемент управления Видимость в положение нет.
Мы будем использовать аттракторы, чтобы задать местоположение тех клиентов, которые будут обслуживаться у кассиров. Выделите узел customerPlaces в графическом редакторе и щелкните кнопку Аттракторы... в свойствах узла. В открывшемся окне Аттракторы укажите число аттракторов 4 в режиме создания Количество аттракторов, затем щелкните OK. Вы увидите, что четыре аттрактора появились в узле customerPlaces на равном расстоянии друг от друга.
Теперь нам необходимо сослаться на эту фигуру в диаграмме процесса. Щелкните блок service и перейдите в панель Свойства этого блока.
Выберите нарисованный нами узел customerPlaces в параметре Место агентов (delay)
Задайте фигуру разметки для кассиров
Кассирам банка также требуется место, где они могли бы находиться во время обслуживания клиентов. Мы нарисуем такую область, используя прямоугольный узел.
Вначале откройте палитру Разметка пространства панели Палитра.
Двойным щелчком выделите элемент Прямоугольный узел палитры Разметка пространства, чтобы перейти в режим рисования.
Щелкните мышью в графическом редакторе, чтобы задать вершину верхнего левого угла, затем тащите прямоугольник, не отпуская кнопки мыши. Отпустите, когда прямоугольный узел имеет нужную форму. Вы можете редактировать фигуру и после того, как ее рисование завершено.
Назовите эту область tellerPlaces.
Переключите элемент управления Видимость в положение нет.
Мы будем использовать аттракторы, чтобы задать местоположение клерков. Выделите узел tellerPlaces в графическом редакторе и щелкните кнопку Аттракторы... в свойствах узла. В открывшемся окне Аттракторы укажите число аттракторов 4 в режиме создания Количество аттракторов, затем щелкните OK.
Вы увидите, что четыре аттрактора появились в узле tellerPlaces на равном расстоянии друг от друга, но они направлены не в ту сторону. Выделите все аттракторы, зажав клавишу Shift и щелкнув по ним мышью, и потом выберите +180.0 в параметре Ориентация секции свойств Местоположение и размер.
Щелкните объект tellers в диаграмме процесса и перейдите в его свойства.
Выберите нарисованный нами узел tellerPlaces в параметре Базовое местоположение (узлы)
Вы можете запустить модель и наблюдать, как клиенты обслуживаются у банкоматов и проходят к кассирам.
Добавление 3D объектов
Давайте добавим 3D фигуры клерков в нашу модель. Мы создадим новый тип ресурсов для анимации клерков.
Создайте новый тип ресурсов
Откройте Библиотеку моделирования процессов в панели Палитра.
Перетащите элемент Тип ресурса в графический редактор.
Откроется диалоговое окно Мастера создания агентов на шаге Создание нового типа агента. Введите Teller в поле Имя нового типа, оставьте опцию Создать новый тип агента "с нуля" выбранной. Нажмите Далее.
Выберите опцию 3D для типа анимации и фигуру анимации Служащий из списка 3D фигур.
Щелкните Готово. Новая диаграмма Teller автоматически откроется. Вы можете найти 3D фигуру Служащий в начале координат. Переключитесь обратно на диаграмму Main.
Настройте использование нового типа ресурсов в блок-схеме
На диаграмме Main, выделите блок tellers в графическом редакторе.
Выберите тип ресурсов Teller в выпадающем списке параметра Новый ресурс.
Запустите модель, чтобы увидеть получившуюся анимацию клерков.
Добавьте столы для клерков
Откройте палитру 3D Объекты в панели Палитра.
Перетащите четыре 3D фигуры Стол из секции палитры Офис в графический редактор и поместите их в узел tellerPlaces.
Расположите столы на аттракторах, так как аттракторы обозначают место, где стоят клерки
Вы заметите, что они стоят не той стороной к клеркам. Выделите все столы методом Shift-щелчок и перейдите в их свойства.
В секции Расположение измените параметр Поворот Z: -90.0 градусов.
При необходимости, выровняйте расположение всех восьми аттракторов и столов.
Теперь вы можете запустить модель и увидеть в 3D анимации, как некоторые клиенты идут к банкомату, а другие обслуживаются у столов клерков.
Шаг 4. Сбор статистики
AnyLogic предоставляет пользователю удобные средства для сбора статистики по работе блоков диаграммы процесса. Блоки Библиотеки моделирования процессов самостоятельно производят сбор основной статистики.
Мы можем, например, просмотреть интересующую нас статистику (скажем, статистику занятости банкомата и длины очереди) с помощью диаграмм.
Сбор статистики по времени обслуживания
Мы хотим знать, сколько времени клиент проводит в банковском отделении. Мы соберем эту статистику с помощью блоков TimeMeasureStart и TimeMeasureEnd из Библиотеки моделирования процессов и отобразим собранную статистику распределения времен обслуживания клиентов с помощью гистограммы. Чтобы измерить время, проведенное агентами на определенном отрезке диаграммы процесса, мы должны разместить эти блоки соответственно на входе в интересующий нас отрезок и на выходе из него. Первый блок хранит время прохождения агента через блок, а второй измеряет время, которое агент провел на отрезке диаграммы процесса после того, как покинул первый блок.
Добавьте блоки измерения времени в диаграмму процесса
Измените диаграмму процесса так, чтобы между блоком source и блоком selectOutput появилось место для нового блока.
Откройте Библиотеку моделирования процессов в панели Палитра и добавьте блок TimeMeasureStart в освободившееся место. Убедитесь, что порты блока соединены к соседним блокам.
Перетащите блок sink вправо.
Перетащите блок TimeMeasureEnd из Библиотеки моделирования процессов на графический редактор и разместите его перед блоком sink.
Убедитесь, что входной порт блока соединен с блоками ATM и service, а выходной - с блоком sink.
Чтобы рассчитать распределения времен для агентов, в свойствах каждого блока TimeMeasureEnd должен быть указан как минимум один блок TimeMeasureStart. Откройте свойства вашего блока и задайте блок TimeMeasureStart в параметре Объекты TimeMeasureStart.
Добавьте гистограму для отображения собранной статистики
1.Чтобы добавить гистограмму на диаграмму агента, перетащите элемент Гистограмма из палитры Статистика в графический редактор. Измените ее размер.
2.Укажите, какой элемент сбора данных хранит данные, которые вы хотите отобразить на вашей гистограмме: в секции Данные свойств гистограммы щелкните мышью по кнопке Добавить данные.
3.Измените Заголовок отображаемых данных на Распределение времени в системе.
4.Введите timeTotal.distribution в поле Данные. timeTotal - имя блока TimeMeasureEnd, который собирает распределение времен пребывания агентов в системе.
Запустите модель. Включите режим виртуального времени и понаблюдайте за тем, какой вид примет распределение времен пребывания клиентов в системе.