Часть полного текста документа: 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. ............ |