
- •Моделювання систем
- •Передмова
- •Моделі процесів і систем
- •Класифікація моделей
- •Основні визначення та класифікація систем масового обслуговування
- •Характеристики систем масового обслуговування
- •Вхідний потік вимог
- •Стратегії керування потоками вимог
- •Класифікація систем масового обслуговування
- •Метод статистичних випробовувань
- •Генератори випадкових чисел
- •Моделювання випадкових подій та дискретних випадкових величин
- •Моделювання неперервних випадкових величин
- •Моделювання нормально-розподілених випадкових величин
- •Моделювання випадкових векторів
- •Моделювання випадкових функцій
- •Статистична обробка результатів моделювання
- •Визначення кількості реалізацій під час моделювання випадкових величин
- •Основне меню 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.9. Створення і застосування списків користувача
У процесі моделювання система GPSS супроводжує два основних списки подій – список поточних подій (СПП) і список майбутніх подій (СМП).
У списку СПП розташування транзактів здійснюється згідно порядку зменшення пріоритетів. Транзакти з однаковими транзактами поміщаються у СПП згідно черговості їх появлення. Під час моделювання першим переглядається СПП і система переміщує у моделі ці транзакти, для яких виконується задані умови. Будь-який транзакт у цьому списку може бути як в активному стані (активізований у даний момент модельного часу) так і у стані затримування. Якщо у СПП транзактів не має, тоді програма керування моделюванням звертається до другого списку СМП. Події, виконання яких заплановано на найближчий момент до модельного часу з СМП переносяться у СБП. Списки біжучих і майбутніх подій відображаються у вікні списків GPSS World.
Для перегляду транзактів у СПП з метою вибору наступного транзакта для просування його у моделі важливим є порядок перегляду заблокованих транзактів у цьому списку. Транзакти можуть бути заблоковані блоками GATE i TEST для перевірки станів ОКП.
Тому заблоковані транзакти, які перебувають в СПП, доцільно розміщувати в списки користувача (СК) і залишати їх до виконання умов, що дозволяють подальші просування цих транзактів.
Список користувача – це деякий буфер, в якому можуть тимчасово розміщатись транзакти, що виведені із СПП. На відміну від списків поточних і майбутніх подій транзакти вводяться у список користувача і виводяться з нього не автоматично, а за допомогою блоків LINK (Внести у список) i UNLINK (Вивести зі списку). Списки користувача зручні для моделювання алгоритмів, економії масштабного часу та формування дисциплін черг транзактів, які відрізняються від дисципліни “першим прийшов – першим обслуговується”, яка реалізована в СПП.
Введення транзактів у список користувача. Блок LINK. Формат запису блоку:
[назва] LINK А,В,[C]
Операнд А задає назву або номер списку користувача, в який розміщується транзакт після надходження у блоці LINK.
Операнд А може бути додатнім цілим числом, назвою, СЧА, СЧА*СЧА.
Операнд В впорядковує список користувача і визначає місце розміщення у ньому транзактів. Допустимі значення:
FIFO – транзакт розміщується в кінець списку;
LIFO – транзакт розміщується на початок списку;
PR – транзакти впорядковуються за зменшенням пріоритету;
P – транзакти розміщуються в порядку зростання значення параметра;
M1 – транзакти розміщаються в порядку зростання відносного часу перебування у моделі.
Операндом В можуть використовуватись і інші СЧА: арифметична змінна, функція, вираз в дужках. Тоді виконуються обчислення для активного транзакта (вказаного операндом В). Для решти транзактів, які перебувають у списку користувача, обчислення починаються із початку черги. Впорядкування транзактів у списку користувача здійснюється за зменшенням обчисленого значення.
Операнд С є необов’язковим. Він вказує на альтернативний вихід для опрацювання різних ситуацій у чергах. Може бути додатнім цілим числом, СЧА, СЧА*СЧА.
Операндом С вказується мітка блоку, до якого переходить активний транзакт у випадку, якщо індикатор списку користувача встановлений в 0 (виключений). Індикатор є у кожного списку користувача. Коли операнд С не використовується, індикатор встановлюється в “1” (включений) і всі транзакти, що надійшли в блок LINK, розміщуються в список користувача.
Якщо в блоці LINK використовується операнд С, то робота блоку LINK є більш складнішого. У цьому випадку перевіряється індикатор списку користувача. Якщо він встановлений у положення “1”, то увійшовший транзакт розміщується у списку користувача згідно значень операнда В. Якщо ж індикатор встановлений у положення “0”, тоді він переводиться у положення “1”, а транзакт, що надходить, переміщається до блоку, що задається операндом С.
Розглянемо приклад використання блоку LINK без наявності операнда С.
LINK 5,LIFO
Блок розміщує транзакти на початок списку користувача з номером 5 в порядку їх надходженя. Блок
LINK King,P$Princ
розміщує транзакти в список користувача з іменем King. Вони впорядковуються за зростанням значення параметра з іменем Princ.
Розглянемо організацію перевірки умов розміщення транзактів у списку користувача. Вважатимемо, що в них можна розмістити довільне число транзактів. Зокрема, у випадку зайнятості ОКП скерувати транзакт в список користувача можна таким чином
. . .
GATE NU Kan1,Cher
SEIZE Kan1
. . .
Cher LINK King,LIFO
. . .
Якщо ОКП Kan1 зайнятий, то блок GATE направляє транзакт в блок LINK з іменем King і блокує блок SEIZE. Транзакт вводиться на початок списка користувача з іменем King.
Список користувача можна розмістити і так
. . .
GATE U Kan1,Cher
LINK King,LIFO
Cher SEIZE Kan1
. . .
Якщо ОКП Kan1 зайнятий, то транзакт переходить до наступного блоку LINK і розміщується в список користувача з іменем King. Незайнятість ОКП зумовлює пересування транзакту в блок SEIZE з міткою Cher. Транзакт займає вільний ОКП.
Для моделювання реальних систем у списку користувача може розташовуватися задане число транзактів. Це обмеження можна реалізувати наступним чином
Buf EQU 15
. . .
GATE NU Kan1,Mit1
SEIZE Kan1
. . .
Mit1 TEST L CH$King,Buf,Mit2
LINK King,FIFO
Якщо ОКП Kan1 зайнятий, то блок GATE блокує входження транзакту в блок SEIZE і спрямовує його в блок ТEST з міткою Mit1, який знаходиться перед блоком LINK. Якщо поточний вміст списка користувача з іменем King є меншим за задану ємність Buf, то транзакт надходить у список користувача. В протилежному випадку він скеровується в блок з міткою Mit2.
Інший можливий варіант цього ж фрагменту моделі має вигляд
Buf EQU 15
. . .
GATE U Kan1,Mit1
TEST L CH$King,Buf,Mit2
LINK King,FIFO
Mit1 SEIZE Kan1
Якщо ОКП Kan1 зайнятий, блок GATE пропускає транзакт до блоку TEST. Якщо поточний вміст списка користувача з іменем King є меншим за задану ємність Buf, то транзакт проходить в список користувача. В протилежному випадку він спрямовується до блоку з міткою Mit2. Якщо ОКП незайнятий, транзакт скеровується до блоку SEIZE з міткою Met1 і займає вільний ОКП Kan1.
Вивід транзактів із списку користувача. Блок UNLINK. Цей блок вилучає транзакти із списку користувача і повертає їх у список поточних подій. Блок UNLINK (вивести із списку) має наступний форимат:
[назва] UNLINK X А,В,C,[D],[E],[F]
Операндом А вказується назва або номер списка користувача. Операнд В вказує на мітку блоку, в який переходять виведені із списку користувача транзакти. Операндом С вказується число транзактів, що виводяться зі списку користування. Операнди А, В, С можуть бути назвою і додатнім цілим числом, СЧА або СЧА*СЧА. Окрім того, в операнді С використовується ключове слово ALL для виведення всіх транзактів списку. За замовчуванням операнд С приймає значення ALL.
Спосіб та умови виведення транзактів із вписку користувача визначають операнди D і E разом з умовним оператором Х. Значення оператора Х ті ж, що й описані в блоці TEST. За замовчуванням умовний оператор Х приймає значення Е (рівність). Якщо операнди D і E не використовуються, то умовний оператор Х не вказується. В цьому випадку кількість транзактів, що виводяться з початку списку, обов’язково визначаються операндом С.
Операнд D може бути: булевою змінною; номером параметра транзакта; ключовим словом BACK.
Якщо операнд D є булевою змінною, то операнд Е і оператор Х не використовуються. Булева змінна обчислюється відносно транзакту, який перебуває у списку користувача. Якщо результат не нуль, тобто умова виведення виконується, транзакт вилучається зі списку користування. Кількість таких транзактів визначається операндом С. Однак може бути вилучено менше транзактів, ніж вказано операндом С (за числом не нульових результатів обчислення булевої змінної). Крім того, і тразактів у списку користувача може бути менше, ніж вказано операндом С.
Якщо операндом D вказане ключове слово BACK, а операнд Е і умовний оператор Х не використовуються, то транзакти виводяться з кінця списку користувача. Їх кількість визначається обов’язково операндом С.
Операнд D може обчислюватися відносно транзакту, який перебуває у списку користувача, і використовуватися як номер параметра, значення якого порівнюється із результатом обчислення операнда Е за допомогою умовного оператора Х. Якщо операнд Е не використовується,то значення параметра транзакту із списку користувача порівнюється зі значенням такого ж параметра вихідного транзакту. Якщо вони рівні, транзакт вилучається із списку користувача. В цьому випадку кількість вихідних транзактів визначається операндом С.
Детальний аналіз функціонування блоку UNLINK залежно від неявності операндів A – F наведено в [1]. Операндом F задається назва блоку, куди переходить транзакт, що виходить із блоку UNLINK, якщо із списку користувача не виведений ні один транзакт. Якщо операнд F не використовується, вихідний транзакт переходить у наступний блок незалежно від кількості виведених транзактів. Наприклад, блок
UNLINK King,Mit1,1,BACK
виводить із списку користувача з іменем King один транзакт з кінця списку і скеровує його в блок з міткою Mit1. Блок
UNLINK 5,Mit2,2
виводить із списку користувача з номером 5 два транзакти з початку списку і скеровує його в блок з міткою Mit2.
Відзначимо наступні особливості виконання блоку UNLINK. По-перше, якщо операнди D і E містять посилання на СЧА транзактів, операнд D обчислюється відносно транзактів у списку користувача, а операнд Е – відносно активного транзакту. По-друге, після виведення транзактів із списку продовжується або починається просування транзакта з найвищим пріоритетом, а при рівності пріоритетів надається перевага транзакту-ініціатору виведення.
Розглянемо на прикладі [1] механізм роботи блоків LINK і UNLINK і формування необхідних дисципдін обслуговування.
Нехай в одноканальній СМО з очікуванням потрібно організувати дисципліну обслуговування, для якої пріоритет надається вимогам з найменшим часом обслуговування.
Програма такої моделі наведена нижче.
GENERATE (Exponential(1,0,50))
ASSIGN Kkd,(Exponential(1,0,30))
GATE NU Kan1,Mit2
Mit1 SEIZE Kan1 ADVANCE P$Kkd
RELEASE Kan1
UNLINK Mash,Mit1,1
TERMINATE
Mit2 LINK Mash,P$Kkd
GENERATE 1000
TERMINATE 1
В блоці ASSIGN параметру Kkd записується випадковий час обслуговування, який обчислюється з використання вбудованого генератора експоненціального розподілу. Якщо ОКП Kan1 вільний, то блок GATE впускає транзакт в блок SEIZE, і ОКП затримується на час P$Kkd. Якщо ж у момент надходження транзакту ОКП зайнятий, то блок GATE скеровує транзакт в блок LINK з міткою Mit2, який вводить транзакт у список користувача Mash. Транзакти впорядковуються за зростанням часу обслуговування, записаного в параметрі P$Kkd. Блок UNLINK після звільнення ОКП виводить з початку списку транзакт з найменшим часом обслуговування, забезпечуючи тим самим задану дисципліну.
Блоки LINK і UNLINK надають можливість користувачу формувати свої списки у динаміці незалежно від списків затримування, які автоматично керують системою GPSS World. Наявність цих блоків не вимагає використання блоків QUEUE – DEPART для збирання статистики про черги, оскільки ці статистичні дані можна отримати у списку користувача.
Контрольні запитання та завдання
До яких об’єктів апаратної категорії належать одноканальні пристрої, і якими основними властивостями вони характеризуються?
За допомогою якого блоку транзакти входять в модель? Який його формат запису і що означають його операнди?
Згенеруйте надходження в модель 10 транзактів з інтервалом в 50 од. часу і з відхиленням 5 од. часу.
Скільки блоків TERMINATE може бути у моделі і скільки – в якості лічильника завершення? Наведіть блок-діаграму керування часом моделювання.
Який блок відповідає за присвоєння і зміну параметрів транзактів?
Змоделюйте присвоєння другому параметру транзакта числа 50, а від параметра з іменем Buf віднімання поточної довжини черги з номером 1.
Які блоки апаратної категорії відповідають за зайняття і звільнення одноканального пристрою?
Змоделюйте затримку транзакту в каналі обслуговування з іменем Kan-1 протягом 7515 од. часу за допомогою блоків SEIZE, ADVANCE і RELEASE.
Яким блоком можна перевірити стан каналів у моделі (зайнятий він чи ні)?
Змоделюйте перехід від одного каналу обслуговування до іншого у випадку, коли перший з них зайнятий.
Які блоки мови програмування GPSS призначені для збору статистичних даних про об’єкти моделювання?
В одноканальну систему масового обслуговування надходять замовлення кожних 5010 од. часу. Всі вони потрапляють в чергу і чекають звільнення каналу обслуговування. Середній час оброблення замовлення становить 405 од. часу. Після обслуговування замовлення залишають систему. Змоделюйте роботу такої системи для опрацювання 100 замовлень.
Які Ви знаєте блоки для змінним маршрутів руху транзактів у моделі? Дайте коротку характеристику їхніх режимів роботи.
Змоделюйте ситуацію, коли черговий транзакт повинен зайняти одноканальний пристрій, перервавши обслуговування попереднього транзакта.
Які блоки мови GPSS передбачені для моделювання несправностей (переведення в недоступний стан) одноканальних пристроїв?
Збільшіть (зменшіть) довжину черги з номером 5 на 7 одиниць.
Наведіть фрагмент програми, яка показує зайняття транзактом пристрою. Транзакт займає усі вільні канали пристрою.
Наведіть фрагмент програми, яка моделює затримування транзактів у пристрої з часом затримування, рівномірно розподіленим в інтервалі А В, де А і В значення параметрів ОТР1 і ОТР2.
Параметру п’ятого транзакту присвойте значення 4.
Транзакт займає пристрій, номер якого задається п’ятим номером транзакта. Час обслуговування у пристрої задається параметром ТІМЕ. Наведіть фрагмент відповідної програми.
В одноканаьну СМО надходить потік вимог, розподілений за пуассонівським законом з інтенсивністю n хв-1. Час обслуговування однієї вимоги становить m k сек. Навести фрагмент програми для збирання статитстичної інформації про час перебування вимог у системі.
У довідкове бюро на залізничному вокзалі звертаються клієнти через кожні 20 8 сек, яких обслуговують п’ять операторів. Тривалість обслуговування становить 100 20 сек. Навести фрагмент програми для збирання статистичної інформації про довжину черги.
“Якщо відлагодження програми – процес вилучення помилок, тоді програмування має бути процесом їх внесення”
(Е. Дейкстра)
Розділ 6
Створення і відлагодження імітаційних моделей у GPSS World
основі стани моделювання та створення імітаційних моделей у GPSS World
команди GPSS World
інтерактивні можливості GPSS World та відлагодження моделей
У розділі наведено основні етапи створення, від лагодження та експлуатації моделей у GPSS World. Показані засоби GPSSW для моделювання систем в інтерактивному режимі. Розглянуті команди GPSS World, які використовуються для визначення об’єктів і керування процесом моделювання.