SWAGES - расширяемая распределенная среда для крупномасштабного агент-ориентированного моделирования
08.06.2015

Ученые из Университета Тафтса (Медфорд, Массачусетс, США) представили пакет SWAGES – среду для разработки распределенных агент-ориентированных моделей с возможностью автоматического динамического распараллеливания программного кода. SWAGES представляет пользователям поддержку нескольких языков программирования, а также возможность подключения плагинов для визуализации, статистического анализа и автоматической обработки ошибок. Результаты вычислений могут быть сконвертированы в файлы для последующего использования в общедоступных средствах обработки данных (типа R или Scilab).

Краткий обзор SWAGES

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

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

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

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

В свою очередь компоненты клиентской части приложения обеспечивают возможность управления запуском определенной симуляции и получают информацию о ходе выполнения приложения (через соответствующий программный модуль SimWorld). SimWorld построен на базе среды SimAgent – специализированного программного обеспечения для разработки агентных моделей, которое создано с использованием кроссплатформенного компилятора Poplog со встроенным интерпретатором OPS5 (Official Production System, Version 5). SimWorld запускается как с использованием графического интерфейса, так и в режиме пакетной обработки и может быть использован для разработки агентных моделей любой степени сложности.

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

Так, симуляция S с n агентами может быть распределена по k параллельным процессам S1, S2,…, Sk с n1, n2,…, nk агентами, распределенными по k узлам, которые будут обновляться асинхронно. В рамках текущей реализации SimWorld, каждый процесс Si посылает информацию о состоянии обслуживаемых им агентах серверному приложению, которое хранит эти данные в рамках структуры, доступной всем остальным процессам данной симуляции. Экономия времени расчетов в зависимости от использования различного количества узлов для модели, имитирующей перемещение роя, видно на рис. 1. Результаты были получены на основе прогона 20 симуляций модели со 100 циклами в каждом случае на кластере под управлением Linux с двухъядерными процессорами Xeon (2.4GHz, 1GB RAM).


Swages1.JPG

Рис. 1. Среднее время реализации задачи по максимально быстрому поиску и перемещению агентов к ближайшей точке сбора в рамках агентной модели, имитирующей перемещение роя для 1, 2, 4, 8, 16 узлов


Как уже говорились, в SimWorld реализована поддержка внешних плагинов. К примеру, в качестве демонстрации возможностей авторы подключили к SimWorld открытый физический движок ODE (Open Dynamics Engine), который хорошо подходит для симуляции движущихся объектов в рамках неизменного пространства, и объектно-ориентированный графический движок OGRE (Object-Oriented Graphics Rendering Engine) – кроссплатформенный движок с удобным дизайном и архитектурой.

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

Swages2.JPG

Рис. 2. Пример отображения простых агентов-муравьев с помощью OGRE в простом двухмерном графическом интерфейсе SimWorld

Моделирование в SWAGES

Шаг. 1. Разработка агентной модели

Агенты могут быть описаны с использованием любого программного языка, поддерживаемого Poplog (к примеру, Pop11, Prolog, ML, Scheme, C-Lisp). Кроме того, для разработчика предусмотрена возможность вызова внешних функций, написанных на других языках программирования, посредством специального интерфейса.

В листинге 1 показан пример кода простого агента, который получает энергию, потребляя продукты питания. SimWorld позволяет модифицировать программный код во время работы приложения. К примеру, в процессе запуска симуляции, в коде, приведенном в листинге 1, можно заменить метод eating, реализующий определенное поведение пустым методом (для возможного изучения последствий отказа от еды), т.е. на такую строчку ’define :method eating(a:simple agent); enddefine’.

define :class thing; is sim_object; /* базовый класс */
slot geometry == undef;
slot position = undef;
slot heading = undef;
slot mass = undef;
enddefine;

define :class simple_agent; is thing; /* производный класс */
slot speed = 3;
slot energy = 1000;
slot maxenergy = 2000;
slot food = undef;
slot intake = 50;
enddefine;

define :ruleset eating_ruleset; /* правила для потребления */
RULE start_eating
[ingest food] [NOT halting_for eating]
==>
[do halting_for eating]
[do eating]
[STOP]
RULE end_eating
[NOT ingest food] [halting_for eating]
==>
[NOT halting_for eating]
[STOP]
RULE continue_eating
[ingest food] [halting_for eating]
==>
[do eating]
enddefine;

define: method eating(agent:simple_agent);
if energy(agent) >= maxenergy(agent) then
remove([halting_for eating]); /* агент насытился и перестал есть */
else /* добавление энергии агенту */
energy(agent) + intake(agent) -> energy(agent);
energy(food(agent)) - intake(agent)
-> energy(food(agent));
endif;
enddefine;

Листинг 1. Структура простого агента в SimWorld, реализованная с помощью языка Pop11, включающая базовый класс, производный класс и правила потребления.

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

Шаг. 2. Настройка и проведение экспериментов.

После построение агентной модели, можно настроить порядок проведения экспериментов. В листинге 2 приведен пример настройки параметров для проведения множественных экспериментов с целью выяснения живучести агентов. Как видно, определяется число агентов модели (количество объектов типа «AGENT»), объем еды (количество объектов типа «FOOD») и вероятность («PROB») появления объектов типа «FOOD» в случайном месте пространства размерности 1000×1000. Таким образом, в рамках трехмерного параметрического пространства настройки экспериментов AGENT×FOOD×PROB мы получим 10×20×10×40 = 80 000 уникальных экспериментов.


[[ /*** настройка среды моделирования ***/
[initfile ’reactive.p’] /* определения пользователя */
[quitif 10000] /* остановка после 10000 циклов */
[world WIDTH 1000 HEIGHT 1000]/* пространственные ограничения */
[ /*** настройка агентов ***/
[simple_agent /* использование данного объекта */
[startup [variate AGENT from 1 to 10 step 1]]
[record [at death [sim_x][sim_y]]
[at end [energy]]]
[food /* использование данного объекта */
[startup [variate FOOD from 10 to 200 step 10]]]]   
[ /*** расписание событий ***/
[random [[variate PROB from 0.1 to 0.5 step 0.05] [food]]]]
[ /*** настройка SWAGES ***/
[name ’simple’ ’resultsdir’] /* выбор места для хранения результатов */
[user ’airolab’] /* запуск это имени данного пользователя */
[priority 5] /* запуск с определенным приоритетом */
[parallelize] /* разрешить распараллеливание */
[ranseed 29187] /* начальные условия */
[replicates 40] /* для всех повторов */
[watch 120 30] /* контроль исполнения */
[email ’’] /* уведомить пользователя о выполнении */
[copyimages ’/tmp/’] /* место для хранения информации о симуляции */
[copystats ’statsdir’]]] /* место для хранения статистики */

Листинг 2. Настройка параметров для проведения экспериментов

Настройки экспериментов могут быть произведены через web-интерфейс пакета SWAGES (рис. 3.).

Swages3.JPG 
Рис. 3. Настройка расписания запуска набора экспериментов на нескольких узлах

Шаг 3. Анализ полученных результатов.

SWAGES содержит встроенные инструменты для статистического анализа, а также библиотеки для добычи данных (в различных форматах, включая HTML, TeX, простой текст). На рис.4 отображена типовая статистическая операция, проведенная через web-интерфейс SWAGE, а на рис. 5 выходной файл R и результаты динамических скриптов, выполненных в gnuplot и Scilab).

Swages4.JPG
Рис. 4. Выходные результирующие данные после эксперимента для одного агента A0 (слева) и сравнение сводных результатов для среднего числа выживших (справа).

Swages5.1.JPG5.1

Swages5.2.JPG5.2

Swages5.3.JPG5.3

Swages5.4.JPG5.4

Рис. 5. Выходной файл R (5.1). Сравнение двух видов агентов по показателям причин смертности (5.2) и динамика популяции агентов и ресурсов (5.3) – оба эти графика получены посредством gnuplot. Сравнение нескольких показателей двух видов агентов (зеленых и синих), реализованное с помощью Scilab (5.4).

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


rss
Назад

Статьи
Суперкомпьютерные технологии Демография Cуперкомпьютерные технологии Агент-ориентированные модели БРИКС METIS Высокопроизводительные вычисления Транспортные модели пешеходная модель МЁБИУС Монография Parallel computing Параллельные вычисления Биомедицина SWAGES Публикации Axum Microsoft Social Simulation Conference ГИС Междисциплинарное исследование Новости Революция Экономические процессы цунами CUDA POLARIS TSUBAME Методология запуска О проекте Социальная сеть Эксафлопная производительность Case HPS XAXIS Иерархическая платформа Механизм раделяемой памяти Пандемия Ссылки Эпидемия Repast Исследования Моделирование мира Пандора Стратегии распараллеливания Ядерная атака на США D-MASON Russian Supercomputing Days Агент-ориентированный подход Исторические процессы Моделирование эпидемий Суперкомпьютерная Академия автоматическое распараллеливание FuturICT GPU SEGMEnT Клеточные автоматы Модель экономики Евросоюза Пространственно-распределенные агентные модели Суперкомпьютерные дни агентная модель HPABM SSC Контакты Мониторинг планеты Пространственные модели большие данные