Моделирование непоследовательных операций
Во всех приведенных выше моделях технологических процессов транзакты переходят последовательно от блока к блоку, т.е. отображают последовательные операции, происходящие в системе. Если при моделировании возникает необходимость нарушить такую последовательность, то в модели надо нарушить последовательность движения транзактов. Для этого используют блок TRANSFER.
Блок TRANSFER (передать) – перенаправляет транзакты в блок, отличный от последующего (рис. 24).
Блок может использоваться в 8 режимах. Рассмотрим 3 основных режима.
Режим безусловной передачи
Рис. 24. Блок TRANSFER в режиме безусловной передачи
В операнде А ставится запятая (,). В операнде В записывается имя блока, в который должен перейти транзакт.
Пример блока TRANSFER в режиме безусловной передачи:
TRANSFER ,BOX
Когда транзакты входят в блок, они сразу же пытаются войти в блок ВОХ. Если последний отказывает в этом, транзакты остаются в блоке ТRANSFER.
Ряд сложных систем, и в том числе производственных, сводятся к замкнутым системам массового обслуживания. В этих СМО общее число заявок в течение всего интервала моделирования системы остается постоянным – заявки не покидают СМО, а циркулируют в ней, последовательно изменяя свои состояния в моменты перехода от одной фазы обслуживания к другой. Например, транспортная система некоторого производства, содержащая N транспортных средств или сборочное производство, в котором участвуют N человек.
При построении GPSS-моделей подобных систем число транзактов в модели должно оставаться постоянным в течение всего интервала моделирования. Это может быть достигнуто благодаря использованию блока GENERATE с операндом D, который выдает в модель заданное число транзактов, и блока TRANSFER в режиме безусловной передачи, помещенного в конце модели и возвращающего транзакты в начало модели.
Пример моделирования
Рассмотрим пример GPSS/Н-модели сборочного производства [4]. Производство изделий включает процесс сборки и обжиг в печи. Содержание печи обходится дорого, поэтому 4 сборщика используют одну печь, в которой одновременно можно обжигать только одну деталь. Сборщик не может начать новую сборку, пока в печи находится предыдущая деталь. Каждый сборщик выполняет следующие действия: сборку следующей детали; ожидание возможности использования печи; использование печи; возврат к сборке.
Время, необходимое на сборку, колеблется в интервале от 25 до 35 минут (распределение равномерное), а процесс обжига распределен нормально со средним значением 8 минут и среднеквадратическим отклонением 2 минуты. Необходимо промоделировать данное производство в течение 8-часового рабочего дня.
Пусть транзакты отображают сборщиков, приход которых смоделируем блоком GENERATE с операндом D, равным 4. За единицу модельного времени примем 1 минуту. Тогда время сборки отобразим блоком ADVANCE со средним 30 и размахом 5. Работу печи смоделируем прибором с именем РЕСН. После того как транзакт завершает использование прибора, моделирующего печь, он должен быть возвращен назад. Отобразим это условие при помощи блока TRANSFER в режиме безусловной передачи, который перенаправляет транзакты в блок следующей сборки. Для организации моделирования в течение 480 минут используем сегмент, содержащий блок GENERATE с соответствующим операндом А.
Блочная интерпретация модели сборочного производства представлена на рис. 25.
Созданная на основе блок-схемы GPSS/H-программа представлена ниже:
SIMULATE Начало моделирования
GENERATE ,,,4 Приход сборщиков
BACK ADVANCE 30,5 Сборка
SEIZE РЕСН Занятие печи
ADVANCE RVNORM(2,8,2) Обжиг
RELEASE РЕСН Освобождение печи
TRANSFER ,BACK Переход к сборке
GENERATE 480 Выход транзакта-таймера
TERMINATE 1 Удаление транзакта-таймера
START 1 Запуск модели
END Конец моделирования
Рис. 25. Блочная интерпретация GPSS/H-модели
процесса сборки
Режим статистической передачи
Часто при моделировании технологических процессов необходимо перенаправлять транзакты случайным образом в два различных блока модели. Такие ситуации можно смоделировать блоком TRANSFER в режиме статистической передачи (рис. 26).
Рис. 26. Блок TRANSFER
в режиме статистической передачи
В операнде А записывают частоту передачи транзактов в блок С (это число должно быть больше 0 и меньше 1 и всегда начинаться с десятичной точки). В операнде В записывают имя блока, в который переходят транзакты с частотой равной 1 (частота в операнде А). Розыгрыш направления передачи транзакта производится с помощью датчиков равномерно распределенных случайных величин в интервале (0, 1), входящих в GPSS/H.
Примеры блока TRANSFER в режиме статистической передачи:
TRANSFER .25,BOX,PLAY
транзакты, входящие в блок, в 25 % случаев будут передаваться в блок с именем PLAY. В остальных 75 % случаев они будут переданы в блок с именем BOX.
TRANSFER .33,,FAX
транзакты, входящие в блок, будут переданы в 33 % случаев в блок с именем FAX. В остальных случаях они попадут в следующий по порядку блок.
Пример моделирования
Приведем пример модели гибкой производственной системы, содержащей два робототехнических комплекса, где блок TRANSFER используется в режиме статистической и безусловной передачи.
Пусть ГПС содержит два независимо функционирующих робототехнических комплекса (РТК). В ГПС поступает равномерный поток заданий на обработку. Для выполнения одних заданий требуется РТК1, для выполнения других – РТК2. Выбор РТК происходит случайным образом: с вероятностью, равной 0.35, задание направляется на РТК1 и с вероятностью 0.65 (1–0.35) – на РТК2. Для упрощения времена между поступлениями заданий в ГПС, времена работы РТК по выполнению заданий примем равномерно распределенными со средними значениями 100, 80, 200 и размахом 40, 50, 20 соответственно. Требуется построить модель и определить загрузку обоих РТК и среднее количество скопившихся перед ними заданий.
Графическая интерпретация модели представлена на рис. 27.
GPSS/H-программа приведена ниже:
SIMULATE
GENERATE 100,40 Поступление заданий в ГПС
TRANSFER .65,ОН1,ОН2 65 % идет в РТК2, а 35 % в РТК1
OH1 QUEUE 1 Ожидание освобождения РТК1
SEIZE RTK1 Занятие РТК11
DEPART 1 Конец ожидания
ADVANCE 80,50 Обработка в РТК1
RELEASE RTK1 Освобождение РТК1
TRANSFER ,FIN Задание выполнено
ОН2 QUEUE 2 Ожидание освобождения РТК2
SEIZE RTK2 Занятие РТК2
DEPART 2 Конец ожидания
ADVANCE 200,20 Обработка в РТК2
RELEASE RTK2 Освобождение РТК2
FIN TERMINATE Задание выполнено
GENERATE &TIM Моделирование 24 часов
TERMINATE 1
START 1
END
В модели использованы два прибора и две очереди. Прибор с именем RTK1 использован для моделирования работы РТК1, прибор с именем RTK2 – для моделирования работы РТК2. Очередь 1 служит для сбора информации о времени нахождения на ГПС заданий, направляемых на РТК1, очередь 2 – времени нахождения в ГПС заданий, направляемых на РТК2. Поток транзактов создается блоком GENERATE, после чего следует вероятностное прореживание потока транзактов с помощью блока TRANSFER. Этот блок с вероятностью 0.35 направляет транзакты в блок с именем ОН1 и с вероятностью 0.65 в блок с именем ОН2. Блок TRANSFER безусловного типа в модели использован для передачи транзактов, вышедших из прибора RTK1, в блок TERMINATE с именем FIN.
Рис. 27. Блок-схема GPSS/H-модели ГПС
Режим BOTH
Когда требуется передать транзакты не случайным образом в один из двух заданных блоков, используют блок TRANSFER в режиме ВОТН (рис. 28).
Рис. 28. Блок TRANSFER в режиме ВОТН
В операнде А записывается слово BOTH. В операнде В записывается имя блока, в который будет осуществляться начальная попытка передачи транзакта. Если она неудачна (например, занят блок SEIZE), то транзакт будет передан в блок с именем, записанным в операнде С. Если и этот блок откажет во входе, то транзакт останется в блоке TRANSFER, пока блоки, указанные в операндах В или С, не освободятся. Первым проверяется блок с именем в операнде В.
Примеры блока TRANSFER в режиме BOTH:
TRANSFER BOTH,BOX,PLAY
транзакт будет пытаться войти в блок с именем ВОХ, если эта попытка неудачна, то он будет пытаться войти в блок с именем PLAY. Если и эта попытка неудачна, транзакт останется в блоке TRANSFER, пока не освободится блок BOX или блок PLAY.
TRANSFER BOTH,,COM
транзакт будет пытаться войти в следующий по порядку блок, если эта попытка неудачна, то он будет пытаться войти в блок с именем СОМ.