我正在使用pyevolve使用多处理来运行GA。代码运行良好,但每个新一代GA使用更多内存。代码正在为每一代创建新的作业,而之前的代码在保留RAM时处于空闲状态。它最终在大约10代之后崩溃。我该如何纠正?[Ram Usage] [1] [1]:https://i.stack.imgur.com/knCC0.jpg
def main_run():
flowargs, rhoargs, zindex=get_params()
genome = G1DList.G1DList(18)
genome.initializator.set(myGA.myInitializator)
genome.crossover.set(myGA.mycrossover)
genome.mutator.set(pl.Mutators.G1DListMutatorSwap)
genome.setParams(z=zindex,f=flowargs,r=rhoargs)
genome.evaluator.set(get_rho)
ga = GSimpleGA.GSimpleGA(genome)
ga.minimax = Consts.minimaxType["minimize"]
ga.setGenerations(100)
ga.selector.set(Selectors.GRouletteWheel)
ga.setInteractiveMode(False)
ga.setMultiProcessing(True)
ga.evolve(freq_stats=1)
best = ga.bestIndividual()
print(best)
if __name__ == "__main__":
main_run()
答案 0 :(得分:0)
前一段时间我遇到了这个问题,经过大量研究,我找到了答案,
您必须
修改库源代码中的GPopulation.py
,
-添加以下两个命令:
proc_pool.close()
proc_pool.join()
-function evaluate(self, **args)
的最后一行之前
-重建并重新安装库。
即
C:\ Pevolve源代码\ Pyevolve-0.6rc1 \ pyevolve \ GP人口(我在这里)
使用IDLE编辑
-在proc_pool.close()
之前添加proc_pool.join()
和self.clearFlags()
打开命令提示符