For a project we need to decide between NetLogo and RepastS.
We will model a network of institutions with people moving between them. People enter and exit these institutions that are implemented as black boxes. We see no problem using NetLogo for this. An extension of this project will have explicit implementations of institutions with interacting agents. These interactions occur at a different time scale than updates on the macro level (movement between institution).
1) Can NetLogo handle potentially millions of agents (moving between institutions and interacting inside them) and 2) can NetLogo handle agents that operate on different time scales and granularity?
The NetLogo environment enables exploration of emergent phenomena. It comes with an extensive models library including models in a variety of domains, such as economics, biology, physics, chemistry, psychology, system dynamics.
One of the reasons why NetLogo is so easy to learn is that it is very well documented. The user manual includes three tutorials to help beginners get started, an excellent programming guide, and a comprehensive dictionary with the definitions of all NetLogo primitives, including examples of how to use them.
Setting the view update to "on ticks" (once per time step) can speed up some models. Models that execute each tick very quickly can have their speed limited solely by the “frame rate” setting, which by default limits NetLogo to 30 ticks per second.
The NetLogo world is made up of agents. Agents are beings that can follow instructions. In NetLogo, there are four types of agents: turtles, patches, links, and the observer.
In both StarLogoT and NetLogo, commands are executed asynchronously; each turtle or patch does its list of commands as fast as it can.
What programming language was NetLogo written in? NetLogo is written mostly in Scala, with some parts in Java. (Scala code compiles to Java byte code and is fully interoperable with Java and other JVM languages.)
1) See NetLogo FAQ on how big models can be and how to increase it's memory capabilities.
Millions of agents is definitely possible, but far from common. I've heard of a lab that uses around 7 million agents in their simulation (running on a cluster).
On my laptop, after increasing the memory limit (see the FAQ), I was able to easily create several millions of agents and ask them to do trivial things. Each ask
at 3-4 million too about a 1-1.5 seconds.
2) Absolutely! Check out the LevelSpace extension (bundled with NetLogo) for this. It allows NetLogo models to open up and interact with other NetLogo models. So in your case, you'd create a model for within-institution interaction and then another model for the traveling between institutions that has a number of the institution models open that it adds agents to and removes agents from. Then, you can run the within-institution models at whatever scale you want relative to your main model.
Also, distributing the agents among models via LevelSpace should generally run a bit faster. LevelSpace will automatically parallelize operations when calling to multiple models.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With