7

一些遗传算法框架,例如http://www.aforgenet.com/需要很多参数,例如突变率、种群大小等

这些参数有通用的最佳数字吗?我相信这取决于问题(适应功能延迟、突变延迟、重组延迟、进化率等)。我的第一个想法是使用一个 GA 来配置另一个 GA。

有更好的想法吗?

4

6 回答 6

18

我发现将这些问题视为一个景观是有帮助的,你试图找到最低点。

当景观太大而无法仅测试所有点时,使用遗传算法之类的方法,并且景观的“形状”使得梯度下降之类的方法会让你陷入局部最小值。

一个很好的例子是 Rastrigin 的函数(图像参考):( 来源:science-computing.com替代文字

您的选择是:

世代规模:

  • 太大:您将有很长的纪元时间,限制了每个人探索其社区的机会。
  • 太小:您无法很好地覆盖搜索空间。

突变率:

  • 太高了:你冒着个人“跳过”他们接近的解决方案的风险。
  • 太低:他们都会陷入局部最小值。

所以它确实取决于您自己的特定搜索空间。试验参数并尝试找到最佳组合。我同意使用另一个 GA 来优化参数并不能解决问题。

于 2009-07-02T21:50:00.073 回答
12

我觉得相当令人失望的是,有这么多答案假设您无法自动找到遗传算法的最佳参数。我同意参数确实取决于问题,但是有一些方法可以找到它们。

此外,没有免费午餐定理绝不会阻止您找到最佳参数,因为已经有讨论质疑这一事实:

有两种类型的参数设置:

  • 参数调整(离线参数搜索 - 在运行 GA 之前)
  • 参数控制(在线参数调整 - 在 GA 运行期间)
    • 自适应
    • 自适应
    • 确定性

有很多文献描述了如何找到这些最佳参数,这取决于您是要离线还是在线进行参数搜索。普遍认为离线更适合大多数情况,因为在线参数控制方法会比离线增加太多复杂性。

以下是一些查找“最佳”参数的示例:

参数调整

参数控制

还有更多,只需使用上面使用的关键字搜索文献。有科学的方法可以为任何给定的问题找到合适的参数!

于 2014-01-14T17:06:01.860 回答
8

这并不容易。

为什么?因为没有免费午餐定理。这基本上表明没有通用的搜索算法适用于所有问题。

您能做的最好的事情就是针对特定问题空间定制搜索。您必须手动调整参数以适合您的解决方案。对不起。

使用 GA 查找 GA 参数变得复杂。您如何为 GAGA 搜索找到最佳参数?另一个GA...?

于 2009-07-02T22:39:34.013 回答
6

有一次我编写了一个遗传算法,我将这些值包含在要变异的值中,基本上就像你说的使用 GA 来配置自身。它工作得非常好,特别是因为我发现在计算过程中改变这些值是有益的。

于 2009-07-02T17:22:41.897 回答
4

对于给定的数据集,确实没有一种自动的方法可以做到这一点。如果有,他们不会公开这些参数。使用第二个 GA 来调整第一个 GA 的参数是危险的——您是否使用第三个 GA 来调整第二个 GA 的参数?即使你这样做了,这也是过度拟合的秘诀。

我的建议是使用参数,看看它们如何影响每一代的人口分布,需要多少代才能得到可接受的答案,等等。如果你有太多的突变,你的人口将永远不会稳定。太少了,你最终会出现同质化。

GA 的一个肮脏秘密是调整它们是一门艺术,而不是一门科学。

于 2009-07-02T17:32:08.093 回答
2

正如其他人所说,没有一个答案。尽管在 0.7-0.9 级别上使用交叉率和在 0.1-0.3 上使用突变率有一些趋势,但这确实取决于。取决于问题,可能取决于适应度函数,并且绝对取决于遗传算法本身。遗传算法有很多变体,同一问题的最优参数可能会有所不同。

至于使用 GA 来调整目标 GA 的参数,有类似的方法,但是,正如所指出的,如何调整第一个 GA 的参数?请记住,突变率在开始时可能应该更高,并且应该降低,而交叉率应该增加。这是探索与开发的问题。有一些方法可以让 GA 更具适应性,并让它在寻找解决方案时改变它的参数。模糊控制器有时用于操纵 GA 的参数。还有其他方法。

如果您想了解更多信息,请购买一些书籍,或查看学术研究论文。
如果您需要在没有大量研究的情况下设置自己的 GA,请尝试其他工作的一些值,并进行试验。

于 2009-11-04T19:55:30.167 回答