- •Лекции по gpss
- •Блоки и транзакты
- •Транзакт входит в блок, функцией которого является удаление транзакта из модели.
- •Транзакт входит в блок, функцией которого является задержка транзакта на некоторое определенное в модели время.
- •Удаление транзактов из модели и завершение моделирования
- •Занятие и освобождение одноканального устройства
- •Когда транзакт поступает в устройство, он должен обслуживаться там некоторое время.
- •Сбор статистики
- •Управление продолжительностью моделирования
- •Логика работы интерпретатора
- •1. Он находится в каком-либо конкретном блоке.
- •2. Он находится (отмечен) в одном или нескольких цепях (списках) gpss.
- •1) Единица модельного времени определяется разработчиком модели, который задает все временные интервалы в одних и тех же, выбранных им, единицах;
- •Занятие и освобождение многоканального устройства (памяти)
- •Абсолютное и относительное время. Команды clear и reset
- •0 Относительное
- •Изменение значений параметров транзактов
- •Числовые и символьные имена. Команда equ
- •Блоки, изменяющие маршруты транзактов
- •Блок transfer
- •Блок test
- •Блок gate
- •Блок loop
- •Команды table и qtable. Таблицы. Блок tabulate
- •Сохраняемые величины и матрицы сохраняемых величин
- •Initial Xj, значение
- •Initial mXj( a,b), значение
- •Арифметические переменные. Команды variable (fvariable)
- •Генераторы случайных чисел
- •1. Разыгрывается случайное число, равномерно распределенное в диапазоне 0;1;
- •2. Полученное число преобразуется в эквивалентное ему значение, но уже принадлежащее интересующей нас выборке.
- •Функции gpssw. Команда function
- •Модель смо
- •Блоки для работы со списками пользователя
- •Моделирование сетей массового обслуживания
- •1,2 Узел – 1 канал,3 узел – 2 канала
- •1,2 Устройства – одноканальные, 3-4 канала
- •Моделирование захвата прибора
- •Логические переключатели
- •Булевские переменные. Команда bvariable
- •Обработка транзактов, принадлежащих одному ансамблю
Блок gate
Для задержки или изменения маршрута транзактов в зависимости от состояния аппаратных объектов модели служит блок GATE (впустить), имеющий следующий формат:
GATE X A, [B]
Вспомогательный операнд X содержит код состояния проверяемого аппаратного объекта, а в поле A указывается имя или номер этого объекта. Если проверяемый объект находится в заданном состоянии, то блок GATE пропускает транзакт к следующему блоку. Если же заданное в блоке условие не выполняется, то транзакт переходит к блоку, указанному в поле B, а если это поле пусто, то задерживается перед блоком GATE.
Операнд X может принимать следующие значения: U (устройство занято); NU (устройство свободно); I (устройство захвачено); NI (устройство не захвачено); SE (МКУ пусто); SNE (МКУ не пусто); SF(МКУ заполнено); SNF (МКУ не заполнено); LS (ЛП включен), LR (ЛП выключен) (Здесь ЛП – логический переключатель, назначение логических переключателей будет рассмотрено позже).
Например, блок
GATE SNE BUF3
отказывает во входе транзактам, поступающим в моменты, когда в МКУ с именем BUF3 все каналы обслуживания свободны. Блок
GATE LR 4, BLOK2
направляет транзакты в блок с именем BLOK2, если в момент их поступления ЛП с номером 4 включен.
Приведем пример.
Простейшая телефонная система имеет две линии связи. Звонки, которые приходят извне, поступают каждые 100+(-)60 сек. Когда линия занята, абонент набирает номер повторно после того, как проходит 5+(-)1 мин. Требуется осуществить табулирование распределения времени, которое требуется каждому абоненту, чтобы установить связь и провести разговор. Требуется определить, сколько времени понадобится для реализации 200 разговоров.
Sets STORAGE 2
Transit TABLE M1,100,100,20
;
GENERATE 100,60
Again GATE SNF Sets,Occupied
ENTER Sets
ADVANCE 180,60
LEAVE Sets
TABULATE Transit
TERMINATE 1
Occupied ADVANCE 300,60
TRANSFER , Again
Объяснение работы модели:
Память Sets общей емкостью 2 берется для имитирования 2 телефонных линий.
Оператор описания TABLE Transit определяет аргумент как СЧА М1 для табулирования времени пребывания в модели транзакта, а также число и ширину частотных интервалов. Как раз перед тем, как транзакт попадает в блок TERMINATE , табулируется время его пребывания в модели как СЧА М1 - длительность времени, отсчитываемого с первого звонка абонента до тех пор, пока абонент не закончит разговаривать.
Блок GENERATE каждые 100 +(-) 60 сек. создает транзакт, который имитирует вызов.
Блок GATE посылает транзакт к блоку Occupied, когда все линии заняты. Это имеет место, когда память Sets заполнена и абонент должен ожидать, прежде чем позвонит вторично.
Если память не занята, или в ней занято 1 место, то транзакт проходит через блок GATE в блок ENTER, заняв одно место в памяти. Если все места в памяти заняты, то блок GATE больше не пропустит транзактов. Каждый транзакт, приходящий в блок ENTER, имитирует вызов, который был успешно осуществлен.
Блок ADVANCE задерживает транзакт на продолжительность разговора 180 +(-) 60 сек.
Когда транзакт входит в блок LEAVE, он освобождает одно место в памяти Sets для другого транзакта, это имитирует вновь освободившуюся внешнюю линию.
Блок TABULATE добавляет длительность проведенного разговора к гистограмме времени выполнения разговоров, собираемого в таблице Transit.
Блок TERMINATE выводит транзакт из модели после того, как разговор завершен, и уменьшает на 1текущее значение счетчика завершений.
Транзакт приходит в блок ADVANCE с меткой Occupied, когда он пытался и не сумел занять место в памяти Sets , ввиду занятости. Это имитирует абонента, который должен подождать, прежде чем снова набрать номер.
Блок TRANSFER посылает каждый транзакт в блок GATE с меткой Again. Там транзакт снова пытается занять место в памяти Sets. Другими словами, абонент пытается перезвонить.
Приведем еще один пример.
Блоки рассматриваемой группы используются при моделировании различных СМО с потерями заявок. Воспользуемся, например, блоками TRANSFER для моделирования двухканальной СМО с отказами и повторными попытками (рис. ).
STO2 STORAGE 2
GENERATE (Exponential(1,0,100))
ENT1 TRANSFER BOTH,,REFUS
ENTER STO2
ADVANCE (Exponential(2,0,160))
LEAVE STO2
TERMINATE 1
REFUS TRANSFER .1,,OUT
ADVANCE (Exponential(2,0,250))
TRANSFER ,ENT1
OUT TERMINATE 1
Транзакты, поступающие в модель, попадают в блок TRANSFER с именем ENT1, работающий в логическом режиме. Если в момент поступления транзакта в МКУ STO2 хотя бы один канал свободен, то блок TRANSFER направит транзакт в следующий блок, т.е. в блок ENTER.
Если же в момент поступления оба канала МКУ заняты, и поэтому блок ENTER отказывает во входе, то транзакт будет направлен в блок TRANSFER с именем REFUS, работающий в статистическом режиме. С вероятностью 0,9 транзакты из этого блока передаются в следующий блок, задерживаются в нем на случайное время и с помощью блока TRANSFER, работающего в безусловном режиме, передаются вновь на вход модели в блок с именем ENT1. С вероятностью 0,1 транзакты из блока с именем REFUS передаются в блок TERMINATE с именем OUT для уничтожения.
Следует заметить, что для уничтожения транзактов, получивших отказ в обслуживании, понадобился отдельный блок TERMINATE для фиксации в стандартном отчете количества потерянных транзактов с помощью счетчика блока с именем OUT (СЧА N$OUT).
Для моделирования той же СМО может быть использован также блок TEST (рис. ). В этом варианте модели транзакт проходит в блок ENTER, если текущее число занятых каналов (СЧА S$STO2) меньше 2.
STO2 STORAGE 2
GENERATE Exponential(1,0,100))
ENT1 TEST L S$STO2,2,REFUS
ENTER STO2
ADVANCE (Exponential(3,0,160))
LEAVE STO2
TERMINATE 1
REFUS TRANSFER .1,,OUT
ADVANCE (Exponential(5,.0,250))
TRANSFER , ENT1
OUT TERMINATE 1
При использовании блока GATE модель принимает вид, показанный на рис . В этом варианте транзакт проходит в блок ENTER, если условие "МКУ STO2 не заполнено" истинно.
STO2 STORAGE 2
GENERATE (Exponential(3,0,10.7))
ENT1 GATE SNF STO2,REFUS
ENTER STO2
ADVANCE (Normal(7,28.9,13.8))
LEAVE STO2
TERMINATE 1
REFUS TRANSFER .1,,OUT
ADVANCE (Normal(4,344.5,16))
TRANSFER ,ENT1
OUT TERMINATE 1
