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

Перевод с английского языка блока А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.


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



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