Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на имитац моделирование.doc
Скачиваний:
6
Добавлен:
25.11.2019
Размер:
1.57 Mб
Скачать

Вопрос 44 Сохраняемые величины. Операторы initial и savevalue.

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

В отличие от параметров транзакта, приоритета и отметки вре­мени, которые теряются в момент выхода транзакта из модели, ячей­ки доступны на протяжении всего процесса моделирования. Значения сохраняемых величин не подсчитываются интерпретатором автома­тически (как СЧА устройств, очередей, МКУ и т.п.), А задаются и из­меняются программистом.

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

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

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

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

1. Допускается косвенная адресация ячеек, матриц, А также их строк и столбцов. Например: X*P2 – значение ячейки c номером, который сохраняется в параметре 2; MX*P5(5,2) – элемент (5,2) матрицы, номер которой записан в параметре 5; MX3(P4,X2) – значение, записанное в строке P4 и в столбце X2 мат­рицы 3.

2. Недопустимой является запись такого вида: MXl(MX2(l,2),MX3(3,4)), поскольку нельзя задавать номера строк и столбцов матрицы c помощью СЧА матриц.

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

Ta6лицa 4.39

Поле

Информация в поле

Метка

Не используется

Операция

INITIAL

Операнд А

Имя сохраняемой вели­чины

Операнд В

Начальное значение

Пример 4.38

INITIAL X$TIMER,1000000

Ячейке TIMER присваивается начальное значение 1000000;

INITIAL X3,2S

Ячейке c номером 3 присваивается начальное значение 25.

INITIAL MX8(2,4),-53

Величина – 53 записывается в строку 2, столбец 4 матрицы 8.

INITIAL MX$COST(l,3),22

Величина 22 записывается в строку 1, столбец 3 матрицы COST.

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

Его формат:

SAVEVALUE A[+,-],B

Таблица 4.40

Операнд

Значение

Результат по умолча­нию

А

Номер или символьное имя сохраняемой величины

Ошибка

В

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

Ошибка

Подобно блоку ASSIGN блок SAVEVALUE может быть ис­пользован как в режиме замещения величины, так и в режиме увели­чения или уменьшения. В режиме увеличения предыдущее значение сохраняемой величины увеличивается на значение, заданное операн­дом В, А в режиме уменьшения – уменьшается на это значение. Ре­жимы увеличения и уменьшения определяются введением соответственно знака «плюс» или «минус» перед запятой, разделяющей опе­ранды А и В.

Пример 4.39

SAVEVALUE P5,VSALPHA

При входе транзакта в блок SAVEVALUE прежде всего вычис­ляется величина переменной ALPHA. Полученный результат при­сваивается сохраняемой величине, номер которой записан в параметpe P5.

SAVEVALUE 5+,X2

При входе транзакта в блок величина X5 увеличивается на зна­чение величины X2.

SAVEVALUE PROFIT-,FN$COSTS

При входе транзакта в блок величина X$PROFIT уменьшается на значение функции FN$COSTS.