我想知道人口规模是否有通用的经验法则。我在一本书中读到,两倍染色体长度是一个很好的起点。如果我有一个包含 5 个变量的方程,那么我的总体应该是 10 个,我的假设是否正确?
我还想知道以下内容是否正确:
人口规模更大。
优点: 多样性越大,就越有可能发现能够带来良好适应性的特征。
缺点: 需要更长的处理时间。
对比
人口规模较小。
优点: 单位时间内经历的世代数量较多。
缺点: 为了补偿较小的种群,突变必须更加突出??
编辑
一些额外的信息,假设我有一个有 5 个未知参数的方程。对于每个参数,我有 10-50 个值,我想尝试分配给每个变量。例如
变量1 = 20 个不同的值 变量2 = 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/