Particle swarm optimization

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Amgine (talk | contribs) at 03:50, 4 May 2006 (→‎Algorithm: typo). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Jump to navigation Jump to search

Particle swarm optimization (PSO) is a form of swarm intelligence. Imagine a swarm of insects or a school of fish. If one sees a desirable path to go (ie for food, protection, etc.) the rest of the swarm will be able to follow quickly even if they are on the opposite side of the swarm.

This is modeled by particles in multidimensional space that have a position and a velocity. These particles are flying through hyperspace and remember the best position that they have seen. Members of a swarm communicate good positions to each other and adjust their own position and velocity based on these good positions. There are two main ways this communication is done:

  • a swarm best that is known to all
  • local bests are known in neighborhoods of particles

Updating the position and velocity is done through the following formulas at each iteration:

    • is the inertial constant. Good values are usually slightly less than 1.
    • and are constants that say how much the particle is directed towards good positions. Good values are usually right around 1.
    • and are random values in the range .
    • is the best the particle has seen.
    • is the global best seen by the swarm. This can be replaced by , the local best, if neighborhoods are being used.

Algorithm

  • Initialize and of each particle to a random value. The range of these values may be domain specific.
  • Initialize each to the current position.
  • Initialize to the position that has the best fitness in the swarm.
  • Loop while the fitness of is below a threshold and the number of iterations is less than some predetermined maximum.
    • For each particle do the following:
      • Update according to the above equation.
      • Calculate fitness for new position.
      • If it is better than the fitness of , replace .
      • If it is better than the fitness of , replace .
      • Update according to the above equation.

See also

  • CILib - GPLed computational intelligence simulation and research environment written in Java, includes various PSO implementations