有人能提供一些关于遗传编程的种群初始化算法的指导吗?
我已经了解了Grown、Full、Ramped half-half(来自《遗传编程实用指南》)的方法,并且看到了一个新的算法Two Fast Tree-Creation(我还没有阅读这篇论文)。
回答:
初始种群在启发式算法如遗传算法中扮演着重要角色,因为它有助于减少这些算法达到可接受结果所需的时间。此外,它还可能影响进化算法给出的最终答案的质量。(http://arxiv.org/pdf/1406.4518.pdf)
正如你所知道的Koza的不同种群方法,你也必须记住,每个使用的算法都不是100%随机的,也不能作为算法使用。因此,你可以预测下一个值会是什么。另一种你可以考虑使用的方法是称为均匀初始化的方法(参考免费PDF《遗传编程实用指南》)。这个方法的理念是,初始创建种群时,由于交叉和选择,几个世代后整个语法树可能会丢失。Langdon(2000)提出了一个称为“渐进均匀分布”的概念,它有效地允许用户指定可能树的大小范围,如果在搜索空间中生成的树的排列不满足大小范围,则无论其适应度评估值如何,该树都会被自动丢弃。从这里开始,渐进均匀分布将根据你使用的范围创建等量的树——所有这些都是你使用的函数和终止值的随机、独特的排列。(同样,参考《遗传编程实用指南》获取更多细节)这种方法在采样所需解决方案不对称而不是对称的情况下(这是渐进半半方法处理的)可能非常有用。
其他推荐的种群初始化读物:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.50.962&rep=rep1&type=pdf