ОСНОВИ МОДЕЛЮВАННЯ НА GPSS/PC
ЗМІСТ
ВСТУП
1. ЗАГАЛЬНІ ВІДОМОСТІ ПРО GPSS/PC
2. ОСНОВНІ БЛОКИ GPSS/PC І ПОВ'ЯЗАНІ З НИМИ ОБ'ЄКТИ
2.1. Блоки, пов'язані з транзактамі
2.2. Блоки, пов'язані з апаратними об'єктами
2.3. Блоки для збору статистичних даних
2.4. Блоки, що змінюють маршрути транзактов
2.5. Блоки, які працюють з пам'яттю
2.6. Блоки для роботи зі списками користувача
3. УПРАВЛЯЮШІЕ ОПЕРАТОРИ GPSS/PC
4. ДЕЯКІ ПРИЙОМИ КОНСТРУЮВАННЯ GPSS-МОДЕЛЕЙ
4.1. Непряма адресація
4.2. Обробка одночасних подій
5. КОМАНДИ GPSS/PC І ТЕХНОЛОГІЯ РОБОТИ З ПАКЕТОМ
5.1. Завантаження інтегрованого середовища
5.2. Введення нової моделі
5.3. Редагування тексту моделі
5.4. Запис і зчитування моделі з диска
5.5. Прогон моделі і спостереження за моделюванням
5.6. Отримання та інтерпретація стандартного звіту
СПИСОК ЛІТЕРАТУРИ
ВСТУП
Процеси функціонування різних систем і мереж зв'язку можуть
бути представлені тією чи іншою сукупністю систем масового
обслуговування (СМО) - стохастичних, динамічних, дискретно-неперервним-
рывных математичних моделей. Дослідження характеристик таких мо-
делей може проводитися або аналітичними методами, або шляхом
імітаційного моделювання [1-6].
Імітаційна модель відображає стохастичний процес зміни
дискретних станів СМО в безперервному часу у формі моделірующе-
го алгоритму. При його реалізації на ЕОМ проводиться накопичення
статистичних даних по тих атрибутів моделі, характеристики кото-
яких є предметом досліджень. Після закінчення моделювання на-
копленная статистика обробляється, і результати моделювання по-
лучан у вигляді вибіркових розподілів досліджуваних величин або їх
вибіркових моментів. Таким чином, при моделюванні імітаційний
систем масового обслуговування мова завжди йде про статистичному
імітаційний моделюванні [5; 6].
Складні функції моделює алгоритму можуть бути реалізовані
засобами універсальних мов програмування (Паскаль, Сі), що
надає необмежені можливості в розробці, налагодженні і
використанні моделі. Однак така гнучкість купується ціною
великих зусиль, що витрачаються на розробку та програмування
дуже складних моделюючих алгоритмів, що оперують з списковим
структурами даних. Альтернативою цьому є використання спе-
ціалізірованних мов імітаційного моделювання [5-7].
Спеціалізовані мови мають засоби опису структури і
процесу функціонування моделюється системи, що значно об-
легшає і спрощує програмування імітаційних моделей, оскільки
основні функції моделює алгоритму при цьому реалізуються ав-
томатіческі. Програми імітаційних моделей на спеціалізованих
мовах моделювання близькі до описами модельованих систем на
природною мовою, що дозволяє конструювати складні імітаційно-
ные моделі користувачам, які не є професійними програм-
Місті.
Одним з найбільш ефективних і поширених мов моді-
воджується складних дискретних систем є в даний час мова
GPSS [1; 4; 7]. Він може бути з найбільшим успіхом використаний для
моделювання систем, формалiзуються, у вигляді систем масового обслу-
живания. Як об'єкти мови використовуються аналоги таких стан-
дротяні компонентів СМО, як заявки, що обслуговують прилади, черги
і т.п. Достатній набір подібних компонентів дозволяє конструюю-
вати складні імітаційні моделі, зберігаючи звичну термінологію
СМО.
На персональних комп'ютерах (ПК) типу IBM/PC мова GPSS реалі-
зовано в рамках пакета прикладних програм GPSS/PC [8]. Основний мо-
дуль пакету являє собою інтегроване середовище, що включає
крім транслятора з вхідної мови засоби введення і редактірова-
ня тексту моделі, її налагодження і спостереження за процесом моделірова-
ня, графічні засоби відображення атрибутів моделі, а також
засоби накопичення результатів моделювання в базі даних та їх
статистичної обробки. Крім основного модуля до складу пакету
входить модуль створення стандартного звіту GPSS/PC, а також ряд до-
полнітельних модулів і файлів.
У даному виданні, що складається з двох частин, викладаються основи
моделювання систем та мереж зв'язку з використанням пакета GPSS/PC.
У першій частині розглядаються основні поняття і засоби GPSS/PC,
прийоми конструювання GPSS-моделей і технологія роботи з пакетом.
Виклад матеріалу супроводжується невеликими навчальними прикладами.
Щодо детальний розгляд мови GPSS/PC викликано
відсутністю в літературі навчального матеріалу з даної версії мови.
У другій частині розглядаються приклади GPSS-моделей різних
систем і мереж масового обслуговування, що використовуються для формалізує-
ції процесів функціонування систем і мереж зв'язку. Наводиться
також ряд прикладів моделювання систем та мереж зв'язку з використанням
ням GPSS/PC. Детально коментуються тексти GPSS-моделей і резуль-
тати моделювання.
1. ЗАГАЛЬНІ ВІДОМОСТІ ПРО GPSS/PC
Вихідна програма на мові GPSS/PC, як і програма на будь-якому
мовою програмування, являє собою послідовність опе-
ратора. Оператори GPSS/PC записуються і вводяться в ПК у наступному
форматі:
номер _строкі ім'я операція операнди; коментарі
Всі оператори вихідної програми повинні починатися з номі-
ра 0_строкі - цілого позитивного числа від 1 до 9999999. Пос-
ле введення операторів вони розташовуються у вихідній програмі в соот-
відповідне з нумерацією рядків. Зазвичай нумерація проводиться з неко-
менту, котрим кроком, відмінним від 1, щоб мати можливість додавання опе-
ратора в потрібне місце вихідної программи.Некоторие оператори удо-
бно вводити, не включаючи їх у вихідну програму. Такі оператори
вводяться без номера рядка.
У цьому виданні при описі формату операторів і в прикладах
моделей номери рядків будуть опускатися для кращої читання тексту.
Окремі оператори можуть мати ім'я для посилання на ці оператори
в інших операторах. Якщо такі посилання відсутні, то цей елемент
оператора не є обов'язковим.
У полі операції записується ключове слово (назва операторами
ра), що вказує конкретну функцію, виконувану даним оператором.
Це поле оператора є обов'язковим. У деяких операторів
поле операції включає в себе також допоміжний операнд.
У полях операндів записується інформація, уточнююча і конк-
ретізірующая виконання функції, визначеної в полі операції. Ці
поля в залежності від типу операції містять до семи операндів,
розташованих у певній послідовності і позначаються
зазвичай першими літерами латинського алфавіту від A до G. Деякі
оператори взагалі не мають операндів, а в деяких операнди можуть
бути опущені, при цьому встановлюються їх стандартні значення (по
замовчуванням). Під час запису операндів використовується позиційний принцип:
пропуск операнда відзначається комою.
Необов'язкові коментарі у разі їх присутності відокремлюються від
поля операндів крапкою з комою. Коментарі не можуть містити
літер російського алфавіту.
Оператори GPSS/PC записуються, починаючи з першої позиції, в
вільному форматі, тобто окремі поля розділяються довільним ко-
лічеством пробілів. Під час введення вихідної програми в інтегрованій
середовищі GPSS/PC розміщення окремих полів операторів з певним
кількістю інтервалів між ними проводиться автоматично.
Кожен оператор GPSS/PC відноситься до одного з чотирьох типів:
оператори-блоки, оператори визначення об'єктів, що керують опера-
тори і оператори-команди.
Оператори-блоки формують логіку моделі. У GPSS/PC є
близько 50 різних видів блоків, кожен з яких виконує свою
конкретну функцію. За кожним з таких блоків стоїть відповідна
підпрограма транслятора, а операнди кожного блоку служать парамет-
рами цієї підпрограми.
Оператори визначення об'єктів служать для опису пара-
м деяких об'єктів GPSS/PC (про самих об'єктах йтиметься
далі).
Прикладами параметрів об'єктів можуть бути кількість каналів у мно-
гоканальной системі масового обслуговування, кількість рядків і
стовпців матриці і т.п.
Керуючі оператори служать для управління процесом моделі-
вання (прогоном моделі). Оператори-команди дозволяють управляти
роботою інтегрованого середовища GPSS/PC. Керуючі оператори і
оператори-команди зазвичай не включаються в початкову програму, а
вводяться безпосередньо з клавіатури ПК у процесі інтерактив-
ного взаємодії з інтегрованою середовищем.
Після трансляції вихідної програми в пам'яті ПК створюється так
звана поточна модель, яка є сукупністю різного типу
об'єктів, кожен з яких представляє собою деякий набір
чисел у пам'яті ПК, що описують властивості і поточний стан об'єкту.
Об'єкти GPSS/PC можна розділити на сім класів:
динамічні, операційні, апаратні, статистичні, обчислювач-
ные, що запам'ятовують і групуються.
Динамічні об'єкти, відповідні заявками в системах
масового обслуговування, називаються в GPSS/PC транзактамі. Вони
"створюються" і "знищуються" так, як це необхідно за логікою моді-
Чи в процесі моделювання. З кожним транзактом може бути пов'язано
довільне число параметрів, що несуть в собі необхідну інфор-
цію про це транзакте. Крім того, транзакти можуть мати різні
пріоритети.
Операційні об'єкти GPSS/PC, що називаються блоками, відповідають
операторам-блокам вихідної програми. Вони, як уже говорилося,
формують логіку моделі, даючи транзактам вказівки: куди йти і що
робити далі. Модель системи на GPSS/PC можна уявити сукупність-
ністю блоків, об'єднаних відповідно до логіки роботи реаль-
ної системи в так звану блок-схему. Блок-схема моделі
може бути зображена графічно, наочно показуючи взаємодію
блоків в процесі моделювання.
Апаратні об'єкти GPSS/PC - це абстрактні елементи, на ко-
торие може бути розчленоване (декомпозіровано) обладнання реальної
системи. До них відносяться одноканальні і багатоканальні устрій-
ства і логічні перемикачі. Багатоканальне пристрій іноді
називають пам'яттю.
Одноканальні і багатоканальні пристрої відповідають обслу-
жива приладів в СМО. Одноканальне пристрій, який для
стислості надалі будемо називати просто пристроєм, може обслужити-
вати одночасно тільки один транзакт. Багатоканальне пристрій
(СКУ) може обслуговувати одночасно кілька транзактов. Логи-
орієн перемикачі (ЛП) використовуються для моделювання двійкових
станів логічного чи фізичного характеру. ЛП може зна-
диться в двох станах: включено і вимкнене. Його стан може
змінюватися в процесі моделювання, а також опитуватися для при-
нятія певних рішень.
Статистичні об'єкти GPSS/PC служать для збору і обробки
статистичних даних про функціонування моделі. До них відносяться
черги і таблиці.
Кожна чергу забезпечує збір і обробку даних про транзак-
тах, затриманих в будь-якій точці моделі, наприклад перед одн-
нальним пристроєм. Таблиці використовуються для отримання вибіркових
розподілів деяких випадкових величин, наприклад часу преба-
вання транзакта в моделі.
До обчислювальним об'єктів GPSS/PC відносяться змінні (Аріф-
метичних і Булевського) і функції. Вони використовуються для обчислюва-
лення деяких величин, заданих арифметичними або логічними
виразами або табличними залежностями.
Запам'ятовувальні об'єкти GPSS/PC забезпечують збереження в пам'яті ПК
окремих величин, що використовуються в моделі, а також масивів таких
величин. До них відносяться так звані зберігаються величини і
матриці, що зберігаються величин.
До об'єкти групують класу відносяться списки користувача
і групи. Списки користувача використовуються для організації Очер-
дей з дисциплінами, відмінними від дисципліни "раніше прийшов - раніше
обслужений ". Групи в даному виданні розглядатися не будуть.
Кожному об'єкту того чи іншого класу відповідають числові
атрибути, що описують його стан в даний момент модельного вре-
мени. Крім того, є ряд так званих системних атрибутів,
відносяться не до окремих об'єктах, а до моделі в цілому.
Значення атрибутів всіх об'єктів моделі після закінчення моделювання
Виводяться в стандартний звіт GPSS/PC. Більша частина атрибутів дос-
тупна програмісту і складає так звані стандартні число-
ші атрибути (ВЧА), 0которие можуть використовуватися як опе-
рандів операторів вихідної програми. Всі ВЧА в GPSS/PC є це-
лимі числами.
Кожен об'єкт GPSS/PC має ім'я та номер. Імена об'єктів
даються в різних операторах вихідної програми, а відповідні
їм номери транслятор присвоює автоматично. Назва об'єкта пред-
вляєтся собою що починається з букви послідовність літер латинського
алфавіту, цифр та символу "підкреслення". При необхідності імені
будь-якого об'єкта, крім імені блоку, можна поставити у відповідність
будь-який номер за допомогою оператора опису EQU, що має наступний
формат:
ім'я EQU номер
Блокам присвоюються їх порядкові номери у вихідній програмі
(непутать з номерами рядків!).
Для посилання 0на якої-небудь стандартний числовий атрибут некот-
якого об'єкта відповідний операнд оператора вихідної програми
записується одним із таких способів:
ВЧА $ ім'я;
ВЧА j,
де ВЧА - системне позначення (назва) конкретного стандар-
тного числового атрибута даного об'єкта, а ім'я - ім'я об'єкта;
j - номер об'єкта; $ - символ-розділювач.
Прогон поточної моделі, тобто власне моделювання, виконуємо-
ється за допомогою спеціальної керуючої програми, яку називають
симулятором (від англійського SIMULATE - моделювати, імітувати).
Робота GPSS-моделі під керуванням симулятора полягає в перемі-
щении транзактов від одних блоків до інших, аналогічно тому, як в
моделюється СМО переміщуються заявки, що відповідають транзактам.
У початковий момент часу в GPSS-моделі немає жодного тран-
закта. У процесі моделювання симулятор генерує транзакти в
певні моменти часу відповідно до тих логічними піт-
ребностямі, які виникають в моделюється системі. Подібним же
чином транзакти залишають модель в певні моменти часу в
залежно від специфіки моделюється системи. У загальному випадку в мо-
поділи одночасно існує велике число транзактов, проте в
кожний момент часу симулятор здійснює просування тільки ка-
кого-небудь одного транзакта.
Якщо транзакт почав свій рух, він переміщується від блоку до
блоку по шляху, написаним блок-схемою. У той момент, коли тран-
закт входить в деякий блок, на виконання викликається підпрограма
симулятора, що відповідає типу цього блоку, а після її виконан-
ня, при якому реалізується функція даного блоку, транзакт "намагався-
ється "увійти в наступний блок. Таке просування транзакта продовжуючи-
ся до тих пір, поки не відбудеться одне з наступних можливих з-
битій:
1) транзакт входить в блок, функцією якого є видалення
транзакта з моделі;
2) транзакт входить в блок, функцією якого є затримка
транзакта на якийсь певний час в моделі;
3) транзакт "намагається" увійти в наступний блок, проте блок
"відмовляється" прийняти його. У цьому випадку транзакт залишається в тому
блоці, де був, і пізніше буде повторювати свою спробу увійти
в наступний блок. Коли умови в моделі зміняться, така спроба
може виявитися успішною, і транзакт зможе продовжити своє переміщення
щення по блок-схемі.
Якщо виникло одне з описаних вище умов, обробка даного
транзакта припиняється, і починається переміщення іншого транзакта.
Таким чином, виконання моделювання симулятором п?? одолжается
постійно.
Проходячи через блоки моделі, кожен транзакт вносить вклад в со-
держімое лічильників блоків. Значення цих лічильників доступні
програмісту через СЧА блоків: W - поточний зміст блоку і N -
загальна кількість входів до блоку.
Кожне просування транзакта в моделі є подією, кото-
рої має відбутися в певний момент модельного часу. Для
того, щоб підтримувати правильну тимчасову послідовність
подій, симулятор має таймер модельного часу, який ав-
томатіческі коректується відповідно до логіки, запропонованої
моделлю.
Таймер GPSS/PC має такі особливості:
1) реєструються тільки цілі значення (всі тимчасові інтер-
вали в моделі зображуються цілими числами);
2) одиниця модельного часу визначається розробником моді-
Чи, який задає всі тимчасові інтервали в одних і тих
ж, обраних ним одиницях;
3) симулятор не аналізує стан моделі в кожен наступних
щий момент модельного часу (віддалений від поточного на
одиницю модельного часу), а просуває таймер до моме-
нту часу, коли відбувається найближчим така подія.
Значення таймера доступні програмісту через системні СЧА C1
(відносний час) і AC1 (абсолютна час).
Центральної завданням, що виконується симулятором, є визна-
ня того, який транзакт треба вибрати такий для просування в
моделі, коли його попередник припинив своє просування. З цією
метою симулятор розглядає кожен транзакт як елемент деякий-
го списку. У відносно простих моделях використовуються лише два
основних списку: список поточних подій і список майбутніх подій.
Список поточних подій включає в себе ті транзакти, плановане
час просування яких дорівнює або менше поточного модельного
часу (до останніх відносяться транзакти, рух яких було
заблоковано раніше). Він організовується в порядку спадання пріоритетів
тов транзактов, а в межах кожного рівня пріоритету - в порядку
надходження транзактов.
Список майбутніх подій включає в себе транзакти, плановане
час просування яких більше поточного часу, тобто події,
пов'язані з просуванням цих транзактов, повинні відбутися в май-
щем. Цей список організовується в порядку зростання планованого
часу просування транзактов.
Симулятор GPSS/PC поміщає транзакти залежно від умов
в моделі в той чи інший список і переносить транзакти зі списку в
список, переглядає списки, вибираючи наступний транзакт для обра-
лення, коректує таймер модельного часу після обробки всіх
транзактов у списку поточних подій.
2. ОСНОВНІ БЛОКИ GPSS/PC І ПОВ'ЯЗАНІ З НИМИ ОБ'ЄКТИ
2.1. Блоки, пов'язані з транзактамі
З транзактамі пов'язані блоки створення, знищення, затримки
транзактов, зміни їх атрибутів і створення копій транзактов.
Для створення транзактов, що входять в модель, служить блок
GENERATE (генерувати), що має наступний формат:
ім'я GENERATE A, B, C, D, E
У полі A задається середнє значення інтервалу часу між мо-
ментами надходження в модель двох послідовних транзактов. Якщо
цей інтервал постійний, то поле B не використовується. Якщо ж інтер-
вал надходження є випадковою величиною, то в полі B вказуючи-
ється модифікатор середнього значення, який може бути заданий у вигляді
модифікатора-інтервалу або модифікатора-функції.
Модифікатор-інтервал використовується, коли інтервал надходження
транзактов є випадковою величиною з рівномірним законом роз-
ределенія ймовірностей. У цьому випадку в поле B може бути заданий лю-
бій СЧА, окрім посилання на функцію, а діапазон зміни інтервалу
надходження має межі AB, A + B.
Наприклад, блок
GENERATE 100,40
створює транзакти через випадкові проміжки часу, рівномірно
розподілені на відрізку [60; 140].
Модифікатор-функція використовується, якщо закон розподілу ін-
інтервал надходження відмінний від рівномірного. У цьому випадку в поле B
повинна бути записана посилання на функцію (її ВЧА), що описує цей
закон, і випадковий інтервал надходження визначається, як ціла
частину твору поля A (середнього значення) на обчислена значен-
ня функції.
У полі C задається час вступу до модель першого транзак-
та. Якщо це поле порожнє або дорівнює 0, то момент появи перших
транзакта визначається операндами A і B.
Поле D задає загальне число транзактов, яка має бути ство-
дано блоком GENERATE. Якщо це поле порожнім, то блок генерує неоген-
раніченное число транзактов до завершення моделювання.
У полі E задається пріоритет, який присвоюється генеруються транзак-
там. Число рівнів пріоритетів необмежена, причому найнижчий
пріоритет - нульовий. Якщо поле E пусто, то що генеруються транзакти
мають нульовий пріоритет.
Транзакти мають ряд стандартних числових атрибутів. Наприклад,
СЧА з назвою PR дозволяє посилатися на пріоритет транзакта. СЧА
з назвою M1 містить так зване резидентні час транзакта,
тобто час, що минув з моменту входу транзакта в модель через блок
GENERATE. СЧА з назвою XN1 містить внутрішній номер транзакта, який є унікальним і дозволяє завжди відрізнити
транзакт один від одного. На відміну від ВЧА інших об'єктів, ВЧА
транзактов не містять посилання на ім'я або номер транзакта. Посилання
на СЧА транзакта завжди відноситься до активного транзакту, тобто тра-
нзакту, що обробляються в даний момент симулятором.
Важливими стандартними числовими атрибутами транзактов є
значення їх параметрів. Будь-який транзакт може мати необмежену
число параметрів, що містять ті чи інші числові значення. Посилання
на цей СЧА транзактов завжди відноситься до активного транзакту і
має вигляд Pj або Р $ ім'я, де j та ім'я - номер та ім'я параметра
відповідно. Така посилання можлива тільки в тому випадку,
якщо параметр з вказаним номером або вже існує, тобто в нього
занесено яке-небудь значення.
Для присвоювання параметрами початкових значень або зміни
цих значень служить блок ASSIGN (привласнювати), що має наступні
формат:
ім'я ASSIGN A, B, C
У полі A вказується номер або ім'я параметра, в який за-
носиться значення операнда B. Якщо в полі A після імені (номери) па-
раметра стоїть знак + або -, то значення операнда B додається або
вираховується з поточного вмісту параметра. У полі З може бути
вказано ім'я або номер функції-модифікатора, що діє аналогічно
функції-модифікатори в полі B блоку GENERATE.
Наприклад, блок
ASSIGN 5,0
записує в параметр з номером 5 значення 0, а блок
ASSIGN COUNT +, 1
додає 1 до поточного значення параметра з ім'ям COUNT.
Для запису поточного модельного часу в заданий параметр
транзакта служить блок MARK (зазначити), що має наступний формат:
ім'я MARK A
У полі A вказується номер або ім'я параметра транзакта, в ко-
торий заноситься поточне модельне час при вході цього транзакта в
блок MARK. Вміст цього параметра може бути пізніше вико-
вано для визначення транзитного часу 0пребиванія транзакта в
якоїсь частини моделі з допомогою СЧА з назвою MP.
Наприклад, якщо на вході ділянки моделі помістити блок
MARK MARKER,
то на виході цієї ділянки СЧА MP $ MARKER буде містити різниця
між поточним модельним часом і часом, занесеного до параметр
MARKER блоком MARK.
Якщо поле A блоку MARK пусто, то поточний час заноситься на
місце позначки часу входу транзакта в модель, яка використовується при
визначенні резидентного часу транзакта за допомогою СЧА M1.
Щоб змінити пріоритет транзакта служить блок PRIORITY (Пріо-
рітет), що має наступний формат:
ім'я PRIORITY A, B
У полі A записується новий пріоритет транзакта. У полі B мо-
жет міститися ключове слово BU, за наявності якого транзакт,
що ввійшов до блоку, поміщається у списку поточних подій після всіх
інших транзактов нової пріоритетною групи, і список поточних
подій проглядається з початку. Використання такої можливості
буде розглянуто нижче.
Для видалення транзактов з моделі є блок TERMINATE (за-
вершити), що має наступний формат:
ім'я TERMINATE A
Значення поля A вказує, на скільки одиниць зменшується з-
держімое так званого лічильника завершений при вході транзакта в
даний блок TERMINATE. Якщо поле A не визначено, то вона вважається
рівним 0, і транзакти, що проходять через такий блок, не зменшують
вмісту лічильника завершений.
Початкове значення лічильника завершений встановлюється управ-
ляющие оператором START (почати), призначеним для запуску про-
гону моделі. Поле A цього оператора містить початкове значення
лічильника завершений (див. розд. 3). Прогон моделі закінчується,
коли вміст лічильника завершений звертається до 0. Таким чином,
в моделі повинен бути хоча б один блок TERMINATE з непустих полем
A, інакше процес моделювання ніколи не завершиться.
Поточне значення лічильника завершений є програмісту че-
рез системний СЧА TG1.
Ділянка блок-схеми моделі, пов'язаний з парою блоків
GENERATE-ТERMINATE, називається сегментом. Прості моделі можуть
складатися з одного сегмента, у складних моделях може бути кілька
сегментів.
Наприклад, найпростіший сегмент моделі, що складається всього з двох
блоків GENERATE і TERMINATE і наведений на рис. 1, у сукупності
з керуючим оператором START моделює процес створення випадково-
го потоку транзактов, що надходять в модель із середнім інтервалом в
100 одиниць модельного часу, і знищення цих транзактов. На-
чільного значення лічильника завершений одно 1000. Кожен транзакт,
що проходить через блок TERMINATE, віднімає з лічильника одиницю, і
таким чином моделювання завершиться, коли тисячний за рахунком
транзакт увійде до блоку TERMINATE. При цьому точне значення таймера
в момент завершення прогону непередбачувано. Отже, у приве-
денном прикладі тривалість прогону встановлюється не за мо-
ремого часу, а за кількістю транзактов, які пройшли через мо-
дель.
GENERATE 100,40
TERMINATE 1
START 1000
Якщо необхідно управляти тривалістю прогону по мо-
ремого часу, то в моделі використовується спеціальний сегмент, на-
зване сегментом таймера.
GENERATE 100,40
TERMINATE
GENERATE 100000
TERMINATE 1
START 1
Наприклад, у моделі з двох сегментів, наведеною на рис. 2,
перший (основний) сегмент виконує ті ж функції, що і з попередньої-
щем прикладі. Зауважимо, однак, що поле A блоку TERMINATE в першу
сегменті порожньо, тобто знищувані транзакти не зменшують вміст-
го лічильника завершений. У другому сегменті блок GENERATE створить
перший транзакт в момент модельного часу, що дорівнює 100000. Але цей
транзакт виявиться і останнім у даному сегменті, тому що, увійшовши в
блок TERMINATE, він учинить 0 вміст лічильника завершений,
встановлене оператором START рівним 1. Таким чином, у цій мо-
поділи гарантується завершення прогону в певний момент модель-
ного часу, а точна кількість транзактов, які пройшли через мо-
дель, непередбачувано.
У наведених прикладах транзакти, що входять в модель через блок
GENERATE, в той же момент модельного часу знищувалися в блоці
TERMINATE. У моделях систем масового обслуговування заявки обслужить-
вають приладами (каналами) СМО протягом деякого проміжку
часу, перш ніж покинути СМО. Для моделювання такого обслужить-
вання, тобто для затримки транзактов на певний відрізок модель-
ного часу, служить блок ADVANCE (затримати), що має наступний
формат:
ім'я ADVANCE A, B
Операнди у полях A і B мають таке ж значення, що і в соот-
відповідне полях блоку GENERATE. Слід зазначити, що транзакти,
що входять до блоку ADVANCE, переводяться зі списку поточних подій в
список майбутніх подій, а після закінчення обчисленого часу затримаю-
ки повертаються назад, до списку поточних подій, і їх просування
за блок-схемою продовжується. Якщо обчислена час затримки одно
0, то транзакт в той же момент модельного часу переходить в на-
дме блок, залишаючись у списку поточних подій.
Наприклад, у сегменті, наведеному на рис. 3, транзакти, посту-
пающіе в модель з блоку GENERATE через випадкові інтервали време-
ні, що мають рівномірний розподіл на відрізку [60; 140], потрапляють
до блоку ADVANCE. Тут визначається випадкове час затримки тран-
закта, що має рівномірний розподіл на відрізку [30; 130], і
транзакт переводиться в список майбутніх подій. Після закінчення часу
затримки транзакт повертається до списку поточних подій і входить в
блок TERMINATE, де знищується. Зауважимо, що в списку майбутніх з-
битій, а значить і в блоці ADVANCE може одночасно перебувати
довільну кількість транзактов.
GENERATE 100,40
ADVANCE 80,50
TERMINATE 1
У розглянутих вище прикладах випадкові інтервали часу під-
чинять рівномірному закону розподілу ймовірностей. Для напів-
чення випадкових величин з іншими розподілами в GPSS/PC викорис-
зуются обчислювальні об'єкти: змінні і функції.
Як відомо, довільна випадкова величина пов'язана зі слу-
чайної величиною R, що має рівномірний розподіл на відрізку
[0; 1], через свою зворотну функцію розподілу. Для деяких
випадкових величин рівняння зв'язку має явне рішення, і значення
випадкової величини із заданим розподілом ймовірностей може
бути обчислено через R за формулою. Так, наприклад, значення випадок-
ної величини E з показовим (експоненціальним) розподілом з
параметром d обчислюється за формулою:
E = - (1/d) * ln (R)
Нагадаємо, що параметр d має сенс величини, зворотної математ-
зації очікування E, а, отже, 1/d - математичне очікування
(середнє значення) випадкової величини E.
Для отримання випадкової величини R з рівномірним Розподіл-
ем на відрізку [0; 1] в GPSS/PC є вбудовані генератори випадок-
них чисел. Для отримання випадкового числа шляхом звернення до такого
генератору достатньо записати системний СЧА RN з номером генерато-
ра, наприклад RN1. Правда, вбудовані генератори випадкових чисел
GPSS/PC дають числа не на відрізку [0; 1], а цілі випадкові числа,
рівномірно розподілені від 0 до 999, але їх неважко привести до
зазначеному відрізку поділом на 1000.
Найпростіше описані обчислення в GPSS/PC виконуються з
використанням арифметичних змінних. Вони можуть бути цілими і
дійсними. Цілі змінні визначаються перед початком моді-
воджується за допомогою оператора визначення VARIABLE
(змінна), що має наступний формат:
ім'я VARIABLE вираз
Тут ім'я - ім'я змінної, що використовується для посилань на неї, а
вираз - арифметичний вираз, що визначає змінну.
Арифметичне вираз являє собою комбінацію операндів,
як які можуть виступати константи, ВЧА та функції, зна-
ков арифметичних операцій і круглих дужок. Слід зауважити,
що знайомий операції множення в GPSS/PC є символ # (номер).
Результат кожної проміжної операції в цілих змінних перетворень-
зуется до цілого типу шляхом відкидання дробової частини, і, таким
чином, результатом операції поділу є ціла частина приватного.
Дійсні змінні 0определяются перед початком моделі-
вання за допомогою оператора визначення FVARIABLE, що має той же
формат, що і оператор VARIABLE. Відмінність дійсних змінних
від цілих полягає в тому, що в дійсних змінних все
проміжні операції виконуються зі збереженням дробової частини
чисел, і лише остаточний результат приводиться до цілого типу відб-
расиваніем дробової частини.
Арифметичні змінні обох типів мають єдиний СЧА з
назвою V, значенням якого є результат обчислення Аріф-
метичних вираження, що визначає змінну. Обчислення виражений-
ня проводиться при вході транзакта до блоку, що містить посилання на
СЧА V з ім'ям змінної.
Дійсні змінні можуть бути використані для отри-
ня випадкових інтервалів часу з показовим законом Розподі-
лення. Нехай в моделі з прикладу на рис. 3 розподілу часу
надходження транзактов і часу затримки повинні мати показник-
ний закон. Це може бути зроблено так, як показано на рис. 4.
TARR FVARIABLE -100 # LOG ((1 + RN1)/1000)
TSRV FVARIABLE -80 # LOG ((1 + RN1)/1000)
GENERATE V $ TARR
ADVANCE V $ TSRV
TERMINATE 1
Рис. 4
Змінна з ім'ям TARR задає вираз для обчислення ін-
інтервал надходження із середнім значенням 100, друга мінлива з
ім'ям TSRV - для обчислення часу затримки із середнім значенням
80. Блоки GENERATE і ADVANCE містять у полі A посилання на відповідність
відповідне змінні, при цьому полі B не використовується, тому що в
поле A міститься випадкова величина, що не потребує модифікації.
Більшість випадкових величин не може бути отримано через
випадкову величину R з допомогою арифметичного виразу. Крім то-
го, такий спосіб є досить трудомістким, тому що вимагає
звернення до математичних функцій, обчислення яких вимагає
десятків машинних операцій. Іншим можливим способом є
використання обчислювальних об'єктів GPSS/PC типу функція.
Функції використовуються для обчислення величин, заданих табліч-
нимі залежностями. Кожна функція визначається перед початком моді-
воджується за допомогою оператора визначення FUNCTION (функція), маю-
ного наступний формат:
ім'я FUNCTION A, B
Тут ім'я - ім'я функції, що використовується для посилань на неї; A -
стандартний числовий атрибут, що є аргументом функції; B -
тип функції і число точок таблиці, яка визначає функцію.
Існує п'ять типів функцій. Розглянемо спочатку безперервні
числові функції, тип яких кодується літерою C. Так, наприклад,
у визначенні безперервної числової функції, таблиця якої соді-
ржіт 24 точки, поле B повинно мати значення C24.
При використанні неперервної функції для генерування слу-
чайних чисел її аргументом має бути один з генераторів випадок-
них чисел RNj. Так, оператор для визначення функції показового
розподілу може мати такий вигляд:
EXP FUNCTION RN1, C24
Особливістю використання вбудованих генераторів випадкових чисел
RNj як аргументи функцій є те, що їх значення в
цьому контексті інтерпретуються як дробові числа від 0 до 0,999999.
Таблиця з координатами точок функції розташовується в рядках,
наступних безпосередньо за оператором FUNCTION. Ці рядки не
повинні мати поля нумерації. Кожна точка таблиці задається парою Xi
(значення аргументу) і Yi (значення функції), відокремлюваних один від
одного комою. Пари координат відокремлюються один від одного символом "/"
і розташовуються на довільному кількості рядків. Послідовник-
ність значень аргументу Xi повинна бути строго зростаючою.
Як уже зазначалося, для користування в полі B блоків
GENERATE і ADVANCE обчислення інтервалу надходження або часу за-
держки проводиться шляхом множення операнда A на обчислена зна-
чення функції. Звідси випливає, що функція, яка використовується для гені-
рірованія випадкових чисел з показовим розподілом, повинна
опісиват