Створення і застосування списків користувача

У процесі моделювання система GPSS супроводжує два основних спис­ки подій – список поточних подій (СПП) і список майбутніх подій (СМП).

У списку СПП розташування транзактів здійснюється згідно порядку зменшення пріоритетів. Транзакти з однаковими транзактами поміщаються у СПП згідно черговості їх появлення. Під час моделювання першим переглядається СПП і система переміщує у моделі ці транзакти, для яких виконується задані умови. Будь-який транзакт у цьому списку може бути як в активному стані (активізований у даний момент модельного часу) так і у стані затримування. Якщо у СПП транзактів не має, тоді програма керування моделюванням звертається до другого списку СМП. Події, виконання яких заплановано на найближчий момент до модельного часу з СМП переносяться у СБП. Списки біжучих і майбутніх подій відображаються у вікні списків GPSS World.

Для перегляду транзактів у СПП з метою вибору наступного транзакта для просування його у моделі важливим є порядок перегляду заблокованих транзактів у цьому списку. Транзакти можуть бути заблоковані блоками GATE i TEST для перевірки станів ОКП.

Тому заблоковані транзакти, які перебувають в СПП, доцільно розміщувати в списки користувача (СК) і залишати їх до виконання умов, що дозволяють подальші просування цих транзактів.

Список користувача – це деякий буфер, в якому можуть тимчасово розміщатись транзакти, що виведені із СПП. На відміну від списків поточних і майбутніх подій транзакти вводяться у список користувача і виводяться з нього не автоматично, а за допомогою блоків LINK (Внести у список) i UNLINK (Вивести зі списку). Списки користувача зручні для моделювання алгоритмів, економії масштабного часу та формування дисциплін черг транзактів, які відрізняються від дисципліни “першим прийшов – першим обслуговується”, яка реалізована в СПП.

Введення транзактів у список користувача. Блок LINK. Формат запису блоку:

[назва] LINK А,В,[C]

Операнд А задає назву або номер списку користувача, в який розміщується транзакт після надходження у блоці LINK.

Операнд А може бути додатнім цілим числом, назвою, СЧА, СЧА*СЧА.

Операнд В впорядковує список користувача і визначає місце розміщення у ньому транзактів. Допустимі значення:

· FIFO – транзакт розміщується в кінець списку;

· LIFO – транзакт розміщується на початок списку;

· PR – транзакти впорядковуються за зменшенням пріоритету;

· P – транзакти розміщуються в порядку зростання значення параметра;

· M1 – транзакти розміщаються в порядку зростання відносного часу перебування у моделі.

Операндом В можуть використовуватись і інші СЧА: арифметична змінна, функція, вираз в дужках. Тоді виконуються обчислення для активного транзакта (вказаного операндом В). Для решти транзактів, які перебувають у списку користувача, обчислення починаються із початку черги. Впорядкування транзактів у списку користувача здійснюється за зменшенням обчисленого значення.

Операнд С є необов’язковим. Він вказує на альтернативний вихід для опрацювання різних ситуацій у чергах. Може бути додатнім цілим числом, СЧА, СЧА*СЧА.

Операндом С вказується мітка блоку, до якого переходить активний транзакт у випадку, якщо індикатор списку користувача встановлений в 0 (виключений). Індикатор є у кожного списку користувача. Коли операнд С не використовується, індикатор встановлюється в “1” (включений) і всі транзакти, що надійшли в блок LINK, розміщуються в список користувача.

Якщо в блоці LINK використовується операнд С, то робота блоку LINK є більш складнішого. У цьому випадку перевіряється індикатор списку корис­тувача. Якщо він встановлений у положення “1”, то увійшовший транзакт роз­міщується у списку користувача згідно значень операнда В. Якщо ж індикатор встановлений у положення “0”, тоді він переводиться у положення “1”, а транзакт, що надходить, переміщається до блоку, що задається операндом С.

Розглянемо приклад використання блоку LINK без наявності операнда С.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: