Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Opisanie_yazyka_GPSS_World.rtf
Скачиваний:
50
Добавлен:
16.03.2015
Размер:
2 Мб
Скачать
☆

3.2 Установка приоритета транзакта. БлокPriority

Блок PRIORITY (НАЗНАЧИТЬ ПРИОРИТЕТ) присваивает или изменяет приоритет транзакта, если он был задан блоком GENERATE (по умолчанию приоритет транзакта равен нулю).

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

PRIORITY <A>

Поле операндов <A> задает новое значение приоритета (число или СЧА).

Новое значение приоритета может быть меньше, больше или равно текущему значению приоритета транзакта. Приоритет влияет на порядок выбора транзакта для обслуживания устройствами и на порядок просмотра транзактов в списке текущих событий.

Стандартный числовой атрибут этого блока – PR. Поскольку уровень приоритета транзакта может изменяться от 0 до 127, то PR будет выдавать значение в диапазоне 0-127.

ПРИМЕР 19.

PRIORITY 100

Вошедшему в этот блок транзакту присваивается приоритет 100.

DELAY FUNCTION PR,D3

1,4/2,7/3,10

…

ADVANCE FN$DELAY

…

Задержка в блоке ADVANCE зависит от приоритета транзакта. Гранзакт c наиболее низким приоритетом (1) задерживается на 4 единицы модельного времени, транзакт c наиболее высоким приоритетом (3) задерживается на 10 единиц модельного времени.

3.3 Изменение направления движения транзакта

Направление движения транзактов в программе изменяют блоки TRANSFER,GATE,TEST.

3.3.1 Переход транзакта в блок, отличный от последующего. БлокTransfer

В GPSS блок TRANSFER (ПЕРЕДАТЬ) может быть использован в девяти разных режимах. Рассмотрим три основных режима.

Режим безусловной передачи.

Формат блока TRANSFER в режиме безусловной передачи:

TRANSFER ,B

Поля операндов имеют следующий смысл:

  • <A> – не используется,

  • <B> – позиция блока, в который должен перейти транзакт.

Позиция блока – это номер или метка блока. Так как операнд <А> не используется, то перед операндом <В> должна стоять запятая. В режиме безусловной передачи блок TRANSFER не может отказывать транзакту во входе. Кстати, если транзакт входит в блок, то он сразу же пытается войти в блок <В>.

Статистический режим. В этом режиме осуществляется передача транзакта в один из двух блоков случайным образом.

Формат блока TRANSFER в режиме статистической передачи:

TRANSFER <A>,[<B>],<C>

Поля операндов имеют следующий смысл:

  • <A> – вероятность передачи транзакта в блок <C>, задаваемая в долях тысячи,

  • <B> – позиция блока, в который должен перейти транзакт (с вероятностью 1-<A>),

  • <C> – позиция блока, в который должен перейти транзакт (с вероятностью <A>).

При задании вероятности (операнд <А>) используется не более трех цифр, первый символ записи частоты «.» (десятичная точка), если используется действительное число, которое должно быть в пределах от 0 до 1,0 (например, 0,235).

ПРИМЕР 20.

TRANSFER .333,MET1,MET2

…

MET1 SEIZE PR1

…

MET2SEIZEPR2

С вероятностью .333 транзакт переходит в блок с меткой MET2, а с вероятностью .667 – в блок с меткойMET1.

Если с вероятностью .667 транзакт должен перейти к следующему блоку, в блоке TRANSFERможно опустить операнд <B>.

TRANSFER .333,,MET2

MET1 SEIZE PR1

…

MET2 SEIZE PR2

Режим BOTH. Если в операнде <А> указано зарезервированное слово BOTH, блок TRANSFER работает в режиме BOTH.

В этом режиме входящий транзакт сначала пытается перейти к блоку, указанному в операнде <В>. Если это сделать не удается, транзакт пытается перейти в блок, указанный в операнде <C>. Если транзакт не сможет перейти ни к тому, ни к другому блоку, то он остается в блоке TRANSFER и при каждом просмотре списка текущих событий будет в том же порядке повторять попытки перехода до тех пор, пока не сможет выйти из блока TRANSFER.

ПРИМЕР 21.

TRANSFER BOTH,MET1,MET2

…

MET1 SEIZE PR1

…

MET2 SEIZE PR2

Транзакт сначала пытается перейти в блок c меткой MET1. Если устройство PRI1 занято, транзакт пытается войти в блок c меткойMET2. Если транзакт не может войти и в этот блок (устройство PRI2 также занято), он остается в списке текущих событий и повторяет эти попытки при каждом просмотре списка до тех пор, пока не выйдет из блока TRANSFER.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]