人口替代pyevolve

时间:2013-10-20 14:38:50

标签: replace population pyevolve

寻找一种方法,在不同的GA迭代中重复使用50%的先前人口最佳个体。

例如,在流程内部当前迭代结束时,执行“population = ga.getPopulation()”。下一次迭代初始化该流行音乐的50%。

有谁知道如何处理人口结果?

3 个答案:

答案 0 :(得分:1)

您可以使用方法setElitismReplacementsee 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%的先前最佳结果来初始化下一次运行。

无论如何已经发布了一个例子。