我正在编写一个基因编程 (GP) 系统(用 C 语言,但这是一个小细节)。我读过很多文献(Koza、Poli、Langdon、Banzhaf、Brameier 等),但有些实现细节我从未见过解释。例如:
我使用的是稳态人口而不是世代相传的方法,主要是为了使用计算机的所有内存,而不是为临时人口保留一半。
Q1。在 GP 中,与 GA 不同,当您执行交叉时,您选择两个父母,但您是创建一个或两个孩子,还是您可以自由选择?
Q2。在稳态 GP 中,与世代系统相反,交叉创建的孩子取代了人口中的哪些成员?这是我没看到讨论过的。是两个父母,还是另外两个随机选择的成员?如果是后者,我可以理解,您可能会使用负锦标赛选择来选择替换成员,但这不会造成过早收敛吗?(在交叉事件之后,人口包含两个原始父母加上这些父母的两个孩子,另外两个随机成员被删除。精英主义是固有的。)
Q3。是否有专门针对 GP 的网络论坛或邮件列表?奇怪的是我还没有找到。雅虎的 GP 组几乎只用于发布公告,Poli/Langdon Field Guide 论坛几乎保持沉默,而像 gamedev.net 这样的通用/游戏编程网站上的 GP 讨论非常基础。
感谢您的任何帮助,您可以提供!