如何找到遗传算法的最佳参数?

时间:2009-07-02 17:18:32

标签: genetic-algorithm aforge

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

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

有更好的想法吗?

6 个答案:

答案 0 :(得分:17)

我发现将这些问题视为一种景观有助于您找到最低点。

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

一个很好的例子是Rastrigin的功能(image ref): alt text

您的选择是:

代数:

  • 太大了:你会有一个 漫长的时代,限制了多少 每个人都有机会 探索它的邻居。
  • 太小:你没有变好 覆盖搜索空间。

突变率:

  • 太高:你冒着个人风险 “跳过”他们的解决方案 相近。
  • 太低了:他们都会得到 卡在当地最低点。

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

答案 1 :(得分:10)

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

此外,No Free Lunch Theorem绝不会阻止您找到最佳参数,因为已经有讨论对此事提出异议:

参数设置有两种类型:

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

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

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

参数调整

参数控制

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

答案 2 :(得分:7)

这并不容易。

为什么呢?由于No Free Lunch定理。这基本上表明没有一般搜索算法适用于所有问题。

您可以做的最好的事情是定制搜索特定问题空间。您必须手动调整参数以适合您的解决方案。遗憾。

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

答案 3 :(得分:5)

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

答案 4 :(得分:4)

对于给定的数据集,实际上没有自动的方法。如果有,他们不会暴露这些参数。使用第二个GA来调整第一个GA的参数是危险的 - 您是否使用第三个GA来调整第二个GA的参数?即使你这样做,它仍然是过度拟合的秘诀。

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

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

答案 5 :(得分:2)

正如其他人所说,没有人回答。虽然有一些趋势,在0.7-0.9的水平上使用交叉率,在0.1-0.3上使用突变,这实际上取决于。取决于问题,可能取决于适应度函数,而且肯定取决于遗传算法本身。 GA存在许多变化,同一问题的最佳参数可能会有所不同。

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

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