6

我想知道人口规模是否有一般的经验法则。我在一本书中读到 2 倍染色体长度是一个很好的起点。我是否正确假设如果我有一个包含 5 个变量的方程,我应该有 10 个人口?

我也想知道以下是否正确:

更大的人口规模。

优点: 更大的多样性,因此更有可能获得返回良好适应性的特征。

缺点: 需要更长的时间来处理。

对比

较小的人口规模。

优点: 每单位时间经历的代数更多。

缺点: 为了补偿较小的人口,突变必须更加突出?

编辑

一些额外的信息,比如我有一个有 5 个未知参数的方程。对于每个参数,我有 10-50 个值之间的任何值,我想尝试分配给这些变量中的每一个。所以例如

variable1 = 20 个不同的值 variable2 = 15 个不同的值 ...

我认为 GA 将是解决此类问题的一种不错的方法,因为搜索空间非常大,即上述情况的最坏情况是 312,500,000 个排列(除非我搞砸了?)n!/(nk)!其中 n = 50 和 k = 1 => 50 * 50 * 50 * 50 * 50

不幸的是,要检查的参数数量/值范围可能会有很大差异,所以我一直在寻找某种经验法则来确定我应该设置多大的人口。

感谢您的帮助 + 如果您需要/希望在其中一个聊天室中讨论更多信息,请大声告诉我。

4

2 回答 2

7

我不确定你在哪里读到 2 倍染色体长度是一个很好的起点,但我猜这是一本专注于更大问题的书。

如果您只有五个变量,则遗传算法可能不是收敛到解决方案的正确选择。染色体长度为 5 时,您可能会发现您很快就达到了一个非确定性的(这将在随后的运行中发生变化)局部最小值,并在该空间周围缓慢迭代,直到找到真正的局部最小值。

但是,如果您坚持使用 GA,我建议您放弃该问题的经验法则,并真正考虑将起始人口作为衡量您期望随机解决方案与最终解决方案相距多远的衡量标准。

许多经验法则取决于染色体长度的原因是因为这是一个不错的代理,如果我有一百个变量,并且给定随机生成的 dna 序列将比我只有一个变量更不理想。

此外,如果您担心计算强度,我会继续说这不应该成为问题,因为您正在处理如此小的解决方案集。我认为对于像这样的较小集合来说,更好的经验法则是:

(ln(chromosome_length*(solution_space/granularity)/mutation_rate))^2

可能会针对特定问题投入一个常数。

这绝对不是一个很好的经验法则(没有规则),但这是我的逻辑:

  • 染色体长度只是解决空间大小的一个代理,因此考虑到解决空间的大小必然会增加这个代理的准确性
  • 较小的突变率需要较大的种群规模来弥补您更容易陷入局部最小值的事实
  • 任何经验法则都应该以对数方式扩展,因为遗传算法类似于对解决方案空间的树搜索。
  • 平方项主要是尝试这个的结果,但看起来对数缩放有点激进,尽管总体形状看起来是正确的。

但是我认为更好的选择是从一个合理的数字(100)开始,然后尝试上下迭代,直到找到一个似乎可以平衡准确性和执行速度的人口规模。

于 2013-08-08T15:42:48.017 回答
1

与大多数遗传算法参数一样,种群大小高度依赖于问题。有一些因素可以帮助指出您应该拥有大人口规模还是小人口规模,但很多时候在对您的问题运行之前针对已知解决方案测试不同的值是一个好主意(如果这是当然可能)。

不过,10 人的人口规模确实看起来相当小。你说你有一个包含五个变量的方程。您的问题是否由 5 个值的染色体表示?染色体看起来很小,如果是这种情况,使用遗传算法可能不是解决问题的最佳方法。也许如果您对您的问题以及您如何表达它提供更多详细信息,人们可能会更好地了解如何为您提供建议。

我还要补充一点,您对大小人口规模的不利因素并不完全正确。较大的人口规模确实比较小的人口规模需要更长的时间来处理,但由于它通常可以更快地解决问题,因此整体处理时间不一定更长。增益,它高度依赖于问题。人口规模较小的突变不应该更加突出。变异通常用于阻止遗传算法陷入局部最大值,通常应该是一个非常小的值。小群体更有可能陷入局部最大值,但如果您的突变值太高,您可能会抵消遗传算法的自然改进。

于 2013-08-08T15:36:40.197 回答