Для задержки или изменения маршрута транзактов в зависимости




от состояния аппаратных объектов модели служит блок GATE

(впустить), имеющий следующий формат:

Имя GATE X A,B

Вспомогательный операнд X содержит код состояния проверяемого

аппаратного объекта, а в поле A указывается имя или номер этого

объекта. Если проверяемый объект находится в заданном состоянии, то

блок GATE пропускает транзакт к следующему блоку. Если же заданное

в блоке условие не выполняется, то транзакт переходит к блоку, ука-

занному в поле B, а если это поле пусто, то задерживается перед

блоком GATE.

Операнд X может принимать следующие значения: U (устройство

занято); NU (устройство свободно); I (устройство захвачено); NI

(устройство не захвачено); SE (МКУ пусто); SNE (МКУ не пусто); SF

(МКУ заполнено); SNF (МКУ не заполнено); LS (ЛП включен), LR (ЛП

выключен).

Например, блок

GATE SNE BUF3

отказывает во входе транзактам, поступающим в моменты, когда в МКУ

с именем BUF3 все каналы обслуживания свободны. Блок

GATE LR 4,BLOK2

направляет транзакты в блок с именем BLOK2, если в момент их

поступления ЛП с номером 4 включен.

Блоки рассматриваемой группы используются при моделировании

различных СМО с потерями заявок. Воспользуемся, например, блоками

TRANSFER для моделирования двухканальной СМО с отказами и повторны-

ми попытками (рис. 12).

 

STO2 STORAGE 2

EXP FUNCTION RN1,C24

0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3

.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9

.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8

GENERATE 100,FN$EXP

ENT1 TRANSFER BOTH,,REFUS

ENTER STO2

ADVANCE 160,FN$EXP

LEAVE STO2

TERMINATE 1

REFUS TRANSFER.1,,OUT

ADVANCE 250,FN$EXP

TRANSFER,ENT1

OUT TERMINATE 1

 

Рис. 12

 

Транзакты, поступающие в модель, попадают в блок TRANSFER с

именем ENT1, работающий в логическом режиме. Если в момент поступ-

ления транзакта в МКУ STO2 хотя бы один канал свободен, то блок

TRANSFER направит транзакт в следующий блок, т.е. в блок ENTER.

Если же в момент поступления оба канала МКУ заняты, и поэтому блок

ENTER отказывает во входе, то транзакт будет направлен в блок

TRANSFER с именем REFUS, работающий в статистическом режиме. С ве-

роятностью 0,9 транзакты из этого блока передаются в следующий

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

TRANSFER, работающего в безусловном режиме, передаются вновь на

вход модели в блок с именем ENT1. С вероятностью 0,1 транзакты из

блока с именем REFUS передаются в блок TERMINATE с именем OUT для

уничтожения.

Следует заметить, что для уничтожения транзактов, получивших

отказ в обслуживании, понадобился отдельный блок TERMINATE для

фиксации в стандартном отчете количества потерянных транзактов с

помощью счетчика блока с именем OUT (СЧА N$OUT).

Для моделирования той же СМО может быть использован также блок

TEST (рис. 13). В этом варианте модели транзакт проходит в блок

ENTER, если текущее число занятых каналов (СЧА S$STO2) меньше 2.

 

STO2 STORAGE 2

EXP FUNCTION RN1,C24

0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3

.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9

.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8

GENERATE 100,FN$EXP

ENT1 TEST L S$STO2,2,REFUS

ENTER STO2

ADVANCE 160,FN$EXP

LEAVE STO2

TERMINATE 1

REFUS TRANSFER.1,,OUT

ADVANCE 250,FN$EXP

TRANSFER,ENT1

OUT TERMINATE 1

 

Рис. 13

 

При использовании блока GATE модель принимает вид, показанный

на рис. 14. В этом варианте транзакт проходит в блок ENTER, если

условие "МКУ STO2 не заполнено" истинно.

 

STO2 STORAGE 2

EXP FUNCTION RN1,C24

0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3

.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9

.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8

GENERATE 100,FN$EXP

ENT1 GATE SNF STO2,REFUS

ENTER STO2

ADVANCE 160,FN$EXP

LEAVE STO2

TERMINATE 1

REFUS TRANSFER.1,,OUT

ADVANCE 250,FN$EXP

TRANSFER,ENT1

OUT TERMINATE 1

 

Рис. 14

 

Блоки, работающие с памятью

 

Для хранения в памяти отдельных числовых значений и массивов

таких значений используются сохраняемые величины и матрицы сохраня-

емых величин.

Сохраняемые величины могут использоваться в модели для хране-

ния исходных данных, которые надо изменять при различных прогонах

модели, промежуточных значений и результатов моделирования. В нача-

ле моделирования все сохраняемые величины устанавливаются равными

0. Для установки отличных от 0 начальных значений сохраняемых вели-

чин используется оператор INITIAL, имеющий следующий формат:

 

INITIAL X$ имя,значение

INITIAL Xj,значение

Здесь имя и j - соответственно имя и номер сохраняемой величины, а

значение - присваиваемое ей начальное значение (константа).

Для изменения сохраняемых величин в процессе моделирования

служит блок SAVEVALUE (сохранить величину), имеющий следующий фор-

мат:

Имя SAVEVALUE A,B

В поле A указывается номер или имя сохраняемой величины, в которую

записывается значение операнда B. Если в поле A после имени (номера)

сохраняемой величины стоит знак + или -, то значение операнда B

добавляется или вычитается из текущего содержимого сохраняемой

величины. Например:

SAVEVALUE 5,Q$LINE

 

SAVEVALUE NREF+,1

 

Сохраняемые величины имеют единственный СЧА с названием X,

значением которого является текущее значение соответствующей сохра-

няемой величины.

Изменим пример на рис. 14 таким образом, чтобы исходные данные

модели (средний интервал поступления транзактов и среднее время

обслуживания) были заданы сохраняемыми величинами, а результат мо-

делирования (количество потерянных транзактов) фиксировался также в

сохраняемой величине. Такая модель будет иметь вид, показанный на

рис. 15.

Матрицы сохраняемых величин дают возможность упорядочить сох-

раняемые значения в виде матриц m*n, где m - число строк, n - число

столбцов матрицы. Каждая матрица должна быть перед началом модели-

рования определена с помощью оператора MATRIX (определить матрицу),

имеющего следующий формат:

Имя MATRIX A,B,C

Поле A оператора не используется и сохранено в GPSS/PC для

совместимости со старыми версиями GPSS. В полях B и C указываются

соответственно число строк и столбцов матрицы, задаваемые констан-

тами, причем общее число элементов, равное произведению B на C, не

должно превышать 8191. Например, оператор

MTAB MATRIX,10,2

определяет матрицу с именем MTAB, содержащую десять строк и два

столбца.

 

INITIAL X$TARR,100

INITIAL X$TSRV,160

STO2 STORAGE 2

EXP FUNCTION RN1,C24

0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3

.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9

.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8

GENERATE X$TARR,FN$EXP



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-06-03 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: