Переменные в GPSS/PC предназначены для вычислений арифметических и логических выражений. Имеются два основных вида переменных: арифметические и логические. Ниже рассматриваются арифметические переменные, предназначенные для вычисления числовых выражений. Логические переменные, принимающие значения 0 или 1, применяются значительно реже; они рассматриваются в документации по системе GPSS/PC.
Арифметические переменные объявляются в начале текста GPSS-моде ли (до первого оператора GENERATE) в следующей форме:
Метка FVARIABLE выражение
Метка — это имя переменной, используемое для ссылок на нее.
Значение переменной — это значение указанного в ее объявлении выражения. В выражении могут указываться числа (только целые!), любые СЧА, ссылки на функции и на другие переменные. В выражении используются обычные математические операции: "+" — сложение, "-" — вычитание, "#" — умножение, "/" — деление, "^" — возведение в степень, "@" — деление по модулю. Разрешается использовать скобки. Если требуется использовать в выражении дробное число, то его следует записать в виде числителя и знаменателя (например, 3/10, а не 0.3).
Внимание! Для операции умножения используется знак "#", а не "*".
Ссылки на переменные в операторах GPSS/PC указываются в следующем виде: V$имя_переменной.
Важное (но не единственно возможное) применение переменных — имитация НСВ (переменные при этом используются совместно с функциями).
Пример 2.18 (имитация НСВ, распределенной по закону Эрланга k-го порядка). НСВ, распределенная по закону Эрланга k-го порядка — это сумма k НСВ, каждая из которых распределена по пуассоновскому закону. Можно доказать, что для имитации НСВ X, распределенной по закону Эрланга k-го порядка, со средним значением (математическим ожиданием), равным m, может использоваться следующая формула: X = (m/k)* *(X1+X2+…+Xk), где X1,X2,…,Xk — экспоненциальные НСВ с математическим ожиданием, равным 1. Например, для имитации НСВ, распределенной по закону Эрланга 3-го порядка со средним значением m=6, можно использовать следующую переменную (совместно с функцией XPDIS, имитирующей экспоненциальную НСВ с математическим ожиданием, равным 1).
XPDIS FUNCTION RN1,C24
….. см. таблицу соответствия на стр.70. …..
ERL FVARIABLE 2#(FN$XPDIS+FN$XPDIS+FN$XPDIS)
Пример 2.19 (имитация НСВ, распределенной по гауссовскому закону). Из теории вероятностей известно, что гауссовская НСВ с математическим ожиданием m и среднеквадратическим отклонением s может быть получена по формуле: X = m + s Xн, где Xн — НСВ, распределенная по гауссовскому закону с математическим ожиданием 0 и среднеквадратическим отклонением 1. Например, для имитации гауссовской НСВ с m=5 и s = 0,2 может использоваться следующая переменная (совместно с рассмотренной ранее функцией SNORM):
SNORM FUNCTION RN1,C25
….. см. таблицу соответствия на стр.71 …..
GAUSS FVARIABLE 5+(2#FN$SNORM)/10
Пример 2.20. Имитируется работа управляющей ЭВМ, обрабатывающей сигналы от технологического оборудования. Поток сигналов, поступающих на ЭВМ, представляет собой поток Эрланга 2-го порядка; интенсивность потока сигналов — 0,1 сигнала/с (т. е. средний интервал времени между сигналами равен 10 с). Время обработки сигналов представляет собой НСВ, распределенную по гауссовскому закону; в среднем обработка одного сигнала занимает 8 с, среднеквадратическое отклонение — 0,4 с. Требуется разработать GPSS-модель для анализа работы управляющей ЭВМ в течение одного часа.
10 SIMULATE
20 SNORM FUNCTION RN1,C25
….. см. таблицу соответствия на стр.71 …..
30 GAUSS FVARIABLE 8+(4#FN$SNORM)/10
40 XPDIS FUNCTION RN1,C24
….. см. таблицу соответствия на стр.70 …..
50 ERL FVARIABLE 5#(FN$XPDIS+FN$XPDIS)
60 ;
70 GENERATE V$ERL
80 QUEUE 1
90 SEIZE COMP
100 DEPART 1
110 ADVANCE V$GAUSS
120 RELEASE COMP
130 TERMINATE
140 GENERATE 3600
150 TERMINATE 1
Приведем пример GPSS-модели, в которой используется переменная, не связанная с имитацией НСВ.
Пример 2.21. На ВЦ поступают задачи четырех типов: A (20%), B (30%), C (15%), D (35%). Средний интервал времени между задачами составляет 2 часа ± 30 минут. Время решения задач — случайная величина, распределенная по экспоненциальному закону; в среднем решение задачи типа A занимает 40 минут, B — 20 минут, C — 2 часа, D — 1 час 40 минут. На ВЦ имеется одна ЭВМ. За каждую минуту работы ЭВМ, затраченную на решение задачи, заказчик платит 5 денежных единиц. Требуется разработать GPSS-модель для анализа работы ВЦ в течение 100 часов. Предусмотреть подсчет задач каждого типа, а также величины прибыли от решения всех задач.
10 SIMULATE
20 TIP FUNCTION RN1,D4
0.2,1/0.5,2/0.65,3/1,4
30 SRED FUNCTION P1,D4
1,40/2,20/3,120/4,100
40 XPDIS FUNCTION RN1,C24
….. см. таблицу соответствия на стр.70 …..
50 VREMRESH FVARIABLE P2#FN$XPDIS
60 PRIB FVARIABLE P3#5
70 GENERATE 120,30
80 ASSIGN 1,FN$TIP
90 ASSIGN 2,FN$SRED
100 ASSIGN 3,FN$VREMRESH
110 QUEUE OCH
120 SEIZE COMP
130 DEPART OCH
140 ADVANCE P3
150 RELEASE COMP
160 SAVEVALUE SUMPRIB+,V$PRIB
170 SAVEVALUE P1+,1
180 TERMINATE
190 GENERATE 6000
200 TERMINATE 1
Устройство, имитирующее работу ЭВМ, обозначено как COMP, очередь к ЭВМ — OCH. В первый параметр транзакта, имитирующего задачу, записывается номер, обозначающий тип задачи (1,2,3,4 для типов A, B,C, D соответственно), а во второй — среднее время решения задачи данного типа
(см. примеры 2.13, 2.14). Для расчета времени решения каждой конкретной задачи используется переменная VREMRESH: произведение значения 2-го параметра на величину функции XPDIS (см. раздел 2.14.2). Время решения задачи записывается в третий параметр транзакта (оператор 100). Для подсчета прибыли от решения каждой задачи введена переменная PRIB: произведение значения третьего параметра транзакта (т. е. времени решения данной задачи) на 5. Суммарная прибыль подсчитывается с помощью сохраняемой величины SUMPRIB.
Для подсчета количества задач каждого типа используется оператор SAVEVALUE P1+,1 (увеличение на единицу сохраняемой величины, номер которой записан в первом параметре транзакта). Таким образом, данный оператор создает ТРИ сохраняемых величины (с числовыми именами 1,2,3) .