Skip to content

alexllov/Boids

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Boids

Boids is a seminal work in the Artificial Life (AL) space, demonstrating how simple rules can cause complex group dynamics to emerge.

The movement of Boids is governed by three relations:

  • Separation - moving away from any other boids that are too close.

  • Cohesion - adjusting velocity to match the speed and heading of neighbouring boids.

  • Alignment - moving towards the centre of all local boids.

Base Boids contains an implementation of Craig Reynolds' original boids in python using tkinter.

Variations

The base implementation is expanded upon, adding different more complex conditions and rules in the following separate projects.

Roosting Boids: a target 'roost' location is added, which boids are encouraged to fly towards. Two sub-variations are presented. In 'Solo', a boid is influenced solely by its own prior experience (local knowledge), while in 'Global', information is shared across the flock, influencing the behaviour of all individuals (global knowledge). This variant was inspired by early work in Particle Swarm Optimisation (PSO), which originally drew on the boids project and similar AL simulations.

  • Kennedy, J. and Eberhart, R. (1995) Particle swarm optimization. Proceedings of ICNN'95 - International Conference on Neural Networks, vol.4, 1942-1948. doi:10.1109/ICNN.1995.488968

Predators: boids are divided into 'Predators' and 'Prey' subclasses. Predators attempt to flock with prey, who in turn are set to avoid them. This creates a 'chasing' behaviour as flocks of prey move away from a trailing predator.

Gaussian Personalities: introduces some basic randomness to individual's behaviour by assigning flocking pressures based on gaussian distributions rather than fixed values.

About

Implementation of Craig Reynolds boids in python using tkinter

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages