Highlights
Mesa 3.2.0 is a feature-packed release, which stabilizes our discrete space, improves many of our visualisation capabilities, improves our tutorial organization, adds the experimental meta-agents, and includes other quality of life enhancements.
We also celebrate the publication of our peer-reviewed Mesa 3 paper in JOSS. See the updated Citing Mesa section on how to cite us.
Stabilization of Discrete Space
The experimental Cell Space system has been stabilized and is now available as mesa.discrete_space
(#2610). This powerful spatial modeling framework enables cell-centric simulations with integrated PropertyLayers and improved agent movement capabilities. Key improvements include:
- Support for dynamic modifications to discrete spaces during simulation (#2755)
- Methods to add/remove cells and connections in real-time
- Full integration with PropertyLayers (#2440) for representing environmental variables
- Compatible with all examples and existing visualizations
The PropertyLayer itself has also been stabilized, allowing for efficient management of spatial environmental properties like terrain, resources, or any grid-based variables. Core examples including Schelling, Game of Life, Boltzmann Wealth, and Virus on Network have been updated to use the new discrete space system.
Enhanced Visualization Experience
The SolaraViz visualization system has received substantial upgrades:
- Command Console (#2697): An interactive Python console embedded directly in the visualization, allowing real-time model inspection and manipulation
- Asynchronous Updates (#2656): Visualization now runs in a separate thread, dramatically improving performance for complex models
- Dark Mode (#2689): Support for Solara Dark theme, automatically matching system preferences
- Improved Error Handling (#2747, #2753): Better visualization of errors with options to view detailed traceback information
- Enhanced UI: Arrow key navigation (#2725), movable input field with auto-scroll (#2710), and other quality-of-life improvements
- PropertyLayer visualisation in Altair (#2643): Support for visualising PropertyLayers using the Altair frontend in Solara.
Restructured and updated tutorial
Our introduction tutorial has been completely restructured (#2731). Instead of one huge notebook, the tutorial is now divided into smaller, focused modules that build progressively:
- Creating Your First Model: Essential basics to get started
- Adding Space: Learn how to use the new discrete space system
- Collecting Data: Effectively gather model statistics
- AgentSet: Master agent management techniques
- Visualization: Series of modules covering basic to advanced visualization
Introducing Meta-Agents
Complex systems often have multiple levels of components. An organization is not one entity, but is made of departments, sub-departments, and people. A person is not a single entity, but it is made of micro biomes, organs and cells. A city is not a single entity, but it is made of districts, neighborhoods, buildings, and people. A forest comprises an ecosystem of trees, plants, animals, and microorganisms.
This reality is the motivation for meta-agents. It allows users to represent these multiple levels, where each level can have meta-agents with constituting agents.
- Meta agents #2748
To demonstrate meta-agents capability there are two examples:
- Dynamic meta-agent creation - Alliance formation, which shows emergent meta-agent formation through a game theoretic based alliance formation.
- Deliberate meta-agent creation - Warehouse model, which provides a pseudo warehouse model to demonstrate meta-agent functionality.
Let us know what you think on our Matrix Channel
Other improvements
- AgentSet's
agg
method now supports multiple aggregation functions in a single call (#2743) - Many documentation improvements have been made based on feedback by our JOSS reviewers
What's Changed
🎉 New features added
- Stabilize experimental Cell Space as
mesa.discrete_space
by @quaquel in #2610 - Feat: Added Command Console by @Sahil-Chhoker in #2697
- Stabilize PropertyLayer by @EwoutH in #2440
🛠 Enhancements made
- Visualisation: Add dark mode by @sanika-n in #2689
- Creating threads to update visualization asynchronously by @HMNS19 in #2656
- Movable Input Field with auto-scroll by @Sahil-Chhoker in #2710
- Feat: Added arrow key navigation by @Sahil-Chhoker in #2725
- added property_layer with altair by @sanika-n in #2643
- Debug option for errors in visualisation by @colinfrisch in #2747
- Debug option for errors in visualisation front end by @colinfrisch in #2753
- Add support for dynamic discrete spaces by @quaquel in #2755
- Support multiple functions in AgentSet
agg
method by @EwoutH in #2743
🔍 Examples updated
- Move boltzmann to cell spaces by @quaquel in #2680
- Move Game of life to cell space by @quaquel in #2681
- Move Schelling to discrete space by @quaquel in #2684
- Move virus_on_a_network to discrete_space by @quaquel in #2688
- Update boid_flockers example include flight direction by @sanika-n in #2696
📜 Documentation improvements
- docs: Split off the overview page, extend with spaces/activation by @EwoutH in #2673
- docs: Add Roles section to CONTRIBUTING.md by @EwoutH in #2694
- [JOSS] Docs: Clarify difference between core and user examples by @EwoutH in #2706
- [JOSS] docs: Improve batch_run documentation for parallel processing by @EwoutH in #2707
- JOSS Tutorial Fixes by @tpike3 in #2708
- Clean-up old images, compress wolf-sheep image, remove version switch artifact by @EwoutH in #2717
- docs: Update citation to JOSS article by @EwoutH in #2740
- update intro tutorial discrete space by @tpike3 in #2731
- docs: fix broken links to Readthedocs in example descriptions by @reyan-singh in #2757
🧪 Experimental features
🐛 Bugs fixed
New Contributors
- @colinfrisch made their first contribution in #2747
- @reyan-singh made their first contribution in #2757
Full Changelog: v3.1.4...v3.2.0