寻找在不同的GA迭代中重用50%以前的最佳个体的方法。
例如,在进程内当前迭代结束时,执行“ga.getPopulation=.Next()”.Next迭代会初始化50%的pop。
有谁知道如何处理人口结果吗?
发布于 2013-10-21 11:05:55
应用于此问题的代码片段。
所需职能:
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 FalsestepCallback (本机函数)在每一代都被调用。
....
ga.stepCallback.set(self.createOwnGen)
....
bestIndividue = ga.bestIndividual()
population = ga.getPopulation()
self.previous_population = population.internalPop
....发布于 2013-10-22 11:38:23
您可以使用setElitismReplacement (请看这里)方法来定义精英主义将使用的个人数量。
发布于 2013-10-23 10:31:14
只是为了记录下。setElitismReplacement将是一个很好的解决方案,如果指定数量的个人精英主义在1 GA完全运行。在每一代人中,只有这个数目的人将被选为下一代人。
我的意思是在不同的运行存储中,实现所有世代中最好的种群,并重用先前最佳结果的50%来初始化下一次运行。
无论如何,一个例子已经发布了。
https://stackoverflow.com/questions/19478642
复制相似问题