projectmesa/mesa: v3.1.3
Authors/Creators
- Jackie Kazil
- rht
- David Masad
- Ewout ter Hoeven
- Corvince
- Tom Pike
- Jan Kwakkel1
- Adriano Meligrana
- Taylor Mutch2
- Cauê Mello
- Dustin J. Mitchell3
- FredInChina
- lowcloudnine4
- Sebastiano Ferraris
- Animesh Rawat
- Drewrey Lupton
- Wang Boyu5
- James Arruda
- Matt Davis6
- Nathan Vērzemnieks
- Rebecca Sutton Koeser7
- Gene Callahan
- Joe Dight
- ihopethiswillfi
- FastFourier
- jess010
- Steven MacLeod
- 1. Delft University of Technology
- 2. Unity Technologies
- 3. Google (all opinions are my own)
- 4. Open Systems Technologies Corporation
- 5. University at Buffalo
- 6. @populus-ai
- 7. @Princeton-CDH
Description
Highlights
Mesa 3.1.3 introduces a major experimental reimplementation of Mesa's continuous space, providing an intuitive agent-centric API and significant performance improvements. The new implementation supports n-dimensional spaces and offers streamlined methods for agent movement and neighbor calculations.
New Continuous Space Features
- Agent-centric movement API similar to cell spaces
- Efficient neighbor calculations and position updates
- Support for n-dimensional spaces
- Improved memory management with dynamic array resizing
Here's a quick look at the new API:
# Create a 2D continuous space
space = ContinuousSpace(
dimensions=[[0, 1], [0, 1]],
torus=True,
random=model.random
)
# Create and position an agent
agent = ContinuousSpaceAgent(space, model)
agent.position = [0.5, 0.5]
# Move agent using vector arithmetic
agent.position += [0.1, 0.1]
# Get neighbors within radius
neighbors, distances = agent.get_neighbors_in_radius(radius=0.2)
# Find k nearest neighbors
nearest, distances = agent.get_nearest_neighbors(k=5)
The new implementation particularly benefits models requiring frequent position updates and neighbor queries, such as flocking simulations or particle systems. See PR #2584 and the API documentation for more details. We would love to get feedback on the new Continuous Space in #2611.
Other improvements in this release include consistent visualization behavior across space types with the reimplementation of draw_voronoi #2608, and a new render interval slider for controlling visualization update frequency in SolaraViz, which helps improve performance when working with complex visualizations #2596. We've also fixed a bug affecting random number generation determinism when using Model(seed=something), ensuring both model.random and model.rng now behave consistently when seeded with the same initial value #2598.
What's Changed
🧪 Experimental features
- Reimplementation of Continuous Space by @quaquel in https://github.com/projectmesa/mesa/pull/2584
🛠 Enhancements made
- reimplementation of draw_voroinoi by @quaquel in https://github.com/projectmesa/mesa/pull/2608
- Add render interval slider to control visualization update frequency by @HMNS19 in https://github.com/projectmesa/mesa/pull/2596
🐛 Bugs fixed
- Bugfix for non deterministic rng behavior by @quaquel in https://github.com/projectmesa/mesa/pull/2598
🔍 Examples updated
- Clarify ContinuousSpace.get_neighbors behavior with multiple agents at same position by @quaquel in https://github.com/projectmesa/mesa/pull/2599
New Contributors
- @HMNS19 made their first contribution in https://github.com/projectmesa/mesa/pull/2596
Full Changelog: https://github.com/projectmesa/mesa/compare/v3.1.2...v3.1.3
Files
projectmesa/mesa-v3.1.3.zip
Files
(2.6 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:730320dc493286dd3b21a5da47bbccfa
|
2.6 MB | Preview Download |
Additional details
Related works
- Is supplement to
- Software: https://github.com/projectmesa/mesa/tree/v3.1.3 (URL)
Software
- Repository URL
- https://github.com/projectmesa/mesa