NSGA算法

先给自己叠甲,记录自己的学习过程,如有内容错误欢迎指正!!!

1. NSGA算法简介(Nondominated Sorting Genetic Algorithm)

根据标题,NSGA算法分为两个要点,Nondominated Sorting(非支配排序)Genetic Algorithm(遗传算法)遗传算法讲解文章

因此本文主要介绍非支配排序算法本身的内容,对遗传算法仅作简要提及。

1.1 基本概念

要明白非支配的含义,自然要知道支配(dominated)的含义。
支配的含义
从字面意思上看来看,A “能力” 大于
B
A就能够支配B
在多目标优化问题中,涉及到多个目标。
如果一个解在所有目标上都不比另一个解差,并且在至少一个目标上更好,那么这个解被称为支配另一个解。
具体来说,假设有两个解 A A A B B B,如果对于所有的目标函数 F ( X ) F(X) F(X)都有 F ( A ) ≤ F ( B ) F(A)≤F(B) F(A)F(B),并且至少存在一个目标函数 f i f_i fi使得 f i ( A ) < f i ( B ) f_i(A)<f_i(B) fi(A)<fi(B),那么我们就说解A支配解B

俗话来讲,就是“我哪哪都与你一样,但有一项能力比你强,我就能支配你。(当然,方方面面比你强,当然也能支配你)
下面用一个草图简单表述这个意思。
草图描述支配关系

该问题是 m i n F ( X ) , 即最小化优化问题。目标函数 F 内有两个子函数 f 1 和 f 2 。 该问题是min F(X),即最小化优化问题。目标函数F内有两个子函数f_1和f_2。 该问题是minF(X),即最小化优化问题。目标函数F内有两个子函数f1f2
对于A和B而言, F ( A ) ≤ F ( B ) , 且 f 1 ( A ) < f 1 ( B ) ; f 2 ( A ) < f 2 ( B ) F(A)≤F(B),且f_1(A)<f_1(B);f_2(A)<f_2(B) F(A)F(B),f1(A)<f1(B);f2(A)<f2(B)
满足 当解 A 在所有目标上都不比解 B 差,并且在至少一个目标上优于解 B 。 当解A在所有目标上都不比解B差,并且在至少一个目标上优于解B。 当解A在所有目标上都不比解B差,并且在至少一个目标上优于解B
所以说,解A 支配 解B。

对于A和C而言, F ( A ) ≤ F ( C ) , 且 f 1 ( A ) < f 1 ( C ) ; f 2 ( A ) = f 2 ( C ) F(A)≤F(C),且f_1(A)<f_1(C);f_2(A)=f_2(C) F(A)F(C),f1(A)<f1(C);f2(A)=f2(C)
满足 当解 A 在所有目标上都不比解 C 差,并且在至少一个目标上优于解 C 。 当解A在所有目标上都不比解C差,并且在至少一个目标上优于解C。 当解A在所有目标上都不比解C差,并且在至少一个目标上优于解C
所以说,解A 支配 解C。

注意!!!

解A 支配 解B时,解A称之为支配解(Dominating Solution),那解B呢? 非支配解?

千万注意!!!解B 不是 非支配解,解B称之为被支配解(Dominated Solution)

那何为非支配解(Non-dominating Solution)???
非支配解是指在解集合中没有任何其他解可以支配它的解。
解集合中有A、B和C三个解。B和C都不能支配A。
此时解A成为非支配解

当然,现实中的多目标优化问题不会只有三个解,往往有许多解。
我们还以两个优化目标举例,如下图。
在这里插入图片描述
求解 m i n G ( X ) , 在目标约束下,所有的解如上图所示。 求解 min G(X),在目标约束下,所有的解如上图所示。 求解minG(X),在目标约束下,所有的解如上图所示。
可以发现,红色的点无法被继续优化。当 g 1 g_1 g1减小时, g 2 g_2 g2就会增大;当 g 2 g_2 g2减小时, g 1 g_1 g1就会增大。
这些红色点所代表的解即为非支配解(它也称为帕累托解(Pareto Solution)
这些非支配解组成的集合称之为 帕累托最优集 ,这些解在目标空间中形成了 帕累托前沿(上图里面的黑色实线)。
帕累托前沿(Pareto Front) 是多目标优化问题中的一个关键概念,它是 帕累托最优解集(Pareto Optimal Set) 在目标空间中的表示。帕累托前沿是目标空间中所有帕累托解的集合,它展示了不同目标之间的最佳权衡。

注意!!!
帕累托解和非支配解的定义是基于解之间的比较,因此它们都是相对于问题中的解集合而言的。帕累托前沿是针对目标空间的。

总结来说,非支配解和帕累托解在多目标优化中是等价的概念,它们都描述了在多个目标之间达到最佳权衡的解。在实际应用中,寻找帕累托最优解通常意味着寻找非支配解,因为这些解代表了在多个相互冲突的目标之间无法进一步改进的解决方案。

1.2 非支配排序

NSGA与传统的遗传算法的主要区别在于:该算法在选择“基因”执行之前根据解之间的支配关系进行了分层。其选择“基因”、交叉“基因”和变异“基因”与传统的遗传算法没有区别。

假如每代保留10个解,但本代的帕累托最优集中有50个解。使用基于拥挤策略的虚拟适应度值进行调整,并确定每个种群的虚拟适应度值,然后根据虚拟适应度值的大小,确定优先选择进行处理的种群。
这里与传统遗传算法的适应度原理类似。遗传算法中以个体适应度的大小来判定各个个体的优劣程度,从而决定其遗传机会的大小。

考虑一个规模大小为N的种群,通过非支配排序算法可以对该种群进行分层,具体的步骤如下:
非支配排序
通过上述步骤得到的非支配个体集是种群的第一级非支配层;然后,忽略这些标记的非支配个体,再遵循步骤(1)一(4),就会得到第二级非支配;依此类推,直到整个种群被分级。
分级完成
在对种群进行非支配排序的过程中,需要给每一个非支配层指定一个虚拟适应度值。级数越大,虚拟适应度值越小(Rank 2 的虚拟适应度小);反之,虚拟适应度值越大(Rank 1 的虚拟适应度大)。这样可以保证在选择操作中等级较低的非支配个体有更多的机会被选择进入下一代,使得算法以最快的速度收敛于最优区域(也就是说,让当前的帕累托最优集内的解参与遗传迭代)。另一方面,为了得到分布均匀的Pareto最优解集,就要保证当前非支配层上的个体具有多样性。(解所处的空间位置不能太拥挤,要保留一定的间距)
在这里插入图片描述
C点更能够代表B、E两点之间的信息,而不会去选择D点。

不断完成迭代,能够求出多目标优化问题的帕累托集。
在这里插入图片描述
当然不一定能够求出全局最优解,但对于现实问题,以一个较快的运算速度求出非常接近全局最优解的解集,能够满足实际需要,即完成了优化的目标。
参考:
从NSGA到 NSGA II,
我翔哥的文章
数之道37】多目标优化求解策略与遗传算法NSGA-II<最优化系列第3集>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/499844.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Golang实战:深入hash/crc64标准库的应用与技巧

Golang实战&#xff1a;深入hash/crc64标准库的应用与技巧 引言hash/crc64简介基本原理核心功能 环境准备安装Golang创建一个新的Golang项目引入hash/crc64包测试环境配置 hash/crc64的基本使用计算字符串的CRC64校验和计算文件的CRC64校验和 高级技巧与应用数据流和分块处理网…

springboot 使用@profiles.active@多配置文件切换

项目配置文件结构&#xff1a; 主配置文件内容&#xff1a; pom配置文件&#xff1a; <profiles><profile><id>dev</id><properties><profiles.active>dev</profiles.active></properties></profile><profile>…

鸿蒙OS开发实战:【Socket小试MQTT连接】

本篇分享一下 HarmonyOS 中的Socket使用方法 将从2个方面实践&#xff1a; HarmonyOS 手机应用连接PC端 SocketServerHarmonyOS 手机应用连接MQTT 服务端 通过循序渐进的方式&#xff0c;全面了解实践HarmonyOS中的Socket用法 学习本章前先熟悉文档开发知识更新库gitee.com…

C#预处理器指令(巨细版)

文章目录 一、预处理器指令的基本概念二、预处理器指令的基本规则三、C# 预处理器指令详解3.1 #define 和 #undef3.2 #if、#else、#elif 和 #endif3.3 #line3.4 #error 和 #warning3.5 #region 和 #endregion 四、高级应用&#xff1a;预处理器指令的最佳实践4.1 条件编译的最佳…

hololens 2 投屏 报错

使用Microsoft HoloLens投屏时&#xff0c;ip地址填对了&#xff0c;但是仍然报错&#xff0c;说hololens 2没有打开&#xff0c; 首先检查 开发人员选项 都打开&#xff0c;设备门户也打开 然后检查系统–体验共享&#xff0c;把共享都打开就可以了

【优选算法】双指针 -- 快乐数 和 盛最多水的容器

前言&#xff1a; &#x1f3af;个人博客&#xff1a;Dream_Chaser &#x1f388;刷题专栏&#xff1a;优选算法篇 &#x1f4da;本篇内容&#xff1a;03快乐数 和 04盛最多水的容器 目录 一、快乐数&#xff08;medium&#xff09; 1. 题⽬链接&#xff1a;202. 快乐数 2. …

详解TCP的三次握手和四次挥手

文章目录 1. TCP报文的头部结构2. 三次握手的原理与过程三次握手连接建立过程解析 3. 四次挥手的原理与过程四次挥手连接关闭过程的解析 4. 常见面试题 深入理解TCP连接&#xff1a;三次握手和四次挥手 在网络通信中&#xff0c;TCP&#xff08;传输控制协议&#xff09;扮演着…

在低成本loT mcu上实现深度神经网络端到端自动部署-深度神经网络、物联网、边缘计算、DNN加速——文末完整资料

目录 前言 DNN 量化神经网络 并行超低功耗计算范式 面向内存的部署 结果 原文与源码下载链接 REFERENCES 前言 在物联网极端边缘的终端节点上部署深度神经网络( Deep Neural Networks&#xff0c;DNNs )是支持普适深度学习增强应用的关键手段。基于低成本MCU的终端节点…

基于SpringBoot和Vue的房产销售系统的设计与实现

今天要和大家聊的是一款基于SpringBoot和Vue的房产销售系统的设计与实现 &#xff01;&#xff01;&#xff01; 有需要的小伙伴可以通过文章末尾名片咨询我哦&#xff01;&#xff01;&#xff01; &#x1f495;&#x1f495;作者&#xff1a;李同学 &#x1f495;&#x1f…

Vitest 单元测试方案

简介 Vitest 是一个面向 Vite 的极快的单元测试框架。它利用了 Vite 的优势,提供了一种全新的测试体验。本文将介绍如何在项目中集成和使用 Vitest 进行单元测试。 安装 Vitest npm install -D vitest 配置 Vitest 在项目根目录下创建 vitest.config.js 文件,用于配置 Vitest。…

AcWing-毕业旅行问题

731. 毕业旅行问题 - AcWing题库 所需知识&#xff1a;二进制状态压缩&#xff0c;dp 思路&#xff1a;Hamilton最小路径的变种&#xff0c;如果Hamilton最小路径不懂可以看看我这篇文章AcWing—最短Hamilton路径-CSDN博客 搞懂了Hamilton之后这题就很简单了&#xff0c;遍历…

【51单片机入门记录】Onewire单总线协议 温度传感器DS18B20概述

一、温度传感器DS18B20概述 &#xff08;1&#xff09;数字化温度传感器 美国DALLAS半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。一线总线独特而且经济的特点&#xff0c;使用户可轻松地组建传感器网络&#xff0c;为测量系统的构建…

一、图片隐写[Stegsolve、binwalk、010editor、WaterMark、BlindWaterMark、文件头尾]

工具配置 1.Stegsolve 工具地址&#xff1a;http://www.caesum.com/handbook/Stegsolve.jar 解释&#xff1a;该工具需要安装jar包后才能配合使用&#xff0c;下面同时会给出快速打开工具的代码&#xff0c;需要两个文件&#xff0c;启动的时候启动vbs文件 start.bat java …

【笔记本开热点给手机用,手机一直显示正在获取ip地址,然后连接不上的解决方法】

解决方法 控制面板\网络和 Internet\网络连接 查看是否有设备是固定ip,将其改成自动获取ip地址 如果你还没有解决&#xff0c;那么继续看 肯定是你装了vmware,vmware会生成vmnet1和vmnet8两个网段&#xff0c;这两个网段和共享的网段冲突了&#xff0c;所以需要将这两个网段…

4T第十四届省赛模拟2

一、Seg 温度读取&#xff1a; ①温度 温度读他读出来就是有精度的所以自带小数 我们读取的时候直接强制类型转换读它的各个位也不会丢失精度 ②电压 电压是你人为的/51.0了&#xff0c;从char->float->char所以会有精度丢失 所以要用原始数据来换算 在原始数据上多…

qt窗口的应用与pyinstaller打包APP操作

3月29日 qt打包APP操作 1 先在windows shell 中下载打包软件Pylnstaller pip install pyinstaller2 先进入py项目所在的位置&#xff0c;再执行以下代码(我用的qt版本是PySide6可以根据自己的情况修改) pyinstaller s02.py --noconsole --hidden-import PySide6.QtXml3 因为…

GEE22:基于目视解译的土地利用分类(随机森林监督分类)

采样点信息&#xff1a; 设置一下采样点参数&#xff1a; 代码&#xff1a; //设置研究区位置 var table ee.FeatureCollection("users/cduthes1991/boundry/China_province_2019"); var roi table.filter(ee.Filter.eq(provinces,beijing)); Map.centerObjec…

Machine Learning机器学习之数据可视化

目录 前言 一、 数据预处理与清洗 二、常见可视化技术 三、可视化工具和平台 博主介绍&#xff1a;✌专注于前后端、机器学习、人工智能应用领域开发的优质创作者、秉着互联网精神开源贡献精神&#xff0c;答疑解惑、坚持优质作品共享。本人是掘金/腾讯云/阿里云等平台优质作者…

MES系统怎么解决车间生产调度难的问题?

MES系统三个层次 1、MES决定了生产什么&#xff0c;何时生产&#xff0c;也就是说它使公司保证按照订单规定日期交付准确的产品&#xff1b; 2、MES决定谁通过什么方式&#xff08;流程&#xff09;生产&#xff0c;即通过优化资源配置&#xff0c;最有效运用资源&#xff1b; …

PCI总线管脚定义(引脚定义)

文章目录 1&#xff1a; 参考资料的链接2: 图片说明3&#xff1a;PCI文字说明每日好图 1&#xff1a; 参考资料的链接 PCI bus pinout PCI三种标准引脚信号定义 PCI bus pinout 2: 图片说明 A面和B面正反 PCI Universal Card 32/64 bit ----------------------------------…