Главная / Моделирование систем / Переменные в gpss/pc

Переменные в gpss/pc

Переменные в 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) .