Моделирование на GPSS
При входе транзакта в блок ENTER текущее содержимое МКУ увели-
чивается на число единиц, указанное в поле B . Если свободная
емкость МКУ меньше значения поля B, то транзакт не может войти в
блок ENTER и остается в предыдущем блоке, образуя очередь в списке
текущих событий.
При входе транзакта в блок LEAVE текущее содержимое МКУ умень-
шается на число единиц, указанное в поле B. Не обязательно освобож-
дается такое же число каналов МКУ, какое занималось при входе дан-
ного транзакта в блок ENTER, однако текущее содержимое МКУ не долж-
но становиться отрицательным.
Многоканальные устройства имеют следующие СЧА: S - текущее со-
держимое МКУ; R - свободная емкость МКУ; SR - коэффициент использо-
вания в долях 1000; SA - целая часть среднего содержимого МКУ; SM -
максимальное содержимое МКУ; SC - число занятий МКУ; ST - целая
часть среднего времени занятия МКУ.
Воспользуемся блоками ENTER-LEAVE и оператором STORAGE для мо-
делирования двухканальной СМО с ожиданием (рис. 8). Если текущее
содержимое МКУ с именем STO2 меньше 2, т.е. в блоке ADVANCE нахо-
дится один или ни одного транзакта, то очередной транзакт, поступа-
ющий в модель через блок GENERATE, может войти в блок ENTER и затем
в блок ADVANCE. Если же текущее содержимое МКУ равно 2, то очеред-
ной транзакт остается в блоке GENERATE, образуя очередь в списке
текущих событий. По истечении задержки одного из двух обслуживаемых
транзактов в блоке ADVANCE и после входа его в блок LEAVE первый из
заблокированных транзактов сможет войти в блок ENTER.
STO2 STORAGE 2
EXP FUNCTION RN1,C24
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.85/.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
GENERATE 100,FN$EXP
ENTER STO2
ADVANCE 160,FN$EXP
LEAVE STO2
TERMINATE 1
Рис. 8
К аппаратным объектам относятся также логические переключатели
(ЛП), которые могут находиться в двух состояниях: "включено" и
"выключено". В начале моделирования все ЛП находятся в состоянии
"выключено". Отдельные переключатели могут быть установлены в на-
чальное состояние "включено" с помощью оператора INITIAL (инициали-
зировать), имеющего следующий формат:
INITIAL LS$ имя
INITIAL LS j
Здесь имя и j - соответственно имя и номер ЛП, устанавливаемого в
начальное состояние "включено".
Для включения, выключения и инвертирования логических переклю-
чателей в процессе моделирования служит блок LOGIC (установить ЛП),
имеющий следующий формат:
имя LOGIC X A
В поле A указывается имя или номер ЛП. Вспомогательный операнд
X указывает вид операции, которая производится с логическим перек-
лючателем при входе транзакта в блок: S - включение, R - выключе-
ние, I - инвертирование. Например:
LOGIC S 9
LOGIC R FLAG
Логические переключатели имеют единственный СЧА с названием
LS. Значение СЧА равно 1, если ЛП включен, и 0, если он выключен.
2.3. Блоки для сбора статистических данных
Два последних примера в предыдущем параграфе представляют со-
бой законченные модели одноканальной и многоканальной СМО с ожида-
нием. Однако такие модели разрабатываются обычно для исследования
различных характеристик, связанных с ожиданием заявок в очереди:
длины очереди, времени ожидания и т.п., а в приведенных примерах
очередь транзактов образуется в списке текущих событий и недоступна
исследователю. Для регистрации статистической информации о процессе
ожидания транзактов в модели должны присутствовать статистические
объекты: очереди или таблицы.
Объекты типа очередь создаются в модели путем использования
блоков - регистраторов очередей: QUEUE (стать в очередь) и DEPART
(уйти из очереди), имеющих следующий формат:
имя 0QUEUE A,B
имя DEPART A,B
В поле A указывается номер или имя очереди, а в поле B - число
единиц, на которое текущая длина очереди увеличивается при входе
транзакта в блок QUEUE или уменьшается при входе транзакта в блок
DEPART. Обычно поле B пусто, и в этом случае его значение по умол-
чанию принимается равным 1.
Для сбора статистики о транзактах, заблокированных перед ка-
ким-либо блоком модели, блоки QUEUE и DEPART помещаются перед и
после этого блока соответственно. При прохождении транзактов через
блоки QUEUE и DEPART соответствующим образом изменяются следующие
СЧА очередей: Q - текущая длина очереди; QM - максимальная длина
очереди; QA - целая часть средней длины очереди; QC - общее число
транзактов, вошедших в очередь; QZ - число транзактов, прошедших
через очередь без ожидания (число "нулевых" входов); QT - целая
часть среднего времени ожидания с учетом "нулевых" входов; QX - це-
лая часть среднего времени ожидания без учета "нулевых" входов.
Дополним приведенную на рис. 7 модель одноканальной СМО блока-
ми QUEUE и DEPART (рис. 9). Теперь транзакты, заблокированные перед
блоком SEIZE из-за занятости устройства SYSTEM, находятся в блоке
QUEUE, внося свой вклад в статистику о времени ожидания, накаплива-
емую в статистическом объекте типа "очередь" с именем LINE. При
освобождении устройства первый из заблокированных транзактов войдет
в блок SEIZE и одновременно в блок DEPART, прекращая накопление
статистики об ожидании этого транзакта.
EXP FUNCTION RN1,C24
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.85/.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
GENERATE 100,FN$EXP
QUEUE LINE
SEIZE SYSTEM
DEPART LINE
ADVANCE 80,FN$EXP
RELEASE SYSTEM
TERMINATE 1
Рис. 9
Очень часто исследователя интересует не только среднее значе-
ние времени ожидания в очереди, но и дисперсия этого времени, а
также статистическое распределение выборки времени ожидания,
представляемое обычно графически в виде гистограммы. Имея такое
распределение, можно оценить вероятность того, что время ожидания
превысит или не превысит некоторое заданное значение. Для сбора и
обработки данных о выборочном распределении времени ожидания в оче-
реди служат статистические объекты типа Q-таблица.
Для создания в модели такой таблицы она должна быть предвари-
тельно определена с помощью оператора определения QTABLE (Q-табли-
ца), имеющего следующий формат:
имя QTABLE A,B,C,D
Здесь имя - имя таблицы, используемое для ссылок на нее; A - номер
или имя очереди, распределение времени ожидания в которой необходи-
мо получить; B - верхняя граница первого частотного интервала таб-
лицы; C - ширина частотных интервалов; D - количество частотных ин-
тервалов.
Диапазон всевозможных значений времени ожидания в очереди,
указанной в поле A, разбивается на ряд частотных интервалов, коли-
чество которых указано в поле D. Первый из этих интервалов имеет
ширину от минус бесконечности до величины, указанной в поле B,
включительно. Второй интервал включает значения, большие, чем вели-
чина первой границы в поле B, но меньшие или равные B+C, и т.д. Все
промежуточные интервалы имеют одинаковую ширину, указанную в поле
C. Наконец, последний интервал включает все значения, большие, чем
последняя граница. Значения операндов B, C и D должны задаваться
целыми константами. Операнд B может быть неположительным, хотя для
Q-таблицы это не имеет смысла, так как время не может быть отрица-
тельным. Операнды C и D должны быть строго положительными.
При прохождении транзакта через блоки QUEUE и DEPART его время
ожидания фиксируется, и к счетчику частотного интервала таблицы, в
который попало это время, добавляется 1. Одновременно в таблице на-
капливается информация для вычисления среднего значения и средне-
квадратического отклонения (корня из дисперсии) времени ожидания.
По окончании моделирования среднее значение и среднеквадратическое
отклонение времени ожидания, а также счетчики попаданий в различные
частотные интервалы выводятся в стандартный отчет GPSS/PC.
Таблицы, как и другие объекты GPSS/PC, имеют СЧА: ТС - общее
число транзактов, вошедших в очередь, связанную с таблицей; TB -
целая часть среднего времени ожидания в очереди; TD - целая часть
среднеквадратического отклонения времени ожидания в очереди.
Дополним модель из примера на рис. 9 оператором QTABLE для по-
лучения распределения времени ожидания в очереди с именем LINE
(рис. 10).
WTIME QTABLE LINE,50,50,10
EXP FUNCTION RN1,C24
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.85/.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
GENERATE 100,FN$EXP
QUEUE LINE
SEIZE SYSTEM
DEPART LINE
ADVANCE 80,FN$EXP
RELEASE SYSTEM
TERMINATE 1
Рис. 10
Оператор определения таблицы с именем WTIME разбивает ось вре-
мени на 10 частотных интервалов. Первый интервал включает значения
от 0 до 50, второй - от 50 до 100, третий - от 100 до 150 и т.д.
Последний, десятый, интервал включает значения, превышающие 450.
Если, например, время ожидания некоторого транзакта в очереди
составило 145 единиц модельного времени, то к счетчику третьего
частотного интервала будет добавлена 1. Следует заметить, что ин-
формация в таблицу с именем WTIME заносится автоматически, при вхо-
де транзактов в блоки QUEUE и DEPART, и никаких специальных мер для
этого принимать не требуется.
Таблицы в GPSS/PC могут использоваться в более общем случае не
только для табулирования времени ожидания в очереди, но и для полу-
чения выборочных распределений произвольных СЧА любых объектов мо-
дели. Для определения таблиц служит оператор TABLE (таблица), фор-
мат которого совпадает с форматом оператора QTABLE. Отличие состоит
лишь в том, что в поле A оператора TABLE записывается стандартный
числовой атрибут, выборочное распределение которого необходимо по-
лучить, а операнды B, C и D определяют разбиение на частотные ин-
тервалы диапазона всевозможных значений этого СЧА.
Занесение информации в таблицу, определяемую оператором TABLE,
уже не может быть выполнено симулятором автоматически, как в случае
Q-таблиц. Для этого используется специальный блок TABULATE (табули-
ровать), имеющий следующий формат:
имя TABULATE A
В поле A указывается номер или имя таблицы, определенной соот-
ветствующим оператором TABLE.
При входе транзакта в блок TABULATE текущее значение табулиру-
емого аргумента таблицы, указанного в поле A оператора TABLE, за-
носится в нее в соответствии с заданным в операторе TABLE разбиени-
ем области значений аргумента на частотные интервалы. Одновременно
корректируются текущие значения СЧА таблицы: счетчик входов в таб-
лицу TC, среднее время ожидания TB и среднеквадратическое отклоне-
ние времени ожидания TD.
Пусть, например, в модели многоканальной СМО, приведенной на
рис. 8, надо получить распределение времени пребывания заявок в
системе, включающего время ожидания в очереди и время обслуживания.
Это может быть обеспечено способом, показанным на рис. 11.
Оператор TABLE определяет таблицу с именем TTIME, аргументом
которой служит СЧА М1 - время пребывания транзакта в модели. В
рассматриваемой модели значение СЧА M1 одновременно будет являться
временем пребывания транзакта в СМО в том случае, если занесение
информации в таблицу производить перед выходом транзакта из модели.
Поэтому блок TABULATE, заносящий информацию о времени пребывания
каждого транзакта в модели в таблицу TTIME, располагается перед
блоком TERMINATE. Диапазон возможных значений времени пребывания
транзакта в модели разбит в операторе TABLE на 12 частотных интер-
валов, ширина которых (кроме последнего) равна 100 единицам модель-
ного времени.
TTIME TABLE M1,100,100,12
STO2 STORAGE 2
EXP FUNCTION RN1,C24
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.85/.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
GENERATE 100,FN$EXP
ENTER STO2
ADVANCE 160,FN$EXP
LEAVE STO2
TABULATE TTIME
TERMINATE 1
Рис. 11
2.4. Блоки, изменяющие маршруты транзактов
В приведенных выше примерах транзакты, выходящие из любого
блока, всегда поступали в следующий блок. В более сложных моделях
возникает необходимость направления транзактов к другим блокам в
зависимости от некоторых условий. Эту возможность обеспечивают бло-
ки изменения маршрутов транзактов.
Блок TRANSFER (передать) служит для передачи входящих в него
транзактов в блоки, отличные от следующего. Блок имеет девять режи-
мов работы, из которых рассмотрим здесь лишь три наиболее часто
используемых. В этих трех режимах блок имеет следующий формат:
имя TRANSFER A,B,C
Смысл операндов в полях A, B и C зависит от режима работы блока.
В режиме безусловной передачи поля A и C пусты, а в поле B
указывается имя блока, к которому безусловным образом направляется
транзакт, вошедший в блок TRANSFER. Например:
TRANSFER ,FINAL
В режиме статистической передачи операнд A определяет вероят-
ность, с которой транзакт направляется в блок, указанный в поле C.
С вероятностью 1-A транзакт направляется в блок, указанный в поле B
(в следующий, если поле B пусто).
Вероятность в поле A может быть задана непосредственно деся-
тичной дробью, начинающейся с точки. Например, блок
TRANSFER .75,THIS,THAT
с вероятностью 0,75 направляет транзакты в блок с именем THAT, а с
вероятностью 0,25 - в блок с именем THIS.
Если же поле A начинается не с десятичной точки и не содержит
одного из ключевых слов - признаков других режимов работы блока, то
его значение рассматривается как количество тысячных долей в веро-
ятности передачи. Например, предыдущий блок TRANSFER можно записать
также в следующем виде:
TRANSFER 750,THIS,THAT
В режиме логической передачи в поле A записывается ключевое
слово BOTH (оба). Транзакт, поступающий в блок TRANSFER, сначала
пытается войти в блок, указанный в поле B (или в следующий блок,
если поле B пусто), а если это не удается, т.е. блок B отказывает
транзакту во входе, то в блок, указанный в поле C. Если и эта по-
пытка неудачна, то транзакт задерживается в блоке TRANSFER до изме-
нения условий в модели, делающего возможным вход в один из блоков B
или C, причем при одновременно возникшей возможности предпочтение
отдается блоку B. Например:
TRANSFER BOTH,MET1,MET2
Блок TEST (проверить) служит для задержки или изменения марш-
рутов транзактов в зависимости от соотношения двух СЧА. Он имеет
следующий формат:
имя TEST X A,B,C
Вспомогательный операнд X содержит условие проверки соотноше-
ния между СЧА и может принимать следующие значения: L (меньше); LE
(меньше или равно); E (равно); NE (не равно); GE (больше или рав-
но); G (больше). Поле A содержит первый, а поле B - второй из срав-
ниваемых СЧА. Если проверяемое условие A X B выполняется, то блок
TEST пропускает транзакт в следующий блок. Если же это условие не
выполняется, то транзакт переходит к блоку, указанному в поле C, а
если оно пусто, то задерживается перед блоком TEST.
Например, блок
TEST LE P$TIME,C1
не впускает транзакты, у которых значение параметра с именем TIME
Страницы: 1, 2, 3, 4, 5
|