Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update to v5.18 #839

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
# main

- The `@agent` macro now supports fields with default and const values (through the special `constants` field). Since now the macro supports these features, using `@agent` is the only supported way to create agent types for Agents.jl.
# v5.18

- The `@agent` macro now supports fields with default values
- The `@agent` macro now supports fields with constant values (through the special `constants` field).
- Since now the macro supports these features, **using `@agent` is the only supported way to create agent types for Agents.jl**.
- The `add_agent!` function supports adding an agent propagating keywords arguments.

# v5.17

- New function `replicate!` allows to create a new instance of a given agent at the same position with the possibility to specify some
fields with new values.
- The `sample!` function is 3x faster than before.

# v5.16

- New function `offline_run!` allows writing data to file at predefined intervals during `run!` instead of storing it in memory. Currently supports [CSV](https://csv.juliadata.org/stable/) and [Arrow](https://apache.github.io/arrow-julia/stable/) files.
Expand Down
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name = "Agents"
uuid = "46ada45e-f475-11e8-01d0-f70cc89e6671"
authors = ["George Datseris", "Tim DuBois", "Aayush Sabharwal", "Ali Vahdati", "Adriano Meligrana"]
version = "5.17.1"
version = "5.18.0"

[deps]
CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b"
Expand Down
24 changes: 6 additions & 18 deletions docs/src/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,10 @@ using CairoMakie, Agents
If you have found this package useful, please consider starring it on [GitHub](https://github.com/JuliaDynamics/Agents.jl).
This gives us an accurate lower bound of the (satisfied) user count.

!!! tip "Latest news: Agents.jl v5.15"
- Agents.jl moved to Julia 1.9+, and now exports visualization
and interactive applications automatically once Makie (or Makie backends
such as GLMakie) come into scope, using the new package extension system.
The only downside of this is that now to visualize ABMs on open street
maps, the package OSMMakie.jl must be explicitly loaded as well.
InteractiveDynamics.jl is now obsolete.
- Overall big performance increase in the following functionality: random walks, random nearby agents, nearby agent searches.
- DEI-motivated name change for all names that remove agents:
- `genocide! -> remove_all!`
- `kill_agent! -> remove_agent!`
- `UnkillableABM -> UnremovableABM`
- Several new API functions and functionality increase: `random_nearby_position, empty_nearby_position, randomwalk!, random_agent`.
- We have created an objective, fully automated, extensive framework for comparing open source agent based modelling software. It shows that Agents.jl is much faster than competing alternatives (MASON, NetLogo, Mesa). It also shows that models implemented in Agents.jl have significantly smaller and simpler code than MASON or NetLogo. The repository is here: <https://github.com/JuliaDynamics/ABM_Framework_Comparisons>
!!! tip "Latest news: Agents.jl v5.18"
- The `@agent` macro now supports fields with default values
- The `@agent` macro now supports fields with constant values (through the special `constants` field).
- Since now the macro supports these features, **using `@agent` is the only supported way to create agent types for Agents.jl**.


## Highlights
Expand All @@ -32,11 +22,10 @@ using CairoMakie, Agents

* Free and open source.
* Small learning curve due to intuitive design based on a modular space-agnostic function-based modelling implementation.
* Extremely high performance when compared to other open source frameworks, routinely being 100x faster versus other ABM frameworks ([proof](https://github.com/JuliaDynamics/ABM_Framework_Comparisons))
* User-created models typically have much smaller source code versus implementations in other open source ABM frameworks ([proof](https://github.com/JuliaDynamics/ABM_Framework_Comparisons))
* Extremely high performance, sometimes being up to 100x faster versus other ABM frameworks ([proof](https://github.com/JuliaDynamics/ABM_Framework_Comparisons))
* User-created models have source code of minimal complexity, typically with much less lines of code (and more readable code) versus other ABM frameworks ([proof](https://github.com/JuliaDynamics/ABM_Framework_Comparisons))
* High quality, extensive documentation featuring tutorials, example ABM implementations, an [extra zoo of ABM examples](https://juliadynamics.github.io/AgentsExampleZoo.jl/dev/), and integration examples with other Julia packages


```@raw html
<video width="auto" controls autoplay loop>
<source src="https://raw.githubusercontent.com/JuliaDynamics/JuliaDynamics/master/videos/agents/showcase.mp4?raw=true" type="video/mp4">
Expand Down Expand Up @@ -93,7 +82,6 @@ Agents.jl was designed with the following philosophy in mind:

**Simple to learn and use, yet extendable and highly performant, allowing for fast and scalable model creation and evolution.**


There are multiple examples that highlight this core design principle, that one will quickly encounter when scanning through our [API](@ref) page. Here we just give two quick examples: first, there exists a universal function [`nearby_agents`](@ref), which returns the agents nearby a given agent and within a given "radius". What is special for this function, which is allowed by Julia's Multiple Dispatch, is that `nearby_agents` will work for any space type the model has, reducing the learning curve of finding neighbors in ABMs made with Agents.jl. An even better example is perhaps our treatment of spaces. A user may create an entirely new kind of space (e.g. one representing a planet, or whatever else) by only extending 5 functions, as discussed in our [Creating a new space type](@ref) documentation.

Many other agent-based modeling frameworks have been constructed to ease the process of building and analyzing ABMs (see e.g. [here](http://dx.doi.org/10.1016/j.cosrev.2017.03.001) for an outdated review), spanning a varying degree of complexity.
Expand Down