NSGA II 算法讲解(毕业设计)(三)

目录

前言

1、NSGA II算法介绍

2、Pareto最优概念

2.1 Pareto最优,Pareto前延

2.2 支配关系

3、NSCA-II与NSCA相比,优势

4、NSGA II流程逻辑

5、拥挤度排序

6、新子代生成


前言

本篇文章介绍的是我的毕业设计,我将C语言将其实现。本篇主要讲解NSGA II的原理。

1、NSGA II算法介绍

        NSGA II 是一个基于遗传算法的多目标优化算法。

        1995年,Srinivas和Deb提出了非支配遗传(Non-dominated Sorting Genetic Algorithms,NSGA)算法[42]。NSGA算法是以遗传算法为基础并基于Pareto最优概念得到的。

        NSGA-Ⅱ算法是一种基于Pareto最优解的多目标优化算法,是在NSGA算法的基础上改进而来的。该算法引入了快速非支配排序、精英保留策略和拥挤度比较算子,能够得到分布均匀、多样性较好的最优解集。该算法的基本思想是将父代种群和子代种群合并,进行非支配排序和拥挤度计算,选取合适的个体组成新的父代种群,然后通过遗传算法的基本操作产生新的子代种群,直到满足停止条件。该算法适用于多个目标的优化问题,广泛应用于桥梁、核电、公交调度等领域。

2、Pareto最优概念

        帕累托最优(Pareto Optimality),也称为帕累托效率(Pareto efficiency),是指资源分配的一种理想状态,假定固有的一群人和可分配的资源,从一种分配状态到另一种状态的变化中,在没有使任何人境况变坏的前提下,使得至少一个人变得更好,这就是帕累托改进或帕累托最优化。

        举个例子,找女朋友,如果有两个选项:第一个性格好,但是长相不符合你的审美;另一个性格没有第一个好,但是长相符合你的审美。那么对于你来说,这两个选择都是最优的,没有好坏之分。如果有另一个选项,长相好看,性格又好,这样的选项就是更优的。pareto就是这种思想,对于多个理想标准,如果没有全面提升的化,,就不能算是一个更优的选择。

2.1 Pareto最优,Pareto前延

        一个解不被其它可行解支配称为Pareto最优。 

        Pareto前沿是一组无法被支配的最优折中解,没有目标能在提升时而不使其它目标改变。 具有此解之后,在从非占优集合中挑选解之前,专家能够获悉因为改善一个目标而恶化其它目标的程度。

2.2 支配关系

 

        如上例子,横纵坐标皆为优化目标,都是想让其越小越好。那么,对于A点来说,那些两个指标都比它小的点就是支配A的点;那些两个指标都大于A的点,就是被A支配的点;那些其中一个指标低于A,另一个指标高于A的点,和A互不支配。

3、NSCA-IINSCA相比,优势

NSGA-II 的快速非支配排序相较传统非支配排序计算更加简单
加入了精英策略

4、NSGA II流程逻辑

解析:

第一步: 初始种群并设置进化代数Gen=1

第二步: 判断是否生成了第一代子种群,若已生成则令进化代数Gen=2,否则,对初始种群进行非支配排序和选择、高斯交叉、变异从而生成第一代子种群并使进化代数Gen=2

第三步: 将父代种群与子代种群合并为新种群

第四步:判断是否已生成新的父代种群,若没有则计算新种群中个体的目标函数,并执行快速非支配排序、计算拥挤度、精英策略等操作生成新的父代种群;否则,进入第五步。

第五步:对生成的父代种群执行选择、交叉、变异操作生成子代种群

第六步: 判断Gen是否等于最大的进化代数,若没有则进化代数Gen=Gen+1并返回第三步;否则,算法运行结束。

5、拥挤度排序

        根据每个点拥挤度大小对其排序,用于后续筛选。

        拥挤度计算:

        拥挤度越低,越容易选上。

6、新子代生成

        本篇内容到此结束,感谢阅读

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

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

相关文章

深入理解volatile关键字

一、简介 volatile是 Java提供的一种轻量级的同步机制。Java包含两种内在的同步机制:同步块(或方法)和 volatile 变量相比于synchronized (synchronized常称为重量级)volatile是更轻量级的,因为它不会引起线程上下文的…

LeetCode25: K 个一组翻转链表

题目描述 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改变节点…

B树系列(详解)

目录 一、B-树 二、B树 三、B*树 四、时间复杂度 五、Mysql与B树系列 一、B-树 首先再说B树的性质以及其他的之前,先要说一声,好多人都把这个树叫B减树,其实不是,他就叫B树,至于原因我觉的没必要再这个名字上纠结…

HTTPS证书怎么申请?多少钱?

HTTPS证书的申请费用会因多种因素而异,主要包括以下几点: 1. 证书类型: - 域名验证型证书(DV SSL):这种证书仅验证域名的所有权,申请速度较快,通常用于个人网站或小型项目,价格相对较低&…

Java对象大小计算

概述 在实际应用中,尤其是在进行JVM调优时,理解并正确估计对象大小是非常重要的,因为这直接影响到内存分配、垃圾回收效率以及应用程序的整体性能。 对象的组成 在Java中,计算一个对象的大小是为了了解它在内存中占用的确切空间…

vue2后台管理系统demo,包含增删查改、模糊搜索、分页

因一直敲小程序,vue不熟练,自己练手项目,就包含增删查改以及模糊搜索分页 一、页面简单但功能齐全 二、数据是mock模拟 三、启动步骤 1、 json-server --watch data.json 启动mock数据 2、npm i 下载依赖 3、npm run serve 四、github地址…

【机器学习:推荐系统】什么是推荐系统?

【机器学习:推荐系统】什么是推荐系统? 推荐系统如何工作?推荐系统生命周期推荐系统算法使用推荐系统的好处推荐系统的类型协同过滤基于内容的过滤混合过滤 现实生活中的推荐系统示例亚马逊Spotify脸书/元数据Netflix谷歌和 YouTube 关于推荐…

BUUCTF---另外一个世界1

1.这是一道杂项题,也是我觉得最值得记录的一道题。 2.话不多说,题目描述(真的是另一个世界) 3.下载附件,是一张图片 4.尝试了查看属性,以及在记事本中打开看看有没有什么有用的信息,发现没什么…

基于单片机的节能窗控制系统设计

摘 要:本文以单片机为基础,对节能窗控制系统进行了科学设计,在满足日常生活需求的同时更好地实现节能减排目标。此设计中的节能窗控制系统,实际操作要灵活,具备可靠且稳定的性能,同时具备节能功效。 关键词:单片机;节能窗控制系统;系统设计 在节能窗等概念推广的背景…

Java 下载excel文件

一、背景 微信小程序需要导出excel文件,后端技术Java,前端使用uniapp框架,使用excel模板。 二、excel 报表模板 需要补充的内容是以下标记问号的,其中有个表格,内容是动态添加的 三、Java端代码实现 关键步骤&…

LabVIEW流量控制系统

LabVIEW流量控制系统 为响应水下航行体操纵舵翼环量控制技术的试验研究需求,通过LabVIEW开发了一套小量程流量控制系统。该系统能够满足特定流量控制范围及精度要求,展现了其在实验研究中的经济性、可靠性和实用性,具有良好的推广价值。 项…

【OpenCV】绘制桌面锁屏时钟

OpenCV 是一个开源的计算机视觉(Computer Vision)与机器学习软件库,提供了多种图像处理算法与接口,用于解决计算机视觉相关问题。OpenCV 支持多平台与多语言,本文主要记录如何使用 OpenCV-Python 绘制桌面锁屏时钟。 目…

NX二次开发:ListingWindow窗口的应用

一、概述 在NX二次开发的学习中,浏览博客时发现看到[社恐猫]和[王牌飞行员_里海]这两篇博客中写道有关信息窗口内容的打印和将窗口内容保存为txt,个人人为在二次开发项目很有必要,因此做以下记录。 ListingWindow信息窗口发送信息四种位置类型 设置Listi…

【VPX637】基于XCKU115 FPGA+ZU15EG MPSOC的6U VPX双FMC接口通用信号处理平台

VPX637是一款基于6U VPX总线架构的通用实时信号处理平台,该平台采用一片Xilinx的高性能Kintex UltraScale系列FPGA(XCKU115-2FLVF1924I)作为预处理单元,外挂2个FMC扩展接口,来完成数据采集、数据回放以及实时信号处理算…

NLP Seq2Seq模型

🍨 本文为[🔗365天深度学习训练营学习记录博客🍦 参考文章:365天深度学习训练营🍖 原作者:[K同学啊 | 接辅导、项目定制]\n🚀 文章来源:[K同学的学习圈子](https://www.yuque.com/mi…

wireshark抓取localhost(127.0.0.1)数据包

打开wireshark中,在"capture"菜单中,选择"interfaces"子菜单,在列出的接口中选中"Adapter for loopback traffic capture"即可。 必须安装了Npcap才有此选项,否则需要重新安装wireshark。 抓包截图…

Vue+SpringBoot打造城市桥梁道路管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询城市桥梁4.2 新增城市桥梁4.3 编辑城市桥梁4.4 删除城市桥梁4.5 查询单个城市桥梁 五、免责说明 一、摘要 1.1 项目介绍 基于VueSpringBootMySQL的城市桥梁道路管理系统,支持…

gpt批量工具,gpt批量生成文章工具

GPT批量工具在今天的数字化时代扮演着越来越重要的角色,它们通过人工智能技术,可以自动批量生成各种类型的文章,为用户提供了便利和效率。本文将介绍5款不同的GPT批量工具,并介绍一款知名的147GPT生成工具,以及另外一款…

beets,一个有趣的 Python 音乐信息管理工具!

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站AI学习网站。 目录 前言 什么是Beet库? 安装Beet库 使用Beet库 Beet库的功能特性 1. 多种音乐格式支持 2. 自动标签识…

ECMAScript-262 @2023版本中的关键字和保留字

1、什么是标识符? 所谓标识符,就是javascript里的变量、函数、属性或函数参数的名称,可由一个或多个字符组成,当然标识符有命名规范 标识符第一个字符必须是 一个字母、下划线(_)或美元符号($…