Сохраняемые величины

В GPSS можно определить глобальные переменные, начальные значения которых могут быть заданы перед моделированием и к которым можно обратиться из любого места модели в любой момент времени. Эти переменные называют сохраняемыми величинами (ячейками).Совокупность логически связанных между собой ячеек образует матрицу (аналог массива). [4] Значения сохраняемых величин изменяются только при прямом указании пользователя.

Сохраняемые величины могут принимать положительные и отрицательные значения. Стандартный числовой атрибут Xj (Х$<имя ячейки>) дает значение соответствующей сохраняемой величины. Например, X2 – значение ячейки с номером 2; X$DAY – значение ячейки с именем DAY.

C матрицами связан стандартный числовой атрибут MXj (m, n) – значение, записанное в строке т и в столбце n матрицы j или МХ$<имя матрицы> (m,n), если матрица имеет символьное имя.

СЧА сохраняемой величины может быть использован для косвенного задания данных, а также как аргумент функций и таблиц.

Перед использованием матрица определяется оператором описания MATRIX. Начальные значения ячеек и матриц можно задать c помощью оператора описания INITIAL. Допускается косвенная адресация ячеек, матриц, а также их строк и столбцов.

Оператор INITIAL (ИНИЦИАЛИЗИРОВАТЬ). Сохраняемые величины должны быть инициализированы перед началом моделирования c помощью оператора INITIAL, так как если в процессе моделирования происходит обращение к сохраняемой величине, которая не была задана, интерпретатор выдает ошибку. Формат оператора:

INITIAL А[,В],

где А – имя сохраняемой величины;

В – начальное значение (по умолчанию – 1).

Примеры записи оператора INITIAL.

1. INITIAL X33,351.37 – ячейке c номером 33 присваивается начальное значение 351.37.

2. NITIAL X$DEF,Q$POD – ячейке с именем DEF присваивается начальное значение, равное текущей длине очереди с именем POD.

3. INITIAL MX8(2,4),-53 – значение -53 записывается в строку 2, столбец 4 матрицы 8.

4. INITIAL MX$COST(l,3),22 – значение 22 записывается в строку 1, столбец 3 матрицы COST.

Блок SAVEVALUE (СОХРАНИТЬ ВЕЛИЧИНУ). Значение сохраняемой величины изменяется при входе транзакта в блок SAVEVALUE. Его формат:

SAVEVALUE A[+,-],B,

где А – номер или символьное имя сохраняемой величины;

В – величина, используемая для модификации (число или СЧА).

Блок SAVEVALUE может быть использован как в режиме замещения величины, так и в режиме увеличения или уменьшения. В первом случае когда транзакт входит в блок SAVEVALUE, величина, стоящая в операнде В, становится значением сохраняемой ячейки, номер (или символическое имя) которой записан в операнде А. В режиме увеличения (уменьшения) предыдущее значение сохраняемой величины увеличивается (уменьшается) на значение, заданное операндом В (знак «+»).

Примеры записи блока SAVEVALUE.

1. SAVEVALUE P5,V$ALF – при входе транзакта в блок SAVEVALUE прежде всего вычисляется величина переменной ALF. Полученный результат присваивается сохраняемой величине, номер которой записан в параметpe P5 активного в текущий момент транзакта.

2. SAVEVALUE 5+,X2 – при входе транзакта в блок значение сохраняемой величины номер 5 увеличивается на значение сохраняемой величины с номером 2;

3. SAVEVALUE PROFIT-,FN$COSTS – при входе транзакта в блок величина с именем PROFIT уменьшается на вычисленное значение функции с именем COSTS.

4. SAVEVALUE GR1,–155 – при входе транзакта в блок значение сохраняемой величины с именем GR1 замещается числом –155.

5. SAVEVALUE 3,(25.75#X$NUM1+Q4) – при входе транзакта в блок вычисляется значение выражения в скобках и присваивается ячейке номер 3.

Каждая матрица должна быть объявлена до ее использования, т. е. должна иметь оператор описания. Формат оператора:

имя матрицы MATRIX А,В,С,[D],[E],[F],[G],

где А – не используется (оставлен для совместимости с более старыми версиями GPSS);

В – число строк матрицы (целое положительное);

С – число столбцов матрицы (целое положительное).

Операнды D, E, F, G задают максимальное количество элементов в третьем, четвертом, пятом и шестом измерениях соответственно.

Блок MSAVEVALUE используется для записи значений в матрицы, а также для увеличения или уменьшения значений элементов матриц. Его формат:

MSAVEVALUE A[+,-],В,C,D,

где А – имя матрицы;

В – номер строки матрицы;

С – номер столбца матрицы;

D – величина, используемая для модификации.

Все операнды являются обязательными. Операнды А, В и C могут быть именем, положительным целым числом, выражением в скобках, СЧА или СЧА*параметр. Аналогично блокам ASSIGN и SAVEVALUE блок может быть использован как в режиме замещения величины, так и в режиме увеличения или уменьшения.

Когда транзакт входит в блок MSAVEVALUE, то анализируется операнд А и ищется матрица c указанным именем. Соответствующий элемент матрицы определяется содержимым операндов В и C.


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



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