Основы моделирования в среде AnyLogic 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Основы моделирования в среде AnyLogic



 

Основными блоками модели AnyLogic являются активные объекты, которые позволяют моделировать любые объекты реального мира. Активный объект является экземпляром класса активного объекта. Чтобы создать модель, необходимо создать классы активных объектов(или использовать объекты библиотек) и задать их взаимосвязи. AnyLogic интерпретирует создаваемые графически классы активных объектов в классы языка программирования Java.

Активные объекты могут содержать вложенные объекты, причем уровень вложенности неограничен. Это позволяет производить декомпозицию модели на любое количество уровней детализации.

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

Запуск AnyLogic. Создание и запуск модели осуществляется помощью специальной среды разработки AnyLogic. После запуска AnyLogic отображается Стартовая страница. Она предлагает создать новый проект, открыть уже существующий, или открыть один из примеров, который может помочь понять, как создавать свои модели. Модель создается в рамках одного проекта. Управление проектами осуществляяется с помощью Стартовой страницы и меню Файл.

Редактирование проекта. Редактирование проекта осуществляется с помощью окон среды создания модели. При создании проекта автоматически отображаются окна Проект и Свойства. Окно Проект обеспечивает навигацию по элемен-там проекта. Окно Свойства используется для просмотра и изменения свойств элементов.

Поскольку проект организован иерархически, то он отображается в виде дерева: сам проект образует верхний уровень дерева рабочего проекта, пакеты — следующий уровень, классы активных объектов и сообщений — следующий и т.д.

Можно копировать, перемещать и удалять любые элементы дерева объектов, легко управляя, таким образом, рабочим проектом. При копировании и удалении элементов их следует предварительно выбрать. Можно временно исключить любой элемент из модели. Таким образом, структура модели легко изменяется, исключая во время ее разработки одни элементы и включая другие.

Когда Вы выбираете какой-нибудь элемент - например, в окне Проект или в окне какой-нибудь диаграммы AnyLogic — окно Свойства отображает свойства выбранного элемента.

Окно Свойства содержит несколько вкладок. Каждая вкладка содержит элементы управления, такие как, поля ввода, флажки, переключатели, кнопки и т.д., с помощью которых можно просматривать и изменять свойства элементов модели. Чтобы облегчить работу по созданию модели, AnyLogic отображает подсказки с подробным описанием свойств выбранного элемента.

Создание модели. Элементы модели.

Проект. Каждая модель AnyLogic создается в рамках своего проекта. Проект является самым верхним элементом дерева элементов модели.

Библиотека. В проекте могут использоваться классы других проектов – библиотек. Они представляют собой наборы классов, описывающих какую -то конкретную прикладную область или разработанных для какой-то задачи моделирования. Можно создать свои библиотеки классов или использовать уже существующие библиотеки, поставляемые вместе с AnyLogic.

Активные объекты являются основными строительными блоками модели AnyLogic. Активные объекты могут моделировать любые объекты реального мира: машины, людей, станки, здания, аппаратное обеспечение и т.д.

Структурная диаграмма. Каждый класс активного объекта имеет свою структурную диаграмму, с помощью которой можно:

- задать интерфейс класса активного объекта;

- добавить в объект вложенные объекты и задать их взаимосвязи;

- добавить в класс элементы, задающие поведение объекта, такие как таймеры и стейтчарты.

На структурной диаграмме задается структура активного объекта. Это делается с помощью элементов, показанных на рис.7.1.

 

 

Рис. 7.1. Структурная диаграмма.

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

Вложенные объекты. Активные объекты могут содержать вложенные объекты экземпляры классов других активных объектов — причем уровень вложенности может быть любым. При создании вложенных объектов формируется иерархия модели.

Вложенные объекты могут быть как простыми, так и реплицироваными. В отличие от простого реплицированный объект представляет собой набор объектов одного типа. Репликация объектов позволяет легко создавать сложные структуры объектов с нетипичными топологиями.

Корневой объект. Модель AnyLogic представляет собой иерархическое дерево активных объектов, вложенных друг в друга (см. Рис. 7.2.). Объект, являющийся корнем этого дерева, называется корневым объектом модели. Корневой объект представляет самый верхний уровень абстракции модели. Выбирая корневой объект модели, нужно указать, с какого объекта начать построение модели.

Предположим, что Вы моделируете автомобиль. Вы создаете класс Automobile и выбираете этот класс в качестве класса корневого объекта, поскольку он представляет собой самый верхний уровень абстракции в Вашей модели. Этот класс содержит объекты, моделирующие части автомобиля: колеса, двигатель, карбюратор и т.д. Они, в свою очередь, могут содержать другие вложенные объекты, моделирующие их детали, и т.д.

Взаимодействие активных объектов. AnyLogic поддерживает механизмы непрерывного и дискретного взаимодействия активных объектов.

Рис.7.2. Дерево активных объектов.

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

Этот механизм обеспечивает непрерывное и/или дискретное взаимодействие объектов.

Написание кода для класса активного объекта.

Для класса активного объекта можно написать код, который будет выполняться в различные моменты жизненного цикла объекта. Код класса активного объекта задается в окне кода этого класса (см. рис. 7.3.). Окно кода класса активного объекта имеет следующие разделы:

Импорт — выражения import, необходимые для нормальной компиляции кода класса. При генерации кода эти выражения будут помещены перед определением этого класса.

Реализуемые интерфейсы — список интерфейсов, реализуемых этим классом (имена интерфейсов должны разделяться точками с запятыми).

Код инициализации — последовательность выражений, выполняемых сразу после того, как все объекты модели будут созданы, соединены и проинициализированы. Здесь обычно запускаются активности объекта, такие как, стейтчарты, потоки и таймеры. Порядок инициализации объектов модели может меняться.

Уравнения — набор уравнений, связанных с активным объектом "Уравнения".

Дополнительный код класса — место для определения методов класса, констант, переменных, вложенных классов. Этот код будет вставлен в определение класса. Переменные кода будут доступны отовсюду из активного объекта.

Наследование активных объектов. Классы активных объектов могут наследоваться друг от друга. Любой класс активного объекта напрямую или транзитивно наследуется от класса ActiveObject. Класс ActiveObject задает общие для всех активных объектов свойства.

Параметры. Активный объект может иметь параметры. Параметры обычно используются для задания характеристик объекта. Можно задать различные значения параметров для разных объектов одного и того же класса, что требуется в тех случаях, когда объекты имеют одинаковое поведение, но у них отличаются некоторые характеристики.

Значения параметров можно изменять во время работы модели. Параметр может быть связан с параметром вложенного объекта. В этом случае значение параметра будет передаваться связанному с ним параметру вложенного объекта.

Как и многие другие инструменты имитационного моделирования, AnyLogic поддерживает параметры простых типов: вещественные (real), целочисленные (integer) и логические (boolean). Кроме того, можно создать, например, параметр класса String, чтобы хранить строковые константы, или параметр класса Vector, который будет хранить динамический массив объектов.

 

Рис. 7.3. Окно кода класса активного объекта.

 

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

Связывание параметров. Параметр класса активного объекта можно связать с параметром вложенного объекта. В этом случае, если изменяется значение этого параметра, то изменяется и значение связанного с ним параметра вложенного объекта. Если параметр вложенного объекта будет, в свою очередь, связан с параметром своего вложенного объекта, то изменение будет передано дальше и т.д.

Динамические параметры. Особым видом параметра AnyLogic является динамический параметр. При обращении к динамическому параметру, желая узнать его значение, значение параметра будет пересчитываться заново, то есть динамический параметр ведет себя как функция.

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

Изменения значений переменных с течением времени можно получить с помощью формул и уравнений. Этим самым можно задавать непрерывное поведение объекта. Значения переменных можно изменять во время работы модели.

Переменные могут быть либо внутренними, либо интерфейсными.

Внутренняя переменная доступна только из активного объекта.

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

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

Уравнения AnyLogic могут быть дифференциальными, алгебраическими и формулами.

Дифференциальные уравнения. Дифференциальные уравнения задаются в следующей форме:

d(x)/dt = F(x,y,t,…), (7.1)

где x - выходная или внутренняя переменная типа double или матричного типа; F(x,y,t,…) - арифметическое выражение, в котором могут присутствовать переменные активного объекта и специальный символ t, обозначающий модельное время.

Выражение F(x,y,t,…) может содержать любые арифметические операции. Можно также вызывать в выражении любые функции и методы, как предопределенные (sin (), cos(), sqrt () и т.д.), так и созданные пользователем. Можно задать любое количество дифференциальных уравнений.

Алгебраические уравнения. Алгебраические уравнения задаются в форме:

x=F(x,y, t,…), (7.2)

где x — выходная или внутренняя переменная типа double или матричного типа.

Выражение F(x,y,t,…) должно быть составлено так же, как и для дифференциальных уравнений. Для каждой системы алгебраических уравнений нужно будет задать неизвестные переменные с помощью следующего оператора:

find(x, y, …).

Формулы. Формулы задаются в форме:

x=F(y,t,…), (7.3)

где x — выходная или внутренняя переменная типа double или матричного типа.

Выражение F(y,t,…) должно быть составлено согласно правилам для дифференциальных уравнений. Однако выражение F (y, t,…) не может содержать переменную x, потому что тогда формула превратилась бы в алгебраическое уравнение, которое должно задаваться в другой форме.

Можно задать любое количество формул. При этом каждая переменная может присутствовать в левой части только одного уравнения. В левой части уравнения не может присутствовать входная переменная.

Уравнение задается в форме строки. Его можно задать как в разделе Уравнения окна кода класса активного объекта, так и в поле Уравнение на странице свойств переменной. Эти места задания уравнения синхронизированы, то есть если изменить уравнение в одном месте, то оно автоматически будет изменено в другом месте.

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

Модельное время. В уравнениях можно ссылаться на текущее модельное время. Значение текущего модельного времени можно получить с помощью предопределенного символа t или с помощью функции getTime ().

Табличные функции. AnyLogic поддерживает специальный тип функций - табличные функции. Табличная функция — это функция, заданная в табличной форме, которая может быть сделана непрерывной с помощью интерполяции и экстраполяции.

Математические функции. Ониобычно используются в том случае, когда какое-то математическое выражение встречается сразу в нескольких местах модели. Вместо того чтобы несколько раз вводить это выражение, можно задать математическую функцию и просто вызывать эту функцию.

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

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

Матрицы. Матричные переменные являются экземплярами класса Matrix. С помощью методов этого класса можно вычислять обратную и транспонированную матрицы, производить разложения матрицы, вычислять различные нормы матрицы и т.д.

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

Порты являются двунаправленными и могут служить одновременно как для приема, так и для посылки сообщений. Порты могут быть либо внешними,т.e. доступными снаружи объекта, либо внутренними — доступными только в этом активном объекте. Для того чтобы установить взаимодействие между объектами, нужно добавить в активный объект внешний порт, а чтобы установить взаимодействие внутри объекта — внутренний.

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

Таймеры. Таймер является самым простым способом планирования действий в модели. Таймеры используются для моделирования задержек и тайм-аутов. При срабатывании таймера выполняется код заданного Действия при срабатывании таймера.

Есть два типа таймеров: динамические и статические. Разница между динамическим и статическим таймером заключается в том, что динамический таймер при срабатывании удаляется, в то время как статический таймер продолжает существовать и может быть перезапущен.

Статический таймер задается на структурной диаграмме (диаграммный таймер). Диаграммный таймер кроме этого еще и позволяет выбирать, должен ли он срабатывать единожды или циклически, или же он управляется «вручную», как простой статический таймер.

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

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

Если задать условие проверки значения непрерывно меняющихся переменных в качестве условия срабатывания перехода, то получится обратный эффект — непрерывное поведение будет воздействовать на дискретную часть системы.

Стейтчарт создается на структурной диаграмме и затем графически описывается на диаграмме стейтчарта. Как только стейтчарт будет создан, можно изменить его имя в текстовом редакторе, расположенном на структурной диаграмме справа от значка стейтчарта.

Поведение стейтчарта задается на диаграмме стейтчарта, рис.7.4. AnyLogic поддерживает следующие элементы стейтчартов: состояние и переход.

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

 

Рис. 7.4- Диаграмма стейтчарта.

 

 

Переход означает переключение управления стейтчарта, переход его из одного состояния в другое. Если происходит заданное событие срабатывания перехода и выполняется заданное условие «гард», то стейтчарт переключается из одного состояния в другое и выполняет заданные действия. Когда это происходит, это значит, что срабатывает переход.

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

Ветвление может иметь не более одного выходящего перехода, помеченного как выход из ветвления по умолчанию. Этот переход сработает в том случае, когда все остальные исходящие переходы будут закрыты.

Срабатывание перехода. Переход может сработать в результате происхождения различных событий: мгновенно; по истечении заданного таймаута; при выполнении заданного условия; при происхождении заданного события.

 



Поделиться:


Последнее изменение этой страницы: 2017-02-06; просмотров: 2415; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.135.217.228 (0.047 с.)