logo
Обработка данных / Томашевский_Имитационное моделирование в среде GPSS_2003

4.7. Реализация задержки во времени. БлокAdvance

Перевод cанглийского языка блокаADVANCE (ЗАДЕРЖАТЬ)– продвигать, А не задерживать. Этот блок действительно продвигает ЧАСЫ модельного времени на некоторое значение, но фактически он осуществляет задержку продвижения транзакта в течение некоторого интервала времени. Обычно этот интервал задается случайной вели­чиной.

В GPSSвозможны следующие варианты распределения времени обслуживания:

1) детерминированное (постоянное);

2) равномерное распределение;

3) другие распределения.

Как и при использовании блока GENERATEособо рассматри­вается равномерное распределение случайных величин. Применение более сложных видов распределений требует использования дополнительных функций (см. параграф 4.13).

Формат блока:

ADVANCE A[,B]

Таблица 4.6

Опе­ранд

Значение

Значение по умолчанию

А

Среднее время задержки на обслуживание (число, СЧА)

0

В

Половина поля допуска равномерно распре­деленного времени задержки (число, СЧА)

0

Блок никогда не препятствует входу транзакта. Любое число транзактов может находиться в этом блоке одновременно. Когда транзакт попадает в такой блок, выполняется соответствующая подпрограмма и вычисляется время пребывания в нем транзакта. Вновь прибывший транзакт никак не влияет на уже находящийся в блоке транзакт.

Если время пребывания в блоке равно нулю, то вместо задержки в блоке ADVANCEинтерпретатор сразу же пытается переместить этот транзакт в следующий блок. Более подробно о взаимодействии блокаADVANCE cинтерпретатором описано в параграфе 4.21.

1. В GPSS/PCне допускаются дробные значения вре­мени задержки.

2. Отрицательное значение задержки всегда вызывает ошибку.

Пример 4.2

Использование блока ADVANCE:

ADVANCE 30,5

Время задержки транзакта в этом блоке – случайная величина, равномерно распределенная на интервале [25, 35], которая принимает одно из 11 целых значений.

Пример 4.3

Классический случай использования последовательности SEIZE ADVANCERELEASE:

Транзакт, двигаясь по этой цепочке блоков, займет устройство cименемPRIB, задержится там на 16±4 единицы времени и затем по­кинет его. После того как транзакт войдет в блокRELEASE и соответствующая этому блоку подпрограмма закончится, интерпретатор попытается переместить транзакт в следующий блок модели и сле­дующий транзакт может уже использовать устройствоPRIB.

Блоки ADVANCE можно располагать в любых местах программы, А не только между блокамиSEIZE иRELEASE.