Черненький В.М. - Теоретические основы построения имитационного процесса (1060691), страница 2
Текст из файла (страница 2)
Пример реализации процессов через событияВ этот момент времени инициатор I1 процесса Z1 перемещается вэлементарный оператор (h1,c10 , h1,л 10 ) , вычисляя новое состояние объекта O1 , азначит, и системы в целом. При этом оказывается выполненным условиеh4,Л15 и h7,Л19.. В треке процесса Z4 выполняется оператор состояния h4,с16 иустанавливается логическое условие h4,Л16 , а в треке процесса Z7 – h7,с20 ивременное условие h7,t 20 . На рисунке 2 соответствующие события отмеченысветлыми кружками.
Событие по временному условию показано на рисунке 2в виде темного кружка. Так как больше условий не выполняется, тонеобходимо перейти к новым элементарным операторам в соответствии стреками.В рассматриваемый момент времениследующее активное3 6временное множество имеет вид t11, t21 , t 721 , t 926 . Согласно (1) необходимо3679перейти к новому моменту времени t0 min t11, t 21,t 21,t 26. В нашем случае3t0 = t11. Первым выполняется оператор h113, c , h113, t , который изменяет состояниеобъекта O3 и системы в целом, а также формирует новый заказ времени3передвижения своего инициатора I 3 в момент времени t12.
При этомвыполняются логические условия для процессов Z5 и Z8 . Инициаторы I 5 и I 8вызывают выполнение операторов h5,c7 ,h5,л7 и h8,c32 ,h8,л 32 соответственно.Формируетсяновоеактивноевременноеt367912 , t21 , t21 , t26множес тво:,66 ,c6, лнаименьшим в котором является t21. С оператора h21, h21и начинаетсяследующий цикл вычислений, и т.д.На этом примере хорошо иллюс трируется алгоритм продвижениямодельного времени и порядок выполнения элементарных операторов вкаждом процессе. Сделаем некоторые обобщения.Выполнение каждого элементарного оператора назовем событием всистеме.
Событие активное, если оно следует в треке за элементарнымоператором, содержащем ht . На рисунке 2 условия, содержащие ht ,выделены жирным шрифтом. К активным событиям относятся выполнениеh101,c,h101,л, h113,c,h113,t ,h21 6,c,h216,л и т.д.Событие пассивное, если оно следует в треке за элементарнымоператором, содержащем hл.
На рисунке 2 к пассивным событиям относятсявыполнение h11 1,c,h111,t , h92,c,h9 2,л , h17 4,c,h174,л и т.д.Множество событий, происходящих в один и тот же момент модельноговремени, назовем классом одновременных событий (КОС). На рисунке 2lкласс одновременных событий в момент времени t10включает события для 1,34 и 7-го процессов; в момент времени t11КОС составляют события для 3, 5 и8-го процессов и т.д.Рассмотрение КОС примера на рис.
2 показывает, что в каждом КОСсодержится активное событие. Введем следующие допущения:Допущение 1. В каждом КОС содержится одно и только одно активноесобытие.Тогда: а) все остальные события в КОС, если они есть, являютсяпассивными;б) количество КОС равно мощности объединенного множествавремен T.Допущение 2. Первым событием в любом КОС является активноесобытие.Если это так, то оставшиеся пассивные события для определенияпоследовательностисвоеговыполнениятребуютзнанияотношениясцепления. Предс тавим отношение сцепления в КОС в виде направленногографа. На рисунке 3 приведен пример некоторого КОС с заданным на немотношением сцепления.hahbhchdhehfРисунок 3.
Пример КОСЗдесь: ha - активное событие; hb , hc, hd, he, hf - пассивные события.Из графа следует, что после ha необходимо выполнить hb либо hc; затемhd , либо he; и наконец hf .ЗаданиеотношениясцеплениядлякаждогоКОСявляетсясамостоятельной задачей. Однако можно предложить таким образомопределять условие выполнения каждого пассивного события, чтобы оносодержало условие выполнения предыдущего события, т.е. содержалоописание отношения сцепления с предыдущим событием.Так, условие выполнения события hd должно содержать выражение,проверяющее выполнение события hb .
Если это удается сделать, то алгоритмформирования КОС выглядит следующим образом:1. Выполняется активное событие.2. Проверяются условия всех возможных в системе пассивных событий.3. Если выполняется условие пассивного события, то оно вычисляется.Алгоритм продолжается с п.2.Важно найти признак, по которому можно определить завершенность КОС.Теорема АКОС завершен, если все условия, заданные операторами hл во всехтреках, равны 0.Поскольку КОС содержит одно активное событие и оно выполняетсяпервым, то все остальные события пассивные.
Пассивное событие поопределению выполняется, если определяющее его условие равно 1. Однако,по предположению, все условия, заданные hл равны 0. Таким образом,выполнение пассивного события невозможно, а единственное активноесобытие уже выполнено. Поскольку не выполняется ни один элементарныйоператор, состояние системы и параметры условных операторов не могутбыть изменены. Состояние системы зафиксировано и не будет измененовплоть до нового КОС. Что и требовалось доказать.Теорема ВПервым событием в КОС является активное событие.Доказывая теорему А, мы показали, что когда завершен КОС, то всеусловия в условных операторах системы равны 0, и состояние системы неможет быть изменено ни одним пассивным событием. Значит, следующийКОС может начаться только с активного события.
Что и требовалосьдоказать.Таким образом, наше допущение 2 о начальной функции активногособытия в КОС доказано строго в теореме В.МО ДЕЛИРУЮЩИЙ АЛГО РИТМ СКАНИРУЮЩЕГОТИПАМоделирующий алгоритм в любом случае, как это следует из вышеизложенного, должен включать следующие составные части: подпрограммы событий, реализующие элементарные операторы; алгоритм формирования модельного времени; алгоритм выбора очередного КОС; алгоритм генерирования КОС.Подпрограмма события предс тавляет собой программную реализациюодного элементарногооператора,включающего операторсостояния,оператор условия продвижения инициатора и навигационный оператор.
Вэтих подпрограммах, в общем случае, все параметры являются глобальными.В каждом же конкретном случае часть параметров может быть локализована.Однако все параметры, через которые осуществляется обмен, являютсяглобальными.Еслиподпрограммасобытияреализует объединенныйэлементарный оператор, то она должна иметь доступ к значению инициатора,определяющего локальную среду данного процесса.В самом общем виде моделирующий алгоритм представлен на рисунке:на {h i }ВРЕМЯh1КалендарьИНИЦИАТОРна {h i }ТБВh2АПУот {h i}ТУhnот {h i}Рисунок 4.
Моделирующий алгоритм сканирующего типаЗдесь (h1 , h2 ,.., hn ) – неупорядоченная совокупность подпрограммсобытий, реализующих элементарные операторы треков всех процессов всистеме.Параметр ВРЕМЯ - содержит текущее значение модельного времени;Параметр ИНИЦИАТОР - содержит значение текущего инициатора(ссылку на локальную среду процесса).КАЛЕНДАРЬ - алгоритм, реализующий монотонно возрастающеепродвижение модельного времени по формуле (4) и начало нового КОС всистеме.АПУ - Алгоритм Проверки Условий, обеспечивающий построение КОСдля текущего значения модельного времени.ТБВ - Таблица Будущих Времен, структура которой приведена нарисунке 5.
Каждая строка ТБВ соответствует одному процессу и содержитследующие элементы описания будущего активного события:столбец 1 - значение момента времени активизации инициатора,определяемого предшествующим оператором ht ;столбец 2 – инициатор процесса;столбец 3 - адрес подпрограммы активного события в треке данногопроцесса.-1--2--3-момент активизациизначениеадрес активнойинициатораподпрограммы . . .Рисунок 5. Структура таблицы ТБВ.Совокупность значений атрибута “момент активизации” таблицы ТБВсоставляет в любой момент модельного времени активное временноемножество.ТУ - Таблица Условий, структура которой приведена на рисунке 6.Каждая с трока ТУ соответствует одному процессу и содержит следующиеэлементы описания будущего пассивного события:столбец 1 – логическое условие активизации инициатора, определяемоепредшествующим оператором hл ;столбец 2 – инициатор процесса;столбец 3 - адрес подпрограммы пассивного события в треке данногопроцесса.-1--2--3-условиезначениеадрес очереднойлогическоеинициатораподпрограммы . .Рисунок 6.
Структура таблицы ТУКАЛЕНД АРЬ определяет первое активное событие в новом КОС всоответс твии с (1.). Его алгоритм выглядит следующим образом:1. Поиск минимального значения в столбце 1 ТБВ. Пусть это значениеравно t k , где k - номер строки ТБВ.2. ВРЕМЯ := t k3. ИНИЦИАТОР := <значение столбца 2 в ТБВ по строке k>4. С := <значение столбца 3 в ТБВ по строке k >5. Затирание k -ой строки ТБВ.6.
Передача управления по адресу, хранящемуся в С.Из алгоритма видно, что КАЛЕНД АРЬ ведет модельное время иинициирует выполнение активного события - первого события в каждомКОС.АПУ генерирует пассивные события КОС и его алгоритм имее тследующий вид:1. Просчет всех логических условий, заданных в столбце 1 ТУ. Взависимости от результата, полученного при вычислении логическогоусловия j-ой строки ТУ, выполняется шаг 2 либо шаг 3.2. Если логическое условие равно 0 (ложь), то j:=j+1 и повторяется шаг 1.3.
Если логическое условие равно 1 (истина), то происходит разбор j-ойстроки:ИНИЦИАТОР :=<значение столбца 2 в ТУ по j-ой строке>;D:=<значение столбца 3 в ТУ по j-ой строке>;затирание j-ой строки ТУ;передача управления по адресу, хранящемуся в D.4. Если все логические условия в столбце 1 равны 0 и нет ни одногоусловия, равного 1, управление передается программе КАЛЕНД АРЬ, так какисчерпаны все события текущего КОС и необходим переход к новому КОС,начинающемуся с активного события (см. теорему А).Как видно из рисунка 4, подпрограммы событий после своеговыполнения передают управление в алгоритм АПУ. Каждая подпрограмма hiв ходе своего выполнения меняет состояние системы и определяет условиепродвижения инициатора своего процесса по треку.