2

这个问题是对这个关于python deap遗传算法库的问题的后续回答: How to add exclude mechanism in Pythongenetic 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

如何添加类似于max(fits) < 100onemax_mp.py 中的最大(或最小)条件?

如果我确实添加了这个条件,这个条件是否适用于整个多进程进程池中的每个进程?如果一个进程满足结束条件,其他进程是否停止?
现在看来我只能控制代数:

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的新手,如果我需要编辑这个问题以适应论坛规则,请告诉我

4

1 回答 1

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

于 2018-12-20T00:56:35.020 回答