Pyevolve采用多处理,每个GA生成使用更多RAM

时间:2018-03-02 19:53:38

标签: python-multiprocessing pyevolve

我正在使用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()

1 个答案:

答案 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()

-保存

打开命令提示符

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