Для того чтобы изменить приоритет транзакта (его значение может быть задано разработчиком в блоке GENERATE или установлено автоматически: значение по умолчанию – ноль) используется блок PRIORITY (НАЗНАЧИТЬ ПРИОРИТЕТ).
Формат записи этого блока следующий:
PRIORITY A[,B],
где А (обязательный операнд) – новое значение приоритета (целое число, СЧА, CЧA*параметр);
В – буферизующая опция, которая позволяет поместить активный транзакт в список текущих событий позади равных ему по приоритету транзактов. Необязательный операнд Допустимые значения – BU или Null.
Приоритет влияет на порядок выбора транзакта для обслуживания устройствами и на порядок просмотра транзактов в списке текущих событий. Уровень приоритета может изменяться от 0 до 127. GPSS World наиболее эффективен, когда приоритеты, используемые в процессе моделирования, являются последовательными числами. Например, лучше использовать 0,1,2 вместо -200, 0, 23. СЧА этого блока – PR.
Транзактам никогда не отказывается во входе в блок PRIORITY.
Когда транзакт входит в блок PRIORITY, значение операнда А округляется (при необходимости) и присваивается приоритету активного транзакта.
|
|
Транзакт направляется к следующему по порядку блоку и помещается в список текущих событий согласно его новому приоритету. Если в операнде В использовано значение «BU», транзакт помещается в список текущих событий позади транзактов, равных ему по приоритету, иначе – впереди транзактов, равных ему по приоритету.
Примеры задания и использования приоритета транзактов в модели.
1. Назначить транзакту приоритет 15:
PRIORITY 15
2. Использование значений приоритета при моделировании:
DELAY FUNСTION PR,D3
1,4/2,7/3,10/
…
ADVANCE FN$DELAY
…
Значение приоритета транзакта является аргументом функции с именем DELAY. Задержка в блоке ADVANCE зависит от значения этой функции и соответственно от приоритета транзакта. Транзакт c наиболее низким приоритетом (1) задерживается на 4 единицы модельного времени, транзакт c наиболее высоким приоритетом (3) задерживается на 10 единиц модельного времени.