I wrote a Java app to simulate swarm aggregation behavior, as seen in schools of fish or flocks of birds. The motivation was to use biologically inspired behavior as the basis of robot intelligence.
For a simple predator-response demonstration, click [R]un and then [P]red on the bottom menu. The predator can be steered using the A and D keys.
Swarming behavior has some unique properties: all interactions are local and decentralized, meaning there is no global knowledge or interaction. Each individual entity can be made to follow simple rules, but create emergent behavior which is very complex. For example, here are some patterns which form naturally in a simple repel-attract aggregation model:
Each agent exerts either attracts or repels its neighbors based on their separation distance, so the agent tends towards some equilibrium position relative to the rest of the swarm. A linear function is used for simplicity, and a maximum sensor range is specified.
In nature, swarming helps animals to confuse predators, carry heavy objects and build enormous structures such as ant hills. Predators are easy to spot when a hundred birds are on the look-out. Some swarms have evolved coordinated movement and directed activity, most notably for predator avoidance:
Source: “Self-Organized Fish Schools: An Examination of Emergent Properties,” Parrish, Viscido, Nbaum 2002
I was able to replicate some of this behavior in my simulation, notably herding, splitting and avoiding.
In robotics, swarming confers similar benefits such as enhanced capability and versatility. Equally important is failure tolerance - if one out of a hundred identical robots fail, the mission can still continue. The properties of emergent behavior allow you to design simple control loops using inexpensive sensors, while retaining the ability to perform complex tasks - though this feat requires a unique way of thinking.
Simulation is an inexpensive way to experiment with swarm algorithms, since building and maintaining a hundred identical robots can be somewhat daunting. Another interesting research method arises in a paper titled “Using a Collection of Humans as an Execution Testbed for Swarm Algorithms” by Palmer et al, 2003:
Overall, the simulation was able to successfully demonstrate swarm aggregation and predator avoidance techniques and give insights into emergent behavior - not bad for a sophomore engineer!