我正在为一个学校项目开发一个 GA,我注意到在评估我的健身功能时,一个人相当于它的倒数。
例如,集合(1, 1, -1, 1)
等价于(-1, -1, 1, -1)
。为了缩小我的搜索空间并更有效地找到解决方案,如何避免我的交叉在搜索空间的后半部分进行搜索?
我正在为一个学校项目开发一个 GA,我注意到在评估我的健身功能时,一个人相当于它的倒数。
例如,集合(1, 1, -1, 1)
等价于(-1, -1, 1, -1)
。为了缩小我的搜索空间并更有效地找到解决方案,如何避免我的交叉在搜索空间的后半部分进行搜索?
把空间减半。要求第一个元素是非负的,那么如果你有 (x_1, .. , x_n) 和它的逆 (-x_1, .. , -x_n) 只有一个将在搜索空间中。(如果 x_1 = 0 它们是相同的)顺便说一句,你要解决的问题是什么?
尝试重新编写您的适应度函数以适当地为个人分配权重 - 不确定您要解决的问题或如何重新分配权重。请记住,最适合的个体应该在池中,并且更有可能被选中进行交叉 - 您不希望池中充满了具有相同适合度的假人,因为良好的解决方案违背了遗传算法的目的
它的计算成本很高,但这样的事情应该可以完成。忽略第一代,对于每一代 >=2:
如果通过交叉/突变产生的孩子是逆的,则忽略它并生成另一个孩子,直到它是一个“好”孩子。