Среда Mesa для агент-ориентированного моделирования на базе Python
Среда Mesa для агент-ориентированного моделирования на базе Python
Аннотация
Код статьи
S207751800008176-2-1
Тип публикации
Статья
Статус публикации
Опубликовано
Авторы
Пигорев Дмитрий Павлович 
Должность: Научный сотрудник
Аффилиация: Центральный экономико-математический институт Российской академии наук
Адрес: Российская Федерация, Москва
Аннотация

 

Mesa - это лицензированная Apache среда разработки на агент-ориентированных моделей (или ABM) на языке Python. Она позволяет пользователям быстро создавать агент-ориентированные модели с использованием встроенных базовых компонентов (таких как пространственные сетки — spatial grids и планирование агентов — agent schedulers) или пользовательских реализаций; визуализировать их, используя интерфейс в окне браузера; и анализировать их результаты с помощью инструментов анализа данных Python. Целью разработки среды являлось желание авторов создать альтернативу для NetLogo, Repast или MASON на основе языка Python.

Ключевые слова
агент-ориентированное моделирование, имитационное моделирование, mesa, python
Классификатор
Получено
26.06.2021
Дата публикации
16.09.2021
Всего подписок
14
Всего просмотров
1299
Оценка читателей
0.0 (0 голосов)
Цитировать Скачать pdf
Доступ к дополнительным сервисам
Дополнительные сервисы только на эту статью
1 Mesa — это лицензированная Apache среда разработки агент-ориентированных моделей на языке Python. Она позволяет пользователям быстро создавать агент-ориентированные модели с использованием встроенных базовых компонентов (таких как пространственные сетки — spatial grids и планирование агентов — agent schedulers) или пользовательских реализаций; визуализировать их, используя интерфейс в окне браузера; и анализировать их результаты с помощью инструментов анализа данных Python. Целью разработки среды являлось желание авторов создать альтернативу для NetLogo, Repast или MASON на основе языка Python. Реализация на языке Python является значительным преимуществом, так как позволяет применять популярные в научной среде библиотеки для работы с данными и облачными сервисами, такими как SciPy, scikit-learn для машинного обучения, Keras, TensorFlow. С другой стороны, учитывая, что язык Python исконно является высокоуровневым скриптовым языком в процессе усложнения моделей могут возникать вопросы, касающиеся оптимизации производительности разрабатываемых моделей. Для этих целей может послужить компиляция с последующей оптимизацией байт-кода1.
1. >>>>
2 Mesa имеет модульную архитектуру, это означает, что в Mesa представлены три типа модулей:
3
  • моделирование;
  • анализ;
  • визуализация
4 Аналитические модули Mesa. Не каждая модель нуждается в модулях этого типа, но они предоставляют полезные инструменты для получения данных из прогонов моделей для более систематического изучения.
5
  • Сборщики данных (data collectors) используются для записи данных каждого прогона модели
  • Пакетные запуски (batch runners) автоматизируют многократные прогоны и набор входных параметров - запуская модель с различными параметрами, чтобы увидеть, как они изменяют свое поведение.
6

Модули визуализацииMesa. Визуализация позволяет вам непосредственно наблюдать за прогонами моделей, наблюдать за динамикой, возникающей из них, и следить за тем, чтобы все шло так, как вы этого хотите. Mesa обрабатывает визуализации в окне браузера, используя JavaScript. Он предоставляет набор готовых компонентов, которые могут быть созданы для конкретной модели в Python и автоматически генерировать соответствующие объекты в окне браузера.

7 Также легко написать свои собственные компоненты обладая некоторыми базовыми знаниями JavaScript. Некоторые модули визуализации, которые мы здесь используем, включают:
8
  • Визуализация Решетки (Grid visualization)
  • Модуль отображения графиков (Chart display),
  • Сам модульный сервер (The Modular Server).
9 GitHub репозиторий Mesa2 включает некоторую коллекцию классических моделей (многие из которых можно найти среди моделей NetLogo / MASON). реализованных на базе среды Mesa:
2. >>>>
10
  • bank_reservesМодель высокого уровня абстракции, упрощенная модель экономики, в которой только один тип агента и один банк представляют все банки в экономике.
  • color_patchesМодель клеточного автомата, в которой на мнения агентов влияет мнение их соседей. По мере развития модели цветовые пятна, представляющие преобладающее мнение в данной области, расширяются, сжимаются, а иногда и исчезают.
  • conways_game_of_lifeРеализация игры жизни Конвея (Conway), клеточного автомата, в котором простые правила могут создавать сложные шаблоны.
  • epstein_civil_violenceМодель Джошуа Эпштейна (Joshua Epstein) представялющее то, как децентрализованное восстание может быть подавлено или же может достигнуть критической массы поддержки.
  • boid_flockersМодель стаи птиц, демонстрирующая поведение агентов, движущихся в непрерывном пространстве по векторам направления.
  • forest_fireПростые клеточные автоматы пожара, распространяющиеся по лесу ячеек на сетке, основанные на модели NetLogo Fire.
  • hex_snowflakeИгра жизни Конвея на гексагональной сетке.
  • pd_gridМодель Дилеммы Заключенного на основе сетки, демонстрирующая, как простое подражание может привести к обширному сотрудничеству и как модельный режим активации может изменить его результат. Реализация классической модели сегрегации Шеллинга на базе Mesa.
  • boltzmann_wealth_modelЗаконченный код, который предлагается вместе с руководством по созданию простой модели того, как простой набор правил приводит к возникновению неравномерного распределения богатства.
  • wolf_sheepРеализация экологической модели хищничества и размножения на основе модели NetLogo Wolf Sheep Predation.
  • sugarscape_cgВнедрение модели постоянного роста Sugarscape 2 на основе модели Netlogo Sugarscape 2.
  • virus_on_networkЭта модель основана на модели NetLogo «Вирус в сети».
11 Платформа Mesa представляет интерес для разработчиков агент-ориентированных моделей, в том числе для моделирования социально-экономических систем. Однако, для целей построения геопространственных моделей могут потребоваться дополнительные модули-расширения, такие как Mesa-geo3. Безусловным преимуществом является полная открытость среды к доработкам и кастомизации в соответствии с потребностями создаваемых моделей.
3. >>>>
12

Установка и запуск. Для быстрого запуска и начала работы с Mesa фреймворк может быть установлен с использованием установщика Python пакетов pip (при условии, что сам Python у вас уже установлен):

13 $ pip install mesa
14 Так же существует возможность скачать дистрибутив из GitHub:
15 $ pip install -e git+https://github.com/projectmesa/mesa#egg=mesa
16 Для целей экспериментов с инструментарием автором статьи был создан Docker-контейнер в ОС Windows. Дистрибутив платформы для контейнеризации Docker можно скачать на официальном сайте4. Далее следуя инструкции5 Mesa framework по развертыванию Mesa в Docker-контейнере это может быть выполнено с использованием Docker composer, установив который необходимо исполнить следующий перечень команд:
4. >>>>

5. >>>>
17 $ docker-compose build --pull ... $ docker-compose up -d dev # start the docker container
18 $ docker-compose exec dev bash # enter the docker container that has your current version of Mesa installed at /opt/mesa
19 $ mesa runserver examples/schelling # or any other example model in examples
20 Файл Docker-compose выполняет две важные задачи:
21
  • Он связывает порт 8521 Docker контейнера с портом 8521 вашей хост-системы, чтобы вы могли взаимодействовать с работающей моделью как обычно, по адресу localhost: 8521 в своем браузере.
  • Он монтирует корневой каталог mesa (относительно файла docker-compose.yml) в / opt / mesa и запускает pip install -e в этом каталоге, чтобы ваши изменения в mesa отражались в работающем контейнере.
22 Если вы являетесь разработчиком модели и хотите запустить Mesa (при условии, что вы в настоящее время находитесь в корневом каталоге модели с файлом run.py) вам необходимо выполнить следующую команду в консоли Вашего docker контейнера:
23 $ docker run --rm -it -p127.0.0.1:8521:8521 -v${PWD}:/code comses/mesa:dev mesa runserver /code
24

Справка и дополнительная информация. Для получения большей информации рекомендуется использование официальной документации на веб-сайте фреймворка Mesa:

  • Введение (http://mesa.readthedocs.org/en/master/tutorials/intro_tutorial.html)
  • Документация ( >>>> )
  • Форум ( >>>> )
  • PyPi (https://pypi.python.org/pypi/Mesa/)
25 Для ознакомления с примерами использования фреймворка для целей агент-ориентированного моделирования на веб-сайте представлена коллекция демонстрационных моделей: >>>> .

Библиография

1. Акопов А.С. Имитационное моделирование. Учебник и практикум для академического бакалавриата. М.: Юрайт, 2015.

2. Емельянов, А. А. Имитационное моделирование экономических процессов. М.: Финансы и статистика, 2009

3. Лычкина, Н.Н. Имитационное моделирование экономических процессов. Инфра-М, 2012 г.

4. Макаров В.Л., Бахтизин А.Р., Сушко Е.Д Агент-ориентированные модели как инструмент апробации управленческих решений. – М.: Управленческое консультирование, 2016.

5. Макаров В.Л., Бахтизин А.Р. Социальное моделирование – новый компьютерный прорыв (агент-ориентированные модели) – М.: Экономика, 2013.

Комментарии

Сообщения не найдены

Написать отзыв
Перевести