Гордеев А.С. Моделирование в агроинженерии - файл n1.doc

Гордеев А.С. Моделирование в агроинженерии
скачать (2046.7 kb.)
Доступные файлы (1):
n1.doc3932kb.03.12.2007 20:56скачать

n1.doc

1   2   3   4   5   6   7   8   9   10
ГЛАВА 9. ДИСКРЕТНО - СОБЫТИЙНОЕ МОДЕЛИРОВАНИЕ В СИСТЕМЕ AnyLogic
9.1. Основные определения языка моделирования AnyLogic
Дискретно-событийное моделирование – это моделирование относящееся к алгоритмическому моделированию. Для дискретно-событийного моделирования сложных объектов предназначена система AnyLogic.

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

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

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

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

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

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

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

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

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

9.2. Создание модели

Элементы модели.

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

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

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

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

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

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

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

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


Рис. 9.2. Структурная диаграмма.
Редакторы диаграмм. В AnyLogic есть четыре окна редакторов диаграмм:

- редактор структуры;

- редактор стейтчарта;

- редактор анимации;

- редактор 3D анимации.

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

На рис. 9.3. показан пример связывания графических свойств фигур значка с данными активного объекта. Здесь координаты круга определяются значениями пе-ременных активного объекта x и y, а угол поворота прямоугольника задается пере-менной кода. Таким образом, связывая свойства фигур с данными активного объек-та, можно анимировать активные объекты на анимированной структурной диаграм-ме во время работы модели.

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


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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Уравнения AnyLogic могут быть трех типов:

- дифференциальные;

- алгебраические;

- формулы.

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

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

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

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

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

Можно задать любое количество дифференциальных уравнений. При этом каждая переменная может присутствовать в левой части только одного уравнения. В левой части дифференциального уравнения не может находиться входная переменная. В примере, приведенном на рис.9.6., поведение переменной x задается диффе-ренциальным уравнением d (x) /dt=t.

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

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

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

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

find(x, y, …).

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

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

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

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



Рис. 9.6. Дифференциальные уравнения.

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

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

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

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

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

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

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

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

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

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

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

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

Соединение портов. Чтобы сообщения могли пересылаться между портами, эти порты должны быть соединены соединителями. Соединители играют роль путей движения сообщений в модели, рис.9.7.

Сообщения могут пересылаться между:

- портами вложенных объектов;

- внешним и внутренним портом объекта;

- внешним портом и портом вложенного объекта;

- внутренним портом и портом вложенного объекта.

Рис.9.7. Соединение портов.


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

Стандартные классы портов. В AnyLogic есть два класса портов: Port и PortQueuing, задающие порт без очереди и порт с очередью соответственно.

В качестве примера применения порта рассмотрим сортировку входящих со-общений по их типу.

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

Предположим, что требуется промоделировать работу мойки автомобилей. Мойка имеет два отделения: для легковых автомобилей и для грузовиков, и необ-ходимо, чтобы разные типы машин поступали в разные отделения. Мойка будет представлена в нашей модели активным объектом класса CarWash, имеющим два порта, моделирующие два отделения мойки. Грузовики и легковые автомобили будут представлены сообщениями классов Truck и Car. Нужно реализовать проверку типа сообщений в портах, чтобы сообщения типа Truck принимались только в порту trucksection, а сообщения типа Car — только в порту carsection. Для этого нужно указать эти классы сообщений в качестве Типов сообщений этих портов, как показано на рис. 9.8.

Модель работает, как показано на рис. 9.9. В первом случае сообщение типа Car принимается в порту carsection и игнорируется в порту trucksection. Во втором случае, наоборот, сообщение типа Truck принимается в порту trucksection и игнорируется в порту carsection.

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

сообщений по типу

автомобиля.



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

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

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

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



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

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

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

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

- состояние;

- переход; Рис. 9.11. Состояния стейтчарта.

- указатель начального состояния;

- финальное состояние;

- состояние-ветвление;

- исторические состояния;

- текстовый комментарий.

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

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


Рис. 9.12. Переходы стейтчарта.
Начальная точка перехода лежит на границе исходного состояния перехода.

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

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

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

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

- мгновенно;

- по истечении заданного таймаута;

- при выполнении заданного условия;

- при происхождении заданного события.

Соединение порта со стейтчартом. Порты могут быть соединены со стейт-чартами. В этом случае сообщения, принимаемые портом, будут пересылаться в соединенный с этим портом стейтчарт, где они будут обрабатываться как сигна-лы. Таким образом, можно реагировать в стейтчарте на приход сообщения в порт.
9.3. Запуск и просмотр модели
Модель запуcкается той же программой, которая используется при ее созда-нии. AnyLogic позволяет запускать модель, следить за ходом моделирования и управлять им, а также производить отладку модели. Скорость работы модели будет зависеть от выбранного режима выполнения модели и от количества открытых окон среды просмотра модели. Чем меньше окон будет открыто, тем быстрее будет выполняться модель.

Изменение скорости выполнения модели. Модель AnyLogic может выполня-ться либо в режиме виртуального, либо в режиме реального времени.

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

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

Диаграммы. С помощью диаграмм AnyLogic можно изучать динамику моделируемого процесса и его историю. Окно диаграммы AnyLogic показано на рис. 9.13. Переменные и наборы данных могут быть добавлены на диаграмму простым перетаскиванием мышью или с помощью диалогового окна Содержимое диаграммы.
Рис. 9.13. Окно диаграммы


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

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

- Масштабируемость. Поскольку анимация повторяет иерархическую структуру модели, то при динамическом изменении модели она масштабируется вместе с ней.

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

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

- С помощью свойств анимационной диаграммы Масштаб, X-смещение и Y-смещение Вы можете связать данные модели с координатами сразу всех анимационных фигур.

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

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

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

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

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

Нестандартный эксперимент позволяет программно задавать сценарии экспериментов на языке Java.

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

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

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

AnyLogic позволяет останавливать модель при наступлении одного из следующих событий:

- по прошествии заданного времени;

- при достижении доверительным интервалом определенного набора данных
заданного порогового значения;

- при достижении определенной переменной заданного порогового значения;

- при выполнении заданного логического условия.

Условия остановки модели задаются на странице Дополнительные окна свойств эксперимента. Другие условия остановки (основанные на проверке значения переменной, доверительного интервала набора данных или логического условия) называются дополнительными условиями остановки модели. Дополните-льные условия остановки модели задаются в диалоговом окне Дополнительные условия остановки.
9.6. Отладка модели
Среда AnyLogic позволяет:

- осуществлять проверку синтаксиса диаграмм, типов и параметров;

- обнаруживать логические ошибки модели и ошибки в коде и останавливать модель при обнаружении таких ошибок;

- отслеживать процесс выполнения модели с помощью точек останова и журналов;

- просматривать очередь событий моделирующей машины и изменять порядок выполнения запланированных событий;

- отлаживать модель с помощью генерации ошибок при выполнении модели;

- производить отладку Java кода модели с помощью внешних отладчиков.

Моделирование в AnyLogic представляет собой выполнение последовате-льных событийных и временных шагов.

В процессе выполнения временного шага:

- обновляется значение модельного времени;

- дискретное состояние модели (состояния стейтчартов, портов, событий, потоков) остается неизменным;

- численно решаются текущие активные уравнения (если они есть), и
соответствующим образом изменяются значения переменных;

- проверяются ожидающие события.

В процессе выполнения событийного шага:

- значение модельного времени не изменяется.

- выполняются действия состояний, переходов, таймеров, портов и т.д., связанные с этим событием.

- может измениться состояние модели.

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

События моделирующей машины AnyLogic — это события, происходящие во время работы модели.

Есть несколько типов событий моделирующей машины:

• текущие — события, которые могут быть выполнены в данный момент;

• выбранное — одно из разрешенных событий, которое выбрано, чтобы быть
выполненным следующим;

• разрешенные — другие текущие события (те, которые потенциально могут быть выполнены следующими) запланированные — события, запланированные на какой-то конкретный момент времени в будущем ожидающие — события, кото-рые могут произойти в будущем, но неизвестно когда.

События AnyLogic хранятся в очереди сообщений. Любое событие, находя-щееся в очереди событий, может быть связано с:

- активным таймером;

- переходом, срабатывающим по истечении таймаута;

- потоком, выполняющим операцию задержки delay ().

Новые текущие события могут возникнуть в результате выполнения действия только что произошедшего события, например:

- выполнения действия перехода, срабатывающего немедленно, при выполнении условия или происхождения заданного условия.

-успешного выполнения команды окончания работы потока waitEvent () или

waitForMessage().

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

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

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

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

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

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

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

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

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

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

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

Классы вероятностных распределений находятся в пакете com. xj . random. Все классы унаследованы от класса Distr. Они называются DistrExponential, DistrChi, DistrNormal и т.д. Класс Distr имеет только один абстрактный метод get(), возвра-щающий случайное значение, сгенерированное по этому закону распределения. Можно создать свое вероятностное распределение, для этого будет нужно создать свой класс распределения и унаследовать его от базового класса Distr.

Случайное значение можно получить двумя способами:

•создав экземпляр класса вероятностного распределения с требуемыми
значениями параметров, например:

Distr myDistr = new DistrExponential (0.3); и затем вызвав его метод myDistr. get ().

•вызвав статический метод sample (), имеющийся у каждого класса
вероятностного распределения, например:
DistrExponential.sample(0.3).
Варьирование параметров. AnyLogic позволяет оценить степень и характер влияния отдельных параметров на поведение модели. С помощью эксперимента для варьирования параметров модель будет автоматически запускаться заданное количество раз с варьирующимися значениями выбранных параметров. Изучить и сравнить поведение модели при разных значениях параметров можно с помощью диаграмм AnyLogic. Запуская несколько повторных прогонов модели с фиксиро-ванными значениями параметров, можно оценить влияние случайных факторов в стохастических моделях.

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

Более подробная информация по библиотеке Anylogic приведена в Приложении П9.

1   2   3   4   5   6   7   8   9   10


Учебный материал
© bib.convdocs.org
При копировании укажите ссылку.
обратиться к администрации