ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-10-17 09:06:31  阅读:375  来源: 互联网

标签: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、快速非支配排序方法

  • 传统排序方法:时间复杂度O(MN3),M是目标个数,N是种群个数。为了计算第一非支配前沿面,需要判断每个解和种群中的其他解的支配关系。一个解和其他解的支配关系需要O(MN)复杂度,每个解和其他解的支配关系需要O(MN2)复杂度。最坏的情况,N个解各自构成一个前沿面,时间复杂度就是O(MN3)。
  • 快速非支配排序方法:首先需要计算两个变量 1)支配计数np,即支配解p的解的数量。2)Sp,即解p支配的解的集合。
    在地方里插入图片描述
    如上图所示,对解c而言,解c被a,b两个解支配,所以nc为2。对解b而言,解b支配c,d,e,所以Sb={c,d,e}。

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

B、拥挤比较算子

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

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

C、主程序

  • 种群初始化:随机创建父代种群P0 ,为父代种群利用快速非支配排序算法计算出非支配等级,并利用二进制锦标赛机制重组以及变异算子生成大小为N的子代种群。
  • 子代个体选择
    在这里插入图片描述

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有