def eaMuPlusLambda(population, toolbox, mu, lambda_, cxpb, mutpb, ngen):
invalid_ind = [ind for ind in population if not ind.fitness.valid]
fitnesses = toolbox.map(toolbox.evaluate, invalid_ind)
for ind, fit in zip(invalid_ind, fitnesses):
ind.fitness.values = fit
population = update_fitness(population)
# Begin the generational process
for gen in range(1, ngen + 1):
# Vary the population
offspring = varOr(population, toolbox, lambda_, cxpb, mutpb)
# Evaluate the individuals with an invalid fitness
invalid_ind = [ind for ind in offspring if not ind.fitness.valid]
fitnesses = toolbox.map(toolbox.evaluate, invalid_ind)
for ind, fit in zip(invalid_ind, fitnesses):
ind.fitness.values = fit
# Select the next generation population
population[:] = toolbox.select(population + offspring, mu)
return population
仅仅更改适应度函数是不够的,因为您需要对所有个体进行额外的传递,以根据附近优势个体的存在更新其适应度。但是,您可以为此制定自己的算法
一旦您根据Petrowski 96中描述的过程定义了通过群体中的所有个体来设置其适合度的过程
然后可以重新定义标准算法,例如^{}
相关问题 更多 >
编程相关推荐