Flocking

Flocking behavior is the behavior exhibited when a group of birds, called a flock, are foraging or in flight. There are parallels with the shoaling behavior of fish, the swarming behavior of insects, and herd behavior of land animals.

Computer simulations and mathematical models which have been developed to emulate the flocking behaviors of birds can generally be applied also to the "flocking" behavior of other species. As a result, the term "flocking" is sometimes applied, in computer science, to species other than birds.

This article is about the modelling of flocking behavior. From the perspective of the mathematical modeller, "flocking" is the collective motion of a large number of self-propelled entities and is a collective animal behavior exhibited by many living beings such as birds, fish, bacteria, and insects. It is considered an emergent behavior arising from simple rules that are followed by individuals and does not involve any central coordination.

Flocking behavior was first simulated on a computer in 1986 by Craig Reynolds with his simulation program, Boids. This program simulates simple agents (boids) that are allowed to move according to a set of basic rules. The result is akin to a flock of birds, a school of fish, or a swarm of insects.

Flocking rules
Basic models of flocking behavior are controlled by three simple rules:


 * 1) Separation - avoid crowding neighbors (short range repulsion)
 * 2) Alignment - steer towards average heading of neighbors
 * 3) Cohesion - steer towards average position of neighbors (long range attraction)

With these three simple rules, the flock moves in an extremely realistic way, creating complex motion and interaction that would be extremely hard to create otherwise.

The basic model has been extended in several different ways since Reynolds proposed it. For instance, Delgado-Mata et al. extended the basic model to incorporate the effects of fear. Olfaction was used to transmit emotion between animals, through pheromones modelled as particles in a free expansion gas. Hartman and Benes introduced a complementary force to the alignment that they call the change of leadership. This steer deﬁnes the chance of the boid to become a leader and try to escape. Hemerlijk and Hildenbrandt used attraction, alignment and avoidance and extended this with a numbet of traits of real starlings: first, birds fly according to fixed wing aerodynamics, while rolling when turning (thus losing lift), second they coordinate with a limited number of interaction neighbours of 7 (like in real starlings), third, they try to stay above a sleeping site (like starlings do at dawn) and when they happen to move outwards the sleeping site, they return to it by turning, fourth, they move at relative fixed speed. The authors showed that the specifics of flying behaviour as well as large flocksize and low number of interaction partners were essential to the creation of the variable shape of flocks of starlings.

Measurement
Measurements of bird flocking have been made using high-speed cameras, and a computer analysis has been made to test the simple rules of flocking mentioned above. It is found that they generally hold true in the case of bird flocking, but the long range attraction rule (cohesion) applies to the nearest 5-10 neighbors of the flocking bird and is independent of the distance of these neighbors from the bird. In addition, there is an anisotropy with regard to this cohesive tendency, with more cohesion being exhibited towards neighbors to the sides of the bird, rather than in front or behind. This is no doubt due to the field of vision of the flying bird being directed to the sides rather than directly forward or backward.

Algorithmic complexity
In flocking simulations, there is no central control; each bird behaves autonomously. In other words, each bird has to decide for itself which flocks to consider as its environment. Usually environment is defined as a circle (2D) or sphere (3D) with a certain radius (representing reach).

A basic implementation of a flocking algorithm has complexity $$O(n^2)$$ - each bird searches through all other birds to find those who falls into his environment.

Possible improvements:
 * bin-lattice spatial subdivision. Entire area the flock can move in is divided into a large number of bins. Each bin stores which birds it contains. Each time a bird moves from one bin to another, lattice has to be updated.
 * Example: 2D(3D) grid in a 2D(3D) flocking simulation.
 * Complexity: $$O(n k)$$, k is number of surrounding bins to consider; just when bird's bin is found in $$O(1)$$

Lee Spector, Jon Klein, Chris Perry and Mark Feinstein studied the emergence of collective behavior in evolutionary computation systems.

Applications
In Cologne, Germany, two biologists from the University of Leeds demonstrated a flock like behavior in humans. The group of people exhibited a very similar behavioral pattern to that of a flock, where if 5% of the flock would change direction the others would follow suit. When one person was designated as a predator and everyone else was to avoid him, the flock behaved very much like a school of fish.

Flocking has also been considered as a means of controlling the behavior of Unmanned Air Vehicles (UAVs).

Flocking is a common technology in screensavers, and has found its use in animation. Flocking has been used in many films to generate crowds which move more realistically. Tim Burton's Batman Returns (1992) featured flocking bats, and Disney's The Lion King (1994) included a wildebeest stampede.

Flocking behaviour has been used for other interesting applications. It has been applied to automatically program Internet multi-channel radio stations . It has also been used for visualizing information and for optimization tasks .