
- •Моделювання систем
- •Передмова
- •Моделі процесів і систем
- •Класифікація моделей
- •Основні визначення та класифікація систем масового обслуговування
- •Характеристики систем масового обслуговування
- •Вхідний потік вимог
- •Стратегії керування потоками вимог
- •Класифікація систем масового обслуговування
- •Метод статистичних випробовувань
- •Генератори випадкових чисел
- •Моделювання випадкових подій та дискретних випадкових величин
- •Моделювання неперервних випадкових величин
- •Моделювання нормально-розподілених випадкових величин
- •Моделювання випадкових векторів
- •Моделювання випадкових функцій
- •Статистична обробка результатів моделювання
- •Визначення кількості реалізацій під час моделювання випадкових величин
- •Основне меню 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-критерію Ст’юдента
Використання plus-процедур для моделювання неперервних систем
Приклад 4. Моделювання системи “Хижак-здобич”
Розглянемо модель Лотка-Волътерра (Lotka-Volterra) або модель “Хижак–здобич” [3]. Нехай на певній території нестримно росте колонія шкідників сільського господарства. Одним із важливих заходів для боротьби зі шкідниками є завезення на цю територію хижаків, які поїдають шкідників. Потрібно визначити, скільки хижаків необхідно завезти, щоб знищити всіх шкідників.
Ця модель описується системою звичайних диференціальних рівнянь. Для моделювання роботи системи “Хижак-здобич” необхідно виділити неперервну й дискретну складові процесу моделювання.
Імітаційну модель “Хижак-здобич” формуємо із трьох секторів. У першому секторі моделюється неперервний процес. У цій частині представимо систему із двох диференціальних рівнянь першого порядку і початкові вихідні дані моделі.
У другому секторі моделюється дискретний процес моделі.
У третьому секторі представимо праву частину системи диференціальних рівнянь моделі за допомогою PLUS-процедур.
Перший сектор моделі:
Hyzhak INTEGRATE (Pryrist_hyzhak())
Zdobych INTEGRATE (Pryrist_zdobych())
Hyzhak EQU 50
Zdobych EQU 800
A_ EQU 0.3000 ;Коеф. народжуваності хижака.
B_ EQU 0.0100 ;Коеф. смерті хижака.
C_ EQU 0.0002 ;Ефективність нападу.
D_ EQU 0.0500 ;Коеф. народжуваності здобичі
Другий сектор моделі може бути представлений у такому вигляді:
GENERATE 2000
TERMINATE 1
Третій сектор моделі може бути представлений у такому вигляді:
PROCEDURE Pryrist_hyzhak() BEGIN
TEMPORARY Din_narodzhennja, Din_smerti, Din_pryrostu;
IF (Hyzhak < 0) THEN Hyzhak = 0;
IF (Hyzhak > 10e50) THEN Hyzhak = 10e50;
Din_narodzhennja = A_ # C_ # Hyzhak # Zdobych;
Din_smerti = B_ # Hyzhak;
Din_pryrostu = Din_narodzhennja - Din_smerti;
RETURN Din_pryrostu;
END;
PROCEDURE Pryrist_zdobych() BEGIN
TEMPORARY Din_narodzhennja, Din_smerti, Din_pryrostu;
IF (Zdobych < 0) THEN Zdobych = 0;
IF (Zdobych > 10e50) THEN Zdobych = 10e50 ;
Din_narodzhennja = D_ # Zdobych;
Din_smerti = C_ # Hyzhak # Zdobych ;
Din_pryrostu = Din_narodzhennja - Din_smerti;
RETURN Din_pryrostu;
END;
Результати моделювання представимо у вигляді графіка. На осі абсцис відкладається час моделювання системи, а осі ординат – чисельність хижаків і здобичі в кожний момент часу моделювання системи.
Дану імітаційну модель необхідно відкомпілювати і запустити на виконання (Command ► Create Simulation).
Для представлення результатів моделювання у графічній формі виконаємо такі команди: Window (головного меню системи) ► Simulation Window (Вікно моделювання) ► Plot Window (Вікно графіка). У діалоговому вікні Edit Plot Window (Вікно редагування графіка) вводиться інформація, як показано на рис. 8.5.
Для розташування у графічному вікні двох графіків заповнюємо діалогове вікно Edit Plot Window у два етапи. На першому етапі, за допомогою клавіші Tab, вводиться наступна інформація в текстові поля:
у поле Label (Мітка) слово “Здобич”;
у поле Expression назва шуканої змінної Zdobych;
у поле Title (Заголовок) текст: “Модель Хижак-здобич”;
у поле Time Range (Тимчасова область) значення 2000;
у поле Min Value (Мінімальна величина) залишимо наведене значення без змін;
у поле Max Value (Максимальна величина) значення 2000.
Рис. 8.5. Діалогове вікно Edit Plot Window для моделі “Хижак-здобич”
Активізуємо кнопки Plot (Графік) і Memorise (Запам'ятати). Інформація, введена в перших двох текстових полях, з'явиться у двох нижче розташованих багаторядкових списках.
Таким чином вказується вся необхідна інформація для виведення в графічному вигляді результатів моделювання, що стосуються шуканої змінної Zdobych.
Тепер внесемо всі необхідні дані для виведення в графічному вигляді результатів моделювання шуканої змінної Hyzhak. За допомогою клавіші Tab вводиться інформація в текстові поля, а саме:
у верхньому полі Label замість слова “Здобич” записуємо “Хижак”;
у поле Expression замість імені змінної Zdobych вводимо назву змінної Hyzhak;
активізуємо кнопки Plot і Memorize. Інформація з перших двох текстових полів додається до раніше введених даних у двох багаторядкових списках, розташованих нижче. Натискаємо кнопку ОК. Відкриється вікно PLOTS (Графіки), показане на рис. 8.6, із підготовленим шаблоном графіка.
Рис. 8.6. Вікно PLOTS для моделі
Змінити шаблон графіка у вікні PLOTS можна натисканням „мишки” на горизонтальній смузі прокручування графіка ліворуч від бігунка. Тепер можна запустити систему на моделювання: Command ► START► ОК.
Система диференціальних рівнянь, яка наведена в моделі, розв’язується методом Рунге-Кутта п'ятого порядку. Результатом моделювання є шукані графіки у вікні PLOTS (рис. 8.7).
Рис. 8.7. Вікно PLOTS з результатом моделі “Хижак-здобич”
Аналізуючи графічні дані, можна зазначити, що для заданих початкових значень кількості хижаків і здобичі відповідно 50 і 800 максимальне число хижаків і здобичі не перевищує відповідно 900 і 1700 одиниць.
Дана модель дозволяє визначити зміну популяцій хижаків і здобичі для інших вхідних початкових значень. Нехай початкове значення кількості хижаків збільшується з 50 до 80, а початкова кількість здобичі залишається попередньою.
Для цього у вікні Model Window вводимо Hyzhak EQU 80 і закриваємо вікно PLOTS. Виконуємо команди: Command ► Retranslate (рекомпіляція моделі) ► Window (головне меню) ► Simulation Window ► Plot Window. Тепер встановлюємо параметри для графіка. Для цього у діалоговому вікні Edit Plot Window у розділі Memorized Expression (вирази, що запам’яталися) вибираємо рядок із шуканою змінною Zdobych і натискаємо кнопку Plot. У цьому ж розділі вибираємо другий рядок із шуканою змінною Hyzhak i натискаємо кнопку Plot. У текстовому полі вводимо попереднє значення 1700, а в текстовому полі Max Value (максимальна величина) вводимо попереднє значення 1700. Далі виконуємо команди: Command ► START ► ОК. Результат моделювання з’явиться у вікні PLOTS з врахуванням зміни початкових параметрів моделі.
Приклад 5. Моделювання поширення епідемії
Нехай у мікрорайоні, населення якого становить 30000 чоловік, виникла епідемія, і з'явилося 50 інфікованих хворих. Припустимо, що приріст хворих за день пропорційний добутку числа здорових людей на число хворих. Коефіцієнт пропорційності Ki (коефіцієнт поширення інфекції) включає різного роду профілактичні заходи, прийняті під час епідемії. Потрібно визначити максимальне число хворих та особливості розвитку епідемії.
Відомо, що процес розвитку епідемії може бути описаний системою двох диференціальних рівнянь:
X_' = X_ (Ki Y_ – 1);
Y_' = – Ki_ Х_ Y_,
де: Х_ , Y_ – змінні, які описують кількість хворих і здорових людей.
Для моделювання процесу поширення епідемії виділяємо дві частини процесу: неперервний і дискретний.
Результати моделювання представимо у графічному вигляді. На осі абсцис відкладається час моделювання системи, а на осі ординат – число здорових і хворих людей у кожний момент часу моделювання системи. Одиницею виміру часу може бути доба. На рис. 8.8 представлена імітаційна модель процесу поширення епідемії. Параметр Ki є коефіцієнтом поширення інфекції, що залежить від багатьох факторів. Він прийнятий рівним 0,0002. Часовий інтервал процесу моделювання приймаємо рівним 30 добам. Оскільки в процесі інтегрування шукані параметри можуть вийти за допустимі межі, то у PLUS-процесах вводяться відповідні обмеження за допомогою умовного оператора.
Рис. 8.8. Вікно імітаційної моделі поширення епідемії
Для представлення результатів моделювання у графічному вигляді виконуємо команди: Window ► Simulation Window ► Plot Window. Відкриється діалогове вікно Edit Plot Window, у яке вводиться інформація, як показано на рис. 8.9.
Як і у попередньому прикладі, розташуємо два графіки в одному графічному вікні. Заповнення діалогового вікна Edit Plot Window виконуємо у два етапи. На першому етапі вводиться наступна інформація в текстові поля, переміщаючись між ними за допомогою клавіші Tab:
у поле Label – “Число хворих людей”;
у поле Expression – назва шуканої змінної Х_;
у поле Title – “Динаміка епідемії”;
у поле Time Range – значення 30 (це число діб моделювання);
у полі Min Value – залишимо наведене значення без змін;
у поле Max Value – значення 50000 (початкова кількість здорових людей).
Рис. 8.9. Діалогове вікно Edit Plot Window для моделі поширення епідемії
Активізуємо кнопки Plot і Memorize. Інформація, введена у перших двох текстових полях, з'явиться у двох багаторядкових списках, розташованих нижче. Отже, задана вся необхідна інформація для виведення у графічному вигляді результатів моделювання змінної Х_ .
Для задавання необхідної інформації для виведення в графічному виді результатів моделювання шуканої змінної Y_ вводиться наступна інформація в текстових полях:
у поле Label “Число хворих людей” замінюємо на “Число здорових людей”;
у поле Expression замість назви шуканої змінної Х_ вводиться назва шуканої змінної Y_.
Далі активізуємо кнопки Plot і Memorize. Дані, зазначені в перших двох текстових полях, додадуться до раніше уведеної інформації у двох багаторядкових списках, розташованих нижче. Натискаємо кнопку ОК. Відкриється вікно PLOTS із шаблоном графіка (рис. 8.10).
Рис. 8.10. Вікно PLOTS для моделі поширення епідемії
Тепер запускаємо систему на моделювання. Розв’язання системи диференціальних рівнянь, наведеної в моделі, отримується методом Рунге-Кутта п'ятого порядку. Результати моделювання показані у вікні PLOTS (рис. 8.11).
Рис. 8.11. Вікно PLOTS з результатами моделювання поширення епідемії
Аналіз отриманих результатів свідчить про те, що для заданих початкових значень – кількості здорових людей 30000 і хворих 50 кількість хворих досягне максимуму через 2 доби і складе близько 17000 чоловік.
Моделювання процесу поширення епідемії для інших початкових значень моделі здійснюється виконанням аналогічних команд, описаних у попередньому прикладі. Нехай початкове значення коефіцієнт та поширення епідемії становить 0,0004, тобто
Kі_ EQU 0,0004
Закриваємо вікно PLOTS і виконуємо команди: Command ►Retranslate ► Window ► Simulation Window ► Plot Window. У розділі Memorized Expression вибираємо рядки:
Число хворих людей Х_
Число здорових людей Y_.
Після вибору кожного рядка натискаємо кнопку Plot. У текстове поле Time Range вводимо значення 30, а в текстове поле Max Value записуємо попереднє значення 30000. Після виконання команд Command ► START ► ОК у вікні PLOTS з’являються нові результати моделювання (рис. 8.12).
Рис. 8.12. Результати моделювання процесу поширення епідемії після зміни коефіцієнта Kі_ на 0.0004