Арифметические переменные




Арифметические переменные аналогичны арифметическим выражениям в алгоритмических языках.

Арифметическая переменная с фиксированной точкой задается оператором VARIABLE, называемым оператором описания переменной, который содержит арифметическое выражение.

 

Формат оператора VARIABLE:

<имя> VARIABLE <A>

 

В поле операнда <A> записывается выражение, которое используется для вычисления значения переменной.

 

При обращении к переменной используется СЧА V<номер переменной> или V$<имя переменной>.

 

ПРИМЕР 5.

Оператор описания VARIABLE определяет арифметическую переменную RSL:

RSL VARIABLE QT$WAITL+3-FN$DSTRB#P7

При любом обращении к переменной RSL (т.е. к СЧА V$RSL) ее значение вычисляется как текущая длина очереди WAlTL (QT$WAITL – СЧА регистратора очереди) плюс константа 3 и минус произведение значения функции DSTRB (FN$DSTRB – СЧА функции) на значение параметра 7-го транзакта, обрабатываемого в данный момент (Pj – СЧА транзакта).

 

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

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

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

В GPSS World выражения, записанные в круглых скобках, обрабатываются вычислительной процедурой встроенного алгоритмического языка PLUS. Поэтому их можно использовать в качестве операндов блоков и операторов языка GPSS. Например, выражение, описанное в примере 5, может быть использовано таким образом:

ADVANCE (QT$WAITL+3-FN$DSTRB#P7)

 

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

Формат операторов описания арифметических переменных c плавающей точкой идентичен рассмотренному выше формату операндов описания арифметических переменных за исключением того, что в поле операции записывается слово FVARIABLE. Правила написания операторов те же, что и для арифметических переменных. Арифметическая переменная и переменная c плавающей точкой не могут иметь одинаковые номера. Если они имеют одинаковые номера, то при вычислении используется более позднее из двух описаний.

Различие результатов, полученных при вычислении арифметических переменных c плавающей точкой и фиксированной, демонстрирует пример 6.

 

ПРИМЕР 6.

FLOAT FVARIABLE 10#(ll/3)

FIXED VARIABLE 10#(ll/3)

Значение переменной FLOAT равно 36, так как константа 10 умножается на 3,67 и от результата 36,7 взята целая часть. Переменная FIXED равна 30, так как результат промежуточной операции деления округляется до 3.

 

Для переменных c плавающей точкой не допускается операция деления по модулю.

Использование дробных констант допускается только при описании переменных c плавающей точкой.

Стандартный числовой атрибут V$<имя переменной> используется для обращения к значениям как арифметических переменных, так и переменных c плавающей точкой. Способ вычисления переменной определяется оператором описания этой переменной.

 

 

Булевы переменные

 

Булевы переменные позволяют принимать решения в зависимости от значений СЧА и состояния объектов GPSS, используя для этого только одно выражение.

Булевы переменные – это логические выражения, состоящие из различных СЧА и (или) других булевых переменных. В булевой переменной проверяется одно или несколько логических условий. Результатом проверки является единица (истина), если условия выполняются, и ноль (ложь) – в противном случае.

Стандартный числовой атрибут BV$<имя переменной> используется для обращения к значениям булевых переменных.

При описании булевых переменных используются три типа операторов: логические, булевы и операторы отношения (условные операторы).

Логические операторы связаны c такими ресурсами, как устройства, накопители и логические ключи. Они используются для определения состояния данных объектов. Логические операторы, используемые в GPSS, представлены в таблице 5

 

Таблица 5 – Логические операторы, используемые в GPSS

 

Логические операторы Значение оператора, отражающее состояние ресурса
FUj или Fj Равно 1, если устройство j занято или обслуживает прерывание, иначе – 0
FNUj Равно 1, если устройство j не занято и не обслуживает прерывание, иначе – 0
Ij Равно 1, если устройство j обслуживает прерывание, иначе –0
NIj Равно 1, если устройство j не обслуживает прерывание, иначе – 0
NUj Равно 1, если устройство j не используется, в противном случае – 0
UJ Равно 1, если устройство j используется, иначе – 0
SFJ Равно 1, если накопитель j заполнен, иначе – 0
SNFj Равно 1, если накопитель j не заполнен, иначе – 0
SEj Равно 1, если накопитель j пуст, иначе – 0
SNEj Равно 1, если накопитель j не пуст, иначе – 0
SVj Равно 1, если накопитель j находится в состоянии использования, иначе – 0
SNVJ Равно 1, если накопитель j не используется, иначе – 0
LRj Равно 1, если логический ключ j выключен, иначе – 0
LSj Равно 1, если логический ключ j включен, иначе – 0

 

ПРИМЕР 7.

VAR1 BVARIABLE FNU$CHAN

Переменная VAR1 принимает значение «истина», если устройство с именем CHAN не занято и не обслуживает прерывание.

 

Условные операторы (операторы отношения) выполняют алгебраическое сравнение операндов. Операндами могут быть константы или стандартные числовые атрибуты. Операторы отношения записываются в кавычках:

‘G’ (Greater) – больше;

‘L’ (Less) – меньше;

‘E’ (Equal) – равно;

‘NE’(Not Equal) – не равно;

‘LE’ (Less than or Equal) – меньше или равно;

‘GE’ (Greater than or Equal) – больше или равно.

 

ПРИМЕР 8.

VAR2 BVARIABLE V$FIXED’G’10

Переменная VAR2 принимает значение «истина», если значение переменной с именем FIXED больше 10.

 

Булевы операторы: ‘OR’ – оператор «или», и ‘AND’ – оператор «и». Оператор «или» проверяет, выполняется ли хотя бы одно из проверяемых условий. Оператор «и» требует выполнения обоих условий. В поле операндов используются комбинации логических, условных и булевых операторов.

 

ПРИМЕР 9.

VAR3 BVARIABLE (V$FIXED’G’10)’AND’ FNU$CHAN

Переменная VAR3 принимает значение «истина», если значение переменной с именем FIXED больше 10 и одновременно устройство с именем CHAN не занято и не обслуживает прерывание.

 

 

Функции

 

В GPSS рассматриваются пять типов функций:

1) дискретная числовая (D),

2) непрерывная числовая (C),

3) табличная числовая (L),

4) дискретная атрибутивная (E),

5) табличная атрибутивная (M).

 

Дискретная функция представляет собой кусочно-постоянную функцию, которая состоит из горизонтальных ступеней (Рисунок 3). Непрерывная функция представляет собой кусочно-непрерывную функцию. Непрерывная функция в GPSS состоит из соединенных между собой прямых отрезков и представляет собой ломаную линию (рисунок 4). Чтобы задать дискретную функцию, необходимо задать координаты крайних правых точек горизонтальных отрезков. Для непрерывной функции необходимо задать координаты всех точек, которые являются концами отрезков.

 

Рисунок 3 – Дискретная функция

 

 

Рисунок 4 – Непрерывная функция

 

Действия, необходимые для определения GPSS-функции:

1.Присвоить функции имя. Имя может быть числовым либо символьным.

2. Задать аргумент функции. Аргументом могут быть:

­ ссылка на генератор случайных чисел, используемый для розыгрыша в соответствии c распределением, заданным функцией;

­ стандартный числовой атрибут;

­ ссылка на любую другую функцию.

3. Задать тип функции и число пар аргумент/значение функции.

4. Задать значения пар аргумент/значение функции.

 

 

Для задания GPSS-функции используются два оператора:

­ оператор определения функции,

­ оператор описания координат функции.

 

Формат оператора определения функции:

<имя> FUNCTION <A>,<B>

 

Поля операндов имеют следующий смысл:

­ <A> – датчик случайных чисел или СЧА,

­ <B> – Dn либо Сn, где D определяет дискретную функцию, С определяет непрерывную функцию; n – для дискретной функции –число различных значений, получаемых функцией (количество горизонтальных отрезков), для непрерывной функции – число, на единицу большее числа отрезков, составляющих функцию (количество точек).

 

Формат оператора описания координат функции:

X1,Y1/X2,Y2/…Xn,Yn

где Xi и Yi – координаты i-й точки функции (в случае моделирования случайной величины Xi является i-й кумулятивной частотой, Yi – соответствующим значением случайной величины).

 

Особенности оператора описания координат функции:

­ основной единицей информации оператора описания координат функции является пара значений Xi, Yi (координаты точки i);

­ значения координат Xi и Yi – одной точки функции разделяются запятой;

­ последовательные наборы координат разделяются знаком «/»;

­ координаты Xi и Yi – относящиеся к одной точке, задаются одним оператором, т.е. пара координат одной точки не должна разрываться;

­ все строки описания координат функции должны начинаться c первой позиции;

­ во всех случаях значения аргумента должны удовлетворять следующим неравенствам: X1<X2<…<Xi<…<Xn.

 

Значение функции является ее стандартным числовым атрибутом. Способ ссылки на этот атрибут зависит от того, как задано имя функции: в символьном или числовом виде. Если имя числовое, то к значению функции можно обратиться через FNj (где j – номер функции), если имя символьное – через FN$<имя функции>.

 

 

ПРИМЕР 10.

Необходимо смоделировать дискретную случайную величину, заданную следующей таблицей (Таблица 6).

 

Таблица 6 – Дискретная случайная величина

Интервал Относительная частота Кумулятивная частота Диапазон Значение случайной переменной
  0.20 0.20 [0.0-0.20]  
  0.20 0.40 ]0.20-0.40]  
  0.20 0.60 ]0.40-0.60]  
  0.22 0.82 ]0.60-0.82]  
  0.18 1.00 ]0.82-1.00]  

 

GPSS-функцию можно определить таким образом:

SERV FUNCTION RN4,D5

0.20,2/0.40,5/0.60,8/0.82,9/1,12

 

Графическая интерпретация функции показана на рисунке 5.

 

Рисунок 5 – Графическая интерпретация дискретной функции

 

Особенности вычисления дискретных и непрерывных GPSS-функций:

1. В начальной фазе выполняемые действия при вычислении дискретной и непрерывной функции одинаковы. При обращении к функции определяется значение ее аргумента. Потом просматривается упорядоченный ряд значений Х1<Х2<...<Хi<...<Хn для определения интервала, в который попало значение аргумента (пусть это будет интервал между точками i–1 и i).

2. Если функция дискретная, то второй элемент соответствующей пары Xi, Yj является значением функции. Если функция непрерывная, выполняется линейная интерполяция для пары точек i–1 и i, находящихся на концах интервала значений функции, в который попало значение аргумента. Целая часть результата интерполяции и является значением функции.

3. Если значение аргумента функции больше значения координаты Хn последней точки, то в обоих случаях (дискретной и непрерывной функции) значениями функции являются значения Yn.

 

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

 

ПРИМЕР 11.

FUN1 FUNCTION P1,L5

1,10/2,12/3,5/4,20/5,25

 

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

 

ПРИМЕР 12.

FUN2 FUNCTION X$CAR,E4

21,V$RED/25,X35/30,10/36,S$RED

 

Значение функции FUN2 вычисляется по правилу вычисления значения дискретной числовой функции:

X$CAR<=21 FN$FUN2=V$RED

22<=X$CAR<=25 FN$FUN2=X35

26<=X$CAR<=30 FN$FUN2=10

31<=X$CAR<=36 FN$FUN2= S$RED

 

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

 

ПРИМЕР 13.

FUN3 FUNCTION P1,M5

1,V1/2,P12/3,X35/4,Q$QUICK/5,99

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2021-01-31 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: