Баннер
Баннер

Программирование в GPSS - Функции

Оглавление
Программирование в GPSS
прагматический аспект
Классы объектов языка GPSS
Интерпретации транзактов
Интерпретаций устройст
Элементы реальных систем
Очереди и таблицы
Блоки
Модельное время
Общеалгоритмические средства GPSS
Стандартные числовые атрибуты
Арифметические переменные
Логические (булевы) переменные
Функции
Ячейки и матрицы ячеек
Задание начальных значений ячеек и матриц
Объектно-ориентированные средства GPSS
Создание и уничтожение транзактов
Задержка транзактов в блоках ADVANCE
Операции занятия и освобождения устройств
Операции захвата и освобождения устройств
Операции блокирования и разблокирования устройств
Описание памятей и работа с ними
Операции с ключами
Блок GATE
Синхронизация транзактов
Изменение параметров транзактов
Управление маршрутами транзактов в модели
Сбор статистики с помощью очередей
Сбор статистики с помощью таблиц
Стандартные числовые атрибуты
Атрибуты транзактов
Атрибуты блоков
Системные атрибуты
Атрибуты оборудования
Статистические атрибуты
Атрибуты ячеек SAVEVALUE
Функции и переменные
Атрибуты списков пользователя
Атрибуты группы
Системные атрибуты
Блоки COUNT и SELECT
Все страницы
Функции

Функция — это СЧА, обозначаемый в виде FN$name и описываемый пользователем в виде численной зависимости FN$name от другого СЧА. Рассмотрим на примерах, как это делается.

Пусть необходимо, чтобы значение FN$KL1 вычислялось в модели через S$MEM в соответствии с графиком, изображенным на приведенных ниже рисунках.

 

Рис. *1

Функция, вычисляемая в соответствии с таким кусочно-постоянным графиком, называется дискретной функцией. Она описывается следующими строками:

 

KL1 FUNCTION S$MEM,D3

5.5,12.2,/9,20/12,6.1.

 

Первая строка описания функции должна содержать метку функции в поле метки, слово FUNCTION в поле операции и два операнда в поле операндов. Первый операнд является обозначением того СЧА, который выбран в качестве аргумента функции. В данном примере это S$MEM – количество занятых единиц памяти MEM. Второй операнд состоит из буквы D, обозначающей, что данная функция дискретная, и из числа точек, которыми задается график функции. Координаты точек, задающих график, записываются в последующих строках описания функции. Из примера видно, что каждая точка задается парой координат, разделенных запятой, причем вначале указывается абсцисса точки, потом ордината. Координаты разных точек разделяются косой чертой. Функция может задаваться любым числом точек. Запись координат точек начинается с 1-й позиции строки и может быть продолжена на последующих строках.

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

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

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

Кроме того, если значение аргумента в процессе моделирования окажется за пределами диапазона, охваченного графиком, то соответствующий крайний отрезок графика автоматически «продолжается» до нужного места. Так что описанная выше дискретная функция FN$KL1 будет иметь в зависимости от S$MEM следующие значения:

? 12.2 , при - ? < S$MEM < 5.5,

FN$KL1 = ? 20, при 5.5 < S$MEM < 9,

? 6.1 , при 9 < S$MEM < ? .

График функции FN$KL2, изображенный на рис.*1, получен путем соединения нескольких точек ломаной линией. Функция, задаваемая таким графиком, называется непрерывной. Функция FN$KL2 в данном случае описывается строками:

KL2 FUNCTION V$PO,C5

0,1.6/0.5,4/0.8,12.4/1.3,9.5/1.5,3.3.

 

Как видим, отличие описания непрерывной функции от дискретной состоит лишь в том, что в первой строке вместо признака D дискретной функции должен быть признак С непрерывной функции.

Если при вычислении непрерывной функции значение ее аргумента выходит за диапазон, заданный в графике, то график автоматически «продолжается» горизонтальными прямыми: влево - на уровне первой заданной точки графика, вправо – на уровне последней.

Важным частным случаем рассмотренных видов функций являются функции с аргументом RNj. Если в строке FUNCTION в поле A записан аргумент RNj , то подразумевается, что в действительности используется не сам СЧА RNj , а полученное с его помощью псевдослучайное число, заключенное в диапазоне от 0 до 0,999999 включительно, т.е. RNj берется в масштабе 1:1000. Когда аргументом функции является случайное число, то функция также будет принимать случайные значения. Функция от аргумента RNj используется для моделирования случайных величин, имеющих требуемые законы распределения вероятностей. Например, дискретная функция, описанная строками:

 

DIS FUNCTION RN1,D4

0.1,1/0.3,5/0.4,7/1.0,8 ,

 

будет принимать значение 1 с вероятностью 0,1, значение 5 с вероятностью 0,2, значение 7 с вероятностью 0,1 и значение 8 с вероятностью 0,6.

Действительно, график функции FN$DIS имеет вид, показанный на рис.*4. По­э­тому функция FN$DIS примет при ее очередном вычислении значение 1, если RN1 попадет в интервал от 0 до 0,1. Вероятность этого равна 0,1. Значение 5 для FN10 будет получено с вероятностью попадания RN1 в интервал от 0,1 до 0,3. Эта ве­роятность равна 0,3 - 0,1 = 0,2. Аналогично определяются вероятности значений 7 и 8.

Рис. *4

Дискретные функции от RNj применяются для моделирования дискретных случайных величин, непрерывные для непрерывных. Реализация непрерывных случайных величин осуществляется методом обращения. Функция от RNj в этом случае является обратной по отношению к требуемой функции распределения вероятностей моделируемой случайной величины.

Пример. Функция с меткой EXP , если ее описать так, как показано ниже, будет иметь случайные значения, распределенные по экспоненциальному закону с математическим ожиданием единица:

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.83/.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,7/.9997,8.

 

В GPSS World содержится операция вычисления натурального логарифма, то можно задавать преобразование RN1 в экспоненциальную случайную величину без такого громоздкого набора чисел, как в приведенном примере функции FN$EXP. Аналитически такое преобразование выражается формулой:

 

у = - M?ln (z),

где z – равномерная случайная величина, заданная на интервале (0,1),

M – произвольный положительный числовой множитель,

y – функция от z, (т.е. тоже случайная величина). Распределение случайной величины y будет экспоненциальным с математическим ожиданием M.

В GPSS World содержится стандартная функция задания экспоненциального распределения, например

Generate (Exponential(1,0,65))

 

генерирует тракзакты по экспоненциальному закону распределения, в среднем 65 тракзактов.

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

В GPSS наряду с рассмотренными двумя видами функций (дискретной и непрерывной) имеются ещё несколько более специальных видов функций.





Читайте также:

Добавить комментарий


Защитный код
Обновить




Разделы



Главная GPSS Программирование в GPSS