« Назад
ПРАКТИЧНА РОБОТА №16 Тема: „Організація збирання статистики про час обслуговування та час очікування клієнтів у дискретно-подієвої моделі AnyLogic – моделі банківського відділення”
Мета роботи: набути практичних навичок організації збирання статистики про час обслуговування та час клієнтів у дискретно-подієвоїмоделі AnyLogic - моделі банківського відділення.
Час виконання роботи – 4 години
ХІД РОБОТИ
Теоретичні відомості
У системі імітаційного моделювання AnyLogic збір статистики організовується за допомогою набору даних. Нас цікавить, скільки часу клієнт проводить у банківському відділенні, скільки часу він витрачає на черги. Для організації набору даних використовуються об’єкти Новое перечисление та Набор данных, далі задаються певні властивості цих об’єктів. Потім до моделі додається клас повідомлень. Повідомлення будуть моделями клієнтів. Для цього класу створюється спеціальна функція, яка і здійснює обчислення часу, який клієнт проводить у банку.
Наступний крок – зміна властивостей об'єктів вікна моделі. Зміни полягають у зв’язуванні переліків, які зберігають дані, з об’єктами, які відповідальні за час, які витрачають клієнти – чергою та обслуговуванням.
Завдання 1. Внесення змін у модель банківського відділення - шляхом створення переліку та наборів даних.
Алгоритм виконання
1. Клацнувши на кнопці Новое перечисление панелі інструментів вікна програми AnyLogic, створіть перелік з ім’ям StateTypes і елементами: SERVICE, WAITING та SERVICE_ATM (Рис. 16.1).
2. Клацнувши на кнопці Новый набор данных панелі інструментів вікна програми AnyLogic, створіть набір даних з ім’ям serviceTime. Властивості набору даних на даний час не змінюйте (Рис. 16.2). Перегляньте вікно браузера моделі і переконайтесь у наявності значків переліку та набору даних.
3. Створіть ще один набір даних з ім’ям waitTime (Рис. 16.3). Перегляньте вікно браузера моделі і переконайтесь у наявності значків переліку та наборів даних (Рис. 16.4).
4. Додайте до моделі клас повідомлень з ім’ям Customer, клацнувши на кнопці Новый класс сообщения панелі інструментів вікна програми AnyLogic. У вікні властивостей цього об’єкта задайте параметри як на Рис. 16.6: ім’я Customer та виберіть із списку базовий клас Entity. Задайте для змінних імена waitTime та serviseTime, вкажіть їх тип (real) та значення за замовчуванням, рівні нулю.
5. У вікні Дополнительный код класса введіть код:
double tupdate = Engine.getTime();
double Update( EnumItem type ) {
double dt = Engine.getTime() - tupdate;
if( type == StateTypes.WAITING )
waitTime+=dt;
else
serviceTime+=dt;
tupdate = Engine.getTime();
return dt;
}
Функція Update() здійснює збирання часової статистики. Вона активізується після того, як буде виконана якась операція, і додає час, який витрачає клієнт на дану операцію, до відповідного набору даних – serviceTime чи waitTime. На Рис. 16.7 наведений вигляд вікна браузера моделі з властивостями класу повідомлень Customer та вікном коду.
Завдання 2. Організація у моделі обчислення часу обслуговування та часу очікування в черзі клієнтів.
Алгоритм виконання
1. Активізуйте вікно моделі і внесіть зміни у властивості об’єкта Source. Для властивості newEntity оберіть значення Customer.class (Рис. 16.8).
2. Внесіть зміни у властивості об’єкта tellerLines. Для властивостей onEnterDelay та onRealeaseDelay створіть код (Рис. 16.9):
((Customer)entity).Update( WAITING );
((Customer)entity).Update( SERVICE );
3. Внесіть зміни у властивості об’єкта Queue. Для властивостей onExit створіть код (Рис. 16.10):
((Customer)entity).Update( WAITING );
4. Внесіть зміни у властивості об’єкта АТМ. Для властивостей onExit створіть код (Рис. 16.11):
((Customer)entity).Update(SERVICE_ATM);
5. Внесіть зміни у властивості об’єкта Sink. Для властивостей onEnter створіть код (Рис. 16.12):
serviceTime.add(((Customer)entity).serviceTime); waitTime.add(((Customer)entity).waitTime);
Завдання 3. Організація відображення статистичних даних на анімаційній діаграмі
Алгоритм виконання
1. Створіть стовпчиковий індикатор для часу обслуговування клієнта банкоматом. Розташуйте його на анімаційній діаграмі справа від індикатора зайнятості банкомата. Задайте властивості: ім’я serviceTime.mean(), задайте орієнтацію, оберіть колір індикації, режим відображення значення, мінімальне та максимальне значення (Рис. 16.13).
2. Створіть стовпчиковий індикатор для часу очікування клієнта. Розташуйте його на анімаційній діаграмі справа від індикатора часу обслуговування клієнта банкоматом. Задайте властивості: ім’я waitTime.mean(), задайте орієнтацію, оберіть колір індикації, режим відображення значення, мінімальне та максимальне значення (Рис. 14).
3. Створіть кнопку для скидання статистики. Для цього клацніть на кнопці Кнопка панелі інструментів вікна програми AnyLogic, а потім у вікні анімаційної діаграми. Розташуйте його на анімаційній діаграмі справа від створених у цій практичні роботі індикаторів. Задайте властивості: назва кнопки Reset, колір кнопки – жовтий, реакція на подію клацання на цій кнопці – скидання статистики - задайте як код(Рис. 16.15):
tellers.resetStats();
ATM.resetStats();
serviceTime.reset();
waitTime.reset();
Статистика скидається за допомогою спеціальних функцій:
-
функція об’єкту Delay resetStats() скидає статистику, зібрану цим об’єктом,
-
функція набору даних reset() скидає статистику, зібрану наборами даних serviceTime та waitTime.
Анімаційна діаграма модифікованої моделі банківського відділення на даний час має вигляд, подібний до наведеного на Рис. 16.16.
4. За допомогою бігунка задайте кількість менеджерів – 2. Запустіть модель на виконання. Проаналізуйте результати за допомогою анімаційної діаграми. Пам’ятайте, що в певну мить роботу моделі можна призупинити, натиснувши кнопку вікна програми. При цьому результати статистики на анімаційній діаграмі будуть зафіксовані. Призупиніть роботу моделі при виникненні черги і проаналізуйте зафіксовані на анімаційній діаграмі результати.
5. Скиньте результати статистики. Задайте у моделі кількість менеджерів – 3. Запустіть модель на виконання. Проаналізуйте результати за допомогою анімаційної діаграми.
6. Скиньте результати статистики. Задайте у моделі кількість менеджерів – 4. Запустіть модель на виконання. Проаналізуйте результати за допомогою анімаційної діаграми.
7. Внесіть пропозиції стосовно оптимізації роботи банківського відділення за даних початкових припущень.
Завдання 4. Захистіть виконану практичну роботу.
Питання до захисту практичної роботи
-
З якою метою використовується об’єкт перелік StateType у даній дискретно-подієвій моделі банківського відділення?
-
Яке призначення мають елементи переліку StateType і які їх імена?
-
Де вказуються імена елементів переліку?
-
Як додати до моделі перелік та набір даних?
-
Які набори даних створені у даній дискретно-подієвій моделі банківського відділення?
-
Яке призначення має кожний створений у даній дискретно-подієвій моделі банківського відділення набір даних?
-
В якому вікні можна побачити всі наявні у моделі об’єкти?
-
Що моделює у даній дискретно-подієвій моделі банківського відділення клас повідомлень Customer?
-
Функція Update() застосовується для задання властивостей якого об’єкта у даній дискретно-подієвій моделі банківського відділення?
-
Який зміст має код у вікні Дополнительный код для класу повідомлень Customer? Який алгоритм реалізує цей код у даній моделі?
-
Яке призначення мають змінні waitTime та serviseTime коду у вікні Дополнительный код для класу повідомлень Customer?
-
Як пов’язаний об’єкт Sourse з об’єктом Customer у даній дискретно-подієвій моделі банківського відділення?
-
Як пов’язаний об’єкт АТМ з об’єктом Customer у даній дискретно-подієвій моделі банківського відділення?
-
Як пов’язаний об’єкт Queue з об’єктом Customer у даній дискретно-подієвій моделі банківського відділення?
-
Як пов’язаний об’єкт tellerLines з об’єктом Customer у даній дискретно-подієвій моделі банківського відділення?
-
Як організовано відображення статистики про час обслуговування та час очікування клієнтів у даній дискретно-подієвій моделі банківського відділення?
-
Як організовано скидання статистики на анімаційній діаграмі у даній дискретно-подієвій моделі банківського відділення?
-
Як на основі статистичних даних зробити висновки щодо покращення діяльності банківського відділення?
-
Чи можна змінювати кількість менеджерів у даній дискретно-подієвій моделі банківського відділення? Як це зробити? Що потрібно зробити з попередніми статистичними даними?
З повагою ІЦ “KURSOVIKS”!
|