DEAP (программное обеспечение)

DEAP — фреймворк для эволюционных вычислений на языке Python, предназначенный для быстрого прототипирования и тестирования идей.[2][3][4] Включает структуры данных и инструменты, необходимые для реализации большинства популярных техник эволюционных вычислений, таких как генетический алгоритм, генетическое программирование, эволюционные стратегии, оптимизация роя частиц, дифференциальная эволюция, оптимизация транспортных потоков[5] и алгоритмы оценки распределения. Разработка ведётся в Университете Лаваля с 2009 года.

Общие сведения
DEAP
Тип фреймворк эволюционных вычислений
Авторы François-Michel De Rainville, Félix-Antoine Fortin, Marc-André Gardner, Marc Parizeau, Christian Gagné
Разработчики François-Michel De Rainville, Félix-Antoine Fortin, Marc-André Gardner
Написана на Python
Операционная система мультиплатформенный
Первый выпуск 2009
Последняя версия
Репозиторий github.com/DEAP/deap
Лицензия LGPL
Сайт github.com/deap

Пример

Ниже приведён пример кода, иллюстрирующий решение задачи Onemax с использованием генетического алгоритма в 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

Примечания

  1. Release 1.4.1 — 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. Дата обращения 2024-06-28.
  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. Дата обращения 2024-06-28.
  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 [англ.]. Дата обращения 2024-06-28.
  5. Creation of one algorithm to manage traffic systems (англ.). Social Impact Open Repository. Дата обращения: 5 сентября 2017. Архивировано 5 сентября 2017 года.

Ссылки