一些遗传算法框架,例如http://www.aforgenet.com/需要很多参数,例如突变率、种群大小等
这些参数有通用的最佳数字吗?我相信这取决于问题(适应功能延迟、突变延迟、重组延迟、进化率等)。我的第一个想法是使用一个 GA 来配置另一个 GA。
有更好的想法吗?
一些遗传算法框架,例如http://www.aforgenet.com/需要很多参数,例如突变率、种群大小等
这些参数有通用的最佳数字吗?我相信这取决于问题(适应功能延迟、突变延迟、重组延迟、进化率等)。我的第一个想法是使用一个 GA 来配置另一个 GA。
有更好的想法吗?
我发现将这些问题视为一个景观是有帮助的,你试图找到最低点。
当景观太大而无法仅测试所有点时,使用遗传算法之类的方法,并且景观的“形状”使得梯度下降之类的方法会让你陷入局部最小值。
一个很好的例子是 Rastrigin 的函数(图像参考):(
来源:science-computing.com)
:
您的选择是:
世代规模:
突变率:
所以它确实取决于您自己的特定搜索空间。试验参数并尝试找到最佳组合。我同意使用另一个 GA 来优化参数并不能解决问题。
我觉得相当令人失望的是,有这么多答案假设您无法自动找到遗传算法的最佳参数。我同意参数确实取决于问题,但是有一些方法可以找到它们。
此外,没有免费午餐定理绝不会阻止您找到最佳参数,因为已经有讨论质疑这一事实:
有两种类型的参数设置:
有很多文献描述了如何找到这些最佳参数,这取决于您是要离线还是在线进行参数搜索。普遍认为离线更适合大多数情况,因为在线参数控制方法会比离线增加太多复杂性。
以下是一些查找“最佳”参数的示例:
参数调整:
参数控制:
还有更多,只需使用上面使用的关键字搜索文献。有科学的方法可以为任何给定的问题找到合适的参数!
这并不容易。
为什么?因为没有免费午餐定理。这基本上表明没有通用的搜索算法适用于所有问题。
您能做的最好的事情就是针对特定问题空间定制搜索。您必须手动调整参数以适合您的解决方案。对不起。
使用 GA 查找 GA 参数变得复杂。您如何为 GAGA 搜索找到最佳参数?另一个GA...?
有一次我编写了一个遗传算法,我将这些值包含在要变异的值中,基本上就像你说的使用 GA 来配置自身。它工作得非常好,特别是因为我发现在计算过程中改变这些值是有益的。
对于给定的数据集,确实没有一种自动的方法可以做到这一点。如果有,他们不会公开这些参数。使用第二个 GA 来调整第一个 GA 的参数是危险的——您是否使用第三个 GA 来调整第二个 GA 的参数?即使你这样做了,这也是过度拟合的秘诀。
我的建议是使用参数,看看它们如何影响每一代的人口分布,需要多少代才能得到可接受的答案,等等。如果你有太多的突变,你的人口将永远不会稳定。太少了,你最终会出现同质化。
GA 的一个肮脏秘密是调整它们是一门艺术,而不是一门科学。
正如其他人所说,没有一个答案。尽管在 0.7-0.9 级别上使用交叉率和在 0.1-0.3 上使用突变率有一些趋势,但这确实取决于。取决于问题,可能取决于适应度函数,并且绝对取决于遗传算法本身。遗传算法有很多变体,同一问题的最优参数可能会有所不同。
至于使用 GA 来调整目标 GA 的参数,有类似的方法,但是,正如所指出的,如何调整第一个 GA 的参数?请记住,突变率在开始时可能应该更高,并且应该降低,而交叉率应该增加。这是探索与开发的问题。有一些方法可以让 GA 更具适应性,并让它在寻找解决方案时改变它的参数。模糊控制器有时用于操纵 GA 的参数。还有其他方法。
如果您想了解更多信息,请购买一些书籍,或查看学术研究论文。
如果您需要在没有大量研究的情况下设置自己的 GA,请尝试其他工作的一些值,并进行试验。