初始遗传编程参数

cmp*_*rer 9 genetic-programming genetic-algorithm

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

mik*_*era 3

您会发现这很大程度上取决于您的问题领域 - 特别是适应度函数的性质、您的实现 DSL 等。

一些个人经历​​:

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