logo
Комплекс по МСиП 2014 / лекции МСиП 2014

Описание некоторых операторов gpss

1. GENERATE (генерировать).

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

Формат: GENERATE A, B, C, D

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

В поле B записывается величина отклонения случайной величины от математического ожидания (). По умолчанию отклонение равно 0. Так заполняется полеB в случае равномерного закона распределения.

В поле C устанавливается время появления на выходе генератора 1-го транзакта (t1).

В поле D записывается число транзактов, которое должен сформировать генератор.

В случае, если закон отличается от равномерного, генератор задается в следующем формате. Например, генератор с экспоненциальным распределением (=0,25) и с использованием генератора случайных чисел RN1 запишется в виде:

GENERATE (Exponential(1,0,(1/0.25))).

2. TRANSFER (передать).

Оператор предназначен для имитации правил и условий обслуживания. С помощью этого оператора ТА можно передавать в различные программные блоки модели.

Формат: TRANSFER A, B, C, D

В поле A ставится условие (режим) передачи.

В поле B указывается номер следующего блока по условию. В поле C указывается номер блока, в который должен перейти ТА, если блок, указанный в поле B, занят. В поле D записывается индекс, используемый в условии «ALL».

Описание условий в поле A.

1. По этому условию «Пробел» ТА

передаётся в блок, указанный в поле B, (безусловный переход). Если блок занят, ТА остаётся в предыдущем блоке.

2. .N - по этому условию через N- десятичное число записывается вероятность, с которой ТА будет переходить в блок, указанный в поле C.

3. «ALL» - по этому условию ТА пытается войти в блок B, если он занят, то в B+D, если тот занят, то в B+2D и т.д. до C.

4. «BOTH» - ТА пытается войти в блок B, если он занят, то в блок C,

если блок C занят, то остаётся в предыдущем блоке.

Пример: 1. TRAN , МM1

Безусловная передача блоку с меткой ММ1.

2. TRAN .300,ММ1,ММ2

С вероятностью 0.7 ТА будут переданы блоку с меткой ММ1 и с вероятностью 0.3 в блок ММ2.

3. SEIZE (занять).

С помощью оператора SEIZE производится ввод ТА в устройство, имитирующее обслуживание.

Формат: SEIZЕ A

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

4. ADVANCE (задержать).

Блок имитирует обслуживание путём выделения транзакту определённого времени нахождения в блоке.

Формат: ADVAСЕ A, B

В поле A устанавливается математическое ожидание времени обслуживания. В поле B – разброс времени обслуживания (аналогично блоку GENERATE).

Пример: 1. ADVAСЕ 7, 2

Транзакт будет оставаться в блоке от 5 до 9 единиц времени.

2. ADVAСЕ (Exponential (1,0,70)).

Транзакт будет задержан в среднем на время, равное 70 единиц времени.

5. QUEUE (встать в очередь).

Оператор имитирует постановку ТА в очередь.

Формат: QUEUЕ A, B

В поле A – имя очереди или её номер.

В поле B – число одновременно вводимых транзактов в очередь. По умолчанию 1.

6. DEPART (покинуть очередь).

Оператор предназначен для вывода ТА из очереди.

Формат: DEPART A, B

A – имя очереди; B – число выводимых ТА (по умолчанию 1).

7. RELEASE (освободить устройство, реализовать).

Оператор предназначен для вывода из устройства обслуженного ТА.

Формат: RELEASE A

В поле A – имя или номер устройства.

8. TEST ( сравнение двух СЧА).

Оператор используется для передачи управления (ТА) по результатам сравнения двух СЧА.

Формат: TEST R A, B, C.

В поле R ставятся условия сравнения:

E – « = »; NE – «»; L – « < »; LE – « »; G – «> »; GE – « ».

В полях A, B записываются СЧА, подлежащие сравнению.

Если условие поля R выполнимо, то ТА входит в блок TEST и далее по программе. Если условие не выполнено, ТА пытается войти в блок, указанный в поле C (метка перехода). Если блок C занят, то ТА не заходит в TEST, а ожидает выполнение условия.

9. MARK (отметить).

Формат: MARK A

Блок записывает в параметр, указанный в поле А, значение текущего времени. Если поле А свободно, то в место времени создания ТА устанавливается текущее время.

Пример: 1. MARK

Заменяет время входа транзакта в модуль на текущее значение.

2. MARK 3

Записывает текущее время в параметр 3.

10. TERMINAТE (завершить).

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

Формат: TERMINAТE A

В поле A указывается число уничтоженных транзактов, а в дальнейшем число, вычитаемое из содержимого оператора START.

Примечание. Если в поле A «пробел», то ТА уничтожается, но при этом содержимое оператора START не уменьшается. Используется это в тех случаях, если в модели необходимо задать время моделирования Т. Выполняется это следующим образом. После оператора TERMINAТE с «пробелом» устанавливается группа операторов:

GENERATE Т

В поле Т записывается время моделирования (момент появления 1-го ТА).

TERMINAТE 1

STAR 1

Оператор START устанавливается в пункте меню Command/Start с указанием:

– числа прогонов модели,

– условия печати результатов (по умолчанию печатается стандартный отчёт, если стоит NP, печать отменяется)

– число прогонов, через которые осуществляется промежуточная распечатка результатов.

Работает START следующим образом. После каждого прогона из содержимого счетчика вычитается число, указанное в поле A оператора TERM. При достижении счетчика нулевого значения моделирование заканчивается и если есть разрешение, печатается отчёт.

Пример: 1. START 400

Выполнить модель до 400 прогонов с печатью стандартного отчета.

2. START 100, ,10

Выполнить модель до 100 прогонов и вывод отчета через каждые 10 завершений.

Более подробное описание GPSS World смотрите в /7/.