Skip to content

zohimchandani/particle-swarm-optimization

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Particle Swarm Optimization with Python

Particle swarm optimization (PSO) is amazing and I created a series of tutorials that cover the topic using Python. The first (pso-simple) is comprised of a bare bones implementation and is useful for anyone new to PSO and looking to get a good understanding of how it works. The tutorial can be found here: https://nathanrooy.github.io/posts/2016-08-17/simple-particle-swarm-optimization-with-python/

The second version (pso-advanced) is still a work in progress...

Installation

You can either download/clone this repo and use as is, or you can pip install it with the following command:

pip install git+https://github.com/nathanrooy/particle-swarm-optimization

Usage

particle swarm optimization - simple

Once you have completed the installation, usage is similar to that of other common optimization frameworks.

>>> from pso import pso_simple

Next, you need to specify a cost fucntion. I included the sphere function for example purposes, but you'll probably end up using your own.

>>> from pso.cost_functions import sphere

Next, let's specify some bounds and an initial starting location:

>>> initial=[5,5]               # initial starting location [x1,x2...]
>>> bounds=[(-10,10),(-10,10)]  # input bounds [(x1_min,x1_max),(x2_min,x2_max)...]

Lastly, lets minimize this thing!

>>> pso_simple.minimize(sphere, initial, bounds, num_particles=15, maxiter=30, verbose=True)

The output of which should look like this:

iter:    0, best solution:  -1.000000
iter:    1, best solution:  50.000000
iter:    2, best solution:  44.186379
iter:    3, best solution:  37.884043
iter:    4, best solution:  26.485279
iter:    5, best solution:  15.552986
iter:    6, best solution:   8.098333
iter:    7, best solution:   2.697282
iter:    8, best solution:   0.514359
iter:    9, best solution:   0.111682
iter:   10, best solution:   0.010832
iter:   11, best solution:   0.002607
iter:   12, best solution:   0.002607
iter:   13, best solution:   0.002607
iter:   14, best solution:   0.000507
iter:   15, best solution:   0.000507
iter:   16, best solution:   0.000507
iter:   17, best solution:   0.000507
iter:   18, best solution:   0.000507
iter:   19, best solution:   0.000507
iter:   20, best solution:   0.000507
iter:   21, best solution:   0.000415
iter:   22, best solution:   0.000268
iter:   23, best solution:   0.000194
iter:   24, best solution:   0.000064
iter:   25, best solution:   0.000064
iter:   26, best solution:   0.000018
iter:   27, best solution:   0.000013
iter:   28, best solution:   0.000001
iter:   29, best solution:   0.000001

FINAL SOLUTION:
   > [0.0010272779593734505, -0.00023254128511081273]
   > 1.109375455095469e-06

particle swarm optimization - advanced

(coming soon...)

About

Learn about particle swarm optimization (PSO) through Python!

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%