Таймер GPSS–модели регистрирует только целые значения модельного времени. Единица времени, с которой работает таймер, определяется разработчиком и задается в неявном виде в форме параметров временных данных (значений операндов блоков), вводимых в модель и выраженных в единицах модельного времени. Выбор единицы модельного времени осуществляется с учетом динамики моделируемых процессов и точности их отображения.
Интерпретатор реализует логику метода модельных событий с помощью двух списковых структур:
цепь будущих событий (ЦБС);
цепь текущих событий (ЦТС).
Эти две структуры определяют положение транзакта в модели с точки зрения продвижения модельного времени и правил активизации транзактов.
ЦБС (является аналогом СБС в ММС) состоит из транзактов, движение которых по модели запланировано на некоторый момент в будущем:
а) планируется выход транзакта из блока GENERATE. В момент успешного выхода транзакта из этого блока соответствующая запись из ЦБС удаляется, но тут же, после выхода интерпретатор заносит в ЦБС следующую запись, соответствующую последователю этого транзакта в блоке GENERATE.
б) транзакт попал в блок ADVANCE (блок задержки).
Транзакты в ЦБС упорядочены по увеличению модельного времени, на которое запланировано их дальнейшее движение. При совпадении времени (узел событий) они располагаются в порядке занесения в ЦБС.
ЦТС состоит из транзактов (а точнее – соответствующих им записей), для которых продвижение в модели планируется в текущий момент модельного времени или в течение ближайшего времени.
В ЦТС транзакты упорядочены по приоритетам (больший приоритет вперед). Если приоритет одинаков, то — в порядке занесения в ЦТС.
ЦБС фактически эквивалентна списку будущих событий в методе модельных событий, а ЦТС используется интерпретатором для реализации процессно‑ориентированной логики обработки критических событий.
Логика работы GPSS‑интерпретатора включает 3 фазы:
Фаза ввода – выполняется однократно в начале работы ИМ и состоит в последовательном просмотре блоков модели, выявлении блоков GENERATE и в формировании для каждого блока записи в ЦБС для первого транзакта, который должен выйти через этот блок в модель.
Фазы КТМВ и ПЦТС выполняются итеративного до окончания моделирования.
Фаза коррекции таймера модельного времени заключается в переносе транзакта (транзактов) с наименьшим временем планируемого начала движения из ЦБС в ЦТС и соответствующем скачкообразном увеличении модельного времени.
Фаза просмотра ЦТС соответствует одному моменту модельного времени, определенному в предыдущей фазе, и заключается в последовательном продвижении транзактов, находящихся в ЦТС через возможно большее число блоков. Возврат на начало ЦТС осуществляется в том случае, когда при очередном перемещении транзакт проходит блок, снимающий условие блокировки (например, блоки RELEASE, LIAVE и др.).
Осуществление этой фазы реализует так называемую процессно-ориентированную логику обработки событий в ИМ.
В GPSS предусмотрен специальный механизм задания времени прогона ИМ с помощью так называемого «счетчика завершений». Начальное значение этого счетчика определяется разработчиком ИМ через операнд А управляющей карты START, а затем может быть организовано периодическое уменьшение этого значения в специальном сегменте модели, составленном из блоков GENERATE и TERMINATE. Как только счетчик завершений обнуляется, прогон ИМ завершается.
В GPSS используются два понятия и, соответственно, измерения модельного времени: абсолютное модельное время, измеряемое с самого начала работы имитационной программы, и относительное время, измеряемое с момента сброса в нулевое состояние собранной статистики (это делается после обработки интерпретатором специальной управляющей карты RESET и необходимо для отсечения переходных процессов при оценке статистических характеристик стационарных эргодических процессов).
Иллюстрация на примере
Постановка задачи.
Построить GPSS-модель одноканальной СМО с неограниченной очередью.
Цели моделирования: исследовать загрузку КО и длину очереди.
Исходные данные:
ЗР интервалов времени между заявками во входном потоке ЗРПВ [18,6];
ЗР времени обслуживания – ЗРПВ [16,4].
Время прогона ИМ – 480.
Блок-схема такой GPSS-модели имеет вид:
Рассмотрим функционирование GPSS-модели в предположении следующей численной реализации случайных величин:
- интервал между заявками входного потока;
- время обслуживания заявки;
и соответствующей реализации следующих переменных:
- время входа заявки в систему,
- время начала обслуживания заявки,
- время окончания обслуживания заявки.
№ заявки
-
-
-
Графики, отражающие динамику работы СМО в соответствии с этими цифрами, имеют следующий вид:
Таблица, отражающая логику работы GPSS-интерпретатора для рассматриваемого примера ([N, T, NTB, PR, NSB])
№
Стр.
Модельное
время
Цепь текущих событий
Цепь будущих событий
до ф. ввода
пусто
пусто
после ф. ввода
пусто
[1,14,Нет,0,1], [2,480,Нет,0,8]
после ф.КТМВ t=14
[1,КМР,Нет,0,1]
[2,480,Нет,0,8]
после ф. ПЦТС
t=14
пусто
[3,27,Нет,0,1], [1,32,5,0,6], [2,480,Нет,0,8]
после ф.КТМВ t=27
[3,КМР,Нет,0,1]
[1,32,5,0,6], [2,480,Нет,0,8]
после ф. ПЦТС
t=27
[3,КМР,2,0,3]
[1,32,5,0,6], [4,44,Нет,0,1], [2,480,Нет,0,8]
после ф.КТМВ t=32
[3,КМР,2,0,3], [1, КМР,5,0,6]
[4,44,Нет,0,1], [2,480,Нет,0,8]
после ф. ПЦТС
t=32
пусто
[4,44,Нет,0,1], [3,44,5,0,6], [2,480,Нет,0,8]
после ф.КТМВ t=44
[4,КМР,Нет,0,1], [3, КМР,5,0,6]
[2,480,Нет,0,8]
после ф. ПЦТС
t=44
пусто
[4,58,5,0,6], [1,59,Нет,0,1], [2,480,Нет,0,8]
Для напоминания о соответствии номеров и имен блоков: