确定种群大小 n&#xff0c;交叉概率 t&#xff0c;迭代次数 g 随机产生 n 个个体&#xff0c;它们整体视为种群 P for i &#61;1 to gP &#61; ∅ for j &#61;1 to n产生一个 [0,1] 的随机数 aif(a<t)从 P 中随机选出两个个体作为父母&#xff0c;交叉产生一个新的个体并放入 P’ 中else从 P 中随机选出一个个体&#xff0c;变异产生一个新的个体并放入 P’ 中endend利用非支配排序和拥挤距离&#xff0c;从 P∪P’ 中选出 n 个个体&#xff0c; 代替 P # NSGA-II改进的部分 end 输出最终种群 P 中的非支配个体
对于二目标优化问题来讲, 支配的含义在于 解A的值在两个目标函数上都优与解B , 这样我们就称 解A支配解B (不理解可以参照 Pareto理论) 假如横纵坐标为两个不同的约束函数, 函数值越小越优秀的情况下。 那么 B 显然能够支配 C和D , 因为 B的两个函数值都小于 C与 D, 因此 Sp&#61;C,DS_p &#61; {C,D}Sp&#61;C,D 。 而 C 显然受到 A 和 B 的支配, 因此 np&#61;2np &#61; 2np&#61;2 。
3) 论文解释
原文
First, for each solution we calculate two entities: 1) domination count npn_pnp, the number of solutions which dominate the solution p, and 2) SpS_pSp, a set of solutions that the solution dominates. This requires O(MN2)O(MN^2)O(MN2)comparisons. All solutions in the first nondominated front will have their domination count as zero. Now, for each solution p with np&#61;0n_p &#61; 0np&#61;0, we visit each member (q ) of its sets SqS_qSq and reduce its domination count by one. In doing so, if for any member q the domination count becomes zero, we put it in a separate list Q. These members belong to the second nondominated front. Now, the above procedure is continued with each member of Q and the third front is identified. This process continues until all fronts are identified.
译文
首先&#xff0c;对每一个解我门计算两个实体:1&#xff09;支配计数npn_pnp ,即支配着解 p 的解的数量&#xff0c;还有 2&#xff09;SpS_pSp&#xff0c;解所支配的解的集合&#xff0c;这需要O(MN2)O(MN^2)O(MN2)次比较。 所有第一非支配前沿面解的支配计数都为零。现在&#xff0c;对每一个解 p 都有np&#61;0n_p &#61; 0np&#61;0&#xff0c;我们访问每一成员(q&#xff09;和他的集合SqS_qSq并且减少逐一减少支配计数。通过这样&#xff0c;如果任何成员q的支配计数达到0&#xff0c;我们就把它放进一个单独集合 Q。这些成员属于第二非支配前沿面。现在&#xff0c;以上程序应用 Q中的每一成员继续执行直到第三前沿面被确定。这一过程持续到所有前沿面被确定。
经过前面的快速非支配排序和拥挤度计算之后&#xff0c;种群中的每个个体 iii 都拥有两个属性&#xff1a;非支配排序决定的非支配序 iranki_{rank}irank&#xff08;级数&#xff0c;即第几级&#xff09;和拥挤度 idi_did。依据这两个属性&#xff0c;可以定义拥挤度比较算子&#xff1a;个体i与另一个个体 j 进行比较&#xff0c;只要下面任意一个条件成立&#xff0c;则个体 iii 获胜。
① 如果个体 iii 所处非支配层优于个体 jjj 所处的非支配层&#xff0c;即 irankirank<jrank