改变交叉率和突变率有什么影响?

人工智能 遗传算法 超参数优化 交叉运营商 变异算子 基因操作员
2021-10-26 04:21:37

使用a有什么影响:

  • 低交叉率

  • 高交叉率

  • 低突变率

  • 突变率高

1个回答

交叉率,pc[0,1], 是一个超参数,用于控制解决方案进行交叉的速率。所以,越高pc,您执行的交叉越多,因此您可以在种群中引入更多的多样性(就溶液/染色体而言)。的典型值pc在范围内[0.5,1.0]. 例如,在这个简单的实现中,我使用了pc=0.8. 在这种情况下,我手动搜索了这个值(并没有花费我太多时间让 GA 找到我正在寻找的解决方案),但在其他情况/问题中,您可能需要执行一些超参数优化(例如使用网格搜索)。

突变率,pm[0,1](也是一个超参数)控制你突变单个染色体或单个染色体基因的速率。例如,如果你有一个二元染色体n位,你可以翻转i有概率的第 th 位pm, 对所有人i独立。突变可以防止过早收敛,但是,如果pm很高,遗传算法变成了随机搜索,所以值为pm通常不高。本文(您可能应该阅读,因为它包含有关变异和交叉操作的更多信息,尽管它有点旧)指出典型值在范围内[0.005,0.05],但是,在这个实现中,我使用了pm=0.5.

因此,一般而言,这些比率的较高值会以牺牲开发为代价来促进勘探。从这个意义上说,这类似于ϵ在里面ϵ- Q-learning(一种著名的强化学习算法)中的贪婪行为策略。

但是,请注意,这些操作中的每一个都可能撤消其他操作。例如,假设我们有二元染色体p1=[0,1,0]p2=[0,0,1],我们可以通过替换(与概率pc) 位置的位ip1带着一点染色体p2在同一个位置i. 所以,在交叉之后,你可以得到孩子c1=[0,0,0]c2=[0,1,1]. 如果您通过翻转位来执行突变,那么您最终可能会得到与原始染色体相同的染色体,这也是您可能不希望具有非常高的突变率的原因之一。所以,突变率越高,你探索的越多,这并不完全正确,因为你最终可以得到与以前相同的解决方案,所以你没有探索任何东西。

您还可以为这些参数设置一个自适应值。例如,请参阅本文以获取此类自适应调度的示例。