NetLogo User Community Models
## WHAT IS IT?
Each agent rotates around a point that is either big-turning-radius or small-turning-radius to its left, depending on whether any other agent is in the agent's sector of visibility.
Apparently, this simple protocol is sufficient for gathering the agents to a cohesive behavior - the agents get and remain close together.
## HOW IT WORKS
All agents are identical, sharing the same parameters: big and small radii values, constant reference speed, and visibility sector.
An agent detecting at least one other agent in its visibility sector, rotates clockwise on a big radius circle. When not detecting any agents, the agent rotates clockwise on a small radius circle.
On top of the protocol presented, altering an agent's speed according to its heading creates a pull effect on the swarm from slower agents, and a push effect from faster agents.
Harnessing this effect allows us to use an anonymous, probabilistic approach to control the swarm **As A Unit**.
By broadcasting a single datum, in the form of a reference azimuth, and having at least some agents receive the signal at least some of the time, the swarming protocol's cohesiveness causes the entire swarm to translate itself in the desired direction.
## HOW TO USE IT
Select the number of agents and beacons (beacons are static agents).
Press **Setup** to initialize the model.
Select the small and big radii for the agents' movement.
Select the leader probability, i.e. the probability of an agent to receive a broadcast control signal.
Select the agents' visibility sector by changing the field of view and vision distance.
Select the agents' reference speed.
## THINGS TO TRY
Drag an agent or beacon and drop them in an arbitrary location, see how the swarm reacts.
Use the compass switches to the right in order to command the entire swarm as a cohesive unit.
See if you can get the agents to rotate in a regular polygon formation.
## CREDITS AND REFERENCES
[Dovrat, D. & Bruckstein, A. M.
(back to the NetLogo User Community Models)