GPSS
GPSS (англ. General Purpose Simulation System - загальноцільова система моделювання) - мова програмування, що використовується для імітаційного моделювання різних систем, в основному систем масового обслуговування.
Однією з перших мов моделювання, була мова GPSS. Мова GPSS була розроблена працівником фірми IBM Джеффрі Гордоном у 1961 році. Гордоном були створені 5 перших версій мови: GPSS (1961), GPSS II (1963), GPSS III (1965), GPSS / 360 (1967) і GPSS V (1971). Відомий раніше тільки фахівцям, в нашій країні цей програмний пакет завоював популярність після видання в СРСР в 1980 році монографії Т Дж. Шрайбера. У ній була розглянута одна з ранніх версій мови - GPSS / 360, а також основні особливості могутнішої версії - GPSS V, підтримуваною компанією IBM, у нас вона була більш відома як пакет моделювання дискретних систем (ПМДС). Цей пакет працював в середовищі підсистеми діалогової обробки системи віртуальних машин єдиної серії (ПДО СВМ ЄС) ЕОМ. Після закінчення підтримки GPSS V компанією IBM наступною версією стала система GPSS / H компанії Wolverine Software розроблена в 1978 році під керівництвом Дж. Хенріксена. У 1984 році з'явилася перша версія GPSS для персональних комп'ютерів з операційною системою DOS - GPSS / PC. Вона була розроблена компанією Minuteman Software під керівництвом С. Кокса. Кінець XX століття ознаменувався розробкою компанією Minuteman Software програмного продукту GPSS World, що побачила світ в 1993 році. За порівняно невеликий період часу було випущено кілька його версій, причому в кожної наступної можливості системи моделювання нарощувалися. Крім цих основних версій існує також Micro-GPSS, розроблена Інгольф Сталл в Швеції, - це спрощена версія, призначена для вивчення мови GPSS і WebGPSS, також призначена для вивчення роботи системи та розробки найпростіших імітаційних моделей в мережі інтернет.
Мова GPSS – система моделювання використовується для побудови подійних дискретних імітаційних моделей і проведення експериментів з ними.
Мова GPSS – мова моделювання дискретних систем декларативного типу, орієнтована на процеси і побудована за принципами об’єктної мови. Основними елементами цієї мови є транзакти і блоки, які відображають відповідно динамічні і статистичні об’єкти системи.
Моделі на gpss компактні, часто складаються з меншої кількості операторів, ніж такі ж моделі, написані на процедурних мовах(таких як, Паскаль чи Сі). Це пояснюється тим, що в GPSS вбудовано максимально можливе число логічних програм, необхідних для моделюючих систем. У нього також входять спеціальні засоби для опису динамічної поведінки систем, мінливих в часі, причому зміна станів відбувається в дискретні моменти часу. GPSS дуже зручний при програмуванні, оскільки інтерпретатор GPSS (інтерпретатором називається моделююча частина системи GPSS) багато функцій виконує автоматично.
Наприклад, GPSS без спеціальної на те вказівки користувача збирає статистичні дані, які описують поведінку моделі, автоматично друкує підсумкову статистику по завершенні моделювання. Користувачеві немає необхідності включати в модель оператори для збору і накопичення цих даних або задавати формат, який вказує, в якому вигляді повинні бути роздруковані підсумкові дані. У мову включені і багато інших корисних елементів. Наприклад, GPSS обслуговує таймер модельного часу, планує події, які повинні відбутися пізніше протягом часу моделювання, викликає їх своєчасну появу і керує послідовністю надходження.
Опис системи на GPSS представляє собою послідовність блоків, кожен з яких відповідає деякому оператору (підпрограмі). Кожен блок має певну кількість реквізитів, званих полями, які відокремлюються один від одного комами (це аналоги параметрів процедур та функцій в мовах програмування), але положення полів суворо фіксовано, і відсутність деякого поля відзначається коми. Блоки записуються в наступному форматі:
Номер_рядка мітка ім’я_операції операнди ;коментарі
Рядки нумеруються від 1 до 9999999. Оператори розташовуються в програмі відповідно до нумерації рядків. Деякі оператори не вимагається включати до вихідної програми. Такі оператори вводяться без номера рядка. Окремі оператори можуть мати позначку для посилання на ці оператори в інших операторах. Між номером рядка і міткою ставиться один пропуск. Відсутність мітки також позначається пропуском.
Імя_операції - це ключове слово, що вказує на конкретну функцію, виконувану даним оператором.
Операнди - уточнюють і конкретизують виконання функції, визначеної в полі операції. Ці поля залежно від типу операції містять до дев'яти операндів, розташованих у певній послідовності і позначаються літерами латинського алфавіту від А до I. Деякі операції взагалі не мають операндів, а в деяких операнди можуть бути пропущені.
Конфігурація блок-схеми GPSS-моделі відображає напрями, за якими відбувається рух переміщуваних елементів. Кожен такий елемент називається транзактом. Транзакти є динамічними (тобто рухомими) елементами GPSS-моделі.
Приклад Інтервали приходу клієнтів в перукарня з одним кріслом розподілені рівномірно на інтервалі 18±6хв. Час стрижки також розподілений рівномірно на інтервалі 16±4хв. Клієнти приходять в перукарню, стрижуться в порядку черги: «першим прийшов – першим постригся». Необхідно побудувати GPSS-модель перукарні, яка повинна забезпечити збір статистичних даних про чергу. Промоделюйте роботу перукарні протязі 8 годин. Побудова моделі Порядок блоків в моделі відповідає порядку фаз, в яких клієнт опиняється при русі в реальній системі: 1) клієнт приходить;
2) якщо необхідно, чекає своєї черги;
3) сідає в крісло перукаря;
4) перукар обслуговує клієнта;
5) клієнт уходить з перукарні.
Де
GENERATE - генерація транзактів;
QUEUE BARBERQ - оператор організації черги, довжина черги збільшується на одиницю;
SEIZE BERBER - заняття пристрою BERBER; якщо пристрій зайнятий, то транзакт затримується в черзі доки пристрій не буде звільнений.
DEPART BERBERQ - оператор організації черги, довжина черги зменшується на одиницю;
ADVANCE A, B - затримка транзакта на час, визначений вмістом полів A і B;
RELEASE BARBER - звільнення пристрою BARBER від обслугованих транзактів.
TERMINATE А - видалення транзакта із системи, при цьому вміст підсумкового лічильника зменшується на А одиниць, моделювання закінчується, якщо вміст лічильника стане рівним або менше нуля.
START А - внесення значення А в підсумковий лічильник.