NSGA2算法详解
算法流程(步骤)
1.初始化种群 Pt ( Pt 规模为 N,t 代表迭代次数,也就是这是第几代种群)
2.计算种群 Pt 的适应度 f(x)
3.判断当前情况已经满足结束要求,若是则跳出算法、输出结果;若否则继续运行下一步
4.对种群 Pt 进行常规非支配排序、选择、交叉、变异操作,生成新种群 Rt ( Rt 规模也为 N)
5.合并种群 Pt 以及 Rt,生成新种群 St ( St 规模为 2N )
6对种群 St 进行快速非支配排序 rank1、rank2…ranki…
7.在进行快速非支配排序后的多层中选择出 N 个个体进入新种群 Pt+1 中,选择完成后继续返回第 2 步。
选择时会出现的情况:
①若前 i 层中个体总数正好等于 N ,则选择前i层中所有个体进入到新种群 Pt+1 中.
②若前 i-1 层中个体数总数小于 N ,但是前 i 层中个体总数大于 N ,说明在选择第 i 层中个体时我们不能完全接收,所以就要利用拥挤度指标来衡量哪些个体比较好,让好的个体进入新种群 Pt+1 中。
注:拥挤度计算方式方式:
利用个体周围最近两个个体所围成的长方图形周长确定,我们通常选择拥挤度值比较高的个体进入新种群(为了确保种群多样性)
例如:下图中,假设图中点指的是第 i 层中的个体,a点和f点的拥挤度为∞(我们为了保证物种多样性,通常将处在边缘的个体拥挤度直接设置成无穷),b点的拥挤度就是a点和c点围成的长方形周长…