Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Обработка данных / УЧ_пособие.doc
Скачиваний:
145
Добавлен:
31.05.2015
Размер:
2.96 Mб
Скачать

8. Моделирование систем массового обслуживания с «нетерпеливыми» заявками.

Нетерпеливыми называются заявки, время пребывания которых в системе ограничено. По истечению отведенного времени заявка покидает систему независимо от того, в каком месте она находится: в очереди или в канале обслуживания. Имитационное моделирование таких систем имеет ряд особенностей. Рассмотрим процесс моделирования СМО с нетерпеливыми заявками на конкретном примере.

Пусть рассматривается информационно-измерительная система, состоящая из 3-х процессоров и 100 датчиков. Интервалы времени между сигналами прерывания от датчиков распределены экспоненциально. Среднее время составляет 5 минут. Все процессоры равноценны. Каждый из них обслуживает сигнал прерывания в среднем за 0,04 минуты. Время обслуживания также имеет экспоненциальное распределение. Если все процессоры заняты, запросы заносятся в буфер. Емкость буфера – 4 запроса. Если буфер занят, запрос покидает систему не обслуженным. Время пребывания заявки в системе ограничено и подчиняется нормальному распределению со средним значением 3 минуты и средним квадратичным отклонением 0,5 минуты. Приоритеты запросов одинаковы. Дисциплина обслуживания – FIFO.

Логическая схема такой системы приведена на рисунке 5.9

Рис. 5.9 Логическая схема информационно-измерительной системы.

При моделировании многомерный входной поток заменяется эквивалентным одномерным потоком, интенсивность которого равна суммарной интенсивности многомерного потока. В таком случае блок – схема GPSS – программы может выглядеть так, как это представлено на рисунке 5.10

Рис. 5.10. Блок-схема программы моделирования информационно- измерительной системы.

Краткое описание блок-схемы

Первый сегмент:

Производится генерация транзактов (сигналы прерывания от 100 датчиков). Эта операция осуществляется с помощью блока GENERATE. Распределение сигналов - экспоненциальное со средним временем 5 минут для одного датчика. Поскольку сигналы приходят от 100 датчиков, соответственно среднее время прихода заявки в систему равно 0.05 минут.

С помощью блока ASSIGN присваивается одному из параметров транзакта имя LifeT («Время пребывания в системе») и значение этого времени, распределенное по нормальному закону со средним 3 минуты и СКО=0.5 минуты.

Транзакт пытается встать в очередь, представленную в системе многоканальным устройством BUFER с четырьмя каналами. Если вся очередь занята, заявка отправляется на метку LostBuf («Заявки, потерянные из-за переполненной очереди») и выводится из системы с помощью блока TERMINATE. Эта переадресация транзакта осуществляется блоком TRANSFER, установленным в режиме BOTH.

При наличие хотя бы одного свободного места в очереди, транзакт помещается в нее блоком ENTER.

Попав в очередь заявка пытается попасть на обслуживание в какой-либо из свободных процессоров, представленных в системе многоканальным устройством COMPS (3 канала). Если все процессоры заняты, блок TRANSFER работающий в режиме BOTH отправляет заявку на метку EndBufTime («Время вышло в очереди»). Иначе транзакт (заявка)занимает свободный процессор при помощи блока ENTER.

В случае перехода по метке EndBufTime проверяется условие: не закончилось ли время жизни заявки в системе. Осуществляется эта проверка блоком TEST. Если время действительно вышло заявка движется дальше по этой цепи. Транзакт покидает очередь (LEAVE BUFER) и выводится из системы блоком TERMINATE. Сосчитав сколько раз транзакт пересек метку LostBufTime, которой отмечен этот блок, можно определить количество нетерпеливых заявок, покинувших очередь. Если процессор свободен, заявка немедленно покидает очередь (LEAVE BUFER).

В следующем блоке ASSIGN параметру транзакта «TimeAdvance» присваивается значение времени обслуживания (случайная величина, подчиняющаяся экспоненциальному распределению со средним 0,04 минуты).

В блок TEST производится проверка: хватит ли заявке времени получить полное обслуживание с учетом уже «прожитого» в системе времени. Если времени не хватит, заявка отправляется на метку LostComp («Потери во время обслуживания»). Здесь блоком ASSIGN параметру транзакта с именем «TimeAv» присваивается значение «Оставшееся время жизни заявки». Блок ADVANCE задерживает заявку на это время, после чего транзакт покидает прибор (LEAVE COMPS) не обслуженным и уходит из системы (блок TERMINATE).

Если времени на обслуживание достаточно, то транзакт задерживается блоком ADVANCE на время обслуживания, затем покидает устройство (LEAVE COMPS) и выводится из системы через блок TERMINATE, помеченный этикеткой Sucsessfull («успешно обслуженные заявки»). Подсчитав количество транзактов, прошедших через эту метку, т.е. число обслуженных заявок, можно определить вероятность обслуживания заявок в системе и, следовательно, вероятность того, что заявка покинет систему не обслуженной. При достаточном времени моделирования эти вероятности совпадают с результатами аналитического моделирования с высокой степенью точности (расхождение имеет порядок 0,01).

Второй сегмент (ТАЙМЕР) определяет время моделирования.

Написание GPSS-программы по приведенной выше блок-схеме не представляет особой сложности.