- •Список вопросов к зачету в группах рк9-81/82 по курсу "Моделирование тп и пп" по номерам
- •1 Система. Основные понятия
- •3. Дискретное моделирование
- •Вопрос 5. Система массового обслуживания. Основные элементы и собираемые показатели.
- •Generate a,b,c,d,e
- •Terminate а
- •12. Язык gpss. Блоки группировки и разделения транзактов. Примеры использования.
- •14. Язык gpss. Остановка модели. Два варианта описания. Примеры использования
- •17. Язык Arena. Блок проверки и ветвления. Примеры использования
- •Decide — ветвление
- •Вопрос 18
- •Отчет о сущностях (Entity)
- •20. Блок изменения параметров транзакта (Assign — назначить)
- •21 Язык Arena. Блоки группировки и разделения транзактов.
- •22. Модуль синхронизации(Match)
- •5.4. Методы разработки валидных и надежных моделей
- •5.4.1. Точное формулирование задачи [шаг 1]
- •5.4.2. Проведение интервью с экспертом в данной предметной
- •5.4.3. Постоянное взаимодействие с лицом, принимающим
- •5.4.4. Использование количественных методов для валидации
- •5.4.5. Документирование концептуальной модели [2]
- •5.4.6. Структурированный просмотр концептуальной модели [3]
- •5.4.7. Использование анализа чувствительности для
- •5.4.8. Валидация результатов общей имитационной модели [5]
- •5.4.9. Использование графиков и анимаций выходных данных
- •5.5. Статистические методы сравнения выходных данных
- •5.6. Основные принципы получения хороших данных
- •5.6.1. Основные принципы
- •5.6.2. Препятствия для получения хороших данных
- •28. Адекватность имитационных моделей. Валидация выходных данных всей имитационной модели.
12. Язык gpss. Блоки группировки и разделения транзактов. Примеры использования.
Кроме блока GENERATE, для создания транзактов может использоваться блок SPLIT (РАЗДЕЛИТЬ), который выполняет функцию копирования транзакта, входящего в него. Этот транзакт называется начальным или порождающим. Все копии формируются в момент входа начального транзакта в блок SPLIT. Каждая новая копия становится членом семейства (ансамбля) транзактов, порожденных одним начальным транзактом, который был создан блоком GENERATE
Блок имеет такой формат:
SPLIT A,|B|,[C]
Таблица 4.47
Операнд |
Значение |
Результат по умолчанию |
А |
Число создаваемых копий транзакта |
Ошибка |
В |
Метка блока, куда направляются копии |
|
С |
Параметр, в котором запоминаются номера копий транзактов |
|
Операнд А может быть положительным целым, СЧА, CЧA*CЧA. Если вычисленное значение операнда А равно нулю, то блок SPLIT не выполняет никаких операций. После создания копий начальный транзакт пытается перейти к очередному блоку.
Операнд В задает блок, в который переходят копии начального транзакта. Операнд может быть именем (меткой), положительным целым, СЧА, CЧA*CЧA (в трех последних случаях операнд В задает номер блока). Значение операнда В вычисляется для каждой копии отдельно.
Операнд C задает параметр транзакта. который используется для присвоения копиям последовательных номеров. Операнд C может быть именем, положительным целым, СЧА, CЧA*CЧA.
Тран.закты, принадлежащие одному семейству, объединяются интерпретатором в список. По связям внутри семейства транзактов невозможно установить, какой из транзактов семейства является начальным. Если копия транзакта входит в блок SPLIT, то повторная копия становится членом того же семейства, что и первичная копия. Таким образом, каждый транзакт является членом одного и только одного семейства. Семейство может состоять из произвольного числа транзактов. Когда транзакт уничтожается, интерпретатор автоматически исключает его из членов соответствующего семейства. Таким образом, семейство существует до тех пор, пока из модели не удалится последний из ее членов.
В модели одновременно может присутствовать произвольное число семейств, оно все время меняется, поскольку каждый транзакт, генерируемый блоком GENERATE, может создать свое семейство.
Пример 4.50
В цех каждые 14±3 мин поступают партии деталей. Каждая партия состоит из 3±2 деталей. Все детали поступают на обработку станком. Время обработки составляет 3±1 мин.
Для синхронизации движения транзактов, принадлежащих одному семейству, используются блоки MATCH (СОГЛАСОВАТЬ), ASSEMBLE (СОБРАТЬ), GATHER (СОЕДИНИТЬ).
Блок MATCH синхронизирует движение транзактов c другим блоком MATCH.
Формат блока:
MATCH A
Операнд А указывает имя сопряженного блока. Сопряженным блоком является также блок MATCH.
Пример 4.51
В локальной сети рабочая станция опрашивается каждые 30 мс. Если на рабочей станции есть сообщение для передачи, то оно занимает канал.
При входе транзакта-сообщения в блок MATCH c меткой LABEL1 он будет ждать (в списке синхронизации) момента, когда другой опросный транзакт, принадлежащий тому же семейству, не войдет в сопряженный блок MATCH c меткой LABEL2. Только после этого сообщение займет канал CHANNEL, a опросное сообщение перейдет в блок ADVANCE.
Блок ASSEMBLE собирает начальный транзакт и все транзакты-копии из одного семейства, удаляет копии и выдает один начальный транзакт. После сборки из блока ASSEMBLE выходит только один транзакт, который переходит в следующий по номеру блок. Формат блока:
ASSEMBLE A
Операнд А задает счетчик сборки, указывающий сколько членов одного семейства должны быть объединены. Операнд А может быть именем, положительным целым, СЧА, CЧA*CЧA. Первоначальное значение операнда А не должно быть меньше или равно единице.
Блок GATHER скапливает заданное количество транзактов, принадлежащих одному семейству. Он задерживает их до тех пор, пока не соберется необходимое число, указанное операндом А. Затем накопленные транзакты одновременно попытаются войти в следующий по номеру блок.
Формат блока:
GATHER A
Операнд А задает число транзактов, принадлежащих к одному семейству, которое нужно накопить. Операнд А может быть именем, положительным целым, СЧА, CЧA*CЧA.
Для управления транзактами, принадлежащими к одному семейству, используется блок GATE.
Пример 4.52 [20]
Некоторая фирма производит центробежные насосы, сборка которых осуществляется по заказу покупателей. Заказы прибывают в случайные моменты времени. Интервалы времени между поступлениями двух последовательных заказов распределены по нормальному закону c математическим ожиданием 19 мин и стандартным отклонением 3 мин.
Когда прибывает заказ, делается две его копии. Оригинал заказа используется для получения двигателя со склада и подготовки его для сборки. Время выполнения этой операции является экспоненциально распределенной случайной величиной со средним значением 8 мин. Первый экземпляр копии используется для заказа и адаптации насоса (время 10±2 мин), А второй экземпляр используется для начала изготовления плиты основания (время 15 мин).
Когда насос и плита основания готовы, производится пробная подгонка (время 5+1 мин). Все три компонента собираются вместе (время распределено по нормальному закону c математическим ожиданием 6 мин и стандартным отклонением 1 мин), когда они имеются налицо. Затем установка разбирается, насос и двигатель подвергаются окраске. Время покраски двигателя 2±0,5 мин, А время покраски насоса распределено по экспоненциальному закону со средним значением 1,5 мин. Плита основания гальванизируется 4 мин. После этого производится окончательная сборка. Время сборки – нормально распределенная случайная величина c математическим ожиданием 8 мин и стандартным отклонением 1 мин.
Промоделировать сборку 100 центробежных насосов и оценить среднее время их сборки, используя для этого таблицу.
Учитывая подробное описание самой модели и комментарии, приведенные в листинге прототипа программы, опишем кратко логику работы модели.
Транзакты имитируют заказы покупателей. Когда транзакт входит в блок SPLIT, создается еще два транзакта копии. Это позволяет одновременно продолжить выполнение индивидуальных заказов на мотор, насос и плиту основания.
Транзакты, имитирующие насос и плиту, ожидают друг друга в блоках MATCH c метками PUMP (насос) и PLATE (плита). Если и насос, и плита прибыли, то имитируется задержка на их начальную сборку. После того, как прибудут все три заказа в блок GATHER, блок ADVANCE имитирует пробную подгонку трех компонентов изделия друг к другу. Затем три заказа снова разделяются для окончательной отделки. Блок ASSEMBLE (сборка) c меткой BUILD вызывает отсрочку окончательной сборки, пока не поступят все компоненты.
В таблице TRANSIT собирается распределение времени выполнения заказов. Единица модельного времени 1 c.
Программа:
13. Зависимость между процессами, протекающими в разных частях системы, нередко выражается в форме синхронизации, т.е. в форме взаимного согласования этих процессов по времени. Для моделирования различных видов синхронизации в GPSS применяются блоки GATHER, MATCH.
Блок GATHER имеет следующий формат записи:
GATHER A
Блок GATE накапливает заданное число транзактов, принадлежащих к одному семейству. Ни один из накапливаемых транзактов не уничтожается. Когда в блоке GATHER накопится заданное число транзактов, все эти транзакты одновременно попытаются войти в следующий по номеру блок. Транзакты никогда не задерживаются на входе блока GATHER. Одновременно в одном блоке GATHER может происходить накопление транзактов нескольких семейств. Поле А задает число транзактов, принадлежащих к одному семейству, которое нужно накопить.
Блок MATCH имеет следующий формат:
MATCH A
Блок MATCH используется для синхронизации движения двух транзактов, принадлежащих к одному семейству, без удаления этих транзактов из модели. Блоки MATCH не объединяют синхронизируемые транзакты. Синхронизация осуществляется путем подбора пар транзактов из одного семейства и задержки этих транзактов до тех пор, пока оба транзакта из одной пары не поступят в заданные точки модели. Транзакты никогда не задерживаются в блоке MATCH. Транзакты, для которых выполнилось условие синхронизации, переходят к следующему по номеру блоку. В одной паре блоков MATCH могут одновременно находиться в состоянии синхронизации пары транзактов из различных семейств. Возможна также одновременная синхронизации пар транзактов из одного семейства в нескольких блоках MATCH.
Блок MATCH синхронизирует продвижение двух транзактов, принадлежащих к одному семейству и двигающихся в модели по различным путям. В поле A блока MATCH задается имя другого блока, который называется сопряженным блоком MATCH. Два транзакта, принадлежащие к одному семейству и поступающие в пустые сопряженные блоки MATCH в моменты времени T1 и T2, выходят из этих блоков одновременно в момент T2. Если такого блока нет, происходит останов по ошибке.
Допускается использование блока MATCH в качестве сопряженного самому себе. В этом случае блок MATCH действует как блок GATHER с начальным значением счетчика, равным 2.