寻找一种方法,在不同的GA迭代中重复使用50%的先前人口最佳个体。
例如,在流程内部当前迭代结束时,执行“population = ga.getPopulation()”。下一次迭代初始化该流行音乐的50%。
有谁知道如何处理人口结果?
答案 0 :(得分:1)
您可以使用方法setElitismReplacement
(see here)来定义精英主义将使用的个人数量。
答案 1 :(得分:0)
应用于此问题的一些代码。
所需功能:
def createOwnGen(self , ga_engine):
gen = ga_engine.getCurrentGeneration()
if gen == 0 and self.previous_population != []:
population = ga_engine.getPopulation()
popSize = len(population)
for i in xrange(popSize/2):
population[popSize/2+i] = self.previous_population[i]
population.sort()
return False
stepCallback(来自pyevolve的本机函数)在每一代都被调用。
....
ga.stepCallback.set(self.createOwnGen)
....
bestIndividue = ga.bestIndividual()
population = ga.getPopulation()
self.previous_population = population.internalPop
....
答案 2 :(得分:0)
仅供记录。如果要指定,setElitismReplacement将是一个很好的解决方案 在1 GA完成运行中的精英数量的个人数量。在每一代人中,只会为下一代选择那么多人。
我的意思是在不同的运行商店中实现了所有代的最佳人口,并重复使用50%的先前最佳结果来初始化下一次运行。
无论如何已经发布了一个例子。