某些遗传算法框架,例如http://www.aforgenet.com/需要许多参数,例如突变率,种群大小等。
这些参数有通用的最佳数字吗?我认为这取决于问题(适应度函数延迟,突变延迟,重组延迟,进化速率等)。我的第一个想法是使用GA来配置另一个GA。
有更好的想法吗?
答案 0 :(得分:17)
我发现将这些问题视为一种景观有助于您找到最低点。
当景观太大而无法测试所有点时,使用遗传算法等方法,并且景观的“形状”使得像渐变下降的方法会让你陷入局部最小值。
一个很好的例子是Rastrigin的功能(image ref): :
您的选择是:
代数:
突变率:
所以它确实取决于您自己的特定搜索空间。试验参数并尝试找到最佳组合。我同意使用另一个GA来优化参数并不能解决问题。
答案 1 :(得分:10)
我觉得相当令人失望的是,有很多答案假设你无法自动找到遗传算法的最佳参数。 我同意参数确实取决于问题,但是有一些方法可以找到它们。
此外,No Free Lunch Theorem绝不会阻止您找到最佳参数,因为已经有讨论对此事提出异议:
参数设置有两种类型:
有很多文献描述了如何找到这些最佳参数,这取决于您是想要离线还是在线进行参数搜索。流行的观点是离线更适合大多数情况,因为在线参数控制方法会增加离线的复杂性。
以下是一些查找“最佳”参数的示例:
参数调整:
参数控制:
还有更多,只需使用上面使用的关键字搜索文献。有科学的方法可以找到任何给定问题的合适参数!
答案 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,请尝试其他工作中的一些值,并进行实验。