我正在写一篇GP,我需要一些关于交叉和变异操作的建议。 GP正在尝试为具有硬行约束和较弱列限制的矩阵找到最佳解决方案。
对于总体中的给定解决方案,行包含来自固定集的对象类型ID的随机组合。 GP正在尝试找到一种解决方案,在布置行之后,如果您计算每列中的ID,则每种类型的数量必须落在该ID的建议范围内。我写了一个适应度函数,它允许我对解决方案进行评分,使其与柱约束的接近程度 - 100%是所有列都在规格范围内。
我需要一点建议就是我的交叉。父母选自具有较高健康分数的解决方案。我有一个单点交叉点,我从父亲的顶部切下一些行,从母亲那里切下一些免费的底行来产生后代。我不能逐列切片,因为这几乎总会使解决方案变得不可行。
这种方法对于交叉是否合理?我担心没有足够好的遗传'材料'代代相传,最终使这个可行。对于变异,我只是计划重新随机化一行或两行并检查解决方案的新适应度分数。
感谢您提出的任何建议。
答案 0 :(得分:0)
在任何遗传算法中,应选择交叉方法以适合解决方案的编码。如果以特定的方式越过将使许多后代无法生存,那么你就不应该像那样越过它们。但是,它确实听起来像是越过行会阻止您彻底探索搜索空间。
您可以使用几种方法来解决此问题: