ecspy -- A framework for creating evolutionary computations in Python.

ECsPy (Evolutionary Computations in Python) is a free, open source framework for creating evolutionary computations in Python. Additionally, ECsPy provides an easy-to-use canonical genetic algorithm (GA), evolution strategy (ES), estimation of distribution algorithm (EDA), differential evolution algorithm (DEA), and particle swarm optimizer (PSO) for users who don't need much customization.


  • Requires at least Python 2.6.
  • Numpy is required if the screen or file observers are used.
  • Matplotlib is required if the line plot observer is used.
  • Parallel Python (pp) is required if parallel evaluation is used.


This package is distributed under the GNU General Public License version 3.0 (GPLv3). This license can be found online at http://www.opensource.org/licenses/gpl-3.0.html.

Package Structure

ECsPy consists of the following modules:

  • analysis.py -- provides tools for analyzing the results of an EC
  • archivers.py -- defines useful archiving methods, particularly for EMO algorithms
  • benchmarks.py -- defines several single- and multi-objective benchmark optimization problems
  • ec.py -- provides the basic framework for an EvolutionaryComputation and specific ECs
  • emo.py -- provides the Pareto class for multiobjective optimization along with specific EMOs (e.g. NSGA-II)
  • evaluators.py -- defines useful evaluation schemes, such as parallel evaluation
  • migrators.py -- defines a basic default migration which does nothing
  • observers.py -- defines a few built-in observers, including screen, file, and plotting observers
  • replacers.py -- defines standard replacement schemes such as generational and steady-state replacement
  • selectors.py -- defines standard selectors (e.g., tournament)
  • swarm.py -- provides a basic particle swarm optimizer
  • terminators.py -- defines standard terminators (e.g., exceeding a maximum number of generations)
  • topologies.py -- defines standard topologies for particle swarms
  • variators.py -- defines standard variators (crossover and mutation schemes such as n-point crossover)