如何在多处理deap python遗传算法中添加最大(或最小)适应性终止条件

时间:2018-12-19 22:24:02

标签: python genetic-algorithm deap

此问题是有关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的新手,请告诉我是否需要编辑此问题以适合论坛规则

1 个答案:

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