Particle Swarm Optimization
![]() |
This is a representation of Particle Swarm Optimization. The solution that is found for a particle is swayed by the global best and the individual particle's best solutions. http://www.sciencepubco.com/index.php/JACST/article/view/84 |
http://web.ist.utl.pt/gdgp/VA/pso.htm |
The algorithm for performing these actions is fairly straight-forward as well. The idea is to update each particle and determine if that particle has a better fitness value than it has ever had before, and then determine if it has a better fitness than the swarm's best fitness. This way, each particle has the equivalent of a unique mind as well as the swarm mind. Below is the algorithm specifics:
- A set of N particles are created such that each particle contains random values in the set.
- It is determined whether each particle is its best case, if it is, particle i's best is this particle.
- It is determined whether the best particle is the swarms best case, if it is, the swarm best is this particle.
- Each particle's velocity and position are updated simultaneously with the new particle and swarm bests.
- If the global best meets the termination condition or the max iterations are reached, stop. Else, go back to step 2 and repeat.
One issue that I have noticed is that it can usually find a local minimum of the system, but does not always find a global minimum. My solution was to repeat the algorithm multiple times, until the system met the fitness requirement.
Feel free to let me know what you think of my work in the comments. I am happy to provide links and help to those who are interested.