编程语言
首页 > 编程语言> > 多目标优化经典算法——NSGA-II

多目标优化经典算法——NSGA-II

作者:互联网

因为NSGA-II算法是一种遗传算法,所以首先搞清楚遗传算法的流程。

遗传算法流程

一般遗传算法的流程:

  1. 种群初始化
  2. 计算每个个体的适应度
  3. 选择
  4. 交叉
  5. 变异

根据是否满足解的精度要求和迭代次数来判断是否进行下一轮的遗传进化。

NSGA算法存在的3个问题

  1. O(MN^3)计算时间复杂度(其中M代表目标个数,N代表种群个数)
  2. 非精英机制方法
  3. 需要指定一个共享参数

NSGA-II算法

NSGA-II算法主要由以下三个部分组成
A、快速非支配排序方法
B、拥挤比较算子
C、主程序

A、快速非支配排序方法

算法流程如下:
在这里插入图片描述
首先计算每个解的np和Sp,这需要O(MN2)时间复杂度,同时得到了第一前沿面 F 1 \mathcal{F1} F1。第二部分就是计算其余的前沿面,需要遍历前沿面中的每个解以及这个解的Sp集合,将对应解p的np值减一,如果np值减为0了,就加入下一前沿面集合,这部分需要O(N2)时间复杂度。由于第一部分和第二部分是分开的,所以总的时间复杂度是O(MN2)。

B、拥挤比较算子

密度估计:对同一前沿面的解按照目标函数值排序,计算每个解在该目标函数下两侧解的目标函数归一化差值,然后将所有目标函数下的分量累加作为拥挤系数。

具体算法流程如下:在这里插入图片描述
在这里插入图片描述
如图所示,直观上看,解i的拥挤系数就是虚线矩形周长的一半。

C、主程序

标签:NSGA,支配,种群,复杂度,II,算法,前沿
来源: https://blog.csdn.net/m0_46283220/article/details/120787611