Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книги / MODELIROVANIE_SISTEM_12.docx
Скачиваний:
240
Добавлен:
17.06.2016
Размер:
3.17 Mб
Скачать

5.4.1. Моделирование смо с отказами по схеме событий

(Описание алгоритма)

подготовка:

ввод данных (mt, tобсл,, правило остановки)

установка начальных значений переменных, соответствующих нулевому шагу

основная часть:

do шаг имитации (подробно раскрыт ниже)

until выполнено условие остановки (напр., пройдено Nдоп шагов)

end do

вычисление оценок искомых характеристик (Рпот, Р0, Р1, Р2, Рзп указанным выше формулам)

завершение:

выдача результатов

запрос пользователю на выбор дальнейшего действия (выдача

меню) и переход в соответствующее место программы в

зависимости от ответа пользователя)

end моделирования.

Далее раскрыт алгоритм шага имитации

Шаг имитации

увеличение номера шага (N:=N + 1)

запоминание значений некоторых переменных (YL:=Y; TL:=TT)

определение момента и типа очередного события:

TT := min(Tз12); JT:=

имитация события:

if поступила заявка (JT=

then if есть свободный прибор (Y<2)

then поиск номера свободного прибора (Jv), начиная

с первого прибора

занятие прибора Jv (Х Jv :=1)

увеличение числа занятых приборов (Y:=Y+1)

end if

else (освободился прибор Jт)

перевод прибора в свободное состояние (XJт:=0)

уменьшение числа занятых приборов (Y:=Y-1)

end if

пополнение статистик:

if поступила заявка (Jт = 0)

then пополнение счетчика заявок (Кз:=Кз + 1)

if заявка потерялась (=2)

then пополнение счетчика потерянных заявок

пот:=Кпот+1)

end – if

end - if

пополнение суммарного времени пребывания в соответст-

вующем состоянии (ДТ:=ТтL; :=+ДТ)

планирование событий (корректировка календаря):

if поступила заявка (JT=0)

then планирование следующей заявки (Тз:= TТ+,  получа-

ется обращением к датчику случайных чисел)

if заявка поступила в прибор JV (YL<2)

then планирование его освобождения (:=ТТ+обсл)

end – if

else (освободился прибор JТ) :=

end – if

end - шаг

Отметим, что в алгоритме шага четко разделены этапы: имитация события, пополнение статистик, планирование событий. Если отказаться от такого разделения, можно избежать повторения некоторых пpoвeрок и введения переменной ТL. Однако опыт программистов показал, что стройность и четкость важнее экономии. Поэтому приведенный вариант представляется более предпочтительным.

Хотя рассмотренный пример очень прост, он показывает основные принципы построения моделирующего алгоритма, пригодные и для более сложных случаев. Перечислим эти принципы.

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

Основные принципы построения моделирующего алгоритма.

За один шаг имитируется одно событие. Каждому шагу соответствует ТТ - тот особый момент, когда происходит имитируемое на этом шаге событие.

Продвижение по времени за один шаг производятся от момента предыдущего события до момента текущего события. Интервал между особыми моментами, как правило, имеет случайную длину.

Очередной особый момент находится путем поиска минимума в календаре.

Календарь содержит по одной ячейке для каждого типа события. В календаре указаны ближайшие после ТТ моменты наступления событий.

Тип события, которое подлежит имитации на текущем шаге, определяется одновременно с моментом события.

Имитация события сводится к изменению значений переменных, описывающих состояние отдельных элементов и системы в целом.

Пополнение (корректировка) статистик, нужных для последующего вычисления оценок искомых характеристик, производится после имитации события.

Планирование событий. Текущее событие может сделать возможным определение моментов некоторых последующих событий или, как говорят.

Запоминание в отдельных ячейках значения некоторых переменных в самом начале шага и сохранять их до конца шага.

Длина реализации измеряется либо числом шагов, либо системным временам.

Итак, алгоритм шага содержит следующие части:

запоминание значений некоторых переменных,

определение момента и типа очередного события,

имитация события, пополнение статистик,

планирование событий.

Каждому типу события соответствует блок в алгоритме имитации, а каждому событию - определенное место в календаре. Алгоритм шага состоит в выяснении типа очередном события (с помощью календаря) и выполнении тех блоков алгоритма, которые соответствуют этому типу события

Шаги выполняются до тех пор, пока не будет воспроизведена реализация заданной длины. Длина реализации измеряется либо числом шагов, либо системным временам. Не исключены и другие правила остановки, например по количеству обслуженных заявок.

До начала шагов производятся ввод исходных данных и установка начальных значений переменных, а по окончании шагов - подсчет оценок искомых характеристик по накопленным статистикам и выдача результатов.

Описанные принципы моделирования пригодны как для простых, так и .для сложных случаев, но в сложных случаях потребуется трудная работа по составлений перечня возможных событий и разработке алгоритмов имитации этих событий. Трудность состоит в том, что многие события оказываются взаимообусловленными и должны рассматриваться как одно сложное событие, включающее ряд элементарны событий. Рассмотрим, например, моделирование СМО, в которой имеется буфер. Имитация поступления заявки включает несколько частей: выяснение, имеется ли свободный прибор; поиск свободного прибора и его занятие; в случае отсутствия свободного прибора - поиск и занятие свободной ячейки буфера. Если заявка имеет абсолютный приоритет, возможно вытеснение менее приоритетной заявки из прибора. Тогда надо будет еще учесть дальнейшую судьбу вытесненной заявки. Таким образом, в рамках одного события имитируются многие элементарные события, отражающие изменения состояний сразу нескольких объектов: поступившей заявки, прибора, ячейки 6yфеpa, вытесненной заявки.

Описанная схема построения моделирующего процесса носит название - схема событий, или принцип событий. Ее основная отличительная черта - описание возможных изменений в системе с помощью взаимоисключающих (непересекающихся) событий и имитация на каждом шаге одного из возможных событий. Кроме этой схемы используется схема процессов.

Схема событий реализуется с использованием операторов структурного програмирования

Алгоритмическое изображение оператора

Первый структурный оператор называется линейная цепочка операторов. Любая задача может быть разбита на несколько подзадач. Выполнение подзадач может быть поручено подпрограмме, в названии которой можно (и нужно) отразить подзадачу, которую должна решать эта подпрограмма

Алгоритмическое изображение оператора

Второй структурный оператор называется условный оператор. Достаточно часто одна или другая задачи должны исполняться в зависимости от определённого условия, которое зависит от результатов выполнения предыдущей программы или от внешних устройств. Каждая из таких задач называется плечом условного оператора.

Алгоритмическое изображение оператора

Условный оператор может использоваться в неполном варианте, когда одно из плеч алгоритма отсутствует:

Третий структурный оператор - это оператор цикла с проверкой условия после тела цикла. Отличие от условного оператора заключается в том, что передача управления осуществляется не вперёд, а назад. На языках программирования высокого уровня такой оператор входит в состав языка (оператор do..while в языке программирования C или оператор repeat..until в языке программирования PASCAL).

Четвёртый структурный оператор - это оператор цикла с проверкой условия до тела цикла. В отличие от предыдущего оператора тело цикла в этом операторе может ни разу не выполниться, если условие цикла сразу же выполнено. Этот оператор как и условный оператор невозможно реализовать на одной машинной команде