Шаг 4. Добавление клерков

Теперь мы усложним нашу модель, добавив в нее служащих – банковских кассиров. Мы могли бы промоделировать кассиров, как и банкомат, с помощью объектов Delay. Но куда более удобным представляется моделирование кассиров с помощью ресурсов. Ресурс – это специальный объект Основной библиотеки, который может потребоваться заявке для выполнения какой-то задачи. В каждый момент времени ресурс может быть занят только одной заявкой. В нашем примере посетителям банковского отделения (заявкам) необходимо получить помощь у банковских служащих (ресурсов).

 Измените диаграмму процесса

  1. Добавьте объект Service. Этот объект захватывает для заявки заданное количество ресурсов, задерживает заявку, а затем освобождает захваченные ею ресурсы. В нашей модели этот обхект будет моделировать обслуживание клиента кассиром (или каким-то другим служащим банковского отделения).

  1. Чтобы добавить объект Основной библиотеки на диаграмму класса активного объекта, вначале откройте одноименную палитру этой библиотеки (Основная библиотека), а затем перетащите нужный Вам объект из палитры в то место диаграммы, куда Вы хотите его поместить.
  2. Измените свойства объекта:

  1. Добавьте объект ResourcePool Объект ResourcePool задает ресурсы определенного типа (в нашей модели это будут банковские клерки). 
  1. Назовите объект tellers. Задайте число кассиров в поле Количество ресурсов: 4


  1. Удалите соедиинитель между объектами Source и Queue и добавьте на его место объект SelectOutput. Объект SelectOutput является блоком принятия решения. В зависимости от заданного Вами условия, заявка, поступившая в объект, будет поступать на один из двух выходных портов объекта.
    Оставьте все свойства объекта без изменений. Пусть Выход true выбирается С заданной вероятностью, а Вероятность [0..1] равна 0.5. В этом случае к кассирам и банкомату будет приходить примерно равное количество клиентов.

 Соедините блоки диаграммы процесса

  1. Соедините блоки диаграммы процесса, как показано на рисунке:

  1. Чтобы соединить порты блоков друг с другом, сделайте двойной щелчок мышью по одному порту, затем последовательно щелкните в тех местах диаграммы, где Вы хотите поместить точки изгиба соединителя, и наконец завершите процесс соединения, сделав двойной щелчок мышью по второму порту.
    Вы увидите, что появится соединитель. Если выделить его мышью, то в том случае, если Вы правильно соедините порты, конечные точки соединителя должны будут подсветиться зелеными точками. Если Вы не увидите этого, то значит, точки не были помещены точно внутрь портов, и их нужно будет туда передвинуть.

 

  1. Вы можете заметить, что большинство установленных нами соединений - это соединения порта, расположенного на правой стороне объекта с портом, расположенного на левой стороне следующего за ним объекта. Это связано с тем, что в диаграмме процесса выходные порты объектов соединяются со входными, а обычно входные порты располагаются на левой границе библиотечного объекта, а выходные - на правой. Исключение в нашем случае пока будет только одно - мы соединяем нижний порт объекта service с верхним портом объекта tellers - именно так должны подсоединяться объекты, задающие ресурсы, к объектам, моделирующим занятие и освобождение этих ресурсов.
Поскольку наша модель изменилась, мы должны изменить и ее анимацию.

 Измените анимацию модели

  1. Нарисуйте ломаную, которая будет отображать очередь клиентов, ожидающих обслуживания кассирами. Рисуйте ее, как и раньше, слева направо. Назовите ломаную queueBeforeTellers.


  1. Справа от этой ломаной нарисуйте еще одну, из четырех точек, чтобы указать на анимации места, в которых будут находиться банковские служащие. Назовите эту ломаную tellerPlaces.


Теперь мы нарисуем на презентации кассиров. Мы будем отображать их одной из двух картинок - одна будет показывать занятого кассира, а другая - свободного. 

 Добавьте картинки с изображением клерков

  1. Перетащите элемент Изображение  из палитры Презентация в место диаграммы, показанное на рисунке синим прямоугольником:


  1. Перейдите в панель Свойства. Введите в поле Имя новое имя этого изображения: busyTeller.

  2. Выберите файл изображения, которое будет отображать данная фигура. Щелкните мышью по кнопке Добавить и выберите файл busy.png. Вы можете найти этот файл в каталоге <каталог AnyLogic>\resources\tutorials\Bank Office.

    Когда Вы выберете файл, Вы увидите его в области предпросмотра в панели Свойства.


  1. Чтобы сохранить исходный размер изображения, установите флажок Исходный размер (в этом случае Вы не сможете изменить размер изображения, и оно будет отображаться в оригинальном масштабе, без искажений.

  2. Аналогично создайте еще одно изображение, показывающее отдыхающего клерка. Назовите фигуру idleTeller и выберите в качестве отображаемого файла idle.png (из того же каталога, что и чуть ранее).

Теперь нам нужно изменить анимационные свойства блоков нашей диаграммы процесса, задав нарисованные нами фигуры в качестве соответствующих фигур анимаций объектов.

 Измените анимационные свойства блоков диаграммы процесса

  1. Задайте нарисованную нами ломаную queueBeforeTellers в качестве фигуры анимации очереди объекта service. Для этого измените свойства этого объекта следующим образом:


  2. Чтобы наши клерки отображались на анимации с помощью добавленных нами картинок, задайте следующие свойства объекта tellers:

В текущей модели количество клерков, присутствующих в банковском отделении, не изменяется и всегда равно заданному значению. Давайте сделаем так, чтобы у нас была возможность динамически изменять их количество во время моделирования. Такую задачу можно решить с помощью элементов управления AnyLogic.

Добавьте на презентацию специальный элемент управления - бегунок, часто используемый для изменения значения численной переменной или параметра. В нашем случае мы будем изменять с его помощью количество клерков в нашей модели, проверяя, какое количество будет оптимально удовлетворять текущей интенсивности прихода клиентов в банковское отделение. 

 Добавьте бегунок, с помощью которого Вы сможете изменять количество клерков

  1. Элементы управления добавляются на диаграмму так же, как и фигуры презентации. Откройте палитру Элементы управления и перетащите элемент Бегунок из палитры на диаграмму класса Main
  2. Поместите бегунок под объектом ResourcePool, чтобы было понятно, что с помощью этого бегунка будет меняться количество ресурсов, задаваемых именно этим объектом.

  1. Мы хотим дать возможность пользователю варьировать количество клерков от 0 до 4. Поэтому введите 4 в поле Максимальное значение.
  2. Введите tellers.capacity в поле Переменная.

Запустите модель. Вы увидите, что клерки отображаются одной из двух наших картинок, в зависимости от того, заняты ли они в текущий момент времени. Таким образом, с помощью созданной анимации Вы сможете проследить, сколько кассиров в данный момент времени занято обслуживанием клиентов. 

Вы можете изменять количество клерков с помощью бегунка. Теперь, изменяя количество кассиров во время работы модели, Вы можете сделать вывод о том, сколько служащих необходимо для нормальной работы банковского отделения при заданной интенсивности прихода клиентов.

Контрольная модель: Bank Office - Phase 4


          Шаг 3. Сбор статистики использования ресурсов

          Шаг 5. Сбор статистики по времени обслуживания