NSGA-II 非支配排序遗传算法

NSGA-II 非支配排序遗传算法

1、算法简介

在实际问题中大都具有多个目标且需要同时满足,即在同一问题模型中同时存在几个非线性目标,而这些目标函数需要同时进行优化处理,并且这些目标又往往是互相冲突的,称这类问题称为多目标规划问题。

NSGA-Ⅱ算法,即带有精英保留策略的快速非支配多目标优化算法,是一种基于Pareto最优解的多目标优化算法。

1.1、相关知识点

推荐入门视频:https://www.bilibili.com/video/BV1DA4y197JQ?share_source=copy_web

支配(Dominance ) :在多目标优化问题中,如果个体p至少有一个目标比个体q好,而且个体p的所有目标都不比q差那么称个体p支配个体q

序值(Rank):如果p支配q,那么p的序值比q低;如果p和q互不支配,那么p和q有相同的序值

拥挤距离(Crowding Distance):表示个体之间的拥挤程度,测量相同序值个体之间的距离。

2、算法描述

2.1、GA 对比 NSGA-II

*

请添加图片描述
请添加图片描述

如上图所示,可以看出:GA中的 “计算适应度” 对应于NSGA-II中的“快速非支配排序 + 拥挤度计算”

2.2、快速非支配排序

支配(Dominance ) :在多目标优化问题中,如果个体p至少有一个目标比个体q好,而且个体p的所有目标都不比q差那么称个体p支配个体q

序值(Rank):如果p支配q,那么p的序值比q低;如果p和q互不支配,那么p和q有相同的序值(rank)

请添加图片描述

如上图,一般假设坐标轴负方向为好的方向:

  • 那么A支配C,并且C的rank比A低;
  • AB互不支配,所以AB有相同的rank;

在这里AB的rank为1,可以理解为AB是第一梯队的解。

所谓的快速非支配排序,就是按照rank的值进行升序排列,那么问题来了,rank值相同的个体又该怎么排序呢?

答案是:拥挤距离

2.3、拥挤距离

请添加图片描述

我们先来思考一个问题:生成新一代种群的过程中,我们是否需要对每个个体都计算拥挤距离?

  • 我们排序的目的是:排出来一个序列,取序列的前N个优秀的个体成为新一代种群

  • 假如如上图所示,F1为 rank = 1 的个体的集合,F2 为rank = 2 的个体的集合,N为F3中某个位置的虚线

  • 我们可以得出一个结论:F1和F2一定是新一代种群的一部分,而F3需要淘汰一部分

那么这个问题的答案就是:我们只需要对F3进行拥挤距离排序就好了

先来看看什么是拥挤距离:

拥挤距离(Crowding Distance):表示个体之间的拥挤程度,测量相同序值个体之间的距离。

一种计算方式为该个体在目标空间所能生成的最大的矩形(该矩形不能触碰目标空间其他的点)的边长之和,如下图

请添加图片描述

注:还有很多其他计算方式

2.4、算法核心–生成下一代策略

1.首先将父代种群 P t P_t Pt和子代种群 Q t Q_t Qt合成种群 R t R_t Rt

2.根据以下规则从种群 R t R_t Rt 生成新的父代种群 P t + 1 P_{t+1} Pt+1
①根据Pareto等级从低到高的顺序,将整层种群放入父代种群 P t + 1 P_{t+1} Pt+1 ,直到某一层该层个体不能全部放入父代种群 P t + 1 P_{t+1} Pt+1

​ ②将该层个体根据拥挤度从大到小排列,依次放入父代种群 P t + 1 P_{t+1} Pt+1中,直至父代种群 P t + 1 P_{t+1} Pt+1填满。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J3cIhWnC-1658384723697)(.img/domain-sort.png)]

3、代码实操

有点复杂,先放个链接链接(含测试函数以及ZDT真实数据)
https://download.csdn.net/download/qq_45555061/86247361

4、算法结果

eg, ZDT3:

50轮:

请添加图片描述

150轮:

请添加图片描述

250轮:

请添加图片描述

  • 4
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
NSGA-II遗传算法之间有以下几个主要区别: 1. 多目标优化能力:NSGA-II是一种多目标遗传算法,特别适用于解决具有多个目标函数的优化问题。相比之下,传统的遗传算法主要用于解决单目标优化问题。 2. 支配排序NSGA-II引入了支配排序的概念,通过将个体根据其被其他个体支配的情况进行排序,从而生成一组支配解集。这使得NSGA-II能够同时优化多个目标函数并得到一系列最优解。 3. 多样性维护:NSGA-II通过采用拥挤距离的概念来维护多样性,并基于此选择较好的解集。拥挤距离用于度量个体在解空间中的局部密度,将个体之间的距离考虑在选择中,从而保证解集的多样性。 4. 快速支配排序算法:为了更高效地进行支配排序NSGA-II采用了快速支配排序算法。该算法通过比较个体之间的支配关系来进行排序,减少了排序的时间复杂度。 5. 遗传操作:NSGA-II使用常见的遗传操作,如选择、交叉和变异,与传统的遗传算法相似。但由于目标是多个,NSGA-II对这些操作进行了相应的调整以处理多个目标函数。 总体而言,NSGA-II是一种进化算法,扩展了传统遗传算法的应用范围,主要通过支配排序和多样性维护的方法来解决多目标优化问题。相比传统的遗传算法NSGA-II能够得到更多的最优解,并提供了更全面的多目标优化能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nicer0815

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值