我目前正在为我的算法使用NSGA-II的实现。我有两个决策变量A0
和A1
,它们需要满足0 < A0 < pi
和0 < A1 <= A0
的要求。变异和交叉后,决策变量通常会超出范围,需要重新约束,我不确定采取最佳方法。
在某些实现中,我已经看到通过将决策变量设置为它所跨越的界限来处理它。因此,例如,如果A1
的结果大于A0
,则设置A1 = A0
。但是,我不确定这是最好的方法。我考虑的另一种可能性是修改边界,因此如果使用A1 > A0
,则将其重置为A1 = mod(A1, A0)
。或在发生突变的情况下,如果A1
被突变为A1 = A1 + m > A0
,那么我会将其反映到A1 = A1 - m < A0
。
我已经尝试了所有这些方法,但是由于我仍在调整其他参数,因此我不清楚哪个更好,或者是否有最佳选择。有人有什么想法吗?