4. НЕКОТОРЫЕ ПРИЕМЫ КОНСТРУИРОВАНИЯ GPSS-МОДЕЛЕЙ
4.1. Косвенная адресация
В рассматривавшихся до сих пор примерах моделей ссылки на раз-
личные объекты GPSS/PC производились исключительно по данным им
произвольным именам. Такая адресация объектов удобна, когда речь
идет о небольшом числе объектов каждого типа. Если же число объек-
тов некоторого типа велико, то во избежание пропорционального роста
количества блоков в модели используют ссылки на эти объекты по их
номерам с использованием так называемой косвенной адресации.
Идея косвенной адресации заключается в том, что каждый тран-
закт в некотором своем параметре содержит номер того или иного объ-
екта, а в полях блоков, адресующихся к объектам, записывается ссыл-
ка на этот параметр транзакта. Проиллюстрируем применение косвенной
адресации на примере следующей модели.
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
CLASS FUNCTION RN1,D3
.333,1/.667,2/1,3
MEAN FUNCTION P$TYPE,L3
1,70/2,80/3,90
PRIOT VARIABLE 4-P$TYPE
STO2 STORAGE 2
WTIME QTABLE LINE,50,50,10
TTIME TABLE M1,100,100,12
GENERATE 100,FN$EXP
ASSIGN TYPE,FN$CLASS
PRIORITY V$PRIOT
QUEUE LINE
QUEUE P$TYPE
ENTER STO2
DEPART P$TYPE
DEPART LINE
ADVANCE FN$MEAN,FN$EXP
LEAVE STO2
TABULATE TTIME
TERMINATE 1
Рис. 21
Пусть на вход моделируемой многоканальной СМО с двумя каналами
обслуживания поступает пуассоновский поток заявок со средним интер-
валом поступления 100 единиц модельного времени. Каждая заявка с
равной вероятностью 1/3 относится к одному из трех классов: 1, 2
или 3, а среднее время обслуживания заявок каждого типа составляет
соответственно 70, 80 и 90 единиц модельного времени. Чем меньше
среднее время обслуживания заявки, тем выше ее приоритет. Необходи-
мо построить модель, позволяющую оценить средние значения времени
ожидания заявок каждого типа, а также распределения общего времени
ожидания в очереди и общего времени пребывания в системе. Такая мо-
дель имеет вид, показанный на рис. 21.
Переменная PRIOT служит для вычисления приоритета транзакта
как функции его класса, содержащегося в параметре с именем TYPE.
Транзакты класса 1 (P$TYPE=1) получат приоритет 3, транзакты класса
2 - приоритет 2 и транзакты класса 3 - приоритет 1.
В блоке ASSIGN в параметр TYPE транзактов записывается класс
заявки, разыгрываемый с помощью функции CLASS. В следующем блоке
PRIORITY с помощью переменной PRIOT определяется приоритет транзак-
тов, первоначально равный 0 (отсутствует поле E в блоке GENERATE).
Далее каждый транзакт "отмечается" в блоках QUEUE в двух оче-
редях. Очередь с именем LINE является общей для транзактов всех
классов. Входя в следующий блок QUEUE, транзакт отмечается в очере-
ди с номером 1, 2 или 3 в зависимости от класса заявки, записанного
в параметре TYPE. Аналогичным образом фиксируется уход из очередей
в блоках DEPART. Таким образом, в модели создается четыре объекта
типа "очередь": одна очередь с именем LINE и три с номерами 1, 2 и
3. При этом три последние очереди создаются одной парой блоков
QUEUE-DEPART! В этом и заключается эффект косвенной адресации.
Как уже отмечалось ранее, каждому имени объекта симулятор сам
ставит в соответствие некоторый номер. При ссылках на объекты одно-
го и того же типа одновременно по именам и номерам, как это имеет
место в рассматриваемом примере, существует опасность параллельной
адресации к одному и тому же объекту вместо двух разных или, наобо-
рот, к двум разным объектам вместо одного. Так, в рассматриваемой
модели мы, вообще говоря, не знаем, какой именно номер поставит си-
мулятор в соответствие имени очереди LINE. Если этот номер будет от
1 до 3, то это приведет к ошибке, так как в модели окажется не че-
тыре очереди, а три, причем в одну из них будет заноситься информа-
ция как обо всех транзактах, так и дополнительно о транзактах одно-
го из трех классов. Как избежать такой ситуации?
К счастью, в большинстве случаев об этом можно не заботиться,
поскольку симулятор ставит в соответствие именам объектов достаточ-
но большие номера, начиная с 10000. При необходимости же можно
воспользоваться оператором EQU, о котором уже говорилось выше, и
самостоятельно сопоставить имени объекта желаемый номер. Например,
в рассматриваемой модели для того, чтобы очередь с именем LINE име-
ла номер 4, достаточно записать оператор:
LINE EQU 4
... , как в моделируемой СМО перемещаются заявки, соответствующие транзактам. В начальный момент времени в GPSS-модели нет ни одного транзакта. В процессе моделирования симулятор генерирует транзакты в определенные моменты времени в соответствии с теми логическими потребностями, которые возникают в моделируемой системе. Подобным же образом транзакты покидают модель в определенные моменты времени в ...
... возвращаются на ввод и во всех очередях обслуживаются первыми. Смоделировать работу вычислительного центра в течение 30 ч. Определить необходимую емкость буферов и функцию распределения времени обслуживания заданий. 1.1 Построение концептуальной модели объекта На первом этапе проведения моделирования необходимо построить концептуальную модель (Рис. 1), т.е. концептуальная (содержательная) ...
... в результате входа транзактов в блоки и выполнения блоками своих функций. В данной работе требуется с помощью пакета моделирования систем GPSS/PC исследовать модель заданной СМО. Задание На обрабатывающий участок цеха поступают детали в среднем через 50 мин. Первичная обработка деталей производится на одном из двух станков. Первый станок обрабатывает деталь в среднем 40 мин и имеет до ...
... А При входе в блок RELEASE освобождается устройство, номер которого указан в поле А. Устройство становится доступным для других транзактов. При моделировании работы устройств, когда новое требование пытается прервать обслуживание предыдущего, используются блоки PREEMPT (захватить устройство) и RETURN (вернуть устройство ранее прерванному требованию). Блок PREEMPT имеет следующий формат: ...
0 комментариев