МОДЕЛИРОВАНИЕ МНОГОКАНАЛЬНЫХ СИСТЕМ МАССОВОГО ОБСЛУЖИВАНИЯ.
Дискретные функции.
В GPSS два типа вычислительных объектов: арифметические переменные и функции. В моделях на GPSS значения функций (FNj) - это часто используемые стандартные числовые атрибуты, так как многие соотношения в системах могут быть описаны в терминах функциональной зависимости между двумя переменными. Каждая функция GPSS связывает значение аргумента функции, который представляет собой независимую переменную, со значениями зависимой переменной функции (FNj).
Запись определения функции имеет вид:
имя функции FUNCTION A,B
Другим важным применением функций является генерация значений случайных чисел. Для таких функций распределения вероятности аргументом является случайное число 0≤RN<1, а значения зависимых переменных (FNj) являются случайными элементами переменных в моделях системы.
Имя функции должно записываться в поле метки оператора описания FUNCTION. Поле A оператора FUNCTION должно содержать аргумент (независимую переменную) функции. Аргументом может быть любой из стандартных числовых атрибутов или значение любой другой функции. Если в качестве аргумента функции используется случайное число RNj, то значениями аргумента будут числа, равномерно распределенные в интервале 0≤RNj<1. Следует отметить, что во всех других случаях использование случайных чисел RNj дает значение в диапазоне 0≤RNj<999. Запись в поле B определяет тип и число точек функции X[i] и Y[i]. В этом поле для дискретных функций записывается символ D (признак дискретной функции) и целое число различных значений, которые может принимать случайная переменные. Далее следуют значения случайной переменной и соответствующие им значения функции распределения. Основной единицей информации записи значений функции является пара Xi, Yi, где Xi - это i-я суммарная частота, Yi - соответствующее значение случайной величины. Первый и второй элементы каждой основной единицы разделяются запятой. Последовательные основные единицы разделяются знаком "/". Основные единицы должны следовать по порядку так, чтобы суммарные частоты шли в возрастающем порядке. Например:
PRFT FUNCTION RN4, D5
.15,2/.35,5/.6,8/.85,9/1,12
Функция имеет символическое имя PRFT. В качестве источника случайных чисел выступает RN4. Случайная величина имеет пять различных значений. Суммарные частоты и соответствующие им пять значений записаны как пять пар чисел. При записи пар, описывающих распределение, можно не записывать десятичную точку, если данные имеют целые значения. Ниже на рисунке приведена графическая интерпретация функции PRFT.
Функция состоит из четырех ступенек, каждая из которых "замкнута" справа и "открыта" слева. Интерпретатор GPSS просматривает таблицу при определении значений дискретной функции и если аргумент функции по величине меньше или равным значению Xi, то значение функции Yi.
Предположим, что распределение интервалов приходов через определенный блок GENERATE не является равномерным. Для входов транзактов в модель через блок GENERATE пользователь в этом случае выполняет два действия:
Определяет функцию, описывающую соответствующее распределение интервалов времени.
В качестве операнда A блока GENERATE определяет функцию, а операнд B либо определяется по умолчанию, либо задается равным нулю.
При необходимости вычислить в процессе моделирования очередное значение интервала прихода транзакта в блоке GENERATE интерпретатор определяет значение операнда A путем вычисления соответствующей функции. Это значение далее используется в качестве очередного интервала времени.
Способ определения функции в блоке зависит от того, как задано имя функции: в символическом или числовом виде. Если имя числовое, то ссылка на функцию записывается как FNj, где j - номер функции. Если имя символическое, ссылка записывается в виде FN$имя. Например, ссылка на функцию 16 может быть записана в виде FN16, а ссылка на функцию с символическим именем PRFT записывается как FN$PRFT. Приведем пример использования функции в блоке GENERATE. В таблице представлены интервалы времени между соседними моментами поступления транзактов.
Интервалы поступления транзактов, мин | Относительная частота |
2 | 0,10 |
3 | 0,30 |
4 | 0,40 |
5 | 0,20 |
Для определения функции преобразуем таблицу:
Интервалы поступления транзактов, мин | Относительная частота | Суммарная частота |
2 | 0,10 | 0,10 |
3 | 0,30 | 0,40 |
4 | 0,40 | 0,80 |
5 | 0,20 | 1,00 |
Тогда описание функции, которой пользователь присвоил имя PRFT имеет вид:
PRFT FUNCTION RN7, D4
.1,2/.4,3/.8,4/1,5
Использование функций в блоках ADVANCE аналогично использованию в блоках GENERATE. Например:
Интервалы поступления транзактов, мин. | Относительная частота | Суммарная частота |
5 | 0,05 | 0,05 |
6 | 0,12 | 0,17 |
7 | 0,28 | 0,45 |
8 | 0,30 | 0,75 |
9 | 0,18 | 0,93 |
10 | 0,07 | 1,00 |
Тогда описание функции, которой пользователь присвоил имя TFRP имеет вид:
TFRP FUNCTION RN3, D6
.05,5/.17,6/.45,7/.75,8/.93,9/1,10
Ниже приведен пример простейшей модели, использующей описанные функции в блоках GENERATE и ADVANCE. Единица модельного времени - 1 минута.
PRFT FUNCTION RN7,D4
.1,2/.4,3/.8,4/1,5
TFRP FUNCTION RN3,D6
.05,5/.17,6/.45,7/.75,8/.93,9/1,10
GENERATE FN$PRFT
SEIZE JOB
ADVANCE FN$TFRP
RELEASE JOB
TERMINATE
GENERATE 480
TERMINATE 1
Получен следующий результат моделирования за 8 часов
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 480.000 7 1 0
NAME VALUE
JOB 10002.000
PRFT 10000.000
TFRP 10001.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 129 65 0
2 SEIZE 64 0 0
3 ADVANCE 64 1 0
4 RELEASE 63 0 0
5 TERMINATE 63 0 0
6 GENERATE 1 0 0
7 TERMINATE 1 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
JOB 64 0.992 7.438 1 65 0 0 0 65
Использование функций позволяет задавать различные формы дискретных распределений случайных значений интервалов поступления и задержки транзактов.