Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Средства AnyLogic для разработки дискретно - событийных моделей




В данной главе мы рассматривали средства AnyLogic, поддерживающие мо­делирование дискретно-событийных систем. Эти средства включают сущно-сти, порождающие события, и сущности, позволяющие изменять состояние сис темы как реакцию на наступившие события. Основными средствами порождения событий в модели являются таймеры и стейтчарты. Кроме ба­зовых средств разработки дискретно-событийных систем, пользователю дос-тупна библиотека Enterprise Library, в которой собраны высокоуровневые средства — блоки, часто используемые в моделировании широкого класса дискретно событийных систем массового обслуживания. Рассмотрим все эти средства еще раз по порядку.

События

Основной абстрактной сущностью в дискретно-событийных моделях явля­ется событие. Понятие события в моделировании существенно отличается


от обычного понимания события. Для человека событием может быть по­ездка за границу или свадьба, посещение театра или рождение сына. В мо­делировании событие является абстракцией с ясно определенной семанти­кой. Событие — это нечто, не имеющее протяженности во времени и изменяющее состояние системы. Событием в модели может быть, напри­мер, срабатывание таймера или получение сообщения в порт. То, что собы­тие в моделировании является мгновенным, это абстракция, но только при наличии такой абстракции возможна организация в модели выполнения множества параллельно протекающих процессов, которые отражают парал­лелизм окружающего нас мира.

Таким образом, важнейшей концепцией дискретно-событийного моделиро­вания является то, что событие никогда не длится во времени, оно происхо­дит мгновенно, вызывая мгновенное же изменение состояния системы и. возможно, порождая новые будущие события либо удаляя ранее запланиро­ванные события. В результате наступления события может быть выполнено действие по изменению состояния системы. В соответствии с указанной ра­нее концепцией, любое такое действие является "атомным", неделимым в том смысле, что оно не может быть прервано никаким другим действием и событием, даже если действие это представлено длинной цепочкой операций.

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

Событиями в моделях на AnyLogic являются срабатывание таймера, получе­ние сообщения в порт, смена значения логического условия, определенного на непрерывных переменных, срабатывание перехода стейтчарта, нажатие кнопки внешним пользователем и т. д. Действия, связанные с событиями, обычно представляются выполнением некоторого кода языка Java (вызовом одной или нескольких функций, выполнением последовательности операто­ров и т. п.), и нужно ясно понимать, что, хотя при имитации поведения системы (при прогоне программы) выполнение этого кода обязательно за­нимает некоторый интервал физического времени, модельное время при этом не изменяется. Каждое событие может порождать новые события; например, в последовательности операций, выполняемых при наступлении данного события, может находиться операция взведения таймера на сле­дующий интервал времени. Действия, связанные с обрабатываемым событием.


могут быть у состояний при событии изменения состояний, у переходов при выполнении переходов, у таймеров при событии их срабатывания, у портов при событии получения ими сообщения и т. п. Выполнение события тайме­ра является выполнением кода, заданного в поле Действие при срабатывании таймера. Выполнение события перехода является выполнением набора дей­ствий, связанных с переходом в поле Действие окна свойств перехода. В ре­зультате выполнения события может измениться дискретное состояние мо­дели: могут начать ожидание другие переходы, запуститься другие таймеры, измениться текущие состояния стейтчартов, стать активными другие урав­нения. При выполнении этих действий могут измениться переменные моде­ли и состояние, могут быть добавлены новые события или удалены некото-рые из ранее запланированных событий.

Если несколько событий наступило в один и тот же момент модельного времени, обработка их исполнительной системой AnyLogic выполняется в каком-либо последовательном порядке. Изменение состояния модели в ре­зультате наступления одного события не может перекрываться другими дей-ствиями. За этим исполнительная система следит автоматически.

В чисто событийно-дискретных моделях модельное время изменяется дис­кретно, от события к событию. Модель "живет" (изменяя свое состояние) только в моменты наступления событий. Поэтому структура имитационной модели таких систем своеобразна. В ней есть генераторы событий, каждое событие может изменить состояние системы и породить другие события. Система моделирования ведет календарь событий (обычно скрытый от Пользователя), в котором все эти события учитываются. Исполнитель ("дви­жок" модели) выбирает наиболее раннее событие из календаря и исполняет действия, с ним связанные.

Таймеры

Таймер является одним из основных инструментов порождения будущих со-бытий в модели. В AnyLogic можно использовать статические и динамиче-ские таймеры. Статический таймер вводится как составной элемент струк-туры активного объекта. Таймер может быть взведен (установлен) на некоторый интервал времени, его срабатывание по исчерпании этого интер-вала является событием, с которым можно связать действие по изменению состояния системы. Одной из операций этого действия может быть новая установка таймера. Одно наступившее событие порождает одно или не-сколько событий в будущем. Именно так организован циклический таймер, который был использован в модели счетчика. Динамический таймер может быть порожден с каждым наступлением некоторого события (например прибытие заявки для обслуживания). При порождении динамический тай-мер устанавливается на некоторый таймаут, по исчерпании которого выпол-няется некоторое действие, и таймер уничтожается.


Стейтчарты

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

6.5.4. Непосредственное
порождение событий

В AnyLogic события также являются частью языка моделирования: они мо гут порождаться непосредственно. Для этого, например, служит функция fireEvent (<сигнал>), вызываемая у стейтчарта. Переход стейтчарта может сработать по приходу сигнала. Сигналом может являться объект любого класса Java, например, просто строковая константа, как это было в модели пешеходного перехода.

Сообщения и порты

Сообщения в AnyLogic являются пассивными статическими объектами, они могут использоваться для передачи информации. Сообщения передаются через порты. Сообщения соответствуют заявкам в традиционных системам событийно-дискретного моделирования.

Шаги выполнения модели

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

В AnyLogic запланированные для выполнения события хранятся в очереди, каждое из них в первом приближении привязано к некоторому моменту мо дельного времени в будущем. Такими событиями могут быть, например срабатывание активного таймера или срабатывание временного перехода Не нужно путать эти "внутренние" события с событиями, являющимися ча­стью языка моделирования AnyLogic.


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

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

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





Поделиться с друзьями:


Дата добавления: 2018-10-15; Мы поможем в написании ваших работ!; просмотров: 1157 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Велико ли, мало ли дело, его надо делать. © Неизвестно
==> читать все изречения...

2522 - | 2177 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.