Описание некоторых операторов GPSS
Операторы GPSS
Формат операторов:
Метка…Операция…Операнды…Комментарии
Метка – это символьный адрес перехода. Метка обязательно начинается с буквы и помещается в первый столбец. В шестом столбце записывается операция, состоящая из названия программного блока. Далее через пробел записываются операнды. В качестве операндов фигурируют СЧА, численные значения функций, соотношения. Если операндов несколько, между ними ставится пробел или запятая. После операндов пишутся комментарии. Поле операндов от комментария отделяется точкой с запятой.
1. GENERATE (генерировать).
Программный блок предназначен для создания ТА с соответствующим набором атрибутов. Программный блок имеет только выход.
Формат: GENERATE A, B, C, D
В поле A записывается математическое ожидание интервала следования транзактов ().
В поле B записывается величина отклонения случайной величины от математического ожидания (). По умолчанию отклонение равно 0. Так заполняется поле B в случае равномерного закона распределения.
В поле C устанавливается время появления на выходе генератора 1-го транзакта (t1).
В поле D записывается число транзактов, которое должен сформировать генератор.
В случае, если закон отличается от равномерного, генератор задается в следующем формате. Например, генератор с экспоненциальным распределением (l=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/.