Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы_МОД.doc
Скачиваний:
21
Добавлен:
20.09.2019
Размер:
3.22 Mб
Скачать

8. Организация ветвлений в gpss.

Организация ветвлений в GPSS

В GPSS программе операторы или блоки выполняются последовательно один за другим в порядке их описания. Для нарушения порядка используется блок TRANSFER A,B,C.

Наиболее часто используется 3 формы оператора:

  1. Безусловный переход TRANSFER , < метка >

При поступлении транзакта в данный блок он автоматически перенаправляется в блок с именем <метка>.

  1. Условный переход TRANSFER BOTH, <имя_1>, <имя_2>

Для организации условного перехода используется в качестве операнда A условие BOTH, транзакт поступив в блок пытается перейти в блок с именем 1, если ему не удается, он пытается перейти в блок с именем 2, если и это не удается, он стается в блоке TRANSFER.

  1. Статистическая передача управления. Часто необходимо передать транзакт в один из блоков с некоторой вероятностью. Для этого используется статистическая передача управления. TRANSFER <вероятность>, <имя_1>, <имя_2>

В качестве вероятности используется дробное число с 3 знаками после запятой. Данная вероятность соответствует передачи в блок с именем 2 и с вероятностью 1-p в блок с именем 1.

17. Ансамбли и группы транзактов в gpss.

При моделировании систем часто возникает задача размножения транзактов. Ситуация размножения транзактов определяется блоками Split A, B, [C]

А – количество размножаемых транзактов

В – метка блока, куда переходят размножаемые транзакты

С – необязательный блок, который может задать номера размножаемым сегментам

Все транзакты порождаемые блоком Split, порождают ансамбли, которые в дальнейшем могут интерпретироваться как единое целое. Как правило, работа с ансамблями требует использование специфических блоков:

Assemble A – собирает определенное количество транзактов одного ансамбля. Имеет один операнд – количество собираемых транзактов. Данный блок дожидается пока в него не придет еще сколько то транзактов этого семейства и пропускает на выход один транзакт.

Gather A – работает аналогично Assemble, но на выход пропускаются все собранные транзакты

Match – используется для синхронизации движения двух транзактов. Типичная схема использования:

<имя 1>Match<имя 2>

……………………….. сопряженные блоки

<имя 2>Match<имя 1>

Транзакт попадает в первый блок Match, далее немедленно проверяется, имеется ли транзакт этого семейства в сопряженном блоке. Если нет то транзакт в блоке задерживается, как только транзакт семейства попадает в блок Match 2 мгновенно проверяется наличие транзакта этого семейства в Match 1 и если он там присутствует, то транзакт проходит.

Пример: построить программу обработки 100 узлов, которые поступают с равномерным законом распределения в интервале 8±2. Обработка осуществляется двумя рабочими параллельно, каждый из которых выполняет свои операции независимо от другого со временем 5±3.

Generate 8, 2

Split 1, This

Seize 1 ; 1 рабочий

Advance 5, 3

Release 1

Transfer, That

This Seize 2 ; 2 рабочий

Advance 5, 3

Release 2

That Assemble 1

Terminate

Построить модель обработки подшипника состоящего из обоймы и 8 шариков. На обработку обоймы затрачивается время 4±1. Обработка шарика занимает 2±1 единиц времени. Обойма и шарики поступают на конвейер с интервалом 25±4. Операция сборки шариков в обойме осуществляется за время 4±2.

Generate 25, 4

Split 8, That |

Seize 1 | Обработка

Advance 4, 1 | обоймы

Release 1 |

Transfer ,Final

That Seize 2 |

Advance 2, 1 | Обработка

Release 2 | шариков

Gather 8 |

Final Assemble 9

Seize 3 |

Advance 4, 2 | Сборка

Release 3 |

Terminate