使用a有什么影响:
低交叉率
高交叉率
低突变率
突变率高
使用a有什么影响:
低交叉率
高交叉率
低突变率
突变率高
交叉率,, 是一个超参数,用于控制解决方案进行交叉的速率。所以,越高,您执行的交叉越多,因此您可以在种群中引入更多的多样性(就溶液/染色体而言)。的典型值在范围内. 例如,在这个简单的实现中,我使用了. 在这种情况下,我手动搜索了这个值(并没有花费我太多时间让 GA 找到我正在寻找的解决方案),但在其他情况/问题中,您可能需要执行一些超参数优化(例如使用网格搜索)。
突变率,(也是一个超参数)控制你突变单个染色体或单个染色体基因的速率。例如,如果你有一个二元染色体位,你可以翻转有概率的第 th 位, 对所有人独立。突变可以防止过早收敛,但是,如果很高,遗传算法变成了随机搜索,所以值为通常不高。本文(您可能应该阅读,因为它包含有关变异和交叉操作的更多信息,尽管它有点旧)指出典型值在范围内,但是,在这个实现中,我使用了.
因此,一般而言,这些比率的较高值会以牺牲开发为代价来促进勘探。从这个意义上说,这类似于在里面- Q-learning(一种著名的强化学习算法)中的贪婪行为策略。
但是,请注意,这些操作中的每一个都可能撤消其他操作。例如,假设我们有二元染色体 和,我们可以通过替换(与概率) 位置的位的带着一点染色体在同一个位置. 所以,在交叉之后,你可以得到孩子和. 如果您通过翻转位来执行突变,那么您最终可能会得到与原始染色体相同的染色体,这也是您可能不希望具有非常高的突变率的原因之一。所以,突变率越高,你探索的越多,这并不完全正确,因为你最终可以得到与以前相同的解决方案,所以你没有探索任何东西。
您还可以为这些参数设置一个自适应值。例如,请参阅本文以获取此类自适应调度的示例。