- •1.2 Таймер модельного часу
- •1.3 Типи операторiв
- •1.4 Внесення транзактiв до моделi.
- •1.6 Елементи, що вiдображають одноканальнi обслуговуючi пристрої
- •1.8 Збiр статистики при чеканні
- •2 Порядок виконання роботи
- •1 Короткі теоретичні відомості
- •2 Порядок виконання роботи
- •1 Короткі теоретичні відомості
- •2 Приклад моделювання одноканальної смо з чергою
- •3 Порядок виконання роботи
- •1 Короткі теоретичні відомості
- •2 Порядок виконання роботи
- •1 Короткі теоретичні відомості
- •2 Порядок виконання роботи
- •1 Короткі теоретичні відомості
- •2 Порядок виконання роботи
- •1 Короткі теоретичні відомості
- •2 Порядок виконання роботи
- •1 Короткі теоретичні відомості
- •2 Порядок виконання роботи
- •1 Короткі теоретичні відомості
- •2 Порядок виконання роботи
1.4 Внесення транзактiв до моделi.
Блок GЕNЕRАТЕ - це блок, через який транзакги вкодять до моделi. Не iснує обмежень на число рiзних блокiв GЕNЕRАТЕ в одій моделi.
Iнтервал часу між послiдовними появами транзактiв з блока GЕNЕRАТЕ називають iнтервалом надходження. Коли транзакт входить у модель через блок GЕNЕRАТЕ, iнтерпретатор планує час надходження наступного транзакту через розиграш випадкового числа вiдповiдно до розподiлу інтервалiв надходження і з подальшим додаванням розiграного значення до поточного значення таймера. При досягненнi цього значення часу наступний транзакт вводиться до моделі через блок GЕNЕRАТЕ i тд.
Розробник повинен задати функцію випадкового розподiлу iнтервалiв надходження транзактiв у блоцi GЕNЕRАТЕ.
Усi можливi види випадкових розподiлiв iнтервалiв надходження в GPSS подiляють на рiвномiрний розподiл та iншi види розподiлiв.
Формат блока:
GЕNЕRАТЕ [A],[B],[C],[D],[E]
Значения операндiв:
Приклад 1.1
1. Задання рiвномiрного закону розподілу:
GЕNЕRАТЕ 6,4
Операнди: А =6, В = 4. Iнтервал часу надходження є випадковим числом iз середнім значенням 6 i полем допуску 8, тобто вiн може набувати тiльки одне з дев’яти рiзних значень: 2,3,4,5,6,7,8,9,10.
2. Задання детермiнованого значення iнтервалiв надходження:
GЕNЕRАТЕ 10
Операнди: А = 10, В =0 (за замовчуванням). Транзакти входять в модель кожнi 10 одиниць модельного часу.
3. Генерування єдиного транзакту:
GЕNЕRАТЕ ,,,1
Операнди: А= В= С = 0 (за замовчуванням), D = 1. У нульовий момент часу в модель входить один транзакт.
1.5 Видалення транзактiв з моделi.
Транзакти видаляються з моделi попадаючи у блок ТERMINATE. У цей момент звільняється пам’ять, видiлена пiд транзакт. Цi блоки завжди дозволяють вийти всiм транзактам, якi намагаються це зробити. У моделi може бути будь-яке число блокiв ТЕRMINATE.
Формат блока:
ТЕRMINATE [A]
Операнд А є величиною зменшення спецiального лiчильника, який називається лiчильником завершення. Цей операнд задає величину, яка вiднiмається вiд лiчильника кожний раз, коли транзакт входить в блок ТЕRMINATE . За замовчуванням А = 0. Вхiд транзакту в блок ТЕRMINATE з нульовим вначенням операнда А не викликає зменшення лiчильника завершення.
Лiчильник завершення — це елемент пам’яті ЕОМ, який зберiгає цiле позитивне число. Початкове значення цьому лiчильнику привласнюється на початку моделювання. Воно дорiвнює значенню операнда А команди START (РОЗПОЧАТИ ). У процесi моделювання транзакти попадають в блоки ТЕRMINATE i таким чином вiдбувається зменшення лiчильника. Моделювання завершується, коли лiчильник скидається в нуль (або набуває негативного значення).
Інтерпретатор починає моделювання за командою START. ЇЇ формат:
START А
В операндi А задається початкове значення лічильника завершення.
Керування тривалiстю процесу моделювання. У мовi GPSS можна керувати тривалістю процесу моделювання двома способами:
- завершувати моделювання пiсля того, як модель покине задане число транзактів певного типу;
- завершувати моделювання, якщо минув заданий інтервал часу.
Перший спосіб.
1. У командi START операнду А привласнюється значення заданого числа транзактiв.
2. У всіх блоках ТЕRMINATE, через якi транзакти заданого типу покидають модель, операнду А встановлюється значення “1” або iнше, вiдмiнне від нуля (вiдповідно до змiстовного значення транзакту).
3. У всiх інших блоках ТЕRMINATE в моделi використовується значення операнда А за замовчуванням (А = 0). Значення лiчильника завершення не буде залежати вiд цих блокiв.
Перший спосiб дозволяє закінчити моделювання, коли через модель пройде задана кiлькість транзактiв. Наприклад, треба закінчити моделювання, коли через модель пройде 1000 транзактів:
GЕNЕRАТЕ 6,4
…
…
ТЕRMINATE 1
START 1000
Другий спосiб. Нехай розробник вибрав за одиницю модельного часу 1хв. і хоче змоделювати поведiнку системи протягом 8 год. ( тобто 480хв.). Це можна зробити таким чином.
1. Ввести в модель сегмент таймера з двох блоків
GЕNЕRАТЕ 480
ТЕRMINATE 1
2. У всіх iнших блоках ТЕRMINATE в моделi використовується значення операнда А за замовчуванням (А = 0). Це означає, що припинення моделювання, що визначається лiчильником завершення, не повинне залежати вiд iнших блокiв ТЕRMINATE.
3. У команді START операнд А має дорівнювати одиниці.
Таким чином, у процесi моделювання завершення руху транзактiв в iнших блоках ТЕRMINATE не впливають на лiчильник завершення. У момент часу 480 транзакт вийде з блока GЕNЕRАТЕ i вiдразу ж перейде до блока ТЕRMINATE. Лiчильник завершення зменшиться на одиницю i iнтерпретатор завершить моделювання.
