此问题是有关python deap遗传算法库的以下问题的解答: How to add elimination mechanism in Python genetic algorithm based on DEAP
使用来自deap github的参考代码: https://github.com/DEAP/deap/blob/master/examples/ga/onemax.py
第112行
while max(fits) < 100 and g < 1000: #from onemax.py
在deap github示例'onemax_mp.py'上: https://github.com/DEAP/deap/blob/master/examples/ga/onemax_mp.py
如何在onemax_mp.py中添加类似于max(fits) < 100
的最大(或最小)条件?
如果我确实添加了此条件,此条件是否适用于整个多进程进程池中的每个进程?
如果一个过程满足最终条件,其他过程是否停止?
现在看来,我只能控制世代数:
https://github.com/DEAP/deap/blob/master/examples/ga/onemax_mp.py
第40行
algorithms.eaSimple(pop, toolbox, cxpb=0.5, mutpb=0.2, ngen=40, stats=stats, halloffame=hof) #ngen=40 means calculate 40 generations
我是stackoverflow的新手,请告诉我是否需要编辑此问题以适合论坛规则
答案 0 :(得分:0)
因此,您要查看的行是终止条件。当发现适应度大于100的个体或经过1000代后,进化就停止了。我在MOEA上做了很多工作,但是对DEAP不太熟悉。撇开该免责声明,看起来它并没有在发展单独的总体,只是在进行并行评估。因此只有一个人口。在文档中,您似乎可以通过以下操作将onemax.py
放入多处理池中:
import multiprocessing
pool = multiprocessing.Pool()
toolbox.register("map", pool.map)
我从这里获取了这段代码:https://deap.readthedocs.io/en/master/tutorials/basic/part4.html