Перевод с английского языка блока АDVANCE (ЗАДЕРЖАТЬ)
– продвигать, а не задерживать. Этот блок действительно продвигает ЧАСЫ модельного времени на некоторое значение, но фактически он осуществляет задержку продвижения транзакта в течение некоторого интервала времени. Обычно этот интервал задается случайной величиной.
В GPSS возможны следующие варианты распределения времени обслуживания:
1) детерминированное (постоянное);
2) равномерное распределение;
3) другие распределения.
Как и при использовании блока GЕNЕRАТЕ особо рассматривается равномерное распределение случайных величин. Применение более сложных видов распределений требует использования дополнительных функций (см. параграф 4.13).
Формат блока:
АDVANCE А[,В]
Таблица 4.6
Операнд | Значение | Значение по умолчанию |
А | Среднее время задержки на обслуживание (число, СЧА) | |
В | Половина поля допуска равномерно распределенного времени задержки (число, СЧА) |
Блок никогда не препятствует входу транзакта. Любое число транзактов может находиться в этом блоке одновременно. Когда транзакт попадает в такой блок, выполняется соответствующая подпрограмма и вычисляется время пребывания в нем транзакта. Вновь прибывший транзакт никак не влияет на уже находящийся в блоке транзакт.
|
|
Если время пребывания в блоке равно нулю, то вместо задержки в блоке АDVANCE интерпретатор сразу же пытается переместить этот транзакт в следующий блок. Более подробно о взаимодействии блока АDVANCE с интерпретатором описано в параграфе 4.21.
1. В GPSS/РС не допускаются дробные значения времени задержки.
2. Отрицательное значение задержки всегда вызывает ошибку.
Пример 4.2
Использование блока АDVANCE:
АDVANCE 30,5
Время задержки транзакта в этом блоке – случайная величина, равномерно распределенная на интервале [25, 35], которая принимает одно из 11 целых значений.
Пример 4.3
Классический случай использования последовательности SEIZE – АDVANCE – RELEASE:
SEIZE РRIВ
АDVANCE 16,4
RELEASE РRIВ
Транзакт, двигаясь по этой цепочке блоков, займет устройство с именем РRIВ, задержится там на 16±4 единицы времени и затем покинет его. После того как транзакт войдет в блок RELEASE и соответствующая этому блоку подпрограмма закончится, интерпретатор попытается переместить транзакт в следующий блок модели и следующий транзакт может уже использовать устройство РRIB.
Блоки АDVANCE можно располагать в любых местах программы, а не только между блоками SEIZE и RELEASE.