Обработка одновременных событий
Так как модельное время в GPSS/PC целочисленно, то оказывается вполне вероятным одновременное наступ-ление двух или более событий, причем ве-роятность этого тем больше, чем крупнее выбранная единица модельного времени. В некоторых случаях одновременное наступ-ление нескольких событий, или так назы-ваемый временной узел, может существен-но нарушить логику модели. ADVANCE 25, 10 TERMINATE1 (BBB) (BBB)25,FN$XPDIS GENERATE SEIZE FAC1RELEASE FAC1GATE NU FAC1TERMINATE 1 Рис. 17. Модель СМО с отказами
Рассмотрим модель системы массово-го обслуживания на рис. 17. Здесь может образоваться временной узел между собы-тиями “поступление транзакта на вход мо-дели” и “завершение обслуживания в уст-ройстве FAC1”. Если эти два события происходят одновременно, то обработка временного узла зависит от после-довательности транзактов в списке текущих событий.
Предположим, что первым в списке расположен транзакт, освобож-дающий прибор FAC1. Тогда вначале будет обработан этот транзакт, т. е. со-бытие “завершение обслуживания в FAC1”, причем условие “Прибор FAC1 не занят”, проверяемое в блоке GATE, станет истинным. Затем будет обрабо-тан транзакт, поступивший на вход модели в блок GATE из блока GENERATE . При этом транзакт будет впущен в блок SEIZE, и устройство FAC1 в тот же момент модельного времени снова окажется занятым. Такая ситуация при обработке временного узла представляется естественной.
Предположим теперь, что первым в списке текущих событий расположен транзакт, поступающий на вход модели. Так как условие “Прибор FAC1 не занят” ”ложно", то блок GATE направит этот транзакт в блок с именем ВВВ. Таким образом, в модели будет зафиксирован отказ в обслуживании, хотя в этот же момент модельного времени устройство станет доступным.
Порядок расположения транзактов в списке текущих событий случаен, и в среднем в половине случаев временной узел будет обрабатываться не так, как нужно. В результате статистика, связанная с отказами, окажется иска-женной. Для правильной обработки временного узла надо обеспечить такой порядок расположения транзактов в списке текущих событий, чтобы тран-закт, освобождающий устройство, всегда располагался первым. Этого можно добиться, управляя приоритетами транзактов.
Для приведенного примера достаточно между блоками SEIZE FAC1 и ADVANCE 25, 10 вставить блок PRIORITY 2. Тогда при поступлении тран-закта в блок задержки будет повышаться его приоритет. При очередном про-смотре цепи текущих событий транзакт завершающий обслуживание всегда будет обрабатываться первым.
Дата добавления: 2016-02-13; просмотров: 851;