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»
Раздел: Информатика, программирование
Количество знаков с пробелами: 117295
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
113808
0
0

... , как в моделируемой СМО перемещаются заявки, соответствующие транзактам. В начальный момент времени в GPSS-модели нет ни одного транзакта. В процессе моделирования симулятор генерирует транзакты в определенные моменты времени в соответствии с теми логическими потребностями, которые возникают в моделируемой системе. Подобным же образом транзакты покидают модель в определенные моменты времени в ...

Скачать
13405
0
2

... возвращаются на ввод и во всех очередях обслуживаются первыми. Смоделировать работу вычислительного центра в течение 30 ч. Определить необходимую емкость буферов и функцию распределения времени обслуживания заданий. 1.1 Построение концептуальной модели объекта На первом этапе проведения моделирования необходимо построить концептуальную модель (Рис. 1), т.е. концептуальная (содержательная) ...

Скачать
36862
2
13

... в результате входа транзактов в блоки и выполнения блоками своих функций. В данной работе требуется с помощью пакета моделирования систем GPSS/PC исследовать модель заданной СМО. Задание На обрабатывающий участок цеха поступают детали в среднем через 50 мин. Первичная обработка деталей производится на одном из двух станков. Первый станок обрабатывает деталь в среднем 40 мин и имеет до ...

Скачать
8426
5
5

... А При входе в блок RELEASE освобождается устройство, номер которого указан в поле А. Устройство становится доступным для других транзактов. При моделировании работы устройств, когда новое требование пытается прервать обслуживание предыдущего, используются блоки PREEMPT (захватить устройство) и RETURN (вернуть устройство ранее прерванному требованию). Блок PREEMPT имеет следующий формат: ...

0 комментариев


Наверх