Skip to content

Latest commit

 

History

History
38 lines (28 loc) · 1.07 KB

README.md

File metadata and controls

38 lines (28 loc) · 1.07 KB

pyshoal

An implementation of Particle Swarm Optimisation in Python

Typical usage:

import numpy as np
from pyshoal import PSO

def rastrigin(a, b):
    """Objective function."""
    return 10 * 2 + \
           (a**2 - (10 * np.cos(2 * np.pi * a))) + \
           (b**2 - (10 * np.cos(2 * np.pi * b)))

my_pso = PSO(obj_func=rastrigin,
             box_bounds=((-500, 500), (-500, 500)),
             n_parts=144,
             topo='gbest',
             weights=[0.9, 0.4, 2.1, 2.1],
             extra_args=None,
             minimise=True)

results = my_pso.opt(max_itr=100,
                     tol_thres=(0.01, 0.01),
                     tol_win=5,
                     plot=True,
                     save_plots=False)

(swarm_best, swarm_best_perf, n_itrs) = results

Please see the docstrings in pso.py for more info on pyshoal usage.

Note that pyshoal originally allowed for parallel execution of the objective function at each PSO step. This is not presently supported.