遗传算法,人口大而小

Han*_*del 6 artificial-intelligence machine-learning genetic-algorithm

我想知道人口规模是否有一般的经验法则.我读过一本书,认为2倍的染色体长度是一个很好的起点.我是否正确地假设如果我有一个包含5个变量的等式,我应该有10个人口?

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

人口规模较大.

优点: 更大的多样性,因此更有可能获得恢复健康的特性.

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

VS

较小的人口规模.

优点: 每单位时间经历的代数较多.

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

编辑

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

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

我认为GA对于这样的问题是一个很好的方法,因为搜索空间非常大,即上面的最坏情况将是312,500,000个排列(除非我搞砸了?)n!/(nk)!其中n = 50且k = 1 => 50*50*50*50*50

不幸的是,要检查的参数/值范围的数量可能会有很大不同,所以我正在寻找一些关于我应该设置人口数量的经验法则.

感谢您的帮助+如果您需要/更喜欢在其中一个聊天室中讨论更多信息,请给我一个大喊.

Sla*_*off 7

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

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

但是,如果你坚持使用GA我会建议放弃这个问题的经验法则,并且真的考虑将人口作为衡量你预期随机解决方案的最终解决方案的距离的一个衡量标准.

许多拇指规则依赖于染色体长度的原因是因为这是一个很好的代理,如果我有一百个变量,并且给定随机生成的dna序列将比我只有一个变量更理想.

另外,如果你担心计算强度,我会继续说它不应该是一个问题,因为你正在处理这么小的解决方案集.对于像这样的小型套装,我认为更好的经验法则是:

(ln(chromosome_length*(solution_space/granularity)/mutation_rate))^2
Run Code Online (Sandbox Code Playgroud)

可能会持续不断地针对特定问题进行扩展.

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

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

但是我认为更好的选择是从一个合理的数字(100)开始并尝试上下迭代,直到找到一个看起来平衡准确性和执行速度的总体大小.