我实现了一种遗传算法来解决旅行商问题(边缘的权重随一天的时间而变化)的问题。目前,我正在评估仿真的不同参数,但偶然发现了一个我无法向自己解释的相关性:

python - 遗传算法: Higher Mutation Rate leads to lower run time-LMLPHP

较高的突变率导致较低的运行时间。就我个人而言,我会相反,因为较高的突变率会产生更多的操作。
(25%变异率比5%快12%)

8%的突变率可以达到最好的结果(5%优于10%,而25%表现最差(0%除外))适应性值越低越好。

python - 遗传算法: Higher Mutation Rate leads to lower run time-LMLPHP

迭代计数由生成参数设置,在所有测试用例中,生成参数均设置为10.000。

每个测试用例执行10次。

我的实现(在python中)如下所示:

def mutate(self,p):
    for i in self.inhabitants:
        r = random()
        if r <= p:
            i.mutate()
p是突变率

突变看起来像这样
def mutate(self):
    r1 = randint(0,self.locations.size()-1)
    r2 = randint(0,self.locations.size()-1)
    self.locations.swap(r1,r2)

为什么更高的突变率会导致更快的执行时间?

编辑:我实际上在Raspberry Pi上运行了相同的测试(速度慢了9倍),并且结果相同:

python - 遗传算法: Higher Mutation Rate leads to lower run time-LMLPHP

最佳答案

没有完整的代码是不可能知道的,但是以下内容似乎是合理的:

当突变率较低时,几代后,种群变得比突变率较高时更均匀。在假设您使用轮盘抽样的某种变体的基础上,更均匀的种群意味着轮盘的每个“旋转”平均花费的时间要比种群数量更多的种群(在这种情况下,相对较少的成员将主导轮盘的分布)适应度,因此往往是在对较少的人群进行扫描后才选择的)。

可以肯定的是,您可以使用诸如cProfile之类的性能分析工具来准确查看这些CPU周期的运行方向。

关于python - 遗传算法: Higher Mutation Rate leads to lower run time,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36179057/

10-12 21:48