Skip to content

v3.1.3

Latest
Compare
Choose a tag to compare
@EwoutH EwoutH released this 11 Jan 15:59
· 2 commits to main since this release
cfb1925

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

🛠 Enhancements made

  • reimplementation of draw_voroinoi by @quaquel in #2608
  • Add render interval slider to control visualization update frequency by @HMNS19 in #2596

🐛 Bugs fixed

🔍 Examples updated

  • Clarify ContinuousSpace.get_neighbors behavior with multiple agents at same position by @quaquel in #2599

New Contributors

Full Changelog: v3.1.2...v3.1.3