Ю. Карпов - Иммитационное моделирование систем с AnyLogic 5 (1124147), страница 21
Текст из файла (страница 21)
Аналогично задайте условия срабатывания других переходов. Межлу состояниями л и в пусть переходы срабатывают через 1 единицу времени (! с горит зеленый свет, затем 1 с не горит). Заметьте, что переход срабатывает (в модельном времени) мгновенно.
Запустите модель на выполнение. Чтобы можно было наблюдать переходы между состояниями стейтчарта при рабате модели, откройте окно стейтчарта двойным щелчком левой кнопки мыши на его изображении Я в окне корневого объекта модели с именем хесе. Активное в данный момент состояние подсвечивается красным.
Проведите эксперименты с моделью при различных масштабах времени. Ваша модель должна быть похожа на модель Вебеессьапессеет, КОтОрая НаХОдИтея В ПаПКЕ МОдЕ! ЕХатр1ЕВ~Ратг Н. В каждом состоянии светофора должен гореть вполне определенный сигнал: в состоянии яс должен гореть зеленый, в состоянии сексу должны гореть красный и желтый одновременно и т. п. Откройте окно релактора структуры ОбЬЕКта Мсбец ОПрсдсянтс трИ ПЕРЕМЕННЫЕ ЛОГИЧЕСКОГО (Ьсс1ееп) тИПа сев, ует1си и осееп, которые будут принимать истинное значение тогда, копи у светофора должен гореть соответствующий "глаз": красный, желтый и зеленый (рис.
6.13). Начальные значения этих булевых переменных можно не задавать: по умолчанию они будут равны ге1ее. Наш стейтчарт построен именно для управления значениями этих переменных, каждое состояние отвечает за зажигание своего света или комбинации светов. Например, в состоянии дс должен гореть зеленый, при входе в состояние ееср должен загореться красный свет (а остальные гореть не должны), а в состоянии сексту должны гореть красный и желтый и т. п. Именно зто мы и должны определить. Ю2 Часть И.
Средства Апу~.ода для имитационного моделирования систем Рис. б.13. Введение булевых переменных Откройте окно свойств состояния яс и в поле Действие при входе запишите дхееп=стае;, а в поле Действие при выходе запишите ятееп=аазве; (рис. 6.14). То же самое нужно определить лля состояния в, а у состояния л эти поля нужно оставить без изменения — когда светофор находится в этом состоянии, он вообще не горит (все переменные имеют значения газве).
Аналогично, в состоянии васи нужно включить желтый сигнал, т. е. при входе в это состояние установить переменную уетзсн в сесе, а при выходе из этого состояния установить ее в гатве. Для состояния асср то же нужно сделать с переменной сесз, а для состояния теасзу следует обе переменные— сесз и уеттсн — установить в сх е при вхоле и установить в гатве при выходе из него. Рис. 6.14. Определение действий при входе и при выходе из состояния Глава б. Разработка моделей дискретно-событийнык систем Запустите модель на выполнение при различных масштабах времени. В окне гоо$ в дереве переменных и параметров модели переменные ятееп, уе11ои и тес будут переключаться между значениями истина и ложь (представляемыми здесь ! и О) в соответствии с алгоритмом переключения светофора. 6.3.4. Создание анимации Анимация для этой модели весьма просто строится средствами Апу1 од(с (рис.
6.!5). Все графические объекты в анимации имеют статические характеристики, кроме цвета сигйалов светофора. Светофор строится из трех эллипсов, статически повернутых на 45 градусов (поле Поворот вкладки Общие окна свойств овала). Динамическое значение цвета верхнего си~нала светофора необходимо установить так: если переменная кеа истинна, то цвет должен быть со1ок. теб„в противном случае его цвет нужно установить со1ок.окну (серый).
Это записывается следуюшим выражением — также фрагментом кода языка зауа: кельт Со1ок.кео : Со1ок.дкау Рис. 5.15. Выполнение модели пешеходного перехода Часть д Средства Апуьодк для имитационного моделирования систем Цвет среднего и нижнего овалов, представляющих сигналы светофора, следует установить в поле их динамических значений соответственно так: уе11онт Со1от.уе11он : со1от.дтау дхеепт Со1от.дтеел : со1от.дтау Из материала следующей главы будет ясно, что здесь со1от — класс )ауа, а д -ау — предопределенная в этом классе константа, обозначающая серый цвет. СраВНИтЕ ВаШу МОДЕЛЬ С МОДЕЛЬЮ Веаевельалстоввд.
ЗаПуСтИтЕ МОДЕЛЬ. На рис. 6.15 зафиксирован момент выполнения модели в состоянии теаоу. Переход из этого состояния в состояние до будет выполнен следующим, он подсвечен красным. 6.3.5. Срабатывание перехода по сигналу Добавим к модели пешеходного перехола второй светофор, для пешеходов. Он имеет только два свеи, зеленый и красный, и три состояния: разрешающее переход (зеленый), внил~ание (мигающий зеленый) и запрещающее переход (красный).
В модель добавим еше две булевские переменные дхеепв и теор, их значения будут устанавливаться в состояниях еше одного стейтчарта, который будет управлять светофором пешеходов. Добавим новый стейтчарт в окне редактора объекта мобе1, назвав его ребевсхга 11дьс (рис. 6.16). Рис. б. Зб. Добавленный стейтчарт для управления светофором пешеходов Поскольку управление светофором пешеходов похоже на управление светофором трафика, новый стейзчарз люжно построить изменением уже построенного стейтчарта ста1еьс 11дЫ. Откройте окно редактора объекта нобе1 и, нажав клавишу <Сгг1> на клавиатуре, перетащите иконку стаггьс 11дье в другое места.
Этот объект скопируется, и ему будет дано ИМя СтаГГьс 11дие1. ИЗМЕНИтс ИМя СтсйтЧарта На ребеваеъа1 11дие И От- Глава б. Разработка моделей дискретно-событийнык систем редактируйте сам стейтчарт так, чтобы в нем были только состояния до, ассепсьоп и есор. Поскольку эти имена принадлежат элементам объекта реаевстьап 1здье, конфликта имен с так же названными состояниями другого стейтчарта не будет. Изменения, которые должны быть проведены с этим стейтчартом, такие: П начальное состояние для светофора пешеходов должно быть веер — про- тивоположным начальному состоянию светофора трафика; П нужно удалить состояния в1ои и теаау.
В результате. новый стейтчарт должен иметь вид рис. 6.17. рис. 6.17. управление светофором пешеходов Установка переменных при входе и выходе из состояний этого стейтчарта дОЛжНа, КОНЕЧНО, ОтНОСИтЬСя К ПЕРЕМЕННЫМ себг И дхеепр, УПраВЛЯЮЩИХ зажиганием свеи именно пешеходного светофора. Рассмотрим теперь условия срабатывания переходов стейтчартов между состояниями. Очевидно, что необходимо корректно синхронизировать срабатывания переходов двух стейтчартов так, чтобы всегда, когда светофор пешеходов находится в состояниях до или аесепсгоп, светофор траффика обязательно находился бы в состоянии веер. Этого можно добиться подбором таймаутов срабатывания перехолов.
Однако более разумно сделать это, посылая специальные разрешающие сигналы из одного стейтчарта в другой (рис. б.! 8). Введем два сигнала, твлееик и пашкхады. Пусть в стейтчарте управления светофором пешеходов переход ез может сработать, только если получен сигнал пкшкходн, который будет генерироваться в стейтчарте управления Часть /!. Средства Япу).сус для имитационного моделирования систем трафиком при переходе сз в состояние, в котором запрещено движение транспорта.
Пусть в стейтчарте стаггтс гьдьс переход тв может сработать, только если получен сигнал тглееик, который генерируется в стейтчарте управления движением пешеходов при переходе с4 в состояние, запрещающее движение пешеходов. Рис. ВЛВ. Синхронизация поведений при помощи сигналов В Аидой)с для генерации сигналов существует функция Еттеввепе «сигнал>), КОТОРВЯ Дояжиа ВЫЗЫВВТЬСЯ В ТОМ СТЕЙТЧВРТЕ, КОТО- рому предназначен сигнал. Если из некоторого активного объекта мы хотим послать (произвольный) сигнал лхх стейтчарту с именем вссьатс, то необходимо в этом активном объекте вызвать функцию еьтеевепс«сн ал>) этого стейтчарта, т.
е. выполнить действие вссьатс. Тьтееиепс ) "ххх" ) . Если стейтчарт вссьатс находится в состоянии, в котором он ожидает этот сигнал„то соответствующий переход сработает. Если стейтчарт находится в состоянии, в котором он не ожидает этого сигнала, никакой реакции не будет, а полученный сигнал потеряется. В состоянии е стейтчарт ожидает сигнала ххх, если в поле Происходит окна свойств Одного из переходов из состояния з выбран вариант По сии)алу, а в поле Си)иал этого окна указан э)от сигнал ххх.
В нашей модели в поле Действие перехода сз стейтчарта стаггьс;'дьс вставьте команду рег)евттгап тъдвг.тгхекчепс С'ПЕШЕХОДЫ"); 107 Глава 6. Разработка моделей дискретно-событийных систем Переход происходит По таймауту ТайМаут: РВ Переход происходит По таймауту Таймаут; т Переход происходит По таймауту Таймаут: 7 Переход происходит По таймауту Таймаут: 4 Действие: ревев)лап йдлсагеЕчепЦ"ПЕШЕХОДЫ") Переход происходит По сигналу Сигнал: "ТРАФФИК" Переход происходит По таймауту Таймаут: 4 рис. 6.19.
Переходы стейтчарта автоматического управлении движением а в это же поле перехода сй стейтчарта реаевсхьал 11д)тс вставьте команду СтатГ1с 11д)тп.г1кевчепс("тРАФФикн)г Таким образом, каждый из светофоров будет информировать другого о своем переходе в состояние запрещения лвижения. Для перехода по разреШавщЕМу СИГНаЛу В СтсйтЧартЕ СхаГГЬс 11д)те, В ПОЛЕ ПРОИСХОднт ОКНа свойств перехода сь выберите вариант По сигналу, а в поле Сипгал этого же окна наберите сигнал "тРАФФик".