初始遗传编程参数

时间:2010-05-06 15:49:59

标签: genetic-algorithm genetic-programming

我做了一点GP(注意:很少)在大学工作,最近一直在玩它。我的问题是关于初始运行设置(种群大小,世代数,树的最小/最大深度,初始树的最小/最大深度,用于不同复制操作的百分比等)。设置这些参数的常规做法是什么?人们使用哪些论文/网站作为指导?

5 个答案:

答案 0 :(得分:3)

你会发现这很大程度上取决于你的问题领域 - 特别是健身功能的性质,你的实施DSL等。

一些个人经历​​:

  • 人口规模庞大似乎有效 当你有健康的嘈杂时更好 功能,我认为这是因为增长 连续几代人群中的亚群行为 提供更多的抽样 健身功能。我通常使用 100用于较少噪声/确定性功能,1000 + 吵闹。
  • 对于世代,最好衡量一下 健身功能,当它停止 符合您的目标标准。我通常会运行几百代,看看会出现什么样的答案,如果它没有显示出任何改进,那么你可能在其他地方遇到了问题。
  • 树深度要求实际上取决于您的DSL。我有时会尝试做一个 没有明确的实施 限制但惩罚或消除 运行时间太长的程序(可能是 你真正关心的是什么......)我还发现总节点数为~1000是非常有用的硬限制。
  • 似乎没有不同突变/重组操作符的百分比 这么重要。只要 你有一套全面的突变,任何合理的平衡 分配通常会奏效。我认为这样做的原因是你基本上在寻找有利的改进,所以主要目的只是确保试验改进在所有可能性中得到合理分配。

答案 1 :(得分:2)

为什么不尝试使用遗传算法为您优化这些参数? :)

  

计算机科学中的任何问题都可以   用另一层解决了   间接(除了太多   间接层。)

     

-David J. Wheeler

答案 2 :(得分:1)

当我开始研究遗传算法时,我遇到了同样的问题。

我想在一个非常简单的问题上收集数据变量参数,并将给定的运算符和参数值(例如变异率等)与给定的结果相关联,并与人口规模等有关。

一旦我开始进入GA,我就会意识到,鉴于变量数量巨大,这是一项艰巨的任务,而且泛化非常困难。

如果您决定简化问题并使用固定的方式来实现交叉,选择,并且只使用人口规模和突变率(以给定方式实施)来尝试提出问题,那么请从我(有限的)经验谈谈一般的结果你很快就会意识到太多的变量仍在发挥作用,因为在一天结束时,在统计数据之后,你会得到一个不错的结果(无论你想要定义什么样的体面的)显然仍然主要依赖于您正在解决的问题,因此依赖于基因组大小(以不同方式表示相同问题显然会导致给定GA参数的效果不同结果!)。< / p>

当然可以起草一套准则 - 正如(稀有但好的)文献所证明的那样 - 但只有当手头的问题可以完全相同时,你才能用统计术语有效地概括结果。方式和适应性以某种方式评估等效方式(这通常意味着你正在处理一个非常类似的问题)。

答案 3 :(得分:0)

在这些问题上看看Koza的voluminous tomes

答案 4 :(得分:0)

即使在GP社区内,也有很多不同的思想流派 - 有些人认为(低)数千人中的人口已经足够,而Koza和其他人通常认为如果值得在GP人群中以不到100万人开始全科医生运行; - )

如前所述,这取决于您的个人品味和经验,资源以及可能使用的GP系统!

干杯, 扬