Краткое руководство по моделированию на языке GPSS (1049434), страница 8
Текст из файла (страница 8)
Синтаксис. <имя функции> FUNCTION А, В
Имя функции – числовое или символическое имя, обязательный параметр.
А - Аргумент функции; обязательный операнд. Допустимые значения – имя, число, СЧА.
В - Тип функции (одна буква) и количество пар данных в списке данных функции. Обязательный операнд.
Последующие обращения к СЧА типа FN вычисляют функцию и возвращают результат.
Существует несколько типов функций. Тип определяется операндом В команды FUNCTION.
За каждой командой FUNCTION сразу же должен следовать список пар данных, разделенных символами «/». Каждая пара данных определяет значения аргумента X и значения функции Y, разделенные запятой. Списки данных используются для вычисления значения функции по заданным значениям аргумента.
Существует 5 различных типов функций.
-
Функции типа С – непрерывные числовые функции.
В списке данных функций типа С значения X и Y должны быть целочисленными (Integer) или вещественными (Real). Значения X и Y хранятся, как числа с плавающей точкой двойной точности.
Вычисление функции начинается с вычисления аргумента. Далее определяется интервал (Xi;Xi+1), на котором находится вычисленное значение и на этом интервале выполняется линейная интерполяция двойной точности с использованием соответствующих значений Yi и Yi+1. Результатом является значение функции двойной точности. Если аргумент попадает за предельные значения области определения функции, возвращается значение функции в ближайшей предельной точке.
Примеры.
1) ART FUNCTION X1, C3
1.1,10.1/20.5,98.7/33.3,889.2
Оператор определяет кусочно-линейную функцию с двумя линейными участками. Если мы обращаемся к функции FN$ART, то по значению сохраняемой величины Х1 вычисляется функция в соответствии с заданной совокупностью точек.
Пример приближенного представления обратного экспоненциального распределения со средним, равным 1.
2) Xpdis FUNCTION RN1, С24
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,6.2/.999,7/.9998,8
-
Функции типа D - дискретные функции.
В списках данных функций типа D значения X должны быть целочисленными или вещественными, а значения Y – целочисленными, вещественными или именами.
Функции типа D задают одно и то же значение функции Y[i] для всех значений аргумента X[i-1]< X ≤X[i]. Значения X в списке данных функции должны быть неубывающими. Внутренне они сохраняются как числа двойной точности. Когда вычисляется функция, значения X в списке данных функции просматриваются от наименьшего к наибольшему. Когда найдено значение X, которое больше или равно текущему значению аргумента, возвращается соответствующее ему значение Y. Если такое значение X отсутствует, возвращается значение Y или именованная величина, соответствующая самому большому значению X.
Примеры.
1) LIR FUNCTION X$A2, D5
1.1,6.9/2.1,7/6.33,9.4/7,10/9.9,12.01
2) RAF FUNCTION RN1, D5
0,0/.2,7.2/.4,6.667/.8,9.92/1.0,10
-
Функции типа Е - дискретные атрибутивные функции.
В качестве значений Y в списке данных дискретных атрибутивных функций используются стандартные числовые атрибуты.
Функции типа Е вычисляются тем же способом, что и функции типа D, за исключением того, что значение функции вычисляется косвенно через стандартный числовой атрибут.
Пример использования.
Edisc FUNCTION P7, E4
1,FR2/2,FR7/3,FR9/4,FR11
Значение функции Edisc равно коэффициенту использования приборов 2, 7, 9, 11 в зависимости от значения аргумента, содержащегося в параметре транзакта с именем 7.
-
Функции типа L - списковые функции.
Функции типа Е вычисляются тем же способом, что и функции типа D, за исключением того, что значения X должны начинаться с 1 и увеличиваться на 1 для каждой последующей пары данных.
Если аргумент меньше 1 или превосходит наибольшее заданное значение X, происходит останов по ошибке.
Списковые функции требуют меньшего времени выполнения по сравнению с дискретными.
Пример использования.
Listtype FUNCTION Q$Barber, L5 1,PAR1/2,PAR2/3,PAR3/4,PAR4/5,PAR5
-
Функции типа М - списковые атрибутивные функции.
Функции типа М вычисляются тем же способом, что и функции типа L, за исключением того, что в качестве значений Y в списке данных используются стандартные числовые атрибуты и значение функции вычисляется косвенно через стандартный числовой атрибут.
Пример использования.
Mlist FUNCTION X$Namel,M5
1,Q$Nnaml/2,Q$NamX/3,Q$Nam4/4,Q$Nam6/5,F$Tanl
Правила использования функций
-
Значения X в списке данных функции должны быть неубывающими.
-
Спискам данных функций никогда не присваиваются номера строк.
-
Все поля команды FUNCTION обязательны.
-
Все значения X и Y в списке данных функции обязательны.
-
Количество пар данных, указанное в операнде В команды FUNCTION, должно совпадать с количеством пар, разделенных символами «/» в списке данных функции.
-
Списки данных функций не имеют полей комментария.
-
В списке данных функций за значением X следует запятая, за которой следует значение Y, за ним «/» или перевод строки, затем опять значение X.
-
Функции типа С, L и D не могут иметь СЧА в качестве значений Y.
-
Функции типа Е и М должны содержать СЧА или выражение в качестве значений Y.
-
Функции типа L и М не могут иметь случайные аргументы.
-
Списки данных функций типа L и М должны иметь последовательно возрастающие значения X, начинающиеся с 1.
Сводный список стандартных атрибутов объектов языка GPSS
Таблица 14 - Стандартные числовые атрибуты (СЧА) объектов GPSS
Типы объектов | Имя СЧА | Назначение |
Системные СЧА (атомарные) | C1 | Текущее значение условного времени. Автоматически изменяется в модели и устанавливается в 0 управляющими операторами CLEAR или RESET. Вещественное значение. |
AC1 | Текущее значение абсолютного времени. Автоматически изменяется в модели. Устанавливается в 0 под действием оператора CLEAR. Вещественное значение. | |
TG1 | Текущее значение счетчика числа завершений. Целочисленное значение. | |
Z1 | Размер свободной оперативной памяти в байтах. Целочисленное значение. | |
Транзакты | P | Значение параметра активного транзакта. Целочисленное, вещественное или строковое значение. |
PR | Приоритет активного транзакта. Целочисленное значение. | |
М1 | Время пребывания в модели активного транзакта. Равно разности текущего значения абсолютного времени и времени рождения активного транзакта. Вещественное значение. | |
MP | Транзитное время пребывания в модели активного транзакта. Равно разности текущего значения абсолютного времени и содержимого параметра активного транзакта. Вещественное значение. | |
XN1 | Номер активного транзакта. Целочисленное значение. | |
Блоки | N | Общее число транзактов, которые вошли в блок. Целочисленное значение. |
W | Текущее число транзактов в блоке. Целочисленное значение. | |
Приборы | F | Состояние прибора. Равно 0,если прибор свободен, и 1 - во всех остальных случаях. Целочисленное значение. |
FI | Флаг прерывания прибора : 1 - если прибор находится в состоянии прерывания, 0 - в противном случае. Целочисленное значение. | |
FV | Флаг готовности прибора к использованию : 1 - если готов, 0 - в противном случае. Целочисленное значение. | |
FR | Коэффициент использования прибора в долях тысячи Вещественное значение. | |
FC | Общее число занятий прибора. Целочисленное значение. | |
FT | Среднее время использования прибора одним занятием. Вещественное значение. | |
Памяти | S | Текущее содержимое памяти. Целочисленное значение. |
R | Число свободных единиц памяти. Целочисленное значение. | |
SR | Коэффициент использования памяти в долях тысячи. Вещественное значение. | |
SA | Взвешенное по времени среднее содержимое памяти. Вещественное значение. | |
SM | Максимальное содержимое памяти. Целочисленное значение. | |
SC | Общее количество использовавшихся элементов памяти. Целочисленное значение. | |
ST | Среднее время пребывания транзактов в памяти. Вещественное значение. | |
SE | Флаг незанятости памяти (1 - свободна, 0 – занята). Целочисленное значение. | |
SF | Флаг заполненности памяти (1 - заполнена, 0 - не заполнена). Целочисленное значение. | |
SV | Флаг готовности памяти (1 - готова , 0 - не готова). Целочисленное значение. | |
Ключи | LS | Состояние логического ключа (1 - установлен, 0 - не установлен). Целочисленное значение. |
Очереди | Q | Текущая длина очереди. Целочисленное значение. |
QA | Взвешенная по времени средняя длина очереди. Вещественное значение. | |
QM | Максимальная длина очереди. Целочисленное значение. | |
QC | Общее число входов в очередь. Целочисленное значение. | |
QZ | Число нулевых входов в очередь. Целочисленное значение. | |
QT | Среднее время пребывания транзактов в очереди (включая нулевые входы). Вещественное значение. | |
QX | Среднее время пребывания сообщения в очереди (без нулевых входов). Вещественное значение. | |
Таблицы | TB | Среднее значение аргументов таблицы. Вещественное значение. |
TC | Общее число аргументов таблицы. Целочисленное значение. | |
TD | Вычисленное среднеквадратичное отклонение для аргументов таблицы. Вещественное значение. | |
Датчики случайных чисел | RN | Число, вычисляемое датчиком случайных чисел (м.б. до 7 датчиков). Датчик генерирует последовательность равномерно распределенных целочисленных случайных чисел в интервале 0– 999. При использовании датчика в качестве аргумента функции или объекта в переменной значение будет дробью от 0 до 0.999999. |
Функции | FN | Вычисленное значение функции. Вещественное значение. |
Переменные | V | Вычисленное значение целочисленной переменной или переменной с плавающей точкой. Вещественное значение. |
Булевские переменные | BV | Вычисленное значение булевой переменной. Вещественное значение. |
Сохраняемые величины | X | Значение сохраняемой величины. Целочисленное, вещественное или строковое значение. |
Матрицы сохраняемых величин | MX (a,b) | Содержимое элемента матрицы сохраняемых величин, расположенного в строке a, столбце b. Целочисленное, вещественное или строковое значение. |
Числовые группы | GN | Текущее число членов в числовой группе. Целочисленное значение. |
Группы транзактов | GT | Текущее число членов в группе транзактов. Целочисленное значение. |
Семейства транзактов | A1 | Номер семейства активного транзакта. Целочисленное значение. |
MB | Флаг синхронизации : 1 , если транзакт в некотором блоке принадлежит тому же семейству , что и активный транзакт; 0 - в противном случае. Целочисленное значение. | |
Списки пользователя | CH | Текущее число транзактов в списке пользователя. Целочисленное значение. |
CA | Взвешенное по времени среднее число транзактов в списке пользователя. Вещественное значение. | |
CM | Максимальное число транзактов в списке пользователя. Целочисленное значение. | |
CC | Общее число входов транзактов в список пользователя. Целочисленное значение. | |
CT | Среднее время пребывания транзактов в списке пользователя. Вещественное значение. |
Таблица 15 - Стандартные логические атрибуты (СЛА) объектов GPSS
Тип | Имя СЛА | Значение |
Приборы | NU | Равен 1, если прибор свободен, иначе 0 |
U | Равен 1, если прибор занят, иначе 0 | |
NI | Равен 1, если прибор не прерван, иначе 0 | |
I | Равен 1, если прибор прерван, иначе 0 | |
FV | Равен 1, если прибор доступен, иначе 0 | |
FNV | Равен 1, если прибор недоступен, иначе 0 | |
Памяти | SE | Равен 1, если память пуста (нулевое содержимое) , иначе 0 |
SNE | Равен 1, если память не пуста (ненулевое содержимое) , иначе 0 | |
SF | Равен 1, если память заполнена, иначе 0 | |
SNF | Равен 1, если память не заполнена, иначе 0 | |
SV | Равен 1, если память используется, иначе 0 | |
SNV | Равен 1, если память не используется, иначе 0 | |
Ключи | LR | Равен 1, если логический ключ "выключен", иначе 0 |
LS | Равен 1, если логический ключ "включен", иначе 0 |