Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛБ4. Модель банковского отделения. Шаг 1. Создание простой модели

.pdf
Скачиваний:
19
Добавлен:
21.01.2021
Размер:
1.42 Mб
Скачать

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

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

3.Измените свойства объекта:

Ко всем кассирам будет вести одна общая очередь. Задайте максимальное количсевто человек в этой очереди в поле Вместимость очереди: 20.

Мы полагаем, что время обслуживания имеет треугольное распределение с минимальным значением равным 2.5, средним - 6, и максимальным - 11 минутам. Введите в поле Время задержки:triangular( 2.5, 6, 11 )

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

5. Назовите объект tellers. Задайте число кассиров в поле Количество ресурсов: 4

6.Удалите соедиинитель между объектами Source и Queue и добавьте на его место

объект SelectOutput. ОбъектSelectOutput является блоком принятия решения. В зависимости от заданного Вами условия, заявка, поступившая в объект, будет поступать на один из двух выходных портов объекта.

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

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

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

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

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

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

Поскольку наша модель изменилась, мы должны изменить и ее анимацию.

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

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

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

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

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

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

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

3.Выберите файл изображения, которое будет отображать данная фигура. Щелкните мышью по кнопке Добавить и выберите файл busy.png. Вы можете найти этот файл в каталоге <каталог

AnyLogic>\resources\tutorials\Bank Office.

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

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

5.Аналогично создайте еще одно изображение, показывающее отдыхающего клерка. Назовите

фигуру idleTeller и выберите в качестве отображаемого файла idle.png (из того же каталога, что и чуть ранее).

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

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

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

oВведите queueBeforeTellers (имя ломаной, задающей форму очереди, ведущей к кассирам) в

полеФигура анимации (queue)

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

oВ поле Фигура анимации введите имя ломаной, задающей местоположение кассиров на презентации:tellerPlaces

o Выберите Набор из выпадающего списка Тип анимации

oВ поле Фигура анимации свободного ресурса введите имя изображения свободного клерка:idleTeller

o В поле Фигура анимации занятого ресурса введите busyTeller

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

помощью элементов управления AnyLogic.

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

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

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

2.Поместите бегунок под объектом ResourcePool, чтобы было понятно, что с помощью этого бегунка будет меняться количество ресурсов, задаваемых именно этим объектом.

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

4.Введите tellers.capacity в поле Переменная.

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

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

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

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

Теперь мы создадим Java класс Customer. Экземпляры этого класса будут испольоваться в нашей модели в качестве заявок и будут представлять клиентов банковского отделения. Мы создадим в этом классе специальные поля для запоминания необходимой нам информации о проведенном клиентом времени.

Создайте Java класс Customer

1.В панели Проекты, щелкните правой кнопкой мыши по элементу модели и выберите Создать|Java класс из контекстного меню.

2.Появится диалоговое окно Новый Java класс. В поле Имя введите имя нового класса: Customer.

3.Сделайте так, что этот класс будет наследоваться от базового класса заявки Entity. Для этого выберите из выпадающего списка Базовый класс имя этого класса: Entity.

3.Щелкните мышью по кнопке Далее, чтобы перейти к следующей странице Мастера создания Java класса. На второй странице Мастера Вы можете задать параметры создаваемого Java

класса. Создайте два параметра:

oenteredSystem типа double для сохранения момента времени, когда клиент пришел в банковское отделение,

o startWaiting типа double для сохранения момента времени, когда клиент встал в очередь к банкомату.

4.Щелкните мышью по кнопке Готово. Вы увидите редактор кода созданного класса. Можете закрыть его, щелкнув мышью по крестику в закладке с его названием.