Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекции 6.doc
Скачиваний:
6
Добавлен:
22.08.2019
Размер:
168.45 Кб
Скачать

20

ЛЕКЦИЯ 6

Организация циклов

Для организации циклов применяется блок LOOP. В операнде А блока записывается идентификатор параметра, в котором предварительно указывается сколько раз требуется повторить цикл. В операнде В указывается метка начала цикла.

Пример 6.1. Система массового обслуживания с циклом

Структурная схема СМО с циклическим обслуживанием транзактов представлена на рис.6.1.

GT

PK1

PK2

PK3

Решённые задачи

500±100 20±7 25±10 100±20

8 раз

Время функционирования всех элементов модели распределено по равномерному закону. Останов после решения 300 задач.

Рис.6.1. Структурная схема примера 6.1

Программа

GENERATE 500,100

ASSIGN KOLPOVT,8

  • В параметр P$KOLPOVT запишем требуемое количество повторений

  • цикла – 8.

CIKL SEIZE PK1

ADVANCE 20,7

RELEASE PK1

SEIZE PK2

ADVANCE 25,10

RELEASE PK2

LOOP KOLPOVT,CIKL

При поступлении транзакта в блок LOOP из параметра P$KOLPOVT вычитается единица и проверяется оставшееся содержимое. Если оно >0, то переходим на метку CIKL, то есть на начало цикла. В противном случае переходим к следующему блоку, повторения выполнений операторов цикла больше не требуется и мы переходим к третьему РК.

SEIZE PK3

ADVANCE 100,20

RELEASE PK3

TERMINATE 1

START 300

Отчет

GPSS World Simulation Report - 16.31.1

Thursday, November 01, 2007 10:36:22

START TIME END TIME BLOCKS FACILITIES STORAGES

0.000 150919.436 13 3 0

NAME VALUE

CIKL 3.000

KOLPOVT 10000.000

PK1 10001.000

PK2 10002.000

PK3 10003.000

LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY

1 GENERATE 300 0 0

2 ASSIGN 300 0 0

CIKL 3 SEIZE 2400 0 0

4 ADVANCE 2400 0 0

5 RELEASE 2400 0 0

6 SEIZE 2400 0 0

7 ADVANCE 2400 0 0

8 RELEASE 2400 0 0

9 LOOP 2400 0 0

10 SEIZE 300 0 0

11 ADVANCE 300 0 0

12 RELEASE 300 0 0

13 TERMINATE 300 0 0

FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY

PK1 2400 0.317 19.962 1 0 0 0 0 0

PK2 2400 0.399 25.084 1 0 0 0 0 0

PK3 300 0.199 99.890 1 0 0 0 0 0

FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE

301 0 151042.456 301 0 1

Содержимое отчёта показывает, что количество повторений блоков цикла в восемь раз превышает количество входов транзактов в блоки до цикла и после него.

Блок TRANSFER имеет наибольшее количество модификаций из всех блоков языка GPSS W. Назовём их.

- «пробел» - безусловный;

- «.» - статистический;

- BOTH - условного выбора;

- ALL - условного поиска;

- PICK - вероятностного выбора;

- FN - перехода по функции;

- P - перехода по параметру;

- SBR -перехода к подпрограмме;

- SIM - перехода по выполнению нескольких условий.

Блок безусловного перехода TRANSFER ,METKA мы раньше уже использовали. При его записи операнд А не заполняется, а в операнде В записывается метка, к которой направляется транзакт.

Для выбора устройств по заданной вероятности используется следующая модификация блока TRANSFER A,B,C. С вероятностью, указанной в операнде А транзакт передается на метку, идентификатор которой указан в операнде С и с вероятностью единица минус указанная на метку, указанную в операнде В. Если метка, указанная в операнде В, следует сразу после блока TRANSFER, то ее можно не указывать.

Пример 6.2. Выбор объекта по заданной вероятности

Структурная схема примера представлена на рис.6.2.

PK1

GT

0,7

180±50 Решённые

0,3 задачи

PK2

100±30

210±70

Время функционирования всех элементов модели распределено по равномерному закону. Остановить моделирование после решения 250 задач.

Рис.6.2. Структурная схема примера 6.2

Программа

GENERATE 100,30

TRANSFER .3,PERV,VTOR

С вероятностью 0,3 транзакт передается на метку VTOR и с вероятностью 0,7 (1-0,3) на метку PERV. Если метка PERV следует сразу после блока TRANSFER, то ее можно не указывать.

PERV SEIZE 1

ADVANCE 180,50

RELEASE 1

TERMINATE 1

VTOR SEIZE 2

ADVANCE 210,70

RELEASE 2

TERMINATE 1

START 250

Отчет

GPSS World Simulation Report - 17.35.1

Thursday, November 01, 2007 10:36:34

START TIME END TIME BLOCKS FACILITIES STORAGES

0.000 30937.802 10 2 0

NAME VALUE

PERV 3.000

VTOR 7.000

LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY

1 GENERATE 310 0 0

2 TRANSFER 310 58 0

PERV 3 SEIZE 174 0 0

4 ADVANCE 174 1 0

5 RELEASE 173 0 0

6 TERMINATE 173 0 0

VTOR 7 SEIZE 78 1 0

8 ADVANCE 77 0 0

9 RELEASE 77 0 0

10 TERMINATE 77 0 0

FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY

1 174 0.996 177.111 1 231 0 0 0 57

2 78 0.521 206.691 1 308 0 0 0 1

CEC XN PRI M1 ASSEM CURRENT NEXT PARAMETER VALUE

308 0 30734.067 308 7 8

FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE

311 0 31003.385 311 0 1

231 0 31046.527 231 4 5

По содержимому отчёта отметим что распределение входов транзактов в ПК1 и ПК2 174:78=2.23 близко к заданному 0.7:0.3=2.33, что свидетельствует о корректности результатов моделирования.

Для выбора устройств по заданному условию используется модификация блока - TRANSFER A,B,C. В операнде А записывается символ модификации выбора по условию – BOTH. Транзакт, вошедший в блок TRANSFER пытается занять устройство, метка которого указана в операнде В, если это не удаётся, то занять устройство, метка которого указана в операнде С, если и это ему не удаётся, то транзакт остаётся в блоке TRANSFER до тех пор, пока не появится возможность занять одно из указанных устройств. Если метка, указанная в операнде В, следует сразу после блока TRANSFER, то ее можно не указывать.

Пример 6.3. Выбор объекта по заданному условию

Структурная схема примера представлена на рис.6.3.

PK1

GT

180±50 Решённые

задачи

PK2

100±30

210±70

Время функционирования всех элементов модели распределено по равномерному закону. Остановить моделирование после решения 250 задач.

Рис.6.3. Структурная схема примера 6.3

В этом случае в примере 6.2 требуется заменить запись второго блока.

GENERATE 100,30

TRANSFER BOTH,PERV,VTOR

*Транзакт пытается занять устройство с меткой PERV если это ему не *удаётся то устройство с меткой VTOR. Если метка PERV следует сразу *после блока TRANSFER, то ее можно не указывать.

PERV SEIZE 1

ADVANCE 180,50

RELEASE 1

TERMINATE 1

VTOR SEIZE 2

ADVANCE 210,70

RELEASE 2

TERMINATE 1

START 250

Отчет

GPSS World Simulation Report - 18.36.1

Thursday, November 01, 2007 10:36:44

START TIME END TIME BLOCKS FACILITIES STORAGES

0.000 25311.417 10 2 0

NAME VALUE

PERV 3.000

VTOR 7.000

LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY

1 GENERATE 255 0 0

2 TRANSFER 255 4 0

PERV 3 SEIZE 136 0 0

4 ADVANCE 136 0 0

5 RELEASE 136 0 0

6 TERMINATE 136 0 0

VTOR 7 SEIZE 115 0 0

8 ADVANCE 115 1 0

9 RELEASE 114 0 0

10 TERMINATE 114 0 0

FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY

1 136 0.968 180.212 1 0 0 0 4 0

2 115 0.970 213.513 1 251 0 0 4 0

CEC XN PRI M1 ASSEM CURRENT NEXT PARAMETER VALUE

252 0 24998.825 252 2 2

253 0 25085.794 253 2 2

254 0 25163.895 254 2 2

255 0 25273.133 255 2 2

FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE

256 0 25356.169 256 0 1

251 0 25404.766 251 8 9

По содержимому отчёта отмечаем, что транзакт направлялся к первому устройству чаще в 136:115=1.18 раза в соответствии с заданной дисциплиной выбора устройств. Тот факт, что коэффициент использования второго устройства выше, чем первого можно объяснить тем, что среднее время обслуживания у второго устройства больше, чем у первого.

Для поиска устройства по заданному условию используется следующая модификация блока - TRANSFER A,B,C,D. В операнде А записывается символ модификации ALL. Транзакт, вошедший в блок TRANSFER, пытается занять устройство, метка которого указана в операнде В, если это не удаётся то занять устройство, которое отстоит от блока с меткой, указанной в операнде В, на количество блоков, указанное в операнде D, если это ему не удаётся, то транзакт ищет устройство, которое он может занять переходя от метки, указанной в операнде В до метки, указанной в операнде С, с шагом, указанным в операнде D. Если транзакту не удаётся найти ни одного свободного устройства, то он остаётся в блоке TRANSFER до тех пор, пока не появится возможность занять одно из устройств, которое можно найти по заданной процедуре поиска. Если метка, указанная в операнде В, следует сразу после блока TRANSFER, то ее можно не указывать.