GATE LR 3, SH
Блок проверяет выключен ли ключ 3. Если «да», то транзакт переходит в следующий блок. Если «нет», то переходит к блоку с меткой SH.
Если «B» пусто, то блок работает следующим образом. Он задерживает транзакт до тех пор, пока X не будет истинным.
GATE LR 3
Транзакт будет задержан в блоке до тех пор пока ключ 3 не будет выключен. Таким образом, с помощью блока GATE программируются условия передачи.
Безусловные передачи управления программируются с помощью следующего блока.
Блок TRANSFER (передать) – предназначен для передачи входящего в него транзакта в любой другой блок модели.
Блок имеет следующий формат:
TRANSFER [A], [B], [C], [D],
здесь А – режим выбора блока, которому должен быть передан транзакт.
Существуют следующие режимы работы блока:
- Безусловный (пробел);
- Статистический (.);
- Both;
- ALL и другие.
Безусловный режим выбора. Если операнд А опущен, то входящий в блок TRANSFER транзакт переходит к блоку, указанному в поле B.
Например,
TRANSFER, B1
Режим BOTH. Транзакт пытается войти в блок, указанный в поле B. Если не может войти в этот блок, то пытается войти в блок С. Если транзакт не может перейти и к этому блоку, то опять пытается войти в блок, указанный в В, и т.д., пока не сможет войти в один из блоков.
|
|
TRANSFER BOTH TR1,TR2
.
.
.
TR1 SEIZE 1
TR2 SEIZE 2
Статистический режим выбора. В этом режиме в поле А записывается точка (.), после неё следует трехзначное число. Это число показывает, какой процент, входящих в блок транзактов, следует направить к блоку, указанному в поле С. Остальные транзакты направляются к блоку, указанному в поле В. Если операнд В опущен, то к следующему блоку.
Например,
TRANSFER.700, BLK1, BLK2
0.700 будут пытаться войти в BLK2, остальные 0.300 в BLK1.
0.700 – интерпретируется как вероятность.
3.8 Сохраняемые величины
В GPSS пользователь может задать перед моделированием начальные значения некоторых переменных, к которым затем можно обращаться из любого места модели. Эти величины называются сохраняемыми величинами (ячейками). Совокупность логически связанных между собой ячеек образует матрицу. Сохраняемые величины могут принимать положительные и отрицательные значения. Стандартный числовой атрибут Xj (X$/имя ячейки/) дает значение соответствующей сохраняемой величины. Например, X2 –значение ячейки 2, X$DAY – значение ячейки DAY.
Блок SAVEVALUE (сохранить значение) – значение сохраняемой величины изменяется при входе транзакта в этот блок.
Формат блока:
SAVEVALUE A, B,
где A – номер ячейки, в которую должно быть записано значение В. Если в поле А стоит знак «+» или «-», то это означает, что к существующему значению прибавляется или вычитается значение операнда В.
|
|
Например,
SAVEVALUE 3,1000
Записывает 1000 в ячейку 3
SAVEVALUE 3+,1000
К содержимому ячейки 3 прибавляет 1000.
Оператор INITIAL (инициализировать) – инициализирует все начальные значения перед моделированием.
Имеет следующий формат:
INITIAL A, [B],
где А – номер или имя ячейки, В – величина, которая присваивается А.
По умолчанию равна 1.
Например,
INITIAL Х3, 25
Ячейке с номером 3 присваивается начальное значение 25.
Оператор позволяет задавать начальные значения ячеек (матриц и логических ключей)
3.9 Управление параметрами транзактов.
Параметры транзакта – это свойства транзакта, определяемые пользователем. Множество параметров транзакта – набор стандартных числовых атрибутов, которые принадлежат транзакту. Параметры транзакта доступны только данному транзакту. Параметры именуются буквой P и номером. Например, Р3, Р23. Параметры могут быть только целыми числами со знаком. Назначение и изменение параметра производится с помощью следующего блока.
Блок ASSIGN (назначить) - значения параметров могут задаваться или изменяться.
Формат блока:
ASSIGN A, B, [C],
где A – номер параметра, В – стандартный числовой атрибут (СЧА), значение которого присваивается параметру, С – номер функции.
Блок ASSIGN является основным средством присваивания числовых значений параметрам транзактов. Из блока ASSIGN транзакт без задержки переходит в следующий блок.
Непосредственно за аргументом поля А может стоять знак «+» или «-». Знак «+» означает, что значение аргумента поля В прибавляется к текущему значению параметра, знак «-» отнимается. Если знака нет, то значение В заменяет текущее значение параметра.
Например,
ASSIGN 5, X10
ASSIGN 2+, 1
ASSIGN 4-, 2
Если используется поле С, то выполняется следующее:
а) вычисляется значение операнда в поле С;
б) значение операнда перемножается с содержимым поля В;
в) целую часть использует для замены значения параметра в поле А.
3.10 Вычислительные операции в GPSS
В языке используются четыре арифметические операции: сложение (+), вычитание (-), деление (/), умножение (*), кроме них есть деление по модулю @.
A@B=4, если А=9, В=5
A@B – остаток от деления А на В.
Так как все числа должны быть целыми, то при деление (/) проводится округление до целого. Деление на нуль возможно, но результат считается равным нулю.
В языке GPSS имеются три типа переменных:
а) арифметические переменные с фиксированной точкой;
б) арифметические переменные с плавающей точкой;
в) булевы переменные.
Переменная задается одним оператором, называемым оператором описания переменной: