【问题标题】:Genetic Algorithm, large population vs small one遗传算法,大种群与小种群
【发布时间】:2013-08-09 09:47:26
【问题描述】:

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

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

更大的人口规模。

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

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

对

人口规模较小。

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

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

编辑

一些附加信息,假设我有一个包含 5 个未知参数的方程。对于每个参数,我有 10-50 个值之间的任何值,我想尝试分配给这些变量中的每一个。比如

variable1 = 20 个不同的值 变量 2 = 15 个不同的值 ...

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

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

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

【问题讨论】:

标签: machine-learning artificial-intelligence genetic-algorithm


【解决方案1】:

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

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

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

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

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

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

可能会针对特定问题添加一个常数。

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

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

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

【讨论】:

  • +1 表示 2 倍的染色体长度并不总是一个好主意。我忘了提。
  • 我通常采用类似的方法。我主要使用遗传算法进行参数估计,染色体大小通常在 40-100 左右不等。我没有找到任何像样的经验法则,通常使用您提到的方法。由于我的遗传算法通常执行数百次,花费几天时间测试不同的种群规模(以及其他参数)效果很好。
  • @TerryMalone 我在一些例子上试过了,我认为这是一个合理数字的平方根。
  • 不,看起来您理解正确,也就是说,3 亿尽管是一个很大的数字,但对于假设这些是数值的问题空间来说是非常小的。如果它们是名义上的,情况就不同了,但它与 0 到 1 之间的三个数字相当,精度相当差。我不会强行使用它,但简单的梯度下降或使用 SLSQP 应该没问题。
  • 啊,不,在那个例子中,您的解决方案空间为 50,您的粒度为 1(给予或接受)。解空间用于染色体中的一个变量。结果约为 50。粒度将用于数字分类,您会说,我正在寻找 1000 范围内的东西,但我只需要 2 的粒度(因此 567 和 568 将被视为一样)。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2014-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多