NSGAIII中的Niche preservation操作

来源:互联网 发布:谌洪果 知无知 编辑:程序博客网 时间:2024/06/10 14:00

继续上面的说,接下来按照NSGAIII的paper所说,就是Nche preservation操作了,也就是当Fl中个体加入到当前pool中的话,个体过多的时候的选择了,可以说上面的子算法都是为这块最终服务的。下面是算法的步骤和详细过程:

1:这个时候需要明确1个符号,st+1,在st+1中是包含了Fl中的全部的个体的,但是st+1的size是超过了预留的总共的个体的数量的。接下来我们对每个reference weight进行遍历,看看它被st+1去掉Fl的个体中引用的次数,找到被最少引用的(也就是被最少的个体所引用为是最小距离,这些个体必须是st+1去掉Fl的个体) 我们记录为pj

2:接下来需要分情况讨论,如果pj=0,也就是说在st+1排出掉Fl的个体中没有个体被associate到这个参考点向量的话

2.1:在Fl看如果有个体被安排给这个参考点向量的话,那么就找距离最小的那个点,并且把它从Fl中拿出来,当做是被选出来的,并且设置pj=pj+1
2.2:如果在Fl中也是没有个体被引用到这个参考点的话,那么就把这个参考点向量直接去掉,接下来不用他了

3:如果pj>0
3.1:如果在Fl中有个体安排给这个参考点向量的话,论文中说的是根据自己的需要自己选,但是也给出来说可以像在2.1中选出来一个距离这个参考点向量最近的点。
3.2:同2.2一样

在代码实现的时候,其实可以直接合并步骤2和步骤3的,因为他们的下面2个操作都是一样的。

1 0
原创粉丝点击