4 ms·
> NetLogo is a multi-agent programmable modeling environment. What does that even mean? That description fits nearly every commonly used programming language a
by zeptomu 8y ago
> NetLogo is a multi-agent programmable modeling environment.
What does that even mean? That description fits nearly every commonly used programming language and runtime.
- Jtsummers 8y agoIt's about the environment. Everything in NetLogo could be done in straight assembly, that doesn't mean it's accessible to a wider audience. A large chunk of the motivation for NetLogo is pedagogical: make simulations and modeling accessible to students so they can explore (dynamically, not just statically) different concepts.
- xtracto 8y agoExactly... for non-developer students (social sciences), even doing a model in NetLogo is a big challenge. Still, with the right tools, they can do amazing things.
- reuven 8y agoMost programming languages don't use the multi-agent paradigm. It's a different way of thinking about problems, in which you describe how each type of agent should interact with others, and then you let them run and play out the scenario. It's true that you can implement multi-agent programming in other languages, but it's very natural and clear in NetLogo. PS: I did my PhD in the group that produces NetLogo, and continue to be blown away from the language and what you can do with it, even though I don't use it on a daily basis any more.
- veddox 8y agoI am in a research group that does ecological modelling, so I've heard a fair bit about NetLogo, though I haven't used it myself. I quite like its approach - like you say, it's a very natural way to do agent-based modelling. I also think its a good beginners' language for modellers who know their field (e.g. ecology) but haven't yet learnt how to program. Lastly, I like it's GUI integration. However, I am somewhat put off by its verbose "toy language" syntax; and I really can't afford its performance. (We are currently working on a model in Julia, and even that can take up to several weeks to compute a single run on our HPC...) So I guess my opinion is that its a fantastic language to learn about modelling, but not well suited to constructing large, complex and resource-intensive models.
- TuringTest 8y agoIs there a language you would recommend as the next step for someone who has learned NetLogo? One with better syntax and performance? Maybe a Julia library?
- veddox 8y agoWe use Julia in our group and I really like it: the language design is pretty neat and it offers a very good performance. I don't know of any libraries targeted specifically at agent-based modelling, though. (But in the end, as an experienced programmer you don't really need that - plain object-orientation is enough.)
- reuven 8y agoI would argue that for certain kinds of problems, agent-based modeling is easier to think about and work with than object-oriented programming. It's not a matter of your programming experience, but rather what you're trying to model and how. I've heard great things about Julia, but haven't ever used it. Yet another thing that's on my list...
- sashaafm 8y agoWould you mind explaining the difference and comparing with the Actor Model paradigm?
- reuven 8y agoI don't know much about the actor model. One of these days, I should look into it more. It's possible that there's a large overlap. The basic idea in agent-based modeling is that you have a bunch of different types of objects, which we'll call "agents." Each agent has its own independent state, which typically includes location and one or more other variables. So far, that sounds like regular ol' object-oriented programming. However, there are some differences. First, you have all agents of one type act at the same time, at the tick of a clock. You can then say, "Hey! All doctors! Move in the direction of the closest sick patient." You can similarly say, "Hey! All patients! If there's a doctor next to you, then you have a 30% chance of being cured." Then you create a population of doctors and patients, randomly infect some proportion of the patients, and run the model. The code for what I've just described is very short and very readable. And it does away with the need for loops. You basically describe the action that a class of agent will take at any given moment, and then tell the agents to perform one or more actions. Again, it makes much of the programming simple and easy to understand. And yet, you can write pretty complex models in this way. For example, I implemented the Autumn model ( http://ccl.northwestern.edu/netlogo/models/Autumn http://ccl.northwestern.edu/netlogo/models/Autumn ) for NetLogo (because my eldest child was asking why leaves change color when we lived in Chicago). So I created a model in which each leaf has some randomly set values for each of the chemicals that affect color change. Then I let the user adjust the temperature and rainfall. The leaves changed colors as a result. It didn't take me much time to implement, and turned out to be a great learning tool. Agent-based modeling isn't great for everything, but it's great for many things -- especially for modeling complex systems.