【问题标题】:DEAP: sorting individuals by fitnessDEAP:按适应度对个体进行分类
【发布时间】:2019-11-21 10:54:55
【问题描述】:

在评估每个个体的适应度的情况下,按个体适应度对群体进行排序的最佳方法是什么?

我手动实现了一个排序功能,但也许有一个内置的方法可以做到这一点?

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

def sort(population):
    for i in range(len(population)):
        argmin = i
        minimum = population[i].fitness

        for j in range(i + 1, len(population)):
            if population[j].fitness < minimum:
                argmin = j

        population[argmin], population[i] = population[i], population[argmin]

    return population

def fitness(individual):
    return sum(individual),

toolbox = base.Toolbox()

creator.create("FitnessMax", base.Fitness, weights=(1.0,))
creator.create("Individual", list, fitness=creator.FitnessMax)
toolbox.register("individual", tools.initRepeat, creator.Individual, random.random, n=2)
toolbox.register("population", tools.initRepeat, list, toolbox.individual)

pop = toolbox.population(n=10)
fitnesses = toolbox.map(toolbox.evaluate, pop)
for ind, fit in zip(pop, fitnesses):
    ind.fitness.values = fit

print("Before")
for ind in pop:
    print(ind, ind.fitness)
pop = sort(pop)
print("After")
for ind in pop:
    print(ind, ind.fitness)

【问题讨论】:

    标签: python deap


    【解决方案1】:

    可以简单地使用 Python 内置函数

    pop.sort(key=lambda x: x.fitness, reverse=True)
    

    这会根据个人的适应度对种群进行适当的排序。

    【讨论】:

      猜你喜欢
      • 2022-12-29
      • 2020-03-03
      • 2018-05-23
      • 2018-01-10
      • 2017-11-26
      • 2017-08-01
      • 1970-01-01
      • 2013-03-29
      • 1970-01-01
      相关资源
      最近更新 更多