Методичні вказівки до лабораторних робіт з курсу "Моделювання систем", страница 3

1.2.1 Створення та видалення потоку транзактів у моделі

Потік транзактів створюється та вводиться до моделі блоком

GENERATE   A,B,C,D,E

де A, B, C, D, E – операнди блоку. Блоком у мові GPSS є оператор, або команда мови. Кожен блок має вхідні параметри (операнди), що дозволяють налаштувати функціонування блоку відповідно до вимог задачі.

Операнди A і B задають розподіл інтервалів надходження транзактів до моделі. Для завдання рівномірного розподілу операнди A і B задаються ненегативними цілими числами й призначають відповідно середнє значення та половину розмаху інтервалу надходження транзактів. Операнд A має бути більше B. Для задання інших видів розподілів в GPSS використовуються функції.

Операнд C визначає момент модельного часу, в який з блоку GENERATE у моделі повинен з'явитися перший транзакт. Крім першого, всі наступні транзакти заходять до моделі відповідно до розподілу інтервалу часу, заданого операндами A і B. За замовчуванням С = 0.

Операнд D – це максимальна кількість транзактів, що мають увійти до моделі через даний блок GENERATE. За замовчуванням кількість транзактів не обмежена.

Операнд E встановлює рівень пріоритету кожного з генерованих транзактів. За замовчуванням транзактам надається найменший рівень пріоритету, який дорівнює нулю. Усього в GPSS існує 128 різних рівнів пріоритетів: 0, 1, ..., 127. Чим більше число, тим більший пріоритет.

Наприклад, блок

GENERATE   5,3,10,5

забезпечує надходження до моделі потоку транзактів через такі інтервали часу, які є випадковими цілими числами з множини {2, 3, 4, 5, 6, 7, 8}. Час прибуття першого транзакту – 10. До моделі ввійдуть лише перші п'ять транзактів.

Транзакти видаляються з моделі потрапляючи в блок

TERMINATE   А

Вилучення транзакту з моделі супроводжується видаленням з пам'яті ЕОМ всіх записів, які описували стани транзакта при його переміщенні в моделі. Блок TERMINATE має один операнд, у якому можна вказати цілу константу. Транзакт, який надійшов до блоку TERMINATE, видаляється з моделі, а з лічильника завершення подій віднімається число, вказане в операнді A. Якщо у ролі операнда A блоку TERMINATE виступає 0, або операнд не вказаний взагалі, то значення лічильника не зменшується, але транзакт, що надійшов до блоку TERMINATE видаляється з моделі у будь-якому випадку. В моделі може бути декілька блоків TERMINATE, які можуть впливати на той самий лічильник.