Реферат: Моделирование на GPSS
устройства с
именем SYSTEM, и поэтому в нем может находиться только
один транзакт.
Транзакты, выходящие из блока GENERATE в моменты за-
нятости
устройства, не смогут войти в блок SEIZE и будут оставаться
в блоке GENERATE, образуя
очередь в списке текущих событий.
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
SEIZE SYSTEM
ADVANCE 80,FN$EXP
RELEASE SYSTEM
TERMINATE 1
Рис. 7
Для моделирования захвата (прерывания)
одноканального уст-
ройства вместо
блоков SEIZE и RELEASE используются соответственно
блоки PREEMPT
(захватить) и RETURN (вернуть). Блок PREEMPT имеет
следующий формат:
имя PREEMPT A,B,C,D,E
В поле A
указывается имя или номер устройства, подлежащего
захвату. В поле B
кодируется условие захвата. Если это поле пусто,
то захват возникает,
если обслуживаемый транзакт сам не является
захватчиком. Если же в
поле B записан операнд PR, то захват возни-
кает, если приоритет
транзакта-захватчика выше, чем приоритет
обслуживаемого транзакта.
Поля C, D и E
определяют поведение транзактов, обслуживание
которых было прервано. Поле
C указывает имя блока, в который будет
направлен прерванный
транзакт. В поле D может быть указан номер или
имя параметра прерванного
транзакта, в который записывается время,
оставшееся этому транзакту
до завершения обслуживания на уст-
ройстве. При отсутствии
операнда в поле E прерванный транзакт сох-
раняет право на
автоматическое восстановление на устройстве по
окончании захвата. Если
же в поле E указан операнд RE, то транзакт
теряет такое право.
Блок RETURN
имеет единственный операнд A, содержащий имя или
номер устройства,
подлежащего освобождению от захвата.
Блоки PREEMPT и
RETURN могут быть использованы для моделирова-
ния СМО с абсолютными
приоритетами. В простейших случаях, при одном
уровне захвата, в блоке
PREEMPT используется единственный операнд
A. При этом
прерванный транзакт переводится симулятором из списка
будущих событий в так называемый
список прерываний устройства, а
по окончании захвата
устройства возвращается в список будущих собы-
тий с предварительно
вычисленным временем занятия устройства для
продолжения обслуживания.
Для создания в
модели многоканальных устройств (МКУ) они долж-
ны быть предварительно
определены с помощью операторов определения
STORAGE (память),
имеющих следующий формат:
имя STORAGE A
Здесь имя - имя МКУ,
используемое для ссылок на него; A – емко-
cть (количество каналов
обслуживания) МКУ, задаваемая константой.
Для занятия и
освобождения каналов обслуживания МКУ использу-
ется пара блоков ENTER
(войти) и LEAVE (покинуть), имеющих следую-
щий формат:
имя ENTER A,B
имя LEAVE A,B
В поле A
указывается номер или имя МКУ, в поле B число кана-
лов МКУ, занимаемых при
входе в блок ENTER или освобождаемых при
входе в блок LEAVE.
Обычно поле B пусто, и в этом случае по умолча-
нию занимается или
освобождается один канал.
При входе транзакта в
блок 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
Страницы: 1, 2, 3, 4, 5, 6, 7, 8
|