Article · Wikipedia archive · Last revised Jun 2, 2026

DEAP (software)

Distributed Evolutionary Algorithms in Python (DEAP) is an evolutionary computation framework for rapid prototyping and testing of ideas. It incorporates the data structures and tools required to implement most common evolutionary computation techniques such as genetic algorithm, genetic programming, evolution strategies, particle swarm optimization, differential evolution, traffic flow and estimation of distribution algorithm. It is developed at Université Laval since 2009.

Last revised
Jun 2, 2026
Read time
≈ 1 min
Length
324 w
Citations
5
Source
DEAP
Original authorsFrançois-Michel De Rainville, Félix-Antoine Fortin, Marc-André Gardner, Marc Parizeau, Christian Gagné
DevelopersFrançois-Michel De Rainville, Félix-Antoine Fortin, Marc-André Gardner
Initial release2009 (2009)
Stable release
1.4.11 Edit this on Wikidata / 21 July 2023 (21 July 2023)
Written inPython
Operating systemCross-platform
TypeEvolutionary computation framework
LicenseLGPL
Websitegithub.com/deap
Repository

Distributed Evolutionary Algorithms in Python (DEAP) is an evolutionary computation framework for rapid prototyping and testing of ideas.234 It incorporates the data structures and tools required to implement most common evolutionary computation techniques such as genetic algorithm, genetic programming, evolution strategies, particle swarm optimization, differential evolution, traffic flow5 and estimation of distribution algorithm. It is developed at Université Laval since 2009.

Example

The following code gives a quick overview how the Onemax problem optimization with genetic algorithm can be implemented with DEAP.

import array
import random
from deap import creator, base, tools, algorithms

creator.create("FitnessMax", base.Fitness, weights=(1.0,))
creator.create("Individual", array.array, typecode="b", fitness=creator.FitnessMax)

toolbox = base.Toolbox()
toolbox.register("attr_bool", random.randint, 0, 1)
toolbox.register(
    "individual", tools.initRepeat, creator.Individual, toolbox.attr_bool, 100
)
toolbox.register("population", tools.initRepeat, list, toolbox.individual)

evalOneMax = lambda individual: (sum(individual),)

toolbox.register("evaluate", evalOneMax)
toolbox.register("mate", tools.cxTwoPoint)
toolbox.register("mutate", tools.mutFlipBit, indpb=0.05)
toolbox.register("select", tools.selTournament, tournsize=3)

population = toolbox.population(n=300)
NGEN = 40

for gen in range(NGEN):
    offspring = algorithms.varAnd(population, toolbox, cxpb=0.5, mutpb=0.1)
    fits = toolbox.map(toolbox.evaluate, offspring)
    for fit, ind in zip(fits, offspring):
        ind.fitness.values = fit
    population = offspring
See also

See also

References

References

  1. "Release 1.4.1". 21 July 2023. Retrieved 30 July 2023.
  2. Fortin, Félix-Antoine; F.-M. De Rainville; M-A. Gardner; C. Gagné; M. Parizeau (2012). "DEAP: Evolutionary Algorithms Made Easy". Journal of Machine Learning Research. 13: 2171–2175.
  3. De Rainville, François-Michel; F.-A Fortin; M-A. Gardner; C. Gagné; M. Parizeau (2014). "DEAP: Enabling Nimber Evolutionss" (PDF). ACM SIGEVOlution. 6 (2): 17–26. doi:10.1145/2597453.2597455. S2CID 14949980.
  4. De Rainville, François-Michel; F.-A Fortin; M-A. Gardner; C. Gagné; M. Parizeau (2012). "DEAP: A Python Framework for Evolutionary Algorithms" (PDF). In Companion Proceedings of the Genetic and Evolutionary Computation Conference.
  5. "Creation of one algorithm to manage traffic systems". Social Impact Open Repository. Archived from the original on 2017-09-05. Retrieved 2017-09-05.
External links