logo
Имитац

Определение и использование функций

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

Имя FUNCTION A,Bn

Операнд А – аргумент функции, операнд В состоит из одной буквы, определяющей тип функции и n – положительного числа, задающего количество точек функции. В паре аргумент отделяется от значения запятой, пары друг от друга / (слэджем), пробелы недопустимы.

В GPSS есть 5 типов функций:

D – дискретная числовая;

С – непрерывная числовая функция;

Е – дискретная атрибутивная;

L – списковая числовая;

М – списковая атрибутивная.

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

Пример. Пусть на АЗС 10 % клиентов заправляют по 10 литров бензина, 60 % – по 20 литров, 25 % – по 30 и тогда 5 % – по 40литров.

Имеем таблицу значений случайной величины:

Количество литров

10

20

30

40

Вероятность

0,1

0,6

0,25

0,05

Чтобы понять как разыгрывается случайная величина (СВ), построим по таблице функцию распределения СВ (рис. 3.1), разбив ось на интервалы и найдя накопленные частоты попадания в интервал.

Рис. 3.1. График дискретной функции распределения

Описание функции, соответствующей этому рисунку имеет вид:

KOL FUNCTION RN1,D4

.1,10/.7,20/.95,30/1,40

Итак, генератор случайных чисел RN1 разыгрывает число в интервале [0;.999], например 0,835. Это число попадает в интервал [.7;.95], значит значение функции – количество литров заливаемого бензина равно 30 (см. рис. 3.1), причём случайные числа из этого интервала будут появляться с заданной вероятностью 0,95 – 0,7 = 0,25.

Обратим внимание, что значение функции допускается не только в виде действительного числа, но и имени (т. к. имена нумеруются), что удобно использовать для перераспределения в блоке TRANSFER.

PER FUNCTION RN2,D4

.2,MET1/.5,MET2/.7,MET3/1,MET4

……………………………

TRANSFER FN,PER

MET1…………………

MET2…………………

MET3…………………

MET4…………………

При моделировании непрерывной функции происходит линейная интерполяция, узлами интерполяции являются заданные точки. Рассмотрим в качестве примера моделирование случайной переменной, равномерно распреде­ленной на интервале [2; 5]. Зададим функцию:

INN FUNCTION RN2,C2

0,2/1,6

Так как максимальное значение, которое может выдать генера­тор случайных чисел, равно 0,999, то если в качестве второй точки укажем (1,5), значение 5 никогда не будет достигнуто. Поэтому необходимо указать пару (1,6). Если генератор выдаст число 0,999, то функция, которая показана на рисунке, примет значение 5,996, целая часть которого равна 5 (это и будет значением GPSS-функции INN). В случае, если генератор случайных чисел RN2 вы­даст значение 0,4, GPSS-функция INN примет значение 3,6. Если необходимы целочисленные значения, то можно воспользоваться встроенной функцией INT – взятия целой части:

INT(FN$INN)

Из непрерывных функций, задающих известные распределения ранее часто встречалась функция XPDIS, теперь можно пользоваться библиотекой встроенных функций, см. [5, c.23-25].

Функции типа E, L, M расширяются возможности для значений функций, это могут быть СЧА, выражения в скобках, аргумент рассматривается как порядковый номер. Подробнее см. [2, c. 205].