книги / Моделирование систем. Практикум
.pdfSIMULATE
10 GENERATE 5,2„100
20 TRANSFER PICK,3,6
30TRANSFER ,CHAN 1
31TRANSFER ,CHAN2
32TRANSFER ,CHAN3
33TRANSFER ,CHAN4
********************1 _й канал обслуживания****
35 CHAN1 SEIZE 1;
40 ADVANCE 12,2
50 RELEASE 1
60 TRANSFER,EXIT
********************2-й канал обслуживания****
70CHAN2 SEIZE 2;
80 ADVANCE 9,2
90 RELEASE 2
100 TRANSFER ,EXIT
********************3 _jg каиал обслуживания****
110CHAN3 SEIZE 3;
120 ADVANCE 7,2
130 RELEASE 3
140 TRANSFER,EXIT
********************4 „g канал обслуживания****
150CHAN4 SEIZE 4;
160 ADVANCE 13,2
170 RELEASE 4
************************************************
180 EXIT TERMINATE 1 START 100
;CLEAR ;START 100 ;CLEAR ;START 100 ;CLEAR END
Р и с . 3.20. П рограмма EX A M 10.G PS
Программа решения примера 3.9 EXAM10.GPS приведена на рис. 3.20. В программе предусматривается возможность повторных прогонов (операторы CLEAR и START 100).
Формат записи блока TRANSFER в режиме PICK имеет следующий
вид:
20 TR A N SFE R PIC K ,3,6
В поле < А> стоит зарезервированное слово PICK. В этом режиме блок TRANSFER случайным образом с равной вероятностью отправляет транзакт в один из блоков, которые составляют ряд от начального блока, указанного в поле <В>, до блока, указанного в поле <С>. Если блок поля <В> обозначить как N, а блок поля <С> как М, то вероятность отправле ния транзакта на один из блоков с номерами N ,N + 1,N + 2, ...,М равна
61
1
(M -N )+l
Для программы EXAM 10.GPS эта вероятность равна ^ -- ^ —- = 025 .
Некоторая ограниченность применения блока TRANSFER в режиме PICK может быть обусловлена необходимостью расположения прини мающих блоков в строгой последовательности друг за другом. Но, как следует из программы EXAMI0.GPS, с помощью блока TRANSFER в ре жиме безусловного перехода можно проводить распределение транзактов в любую точку модели (к любому блоку).
Результаты моделирования EXAMI0.RPT (рис. 3.21) для программы EXAMI0.GPS демонстрируют особенности работы блока TRANSFER в режиме PICK. Несколько прогонов программы приводят к изменению результатов. Это объясняется тем, что рассматриваемый режим работы является вероятностным. В случае обслуживания одного транзакта (уста новить START I) он случайным образом попадает в какой-то канал об служивания. При различных прогонах транзакт будет попадать равнове роятно в разные каналы.
GPSS/PC R e p o rt f i l e |
REPORT.GPS. (V 2 , |
# 37349) |
0 2 -1 0 -2 0 0 1 05 :2 2 * 19 |
p a g e |
1 |
|||||||
START |
TIME |
END TIME |
BLOCKS |
FACILITIES STORAGES |
FREE MEMORY |
|
||||||
|
0 |
|
504 |
22 |
|
4 |
|
0 |
285568 |
|
|
|
LINE |
LOC |
|
BLOCK TYPE |
ENTRY COUNT |
CURRENT COUNT |
RETRY |
||||||
10 |
1 |
|
GENERATE |
|
|
100 |
|
0 |
|
|
0 |
|
20 |
2 |
|
TRANSFER |
|
100 |
|
0 |
|
|
0 |
||
30 |
3 |
|
TRANSFER |
|
26 |
|
0 |
|
|
0 |
||
31 |
4 |
|
TRANSFER |
|
27 |
|
0 |
|
|
0 |
||
32 |
5 |
|
TRANSFER |
|
25 |
|
0 |
|
|
0 |
||
33 |
6 |
|
TRANSFER |
|
|
22 |
|
0 |
|
|
0 |
|
35 |
CHAN1 |
|
SEIZE |
|
|
26 |
|
0 |
|
|
0 |
|
40 |
8 |
|
ADVANCE |
|
|
26 |
|
0 |
|
|
0 |
|
50 |
9 |
|
RELEASE |
|
|
26 |
|
0 |
|
|
0 |
|
60 |
10 |
|
TRANSFER |
|
|
26 |
|
0 |
|
|
0 |
|
70 |
CHAN2 |
|
SEIZE |
|
|
27 |
|
0 |
|
|
0 |
|
80 |
12 |
|
ADVANCE |
|
|
27 |
|
0 |
|
|
0 |
|
90 |
13 |
|
RELEASE |
|
|
27 |
|
0 |
|
|
0 |
|
100 |
14 |
|
TRANSFER |
|
|
27 |
|
0 |
|
|
0 |
|
110 |
CHAN3 |
|
SEIZE |
|
|
25 |
|
0 |
|
|
0 |
|
120 |
16 |
|
ADVANCE |
|
|
25 |
|
0 |
|
|
0 |
|
130 |
17 |
|
RELEASE |
|
|
25 |
|
0 |
|
|
0 |
|
140 |
18 |
|
TRANSFER |
|
|
25 |
|
0 |
|
|
0 |
|
ISO |
CKAN4 |
|
SEIZE |
|
|
22 |
|
0 |
|
|
0 |
|
160 |
20 |
|
ADVANCE |
|
|
22 |
|
0 |
|
|
0 |
|
170 |
21 |
|
RELEASE |
|
|
22 |
|
0 |
|
|
0 |
|
180 |
EXIT |
|
TERMINATE |
|
100 |
|
0 |
|
|
0 |
||
FACILITY |
ENTRIES |
|
U TIL. |
AVE |
TIME |
AVAILABLE |
OWNER PEND |
INTER |
RETRY DELAY |
|||
1 |
26 |
0 .5 6 1 |
10 80 |
1 |
0 |
0 |
0 |
0 |
|
0 |
||
2 |
27 |
0 |
494 |
9 |
22 |
1 |
0 |
0 |
0 |
0 |
|
0 |
3 |
25 |
0 |
351 |
7 |
08 |
1 |
0 |
0 |
0 |
0 |
|
0 |
4 |
22 |
0 |
579 |
1 3 .2 7 |
1 |
0 |
0 |
0 |
0 |
|
0 |
|
XACT_GROUP |
|
GROUP SIZE |
|
RETRY |
|
|
|
|
|
|
||
POSITION |
|
|
0 |
|
|
0 |
|
|
|
|
|
|
Р и с . 3.21. Стандартный $*чет ЮОДШ.ЕРТ
62
3.1.3. Блоки ASSIGN, LOOP, PREEMPT, RETURN.
Оператор EQU
Блок ASSIGN является основным средством для задания зна чений параметров транзактов. Параметры транзактов принимают значения из множества (свыше 1000) целых чисел. Каждый транзакт может иметь один или более параметров. Параметры транзак тов применяются для их различия в потоке сообщений, проходя щих через модель. Номера параметров используются для ссылок на значения, присвоенные параметрам. В общем случае интерпре тация смысла параметра произвольна и обычно задается разработ чиком модели. Блок ASSIGN заменяет, увеличивает или уменьша ет текущее значение параметра сообщения (транзакта) на заданное значение.
Блок LOOP используется для организации циклов. В поле <А> блока задается параметр, который используется в качестве счетчи ка цикла. Как правило, блок LOOP применяется в паре с блоком ASSIGN.
Блоки PREEMPT и RETURN относятся к аппаратной катего рии и к группе устройств. Эти блоки работают в паре. Блок PREEMPT — это блок захвата устройства. Он переводит устройст во в прерванное состояние, а блок RETURN — блок возврата за хваченного устройства.
Оператор EQU предназначен для присвоения числовых значе ний именам, используемым в модели. Назначение числовых зна чений может происходить при выполнении каких-либо выраже ний, задании стандартных числовых атрибутов и т. д. Результат вы числения выражения преобразуется к целому виду.
Пример ЗЛО. Видоизменим условие примера 3.4. Пусть каждая заявка проходит пять циклов обработки в обслуживающем канале в течение 3 ± 1 мин с равномерным законом распределения. Входной поток заявок подчиняется равномерному закону со временем 5 ± 2 мин. Смоделиро вать процесс обработки Q -схемой равно 100 заявок. Программа решения примера EXAM11.GPS приведена на рис. 3.22.
В данном примере организация пятикратного цикла обработки осу ществляется блоками ASSIGN и LOOP. Обращение к заданным число вым значениям (5 и 7) осуществляется через метки МЕТ1, МЕТ2 посред ством оператора EQU. Формат записи блока ASSIGN имеет вид:
20 A S SIG N 13.М ЕТ1
В поле <А> задан параметр транзакта под номером 13 (произвольно). Этому параметру сопоставляется число 5, которое переопределяется че рез метку МЕТ1 поля <В>. Значение поля <В> присваивается параметру,
63
SIM U L A T E |
|
||
MET1 |
E Q U sqr(25) |
|
|
M ET2 |
EQU (sqr(9)+2A2) |
|
|
10 |
G EN ER A TE 5,2„100; |
Генерация 100 транзактов |
|
20 |
ASSIG N 13,MET1 |
|
|
30 |
SEIZE 1 |
|
|
40 CY C L5 AD V A N C E M ET2,2 |
|
||
50 |
LOOP 13,CYCL5 |
|
|
60 |
R ELEA SE 1 |
|
|
70 |
TER M IN A TE 1 |
Уничтожение транзакто в |
STA RT 100; |
Задание числа счетчика заверш ений |
END |
|
Р и с |
3.22 Программа EX A M 11.G PS |
номер которого задается в поле <А> Заданное число 5 осуществляется оператором EQU. Формат записи оператора EQU:
М ЕТ1 |
EQU |
SQ R (25) |
М ЕТ2 |
EQ U |
(S Q U (9) + 2 А2) |
Метка МЕТ1 — это имя в поле метки оператора. В поле <А> вычисля ется выражение л/25 = 5. Оператор EQU с меткой МЕТ2 вычисляет выра жение л/9 + 22 = 3 + 4 = 7.
Формат записи блока LOOP:
50 LOOP 13, CYCL5
В поле <А> задан номер параметра (такой же, как и в поле <А> парно го блока ASSIGN), определяющего число циклов. В поле <В> задан по метке блок, на который переходит транзакт, если параметр, на который сделана ссылка в поле <А>, не равен нулю. Прохождение транзактом од ного цикла уменьшает значение поля <А> на единицу. Когда значение параметра в поле <А> становится равным нулю, то транзакт переходит к следующему по номеру блоку (в рассматриваемом случае к блоку RELEASE под номером 60). Начало цикла начинается с блока ADVANCE с меткой CYCL5 под номером 40, окончание цикла — с блока LOOP под номером 50. Если транзакт входит в блок LOOP со значением параметра, равным п , то этот транзакт войдет в блок LOOP п раз и вернется к началу этого цикла (п — 1) раз.
Стандартный отчет моделирования Q-схем ы по программе ЕХАМ11.GPS представлен на рис. 3.23. Задача повторного пятикратного обслуживания осуществляет блок LOOP, который отправляет транзакты на блок ADVANCE. Видно, что через блоки LOOP и ADVANCE проходит в 5 раз больше транзактов, чем через остальные блоки. Среднее время об служивания в устройстве также в 5 раз больше (в позиции AVEJTIME), чем время обслуживания, которое задается в поле <А> блока временнбй задержки ADVANCE (см. EXAM11.GPS).
Пример 3.12. На обработку по равномерному закону поступает два по тока заготовок деталей: 1-й поток со временем 10 ± 1 мин, а 2-й со време-
64
GPSS/PC |
Report |
file |
REPORT GPS. (V 2, |
# 37349) |
02-10-2001 |
05-23 21 |
page 1 |
|
START^ TIME |
END_TIME |
BLOCKS |
FACILITIES |
STORAGES |
FREEJ4EMORY |
|||
|
0 |
|
3499 |
7 |
X |
0 |
77824 |
|
LINE |
LOC |
|
BLOCK_TYPE |
ENTRY_COUNT CURRENT_COUNT |
RETRY |
|||
10 |
1 |
|
GENERATE |
100 |
0 |
0 |
||
20 |
2 |
|
ASSIGN |
100 |
0 |
0 |
||
30 |
3 |
|
SEIZE |
100 |
0 |
0 |
||
40 |
CYCLS |
ADVANCE |
500 |
0 |
0 |
|||
50 |
5 |
|
LOOP |
500 |
0 |
0 |
||
60 |
6 |
|
R E L E A S E |
100 |
0 |
0 |
||
70 |
7 |
|
TERMINATE |
100 |
0 |
0 |
||
FACILITY |
ENTRIES |
UTIL. |
AVE._TIME |
AVAILABLE |
OWNER PEND |
INTER RETRY DELAY |
||
1 |
|
100 0 .9 9 8 |
3 4 .9 4 |
1 |
0 0 0 * 0 |
0 |
||
XACTJ3ROUP |
GROUP_SIZE |
RE TRY |
|
|
|
|||
POSITION |
|
|
0 |
|
0 |
|
|
|
|
|
Р и с . |
3.23. Стандартный отчет |
EXA M 11.RPT |
|
нем 25 ± 2 мин. Причем 2-й поток прерывает изготовление деталей 1-го потока. Время обработки деталей 1-го потока 7 ± 3 мин, а 2-го — 15 ± 1 мин. Смоделировать процесс обработки 100 деталей, образующих два по тока.
Рассмотрим особенности использования при моделировании такой системы S блоков PREEMPT и RETURN. Программа решения примера 3.11 EXAM12.GPS приведена на рис. 3.24.
Два блока GENERATE (под номерами 10 и 60) формируют два незави симых потока транзактов. Блок PREEMPT позволяет получать в пользо вание устройство, указанное в поле <А> этого блока, т. е. устройство под именем FACIL1. Это соответствует тому состоянию системы, когда про-
SIM ULATE
************************************************************
10 |
G ENERA TE 5,2; |
Ф ормирование 1-го потока деталей |
20 |
SEIZE FACIL1; |
У стройство под именем FACIL1 |
30 |
AD VAN CE 7,2 |
|
40 |
RELEASE FACIL1 |
|
50 |
TER M IN A TE 1; |
Вы вод деталей 1-го потока |
************************************************************
60 |
G ENERA TE 25,2; |
Ф ормирование 2-го потока деталей |
70 |
PREEM PT FACIL1; |
П реры вание обработки 1-го потока |
80 |
ADVAN CE 11,2; |
Время обработки 2-го потока |
************************************************************
90 RETURN FACIL1; Снятие преры вания 1-го потока
100 EXIT TERM IN ATE 1; Вы вод деталей 2-го потока
************************************************************
START 100; Задание числа счетчика заверш ений (количество деталей) END
Р и с . 3.24. П рограмма EX A M 12.G PS
5 - 3083 |
65 |
исходит прерывание обработки деталей 1-го потока в устройстве и начи нается обработка деталей 2-го потока. Длительность обработки деталей 2-го потока задается блоком ADVANCE под номером 80. Стандартная ста тистика системы G P S S /P C определяется только для одного устройства FACIL1.
Для блока PREEMPT могут быть задействованы пять полей. Поле операнда <А> является обязательным. В программе EXAM12.GPS фор мат записи блока PREEMPT имеет вид:
70 PREEMPT <А>
В поле <А> блока PREEMPT (под номером 70) задается имя устройст ва (по метке FACIL1), на котором происходит прерывание 1-го потока транзактов от блока GENERATE под номером 10. Длительность прерыва ния задается блоком ADVANCE под номером 80. В то же время устройство FACIL1 во время прерывания 1-го потока деталей начинает обслуживать детали 2-го потока, который формируется блоком GENERATE под номе ром 60. Снятие прерывания осуществляется блоком RETURN.
Формат записи блока RETURN:
90 RETURN <А>
В поле <А> блока RETURN задается имя устройства (по метке FACIL1), с которого снимается прерывание. Прерывание может быть снято только тем транзактом, которым оно было сгенерировано. Приве денный формат блока возврата RETURN является единственным. Име ются некоторые дополнительные возможности блока PREEMPT.
Рассмотрим файл стандартного отчета PRIM12.RPT. В программе EXAM12.GPS есть два блока TERMINATE, которые осуществляют вывод транзактов из системы: один блок для вывода деталей 1 -го потока, другой блок — для вывода деталей 2-го потока. Статистика устройства обслужи вания FACILI показывает, что через него проходили транзакты как 1-го, так и 2-го потоков. Число транзактов, которые не вошли в устройство об служивания, равно 105 (поля DELAY и CURRENT_COUNT). Из 1-го по тока количество обслуженных транзактов (деталей) составило 67, а со 2-го потока —33. В сумме получается 100 деталей, что и требовалось по условию примера. Стандартный отчет EXAM12.RPT приведен на рис. 3.25.
Пример 3.12. Пусть в условиях примера 3.11 детали, обработка кото рых прервана на время обработки деталей из 2-го потока, выводятся из системы. В этом случае бблыная часть условий задачи остается неизмен ной: на обработку по равномерному закону поступает два потока загото вок деталей: 1-й поток со временем 10+1 мин, 2-й — 25 ± 2 мин. Причем 2-й поток прерывает изготовление деталей 1-го потока. Время обработки деталей 1-го потока равно 7 ± 3 мин, а 2-го — 15 ± 1 мин. Смоделировать процесс обработки 100 деталей, разделенных на два потока. Данный при мер решается по программе EXAMI2.GPS с дополнительными полями блока PREEMPT, которые позволяют использовать блок PREEMPT в ре жиме удаления транзактов на повторный захват устройства и отправки их
66
GPSS/PC |
R e p o r t f i l e |
REPORT.GPS. (V 2 , |
» 37349) |
0 2 - 1 0 - 2 0 0 1 0 5 :2 5 - 2 3 |
p a g e 1 |
||||
START_TIME |
END_TIME |
BLOCKS |
FA CILITIES STORAGES |
FREE_MEMORY |
|||||
|
0 |
838 |
10 |
1 |
|
0 |
78016 |
|
|
LINE |
LOC |
BLOCK_TYPE |
ENTRY^COUNT |
CURR£NT_COUNT |
RETRY |
||||
|
|
|
|
||||||
10 |
1 |
GENERATE |
|
173 |
|
105 |
|
0 |
|
20 |
2 |
SEIZE |
|
68 |
|
1 |
|
0 |
|
30 |
3 |
ADVANCE |
|
67 |
|
0 |
|
0 |
|
40 |
4 |
RELEASE |
|
67 |
|
0 |
|
0 |
|
50 |
5 |
TERMINATE |
|
67 |
|
0 |
|
0 |
|
60 |
6 |
GENERATE |
|
33 |
|
0 |
|
0 |
|
70 |
7 |
PREEMPT |
|
33 |
|
0 |
|
0 |
|
80 |
8 |
ADVANCE |
|
33 |
|
0 |
|
0 |
|
90 |
9 |
RETURN |
|
33 |
|
0 |
|
0 |
|
100 |
EXIT |
TERMINATE |
|
33 |
|
0 |
|
0 |
|
FACILITY |
ENTRIES |
UTIL. |
AVE.JTIME |
AVAILABLE |
OWNER PEND |
INTER RETRY DELAY |
|||
FAC I LI |
101 |
0 .9 9 4 |
8 .2 5 |
1 |
81 |
0 |
0 |
0 |
105 |
XACT_GROUP |
GROUP_SIZE |
RETRY |
|
|
|
|
|
||
POSITION |
0 |
|
0 |
|
|
|
|
|
Р и с . 3.25. Стандартный отчет EXAM12.RPT
по метке к заданному блоку. Программа EXAM13.GPS приведена на рис. 3.26.
Формат записи блока PREEMPT для программы EXAM13.GPS:
70PREEMPT <A>,[<B>],<0..,[<D>L<F>
Вполе <А> задается метка прерываемого устройства FACIL1, поле <В> пусто, в поле <С> указывается имя блока (EXIT), куда направляются транзакты прерванного потока, поле <D> пусто, в поле <Е> устанавлива ется режим удаления RE.
SIM U L A T E
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
10 |
G EN ER A TE 5,2; |
Ф ормирование I-го потока деталей |
20 |
SEIZE FACIL1; |
Устройство под именем FACIL1 |
30 |
AD V A N C E 7,2 |
|
40 |
RELEASE FACIL1 |
|
50 |
TER M IN A TE 1; |
Вы вод деталей 1-го потока |
*********************************************************** |
||
60 |
G EN ER A TE 25,2; |
Ф ормирование 2-го потока деталей |
70 |
PR EEM PT FACfLI„EXJT„RE; П реры вание обработки 1-го потока |
|
80 |
AD V A N C E 11,2; |
Время обработки 2-го потока (время прерывания) |
90 |
RETU RN FACIL1; |
Снятие прерывания 1-го потока |
100 exit TER M IN A TE 1; Вы вод деталей 1-го и 2-го потоков
************************************************ ***************
STA RT 100; |
Задание числа счетчика заверш ений |
END |
|
Р и с . |
3.26. Программа EXAM13.GPS |
5* |
67 |
GPSS/PC R e p o r t f i l e |
REPORT |
GPS |
(V 2 , |
# 37349) |
0 3 - 1 0 - 2 0 0 1 05 |
27 25 |
p a g e |
1 |
||||||
START |
TIME |
ENDJTIME |
BLOCKS |
FACILITIES STORAGES |
FREE |
MEMORY |
|
|||||||
|
0 |
|
706 |
|
10 |
|
|
1 |
|
0 |
80256 |
|
|
|
LINE |
LOC |
|
BLOCK_TYPE |
|
ENTRY_COUNT |
CURR£NT_COUNT |
RETRY |
|||||||
10 |
1 |
|
G E N E R A T E |
|
|
144 |
|
71 |
|
|
0 |
|||
20 |
2 |
|
SEIZE |
|
|
|
73 |
|
1 |
|
|
0 |
||
30 |
3 |
|
ADVANCE |
|
|
|
69 |
|
0 |
|
|
0 |
||
40 |
4 |
|
RELEASE |
|
|
|
44 |
|
0 |
|
|
0 |
||
50 |
5 |
|
TERMINATE |
|
|
44 |
|
0 |
|
|
a |
|||
60 |
6 |
|
GENERATE |
|
|
28 |
|
0 |
|
|
0 |
|||
70 |
7 |
|
PREEMPT |
|
|
|
28 |
|
0 |
|
|
0 |
||
80 |
8 |
|
ADVANCE |
|
|
|
28 |
|
0 |
|
|
0 |
||
90 |
9 |
|
RETURN |
|
|
|
28 |
|
0 |
|
|
0 |
||
100 |
EXIT |
|
TERMINATE |
|
|
56 |
|
0 |
|
|
0 |
|||
FACILITY |
ENTRIES |
|
UTIL |
|
AVE._TIME |
AVAILABLE |
OWNER PEND |
INTER RETRY D EL A Y |
||||||
FACIL1 |
101 |
0 |
992 |
|
|
6 |
94 |
1 |
88 |
0 |
0 |
0 |
|
71 |
XACTJ3ROUP |
|
GROUP_SlZE |
|
|
RETRY |
|
|
|
|
|
|
|||
POSITION |
|
|
|
0 |
|
|
|
0 |
|
|
|
|
|
|
|
|
Р и с |
3 27. Программа EXAM13.GPS |
|
|
|
|
Операнд поля <С> задает номер или имя (метку) блока, куда должен попытаться войти прерванный транзакт. Режим удаления RE поля <Е> означает, что прерванный транзакт не будет претендовать на использова ние устройства, на котором произошло прерывание. Прерванный тран закт пытается войти в блок, заданный полем <С>. Поскольку в поле <С> задано имя блока уничтожения транзактов TERMINATE, то попытка войти в это блок всегда будет успешной. Через блок с меткой EXIT выво дятся также и обработанные детали 2-го потока.
В поле <В> блока PREEMPT может быть задан приоритетный режим. При работе в этом режиме транзакт, занимающий устройство, может быть прерван только транзактом, приоритет которого выше приоритета данного транзакта. Поле <D> задает номер параметра, связанного с пре рванным транзактом. Поле <D> следует задавать только в том случае, если приоритет прерывающего транзакта больше приоритета прерывае мого транзакта.
В файле стандартного отчета для программы EXAM13.GPS, представ ленной на рис. 3.27 приведены результаты моделирования системы, для которой предусмотрен вывод деталей на момент прерывания устройства по обслуживанию 1 -го потока. Видно, что через блок TERMINATE по вы воду деталей второго потока проходят также и детали первого потока. Если в блок TERMINATE под номером 100 входило и уничтожалось 33 транзакта при обычном режиме прерывания блока PREEMPT, то при на личии режима удаления (поля <F> и <С> блока PREEMPT) число входя щих транзактов в блок TERMINATE под номером 100 увеличилось до 56. Число транзактов, которые были сгенерированы, но не вошли в устрой ство обслуживания под именем FACIL1, равно 71 (поля DELAY и
68
CURRENT_COUNT) Это означает, что устройство было меньше занято, поскольку исключены повторные попытки занять устройство транзактами первого потока. Следует отметить также, что и общее время моделиро вания (поля END_TIME) изменилось: в режиме удаления транзактов вре мя уменьшилось с 838 до 706 мин (в общем случае единиц времени).
3.1.4. Блоки ENTER, LEAVE, GATE, TEST. Операторы STORAGE, VARIABLE, INITIAL
Для моделирования Q -сх е м с ограниченной очередью или с ог раниченной емкостью накопителя в GPSS/PC используют блоки ENTER, LEAVE и оператор STORAGE. Эти блоки и оператор обра зуют группу памятей или г р у п п у описания накопителей. Памяти или накопители относятся к аппаратной категории, которые име ют визуализацию в виде специальных окон (в рабочей строке GPSS/PC следует набрать сочетание клавиш Alt + S).
Блок GATE проверяет состояние устройств, памятей, логиче ских ключей. Блок TEST сравнивает два стандартных числовых ат рибута по вычисляемому отношению. Оба блока управляют пото ком сообщений (транзактов).
Пример 3.13. Поток заявок поступает в накопитель Q -схемы с допус тимой емкостью, равной 3 единицам, равномерно каждые 5 ± 1 мин. Если заявки после накопителя застают 1-й обслуживающий канал (устройст во) занятым, то они поступают на обработку во 2-й канал. Время обработ ки 1-го канала равно 9 ± 1 мин, 2-го — 13 ± 1 мин. Смоделировать обра ботку Q -схемой 100 заявок.
Программа реш ения представлена под именем EXAM14.GPS на рис. 3.28. В данном примере поступающие в Q-схему заявки сначала буферируются в накопителе емкостью в 3 единицы, а потом пытаются попасть на обработку в 1-й канал обслуживания. Если 1-й канал оказывается заня тым, т. е. в нем осуществляется обслуживание, то очередная заявка посту пает на обслуживание во 2-й канал.
В программе EXAM14.GPS используются следующие форматызаписи оператора STORAGE, блоков ENTER, LEAVE и GATE.
Формат записи оператора STORAGE:
NAK3 STORAGE 3
Описание оператора находится вне основного тела программы, без нумерации Метка NAK3 служит для обращения или ссылки на оператор. Операнд поля <А> определяет объем накопителя (это 3). Операнд поля <А> должен быть положительным целым Когда транзакт пытается войти в блок ENTER, то запрос на емкость накопителя сравнивается с доступ ной емкостью Если запрос может быть выполнен, то транзакт входит в блок ENTER, и текущая емкость накопителя уменьшается. Если запрос
69
SIM U LA TE |
|
|
NAK3 STO RA G E 5; |
Накопитель емкостью в 3 единицы |
|
10 |
GENERATE 4,1 |
|
20 |
GATE SNF NAK3,QUE2j |
Анализ состояния накопителя |
30 |
ENTER NAK3 |
|
35 |
Q UEUE 1 |
|
40 |
SEIZE I; |
1-й канал |
45 |
DEPAR T 1 |
|
50 |
LEAVE NAK3 |
|
60 |
AD VAN CE 13,1 |
|
70 |
RELEASE 1 |
|
80 |
TERM IN ATE |
|
90 Q U E 2 QUEUE 2 |
|
|
100 FACIL2 SEIZE 2; |
2-й канал с меткой FACIL2 |
|
110 |
DEPART 2 |
|
200 |
ADVAN CE 11,1 |
|
300 |
RELEASE 2 |
|
400 TERM IN ATE |
|
|
500 G ENER A TE 180 |
|
|
600 |
TER M IN A TE 1 |
|
STA R T 1
END
Р и с . 3.28. Программа E X A M 14.G PS
транзакта не может быть выполнен, то транзакт входит в список задержки многоканального устройства.
Формат записи блока ENTER:
30ENTER <А >
Вполе <А> указывается номер или имя накопителя (это NAK3). Когда транзакт входит в блок ENTER, то операнд поля <А> используется для на хождения накопителя с указанным именем (это накопитель с именем NAK3). Если такого накопителя не существует, то происходит ошибка выполнения программы.
Формат записи блока LEAVE:
50 LEAVE < А > ,[< В > ]
Блок LEAVE освобождает определенное число единиц накопителя под именем, заданным в поле <А> (это NAK3). Поле <А> также определя ет номер или имя накопителя (это NAK3). Поле <В> определяет число ос вобождаемых единиц накопителя, если это поле пусто, предполагается 1. Число освобождаемых единиц не должно превышать текущее содержи мое накопителя. Обычно поле <В> не используется.
Формат записи блока GATE:
20 GATE <Х ><А >,<В >
Поле <А> содержит имя или номер объекта (в данном случае накопи теля с меткой NAK3), для которого проводится проверка во вспомога тельном поле операции <Х>. Поле <В> содержит номер или имя следую-
70