Меню
Главная
Авторизация/Регистрация
 
Главная arrow Информатика arrow ИМИТАЦИОННОЕ МОДЕЛИРОВАНИЕ
Посмотреть оригинал

ИМИТАЦИОННОЕ МОДЕЛИРОВАНИЕ В СИСТЕМЕ ANYLOGIC

Введение в систему имитационного моделирования AnyLogic

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

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

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

Важным преимуществом системы AnyLogic является крос- сплатформенность, так как она написана на языке программирования Java. Среда разработки и модели функционируют под операционными системами Windows, Mac OS и Linux.

Возможны различные варианты развертывания моделей:

  • • в виде/яш-апплетов;
  • • как отдельное Уяш-ириложение, полностью независимое от среды разработки.

Подробное описание функций системы AnyLogic имеется в книге [9]. В ней рассмотрены вопросы реализации различных подходов имитационного моделирования в системе AnyLogic, а также представлены примеры некоторых имитационных моделей (например, динамика развития города, модели коллективного поведения, логистика и транспорт и др.). Тем не менее весьма актуально более подробное рассмотрение некоторых вопросов, касающихся:

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

щем;

  • • разработки/яш-апплетов на систему AnyLogic;
  • • разработки собственных вычислительных процедур и проведение нестандартных численных экспериментов;
  • • интеграции моделей системы AnyLogic с внешними приложениями Java.

В настоящее время демонстрационная версия системы имитационного моделирования AnyLogic доступна на сайте www. AnyLogic. ru/downloads.

В основе системы AnyLogic является использование объектно- ориентированного языка Java. Это обуславливает принципы создания, отладки и развертывания имитационных моделей.

При разработке новых моделей пользователь имеет возможность выбора — использовать определенный шаблон модели (системная динамика, дискретно-событийное моделирование, моделирование транспортных сетей и др.) либо создать модели «с нуля». Для этого достаточно в меню «Файл» выбрать «Создать — Модель» (рис. 8.1).

Создание новой модели в системе AnyLogic

Рис. 8.1. Создание новой модели в системе AnyLogic

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

различных методов имитационного моделирования в системе Any Logic, так как при этом автоматически создается простейшая модель со всеми необходимыми базовыми объектами. Новые элементы модели (например, переменные) можно добавлять из палитры инструментов (рис. 8.2).

Палитра инструментов в системе Any Logic

Рис. 8.2. Палитра инструментов в системе Any Logic

Любой проект системы AnyLogic имеет по умолчанию основной класс Main, который обеспечивает среду реализации модели. Также можно добавлять к проекту собственные классы Java, например «Класс активного объекта» и просто «Java класс». Это опция доступна из основного меню системы «Файл — Создать».

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

Активный объект является экземпляром класса активного объекта. Классы активного объекта создаются пользователем или

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

Следует отметить, что возможно добавление новых элементов (объектов) к различным классам активных объектов. Например, можно добавить (перетащив из палитры «Системная динамика» в рабочую область) параметр parameter и динамическую переменную flowAuxVar как в основной класс Main, так и в пользовательский класс активного объекта MyClass (рис. 8.3).

Добавление новых элементов модели к различным классам системы Any Logic

Рис. 83. Добавление новых элементов модели к различным классам системы Any Logic

Для обеспечения визуальной связи между любыми двумя элементами можно использовать «Соединитель» (рис. 8.4). При этом для фактической реализации подобной связи потребуется определить соответствующую функциональную зависимость на уровне переменных, например flowAuxVar = parameter * 1. В результате визуальная связь между параметром и переменной будет обеспечена автоматически.

Реализация функциональной зависимости между переменными

Рис. 8.4. Реализация функциональной зависимости между переменными

Аналогично обеспечивается взаимосвязь между системным уровнем (накопителем) и входными и выходными потоками. Для этой цели можно перенести в рабочую область накопитель (stock) и две динамические переменные flowAuxVarX и flowAuxVarl. Далее следует ввести следующую формулу расчета значения для накопителя:

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

В свою очередь значения потоков могут зависеть от значений других параметров, динамических переменных или накопителей (рис. 8.5).

| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-f-|

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

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

Для визуализации динамики значений переменных модели можно использовать объект типа «Временной график», доступный на вкладке «Статистика» палитры (см. рис. 8.2). При этом на одном графике можно вывести значения нескольких показателей. Для этого требуется несколько раз «Добавить элемент данных» в основных свойствах временного графика и ввести в качестве значения имя показателя, динамику которого нужно отобразить на графике, например stock и stock! (рис. 8.6).

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

Достаточно мощным инструментом моделирования в системе AnyLogic является использование элементов типа «Функция» и «Табличная функция», доступных на вкладке «Основная» палитры.

Визуализация динамики показателей на объекте «Временной график»

Рис. 8.6. Визуализация динамики показателей на объекте «Временной график»

В частности, с помощью элемента типа «Функция» можно реализовать практически любую вычислительную процедуру с использованием всех функциональных возможностей языка Java. Функция может иметь некоторый набор входных параметров, в качестве значений которых, как правило, выступают переменные модели.

Например, следующая функция вычисляет наибольшее значение из трех динамических переменных flowAuxVar, flowAuxVari, JlowAuxVar2:

double myFunction(double xl, double x2, double x3) {

double max_x=-10000000;

if(xl>=x2 && xl >=x3)

maxx = xl;

if(x2>=xl && x2 >=x3)

max_x = x2;

if(x3>=xl && x3 >=x2)

max_x = x3;

return max_x;

}

Отметим, что в поле «Код» функции ту Function необходимо прописать только тело функции (рис. 8.7).

Соответственно для вызова такой функции можно создать дополнительную динамическую переменную у со следующей формулой:

у = myFunction(flovAuxVar, flowAuxVarl, flowAuxVar2)

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

Puc. 8.7. Программирование обычной функции в системе Any Logic

В результате будет вычислено максимальное значение среди трех входных переменных.

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

Рассмотрим простой пример формирования значений динамической переменной на основе данных табличной функции tableFunction. Прежде всего необходимо добавить табличную функцию к модели (вкладка «Основные» палитры) и заполнить поля «Аргумент» и «Значение». Пусть в качестве аргумента выступает модельное время ?=1,2,..., 8 (рис. 8.8).

В этом случае для формирования значений динамической переменной на основе данных табличной функции tableFunction можно использовать следующий синтаксис:

AowAuxVar3 = tableFunction(time()),

где tableFunction — имя табличной функции; time() — функция, возвращающая значение модельного времени.

Использование табличной функции

Рис. 8.8. Использование табличной функции

 
Посмотреть оригинал
Если Вы заметили ошибку в тексте выделите слово и нажмите Shift + Enter
< Предыдущая   СОДЕРЖАНИЕ   Следующая >
 

Популярные страницы