Программный блок-функция устанавливается в начале модели. С помощью функции записывается зависимость между параметрами или СЧА. В основном она используется для задания закона распределения случайной величины (для GPSS World не обязательна).
Формат: символ (номер или имя) FUNC A, B,
где в поле A устанавливается аргумент функции. Если это аргумент случайной функции, то в поле A устанавливается RN $.
В поле B записывается тип функции (C, D). За буквой C или D записывается количество пар точек. Далее перечисляются координаты точек по формату: x1, y1/x2, y2/x3, y3/…/xn, yn.
При записи пар точек необходимо соблюдать следующие условия:
- x (аргумент) должен обязательно возрастать;
- совпадения значений x не допускаются.
Например:
4 FUNC RN$2,C5
0,0/.2,10/.5,25/.8,10/1,0
Значения функции 4 распределены случайно в зависимости от данных генератора случайных чисел RN$2.
2. GENERATE (генерировать)
Программный блок предназначен для создания ТА с соответствующим набором атрибутов. Программный блок имеет только выход.
Формат: GENE A, B, C, D
В поле A записывается математическое ожидание интервала следования транзактов ( ).
B случае равномерного закона распределения в поле B записывается величина отклонения случайной величины от математического ожидания ( ). По умолчанию отклонение равно 0. Если закон отличается от равномерного, в поле B записывается закон распределения, установленный выше блоком FUNCTION.
В поле C устанавливается время появления на выходе генератора первого транзакта (t1).
В поле D записывается число транзактов, которое должен сформировать генератор.
Примечание. Если в поле B записана не функция, а интервал , то генератор выдаёт числа с равномерным законом распределения в интервале (A-B, A+B). Если в поле B записана функция FN$ (имя функции или номер), то генератор выдаёт случайные числа, равные (A*FN$), где A – математическое ожидание.
Например: 1.GENE 12,3,,2
Генератор генерирует ТА с интервалом от 9 до 15 единиц времени с приоритетом 2.
2. GENE 10,FN$EXP
Генератор генерирует ТА с интервалом, равным произведению значения функции FN$EXP на 10.
В GPSS World в библиотеку включено 24 закона вероятностных распределений. При вызове распределения требуется установить аргумент и его параметры.
Некоторые распределения вероятностей:
- Лапласа (Laplace);
- нормальное (Normal);
- Пирсона типа V (Pearson Type V);
- Пуассона (Poisson);
- равномерное (Uniform);
- экспоненциальное (Exponential).
Генератор задается в специальном формате. Например, генератор с экспоненциальным законом распределения (l=0,25) и с использованием генератора случайных чисел RN1 запишется в виде
GENERATE (Exponential(1,0,(1/0.25))).
3.TRANSFER (передать)
Оператор предназначен для имитации правил и условий обслуживания. С помощью этого оператора ТА можно передавать в различные программные блоки модели.
Формат: TRAN A, B, C, D
В поле A устанавливается условие (режим) передачи. В поле B указывается номер следующего блока по условию. В поле C указывается номер блока, в который должен перейти ТА, если блок, указанный в поле B, занят. В поле D записывается индекс, используемый в условии «ALL».
В поле А устанавливаются следующие условия.
1. «Пробел» (в поле A ничего не указывается). По этому условию ТА передаётся в блок, указанный в поле B, (безусловный переход). Если блок занят, ТА остаётся в предыдущем блоке (TRANSFER).
2. .N - по этому условию записывается вероятность, с которой ТА будет переходить в блок, указанный в поле C.
3. «ALL» - ТА пытается войти в блок B, если он занят, то в B+D, если и он занят, то в B+2D и т.д. до C.
4. «BOTH» - ТА пытается войти в блок B, если он занят, то в блок C, если блок C занят, то остаётся в предыдущем блоке (TRANSFER).
Например: 1. TRAN ,M1
Безусловная передача блоку с меткой М1.
2. TRAN .300,М1,М2
С вероятностью 0.7 ТА будут переданы блоку с меткой М1 и с вероятностью 0.3 – в блок М2.
4.SEIZE (занять)
С помощью этого оператора производится ввод ТА в устройство, имитирующее обслуживание.
Формат: SEIZ A
В поле A указывается номер или имя устройства.
5.ADVANCE (задержать)
Блок имитирует обслуживание путём выделения транзакту определённого времени нахождения в блоке.
Формат: ADVA A, B
В поле A указывается математическое ожидание времени обслуживания. В поле B – разброс времени обслуживания (аналогично блоку GENERATE).
Например: 1. ADVA 7, 2
Транзакт будет оставаться в блоке от 5 до 9 единиц времени.
2. ADVA 5, FN$1
Транзакт будет задержан на время, равное произведению значения функции FN$1 на 5.
6.ASSIGN (присвоить, изменить)
С помощью этого оператора параметрам ТА присваиваются определенные значения.
Формат: ASSI A, B
В поле A записывается имя параметра. Далее могут быть установлены +(-). В поле B – новое значение параметра или изменённое значение.
Примечание. Если в поле A после имени параметра не указаны знаки +(-), параметр принимает значение, указанное в поле B; если после имени параметра стоит «+», то параметр принимает значение (A+B); если «-»,то (A-B).
Например: 1. ASSI 2, 5
Присвоить параметру 2 значение 5.
2. ASSI 1+ , M$i
Добавить к значению параметра 1 время прохождения i-го ТА участка модели.
7.QUEUE (встать в очередь)
Оператор имитирует постановку ТА в очередь.
Формат: QUEU A, B
В поле A устанавливается имя очереди или её номер. В поле B – число одновременно вводимых транзактов в очередь. По умолчанию 1.
8.DEPART (покинуть очередь)
Оператор предназначен для вывода ТА из очереди.
Формат: DEPA A, B
В поле A устанавливается имя очереди. В поле B – число выводимых ТА (по умолчанию 1).
9.RELEASE (освободить устройство, реализовать)
Оператор предназначен для вывода из устройства обслуженного ТА.
Формат: RELE A
В поле A устанавливается имя или номер устройства.
10.TEST ( сравнение двух СЧА)
Оператор используется для передачи управления (ТА) по результатам сравнения двух СЧА.
Формат: TEST R A, B, C
В поле R устанавливаются условия сравнения
E – « = »; NE – « »; L – « < »; LE – « »; G – « > »; GE – « ».
В полях A, B записываются СЧА, подлежащие сравнению.
Если условие поля R выполнимо, то ТА входит в блок TEST и далее в блок по программе. Если условие не выполнено, ТА пытается войти в блок, указанный в поле C (метка перехода). Если блок C занят, то ТА не заходит в TEST, а ожидает выполнения условия.
11.MARK(отметить)
Формат: MARK A
Блок записывает в параметр, указанный в поле А, значение текущего времени. Если поле А свободно , то вместо времени создания ТА устанавливается текущее время.
Например: 1. MARK
Блок заменяет время входа транзакта в модуль на текущее значение.
2. MARK 3
Блок записывает текущее время в параметр 3.
12.TERMINARE (завершить)
Блок предназначен для уничтожения транзактов, прошедших через модель.
Формат: TERM A
В поле A указывается число уничтоженных транзактов, а в дальнейшем - число, вычитаемое из содержимого счетчика оператора START.
Примечание. Если в поле A «пробел», то ТА уничтожается, но при этом содержимое счетчика оператора START не уменьшается. Используется это в тех случаях, если в модели необходимо задать время моделирования Т. Это достигается следующим образом. После оператора TERM с «пробелом» устанавливается группа операторов.
GENE Т
В поле Т записывается время моделирования (момент появления первого ТА).
TERM 1
13.START (начать)
С помощью этого оператора имитируются начало и конец сбора информации на модели.
Формат: STAR A, B, C
В поле A устанавливается число прогонов модели. В поле B – условие печати результатов. По умолчанию печатается стандартный отчёт. Если стоит NP, печать стандартного отчета отменяется. В поле C указывается число прогонов, через которые осуществляется промежуточная распечатка результатов. Поля оператора START в GPSS World заполняются в пункте меню «Command/ START».
Например: 1. START 400
Выполнить модель до 400 прогонов модели с печатью стандартного отчета.
2. START 100, ,10
Выполнить 100 прогонов модели с выводом отчета через каждые 10 завершений.