Particle Swarm Optimization (PSO) is a Metaheuristic algorithm (similar to a genetic algorithm) which uses a model of a swarm of particles to find the minimum value of a given function. A great place to read about them is in the original paper

Kennedy, J.; Eberhart, R., "Particle swarm optimization," Neural Networks, 1995. Proceedings., IEEE International Conference on , vol.4, no., pp.1942,1948 vol.4, Nov/Dec 1995

URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=488968&isnumber=10434

However, this paper being nearly 20 years old, several updates to the original algorithm have been made, and are gently summarized in a more recent paper

Bratton, D.; Kennedy, J., "Defining a Standard for Particle Swarm Optimization," Swarm Intelligence Symposium, 2007. SIS 2007. IEEE , vol., no., pp.120,127, 1-5 April 2007

URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4223164&isnumber=4223144

I wrote this webpage to help me to update the algorithm to remove a bias towards a chosen basis of the underlying vector space (as well as to practice writing functional JavaScript). It is a work in progress.