By adding an aerodynamic model, I have finally persuaded the geese to form a “V”. So why is this significant? There is nothing in the simulation that says “make a V.” People have shown that a V-formation is good for the entire flock by reducing the overall drag, but how do the individual geese know to form this pattern? The local drag will inevitably vary from goose to goose, so is a V-formation produced through some form of cooperation? Or does each bird act purely selfishly, seeking only to reduce its own drag? Game theory and complexity theory both suggest that it is often possible for groups of selfish individuals to produce global benefits (a nonzero sum), and I am attempting to show that this principle applies to flocks of geese. One application is autonomous air vehicles, where centralized control may be impractical.
My simulation is adapted from Craig Reynolds’ Boids, basically adding an aerodynamic rule to the conventional set. In a nutshell, each “boid” computes its new position based on a set of rules applied to each other boid in the flock. Conventional boids have centering, collision avoidance, and migration rules, each of which has a unique weight (importance) and range. For example, the collision avoidance rule has a high weight (very important) but only a short range. This way, nearby boids will avoid hitting one another, but distant boids are unaffected.
The aerodynamic rule I have added simply computes the gradient of the drag for each boid, and tells the boid to fly in that direction. Presumably a real bird is able to feel pressure changes over its body and sense which direction to move for reduced drag, and the aerodynamic boid rule is the functional equivalent of this behavior. Results are promising so far, with the geese forming a “V” from random starting positions. The V seems to be marginally stable, but stability is a strong function of the parameters. For example, reducing the centering weight prevents the V from collapsing but may allow the geese to ultimately separate. I plan to make a flocking page with more information on this project. Also, the program is available to anyone who wants it; just ask.