Смекни!
smekni.com

Моделирование на GPSS (стр. 4 из 13)

установленное оператором START равным 1. Таким образом, в этой мо-

дели гарантируется завершение прогона в определенный момент модель-

ного времени, а точное количество транзактов, прошедших через мо-

дель, непредсказуемо.

В приведенных примерах транзакты, входящие в модель через блок

GENERATE, в тот же момент модельного времени уничтожались в блоке

TERMINATE. В моделях систем массового обслуживания заявки обслужи-

ваются приборами (каналами) СМО в течение некоторого промежутка

времени прежде, чем покинуть СМО. Для моделирования такого обслужи-

вания, т.е. для задержки транзактов на определенный отрезок модель-

ного времени, служит блок ADVANCE (задержать), имеющий следующий

формат:

имя ADVANCE A,B

Операнды в полях A и B имеют тот же смысл, что и в соот-

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

входящие в блок ADVANCE, переводятся из списка текущих событий в

список будущих событий, а по истечении вычисленного времени задерж-

ки возвращаются назад, в список текущих событий, и их продвижение

по блок-схеме продолжается. Если вычисленное время задержки равно

0, то транзакт в тот же момент модельного времени переходит в сле-

дующий блок, оставаясь в списке текущих событий.

Например, в сегменте, приведенном на рис. 3, транзакты, посту-

пающие в модель из блока GENERATE через случайные интервалы време-

ни, имеющие равномерное распределение на отрезке [60;140], попадают

в блок ADVANCE. Здесь определяется случайное время задержки тран-

закта, имеющее равномерное распределение на отрезке [30;130], и

транзакт переводится в список будущих событий. По истечении времени

задержки транзакт возвращается в список текущих событий и входит в

блок TERMINATE, где уничтожается. Заметим, что в списке будущих со-

бытий, а значит и в блоке ADVANCE может одновременно находиться

произвольное количество транзактов.

GENERATE 100,40

ADVANCE 80,50

TERMINATE 1

В рассмотренных выше примерах случайные интервалы времени под-

чинялись равномерному закону распределения вероятностей. Для полу-

чения случайных величин с другими распределениями в GPSS/PC исполь-

зуются вычислительные объекты: переменные и функции.

Как известно, произвольная случайная величина связана со слу-

чайной величиной R, имеющей равномерное распределение на отрезке

[0;1], через свою обратную функцию распределения. Для некоторых

случайных величин уравнение связи имеет явное решение, и значение

случайной величины с заданным распределением вероятностей может

быть вычислено через R по формуле. Так, например, значение случай-

ной величины E с показательным (экспоненциальным) распределением с

параметром d вычисляется по формуле:

E= -(1/d) * ln(R)

Напомним, что параметр d имеет смысл величины, обратной математи-

ческому ожиданию E, а, следовательно, 1/d - математическое ожидание

(среднее значение) случайной величины E.

Для получения случайной величины R с равномерным распределени-

ем на отрезке [0;1] в GPSS/PC имеются встроенные генераторы случай-

ных чисел. Для получения случайного числа путем обращения к такому

генератору достаточно записать системный СЧА RN с номером генерато-

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

GPSS/PC дают числа не на отрезке [0;1], а целые случайные числа,

равномерно распределенные от 0 до 999, но их нетрудно привести к

указанному отрезку делением на 1000.

Проще всего описанные вычисления в GPSS/PC выполняются с

использованием арифметических переменных. Они могут быть целыми и

действительными. Целые переменные определяются перед началом моде-

лирования с помощью оператора определения VARIABLE

(переменная), имеющего следующий формат:

имя VARIABLE выражение

Здесь имя - имя переменной, используемое для ссылок на нее, а

выражение - арифметическое выражение, определяющее переменную.

Арифметическое выражение представляет собой комбинацию операндов,

в качестве которых могут выступать константы, СЧА и функции, зна-

ков арифметических операций и круглых скобок. Следует заметить,

что знаком операции умножения в GPSS/PC является символ # (номер).

Результат каждой промежуточной операции в целых переменных преобра-

зуется к целому типу путем отбрасывания дробной части, и, таким

образом, результатом операции деления является целая часть частного.

Действительные переменные 0определяются перед началом модели-

рования с помощью оператора определения FVARIABLE, имеющего тот же

формат, что и оператор VARIABLE. Отличие действительных переменных

от целых заключается в том, что в действительных переменных все

промежуточные операции выполняются с сохранением дробной части

чисел, и лишь окончательный результат приводится к целому типу отб-

расыванием дробной части.

Арифметические переменные обоих типов имеют единственный СЧА с

названием V, значением которого является результат вычисления ариф-

метического выражения, определяющего переменную. Вычисление выраже-

ния производится при входе транзакта в блок, содержащий ссылку на

СЧА V с именем переменной.

Действительные переменные могут быть использованы для получе-

ния случайных интервалов времени с показательным законом распреде-

ления. Пусть в модели из примера на рис. 3 распределения времени

поступления транзактов и времени задержки должны иметь показатель-

ный закон. Это может быть сделано так, как показано на рис. 4.

TARR FVARIABLE -100#LOG((1+RN1)/1000)

TSRV FVARIABLE -80#LOG((1+RN1)/1000)

GENERATE V$TARR

ADVANCE V$TSRV

TERMINATE 1

Рис. 4

Переменная с именем TARR задает выражение для вычисления ин-

тервала поступления со средним значением 100, вторая переменная с

именем TSRV - для вычисления времени задержки со средним значением

80. Блоки GENERATE и ADVANCE содержат в поле A ссылки на соот-

ветствующие переменные, при этом поле B не используется, так как в

поле A содержится случайная величина, не нуждающаяся в модификации.

Большинство случайных величин не может быть получено через

случайную величину R с помощью арифметического выражения. Кроме то-

го, такой способ является достаточно трудоемким, так как требует

обращения к математическим функциям, вычисление которых требует

десятков машинных операций. Другим возможным способом является

использование вычислительных объектов GPSS/PC типа функция.

Функции используются для вычисления величин, заданных таблич-

ными зависимостями. Каждая функция определяется перед началом моде-

лирования с помощью оператора определения FUNCTION (функция), имею-

щего следующий формат:

имя FUNCTION A,B

Здесь имя - имя функции, используемое для ссылок на нее; A

стандартный числовой атрибут, являющийся аргументом функции; B -

тип функции и число точек таблицы, определяющей функцию.

Существует пять типов функций. Рассмотрим вначале непрерывные

числовые функции, тип которых кодируется буквой C. Так, например,

в определении непрерывной числовой функции, таблица которой соде-

ржит 24 точки, поле B должно иметь значение C24.

При использовании непрерывной функции для генерирования слу-

чайных чисел ее аргументом должен быть один из генераторов случай-

ных чисел RNj. Так, оператор для определения функции показательного

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

EXP FUNCTION RN1,C24

Особенностью использования встроенных генераторов случайных чисел

RNj в качестве аргументов функций является то, что их значения в

этом контексте интерпретируются как дробные числа от 0 до 0,999999.

Таблица с координатами точек функции располагается в строках,

следующих непосредственно за оператором FUNCTION. Эти строки не

должны иметь поля нумерации. Каждая точка таблицы задается парой Xi

(значение аргумента) и Yi (значение функции), отделяемых друг от

друга запятой. Пары координат отделяются друг от друга символом "/"

и располагаются на произвольном количестве строк. Последователь-

ность значений аргумента Xi должна быть строго возрастающей.

Как уже отмечалось, при использовании функции в поле B блоков

GENERATE и ADVANCE вычисление интервала поступления или времени за-

держки производится путем умножения операнда A на вычисленное зна-

чение функции. Отсюда следует, что функция, используемая для гене-

рирования случайных чисел с показательным распределением, должна

описывать зависимость y=-ln(x), представленную в табличном виде.

Оператор FUNCTION с такой таблицей, содержащей 24 точки для обеспе-

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

EXP 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