NetLogo banner

 NetLogo Publications
 Contact Us

 Modeling Commons

 User Manuals:
 Farsi / Persian


NetLogo User Community Models

(back to the NetLogo User Community Models)

[screen shot]

If clicking does not initiate a download, try right clicking or control clicking and choosing "Save" or "Download".

Try It in NetLogo Web


A model of a light delivery network of drones, designed to test some basic elements of its configuration and identify its topline functioning profile


The model uses three breeds of agents:
- pads, which just signal through their color whether they're available for landing (green), available only to empty drones (blue), or occupied by a drone (red); They have a capacity, which is the maximum number of packets that can be uploaded to the platform at the same time.
- packets, which are placed on platforms at random and have a destination platform.
- drones, which fly around delivering packets. Drones can load only one packet at a time, and have a charge (or fuel). They consume 1 unit fuel per tick when flying empty, and 2 when loaded. When empty, they'll head for the nearest available platform, when loaded, they'll select the platform in sight which is also nearer to the destination of the packet they're carrying. When they land, they recharge and then fly of picking up a random packet among those available on the platform. If they find themselves with zero charge in flight, and if they carry a packet when this happens, the packets is lost too.
In addition, patches can have an 'obstacle' value, meaning that drones on a patch will only be able to look for available landing pads within the range that patch allows.



"NrPlatforms": the number of landing pads available. These'll show up as circles.
"PlatformCapacity": the maximum number of packets a platform can hold. This can also be changed while the simulation runs.
"UsageIntensity": the frequency with which new packets will be trusted to the network. It's a per-thousand probability per platform per tick, and can be changed when the simulation is live.
"DronePopulation": the number of drones initally available.
"MaxCharge": the charge capacity of drones, and affects their operating range. It can be changed live.
"RechargePower": the speed of recharge of drones, when landed on a pad. It's in units of charge per tick. Can be changed live.
"ViewRange": the range within which drones will look for a pad available for landing, in patches. Can be changed live but it only works when "Landscape" is off.
"Visibility": controls how dense with obstacles the world is. Higher visibility means fewer obstacles.
"SmoothLandscape": determines how rugged the landscape is, i.e.: how quickly visibility changes from one patch to the other. Higher smoothness means patches near to each other will have similar visibility.
"Landscape?" if enabled, simulates an uneven distribution of obstacles across the world.
"Color?" enables to observe the routes drones follow more frequently. By switching this on, patches become gradually brighter as drones pass through them. Their brightness decays, so that the most recently used routes remain visible.


[Setup] prepares the simulation
[Run simulation] runs the simulation
[Single Step] runs the simulation one tick at a time
[Watch Drone] causes a drone to leave a yellow trace so that you can observe its path
[Watch Packet] causes the latest packet added to the system to leave a trace, and the packet is highlighted in the world. Watching stops when the packet is delivered.
[View Landscape] makes the obstacles visible: patches are coloured based on their visibility value, with brighter patches granting better visibility.
[Clear Landscape] hides the visualization of obstacles
[Clear] panic button for whatever visual marker you want to get rid of.


is an indicator of the overall efficiency of the network: it is equal to the square of the number of packets delivered, divided by the product of the number of drones required to deliver a packet multiplied by the time spent carrying the packet to destination.

[Platform Status]
Counts the number of free, fully loaded and occupied landing pads

[Mean Delivery Time]
Tracks the average time required for delivery, from the start of the simulation and as a rolling average over the last 100 packets delivered

[Delivery Time] and [Number of Drones]
Are histograms of the time and drones needed to deliver packets, over the last 100 deliveries


[faults] counts the number of drones that crash
[drones] counts the number of drones currently in the simulation
[delivered] counts the number of packets delivered so far


The network of drones has equilibria. In general, the drone population should be adequate to handle the intensity of usage and the number of pads. If there are too few drones, soon most of them will be loaded AND the platform will be filled, so they'll have nowhere to land and the network will crash. At the opposite extreme, if there are too many drones, most will not have an available platform and they'll crash anyway. Notice that configuration that work best tend to have the number of drones carrying packets roughly equal to the number of those flying empty, and nearly no pad fully loaded. The speed of recharge is a key variable in the model: faster recharge means less time spent on pads and greater network resilience. Note that this is much more important than the autonomy of the drones.


Initiate with an unbalanced configuration, and when the drones begin to crash, try and stabilize the situation by tweaking intensity of usage, platform capacity, drone autonomy and recharge power.


Visit for more details on the model, comments and suggestions - and to download the code if you like. I found the original idea on

(back to the NetLogo User Community Models)