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

Для изменения маршрута движения транзактов в GPSS используется блок TRANSFER (передать). Рассмотрим три основных режима работы блока TRANSFER.

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

TRANSFER,B,

где В – позиция блока, в которую должен перейти транзакт (номер или метка блока). Операнд А не используется.

Блок TRANSFER в с т а т и с т и ч е с к о м р е ж и м е осуществляет пере­дачу транзакта в один из двух блоков случайным образом. Формат записи блока TRANSFER в этом случае такой:

TRANSFER A,[B],C,

где А – вероятность передачи транзакта в блок С, задаваемая в долях тысячи;

В – позиция блока, в которую должен пе­рейти транзакт с вероятностью (1 – А), по умолчанию – следующий блок;

C – позиция блока, в которую должен пе­рейти транзакт с вероятностью А.

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

П р и м е р использования блока TRANSFER в статистическом режиме:

TRANSFER.233,LUNIT1,LUNIT2

LUNIT1 SEIZE UNIT1

LUNIT2 QUEUE QUNIT2.

Транзакт переходит в блок c меткой LUNIT1 с частотой 0,767 и в блок c меткой LUNIT2 – c частотой 0,233.

Блок TRANSFER – в р е ж и м е BOTH. Входящий транзакт сначала пытается перейти к блоку, указанному в операнде В. Если это сделать не удается, то тран­закт пытается перейти в блок, указанный в операнде C. Если тран­закт не сможет перейти ни ктому, ни к другому блоку, то он остается в блоке TRANSFER и при каждом просмотре списка текущих собы­тий будет повторять в том же порядке попытки перехода до тех пор, пока не сможет выйти из блока TRANSFER. В данном случае блок TRANSFER имеет следующий формат:

TRANSFER BOTH,В,С

П р и м е р использования блока TRANSFER в режиме BOTH [4]:

TRANSFER BOTH, LL1, LL2

LL1 SEIZE UN1

LL2 SEIZE UN2

Первоначально транзакт пытается перейти в блок c меткой LL1. В случае занятости устройства UN1, транзакт пытается войти в блок c меткой LL2. Если транзакт не может войти и в этот блок (устройство UN2 также занято), то он остается в списке текущих событий и повторяет эти попытки при каждом просмотре списка до тех пор, пока не выйдет из блока TRANSFER.


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



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