Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции - Основы GPSSPC.doc
Скачиваний:
74
Добавлен:
02.05.2014
Размер:
425.98 Кб
Скачать

4. Задание распределений, отличных от равномерного.

Во всех рассмотренных выше примерах все случайные интервалы времени (генерации, задержки транзактов) подчинялись равномерному закону распределения. Для получения случайных величин с другими законами распределения в GPSS/PC используются вычислительные объекты: переменные и функции (переменные здесь не рассматриваются).

Прежде всего, источником случайности в GPSS/PC являются встроенные генераторы случайных чисел (ГСЧ), которые вырабатывают случайные величины с равномерными распределениями. Для обращения к генератору достаточно записать системный СЧА RN с номером генератора, например RN1, RN4. Правда, ГСЧ GPSS/PC генерируют величины не на отрезке [0;1], а целые случайные числа, равномерно распределенные от 0 до 999, но их нетрудно привести к указанному отрезку делением на 1000. Однако если встроенные ГСЧ RNj используются в качестве аргументов функций, то их значения в этом контексте интерпретируются как дробные числа от 0 до 0,999999.

Как известно, для моделирования случайной величины Х с заданной функцией распределения F(x)=Pr(Xx) используется метод обратной функции [1, 5], который состоит в решении уравнения r=F(x), где r – случайная величина, распределенная равномерно на отрезке [0, 1]. Для некоторых случайных величин обратную функцию x=F-1(r) удается найти в явном виде, и тогда полученные по этой формуле для разных значений r случайные величины имеют заданную функцию распределения F(x).

Так, например, значения случайной величины Х с равномерным распределением на отрезке [a, b] вычисляются по формуле x=F-1(r)=a+r(b-a). В GPSS/PC в блоках GENERATE А,В и ADVANCE А,В, когда операнд В задан в виде модификатора-интервала, a=А-В и (b-a)=2В, однако обратной функции в GPSS соответствует формула Х=А-В+RN1*(2B+1). Прибавление 1 обусловлено тем, что в GPSS отбрасывается дробная часть вычисленного значения и если не прибавить 1, то блоки будут вырабатывать случайные величины, распределенные равномерно на отрезке [A-B,A+B-1], а не на отрезке [A-B,A+B]. Все эти вычисления интерпретатор выполняет без участия пользователя.

Для задания распределений, отличных от равномерного, используются вычислительные объекты типа функция, где также применяется метод обратной функции. Однако в GPSS/PC обратная функция x=F-1(r), если даже ее удалось найти в явном виде, задается в виде таблицы определенного количества координат (ri, xi) ее точек, где ri – значение аргумента (значение ГСЧ) и xi – значение обратной функции. Каждый объект типа функция определяется перед началом моделирования с помощью оператора определения FUNCTION (функция), имеющего следующий формат:

имя FUNCTION A,B.

Здесь имя – уникальное имя функции, используемое для ссылок на нее; A – стандартный числовой атрибут, являющийся аргументом функции; B – тип функции и количество точек таблицы, задающей обратную функцию.

Таблица с координатами точек обратной функции располагается в строках, следующих непосредственно за оператором FUNCTION. Эти строки не должны иметь поля нумерации. Координаты (ri, xi) каждой точки в таблице отделяются друг от друга запятой. Пары координат отделяются друг от друга символом “/” и располагаются на произвольном количестве строк. Последовательность значений аргумента ri должна быть возрастающей.

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

Существует пять типов функций: дискретные, непрерывные, списковые и атрибутивные (дискретные и табличные). Здесь рассматриваются только дискретные и непрерывные числовые функции.

В определении дискретной числовой функции ее аргументом, задаваемым операндом А, должен быть один из ГСЧ, а значение операнда В зависит от количества точек в таблице координат. Например, если таблица содержит 6 точек, то операнд B должен иметь значение D6, где символ D (от слова Discreet – дискретный) задает тип функции. Оператор для определения соответствующей функции может иметь следующий вид:

DISC FUNCTION RN3, D6

r1, x1/r2, x2/r3, x3/r4, x4/r5, x5/r6, x6

При вычислении значения дискретной функции интерпретатор обращается к ГСЧ, указанному в поле A. Полученное значение сравнивается по условию “≤” последовательно со всеми упорядоченными по возрастанию значениями ri координаты r до выполнения этого условия при некотором i. Значением функции становится целая часть соответствующего значения xi.

Пусть случайные интервалы прихода заявок в СМО принимают значения 30, 50, 80, 90 и 120 секунд с вероятностями 0.1, 0.3, 0.2, 0,3 и 0.1 соответственно. На рис. 11 для этой случайной дискретной величины приведены графики функции распределения и обратной функции. Очевидно, что точки a b c d и e однозначно идентифицируют обратную функцию и в GPSS/PC координаты именно этих точек задаются в таблице оператора определения этой дискретной функции (единица МВ равна одной секунде):

DISC FUNCTION RN1, D5

.1, 30/.4, 50/.6, 80/.9, 90/1, 120

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

для дискретной случайной величины.

Если в GPSS-модели в каком-нибудь блоке GENERATE (ADVANCE) в операнде А задана ссылка FN$DISC на данную функцию, то интервалы прихода (задержки) транзактов имеют заданное дискретное распределение.

В определении непрерывной числовой функции операнд А также должен быть один из ГСЧ, а значение операнда В начинается с символа С (от слова Continue – непрерывный), а следом задается количество точек в таблице координат. Например, если таблица содержит 10 точек, то операнд B должен иметь значение С10. Оператор для определения соответствующей функции может иметь следующий вид:

DISTR FUNCTION RN1, C10

r1, x1/r2, x2/r3, x3/r4, x4/r5, x5/r6, x6/r7, x7

r8, x8/r9, x9/r10, x10

Вычисление непрерывной функции производится следующим образом. После обращения к ГСЧ (в нашем примере – генератор RN1), определяется интервал (ri, ri+1), на который выпало полученное значение r аргумента-генератора. Затем на этом интервале выполняется линейная интерполяция с использованием соответствующих значений xi и xi+1. (рис. 12) и значение FN функции определяется по формуле:

FN=xi+(r-ri).

Рис. 12. Определение значения обратной функции.

Целая часть полученного таким образом значения FN (дробная часть отбрасывается – усечение значения функции) и используется в качестве окончательного значения функции. Однако если функция служит операндом B блоков GENERATE или ADVANCE, усечение производится только после умножения значения функции на значение операнда A.

Не трудно убедится, что равномерные распределения можно задать и с помощью оператора определения непрерывной функции. Так, например, используемое ранее в примерах равномерное на [50,90] распределение интервалов прихода транзактов можно задать в следующем виде:

RAVN FUNCTION RN4, C2

0,50/1,91

Следует обратить внимание, что во второй паре ордината равна 91.

В случае экспоненциального распределения с параметром λ обратная функция находится в явном виде x=(1/λ)[-ln(1-r)] и непосредственно из этой формулы можно было бы определить значения пар чисел (координаты точек) в таблице оператора определения функции и в операнде А блоков GENERATE или ADVANCE задать ссылку на данную функцию. Однако такое построение таблиц функций является не гибким, поскольку для каждого значения параметра λ придется формировать отдельную таблицу.

В GPSS/PC используется другой, значительно более гибкий, подход. Известно, что 1/λ (первый множитель в обратной функции) – это среднее значение экспоненциально распределенной случайной величины, а также, что при использовании функции в поле B блоков GENERATE и ADVANCE вычисление интервалов времени производится путем умножения операнда A (среднее значение) на вычисленное значение функции. Отсюда следует, что операнд А в данных блоках должен быть равен 1/λ, а операнд В – ссылка на функцию, которая в табличном виде задает зависимость x=-ln(1-r).

Оператор FUNCTION с такой таблицей, содержащей 24 точки для обеспечения достаточной точности аппроксимации, имеет следующий вид:

EXPDIS FUNCTION RN1,C24

0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38/.8,1.6/.84,1.85

.88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9/.99,4.6

.995,5.3/.998,6.2/.999,7/.9998,8

Использование функций для получения случайных чисел с заданным распределением дает хотя и менее точный результат за счет погрешностей аппроксимации, но зато с меньшими вычислительными затратами (несколько машинных операций на выполнение линейной интерполяции). Чтобы к погрешности аппроксимации не добавлять слишком большую погрешность усечения, среднее значение, задаваемое в операнда А, при использовании экспоненциального распределения должно быть достаточно большим (не менее 50). Например, если А=10, то значение произведения А*FN будет меньше 1 примерно в 9,6% случаях (в случае А=50 – 1,9%) . Это значит, что у 9,6% транзактов интервалы времени прихода или задержки в блоках GENERATE или ADVANCE равны 0, что не допустимо много. Большее значение А достигается корректным выбором единицы моделирования.

В случае других законов распределения интервалов времени, когда не удается решить уравнение r=F(x) в явном виде, то для ее решения и соответственно для построения таблицы в операторе определения обратной функции могут быть использованы численные методы. Ссылку на такую функцию можно задать либо в поле А, либо в поле В. В последнем случае значение операнда А должно быть равно 1.