Генерация и удаление транзактов. Имитация обслуживания
GENERATE - это блок, через который транзакты входят в модель. Не существует ограничений на число различных блоков GENERATE. Интервал времени между последовательными появлениями транзактов блока GENERATE называют интервалом поступления. При разработке модели необходимо задавать спецификацию распределения интервалов времени поступления в блоке. Все возможные виды распределения интервалов прибытия в GPSS делят на равномерно распределенные и все другие виды распределения. По умолчанию используется равномерное распределение. Для более сложных видов используются функции преобразования равномерного распределения в заданное.
В операторной форме блок записывается так: GENERATE A,B,C,D,E
A - определяет математическое ожидание времени между последовательными приходами транзактов в блоке;
B - задает половину поля допуска (или половину размаха) интервалов времени прибытия;
C - задает смещение интервалов - момент времени, в который должен появиться первый транзакт. После этого первого прихода все остальные приходы транзактов возникают в соответствии с распределением интервала времени, заданными операндами A и B;
D - задает граничное значение общего числа транзактов, которые могут войти в модель через данный блок GENERATE в течение времени моделирования. Когда это число достигнуто, данный блок перестанет быть активным;
E - устанавливает уровень приоритета каждого из транзактов, входящих в модель через данный блок GENERATE. В GPSS существует 128 уровней приоритетов, которые задаются значениями от 0 до 127. Чем больше число, тем выше приоритет.
Если какой-либо из операндов отсутствует, то используется его значение по умолчанию: A=0, B=0, C= отсутствует, D=Бесконечность, E=0.
Транзакты удаляются из модели, попадая в блок TERMINATE. Блоки TERMINATE всегда позволяют выйти всем транзактам, которые пытаются это сделать.
Обслуживающий элемент - прибор, характеризуется двумя основными свойствами:
1. Каждый прибор в любой момент времени может обслуживать только одно требование.
2. Когда на прибор поступает требование в модели, надо пропустить время, необходимое для его обслуживания. Такое время называется временем обслуживания.
В модели может быть много приборов, поэтому приборам должны быть присвоены различные имена (идентификаторы). Имена могут быть либо числовыми, либо символьными. Числовой идентификатор должен быть положительным целым числом, максимальное значение которого зависит от объема внутренней памяти (ОЗУ) ЭВМ.
При использовании прибора необходимо выполнить следующие шаги:
· Если необходимо, то ожидаем своей очереди.
· Когда подходит очередь, занимаем прибор. Это событие происходит в некоторый момент модельного времени.
· Прибор остается в состоянии занятости, пока не закончится обслуживание. Для обслуживания требуется некоторый интервал времени.
· По окончании обслуживания прибор должен быть освобожден. Освобождение прибора происходит в некоторый момент модельного времени.
Полная реализация этих шагов осуществляется последовательным прохождением транзакта трех блоков: SEIZE (ЗАНЯТЬ), ADVANCE (ЗАДЕРЖАТЬ), RELEASE (ОСВОБОДИТЬ).
SEIZE A
A - имя (символическое или числовое) занимаемого прибора. Блок обладает следующими свойствами:
· Если прибор уже используют (прибор занят), то транзакт не может войти в блок и помещается в очередь.
· Если прибор не используют (прибор свободен), то транзакт может войти в блок. При этом, выполняется подпрограмма обработки блока изменяющая статус прибора из "незанято" в "занято".
RELEASE A
A - имя (символическое или числовое) освобождаемого прибора. Блок обладает следующими свойствами:
· Блок RELEASE никогда не запрещает вход транзакта.
· Блоки SIEZE и RELEASE дополняют друг друга.
ADVANCE A,B
A - математическое ожидание интервала модельного времени задержки транзакта в блоке;
B - Половина поля допуска (половина размаха) равномерно распределенного интервала модельного времени.
При освобождении прибора (проверяет SEIZE) транзакт входит в блок ADVANCE и после реализации задержки поступает в блок RELEASE, который изменяет статус прибора JOB.
GENERATE 8,3
SEIZE JOB
ADVANCED 12,3
RELEASE JOB
TERMINATE
Дискретные функции. Непрерывные функции.
Дискретные функции.
В GPSS два типа вычислительных объектов: арифметические переменные и функции. В моделях на GPSS значения функций (FNj) - это часто используемые стандартные числовые атрибуты, так как многие соотношения в системах могут быть описаны в терминах функциональной зависимости между двумя переменными. Каждая функция GPSS связывает значение аргумента функции, который представляет собой независимую переменную, со значениями зависимой переменной функции (FNj).
Запись определения функции имеет вид:
имя функции FUNCTION A,B
Имя функции должно записываться в поле метки оператора описания FUNCTION. Поле A оператора FUNCTION должно содержать аргумент (независимую переменную) функции. Аргументом может быть любой из стандартных числовых атрибутов или значение любой другой функции. Запись в поле B определяет тип и число точек функции X[i] и Y[i]. В этом поле для дискретных функций записывается символ D (признак дискретной функции) и целое число различных значений, которые может принимать случайная переменные. Далее следуют значения случайной переменной и соответствующие им значения функции распределения. Основной единицей информации записи значений функции является пара Xi, Yi, где Xi - это i-я суммарная частота, Yi- соответствующее значение случайной величины. Первый и второй элементы каждой основной единицы разделяются запятой. Последовательные основные единицы разделяются знаком "/". Основные единицы должны следовать по порядку так, чтобы суммарные частоты шли в возрастающем порядке. Например:
PRFT FUNCTION RN4, D5
.15,2/.35,6/.6,8/.85,9/1,12
Функция имеет символическое имя PRFT. В качестве источника случайных чисел выступает RN4. Случайная величина имеет пять различных значений. Суммарные частоты и соответствующие им пять значений записаны как пять пар чисел. При записи пар, описывающих распределение, можно не записывать десятичную точку, если данные имеют целые значения. Ниже на рисунке приведена графическая интерпретация функции PRFT.
Предположим, что распределение интервалов приходов через определенный блок GENERATE не является равномерным. Для входов транзактов в модель через блок GENERATE пользователь в этом случае выполняет два действия:
1. Определяет функцию, описывающую соответствующее распределение интервалов времени.
2. В качестве операнда A блока GENERATE определяет функцию, а операнд B либо определяется по умолчанию, либо задается равным нулю.
Способ определения функции в блоке зависит от того, как задано имя функции: в символическом или числовом виде. Если имя числовое, то ссылка на функцию записывается как FNj, где j - номер функции. Если имя символическое, ссылка записывается в виде FN$имя. Например, ссылка на функцию 16 может быть записана в виде FN16, а ссылка на функцию с символическим именем PRFT записывается как FN$PRFT. Приведем пример использования функции в блоке GENERATE. В таблице представлены интервалы времени между соседними моментами поступления транзактов.
Ниже приведен пример простейшей модели, использующей описанные функции в блоках 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
Использование функций позволяет задавать различные формы дискретных распределений случайных значений интервалов поступления и задержки транзактов.
Непрерывные функции.
По определению дискретные случайные величины принимают конечное число различных значений, в то время как непрерывные - любое количество различных значений. Значения непрерывной функции, как и дискретной, определяются парами значений Xi, Yi. В дискретной функции ее значения меняются скачком, в непрерывной - выполняется линейная интерполяция для пары точек, находящихся по краям того интервала значений суммарной вероятности, на которое указало случайное число. Непрерывная функция определяется с помощью символа С (в отличие от символа D для дискретных функций. Например:
PRFT FUNCTION RN4, C5
.15,2/.35,6/.6,8/.85,9/1,12
При моделировании существующих систем существует возможность оценить вид распределения и заложить его гистограмму в непрерывную функцию.
Включение непрерывных функций в блоки GENERATE и ADVANCE аналогично включению дискретных в эти же блоки (FN$имя). Ниже приведен пример моделирования мнгоканального устройства с использованием функций двух видов. Единица модельного времени - 1 секунда. При этом известно непрерывное распределение времени обслуживания клиента (функция PRFT) и дискретное распределение прихода клиентов (функция TFRP).
PRFT FUNCTION RN2,C6
0.0,15/.07,30/.32,45/.73,60/.92,75/1.0,90
TFRP FUNCTION RN3,D6
.05,7/.17,12/.45,17/.75,22/.93,27/1,32
JOB STORAGE 3
GENERATE FN$TFRP
QUEUE JQE
ENTER JOB
DEPART JQE
ADVANCE FN$PRFT
LEAVE JOB
TERMINATE
GENERATE 28800
TERMINATE 1
Использование непрерывных функций позволяет задавать различные формы непрерывных распределений случайных значений интервалов поступления и задержки транзактов.