Ю. Карпов - Иммитационное моделирование систем с AnyLogic 5 (1124147), страница 20
Текст из файла (страница 20)
Это позволяет трактовать переход из состояния ь при наступлении события а в гиперсостояние о как переход из л в элементарное состояние в. На рис. 6.4 начальным состоянием системы является состояние л, а состояние в является начальным только для множества состояний ~в, с1, входящих в гиперсостояние о.
Историческое состояние хранит то состояние внутри данного гиперсостояния, в котором система находилась последний раз. Рис. 6.5. Историческое состояние На рис. 6.5 при наступлении события е система вернется в то состояние из множества состояний и, в, с>, в котором она была последний раз (независимо от того, какими переходами связаны эти состояния). Исторические состояния удобны, например, лля описания продолжения функционирования системы после прерываний.
Условные состояния позволяют отложить проверку логического условия. Такая отложенная проверка удобна, например, в том случае, если определить дальнейшие действия системы можно только после реакции на событие. Например, пусть событием является приход сообщения, а реакция на него зависит от содержимого этого сообщения. На рис. 6.6 представлен фрагмент стейтчарта, описывающего эту ситуацию. По приходе сообщения (событие а) если система находилась в состоянии л, то она перейдет в состояние с только в том случае, если условие в выполнено.
Если условие е не выполнено, система перейдет в состояние о. В этом примере удобно использовать именно условное состояние, в котором система не задерживается, а после приема сообщения мгновенно определяет, в какое состояние перейти. В качестве примера использования всех этих расширений рассмотрим спецификацию процесса доступа к среде протокола ! ЕЕЕ 802. (2 обмена сообщениями в высокоскоростной локальной сети (рис. 6.7).
В сети работает множество станций, и в каждой из них активизирован свой процесс доступа к сети. Все процессы идентичны. Часть д Средства яп ~одюдля имитационного модели ванин систем Рис. 8.В. Условное состояние Рис. В.7. Стейтчарт процесса доступа к среде протокола 1ЕЕЕ 802.12 Каждый процесс начинает свою работу в элементарном состоянии тренировка гиперсостояния хктнаен. В состоянии тренировка выполняются операции по идентификации данной рабочей станции, проверке канала и верхнего уровня. Если идентификация выполнилась без ошибок, процесс переходит в состояние старт, в котором ожидает очередной пакет, сгенерированный пользователем данной рабочей станции.
Когда пакет для передачи сгенерирован, процесс переходит в состояние п~кет, посылая верхнему уровню сигнал о наличии пакета. В этом состоянии процесс ждет от верхнего уровня разрешения послать пакет в канал, и когда разрешение получено, пр~ц~сс и~расли~ в со~~ели~~ поселка па~ета. По зав~рш~нии пересылки процесс возвращается в состояние с р . В любом из лвух состояний (старт и пакет) гиперсостояния окнланне процесс может быть прерван приходом сигнала ивет пакет от верхнего уровня. Этот сигнал извещаег каждую станцию локальной сети о том, что в сети начал передаваться пакет, адресату необходимо подготовиться к его приему.
Поскольку имя Глава б. Раа ботка моделей дискретно-событийных систем адресата находится в заголовке пакета, пакет начинают принимать все процессы. После приема пакета (или после обнаружения, что пакет чужой после приема заголовка) процесс возвращается в то состояние, включенное в гиперсостояние оанпанне, из которого он был прерван сигналом идет пакет. В любом из обсуждавшихся ранее состояний процесс может быть прерван сигналом откаэ, который заставляет процесс перейти в состояние о аэ. После восстановления процесс входит в нормальную работу через состояние Тренировка. Этот пример показывает, что стейтчарты позволяют наглядно и экономно выразить с помощью графической нотации очень сложное поведение.
Апу(.ой)с позволяет задавать алгоритм поведения активных объектов в виде стейтчартов с использованием всех перечисленных здесь расширений. б.З. Модель пешеходного перехода: переключение состояний в стейтчартах В качестве простейшего примера применения стейтчартов рассмотрим модель регулируемого пешеходного перехода со светофором, разрешающим или запрещающим движение транспорта. 6.3Л.
Постановка проблемы Светофор, регулирующий движение транспорта на пешеходном переходе, может находиться в следующих состояниях: разрешение движения транспорта (зеленый), приготовиться к запрещающему сигналу (мигаюший зеленый), приготовиться к остановке (желтый), запрет движения (красный) и приготовиться к движению (красный и желтый) (рис.
6.8). Светофор работает в автоматическом режиме, циклически. В каждом состоянии светофор находится определенный постоянный период времени. Рис. б.в. Простейший регулируемый пешеходный переход Часть л'. Средстве Алу(.одв для имитационного моделирования систем 6.3.2.
Рассматриваемые вопросы В результате построения этой модели будут рассмотрены следующие новыс вопросы: П построение стейтчартов; П действия при вхоле и выходе из состояния, иерархические состояния; П переход по исчерпании таймаута; П переход по событию; П окно наблюдения событий. 6.3.3. Построение модели Создайте новый проект под названием геоеветьвлстосв и назовите класс корневого активного объекта моое1. Наша модель будет иметь только один активный объект, представляющий светофор, поэтому корневой объект мопе1 будет единственным активным объектом нашей модели. В поле редактора структуры активного объекта ноое1 поместите иконку стейтчарта Я,) с инструментальной панели.
Справа появится окно свойств этого нового объекта, в котором в поле имени будет стоять предопределенное имя веесесьвтс. Замените это имя на тсавгьс 1ьдьс (рис. б.9). После двойного шелчка мыши на иконке стейтчарта етвггьс 1аяьс откроется окно редактора этого стейтчарта с уже введенным одним состоянием (с именем стасе) с входящей в него стрелкой, показывюшей, что это начальное состояние (рис. 6.10). Имя состояния, как и все другие его параметры, можно редактировать в окне его свойств либо при выделенном состоянии можно нажать клавишу <р2>, что позволяет выделить имя в самом состоянии для его редактирования.
Для того чтобы построить стейтчарт, следует использовать кнопки ~.::::Б О ~ ь Э ® Э на инструментальной панели окна редактора, которые становятся активными, если активизировано окно редактора стейтчарта (открыть его можно двойным щелчком по иконке стейтчарта). С помощью кнопки П С) рисуются состояния (как прытые, так и гиперсостояния), кнопка Д~ используется для рисования переходов между состояниями, кнопка Д» определяет начальное состояние как всего стейтчарта, так и в каждом гиперсостоянии. Кнопка ~~~~ используется для рисования состояния, являющегося "финальным" в поведении активного объекта.
Графически такое состояние Глава б. Рааработка моделей дискретно-событийных систем удобно изображать специальным символом, хотя конкретные действия, определяющие, что нужно делать в этом финальном состоянии„разработчик должен добавить сам. Комментарии, как обычно, помешаются на поле редактора с помогдью кнопки ~~Й ~. Заметьте, что для любого выделенного объекта справа появляется окно его свойств, в котором можно изменить параметры и, в частности, имя объекта, если это необходимо.
Структурные ошибки при рисовании стейтчарта — повисшие переходы, дублированные указатели начального состояния и т. п. — выделяются в поле редактора красным цветом. Чтобы имя объекта — состояния или перехода — появилось в поле редактора, следует выбрать опцию Отображать имя в нижней части окна свойств объекта.
Рис. 6.9. Окно свойств сгейтчарта Рис. 6.10. Фрагмент окна редактора стейтчарга Часть й Средства Алу~одю для имитационного моделирования систем В соответствии с алгоритмом работы светофора кроме начальною состояния в модель нужно ввести дополнительные состояния (рис. 6.П). Начальное состояние назовите яо (движение транспорту разрешено — горит зеленый), затем светофор переходит в состояния ассеотьоо (внимание — мигающий зеленый), а1он (приготовиться к остановке — горит желтый), остановка транспорта асор (запрет движения — горит красный) и театту (приготовиться к движению — горят красный и желтый).
Состояние атееосаоо удобно представить гиперсостоянием с парой переключающихся элементарных состояний: в одном из них зеленый горит (состояние л), в другом — нет (состояние в). Постройте все эти состояния и соедините их соответствующими переходами. Рис. 6.11. Стейтчарт светофора Рассмотрим, как задать условия срабатывания переходов. Переходы в нашем автоматическом светофоре выполняются по таймауту, т. с. по истечении интервала времени, который прошел с момента прихода системы в данное состояние. Пусть в состоянии во светофор должен находиться 25 с, затем 7 с зеленый сигнал мигает, 4 с горит желтый в состоянии а1он, в течение 20 с движение запрешено и 4 с светофор находится в состоянии театту. Масштаб времени примем такой: единица модельного времени соответствует ! с реального физического времени.
101 Глава б. Раеребстка мсделейдискретно-событийных систем Рис. 6.12. Задание перехода по теймеуту Для того чтобы задать такие условия срабатывания переходов, сделайте активным переход ег, в поле Происходит выберите вариант По таймауту, а в псле Таймаут введите 25 (рис. 6.12).