ПРАКТИЧНА РОБОТА №15
Тема: „Моделювання ресурсів у дискретно-подієвих моделях системи імітаційного моделювання AnyLogic, організація їх відображення на анімаційній діаграмі та аналіз результатів роботи моделі”
Мета: набути практичних навичок моделювання ресурсів, організації їх відображення на анімаційній діаграмі у дискретно-подієвих системи імітаційного моделювання AnyLogic та аналізу результатів роботи моделі.
Час виконання роботи – 2 години
ХІД РОБОТИ
Теоретичні відомості
ВНЕСЕННЯ ЗМІН У МОДЕЛЬ БАНКІВСЬКОГО ВІДДІЛЕННЯ ТА МОДЕЛЮВАННЯ СЛУЖБОВЦІВ- МЕНЕДЖЕРІВ
Бібліотека Enterprise Library містить об’єкти, які можна використовувати для моделювання ресурсів і прийняття рішень.
Об’єкт SelectOutput – моделює блок прийняття рішень. В залежності від заданої користувачем умови, заявка, що надійшла до даного об’єкту буде надсилатись до одного із двох виходів об’єкта.
Об’єкт ProcessQ – моделює заняття заявкою ресурсу на певний час. Цей об’єкт буде моделювати у нашій моделі обслуговування клієнта менеджером.
Для моделювання менеджерів у моделі банківського відділення використаємо об’єкт Resource (ресурс) бібліотеки Enterprise Library.
Ресурс – це спеціальний об’єкт, який може знадобитись деякій заявці (у даній моделі – клієнту) для виконання певної задачі.
Моделювання службовців - менеджерів потребує внесення змін у структурну схему моделі банківського відділення, її розширення.
Об’єкт Resource – моделює певного типу ресурси. Він має бути під’єднаний до об’єктів, що моделюють зайняття і звільнення ресурсу. Таким об’єктом у нашій моделі є об’єкт ProcessQ.
Завдання 1. Внесення змін у модель банківського відділення шляхом додавання нових об’єктів: Select Output, Process Q та Resource.
Алгоритм виконання
1. Відкрийте розроблену у попередній роботі модель банківського відділення.
2. Додайте до вікна моделі такі об’єкти бібліотеки Enterprise Library:
- Об’єкт SelectOutput. Задайте такі властивості об’єкта SelectOutput як на Рис. 15.1. Залиште умову uniform()<0.5. Ця умова означає, що до менеджерів- службовців і до банкомату будуть надходити клієнти у приблизно однаковій кількості.
- Об’єкт ProcessQ. Задайте такі властивості об’єкта ProcessQ: дайте об’єкту ім’я tellerLines; вкажіть, що в черзі до менеджерів може знаходитись не більше 20 клієнтів (задається як значення властивості QueueCapacity); задайте час обслуговування як трикутниковий розподіл з мінімальним значенням рівним 2,5 хвилини, середнім – 6 хвилин та максимальним – 11 хвилин, у властивості DelayTime (Рис. 15.2).
- Об’єкт Resource. Задайте такі властивості цього об’єкта: дайте об’єкту ім’я tellers; задайте кількість менеджерів у властивості capacity– 4 (Рис. 3).
3. З’єднайте об’єкти між собою як показано на Рис.15. 4. Збільшіть масштаб перегляду цього тексту, щоб не помилитись при з’єднанні об’єктів. Ретельно перевірте структурну схему моделі. Збережіть зміни у моделі.
4. Запустіть модель на виконання. Візуально спробуйте проаналізувати поведінку системи.
5. Зупиніть роботу моделі.
Завдання 2. Відображення менеджерів та процесу обслуговування ними клієнтів банківського відділення на анімаційній діаграмі
1. Активізуйте анімаційну діаграму. Скопіюйте у свою папку на сервері папку Image з папки викладача.
2. Внесіть зміни на анімаційній діаграмі:
-
накресліть чергу клієнтів до менеджерів як ламану за допомогою інструменту Ломаная;
-
накресліть столи менеджерів за допомогою інструменту Скругленный прямоугольник , задайте колір зафарбування прямокутника, створіть текстову мітку teller Lines;
-
задайте місце менеджера за допомогою інструменту Ломаная, точки, що є кінцями відрізків ламаної будуть місцями розташування менеджерів (Рис. 15.5), назвіть ламану tellerLocations ікні властивостей цієї ламаної (Рис. 15.6);
Щоб накреслити менеджера, клацніть на кнопці Изображениепанелі інструментів вікна програми а потім на анімаційній діаграмі. Менеджерів потрібно зобразити всередині прямокутника за допомогою двох фігур – обслуговуючого клієнта менеджера та відпочиваючого. Створіть менеджера за допомогою динамічно групи фігур: створіть зображення і додайте працюючого і відпочиваючого менеджера , а потім створіть групу фігур, клацнувши на кнопці Группа фигур, назвіть зображення Image. Зображення має містити фігури працюючого і відпочиваючого менеджера (Рис. 15.7). За допомогою кнопки Добавить вікна властивостей зображення Image додайте вказані на Рис. 15.7 графічні файли Teller Idle.png та Teller Busy.png. Встановіть прапорець у віконці індикаторного перемикача Исходный размер. Переконайтесь, що індекс зображення не задано (індекс зображення визначає, який із списку рисунків відображати).
Клацніть на кнопці Группа фигур, а потім на анімаційній діаграмі. У вікні Свойства на вкладці Общие (Рис. 15.8) задайте ім’я групи ShapeTeller, виберіть колір лінії, зробіть групу динамічною, встановивши прапорець у віконці індикаторного перемикача Шаблон. Динамічні фігури створюються і додаються на анімаційну діаграму під час роботи моделі.
Зауваження. Щоб додати (чи вилучити) фігуру у групу фігур, клацніть правою кнопкою миші на значку групи фігур та з контекстного меню оберіть Добавить/ удалить. Потім клацнути на зображенні. Щоб вийти з режиму Добавить/ удалить клацніть на анімаційній діаграмі.
- додайте стовпчиковий індикатор для відображення зайнятості менеджера.
Встановіть такі властивості для індикатора, як на Рис. 15.9. Колір індикації оберіть на свій смак. Встановіть прапорець у віконці Отображать значение.
Для вимірювання зайнятості ресурсу (менеджера) у властивості Отображает застосовуємо функцію getStatsUtilization() об’єкта Resource. Потім обчислюємо середнє значення за допомогою функції mean().
На даний час анімаційна діаграма має вигляд, подібний до зображеного на Рис. 15.10.
3. Створимо клас повідомлень з ім’ям. Щоб це зробити, клацніть на кнопці Новый класс сообщений, введіть ім’я класу Teller (Рис. 11) у вікні властивостей та ім’я базового класу Entity. Повідомлення цього класу будуть представляти менеджерів.
- Щоб додати створену групу фігур на анімаційну діаграму, ввведіть такий код у поле Код инициализации (див.Рис. 11):
shape.setup();
setAnimation( shape );
- Запишіть код анімації у полі Дополнительный код класса (див.Рис. 15.11):
Model._Group.ShapeTeller shape =
((Model)Engine.getRoot()).animation.new
ShapeTeller();
- Щоб змінити зовнішній вигляд анімації під час роботи моделі, запишіть таку функцію (див.Рис. 11):
void setBusy( boolean b ) {
shape.image.setIndex( b ? 1 : 0 );
}
4. Тепер встановимо анімаційні властивості для об’єктів структурної схеми моделі.
- Задайте для об’єкта tellerLines такі властивості як на Рис. 15.12.