Создание и уничтожение транзактов

Генерирование транзактов - GENERATE, Этот блок генерирует поток сообщений - транзактов, поступающих в систему. Программа составляется с учетом того, что в этот блок не могут входить транзакты. В простых програм­мах эта обычно первый блок, временные интервалы между поступающими в систему транзактами определяются содержимым поля операндов. Подполя:

А - среднее время между поступлениями транзактов в систему (по умол­чанию равно 1);

В - модификатор времени;

С - начальная задержка (время появления первого транзакта);

D - общее число транзактов, которое должно быть сгенерировано этим блоком (по умолчанию - неограниченное число транзактов);

Е - приоритет транзакта, может принимать значения от 0 до 127. Приори­тет возрастает в соответствии с номером (по умолчанию равен 0);

F - число параметров (атрибутов) транзакта (по умолчанию равно 12).

В поле В может быть модификатор двух типов: модификатор-интервал и модификатор-функция. Если задан модификатор-интервал (просто число), то для каждого временного интервала поступления транзактов длительность опре­деляется как значение случайной величины, равномерно распределенной на ин­тервале [А - В, А + В].

Например, блок GENERATE 10,5 будет генерировать транзакты через ин­тервалы времени, длительность каждого из которых выбирается случайно в пределах от 5 до 15. Необходимо помнить, что время в GPSS всегда целое. По­этому в пределах от 5 до 15 минут могут выбираться только целые значения времени. Каждое из этих значений будет выбираться с одинаковой вероятно­стью. Таким образом, блок генерирует случайный поток транзактов, в котором время между транзактами равномерно распределено в диапазонеА±В и имеет среднее зкачение А.

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

В программе может быть несколько блоков GENERATE. Все эти блоки работают параллельно и начинают генерировать транзакты одновременно с мо­мента начала моделирования.

Необходимо помнить, что смысл единицы времени в языке GPSS (секун­да, минута, час, день и т.д.) закладывает пользователь, поэтому при написании программы необходимо все операнды, связанные со временем, привести к единому масштабу.

Блок уничтожения транзактов - TERMINATE. Обычно для простых программ это последний блок программы. Транзакты попадающие в этот блок уничтожаются и больше не участвуют в процессе моделирования. Никаких дру­гих действий этот блок не выполняет, если единственный возможный операнд А, в блоке не задан. Если же операнд А, задан, то его значение вычитается из со­держимого блока транзактов.

Первоначальная величина счетчика устанавливается специальным управ­ляющим блоком START и пишется в поле А, этой карты. Когда в результате входа очередного транзакта в блок TERMINATE значение счетчика становится нулевым или отрицательным, симулятор прекращает моделирование и передает управление программе вывода, которая распечатывает накопленные симулятором данные о модели.

Например:

TERMINATE 1

START 100

через программу модели пропускается 100 транзактов. Если ни в одном блоке TERMINATE не задан операнд А, то моделирование будет продолжаться, пока программа не будет снята.

Если в программе несколько блоков TERMINATE, то обычно операнд А задается только в одном блоке, чаше всего - в блоке, относящемся к имитатору интервала времени моделирования (таймеру).

GENERATE 480

TERMINATE I

START 1

Таймер взаимодействует только с блоком START и никак не связан с со­держательной стороной остальных фрагментов модели. Таймер служит для за­дания времени моделирования.

 

Задержка транзактов в блоках

Блок ADVANCE предназначен для задержки транзактов на определенные интервалы модельного времени.

Обязательный операнд А задает время задержки транзакта в блоке ADVANCE. Необязательный операнд В является модификатором-функцией или модификатором-интервалом. Значение операнда В используется здесь для мо­дификации значения операнда А также, как в блоке GENERATE.

Любой транзакт входит в блок ADVANCE беспрепятственно. В нем транзакт задерживается на период модельного времени, величина которого опреде­ляется операндами А и В. После этого транзакт направляется к следующему блоку.

Например, в блоке

ADVANCE 10

транзакт будет задержан на 10 единиц модельного времени.

В блоке

ADVANCE 10,Р1

 

транзакт будет задерживаться на случайное время, выбранное издиапазона 10±значение первого параметра транзахта (следует помнить, что значений пер­вого параметра при этом не должно превышать 10, т.к. время не может быть отрицательным).

 

 

     Рассмотрим суммарную задержку в блоках

ADVANCE 10,10

ADVANCE 10,10

ADVANCE 10,10

ADVANCE 10,10

ADVANCE 10,10

ADVANCE 10,10

Задержка в каждом из них имеет равномерное распределение вероятно­стей на интервале (0,20). Следовательно, ее среднее значение составляет М = 20*(1/2) =10; дисперсия D =20*(1/2). Поэтому сумма шести таких задержек имеет среднее значение 6* М = 60 и среднее квадратическое отклонение √6*D≈14. По центральной предельной теореме теории вероятностей заключа­ем, что закон распределения суммарной задержки приблизительно нормальный. Поэтому ни в коем случае нельзя заменять эти пять блоков на один

ADVANCE 50,50,

т.к. этот блок будет определять задержку как равномерно распределенную ве­личину.

 

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: