Innovation/diffusion model in NetLogo - netlogo

I'm new to Netlogo and having difficulty grasping this problem.....
Say you have 5,000 agents and each agent has five domains, those domains are given a number based on the agents expertise. Agents max for all domains is 15 and if the agent has over 7.5 for any domain they are considered an expert.
There are two environments one is clustered by each domain, agents with the highest number with move into that domain area. Second environment mixed with an expert from each of the five domains collaborating with different domain experts.
This model is to represent cross functional collaboration for innovation in businesses.
I'm having difficulty wrapping my head around the equation or activity to represent collaboration between the agents.
Also, confused about how to represent their connections. I've looked at Team Assembly on Netlogo and think its similar to what I want to represent. I am not sure how to quickly set the random matrix up to define the agents expertise.
any thoughts or suggestions would be greatly appreciated:)
Thanks in advance for reading and considering your input.

Related

Duplicate a model #Anylogic

I'm working on a family practitioner model, my goal is to model the population of a city and all of the family practitioners in that given city by taking into account the distribution of the treatment time and the arrival schedule of patients etc... I've started with a basic model with two practitioners and a small population.
Basic Model
Now if im going to model all of the 10k practitioners by duplicating the same blocks its gonna be like undoable, the other solution is to add more units in the resourcepool which does not model the real situation because basicly every family practitioner have his own queue and increasing the resourcepool is like modelling 'n' family practitioner in the same clinic with the same shared queue of patients. Is there any other solution? (first time using anylogic so im basicly a newbie)
thanks
You need to change your model architecture fundamentally. Practitioners become a custom agent type, you create a population of them and provide a flow chart in that agent type. Then, you can have 10k of them each with their own flow chart.
Strongly recommend you do all the tutorials in the help first to get a better understanding of the capabilities of AnyLogic. Having some blocks on Main is really just 0.1% of what the tool is capable of :)

Traffic Flow regarding Anylogic

I'm an undergrad student in the Philippines and were currently using Anylogic Software for our thesis. May I ask how to put a chart/time plot that consists the traffic flow (vehicle per hour) so that we can justify that our study area is congested? Thank you and have a good day.
The are a number of options you can use but the simplest option is to count the total number of cars in the system.
For this simply add a Road Network Descriptor and select the road network you want it to represent
Then you add a time plot, and set the value that needs to be plotted as roadNetworkDescriptor.size() and set the update time to hour

Generic modeling of an energy supply chain with Anylogic

I have been working with Anylogic for about 6 months now and my goal is to model a generic energy supply chain for an energy demand (e.g. storm and heat for a house). As a result I want to evaluate how suitable the components in the energy supply chain are to meet the energy demand.
My idea would be to model the components (Ex. PV->Battery Storage->House) as agents. I would have modeled the energy flow in the agents with SD and individual events of the components (e.g. charging and discharging at the battery) via state diagrams.
Currently I have two problems:
Which possibilities are there to create a variable interconnection of my components (agents). For example, if I do not want to evaluate the scenario PV->Battery Storage->House, but PV->Electrolysis->Tank->Fuel Cell->House. My current approach would be to visually connect the agents with ports and connectors and then pass input and output variables for DS calculation via set and get functions. Are there other possibilities, e.g. to realize such a connection via an input Excel? I have seen a similar solution in the video: "How to Build a True Digital Twin with Self-Configuring Models Using the Material Handling Library" by Benjamin Schumann, but I am not sure if this approach can be applied to SD.
To evaluate the energy supply chain, I would like to add information to the energy flow, for example the type (electricity, heat), generation price (depending on which components the energy flow went through) and others. Is there a way to add this information to a flow in SD? My current approach would be to model the energy flow as an agent population with appropriate parameters and variables. Then agents could die when energy is consumed or converted from electricity to heat type. However, I don't know if this fits with the SD modeling of the energy flow.
Maybe you can help me with my problems? I would basically be interested in the opinion of more experienced Anylogic users if my approaches would be feasible or if there are other or easier approaches. If you know of any tutorial videos or example models that address similar problems, I would also be happy to learn from them.
Best
Christoph
Sounds like what you need is a model that combine agent-based and system dynamics approaches with Agents populating the stocks (in your case energy that then gets converted into heat) depending on their connection. There is an example of AB-SD combination model in 'Example' models and I also found one on cloud.anylogic.com, although it is from a different domain.
Perhaps if you can put together a simple example and share then I'll be able to provide more help.

Finding the shortest path in NetLogo

How to build a NetLogo agent who must try to find the shortest route between all of the given locations whilst also avoiding the given patches as those represent solid impassable objects.
If you google "shortest route algorithm" you'll find many, for example: https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
But you have massively under-specified the problem you are trying to solve. You want a single agent to solve this? Why not a swarm or class of agents? If just one agent why are you using NetLogo as a tool? Are the agents smart? Do they get smarter over time? Can 3 agents work together on exploring the terrain? Does this have to get solved just once or many times?
How much information is available to the agent? The whole world? Just the nearest radius R? Does the agent know in advance what the "given locations" are and what the obstacles are? Does the order in which the given-locations are visited matter?
This could be the classic "travelling salesman" problem, having to visit each of N cities with costs of travel between each pair being given. See https://en.wikipedia.org/wiki/Travelling_salesman_problem
Can the agent find ANY route, and then keep trying to improve it? Or must it work on the first pass? What's the stopping condition? How do you know when the best route you've found is the best possible route?
You should also look at the A* algorithm. https://en.wikipedia.org/wiki/A*_search_algorithm
There's a huge amount of prior work done on solving this class of problem but they're mostly computational -- ie, your agent could simply sit and plug numbers into software and compute an answer and never move. I don't think that's what you had in mind. But what DID you have in mind?

Can NetLogo handle millions of agents?

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?
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.