Описание проблемы
Клиенты посещают банковское отделение, чтобы воспользоваться банкоматом или услугами банковских кассиров. Операции с наличностью клиенты банка производят с помощью банкомата, а более сложные операции, такие как оплата счетов – с помощью кассиров. В случае, когда банкомат, либо кассиры заняты, клиент встаёт в очередь. Требуется построить имитационную модель функционирования офиса для того, чтобы получить ответы на ряд вопросов, например: какова статистика занятости банкомата и средняя длина очереди перед банкоматом; сколько времени клиент проводит в банковском отделении и сколько времени он теряет, ожидая своей очереди; произвести оценку затрат операций и определить, сколько денег тратится на обслуживание одного клиента и какую часть этой суммы составляют расходы на оплату работы персонала банка, а какую – на содержание банкомата.
Процесс создания модели представлен в виде последовательности заданий с фиксированными целями. После построения модели необходимо выполнить эксперименты, содержащиеся в индивидуальном варианте, который следует получить у преподавателя.
Формализация.
Банковское отделение рассматривается как система массового обслуживания (СМО). Предполагается, что время между появлениями клиентов в отделении является случайной величиной, распределённой по закону Пуассона. Имеется очередь к банкомату, ограниченной вместимости. Время обслуживания банкоматом также случайная величина, распределённая по заданному закону. Рекомендуется составить блок-схему процесса, составить список входных и выходных параметров.
Шаг А1. Модель обслуживания клиента банкоматом.
|
1. Запустить AnyLogic. Провести диалог «Новая модель». Определиться с названием и местоположением. Выбрать единицу модельного времени.
2. Ознакомиться с элементами интерфейса AnyLogic, перечнем и расположением основных окон.
3. Построить диаграмму модели, перетаскивая нужные блоки из Библиотеки моделирования процессов на холст (графический редактор).
4. Дать краткие пояснения к объектам, использованным в модели.
5. Установить параметры эксперимента. Проведите эксперимент длительностью в 1 неделю=4000 мин. Модельное время. Освойте окно инспекта.
6. Отредактировать титульную страницу презентации эксперимента, с указанием названия проекта и фамилии исполнителя. Разместите произвольное изображение.
7. На какие вопросы можно получить ответы с помощью построенной модели? Выявите критичные режимы работы модели. Каким образом можно решить проблему с переполнением очереди?
8. Постройте вариант модели, использующей дополнительные порты объекта queue.
Пояснение: Заявка может покинуть объект queue различными способами:
ü обычным способом через порт out, когда объект, следующий в блок-схеме за этим объектом, готов принять заявку;
ü через порт outTimeout, если заявка проведет в очереди заданное количество времени (если включен режим таймаута);
ü через порт outPreempted, будучи вытесненной другой поступившей заявкой при заполненной очереди (если включен режим вытеснения);
ü «вручную», путем вызова функции remove() или removeFirst().
Предлагается использовать 3-й способ. Поступающие заявки помещаются в очередь в определённом порядке: либо согласно правилу FIFO (в порядке поступления в очередь), либо согласно приоритетам заявок. Приоритет может быть либо явно храниться в заявке, либо вычисляться согласно свойствам заявки и каким-то внешним условиям. Очередь с приоритетами всегда примет новую входящую заявку, вычислит её приоритет, и поместит в очередь в позицию, соответствующую её приоритету. Если очередь будет заполнена, то приход новой заявки вынудит последнюю хранящуюся в очереди заявку покинуть объект через порт outPreempted. Но если приоритет новой заявки не будет превышать приоритет последней заявки, то тогда вместо неё будет вытеснена именно эта новая заявка.
|
Пусть все заявки, вырабатываемые объектом source, имеют один и тот же приоритет. Поэтому при полном заполнении накопителя будет теряться последний запрос. Для реализации предложенного способа, выделите объект queue. На панели Свойства установите Вместимость 1 5 заявок. Здесь же установите Разрешить вытеснение. Для уничтожения потерянных запросов можно добавить второй объект sink1.
9. Установите режим модели, допускающий отказы. Как подсчитать количество отказов?
10. С помощью окна инспекта определите пропускную способность модели.