Ю. Карпов - Иммитационное моделирование систем с AnyLogic 5 (1124147), страница 24
Текст из файла (страница 24)
За этим исполнительная система следит автоматически. В чисто собьп'ийно-дискретных моделях модельное время изменяется дискрелию, от события к событию. Модель "живет" (изменяя свое состояние) только в моменты наступления событий. Поэтому структура имитационной модели таких систем своеобразна. В ней есть генераторы событий, каждое событие может изменить состояние системы и породить лругие события. Система молелирования ведет календарь событий (обычно скрытый от пользователя), в котором все эти события учитываются. Исполнитель ("движок" модели) выбирает наиболее раннее событие из календаря и исполняет действия, с ним связанныс. 6.5.2.
Таймеры Таймер является одним из основных инструментов порождения будущих событий в модели. В АпуЕорс можно использовать статические и динамические таймеры. Стптический тпймер вводится как составной элемент структуры активного обьекта. Таймер может быть взведен (установлен) на некоторый интервал времени, его срабатывание по исчерпании этого интервала является событием, с которым можно связать действие по изменению состояния системы.
Олной из операций этого действия может быть новая установка таймера. Одно наступившее событие порождает одно или несколько событий в будущем. Именно так организован циклический таймер, который был использован в модели счетчика. Динпмический таймер может быть порожден с каждым наступлением некоторого события (например прибытие заявки для обслуживания). При порождении динамический таймер устанавливается на некоторый таймаут, по исчерпании которого выполняется некоторое действие, и таймер уничтожается.
Часть д Средства АлуГ.одк для имитационного моделирования систем 6.5.3. Стейтчарты О стейтчартах уже говорилось раньше. Стейгячорты — это удобное расширение нотации графов переходов,позволяющее визуально представить поведение сложных систем. Срабатывание (выполнение) перехода в стейтчарте является событием, он происходит мгновенно (в модельном времени), при этом может быть выполнено действие по изменению переменных состояния, так же как генерация будущих событий. Событиями, связанными с переходами в стейтчартах, являются также вход в состояние (элементарное или гиперсостояние) и выход из состояния. Каждое из этих событий может быть связано с действием, которое будет выполняться при его наступлении. В модели пешеходного перекрестка мы использовали эту возможность для изменения значения булевых переменных, управляющих зажиганием светофоров.
6.5.4. Непосредственное порождение событий В АпуЕорс события также являются частью языка моделирования: они могут порождаться непосредственно. Для этого, например, служит функция гътев есс(<с иная>), вызываемая у стейтчарта. Переход стейтчарта может сработать по приходу сигнала. Сигналом может являться объект любого класса Зауа, например, просто строковая константа, как это было в модели пешеходного перехода.
6.5.5. Сообщения и порты Сообщения в АпуЕорс являются пассивными статическими объектами, они могут использоваться для передачи информации. Сообщения передаются через порты. Сообщения соответствуют заявкам в традиционных системах событийно-дискретного моделирования. 6.5.6. Шаги выполнения модели Выполнение модели в Алу1.огас состоит из послеловательности шагов, каждый из которых относится к одному из двух типов: временной шаг и шаг обработки события, происходящего в модели. В АпуЕорс запланированные для выполнения события хранятся в очереди, кикдое из них в первом приближении привязано к некоторому моменту модельного времени в будущем.
Такими событиями могут быть, например, срабатывание активного таймера или срабатывание временного перехода. Не нужно путать эти "внутренние" события с событиями, являющимися частью языка моделирования Апу1лрс. 119 Глава б. Разработка моделей дискретно-событийных систем Временной шаг состоит в обновлении (продвижении) модельного времени к новому значению. При этом значения "дискретных" объектов модели (состояния стсйтчартов, портов, событий и т. п.) не изменшотся, а изменяются только значения зависящих от времени переменных в результате решения на этом шаге системы активных алгебро-дифференциальных уравнений (если они есть).
Затем проверяются ожидающие события. Если есть хотя бы одно ожилаюшее событие, связанное с данным моментом модельного времени, выполняется шаг обработки событий. Во время этого шага значение модельного времени остается неизменным (это и означает, что все события выполняются с точки зрения модельного времени мгновенно). Из событий, ожидающих выполнения в данный момент, выбирается некоторое событие.
Пользователь может выбрать либо детерминированный, либо случайный алгоритм упорядочивания этих событий. Для выбранного события обрабатываются связанные с ним действия. Если в данный момент модельного времени нет ни одного ожидающего события, происходит выполнение следующего временного шага. 6.5.7. Библиотека Ег)$егрпее Ызгагу Графическое представление систем с помощью блок-схем широко используется во многих важных сферах деятельности: производстве, логистике, системах обслуживания, бизнес-процессах, моделировании компьютерных и телекоммуникационных сетей — везде, тле задачи анализа являются типовыми. АпуЕоя|с позволяет моделировать широкий класс событийнолискретных систем с помощью визуальных гибких расширяемых блоков, как стандартных, так и дополнительно созланных разработчиком.
Задача моделирования дискретно-событийных систем с помощью библиотеки Еп1егрпзе ЫЬгагу сводится к построению структуры системы из стандартных заранее созданных блоков в стиле дгая-апд-дгор (перетащить и оставить), настройке параметров блоков и запуску модели на выполнение, что требует для разработки описанной ранее модели нескольких минут времени. Конечно, организация сбора специализированных выходных данных и визуализация модели потребуют дополнительного времени. Сами блоки библиотеки построены с использованием таймеров, стейтчартов, портов и средств передачи сообщений. В каждом блоке существуют параметры, использование которых лает возможность отслелить и использовать все события, происходящие в блоке.
Например, в блоке пе1ау в поля опЕа(ег и опЕхе окна свойств можно включить действия по изменению состояния системы при каждом приходе заявки в блок и при каждом покидании заявкой блока. реализация станлартных объектов Епге~рпзе ЫЬгагу открыла лля пользователя, их функциональность может быть как угодно расширена, вплоть до создания собственных библиотек.
Библиотека Епгегрпзе 1)Ьгагу содержит Часть И. С дстеа Ялуссд'с для имитационного моделирования систем не только традиционные обьекты систем массового обслуживания, но и объекты, типичные для моделирования производства: очереди, задержки, конвейеры, ресурсы и т. и. Более подробное руководство по разработке моделей с использованием этой библиотеки можно найти в "Згчебнол пособии лс Ептегргтзе Е!Ьгату", а деталь- ное описание объектов библиотеки содержится в "Слравочнолт )туксеодстлее ло Елтегргтзе 1 йгсгу'", 6.6.
Заключение В данной главе на нескольких примерах представлены основные средства Апу).орс, позволяющие строить событийно-дискретные людели. Еще раз подчеркнем, что средства эти делятся на базовые низкоуровневые (стейтчарты, таймеры, порты, сообщения и т. п.) и высокоуровневые (библиотечные объекты). Преимущества использования высокоуровневых средств построения моделей очевидны, они были продемонстрированы в рсзд. 6.4. Удобство среды Апу) орс состоит, в частности, в том, что для каждой узкой области разработки молелей с помощью базовых средств и уже разработанных библиотечных обьектов легко можно построить свою библиотеку модулей, которые будут строительными блоками в этой области и позволят разрабатывать модели с минимальными трудозатратами. Глава 7 Сведения о языке дача, необходимые-для разработки моделей на Апу1 оус Как мы убедились, АпуЫрс позволяет быстро создавать модели' из базовых графических компонентов в режиме дгаа-апд-бгор.
Поэтому простые модели могут быть готовы уже через несколько минут после начала их разработки. Однако разработка реально полезных моделей всегда требует использования в той или иной степени программного кола. Необходимость использования программного кода является свойством всех инструментов молелирования: в любом из них для разработки серьезной модели требуется писать код на встроенном в этот симулятор языке программирования — либо на специализированном языке, либо на одном из универсальных языков программирования, с которым интегрирован симулятор.
'Нормальной считается ситуация, когдп после 10минут манипуляции мышкой программист будет !О часов писать и отлпзкивагнь тексты прогрпмм, которые придпдут модели все зкелаемые им свойствп", — замечает один из экспертов в области имитационного моделирования ~ЮТ02~. Некоторые авторы считают, что разработчику имитационных моделей абсолютно необходимо профессиональное знание программирования: "Рпботп в области прикладной мптемптики без уверенного владения техникой програчлшровпния не только бессмысленнщ но и онпснп ги для общества, и для самого горе-специалиста). К саясалению, в последнее десятилетие увлечение "информпционнылш технологиями" и демагогия о "ненрограммирующих пользователях" заметно ухудивиш нрограмцистскую подготовку будущих математиков и инлкенеров" ~ЮР041. Конечно, без использования программного кола разработать полезную имитационную модель нельзя.