我对DEAP非常陌生,看看我看到的几个地方和例子,它使用这种方法为遗传算法创建类:
creator.create('FitnessMax', base.Fitness, weights=(1.0, -0.5,))
creator.create('Individual', list, fitness=creator.FitnessMax)我不明白的是权重参数。假设DEAP可以用来解决多目标问题(最大化和最小化),这就是为什么权重可以是正的或负的。
但它与健身/目标函数是如何联系的呢?健身功能必须返回几个值,一个为每个重量?
发布于 2019-06-11 18:40:57
对于多目标问题,您的适应度函数必须返回与指定的权重数相同的结果元组,例如:
creator.create('Fitness', base.Fitness, weights=(1.0, -0.5,))
creator.create('Individual', list, fitness=creator.Fitness)
[...]
toolbox.register('evaluate', fitness)
def function_minimize(individual):
return individual[0] - sum(individual[1:])
def function_maximize(individual):
return sum(individual)
def fitness(individual):
return (function_maximize(individual), function_minimize(individual)),此外,请记住,您的选择方法必须支持多目标问题,例如锦标赛选择,所以如果您使用它,权重将被忽略)。支持这种问题的一种选择方法是NSGA2。
toolbox.register('select', tools.selNSGA2)https://stackoverflow.com/questions/56185786
复制相似问题