There is a newer version of the record available.

Published January 11, 2025 | Version v3.1.3
Software Open

projectmesa/mesa: v3.1.3

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