Pyevolve 与多处理在每一代 GA 中使用更多 RAM

Pyevolve with multi processing using more RAM with each GA generation

我正在使用 pyevolve 运行 使用多处理的 GA。代码 运行 没问题,但每新一代 GA 都会使用更多内存。该代码正在为每一代创建新的工作,而之前的工作是空闲的,而保留 RAM.It 最终在大约 10 代后崩溃。我该如何纠正?[Ram 使用][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()

我前一段时间遇到了这个问题,经过大量研究我找到了答案,

你必须 修改库源码中的GPopulation.py

--添加如下两条命令:

proc_pool.close()
proc_pool.join()

--function evaluate(self, **args)

最后一行之前

--重建并重新安装库。
即 C:\Pevolve Source code\Pyevolve-0.6rc1\pyevolve\GPopulation(我的在这里)

使用 IDLE 编辑

--在self.clearFlags()

之前添加proc_pool.close() & proc_pool.join()

--保存

打开命令提示符

  1. 转到C:\Pevolve源code\Pyevolve-0.6rc1
  2. setup.py 建造
  3. setup.py 安装