在遗传算法中执行决策约束

时间:2019-07-19 13:46:36

标签: optimization genetic-algorithm

我目前正在为我的算法使用NSGA-II的实现。我有两个决策变量A0A1,它们需要满足0 < A0 < pi0 < A1 <= A0的要求。变异和交叉后,决策变量通常会超出范围,需要重新约束,我不确定采取最佳方法。

在某些实现中,我已经看到通过将决策变量设置为它所跨越的界限来处理它。因此,例如,如果A1的结果大于A0,则设置A1 = A0。但是,我不确定这是最好的方法。我考虑的另一种可能性是修改边界,因此如果使用A1 > A0,则将其重置为A1 = mod(A1, A0)。或在发生突变的情况下,如果A1被突变为A1 = A1 + m > A0,那么我会将其反映到A1 = A1 - m < A0

我已经尝试了所有这些方法,但是由于我仍在调整其他参数,因此我不清楚哪个更好,或者是否有最佳选择。有人有什么想法吗?

0 个答案:

没有答案