我在大学里做过一点GP(注:非常少),最近也一直在尝试。我的问题是关于初始运行设置(种群大小、世代数、树的最小/最大深度、初始树的最小/最大深度、不同繁殖操作所使用的百分比等)。设置这些参数的正常做法是什么?人们使用哪些论文/网站作为良好指南?
我在大学里做过一点GP(注:非常少),最近也一直在尝试。我的问题是关于初始运行设置(种群大小、世代数、树的最小/最大深度、初始树的最小/最大深度、不同繁殖操作所使用的百分比等)。设置这些参数的正常做法是什么?人们使用哪些论文/网站作为良好指南?
为什么不尝试使用遗传算法来优化这些参数呢? :)
计算机科学中的任何问题都可以通过添加另一层间接性来解决(除了过多的间接性)。
-David J. Wheeler
当我开始研究遗传算法时,我也有同样的问题。
我想收集在一个非常简单的问题上变化参数的数据,并将给定的运算符和参数值(例如突变率等)与人口大小等相关结果联系起来。
一旦我更深入地了解了GA,我就意识到由于变量数量巨大,这是一项巨大的任务,而且泛化极其困难。
从我的(有限的)经验来看,如果您决定简化问题并使用固定的方法来实现交叉、选择,并仅通过人口大小和突变率(以给定方式实现)尝试得出一般结果,您很快就会意识到仍然有太多的变量在发挥作用,因为无论如何,在统计上获得合理结果(无论您想如何定义“合理”)之后的代数数量显然仍然主要取决于您正在解决的问题,因此取决于基因组大小(以不同方式表示相同问题显然会导致不同的结果,涉及给定的GA参数的影响!)。
当然可以起草一套指南 - 如(虽然很少但好的)文献所证明的那样 - 但只有当手头的问题可以以完全相同的方式进行编码并且适应度以某种等效的方式进行评估时,您才能有效地用统计术语概括结果(这往往意味着您正在处理非常相似的问题)。
看看Koza在这些问题上的大部头著作。
即使在遗传编程社区内部,也存在非常不同的思想流派 - 有些人认为数千个个体足以构成一个种群,而Koza和其他人则经常认为只有在GP种群中拥有超过一百万个体时才值得开始运行GP ;-)
正如之前提到的,这取决于您的个人口味和经验、资源以及可能使用的GP系统!
祝好, Jan