-
Notifications
You must be signed in to change notification settings - Fork 5
Open‐Source ABM Packages
Christopher Lorton edited this page Feb 21, 2024
·
3 revisions
This page is intended to document a broad & shallow look at a lot of existing open-source ABMs, with the goal of simply ruling them in/out as worthy of a deeper investigation. Building from Clinton Collins' wiki page
Model | Language | Worth a deeper look? | Notes why/why not | Other notes |
---|---|---|---|---|
MESA | Python | below | ||
Agents.jl | Julia | |||
Gama | Java | Yes, so far -- very GIS/spatial. Though written in Java, can be run from Python or R | Java, Rich GUI, runs on Ubuntu. Still looking, especially at max agents and performance. | Another one with a declarative interface and rich GUI |
Pathogens.jl | Julia | No | Person-to-person transmission-network, no spatial metapopulations | |
epydemic | Python | No | Person-to-person transmission-network, no spatial metapopulations | |
metawards | Python | Yes-ish | Spatial metapopulation SEIR-type agent-based model. Multiple migration types, multiple demographic cohorts. | May be worth a second look, but probably more to see what they did for any ideas we might want to take. A quick look through docs and tutorials gives the impression that this is overall quite COVID-specific and that design decisions explicitly target modeling things like work closures, etc. |
epi-spot | Python | No | Compartmental modeling platform | |
summer | Python | |||
JADE | Java | |||
MASON | Java | |||
NetLogo | Scala/Java | So far | Seems to have deep penetration into Academia, and mature set of training materials, including textbooks and coursera | |
Repast | C++ | |||
Unity ABM Framework | C#/Unity | |||
June | Python | |||
FLAME GPU | C++/Python | @clorton | below |
- @clorton:
- Has
click
(command line package),matplotlib
(to be expected),networkx
,numpy
,pandas
, andtqdm
(the progress bar tool I have been using) as dependencies (among others). Also,ruff
(a Rust based linter) for development (among others). - "ticks" might be better than "timesteps" (shorter == more efficient).
- interesting "overlays" (my word) of spatial on the model and the different spatial components: Grid, HexGrid, NetworkGrid . Auxiliary tools to support these spatial models could be very useful in LASER.
-
PropertyLayer
construct for specifying node level (spatial) properties is interesting. - Reporting infrastructure - per agent, model level, and "other" is interesting.
-
StagedActivation
(i.e., thestep()
function for agents is not sufficient, need it broken down into stages) as a per tick update option. - Also have
DiscreteEventScheduler
which uses a priority queue. It appears that this is separate from the fixed tick update options. There may be a good argument for a hybrid tick scheduler model.
- Has
- Nvidia blog post
- FLAME GPU documentation
- Started investigation by cloning the example repository to here
- Currently waiting on availability of Nvidia hardware...
- Discussion board on GitHub