ВСТУП
Процеси функціонування різних систем і мереж зв'язку можуть
бути представлені тією чи іншою сукупністю систем масового
обслуговування (СМО) - стохастичних, динамічних, дискретно-неперервним-
рывных математичних моделей. Дослідження характеристик таких мо-
делей може проводитися або аналітичними методами, або шляхом
імітаційного моделювання [1-6].
Імітаційна модель відображає стохастичний процес зміни
дискретних станів СМО в безперервному часу у формі моделірующе-
го алгоритму. При його реалізації на ЕОМ проводиться накопичення
статистичних даних по тих атрибутів моделі, характеристики кото-
яких є предметом досліджень. Після закінчення моделювання на-
копленная статистика обробляється, і результати моделювання по-
лучан у вигляді вибіркових розподілів досліджуваних величин або їх
вибіркових моментів. Таким чином, при моделюванні імітаційний
систем масового обслуговування мова завжди йде про статистичному
імітаційний моделюванні [5; 6].
Складні функції моделює алгоритму можуть бути реалізовані
засобами універсальних мов програмування (Паскаль, Сі), що
надає необмежені можливості в розробці, налагодженні і
використанні моделі. Однак така гнучкість купується ціною
великих зусиль, що витрачаються на розробку та програмування
дуже складних моделюючих алгоритмів, що оперують з списковим
структурами даних. Альтернативою цьому є використання спе-
ціалізірованних мов імітаційного моделювання [5-7].
Спеціалізовані мови мають засоби опису структури і
процесу функціонування моделюється системи, що значно об-
легшає і спрощує програмування імітаційних моделей, оскільки
основні функції моделює алгоритму при цьому реалізуються ав-
томатіческі. Програми імітаційних моделей на спеціалізованих
мовах моделювання близькі до описами модельованих систем на
природною мовою, що дозволяє конструювати складні імітаційно-
ные моделі користувачам, які не є професійними програм-
Місті.
Одним з найбільш ефективних і поширених мов моді-
воджується складних дискретних систем є в даний час мова
GPSS [1; 4; 7]. Він може бути з найбільшим успіхом використаний для
моделювання систем, формалiзуються, у вигляді систем масового обслу-
живания. Як об'єкти мови використовуються аналоги таких стан-
дротяні компонентів СМО, як заявки, що обслуговують прилади, черги
- 3 -
і т.п. Достатній набір подібних компонентів дозволяє конструюю-
вати складні імітаційні моделі, зберігаючи звичну термінологію
СМО.
На персональних комп'ютерах (ПК) типу 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 записуються і вводяться в ПК у наступному
форматі:
1номер 0_ 1строкі ім'я операція операнди; коментарі
Всі оператори вихідної програми повинні починатися з 1номе-
1ра 0_ 1строкі 0 - цілого позитивного числа від 1 до 9999999. Після вво-
та операторів вони розташовуються у вихідній програмі відповідно
з нумерацією рядків. Зазвичай нумерація проводиться з деяким ша-
гом, відмінним від 1, щоб мати можливість додавання операторів в
потрібне місце вихідної програми. Деякі оператори зручно вво-
дить, не включаючи їх у вихідну програму. Такі оператори вводяться
- 4 -
без номера рядка.
У цьому виданні при описі формату операторів і в примі-
рах моделей номери рядків будуть опускатися для кращої читання
тексту.
Окремі оператори можуть мати 1імя 0для посилання на ці операторами
ри в інших операторах. Якщо такі посилання відсутні, то цей еле-
мент оператора не є обов'язковим.
У полі 1операціі 0запісивается ключове слово (назва операторами
ра), що вказує конкретну функцію, виконувану даним оператором.
Це поле оператора є обов'язковим. У деяких операторів
поле операції включає в себе також 1вспомогательний операнд 0.
У полях 1операндов 0запісивается інформація, уточнююча і конк-
ретізірующая виконання функції, визначеної в полі операції. Ці
поля в залежності від типу операції містять до семи операндів,
розташованих у певній послідовності і позначаються
зазвичай першими літерами латинського алфавіту від A до G. Деякі
оператори взагалі не мають операндів, а в деяких операнди можуть
бути опущені, при цьому встановлюються їх стандартні значення (по
замовчуванням). Під час запису операндів використовується позиційний принцип:
пропуск операнда відзначається комою.
Необов'язкові 1комментаріі 0В разі їх присутності відокремлюються
від поля операндів крапкою з комою. Коментарі не можуть містити
літер російського алфавіту.
Оператори GPSS/PC записуються, починаючи з першої позиції, в
вільному форматі, тобто окремі поля розділяються довільним ко-
лічеством пробілів. Під час введення вихідної програми в інтегрованій
середовищі GPSS/PC розміщення окремих полів операторів з певним
кількістю інтервалів між ними проводиться автоматично.
Кожен оператор GPSS/PC відноситься до одного з чотирьох типів:
оператори-блоки, оператори визначення об'єктів, що керують опера-
тори і оператори-команди.
1Оператори-блоки 0форміруют логіку моделі. У GPSS/PC є
близько 50 різних видів блоків, кожен з яких виконує свою
конкретну функцію. За кожним з таких блоків стоїть відповідна
підпрограма транслятора, а операнди кожного блоку служать парамет-
рами цієї підпрограми.
1Оператори визначення про 0'1ектов 0служат для опису параметрів
деяких об'єктів GPSS/PC (про самих об'єктах йтиметься далі).
Прикладами параметрів об'єктів можуть бути кількість каналів у мно-
гоканальной системі масового обслуговування, кількість рядків і
стовпців матриці і т.п.
- 5 -
1Управляющіе оператори 0служат для управління процесом моделі-
вання (прогоном моделі). 1Оператори-команди 0позволяют керувати
роботою інтегрованого середовища GPSS/PC. Керуючі оператори та опе-
ратора-команди зазвичай не включаються в початкову програму, а вво-
дятся безпосередньо з клавіатури ПК у процесі інтерактивного
взаємодії з інтегрованою середовищем.
Після трансляції вихідної програми в пам'яті ПК створюється так
звана 1текущая модель, 0являющаяся сукупністю різного типу
1об'ектов 0, кожен з яких представляє собою деякий набір
чисел у пам'яті ПК, що описують властивості і поточний стан об'єктивним
та. Об'єкти GPSS/PC можна розділити на сім класів: динамічні,
операційні, апаратні, статистичні, обчислювальні, запам'ятовуючи-
ющіе і групуються.
Динамічні об'єкти, відповідні заявками в системах
масового обслуговування, називаються в GPSS/PC 1транзактамі 0. Вони "ство-
даються "і" знищуються "так, як це необхідно за логікою моделі в
процесі моделювання. З кожним транзактом може бути пов'язано про-
ізвольное число параметрів, що несуть в собі необхідну інформацію
про це транзакте. Крім того, транзакти можуть мати різні при-
орітети.
Операційні об'єкти GPSS/PC, звані 1блокамі 0, відповідними-
ють операторам-блокам вихідної програми. Вони, як уже говорилося,
формують логіку моделі, даючи транзактам вказівки: куди йти і що
робити далі. Модель системи на GPSS/PC можна уявити сукупність-
ністю блоків, об'єднаних відповідно до логіки роботи реаль-
ної системи в так звану 1блок-схему 0. Блок-схема моделі може
бути зображена графічно, наочно показуючи взаємодію бло-
ков в процесі моделювання.
Апаратні об'єкти GPSS/PC - це абстрактні елементи, на ко-
торие може бути розчленоване (декомпозіровано) обладнання реальної
системи. До них відносяться 1одноканальние 0і 1многоканальние пристрої
і 1логіческіе перемикачі. 0Многоканальное пристрій іноді називаються
вають 1памятью 0.
Одноканальні і багатоканальні пристрої відповідають обслу-
жива приладів в СМО. Одноканальне пристрій 1, 0которое для
стислості надалі будемо називати просто пристроєм, може обслужити-
вати одночасно тільки один транзакт. Багатоканальне пристрій
(СКУ) може обслуговувати одночасно кілька транзактов. Логи-
орієн перемикачі (ЛП) використовуються для моделювання двійкових
станів логічного чи фізичного характеру. ЛП може зна-
диться в двох станах: включено і вимкнене. Його стан може
- 6 -
змінюватися в процесі моделювання, а також опитуватися для при-
нятія певних рішень.
Статистичні об'єкти GPSS/PC служать для збору і обробки
статистичних даних про функціонування моделі. До них відносяться
1очереді 0і 1табліци 0.
Кожна чергу забезпечує збір і обробку даних про транзак-
тах, затриманих в будь-якій точці моделі, наприклад перед одн-
нальним пристроєм. Таблиці використовуються для отримання вибіркових
розподілів деяких випадкових величин, наприклад часу преба-
вання транзакта в моделі.
До обчислювальним об'єктів GPSS/PC відносяться 1переменние 0 (Аріф-
метичних і Булевського) і 1функціі 0. Вони використовуються для обчислення
деяких величин, заданих арифметичними або логічними виражений-
нями або табличними залежностями.
Запам'ятовувальні об'єкти GPSS/PC забезпечують збереження в пам'яті ПК
окремих величин, що використовуються в моделі, а також масивів таких
величин. До них відносяться так звані 1сохраняемие величини 0і 1мат-
1ріци зберігаються величин.
До об'єкти групують класу відносяться 1спіскі користувача
і 1группи. 0Спіскі користувача використовуються для організації черг
з дисциплінами, відмінними від дисципліни "раніше прийшов - раніше
обслужений ". Групи в даному виданні розглядатися не будуть.
Кожному об'єкту того чи іншого класу відповідають 1чісловие
1атрібути 0, що описують його стан в даний момент модельного вре-
мени. Крім того, є ряд так званих 1сістемних атрибутів,
відносяться не до окремих об'єктах, а до моделі в цілому. Значення
атрибутів всіх об'єктів моделі після закінчення моделювання виводяться
в стандартний звіт GPSS/PC. Більша частина атрибутів доступна прог-
раммісту і складає так звані 1стандартние числові атрибути
1 (ВЧА), 0которие можуть використовуватися в якості операндів операторів
вихідної програми. Всі ВЧА в GPSS/PC є цілими числами.
Кожен об'єкт GPSS/PC має 1імя 0і 1номер 0. Імена об'єктів даються
в різних операторах вихідної програми, а відповідні їм но-
міра транслятор присвоює автоматично. Назва об'єкта представляє
собою що починається з букви послідовність літер латинського Алфа-
віта, цифр та символу "підкреслення". При необхідності імені любо-
го об'єкта, крім імені блоку, можна поставити у відповідність будь-який
номер за допомогою оператора опису EQU, що має наступний формат:
1імя 0 EQU 1номер
Блокам присвоюються їх порядкові номери у вихідній програмі (не
плутати з номерами рядків!).
- 7 -
Для 1ссилкі 0на якої-небудь стандартний числовий атрибут некот-
якого об'єкта відповідний операнд оператора вихідної програми
записується одним із таких способів:
Ш1
1СЧА 0 $ 1імя 0;
Ш1.5
1СЧАj 0,
де 1СЧА 0 - системне позначення (назва) конкретного стандартного
числового атрибута даного об'єкта; 1імя 0 - ім'я об'єкта; 1j 0 - номер
об'єкта; $ - символ-розділювач.
1Прогон 0текущей моделі, тобто власне моделювання, виконуємо-
ється за допомогою спеціальної керуючої програми, яку називають
симулятором (від англійського SIMULATE - моделювати, імітувати).
Робота GPSS-моделі під керуванням симулятора полягає в перемі-
щении транзактов від одних блоків до інших, аналогічно тому, як в
моделюється СМО переміщуються заявки, що відповідають транзактам.
У початковий момент часу в GPSS-моделі немає жодного тран-
закта. У процесі моделювання симулятор генерує транзакти в
певні моменти часу відповідно до тих логічними піт-
ребностямі, які виникають в моделюється системі. Подібним же
чином транзакти залишають модель в певні моменти часу в
залежно від специфіки моделюється системи. У загальному випадку в мо-
поділи одночасно існує велике число транзактов, проте в
кожний момент часу симулятор здійснює просування тільки ка-
кого-небудь одного транзакта.
Якщо транзакт почав свій рух, він переміщується від блоку до
блоку по шляху, написаним блок-схемою. У той момент, коли тран-
закт входить в деякий блок, на виконання викликається підпрограма
симулятора, що відповідає типу цього блоку, а після її виконан-
ня, при якому реалізується функція даного блоку, транзакт "намагався-
ється "увійти в наступний блок. Таке просування транзакта продовжуючи-
ся до тих пір, поки не відбудеться одне з наступних можливих з-
битій:
1) транзакт входить в блок, функцією якого є видалення
транзакта з моделі;
2) транзакт входить в блок, функцією якого є затримка
транзакта на якийсь певний час в моделі;
3) транзакт "намагається" увійти в наступний блок, проте блок
"відмовляється" прийняти його. У цьому випадку транзакт залишається в тому
блоці, де був, і пізніше буде повторювати свою спробу увійти
в наступний блок. Коли умови в моделі зміняться, така спроба
може виявитися успішною, і транзакт зможе продовжити своє переміщення
щення по блок-схемі.
- 8 -
Якщо виникло одне з описаних вище умов, обробка данно-
го транзакта припиняється, і починається переміщення іншого тран-
закта. Таким чином, виконання моделювання симулятором продол-
жается постійно.
Проходячи через блоки моделі, кожен транзакт вносить вклад в со-
держімое 1счетчіков блоків 0. Значення цих лічильників доступні прог-
раммісту через ВЧА блоків: W - поточний зміст блоку і N - загальне
кількість входів до блоку.
Кожне просування транзакта в моделі є подією, кото-
рої має відбутися в певний момент модельного часу. Для
того, щоб підтримувати правильну тимчасову послідовність
подій, симулятор має 1таймер 0модельного часу, який автомати-
тічеськи коректується відповідно до логіки, запропонованої мо-
делью.
Таймер GPSS/PC має такі особливості:
1) реєструються тільки цілі значення (всі тимчасові інтер-
вали в моделі изображаются цілими числами);
2) одиниця модельного часу визначається розробником моді-
Чи, який задає всі тимчасові інтервали в одних і тих же, виб-
ранних їм одиницях;
3) симулятор не аналізує стан моделі в кожен наступних
щий момент модельного часу (віддалений від поточного на одиницю мо-
ділового часу), а просуває таймер до моменту часу, коли
відбувається найближчим така подія.
Значення таймера доступні програмісту через системні СЧА C1
(1относітельное час 0) і AC1 (1абсолютное час 0).
Центральної завданням, що виконується симулятором, є визна-
ня того, який транзакт треба вибрати такий для просування в
моделі, коли його попередник припинив своє просування. З цією
метою симулятор розглядає кожен транзакт як елемент деякий-
го списку. У відносно простих моделях використовуються лише два
основних списку: 1спісок поточних подій 0і 1спісок майбутніх подій 0.
Список поточних подій включає в себе ті транзакти, плануючи-
мій час просування яких дорівнює або менше поточного модельного
часу (до останніх відносяться транзакти, рух яких було
заблоковано раніше). Він організовується в порядку спадання пріоритетів
тов транзактов, а в межах кожного рівня пріоритету - в порядку
надходження транзактов.
Список майбутніх подій включає в себе транзакти, плановане
час просування яких більше поточного часу, тобто події,
пов'язані з просуванням цих транзактов, повинні відбутися в май-
- 9 -
щем. Цей список організовується в порядку зростання планованого
часу просування транзактов.
Симулятор GPSS/PC поміщає транзакти залежно від умов
в моделі в той чи інший список і переносить транзакти зі списку в
список, переглядає списки, вибираючи наступний транзакт для обра-
лення, коректує таймер модельного часу після обробки всіх
транзактов у списку поточних подій.
2. ОСНОВНІ БЛОКИ GPSS/PC І ПОВ'ЯЗАНІ З НИМИ ОБ'ЄКТИ
2.1. Блоки, пов'язані з транзактамі
З транзактамі пов'язані блоки створення, знищення, затримки
транзактов, зміни їх атрибутів і створення копій транзактов.
Для створення транзактов, що входять в модель, служить блок
GENERATE (генерувати), що має наступний формат:
1імя 0 GENERATE A, B, C, D, E
У полі A задається середнє значення інтервалу часу між мо-
ментами надходження в модель двох послідовних транзактов. Якщо
цей інтервал постійний, то поле B не використовується. Якщо ж інтер-
вал надходження є випадковою величиною, то в полі B вказуючи-
ється модифікатор середнього значення, який може бути заданий у вигляді
модифікатора-інтервалу або модифікатора-функції.
Модифікатор-інтервал використовується, коли інтервал надходження
транзактов є випадковою величиною з рівномірним законом роз-
ределенія ймовірностей. У цьому випадку в поле B може бути заданий лю-
бій СЧА, окрім посилання на функцію, а діапазон зміни інтервалу
надходження має межі AB, A + B.
Наприклад, блок
GENERATE 100,40
створює транзакти через випадкові проміжки часу, рівномірно
розподілені на відрізку [60; 140].
Модифікатор-функція використовується, якщо закон розподілу ін-
інтервал надходження відмінний від рівномірного. У цьому випадку в поле B
повинна бути записана посилання на функцію (її ВЧА), що описує цей
закон, і випадковий інтервал надходження визначається, як ціла
частину твору поля A (середнього значення) на обчислена значен-
ня функції.
У полі C задається час вступу до модель першого транзак-
та. Якщо це поле порожнє або дорівнює 0, то момент появи перших
транзакта визначається операндами A і B.
- 10 -
Поле D задає загальне число транзактов, яка має бути ство-
дано блоком GENERATE. Якщо це поле порожнім, то блок генерує неоген-
раніченное число транзактов до завершення моделювання.
У полі E задається 1пріорітет 0, що присвоюється генеруються тран-
зактам. Число рівнів пріоритетів необмежена, причому найнижчий
пріоритет - нульовий. Якщо поле E пусто, то що генеруються транзакти
імeют нульовий пріоритет.
Транзакти мають ряд стандартних числових атрибутів. Наприклад,
СЧА з назвою PR дозволяє посилатися на пріоритет транзакта. СЧА
з назвою M1 містить так зване 1резідентное час 0транзакта,
тобто час, що минув з моменту входу транзакта в модель через блок
GENERATE. ВЧА з назвою XN1 містить внутрішній 1номер транзакта 0,
який є унікальним і дозволяє завжди відрізнити один тран-
закт від іншого. На відміну від ВЧА інших об'єктів, ВЧА транзактов
не містять посилання на ім'я або номер транзакта. Посилання на ВЧА тран-
закта завжди відноситься до активного транзакту, тобто транзакту, обра-
бативаемому в даний момент симулятором.
Важливими стандартними числовими атрибутами транзактов є
значення їх параметрів. Будь-який транзакт може мати необмежену
число параметрів, що містять ті чи інші числові значення. Посилання
на цей СЧА транзактов завжди відноситься до активного транзакту і
має вигляд P 1j 0ілі Р $ 1імя 0, де 1j 0і 1імя 0 - номер та ім'я параметра соот-
льної. Така посилання можлива тільки в тому випадку, якщо пара-
метр з вказаним номером або вже існує, тобто в нього занесе-
але будь-яке значення.
Для присвоювання параметрами початкових значень або зміни
цих значень служить блок ASSIGN (привласнювати), що має наступні
формат:
1імя 0 ASSIGN A, B, C
У полі A вказується номер або ім'я параметра, в який за-
носиться значення операнда B. Якщо в полі A після імені (номери) па-
раметра стоїть знак + або -, то значення операнда B додається або
вираховується з поточного вмісту параметра. У полі З може бути
вказано ім'я або номер функції-модифікатора, що діє аналогічно
функції-модифікатори в полі B блоку GENERATE.
Наприклад, блок
ASSIGN 5,0
записує в параметр з номером 5 значення 0, а блок
ASSIGN COUNT +, 1
додає 1 до поточного значення параметра з ім'ям COUNT.
- 11 -
.
Для запису поточного модельного часу в заданий параметр
транзакта служить блок MARK (зазначити), що має наступний формат:
1імя 0 MARK A
У полі A вказується номер або ім'я параметра транзакта, в ко-
торий заноситься поточне модельне час при вході цього транзакта в
блок MARK. Вміст цього параметра може бути пізніше вико-
вано для визначення 1транзітного часу 0пребиванія транзакта в ка-
кой-то частини моделі з допомогою ВЧА з назвою MP.
Наприклад, якщо на вході ділянки моделі помістити блок
MARK MARKER,
то на виході цієї ділянки СЧА MP $ MARKER буде містити різниця
між поточним модельним часом і часом, занесеного до параметр
MARKER блоком MARK.
Якщо поле A блоку MARK пусто, то поточний час заноситься на
місце позначки часу входу транзакта в модель, яка використовується при
визначенні резидентного часу транзакта за допомогою СЧА M1.
Щоб змінити пріоритет транзакта служить блок PRIORITY (Пріо-
рітет), що має наступний формат:
1імя 0 PRIORITY A, B
У полі A записується новий пріоритет транзакта. У полі B мо-
жет міститися ключове слово BU, за наявності якого транзакт,
що ввійшов до блоку, поміщається у списку поточних подій після всіх
інших транзактов нової пріоритетною групи, і список поточних
подій проглядається з початку. Використання такої можливості
буде розглянуто нижче.
Для видалення транзактов з моделі є блок TERMINATE (за-
вершити), що має наступний формат:
1імя 0 TERMINATE A
Значення поля A вказує, на скільки одиниць зменшується з-
держімое так званого лічильника завершений при вході транзакта в
даний блок TERMINATE. Якщо поле A не визначено, то вона вважається
рівним 0, і транзакти, що проходять через такий блок, не зменшують
вмісту лічильника завершений.
Початкове значення лічильника завершений встановлюється управ-
ляющие оператором START (почати), призначеним для запуску про-
гону моделі. Поле A цього оператора містить початкове значення
лічильника завершений (див. розд. 3). Прогон моделі закінчується,
коли вміст лічильника завершений звертається до 0. Таким чином,
в моделі повинен бути хоча б один блок TERMINATE з непустих полем
A, інакше процес моделювання ніколи не завершиться.
- 12 -
.
Поточне значення лічильника завершений є програмісту че-
рез системний СЧА TG1.
Ділянка блок-схеми моделі, пов'язаний з парою блоків
GENERATE-ТERMINATE, називається сегментом. Прості моделі можуть
складатися з одного сегмента, у складних моделях може бути кілька
сегментів.
Наприклад, найпростіший сегмент моделі, що складається всього з двох
блоків GENERATE і TERMINATE і наведений на рис. 1, у сукупності
з керуючим оператором START моделює процес створення випадково-
го потоку транзактов, що надходять в модель із середнім інтервалом в
100 одиниць модельного часу, і знищення цих транзактов. На-
чільного значення лічильника завершений одно 1000. Кожен транзакт,
що проходить через блок TERMINATE, віднімає з лічильника одиницю, і
таким чином моделювання завершиться, коли тисячний за рахунком
транзакт увійде до блоку TERMINATE. При цьому точне значення таймера
в момент завершення прогону непередбачувано. Отже, у приве-
денном прикладі тривалість прогону встановлюється не за мо-
ремого часу, а за кількістю транзактов, які пройшли через мо-
дель.
Ш1
GENERATE 100,40
TERMINATE 1
START 1000
Ш1.5
Рис. 1
Якщо необхідно управляти тривалістю прогону по мо-
ремого часу, то в моделі використовується спеціальний сегмент, на-
зване сегментом таймера.
Ш1
GENERATE 100,40
TERMINATE
GENERATE 100000
TERMINATE 1
START 1
Ш1.5
Рис. 2
Наприклад, у моделі з двох сегментів, наведеною на рис. 2,
перший (основний) сегмент виконує ті ж функції, що і з попередньої-
щем прикладі. Зауважимо, однак, що поле A блоку TERMINATE в першу
сегменті порожньо, тобто знищувані транзакти не зменшують вміст-
го лічильника завершений. У другому сегменті блок GENERATE створить
- 13 -
перший транзакт в момент модельного часу, що дорівнює 100000. Але цей
транзакт виявиться і останнім у даному сегменті, тому що, увійшовши в
блок TERMINATE, він учинить 0 вміст лічильника завершений,
встановлене оператором START рівним 1. Таким чином, у цій мо-
поділи гарантується завершення прогону в певний момент модель-
ного часу, а точна кількість транзактов, які пройшли через мо-
дель, непередбачувано.
У наведених прикладах транзакти, що входять в модель через блок
GENERATE, в той же момент модельного часу знищувалися в блоці
TERMINATE. У моделях систем масового обслуговування заявки обслужить-
вають приладами (каналами) СМО протягом деякого проміжку
часу, перш ніж покинути СМО. Для моделювання такого обслужить-
вання, тобто для затримки транзактов на певний відрізок модель-
ного часу, служить блок ADVANCE (затримати), що має наступний
формат:
1імя 0 ADVANCE A, B
Операнди у полях A і B мають таке ж значення, що і в соот-
відповідне полях блоку GENERATE. Слід зазначити, що транзакти,
що входять до блоку ADVANCE, переводяться зі списку поточних подій в
список майбутніх подій, а після закінчення обчисленого часу затримаю-
ки повертаються назад, до списку поточних подій, і їх просування
за блок-схемою продовжується. Якщо обчислена час затримки одно
0, то транзакт в той же момент модельного часу переходить в на-
дме блок, залишаючись у списку поточних подій.
Наприклад, у сегменті, наведеному на рис. 3, транзакти, посту-
пающіе в модель з блоку GENERATE через випадкові інтервали време-
ні, що мають рівномірний розподіл на відрізку [60; 140], потрапляють
до блоку ADVANCE. Тут визначається випадкове час затримки тран-
закта, що має рівномірний розподіл на відрізку [30; 130], і
транзакт переводиться в список майбутніх подій. Після закінчення часу
затримки транзакт повертається до списку поточних подій і входить в
блок TERMINATE, де знищується. Зауважимо, що в списку майбутніх з-
битій, а значить і в блоці ADVANCE може одночасно перебувати
довільну кількість транзактов.
Ш1
GENERATE 100,40
ADVANCE 80,50
TERMINATE 1
Ш1.5
Рис. 3
- 14 -
.
У розглянутих вище прикладах випадкові інтервали часу під-
чинять рівномірному закону розподілу ймовірностей. Для напів-
чення випадкових величин з іншими розподілами в 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 виконуються з
використанням 1аріфметіческіх змінних 0. Вони можуть бути цілими і
дійсними. 1Целие змінні 0определяются перед початком моді-
воджується за допомогою оператора визначення VARIABLE (змінна),
має наступний формат:
1імя 0 VARIABLE 1вираженіе
Тут 1імя 0 - ім'я змінної, що використовується для посилань на неї, а 1вира-
1женіе 0 - арифметичний вираз, що визначає змінну. Аріфме-
тичні вираз являє собою комбінацію операндів, в ка-
честве яких можуть виступати константи, ВЧА і функції, знаків
арифметичних операцій і круглих дужок. Слід зауважити, що
знаком операції множення в GPSS/PC є символ # (номер). Ре-
зультат кожної проміжної операції в цілих змінних перетворення
ється до цілого типу шляхом відкидання дробової частини, і, таким обра-
зом, результатом операції поділу є ціла частина приватного.
1Действітельние змінні 0определяются перед початком моделі-
вання за допомогою оператора визначення FVARIABLE, що має той же
- 15 -
формат, що і оператор VARIABLE. Відмінність дійсних змінних
від цілих полягає в тому, що в дійсних змінних все
проміжні операції виконуються зі збереженням дробової частини
чисел, і лише остаточний результат приводиться до цілого типу відб-
расиваніем дробової частини.
Арифметичні змінні обох типів мають єдиний СЧА з
назвою V, значенням якого є результат обчислення Аріф-
метичних вираження, що визначає змінну. Обчислення виражений-
ня проводиться при вході транзакта до блоку, що містить посилання на
СЧА V з ім'ям змінної.
Дійсні змінні можуть бути використані для отри-
ня випадкових інтервалів часу з показовим законом Розподі-
лення. Нехай в моделі з прикладу на рис. 3 розподілу часу
надходження транзактов і часу затримки повинні мати показник-
ний закон. Це може бути зроблено так, як показано на рис. 4.
Ш1
TARR FVARIABLE -100 # LOG ((1 + RN1)/1000)
TSRV FVARIABLE -80 # LOG ((1 + RN1)/1000)
GENERATE V $ TARR
ADVANCE V $ TSRV
TERMINATE 1
Ш1.5
Рис. 4
Змінна з ім'ям TARR задає вираз для обчислення ін-
інтервал надходження із середнім значенням 100, друга мінлива з
ім'ям TSRV - для обчислення часу затримки із середнім значенням
80. Блоки GENERATE і ADVANCE містять у полі A посилання на відповідність
відповідне змінні, при цьому полі B не використовується, Тому що в
поле A міститься випадкова величина, що не потребує модифікації.
Більшість випадкових величин не може бути отримано через
випадкову величину R з допомогою арифметичного виразу. Крім то-
го, такий спосіб є досить трудомістким, тому що вимагає
звернення до математичних функцій, обчислення яких вимагає
десятків машинних операцій. Іншим можливим способом є
використання обчислювальних об'єктів GPSS/PC типу 1функція 0.
Функції використовуються для обчислення величин, заданих табліч-
нимі залежностями. Кожна функція визначається перед початком моді-
воджується за допомогою оператора визначення FUNCTION (функція), маю-
ного наступний формат:
1імя 0 FUNCTION A, B
Тут 1імя 0 - ім'я функції, що використовується для посилань на неї; A - стан-
- 16 -
дротяні числовий атрибут, що є аргументом функції; B - тип
функції і число точок таблиці, яка визначає функцію.
Існує п'ять типів функцій. Розглянемо спочатку 1непреривние
1чісловие функції, 0тіп яких кодується літерою C. Так, наприклад, в
визначенні безперервної числової функції, таблиця якої містить
24 точки, поле B повинно мати значення C24.
При використанні неперервної функції для генерування слу-
чайних чисел її аргументом має бути один з генераторів випадок-
них чисел RNj. Так, оператор для визначення функції показового
розподілу може мати такий вигляд:
EXP FUNCTION RN1, C24
Особливістю використання вбудованих генераторів випадкових чисел
RNj як аргументи функцій є те, що їх значення в
цьому контексті інтерпретуються як дробові числа від 0 до 0,999999.
Таблиця з координатами точок функції розташовується в рядках,
наступних безпосередньо за оператором FUNCTION. Ці рядки не
повинні мати поля нумерації. Кожна точка таблиці задається парою Xi
(значення аргументу) і Yi (значення функції), відокремлюваних один від
одного комою. Пари координат відокремлюються один від одного символом "/"
і розташовуються на довільному кількості рядків. Послідовник-
ність значень аргументу Xi повинна бути строго зростаючою.
Як уже зазначалося, для користування в полі B блоків
GENERATE і ADVANCE обчислення інтервалу надходження або часу за-
держки проводиться шляхом множення операнда A на обчислена зна-
чення функції. Звідси випливає, що функція, яка використовується для гені-
рірованія випадкових чисел з показовим розподілом, повинна
описувати залежність y =- ln (x), представлену в табличному вигляді.
Оператор FUNCTION з такою таблицею, що містить 24 точки для забез-
чення достатньої точності апроксимації, має такий вигляд:
Ш1
EXP FUNCTION RN1, C24
0,0/.1, .104/.2, .222/.3, .355/.4, .509/.5, .69/.6, .915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
Ш1.5
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
Обчислення неперервної функції здійснюється в такий спосіб.
Спочатку визначається інтервал (Xi; Xi +1), на якому знаходиться теку-
загальне значення ВЧА-аргументу (у нашому примі