Download Latest Version v7.0.0 source code.tar.gz (11.5 MB)
Email in envelope

Get an email when there's a new version of Agents.jl

Home / v7.0.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-02-27 7.0 kB
v7.0.0 source code.tar.gz 2026-02-27 11.5 MB
v7.0.0 source code.zip 2026-02-27 11.5 MB
Totals: 3 Items   23.0 MB 0

Agents v7.0.0

Diff since v6.2.10

New features

This new version brings two powerful, but both experimental features:

  1. Allowing the agent container to be based on StructVectors, using a Struct-of-Arrays internal layout. Currently it only supports single agent types. To use this, pass container = StructVector to StandardABM or EventQueueABM constructors, as well as use the helper construct SoAType{A} for dispatch purposes instead of your agent type A (read the docstring of SoAType).
  2. Native integration of ABMs with Reinforcement Learning is now provided by the new model type ReinforcementLearningABM. To learn how to use this functionality checkout the new tutorial on the Boltzmann Wealth Model with Reinforcement Learning.

These two features are labelled experimental because they did not yet undergo extensive testing by a broader pool of users. As versions progress and bug reports come in, and get solved, the features will mature to fully stable.

The experimental status allows us as developers to make breaking changes, if need be, to either feature, in order to fully stabilize them.

Breaking changes

This new version also brings some breaking changes that we believe will not affect typical usage of Agents.jl:

  1. All deprecations existing in Agents.jl v6 have been removed. Use version v6.2 if you are not comfortable with this.
  2. All plotting related source code has been completely overhauled.
  3. Main reason was the difficulty of maintaining the previous version which was relying on advanced Makie.jl features and was also significantly over-engineered.
  4. Data inspection is currently unavailable, and we welcome PRs to enable again data inspection in the new plotting code which plots directly on Axis/Axis3.
  5. All plotting-related deprecations have been removed. Incorrect code will now error.
  6. The dev-user-facing interface for how to extend plotting for a new space has also been reworked. It is dramatically simplified.
  7. The function check_space_visualization_API has been removed. Instead, well structured developer docs exist.
  8. The OpenStreetMapSpace is now not available immediately after using Agents.
  9. It is now a package extension. You need to be doing using LightOSM to access it.
  10. The submodule OSM still exists to enable as much backwards compatibility as possible, so OSM.test_map() will work as usual after using LightOSM.
  11. Additionally, now all functionality that is exclusive to OSM is behind the OSM module, with the exception of the core types OpenStreetMapSpace, OpenStreetMapPath, OSMAgent. Thus you must now do OSM.is_stationary, OSM.plan_route!, etc. Route-planning shared the same API with A-star pathfinding, but this is no longer possible due to package extensions. So now Agents.plan_route! is pathfinding, while Agents.OSM.plan_route! is open street map route finding.
  12. This change was done because LightOSM has been an abandoned package for a long time now. We need to limit its hold over normal Agents.jl usage.
  13. We are currently debating amongst options to counteract this problem, such as porting the LightOSM.jl source code directly into Agents.jl, or forking the project and registering it under a new name, or trying to get ownership of the project.
  14. Function download_osm_network is no longer re-exported from LightOSM.jl.
  15. At least making this current breaking change means that whatever the future solution for OpenStreetMapSpace is, it will be non breaking.
  16. The functions plan_route!, plan_best_route!, move_along_route! are no longer top-level Agents functions. You have to preface the with either OSM. or Pathfinding. to use them in their respective submodule. Or do using Agents.OSM/Agents.Pathfinding respectively to bring the functions into scope.
  17. ByKind scheduler removed, which should have happened already in v6.1, but was forgotten.

Merged pull requests:

  • Subsitute deleteat! with swap and pop method (#745) (@ameligrana)
  • Support StructVector as a container (Issue 1146) (#1153) (@bergio13)
  • CompatHelper: bump compat for OSMMakie in [weakdeps] to 0.1, (keep existing compat) (#1158) (@github-actions[bot])
  • Improve performance of nearby_positions for GridSpaces (#1160) (@ameligrana)
  • Improve performance of nearby_ids for GridSpaceSingle (#1161) (@ameligrana)
  • Addressing issues of PR 1153 (#1163) (@bergio13)
  • Fix string allocation in model_abstract.jl (#1165) (@elisadonati23)
  • CompatHelper: bump compat for Makie in [weakdeps] to 0.24, (keep existing compat) (#1167) (@github-actions[bot])
  • CompatHelper: bump compat for GraphMakie in [weakdeps] to 0.6, (keep existing compat) (#1169) (@github-actions[bot])
  • GSoC: Integration of Agents.jl with RL methods (#1170) (@bergio13)
  • CompatHelper: bump compat for DataStructures to 0.19, (keep existing compat) (#1171) (@github-actions[bot])
  • CompatHelper: bump compat for StreamSampling to 0.7, (keep existing compat) (#1172) (@github-actions[bot])
  • Bump actions/checkout from 4 to 5 (#1173) (@dependabot[bot])
  • CompatHelper: bump compat for JLD2 to 0.6, (keep existing compat) (#1176) (@github-actions[bot])
  • Add getid function to retrieve the id of the agent (#1181) (@ameligrana)
  • Handle nonexistent node position in graph visualization (#1187) (@jmaspons)
  • Bump actions/checkout from 5 to 6 (#1189) (@dependabot[bot])
  • Add chebyshev_distance utility function (#1190) (@jordiplam)
  • Bump actions/cache from 4 to 5 (#1192) (@dependabot[bot])
  • Bump styfle/cancel-workflow-action from 0.12.1 to 0.13.0 (#1194) (@dependabot[bot])
  • Move to v7 (#1198) (@Datseris)
  • Apply Runic formatter (#1199) (@Datseris)
  • Making sure all builds for v7 (#1200) (@Datseris)

Closed issues:

  • Consider StructArrays for internal handling of agent dict (#396)
  • Check performance of multi-agent models for dynamic dispatch (#445)
  • Multi-Agent RL (#648)
  • Add a .JuliaFormatter.toml file for contributers to unify repo style (#722)
  • Multi Agent model implementation proposal (#841)
  • Test suite sometimes does not pass in PRs (#963)
  • Add label to colorbar when used in abmplot (#1124)
  • Big performance problem in model_abstract.jl: string allocations in setproperty (#1164)
  • nested task error: UndefVarError: Point2f0 not defined in `AgentsVisualizations (#1168)
  • Change function name Agents.genocide! and Agents.kill_agent! (#1174)
  • OpenStreetMaps example of zombie outbreak not running (#1178)
  • Ultimate container for agents (#1179)
  • Agents.jl does not precompile with Julia 1.12.0 (Linux) (#1182)
  • Errors on interactive graph plots when hovering the graph outside nodes (#1186)
  • Some updates to the documentation (#1188)
  • Error in ambplot() with Makie v0.24.8 (#1191)
  • Overhaul/refactoring/simplification of the plotting code is necessary (#1195)
  • Wrong tooltips in interactive plot for graph space (#1196)
Source: README.md, updated 2026-02-27