Создание дискретно-событийных моделей
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Лабораторная работа № 3. Моделирование работы светофора

Цель занятия

· построение стейтчартов;

· действия при входе и выходе из состояния, иерархические состояния;

· переход по исчерпании таймаута;

· переход при получении сообщения.

Содержание

Построим модель регулируемого пешеходного перехода со светофором, разрешающим или запрещающим движение транспорта.

Описание проблемы

Светофор, регулирующий движение автомобилей на пешеходном переходе, может находиться в следующих состояниях: движение транспорта разрешено (зеленый), приготовиться к запрещающему сигналу (мигающий зеленый), приготовиться к остановке (желтый), движение запрещено (красный) и приготовиться к движению (красный и желтый).

Светофор работает в автоматическом режиме. В каждом состоянии светофор находится определенный постоянный период времени.

Построение модели

Создайте новый проект под названием Svetofor и назовите класс корневого активного объекта Model.

Наша модель будет иметь только один активный объект, представляющий светофор, поэтому корневой объект Model будет единственным активным объектом нашей модели. На диаграмму класса активного объекта Model поместите Начало диаграммы состояний из панели Диаграмма состояний и назовите ее Для_автомобилей, заметьте, что AnyLogic может работать с элементами, набранными кириллицей. Перетащите мышью элемент Состояние под стрелочку начала диаграммы как показано на рисунке 3.1.

Рисунок 3.1 – указатель начального состояния

 

Имя состояния, как и все другие его параметры, можно редактировать в окне его свойств. Для того чтобы построить стейтчарт, следует использовать элементы из палитры Диаграмма состояний, рисунок 3.2.

 

Рисунок 3.2 – Библиотека диаграмм состояния

 

1. определяет начальное состояние всего стейтчарта.

2. с помощью кнопки  рисуются состояния (как простые, так и гиперсостояния).

3.  используется для рисования переходов между состояниями.

4.  определяет начальное состояние внутри сложного состояния.

5.  используется для рисования состояния, являющегося "финальным" в поведении активного объекта.

В соответствии с алгоритмом работы светофора помимо начального состояния в модель нужно ввести дополнительные состояния (рисунок 3.3). Начальное состояние назовите движение – движение автомобилям разрешено (зеленый свет), затем светофор переходит в состояние внимание – внимание (мигающий зеленый), медленно – приготовиться к остановке (желтый свет), остановка транспорта стоп – запрет движения (красный свет) и приготовиться – приготовиться к движению (красный и желтый свет горят одновременно).

Состояние внимание представим гиперсостоянием с парой переключающихся элементарных состояний: в одном из них зеленый горит (состояние А), в другом – нет (состояние В). Для построения гиперсостояния сначала создайте обычное состояние, увеличьте его (растянув мышью) и поместите внутрь другое состояние. Постройте эти состояния и соедините их переходами, как показано на рисунок 3.3.

Зададим условия срабатывания переходов. Переходы в нашем автоматическом светофоре выполняются по таймауту, т. е. по истечении интервала времени, который прошел с момента прихода системы в данное состояние.

1. В состоянии движение светофор находится 10 секунд.

2. Затем 7 секунд зеленый сигнал мигает (состояние внимание).

3. В состоянии медленно 4 секунды горит желтый сигнал.

4. В течение 10 секунд движение запрещено (состояние стоп).

5. 4 секунды светофор находится в состоянии приготовиться.

 

 

Рисунок 3.3 – Алгоритм автомобильного светофора

 

В нашей модели единица модельного времени соответствует 1 секунде реального времени.

Для задания условий срабатывания переходов, выделите переход t1, и в поле Происходит оставьте без изменения вариант По таймауту, а в поле По таймауту введите 10 (рисунок 3.4).

 

Рисунок 3.4 – свойства перехода t 1

 

 

Создайте три параметра логического типа: красный, желтый и зеленый, которые будут принимать истинное значение тогда, когда у светофора горит соответствующий сигнал: красный, желтый или зеленый (рисунок 3.5). Начальные значения этих булевых параметров можно не задавать: по умолчанию они будут равны false.

 

 

Рисунок 3.5 – настройка параметров

 

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

1. В свойствах состояния движение в поле Действие при входе запишите зеленый=true;, а в поле Действие при выходе запишите зеленый = false; (рисунок3.6).

 

 

Рисунок 3.6 – настройка состояния «движение»

2. То же самое запишите для гиперсостояния внимание, а у состояния А эти поля нужно оставить пустыми – когда светофор находится в этом состоянии, он не горит.

3. Аналогично, в состоянии медленно нужно включить желтый сигнал, т. е. при входе в это состояние установить параметр желтый в true, а при выходе из этого состояния установить его в false.

4. Для состояния стоп аналогично опишите состояния параметра красный, а для состояния приготовиться оба параметра красный и желтый нужно установить в true при входе, и в false при выходе.

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

Презентация модели

Презентация модели рисуется в той же диаграмме (в графическом редакторе), в которой задается и диаграмма моделируемого процесса, (рисунок 3.7). Графические объекты цвета сигналов светофора в презентации имеют динамические параметры, все остальные – статические. Проезжую часть удобно нарисовать с помощью графических примитивов типа Прямоугольник, а светофор с помощью примитива - Ломаная. Сигнальные элементы светофора строятся из трех овалов, повернутых на 45 градусов (поле Поворот вкладки Дополнительные окна свойств овала).

Установим динамическое значение цвета верхнего сигнала светофора (цвет верхнего овала): если переменная красный истинна, то цвет должен быть red (красный), в противном случае его цвет нужно установить gray (серый). Это записывается следующим условным выражением на языке Java:

красный? red: gray

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

желтый? yellow: gray

зеленый? green: gray

red, yellow, green и gray – предопределенные константы, обозначающие стандартные цвета. Запустите модель и проверьте ее работу.

 

 

Рисунок 3.7 – модель автомобильного светофора

 

Дата: 2019-03-05, просмотров: 358.