3

我正在为一个学校项目开发一个 GA,我注意到在评估我的健身功能时,一个人相当于它的倒数。

例如,集合(1, 1, -1, 1)等价于(-1, -1, 1, -1)。为了缩小我的搜索空间并更有效地找到解决方案,如何避免我的交叉在搜索空间的后半部分进行搜索?

4

3 回答 3

2

把空间减半。要求第一个元素是非负的,那么如果你有 (x_1, .. , x_n) 和它的逆 (-x_1, .. , -x_n) 只有一个将在搜索空间中。(如果 x_1 = 0 它们是相同的)顺便说一句,你要解决的问题是什么?

于 2010-02-16T06:46:47.880 回答
1

尝试重新编写您的适应度函数以适当地为个人分配权重 - 不确定您要解决的问题或如何重新分配权重。请记住,最适合的个体应该在池中,并且更有可能被选中进行交叉 - 您不希望池中充满了具有相同适合度的假人,因为良好的解决方案违背了遗传算法的目的

于 2010-02-16T05:16:40.650 回答
1

它的计算成本很高,但这样的事情应该可以完成。忽略第一代,对于每一代 >=2:

如果通过交叉/突变产生的孩子是逆的,则忽略它并生成另一个孩子,直到它是一个“好”孩子。

于 2010-02-20T10:41:59.743 回答