我想知道是否有一般的经验法则来确定人口规模。我读过一本书,说染色体长度的2倍是一个很好的起点。我是否假设如果我有一个包含5个变量的方程式,那么我应该有10个总体吗?

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

更大的人口规模。

优点:
多样性更大,因此更有可能选择具有良好适应性的特征。

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



人口规模较小。

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

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

编辑

一些额外的信息,比如说我有一个包含5个未知参数的方程式。对于每个参数,我想尝试将其分配给每个变量10-50个值。所以举个例子

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

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

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

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

最佳答案

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

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

但是,如果您坚持使用遗传算法,那么我建议您放弃该问题的经验法则,并真正考虑将初始种群作为衡量您期望最终解决方案与最终解决方案之间距离的度量。

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

另外,如果您担心计算强度,我将继续说,这不应该成为问题,因为您要处理的是这么小的解决方案集。我认为,对于像这样的较小集合,更好的经验法则应遵循以下原则:

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

可能会针对特定问题按比例增加常量。

绝对不是很好的经验法则(没有法则),但这是我的逻辑:
  • 染色体长度只是解决方案空间大小的代理,因此考虑解决方案空间的大小必然会增加此代理的准确性
  • 较小的突变率需要更大的种群数量,以弥补您更容易陷入本地极小值的事实
  • 由于遗传算法类似于对您的解空间的树搜索,因此任何经验法则都应该对数扩展。
  • 平方项主要是尝试此操作的结果,但对数缩放似乎有点激进,尽管总体形状似乎正确。

  • 但是,我认为一个更好的选择是从一个合理的数字(100)开始并尝试上下迭代,直到找到一个人口数量,该人口规模似乎在准确性和执行速度之间取得平衡。

    关于machine-learning - 遗传算法,人口大与人口小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18113184/

    10-10 13:48