此博客的很多内容均来自 博客园 Alexander 博主的文章,我只做了整理方便今后自己回顾,因此很感谢博主的分享
2017年11月28日

NSGA-ll:Non-Dominated Sorting Genetic Algorithm-ll,带精英策略的非支配排序遗传算法

Pareto支配关系定义、Pareto最优解定义、一般的非支配分层排序算法请参考网上相关内容,或者我的名为NSGA的博客文章

为什么有NSGA-ll
顾名思义,NSGA-ll是对NSGA的改进,是在NSGA不能有效解决问题的时候被提出来的。Kalyanmoy Deb等人在他们的介绍NSGA-ll的论文中提到了NSGA算法主要的局限,即
1. High computational complexity of non-dominated sorting,非支配排序的时间复杂度太高,为O(mN3),其中m为目标(objectives)个数,N为种群大小;
2. Lack of elitism,缺少精英策略。研究表明,精英策略可以有效地增强GA的效果,同时避免好种群的流失;
3. Need for specifying the sharing parameter σshare,需要指定共享半径σshare,具有人为的偶然性。

而NSGA-II针对以上的缺陷通过以下三个方面进行了改进:
1. A fast non-dominated sorting approach,提出了快速非支配排序方法,降低了算法的计算复杂度。由原来的O(mN3)降到O(mN2),其中,m为目标函数个数,N为种群大小;
2. Elitism,引入精英策略,扩大采样空间。将父代种群与其产生的子代种群组合,共同竞争产生下一代种群,有利于保持父代中的优良个体进入下一代,并通过对种群中所有个体的分层存放,使得最佳个体不会丢失,迅速提高种群水平;
3. Density Estimation && Crowded Comparison Operator,提出了拥挤度和拥挤度比较算子,代替了需要指定共享半径的适应度共享策略,并在快速排序后的同级比较中作为胜出标准,使准Pareto域中的个体能扩展到整个Pareto域,并均匀分布,保持了种群的多样性。

NSGA-ll的基本思想
首先,随机产生规模为N的初始种群,非支配排序后通过遗传算法的选择、交叉、变异三个基本操作得到第一代子代种群;其次,从第二代开始,将父代种群与子代种群合并,进行快速非支配排序,同时对每个非支配层中的个体进行拥挤度计算,根据非支配关系以及个体的拥挤度选取合适的个体组成新的父代种群;最后,通过遗传算法的基本操作产生新的子代种群。依此类推,直到满足程序结束的条件。相应的程序流程图如下图所示:
NSGA-ll

快速非支配排序算法 fast non-dominated sorting algorithm

  1. 首先,对于每一个解决方案(solution)我们需要定义两个参数,分别是niSini表示种群中能够支配第i个解决方案(the solution i)的解决方案个数,Si表示种群中被第i个解决方案(the solution i)支配的解决方案集合;
  2. 遍历整个种群,求得niSii{1,...,N})所需要的时间复杂度为O(mN2)
  3. 找到种群中所有ni=0的解决方案,将它们放进集合F1中,这个集合被称为current front;
  4. 对于集合F1的每一个解决方案i,我们遍历集合Si中的每一个成员j,令nj=nj1, 若nj=0,我们将解决方案j保存在集合H中;
  5. F中的个体为第一个非支配层的个体,并以H作为current front,重复4和5,直到整个种群均被分层。

算法截图(摘自NSGA-ll论文) 复杂度O(mN2)
The fast non-dominated sorting procedure which when applied on a population P,returns a list of the non-dominated fronts F .
NSGA-ll

拥挤度估计 Density Estimation
在带精英策略的非支配遗传算法中,拥挤度的计算是保证种群多样性的一个重要环节。
拥挤度,crowing distance,也可以说是拥挤距离,用idistance表示,英文解释为:This quantity idistance serves as an estimate of the size of the largest cuboid enclosing the point i without including any other point in the population. 即包括种群中的点 i 却不包括其它点的最大的长方形范围,如下图所示:
NSGA-ll

对集合I中的所有点计算拥挤度距离的算法见下图(The following algorithm is used to calculate the crowding distance of each point in the set I):
NSGA-ll
其中I[i].m表示集合 I中第 i 个个体对于第 m 个目标函数的值(I[i].m refers to the m-th objective function value of the i-th individual in the set I)。

拥挤度比较算子 Crowded Comparison Operator n
通过快速非支配排序算法和拥挤度计算之后,种群中的每一个个体 i 都拥有了两个属性:非支配排序层级 irank 和拥挤度 idistance,则我们这样定义n
inj if (irank<jrank) or ((irank=jrank) and (idistance>jdistance))
也就是,对于两个有着不同的非支配排序层级的个体,我们倾向于rank小的;对于有着相同非支配排序层级的两个个体,我们倾向于座落在更加稀松区域内的个体。

参考资料
1. A Fast Elitist Non-Dominated Sorting Genetic Algorithm for Multi-Objective Optimization: NSGA-II —- Kalyanmoy Deb, Samir Agrawal, Amrit Pratap, and T Meyarivan
2. 博客园博主Alexander的博客(从NSGA到NSGA-ll),链接如下: https://www.cnblogs.com/bnuvincent/p/5268786.html

相关文章:

  • 2021-06-20
  • 2021-11-21
  • 2021-12-20
  • 2022-12-23
  • 2021-06-13
  • 2021-05-01
  • 2021-12-13
猜你喜欢
  • 2021-12-12
  • 2021-09-17
  • 2021-12-02
  • 2021-11-16
  • 2021-11-10
  • 2021-08-30
相关资源
相似解决方案