Студентам > Курсовые > Моделирование систем и сетей связи на GPSS
Моделирование систем и сетей связи на GPSSСтраница: 4/12
чайной величиной 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
выполняются с
использованием 1арифметических переменных 0.
Они могут быть целыми и
действительными. 1Целые переменные
0определяются перед началом моде-
лирования с помощью оператора определения VARIABLE
(переменная),
имеющего следующий формат:
1имя 0 VARIABLE
1выражение
Здесь 1имя 0- имя переменной, используемое
для ссылок на нее, а 1выра-
1жение 0- арифметическое выражение,
определяющее переменную. Арифме-
тическое выражение представляет собой комбинацию
операндов, в ка-
честве которых могут выступать константы, СЧА и
функции, знаков
арифметических операций и круглых скобок. Следует
заметить, что
знаком операции умножения в GPSS/PC является символ #
(номер). Ре-
зультат каждой промежуточной операции в целых переменных
преобразу-
ется к целому типу путем отбрасывания дробной части, и,
таким обра-
зом, результатом операции деления является целая часть
частного.
1Действительные переменные
0определяются перед началом модели-
рования с помощью оператора определения FVARIABLE,
имеющего тот же
- 15 -
формат, что и оператор VARIABLE. Отличие действительных
переменных
от целых заключается в том, что в действительных
переменных все
промежуточные операции выполняются с сохранением
дробной части
чисел, и лишь окончательный результат приводится к целому
типу отб-
расыванием дробной части.
Арифметические переменные обоих типов имеют
единственный СЧА с
названием V, значением которого является результат
вычисления ариф-
метического выражения, определяющего переменную.
Вычисление выраже-
ния производится при входе транзакта в блок, содержащий
ссылку на
СЧА V с именем переменной.
Действительные переменные могут быть использованы
для получе-
ния случайных интервалов времени с показательным законом
распреде-
ления. Пусть в модели из примера на рис. 3
распределения времени
поступления транзактов и времени задержки должны иметь
показатель-
ный закон. Это может быть сделано так, как показано на
рис. 4.
Ш1
TARR FVARIABLE -100#LOG((1+RN1)/1000)
TSRV FVARIABLE -80#LOG((1+RN1)/1000)
GENERATE V$TARR
ADVANCE V$TSRV
TERMINATE 1
Ш1.5
Рис. 4
Переменная с именем TARR задает выражение для
вычисления ин-
тервала поступления со средним значением 100, вторая
переменная с
именем TSRV - для вычисления времени задержки со средним
значением
80. Блоки GENERATE и ADVANCE содержат в поле A
ссылки на соот-
ветствующие переменные, при этом поле B не используется,
так как в
поле A содержится случайная величина, не нуждающаяся в
модификации.
Большинство случайных величин не может быть
получено через
случайную величину R с помощью арифметического выражения.
Кроме то-
го, такой способ является достаточно трудоемким, так
как требует
обращения к математическим функциям, вычисление
которых требует
десятков машинных операций. Другим возможным
способом является
использование вычислительных объектов GPSS/PC типа
1функция 0.
Функции используются для вычисления величин,
заданных таблич-
ными зависимостями. Каждая функция определяется перед
началом моде-
лирования с помощью оператора определения FUNCTION
(функция), имею-
щего следующий формат:
1имя 0 FUNCTION
A,B
Здесь 1имя 0- имя функции, используемое для
ссылок на нее; A - стан-
- 16 -
дартный числовой атрибут, являющийся аргументом
функции; B - тип
функции и число точек таблицы, определяющей функцию.
Существует пять типов функций. Рассмотрим вначале
1непрерывные
1числовые функции, 0тип которых кодируется
буквой 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 точки
для обеспе-
чения достаточной точности аппроксимации, имеет следующий
вид:
Ш1
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
Ш1.5
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
Вычисление непрерывной функции производится
следующим образом.
Сначала определяется интервал (Xi;Xi+1), на котором
находится теку-
щее значение СЧА-аргумента (в нашем примере -
сгенерированное зна-
чение RN1). Затем на этом интервале выполняется линейная
интерполя-
ция с использованием соответствующих значений Yi и Yi+1.
Результат
интерполяции усекается (отбрасыванием дробной части) и
используется
в качестве значения функции. Если функция служит
операндом B блоков
GENERATE или ADVANCE, то усечение результата производится
только
- 17 -
после его умножения на значение операнда A.
Использование функций для получения случайных чисел
с заданным
распределением дает хотя и менее точный результат за
счет погреш-
ностей аппроксимации, но зато с меньшими вычислительными
затратами
(несколько машинных операций на выполнение линейной
интерполяции).
Чтобы к погрешности аппроксимации не добавлять слишком
большую пог-
решность усечения, среднее значение при использовании
показательных
распределений должно быть достаточно большим (не менее
50). Эта ре-
комендация относится и к использованию переменных.
Функции всех типов имеют единственный СЧА с
названием FN, зна-
чением которого является вычисленное значение функции.
Вычисление
функции производится при входе транзакта в блок,
содержащий ссылку
на СЧА FN с именем функции.
Заменим в примере на рис. 4 переменные TARR и TSRV
на функцию
EXP (рис. 5).
Поскольку в обеих моделях используется один и тот же
генератор
RN1, интервалы поступления и задержки, вычисляемые
в блоках
GENERATE и ADVANCE, должны получиться весьма близкими, а
может быть
и идентичными. При большом количестве транзактов,
пропускаемых че-
рез модель (десятки и сотни тысяч), разница в скорости
вычислений
должна стать заметной.
Ш1
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
GENERATE 100,FN$EXP
ADVANCE 80,FN$EXP
TERMINATE 1
Ш1.5
Рис. 5
Особенностью непрерывных функций является то, что
они принима-
ют "непрерывные" (но только целочисленные)
значения в диапазоне от
Y1 до Yn , где n - количество точек таблицы. В отличие от
них 1диск-
1ретные числовые функции 0, тип которых
кодируется буквой D в операнде
B оператора определения функции, принимают только
отдельные (диск-
ретные) значения, заданные координатами Yi в строках,
следующих за
оператором определения FUNCTION. При вычислении
дискретной функции
текущее значение СЧА-аргумента, указанного в поле A
оператора
FUNCTION, сравнивается по условию <= последовательно
со всеми зна-
чениями упорядоченных по возрастанию координат Xi до
выполнения
- 18 -
этого условия при некотором i. Значением функции
становится целая
часть соответствующего значения Yi.
Если последовательность значений аргумента таблицы с
координа-
|