处理遗传算法中的成本:实施死刑

时间:2015-08-11 21:39:21

标签: r algorithm optimization genetic-algorithm

我想将“死刑方法”与遗传算法文献中提出的其他惩罚方法进行比较。

我正在使用R软件,因此我需要编写这些惩罚方法的代码。我发现很多困难,因为我还没有理解关于死刑功能的一件事:我如何处理不可行的后代,因为人口规模通常在遗传算法中是固定的?

我的意思是,我明白,为了适当地使用死刑,我必须用所有可行的解决方案来初始化遗传算法。但即使我在第一个群体(t = 0)中拥有所有可行的解决方案,我也可以在下一代使用不可行的解决方案,因为交叉和突变是“盲”操作符。

所以,既然死刑拒绝了所有不可行的解决方案,那么会发生什么? 下一代的人口数量是否会变小(原始昏暗的大小 - 不可行的解决方案的数量),或者我必须选择更多的父母进入交配池进行繁殖,直到下一代由“原始昏暗的大小”可行的后代组成或我必须再次尝试遗传算子,直到t + 1中的所有个体都可行?

1 个答案:

答案 0 :(得分:0)

我不知道R,但死刑理论暗示你应该产生更多的后代。

我会生成以下伪代码(转换为R):

n=<desired_population_size>;
while (n>0) {
   generate n offspring;
   eliminate the non feasible ones
   add the feasible ones to the new generation
   n=<desired population size> - <current new generation population size>
}

这个循环的唯一问题是它可能永远存在的风险(如果我们从未生成可行的解决方案)。即使它很小,如果你想保护自己,你可以使用一个简单的计数器来限制while循环中允许的迭代次数。

Michalewicz有一个pretty interesting article。看看。