
- •Моделювання систем
- •Передмова
- •Моделі процесів і систем
- •Класифікація моделей
- •Основні визначення та класифікація систем масового обслуговування
- •Характеристики систем масового обслуговування
- •Вхідний потік вимог
- •Стратегії керування потоками вимог
- •Класифікація систем масового обслуговування
- •Метод статистичних випробовувань
- •Генератори випадкових чисел
- •Моделювання випадкових подій та дискретних випадкових величин
- •Моделювання неперервних випадкових величин
- •Моделювання нормально-розподілених випадкових величин
- •Моделювання випадкових векторів
- •Моделювання випадкових функцій
- •Статистична обробка результатів моделювання
- •Визначення кількості реалізацій під час моделювання випадкових величин
- •Основне меню 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-критерію Ст’юдента
5.1. Введення транзактів у модель і вилучення їх із неї
За кількістю каналів обслуговування системи масового обслуговування поділяються на одноканальні та багатоканальні системи. Для імітації обслуговування таких систем у GPSSW використовуються об’єкти апаратної категорії. До них відносять одноканальні (ОКП) і багатоканальні (БКП) пристрої, логічні ключі (перемикачі).
Одноканальні пристрої (ОКП) характеризуються такими основними властивостями:
кожний ОКП у будь-який момент часу може обслужити тільки один транзакт;
наступний транзакт у процесі обслуговування повинен або зачекати своєї черги обслуговування, або переміститися у будь-яке інше місце;
наявність вищого пріоритету у транзакта перериває його поточне обслуговування (тільки для блоків PREEMPT, RETURN);
при надходженні транзакту до ОКП у моделі потрібно врахувати час, необхідний для його обслуговування.
Для опису в моделі різних ОКП використовують символічні назви, які задаються так само, як і назви блоків.
У процесі моделювання можуть використовуватися такі режими організації функціонування ОКП:
зайняття ОКП та його звільнення;
переривання обслуговування ОКП;
недоступність ОКП і відновлення доступності.
Елементи потоків у процесі моделювання систем у GPSSW імітують транзакти. Тому розглянемо блоки для введення і виведення транзактів у модель GENERATE і TERMINATE. Не існує обмежень на число різних блоків GENERATE в одній моделі.
Блок GENERATE (Генерування) генерує транзакти відповідно до заданих правил формування інтервалів між транзактами. Через цей блок транзакти входять у модель. Блок має наступний формат запису:
GENERATE [А],[В],[C],[D],[Е]
Інтервали часу між послідовними появами транзактів блоку GENERATE називають інтервалом надходження. Специфікація розподілу інтервалів надходження в блоці GENERATE задається операндами А і В. Наявність квадратних дужок означає, що використання даного операнда є необов’язковим.
Операнд А – середній інтервал часу між послідовними надходженнями транзактів у модель або ймовірнісний розподіл інтервалу із вбудованої бібліотеки процедур, що записується у круглих дужках.
Операнд В – задає модифікатор, що змінює значення інтервалу генерації транзактів у порівнянні з інтервалом, зазначеним операндом А. Є два типи модифікаторів: модифікатор-інтервал і модифікатор-функція.
За допомогою модифікатора-інтервалу задається рівномірний закон розподілу часу між генерацією транзактів.
Операнди А і В можуть бути назвою, додатнім числом, виразом у дужках або безпосередньо СЧА.
Різниця значень (А–В), заданих операндами А і В, визначає нижню границю інтервалу, а сума (А+В) – верхню границю рівномірного розподілу. Після генерування чергового транзакта вибирається число з отриманого інтервалу. Це й буде значення часу, через який наступний транзакт вийде із блоку GENERATE.
Коли операнди А і В задають у вигляді констант (В – модифікатор-інтервал), значення з інтервалу рівномірного розподілу повинно бути невід’ємними числами.
Можна вибрати генератор рівномірно розподілених випадкових чисел. Він встановлюється на сторінці Random Numbers (Випадкові числа) у журналі настроювань моделі. Потрібно вибрати Edit ► Settings (Виправлення ► Настроювання) і сторінку Random Numbers (Випадкові числа), на якій у поле введення GENERATE ввести номер генератора – будь-яке додатне число. За замовчуванням використовується генератор з номером 1.
Операнди А і В не обов'язково повинні бути задані. За замовчуванням передбачається їхнє нульове значення. Наприклад, А = 22.5, В = 0. Оскільки В = 0, то інтервали часу розподілені рівномірно, тобто інтервал часу надходження дорівнює 22.5. Це приклад задання детермінованого значення інтервалів часу.
Більш складні інтервали часу надходження транзактів (не за рівномірним законом) можуть бути задані з використанням модифікатора-функції. Під дією модифікатора-функції значення операнда А множиться на значення функції, заданої операндом В.
Інтервал між транзактами, тобто час настання наступного транзакта, обчислюється після того, як згенерований транзакт залишає блок GENERATE. Якщо після GENERATE знаходиться блок, який може затримувати згенерований транзакт, то час генерування наступного транзакту обчислюється після зняття умови блокування. Тому значення середнього інтервалу між транзактами буде більшим, ніж середнє значення операнда А. Це може зумовити помилку. Для її уникнення необхідно за блоком GENERATE розміщати блок, який не блокує просування транзактів.
Незалежно від способу обчислення інтервалу часу значення операнда В у блоці GENERATE не повинне перевищувати значення операнда А. Від’ємне значення інтервалу часу викличе зупинку процесу моделювання через помилку “Від’ємний час затримування”.
Розглянемо три інші операнди блоку GENERATE.
Операнд С (початкове затримування) – це момент часу, у який у блоці GENERATE повинен з’являється перший транзакт. Тоді всі інші надходження транзактів здійснюються відповідно до розподілу інтервалів часу, що задаються операндами А і В. Операнд С можна використовувати як для прискорення, так і для затримування надходження першого транзакту або для задання надходження в потрібний момент часу. Це значення може бути меншим, рівним або більшим від середнього часу, заданого операндом А. Коли операнд С не використовується, інтервали генерування визначаються операндами А і В.
Операнд D задає граничне значення загальної кількості транзактів, які можуть увійти в модель через блок GENERATE протягом часу моделювання. Коли це значення досягнуте, блок GENERATE перестає бути активним. Якщо операнд D не використовується, то блок GENERATE залишається активним протягом усього часу моделювання і може генерувати необмежену кількість транзактів.
Операнд Е встановлює клас пріоритету кожного із транзактів, що входять у модель через блок GENERATE. Для задання пріоритетів використовується послідовність цілих чисел. Чим більше число, тим вищий пріоритет. Якщо операнд Е не використовується, то пріоритет транзактів, що генеруються блоком GENERATE, дорівнює нулю за замовчуванням.
У GPSSW операнди А, В і С можуть бути дійсними числами, а операнди D i E приймають значення тільки цілих додатних і цілих чисел відповідно.
Незважаючи на це, що операнди А і D є необов’язкові, у будь-якому блоці GENERATE обов'язково задається або операнд А або операнд D. Як операнд не можна використовувати параметри транзактів. Зазначимо, що транзакт не повинен входити в блок GENERATE. Якщо транзакт намагається це робити, виникає помилка виконання.
Наведемо приклади використання блоків GENERATE:
GENERATE 28 – інтервал часу між згенерованими транзактами є величина детермінована і дорівнює 28, а кількість згенерованих транзактів є необмеженою.
GENERATE , , , 28 – операнди А, В, С не використовуються, їх значення за замовчуванням дорівнює нулеві; це означає, що у початковий момент модельного часу будуть згенеровані 28 транзактів.
GENERATE 55, 7 – інтервал часу між транзактами є випадкова величина, рівномірно розподілена в інтервалі (55–7, 55+7).
GENERATE 28, FN$Evlany – інтервал часу між транзактами є випадкова величина, рівномірно розподілена за законом, що заданий у вигляді табличної функції Evlany.
GENERATE 28,10,100,250,5 – інтервал часу між транзактами є рівномірно розподілена величина в інтервалі (18, 38); момент формування першого транзакта дорівнює 100 одиницям модельного часу; всього за час моделювання даним блоком буде згенеровано 250 транзактів; всім згенерованим транзактам присвоюється значення пріоритету, що дорівнює 5.
GENERATE (Exponential (1, 0, 50)) – інтервал часу між транзактами є випадкова величина, розподілена за експоненціальним законом з середнім значенням 50; параметри процедури мови PLUS Exponential мають такий зміст: перший параметр – номер вбудованого генератора рівномірно розподілених в інтервалі (a, b) випадкових чисел (може мати значення від 1 до 999); другий і третій параметри відповідно характеризують зміщення (мінімальне значення) і середнє значення (математичне сподівання) випадкових величин.
Наведені приклади демонструють різні способи задавання операндів блоку GENERATE.
Зазначимо, що у початковий момент часу в кожному блоці GENERATE здійснюється підготовка до виходу одного транзакта. На цій стадії модель ще повністю не ініціалізована. Тому всі СЧА, описані в блоці GENERATE, повинні бути вже визначені. Для цього у моделі блоку GENERATE повинні передувати команди визначення EQU, INITIAL, FUNCTION, VARIABLE, FVARIABLE.
Розглянемо ще приклад використання блоку GENERATE.
GENERATE 100,FN$EXPON,,100
Тут транзакти створюються через інтервал часу, що дорівнює добутку числа 100 на значення функції EXPON.
Транзакти видаляються з моделі за допомогою блоку TERMINATE (Завершити). Блок має наступний формат запису:
TERMINATE [A]
Значенням операнда А є число одиниць, на яке блок TERMINATE зменшує вміст лічильника завершення, який визначає момент закінчення моделювання. Операнд А може бути назвою, додатним цілим числом, виразом у дужках, СЧА або СЧА*<параметр>. За замовчуванням значення операнда А дорівнює нулю. У цьому випадку транзакт знищується, а значення лічильника завершення не міняється.
Лічильник завершення являє собою комірку пам'яті, що зберігає додатнє ціле число, вказане до початку процесу моделювання командою START (Почати). Це число задає час моделювання.
У процесі моделювання транзакти потрапляють у блок TERMINATE і у відповідності зі значенням операнда А віднімають певне число з лічильника завершення. Досягнення лічильником нуля означає завершення процесу моделювання. Число блоків TERMINATE у моделі не обмежені, але лічильник завершення є тільки один.
Розглянемо приклади:
TERMINATE 1 – транзакт, який поступає у блок, вилучається з моделі, а лічильник завершення, початкове значення якого встановлюється командою START, зменшується на 1.
TERMINATE – транзакт вилучається з моделі, а лічильник завершення процесу моделювання не змінюється.
Для керування часом моделювання з врахуванням завершення інтервалу часу необхідно:
включити в модель сегмент із блоків GENERATE і TERMINATE;
у всіх інших блоках TERMINATE моделі використати операнд А за замовчуванням;
у команді START операнду А надати значення 1.
Такий спосіб можна реалізувати за допомогою сегмента
GENERATE 600
TERMINATE 1
У даному випадку одиницею часу моделювання є 1 хв., а час моделювання системи становить 10 годин.
Команда START використовується для запуску процесу моделювання. Вона має наступний формат запису:
START A,[B],[C],[D]
Операнд А задає значення лічильника завершення, що визначає момент завершення моделювання і може бути тільки цілим додатним числом. Операнд В – операнд виведення статистики. Він може бути NP (“немає виводу даних”) або опущений. Якщо задано NP, то стандартний звіт не виводиться. За замовчуванням NP виводиться стандартний звіт. Операнд С не використовується і збережений для сумісності з описами ранніх версій GPSS. Операнд D визначає необхідність виведення вмісту списків подій. Якщо операнд D описується будь-яким додатнім цілим числом, то списки поточних і майбутніх подій включаються в стандартний звіт і виводяться. Якщо операнд D опущений, то списки в стандартному звіті не виводяться. Команда START може використовуватися в інтерактивному режимі.
Якщо процес моделювання завершується не після закінчення певного часу, а після оброблення визначеної кількості транзактів, то у цьому випадку сегмент задання часу моделювання не потрібний. Організація такого способу завершення моделювання передбачає наступне:
присвоєння операнду А у START значення заданого числа транзактів;
операнду А у всіх блоках TERMINATE, через які транзакти залишають модель, присвоюється значення „1”, або інше відмінне від нуля число;
у всіх інших блоках TERMINATE використовується значення операнда А за замовчуванням (А = 0).
Наприклад, потрібно завершити моделювання системи після виготовлення 200 деталей. У моделі це може бути відображено так:
. . .
TERMINATE 1
. . .
TERMINATE 1
. . .
TERMINATE
START 200
У реальних системах аналогами транзактів є елементи потоків з різними характеристиками. Розглянемо, як ці ж характеристики присвоюються транзактам.