Today I’m starting on the next report topic, which is particle swarm optimisation. To begin with I’m going to have an initial glance around the Internet, just to try and whet my feet as to what the subject is about.
- From www.swarmintelligence.org:
- “Particle swarm optimization (PSO) is a population based stochastic optimization technique developed by Dr. Eberhart and Dr. Kennedy in 1995, inspired by social behavior of bird flocking or fish schooling.”.
- PSO is apparently quite similar to genetic algorithms and other evolutionary computation techniques.
- The system starts with a population of random solutions, and the optima is searched for by updating generations.
- In PSO the potential solutions are called particles, which fly through the problem space by following the current optimum particles.
- Each particle keep track of it is coordinates in the problem space which are associated with the best solution (fitness) it has achieved so far (the fitness value is also stored). This value is called pbest.
- The best value obtained so far by any particle in the neighbours of the particle is called lbest
- If the particle takes the entire population as its topological neighbourhood, the best value is a global best and is called gbest
- At each time step, the particle swarm optimisation concept involve changing the velocity of (accelerating) each particle towards its pbest and lbest locations (local version of PSO).
- Acceleration is weighted by a random term, with separate random numbers being generated for acceleration towards pbest and lbest locations.
- PSO is attractive because there are few parameters to adjust
There’s a tutorial page on this website as well: http://www.swarmintelligence.org/tutorials.php, which seems reasonable.
Some quick points:
- there is a Perl PSO module: http://search.cpan.org/~kylesch/AI-PSO-0.86/lib/AI/PSO.pm
- there appears to be a good online visual demonstration here: http://gecco.org.chemie.uni-frankfurt.de/PsoVis/applet.html
- … And another, probably slightly easier to grok, online applet here: http://www.projectcomputing.com/resources/psovis/.
- And from the Wikipedia entry on particle swarm optimisation, the following:
- PSO is a form of swarm intelligence
- if you imagine a swarm of insects, and one sees a desirable path to go in, such as 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.
- However you want each particle to have a certain amount randomness inherent to their character, so that the swarm has a certain exploration capability: the swarm shall be influenced by the rest of the swarm will also should independently explore to a certain extent (this is a manifestation of the basic exploration-exploitation trade off that occurs in any search problem)
- the search is modelled by particles in multi dimensional space that have a position on a velocity. These particles are flying through hyperspace and have two essential reasoning capabilities: their memory of their own best position and knowledge of the swarm’s best — “best” in this sense simply means the position with the smallest objective value.
- Members of the swarm communicate good positions to each other and adjust their own position and velocity based on this good positions. Communication is done in two ways:
- a global best is known to all and immediately updated when a new best position is found by any particle in the swarm
- “neighbourhood” bests where each particle only immediately communicates with a subset of the swarm about best positions
- (FYI the Wikipedia entry contains a basic PSO algorithm for further inspection)
- from the discussion section of the article: “By studying this algorithm, we see that we are essentially carrying out something like a discrete-time simulation where each iteration of it represents a “tic” of time. The particles “communicate” information they find about each other by updating their velocities in terms of local and global bests; when a new best is found, the particles will change their positions accordingly so that the new information is “broadcast” to the swarm. The particles are always drawn back both to their own personal best positions and also to the best position of the entire swarm. They also have stochastic exploration capability via the use of the random multipliers r1,r2.”
(N. B. Firefox has died on me a couple of times today: as such here are the URLs I was looking at in case of emergencies:
- http://www.adaptiveview.com/articles/ipsoprnt.html
- http://upetd.up.ac.za/thesis/available/etd-01312006-125743/
- http://isbn.nu/1558605959 – book
- http://www.swarmintelligence.org/tutorials.php
- http://www.engr.iupui.edu/~shi/Coference/psopap4.html — this is the paper by Kennedy and Eberhart behind particle swarm optimisation
- From Adaptive View’s an Introduction to Particle Swarm Optimisation article:
- the original developers of particle swarm optimisation, Kennedy and Eberhart, were interested in models developed by biologist Frank Heppner.
- Heppner’s bird models demonstrating most of the flocking behaviours that other models were producing, but with the addition that his birds were attracted to a roosting area.
- In simulations the birds would fly around in flocks with no particular destination until one of the birds flew over the roosting area.
- When the programmed ” desire to roost” parameter was higher than the “desire to stay in the flock”, a bird would pull away from the flock and land.
- The birds use simple rules to set their direction and velocity — basically each bird is trying to stay in the middle of the birds it is near to while trying not to run into any of them — and as such, a bird pulling away from the flock in order to land at the roosting site would result in nearby birds moving towards the roost.
- As these birds discovered the roost, they would land, in turn pulling more birds towards the roosting site, and so on until the entire flock had landed.
- Eberhart was an electrical engineer, and Kennedy was a social psychologist
- in particle swarm optimisation, finding a roost is analogous to finding a solution in a field of possible solutions, sometimes called a solution space, and the manner in which a bird who has found the roost “leads ” its neighbours toward it, increasing the odds are that they will also find it, is in keeping with the socio-cognitive of mind.
- Eberhart and Kennedy mortified Heppner’s simulation so that particles could fly over a simulation space and land on the best solution.
- An issue in this area is how to keep the particles from landing on any solution instead of just the best solution. This is where the social aspect of mind and intelligence comes into play. The essence of the “mindless social” viewpoint is that individuals learn primarily from the successes of their neighbours.
- PSO requires a good balance between exploration, hunting around for good solution, and exploitation, taking advantage of someone else’s success. Too little exploration will lead the particles to converge on the first good solution encountered. Too little exploitation and the particles will never converge.
- Another way of looking at this, is that instead of balancing the exploration and exploitation behaviours, is balancing individuality and sociality. Ideally you want individuals to prefer being individualistic, akin to Heppner’s birds not wanting to run into each other, but you want them to know where good solutions have been found by others that they can “learn from what they did”.
- A subtle aspect of finding the best solution has to do with which particle is in a particular neighbourhood, and whose successes will influence surrounding particles. A “global neighbourhood” with all the particles acting as one large neighbourhood increases the odds that a sub optimal solution will be converged on the certain types of problems. Kennedy and Eberhart discovered that using smaller, overlapping neighbourhoods was often more effective.
- E.g. given seven particles A., B., C., D., E., F., and G.: instead of them all belonging to the neighbourhood ABCDEF more of the solution space may be searched by having neighbourhoods GAB, ABC, BCD, CDE, DEF, EFG, and FGA, with the particle the range in a circle, so G. and A. are next to each other, and each particle includes the particles on its left and right as its neighbourhood. Using such a neighbourhood apology tend to delay convergence and therefore allow more exploration
- using the above example, particle A’s neighbours are G. and B. If either of these two neighbours find a better solution than A has, A will be influenced by this — it will, so to speak, arrive at a compromise between where it wants to go and where the neighbourhood best is located. At the same time, G and B have their own neighbourhoods (FGA and ABC) and will be hence moving under the influence of their neighbourhood bests.
- This method serves to slowly propagate the global best solution to all of the neighbourhoods. However significant here is the propagation taking time. During this propagation time, members of the still unaffected neighbourhoods continue to hunt in their area the solution space following the scent of what they think is best. This increases the odds that if there is a new global best solution near or between them, they’ll find it.
(Got down to where “important” is in bold, ~1/3 of the page down)