Mesa Python platform for agent-based modelling
Table of contents
Share
QR
Metrics
Mesa Python platform for agent-based modelling
Annotation
PII
S207751800008176-2-1
Publication type
Article
Статус публикации
Published
Authors
Dmitry Pigorev 
Occupation: Researcher
Affiliation: Central Economics and Mathematics Institute of the Russian Academy of Sciences
Address: Russian Federation, Moscow
Abstract
Mesa is a licensed by Apache development environment for agent-based models (or ABM) in Python. It allows users to create agent-based models using built-in basic components (such as spatial and agent schedulers) or custom implementations; visualize them using the interface in a web browser; and analyze their results using Python data analysis tools. The purpose of the development of the environment was the desire of the authors to create an alternative for NetLogo, Repast or MASON based on the Python language.
Keywords
agent based modelling, mesa, python, abm, imitation modelling
Received
26.06.2021
Date of publication
16.09.2021
Number of purchasers
14
Views
1300
Readers community rating
0.0 (0 votes)
Cite Download pdf
Additional services access
Additional services for the article
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 Для ознакомления с примерами использования фреймворка для целей агент-ориентированного моделирования на веб-сайте представлена коллекция демонстрационных моделей: >>>> .

References

1. Akopov A.S. Imitatsionnoe modelirovanie. Uchebnik i praktikum dlya akademicheskogo bakalavriata. M.: Yurajt, 2015.

2. Emel'yanov, A. A. Imitatsionnoe modelirovanie ehkonomicheskikh protsessov. M.: Finansy i statistika, 2009

3. Lychkina, N.N. Imitatsionnoe modelirovanie ehkonomicheskikh protsessov. Infra-M, 2012 g.

4. Makarov V.L., Bakhtizin A.R., Sushko E.D Agent-orientirovannye modeli kak instrument aprobatsii upravlencheskikh reshenij. – M.: Upravlencheskoe konsul'tirovanie, 2016.

5. Makarov V.L., Bakhtizin A.R. Sotsial'noe modelirovanie – novyj komp'yuternyj proryv (agent-orientirovannye modeli) – M.: Ehkonomika, 2013.

Comments

No posts found

Write a review
Translate