
- •Моделювання систем
- •Передмова
- •Моделі процесів і систем
- •Класифікація моделей
- •Основні визначення та класифікація систем масового обслуговування
- •Характеристики систем масового обслуговування
- •Вхідний потік вимог
- •Стратегії керування потоками вимог
- •Класифікація систем масового обслуговування
- •Метод статистичних випробовувань
- •Генератори випадкових чисел
- •Моделювання випадкових подій та дискретних випадкових величин
- •Моделювання неперервних випадкових величин
- •Моделювання нормально-розподілених випадкових величин
- •Моделювання випадкових векторів
- •Моделювання випадкових функцій
- •Статистична обробка результатів моделювання
- •Визначення кількості реалізацій під час моделювання випадкових величин
- •Основне меню gpss World
- •Меню File
- •Меню Edit
- •Панель інструментів gpss World
- •Вікно моделі у системі gpss World
- •Інтерактивний перегляд значень виразів
- •Налаштування параметрів моделювання
- •4.1. Основне меню gpss World
- •4.2. Подання моделей у вигляді блок-діаграм
- •4.3. Основні складові системи gpssw
- •4.4. Об'єкти обчислювальної категорії
- •4.4.1. Константи
- •4.4.2. Системні числові атрибути
- •4.4.3. Арифметичні і логічні оператори
- •4.4.4. Бібліотечні математичні функції
- •4.4.5. Змінні користувача
- •4.4.6. Вирази в операторах gpss
- •4.4.7. Зберігаючі комірки
- •4.4.8. Матриці зберігаючих комірок. Оголошення та ініціалізація матриць
- •4.4.9. Арифметичні змінні й арифметичні вирази
- •4.4.10. Булеві змінні
- •4.4.11. Типи функцій
- •5.1. Введення транзактів у модель і вилучення їх із неї
- •5.2. Блоки для зміни значень параметрів транзактів
- •5.3. Блоки апаратної категорії зайняття та звільнення одноканальних пристроїв
- •5.4. Блоки перевірки стану та передавання керування в одноканальних пристроях
- •5.5. Блоки статистичної категорії
- •5.6. Блоки для зміни послідовності руху транзактів у моделі
- •5.7. Блоки апаратної категорії для переривань одноканальних пристроїв
- •5.8. Блоки апаратної категорії для переведення одноканальних пристроїв у стан недоступності
- •5.9. Створення і застосування списків користувача
- •Основні етапи моделювання у системі gpssw
- •Команди gpss World
- •Інтерактивні можливості gpss World
- •Відлагодження моделей у gpss World
- •Блоки зайняття та звільнення багатоканальних пристроїв
- •Блоки апаратної категорії для переведення багатоканальних пристроїв у стан недоступності та відновлення доступності
- •Блоки перевірки стану багатоканальних пристрів
- •Моделювання перемикачів
- •Основні елементи мови
- •Побудова виразів
- •Plus-оператори та їх призначення
- •Вбудована бібліотека процедур
- •Генератори випадкових чисел
- •Реалізація методу Ньютона для розв’язування нелінійних рівнянь за допомогою мови Plus
- •Налагодження Plus-процедур
- •Команда integrate і блок integration для моделювання неперервних систем
- •Використання plus-процедур для моделювання неперервних систем
- •Використання функцій в імітаційних моделях
- •Генерування випадкових чисел для дискретних рівномірних розподілів
- •Генерування випадкових чисел для дискретних нерівномірних розподілів
- •Генерування випадкових чисел для неперервного рівномірного розподілу
- •Генерування випадкових чисел для неперервних нерівномірних розподілів
- •Функції типу e, l і м
- •9.1. Основні відомості з теорії планування експериментів
- •9.1.1. Повний факторний експеримент
- •Оцінювання точності результатів моделювання
- •Дисперсійний аналіз
- •Однофакторний дисперсійний аналіз
- •9.2.2. Двофакторний дисперсійний аналіз
- •9.3. Технологія дисперсійного аналізу у gpss World
- •9.4. Технологія регресійного аналізу у gpss World
- •9.5. Організація експериментів користувача у gpss World
- •Initial Rezult_tf,unspecified ;Ініціалізація матриці результатів
- •Загальні положення
- •Завдання для виконання роботи
- •Індивідуальні завдання для моделювання
- •Контрольні запитання
- •Загальні положення
- •Завдання для виконання роботи
- •Контрольні запитання
- •Загальні положення
- •Завдання для виконання роботи
- •Індивідуальні завдання для моделювання
- •Контрольні запитання
- •Загальні положення
- •Завдання для виконання роботи
- •Індивідуальні завдання для моделювання
- •Контрольні запитання
- •Загальні положення
- •Завдання для виконання роботи
- •Індивідуальні завдання для моделювання одноканальних розімкнутих смо
- •Індивідуальні завдання для моделювання одноканальних замкнутих смо
- •Контрольні запитання
- •Загальні відомості
- •Завдання для виконання роботи
- •Індивідуальні завдання для моделювання багатоканальних розімкнутих смо
- •Індивідуальні завдання для моделювання багатоканальних замкнутих смо
- •Контрольні запитання
- •Загальні відомості
- •Завдання для виконання роботи
- •Індивідуальні завдання для моделювання
- •Контрольні запитання
- •Загальні відомості
- •Завдання для виконання роботи
- •Індивідуальні завдання для моделювання роботи транспортного конвеєра
- •Індивідуальні завдання для моделювання роботи ділянки цеху
- •Контрольні запитання
- •Загальні відомості
- •Завдання для виконання роботи
- •Індивідуальні завдання для моделювання роботи еом для оброблення завдань з різними пріоритетами
- •Контрольні запитання
- •Загальні відомості
- •Завдання для виконання роботи
- •Індивідуальні завдання для моделювання роботи вузла комутації повідомлень
- •Контрольні запитання
- •Загальні відомості
- •Завдання для виконання роботи
- •Індивідуальні завдання для моделювання поширення вірусу на системному диску
- •Контрольні запитання
- •Загальні відомості
- •Завдання для виконання роботи
- •Індивідуальні завдання для проведення дисперсійного аналізу для дослідження вагомості впливу змінних користувача на об’єкт моделі
- •Контрольні запитання
- •Загальні відомості
- •Завдання для виконання роботи
- •Індивідуальні завдання для розроблення експерименту користувача
- •Контрольні запитання
- •Загальні відомості
- •Завдання для виконання роботи
- •Індивідуальні завдання проведення регресійного аналізу для оптимізації і кількісного прогнозу поведінки системи
- •Контрольні запитання
- •Елементи стандартного звіту
- •Загальна інформація про результати роботи моделі
- •Інформація про імена
- •Інформація про блоки
- •Інформація про об’єкти типу «пристрій»
- •Інформація про об’єкти типу «черга»
- •Інформація про об’єкти типу «багатоканальний пристрій»
- •Інформація про таблиці
- •Інформація про списки користувача
- •Табличні значення критеріїв
- •Значення t-критерію Ст’юдента
9.5. Організація експериментів користувача у gpss World
Система GPSS World з використанням PLUS-процедур дозволяє створювати власні експерименти будь-якої складності. Такі експерименти користувача є більш гнучкими порівняно з експериментами, що генеруються автоматично. Однак їх необхідно розробляти та запускати самостійно. GPSS World забезпечує засоби підтримки на кожному кроці створення експериментів користувача. Вони можуть проводитися з моделями, що працюють у перехідному режимі і дозволяють організовувати повторювання прогонів моделі. У GPSS World такі експерименти застосовуються з процедурою ANOVA.
Для розроблення експериментів користувача ще раз розглянемо приклад 9.3 з попереднього параграфу, для якого здійснено оптимізаційний експеримент (регресійний аналіз).
Для прикладу 9.3 потрібно розробити імітаційну модель з метою визначення доходу транспортної фірми за витратами на обслуговування її транспортних засобів протягом десяти робочих (8 годинних) днів, а також провести двохфакторний дисперсійний аналіз результатів моделювання.
Plus-експеримент користувача для проведення дисперсійного аналізу наведений нижче.
****************************************************************
* Експеримент користувача Eksp_Kor_TF *
****************************************************************
Rezult_TF MATRIX ,4,5,3 ;Визначення матриці результатів
Initial Rezult_tf,unspecified ;Ініціалізація матриці результатів
EXPERIMENT Eksp_Kor_TF() BEGIN
TEMPORARY MaZ_Poch,MaZ_KR,MaZ_Krok,KamaZ_Poch,KamaZ_KR,KamaZ_Krok;
MaZ_Poch = 2; /*Початкова кількість авт. марки МаЗ (1 фактор)*/
MaZ_KR = 4; /*Кількість рівнів 1-го фактора*/
MaZ_Krok = 3; /*Рівень варіювання 1-го фактора*/
KamaZ_Poch = 2; /*Початкова к-сть авт. марки КамаЗ (2 фактор)*/
KamaZ_KR = 5; /*Кількість рівнів 2-го фактора*/
KamaZ_Krok = 3; /*Рівень варіювання 2-го фактора*/
/* Запис в журнал найменування експеримента */
DoCommand("SHOW "" """);
DoCommand("SHOW ""***Діяльність транспортної фірми***""");
DoCommand("SHOW ""*Двохфакторний дисперсійний аналіз*""");
DoCommand("SHOW "" """);
P_Maz = Maz_Poch; /*Поточній к-сті авт. марки МаЗ – поч. значення*/
P_Maz_KR = 1; /*Поточному номеру рівня 1-го фактора – поч. знач.*/
WHILE (P_Maz_KR<=MaZ_KR) DO BEGIN /*Цикл варіювання 1-го фактора*/
P_KamaZ = KamaZ_Poch; /*Поточній к-сті авт. марки КамаЗ – поч. знач.*/
P_KamaZ_KR = 1; /*Поточному номеру рівня 2-го фактора – поч. знач.*/
WHILE (P_KamaZ_KR<=KamaZ_KR) DO BEGIN /*Цикл варіювання 2-го фактора*/
N_Spost = 1; /*Поточному номеру спостереження – поч.значення*/
WHILE (N_Spost<=3) DO BEGIN /*Цикл за числом спостереження*/
/*Виклик процедури запуску - виконання одного спостереження*/
Eksp_Kor_Run(P_Maz,P_KamaZ,N_Spost);
/*Запис результатів моделювання (спостереження) в матрицю*/
Rezult_TF[P_Maz_KR,P_KamaZ_KR,N_Spost]=X$Prub;
N_Spost = N_Spost + 1; /*Перейти до наступного спостереження*/
END;
P_KamaZ_KR = P_KamaZ_KR + 1; /*Перейти до наступного рівня 2-го фактора*/
P_KamaZ = P_KamaZ + KamaZ_Krok; /*Встан. наступне знач. 2-го фактора*/
END;
P_Maz_KR = P_Maz_KR + 1;/*Перейти до наступного рівня 1-го фактора*/
P_Maz = P_Maz + MaZ_Krok; /*Встан. наступне значення 1-го фактора*/
END;
ANOVA(Eksp_Kor_TF,3,2) /*Провести двохфакторний дисперсійний аналіз*/
END;
PROCEDURE Eksp_Kor_Run(RP_Maz,RP_KamaZ,RN_Spost) BEGIN
TEMPORARY Ran_Num; /*Визначення локальної змінної*/
/*Змінити початкове значення генератора випадкових чисел*/
Ran_Num = 248 # RN_Spost;
DoCommand("CLEAR OFF"); /*OFF викор. для збереження результата*/
/*Встановити початкове значення генератора випадкових чисел*/
DoCommand(Catenate("RMULT ",Ran_Num));
DoCommand("EP_Maz EQU ",RP_Maz);/*Встановити знач. 1-го фактора*/
DoCommand("EP_KamaZ EQU ",RP_KamaZ); /*Встанов.знач. 2-го фактора*/
DoCommand("START 100,NP"); /*Пропустити перехідний режим*/
DoCommand("RESET"); /*Почати збирати статистику*/
DoCommand("START 1,NP"); /*Запустити модель*/
END;
Модель розробленої системи наведена на рисунку 9.21.
Експеримент Eksp_Kor_TF розроблений для заповнення результатами моделювання глобальної матриці Rezult_TF і передачі її бібліотечній процедурі ANOVA. Процедура ANOVA призначена для виконаня багатофакторного (до шести факторів) дисперсійного аналізу, включаючи дво- і трифакторну взаємодію.
Процедура ANOVA має три аргументи. Перший – назва матриці результатів. Другий аргумент (необов’язковий) – розмірність матриці результатів, які можна використовувати для повторень. Кожен рівень цього виміру є спостереженням із різними початковими числами генератора випадкових чисел. Інформацію, пов’язану з числом повторень спостережень ANOVA використовує для оцінки стандартної помилки. Більша кількість додаткових спостережень (повторювань) підвищує інформативність оцінки.
Деякі плани експериментів не використовують розмірність для додаткових спостережень (наприклад, латинський квадрад). В цьому випадку другий аргумент процедури ANOVA вказується рівним нулю.
Рис. 9.21. Модель роботи транспортної фірми
Третій аргумент процедури ANOVA задає взаємодію факторів, які використовуватимуться у моделі. Якщо аргумент рівний одиниці, взаємодії не будуть враховуватись. Якщо аргумент рівний двом, в модель будуть включені лише двофакторні взаємодії. Якщо аргумент рівний трьом, в модель будуть включені дво- і трифакторні взаємодії.
Оператором INITIAL елементи матриці Rezult_TF ініціалізуються в стан UNSPECIFIED. Тоді процедурою ANOVA визначаються спостереження, які не були виконані.
Початкові значення факторів, кількість рівнів варіювання, значення інтервалів варіювання визначаються в процедурі експерименту.
Оскільки здійснюється двохфакторний дисперсійний аналіз (кількість автомобілів марки МаЗ – перший (А) фактор, кількість автомобілів марки КамаЗ – другий (В) фактор) і для кожного поєднання рівнів факторів виконуються три додаткових спостереження (N_Spost) для різних початкових значеннь (Ran_Num = 248 # N_Spost) генератора випадкових чисел, то процедура Plus-експерименту має три цикли WHILE / DO. Внутрішній цикл організований за числом додаткових спостережень, наступний внутрішній цикл – за кількістю рівнів 2-го фактора, а зовнішній цикл – за кількістю рівнів 1-го фактора.
У внутрішньому циклі за кількістю додаткових спостережень Plus-експерименту Eksp_Kor_TF перший оператор викликає процедуру запуску Eksp_Kor_Run. Ця процедура містить набір команд для ініціалізації і виконання одного спостереження. Кількість прогонів у ньому вказується процедурою DoCommand("START 100,NP"); /*Запустити модель*/.
Для передавання в процес моделювання команд CLEAR OFF, RESET і START процедура Eksp_Kor_Run може викликати бібліотечну процедуру DoCommand. За допомогою процедури DoCommand процесу моделювання також передаються команди для встановлення відповідних значень рівнів факторів.
Після завершення роботи процедури Eksp_Kor_Run експеримент Eksp_Kor_TF кожний раз зберігає результат (значення X$Prub) у відповідному елементі глобальної матриці Rezult_TF.
Процедура дисперсійного аналізу ANOVA розглядає кожний вимір матриці результатів як фактор. Розмірність матриці результатів повинна бути не меншою за кількість рівнів фактору або максимальну кількість додаткових спостережень (додаткові спостереження вказаються останнім індексом). Кількість рівнів кожного фактору не лімітуються, а лише обмежуються об’ємом віртуальної пам’яті комп’ютера. Нприклад:
Matr_Rez MATRIX ,8,10,10,5
У цьому прикладі створюється матриця, яка може містити результати експерименту з чотирьма факторами за числом заданих операторів або експерименту з трьома факторами і п’ятьма додатковими спостереженнями. Фактор А може мати вісім рівнів, фактори В і С – десять та фактор D – п’ять рівнів.
У нашому прикладі проводиться двохфакторний дисперсійний аналіз. Тоді перший індекс матриці результатів призначений для рівнів першого фактору, другий індекс – для рівнів другого фактору, а третій індекс – для індексації додаткових спостережень. Таким чином, матриця результатів у прикладі має три виміри.
Перед проведенням експерименту за функціональною клавішою F10 закріплюємо команду CONDUCT для запуску експерименту. Відкриваємо об’єкт “Модель роботи транспортної фірми”. Вибераємо команди Edit ► Settings ► Function Keys (Правка ► Налаштування ► Функціональні клавіші). В полі F10 вводиться назва експерименту користувача
CONDUCT Eksp_Kor_TF
Активізуємо кнопки Застосувати і Ок. Жодні дані для проведення експерименту у процесі його запуску не передаються. Вони вказуються в процедурі експерименту. Тепер створюємо процес моделювання (Ctrl + Alt + S). Після цього для запуску експерименту натискаємо функціональну клавішу F10. Експеримент виконується автоматично. Після його завершення в журналі процесу моделювання з’являється таблиця ANOVA (Дисперсійний аналіз) (таблиця 9.7).
Таблиця 9.7.
Результати дисперсійного аналізу експеримента Eksp_Kor_TF
В таблиці ANOVA:
Source of Variance – складова компонента відхилення значень.
Treatment Level – відхилення значень за рахунок рівнів факторів.
Error – відхилення значень всередині рівня факторів.
Total – загальне відхилення.
Sum of Squares – сума квадратів відхилень.
Degrees of Freedom – число степенів свободи.
Mean Square – середньоквадратичне відхилення.
F – обчислене значення критерію.
Нижня частина таблиці відображає результати розрахунку довірчих інтервалів відношення доходу транспортної фірми до витрат на обслуговування її транспортних засобів. Кожний фактор і взаємодії представлені окремим рядком у верхній частині таблиці ANOVA. У кожному рядку вказується сума квадратів відхилень (Sum of Squares) і кількість степенів вільності (Degrees of Freedom), пов’язані з даною оцінкою. Це є основні показники, за якими розраховуються решта даних рядку. Діленням суми квадратів на кількість степенів вільності отримаємо середньоквадратичне відхилення (наприклад, для фактора А: Mean Square = 951.648 / 3 = 317.216). Частка від ділення цього середньоквадратичного відхилення на середньоквадратичне відхилення всередині рівня фактора дає F-статистику для даного ефекту (наприклад, для фактора А: F = 317.216 / 0.011 = 29619.058).
Результати дисперсійного аналізу свідчать про те, що обидва фактора є значущими (вагомими). Суттєвою є і взаємодія цих факторів, оскільки значення F-статистики перевищує критичне значення (Critical Value of F). Але найбільший вплив на відношення доходу транспортної фірми до витрат на обслуговування її транспортних засобів здійснює фактор N_KamaZ (кількість автомобілів марки КамаЗ), оскілбки значення F-статистики тут найбільше (39605.660).
Контрольні запитання і завдання
Розкрийте загальні положення повного факторного експерименту. Які його переваги і недоліки?
З яких етапів складається побудова регресійної моделі за допомогою повного факторного експерименту?
Від яких факторів, у загальному випадку, залежить кількість прогонів моделі, яку необхідно здійснити для отримання достовірних результатів?
Які програмні засоби GPSS World автоматично будують довірчі інтервали середнього значення після проведення прогонів моделі?
Для визначення значущості того чи іншого фактора використовується дисперсійний аналіз AVONA (analysis of variance). За яким принципом визначається значимість факторів у цьому аналізі?
На чому базується однофакторний дисперсійний аналіз?
Наведіть алгоритм реалізації однофакторного дисперсійного аналізу.
Які показники однофакторного дисперсійного аналізу можна отримати після його проведення?
Наведіть алгоритм двофакторного дисперсійного аналізу.
Чи можна в система GPSS World провести дисперсійний та регресійний аналізів? Якщо можна, то для яких моделей?
Яку послідовність команд необхідно здійснити для реалізації дисперсійного аналізу моделі системи в середовищі GPSSW?
Що дозволяє отримати опція Generate Run Procedure під час проведення дисперсійного аналізу?
Яку послідовність команд необхідно здійснити для реалізації регресійного аналізу моделі системи в середовищі GPSSW? Що при цьому ми отримаємо?
Які переваги і недоліки створених власних експериментів користувача?
Власник магазину найняв на роботу 2 продавців для обслуговування покупців, які відвідують магазин кожних 3 хв. Якщо в магазині вже знаходиться 10 клієнтів, то кожний наступний покупець не залишається в магазині, а йде необслуженим. Час, який витрачає продавець на одного покупця становить 8 хв. Заробітня плата одного продавця становить 90 грн./день, а від одного покупця власник отримує прибуток в розмірі 15 грн. Є можливість зменшити час обслуговування одного покупця за рахунок нарахування додаткової заробітньої плати продавцю. Збільшення заробітньої плати на 10 грн./день призведе до зменшення часу обслуговування одного клієнта на 1 хв.
Провести дисперсійний і регресійний аналіз моделі для знаходження кількості продавців і їх заробітніх плат при яких рентабельність діяльності магазину була б максимальною.
“Якщо здається, що роботу виконати
легко, це неодмінно буде важко”
(теорема Стакмайєра)
Розділ 10
Лабораторний практикум
Лабораторна робота 1. Моделювання випадкових подій і дискретних випадкових величин
Мета роботи – засвоїти методи моделювання простих, складних незалежних і залежних подій, а також дискретних випадкових величин