| Name | Modified | Size | Downloads / 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
New features
This new version brings two powerful, but both experimental features:
- 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, passcontainer = StructVectortoStandardABMorEventQueueABMconstructors, as well as use the helper constructSoAType{A}for dispatch purposes instead of your agent typeA(read the docstring ofSoAType). - 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:
- All deprecations existing in Agents.jl v6 have been removed. Use version v6.2 if you are not comfortable with this.
- All plotting related source code has been completely overhauled.
- Main reason was the difficulty of maintaining the previous version which was relying on advanced Makie.jl features and was also significantly over-engineered.
- 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. - All plotting-related deprecations have been removed. Incorrect code will now error.
- The dev-user-facing interface for how to extend plotting for a new space has also been reworked. It is dramatically simplified.
- The function
check_space_visualization_APIhas been removed. Instead, well structured developer docs exist. - The
OpenStreetMapSpaceis now not available immediately afterusing Agents. - It is now a package extension. You need to be doing
using LightOSMto access it. - The submodule
OSMstill exists to enable as much backwards compatibility as possible, soOSM.test_map()will work as usual afterusing LightOSM. - Additionally, now all functionality that is exclusive to OSM is behind the
OSMmodule, with the exception of the core typesOpenStreetMapSpace, OpenStreetMapPath, OSMAgent. Thus you must now doOSM.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 nowAgents.plan_route!is pathfinding, whileAgents.OSM.plan_route!is open street map route finding. - This change was done because
LightOSMhas been an abandoned package for a long time now. We need to limit its hold over normal Agents.jl usage. - 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.
- Function
download_osm_networkis no longer re-exported from LightOSM.jl. - At least making this current breaking change means that whatever the future solution for
OpenStreetMapSpaceis, it will be non breaking. - The functions
plan_route!, plan_best_route!, move_along_route!are no longer top-levelAgentsfunctions. You have to preface the with eitherOSM.orPathfinding.to use them in their respective submodule. Or dousing Agents.OSM/Agents.Pathfindingrespectively to bring the functions into scope. ByKindscheduler 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:
Point2f0not 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.jldoes 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)