Пример 3. 5. Блок transfer (передать) –

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 имеются три типа переменных:

а) арифметические переменные с фиксированной точкой;

б) арифметические переменные с плавающей точкой;

в) булевы переменные.

Переменная задается одним оператором, называемым оператором описания переменной:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: