名词:

Nondominated sorting 非支配排序
Nonelitism approach 非精英机制方法
selection operator 选择算子
multicriterion decision-making methods 多重判据决策方法

基本概念:

(1) 多目标优化问题的数学描述

(2)pareto(帕累托)最优解的相关概念

1)Paerot支配关系:

2)Pareto最优解定义:

多目标优化问题与单目标优化问题有很大差异。

当只有一个目标函数时,人们寻找最好的解,这个解优于其他所有解,通常是全局最大或最小,即全局最优解。

而当存在多个目标时,由于目标之间存在冲突无法比较,所以很难找到一个解使得所有的目标函数同时最优,也就是说,一个解可能对于某个目标函数是最好的,但对于其他的目标函数却不是最好的,甚至是最差的。

因此,对于多目标优化问题,通常存在一个解集,这些解之间就全体目标函数而言是无法比较优劣的,其特点是:无法在改进任何目标函数的同时不削弱至少一个其他目标函数。这种解称作非支配解(nondominated soluitons)或Pareto最优解(Pareto optimal Soluitons),定义如下:

NSGAII算法:

(1)NSGAII算法的基本流程

首先,随机产生规模为N的初始种群,非支配排序后通过遗传算法的选择、交叉、变异三个基本操作得到第一代子代种群;

其次,从第二代开始,将父代种群与子代种群合并,进行快速非支配排序,同时对每个非支配层中的个体进行拥挤度计算,根据非支配关系以及个体的拥挤度选取合适的个体组成新的父代种群;

最后,通过遗传算法的基本操作产生新的子代种群:依此类推,直到满足程序结束的条件。相应的程序流程图如下图所示:

(2)三个关键步骤


算法思想:

A. 快速非支配排序方法

O(MN3)方法:确定非支配前沿面,每一个解与其他解比较判断是否支配,故每个解的时间复杂度是O(MN),要找到第一前沿面需要判断每个解,故时间复杂度是O(MN2),要找到所有的前沿面最坏的时间复杂度是O(MN3)。
本文提出的O(MN2)方法:

step1. 确定两个实体:np表示被多少解支配,是一个数目,Sp表示该解所支配的解的集合,如下图所示,D点被A和C点支配,所以D点的np为2,A点支配D和E,所以A点的Sp={D,E}。

step2. 初始化,两个实体初始化都为0,通过两层循环来获得上述两个实体的值,该步时间复杂度是O(MN2)。
step3 对第一非支配面,即np为0 的解,访问其集合Sp中的每个解然后把其np-1。重复该步,即可得到所有的非支配面。由于每个解最多由N-1个支配,所以每个解被访问的次数最多为N-1次。所以该步时间复杂度为O(N2)。
综上所述,NSGA-II提出的计算非支配排序的时间复杂度为O(MN2)。

B. 保留多样性

NSGA-II提出了拥挤比较方法替换了共享函数法。

1)密度估计:根据每一目标函数计算该点两侧的两个点的平均距离,该值作为以最近邻居作为顶点的长方体周长的估计(作为拥挤系数)。如下图,第i个解的拥挤系数为他周围长方体的长度(虚线表示)。计算拥挤系数需要对每一目标函数进行排序。

2)拥挤算子比较:


这里对拥挤系数的算法展示一下:
其中 I[i].m 代表集合I中第i个个体第m个目标函数值。I[i]越大代表该点的密度小,越容易被选中。

C. 主程序

先按照非支配面进行排序,然后对每个支配面里的拥挤算子进行排序,找出前N个点,主要思想如上述B里的第二点。

仿真:

(1)测试函数


1)ZDT问题

2)DTLZ问题

(2)评估指标

所有目标函数都是求最小化(convex 凸的,nonconvex 非凸的)
1)评估解收敛性,用deb提出的Convergence Metric(收敛性指标)

2)评估解分布的均匀性,用Schott提出的Spacing Metric(间距指标)

3)SBX: 模拟二进制交叉(SBX,simulated binary crossover),遗传算法采用浮点数编码的时候可以使用。

4)多项式变异:

(3)仿真流程:


仿真代码已上传至:NSGA-II.zip-算法与数据结构文档类资源-CSDN下载
MATLAB代码,可以完美运行无错误,需要的朋友可以下载,已附上文章可供参考学习。

参考文献

[1] K. Deb, A. Pratap, S. Agarwal and T. Meyarivan, “A fast and elitist multiobjective genetic algorithm: NSGA-II,” in IEEE Transactions on Evolutionary Computation, vol. 6, no. 2, pp. 182-197, April 2002, doi: 10.1109/4235.996017.
[2]公茂果,焦李成,杨咚咚,等.进化多目标优化算法研究[J].软件学报,2009(2):271-289.

多目标优化问题和遗传算法学习相关推荐

  1. 多目标优化问题和遗传算法学习笔记

    @多目标优化问题和遗传算法学习笔记 多目标优化问题和遗传算法学习笔记 本人最近研究多目标优化问题以及NSGA2算法,下面把学习笔记分享给大家,希望可以帮助到一些和我一样的初学者们. 名词: Nondo ...

  2. 遗传算法关于多目标优化python(详解)

    之前学习了遗传算法对单目标函数的最优值求解,对于多目标问题.或者说是多目标函数的求解问题,我想再研究一下.正好,我也想改进一下之前的代码架构.不得不说,之前的代码是面向过程的架构,完全没有体现出pyt ...

  3. 多目标优化-Pareto遗传算法

    多目标优化的应用背景 工程实际中的许多优化问题是多目标的优化设计问题.通常情况下多个目标是处于冲突状态的,不存在一个最优设计使所有的目标同时达到最优,一个目标性能的改善,往往以其它一个或多个目标性能的 ...

  4. python多目标优化_多目标优化算法(四)NSGA3(NSGAIII)论文复现以及matlab和python的代码...

    前言:最近太忙,这个系列已经很久没有更新了,本次就更新一个Deb大神的NSGA2的"升级版"算法NSGA3.因为multi-objective optimization已经被做烂了 ...

  5. 多目标进化优化_科研一角|论文分享 | 等离子喷焊工艺参数多目标优化

    科研一角|论文分享 等离子喷焊工艺参数多目标优化 喷焊层质量是影响再制造产品质量的主要因素,而等离子喷焊过程中参数的选择又影响着喷焊层质量,工艺参数的确定通常依靠加工手册.工人的操作经验以及工艺参数优 ...

  6. 多目标优化系列(四)RM-MEDA

    RM-MEDA: A Regularity Model-Based Multiobjective Estimation of Distribution Algorithm 原文:http://ieee ...

  7. 多目标优化算法(四)NSGA3(NSGAIII)论文复现以及matlab和python的代码

    前言:最近太忙,这个系列已经很久没有更新了,本次就更新一个Deb大神的NSGA2的"升级版"算法NSGA3.因为multi-objective optimization已经被做烂了 ...

  8. [多目标优化算法]1.NSGA-II——非支配排序遗传算法

    笔者最近在学习有关多目标优化的内容,并对内容进行一些整理.这篇文章算是笔者的一篇个人学习笔记,也希望能对他人提供一定的帮助,若有不足之处,也欢迎指正和建议. 注:本文中所举例子均为最小化问题. 一.多 ...

  9. Python遗传算法工具箱的使用(一)求解带约束的单目标优化

    加了个小目录~方便定位查看~ 前言 正文 一. 基础术语: 二. 遗传算法基本算子: 三.完整实现遗传算法: 四.后记: 前言 网上有很多博客讲解遗传算法,但是大都只是"点到即止" ...

  10. 基于深度强化学习的进化多目标优化自适应算子选择

    进化算法(EA)已经成为多目标优化的最有效技术之一,其中已经开发了许多变异算子来处理具有各种困难的问题. 虽然大多数EA始终使用固定的运算符,但 为新问题确定最佳EA 是一个劳动密集型过程. 因此,最 ...

最新文章

  1. element ui input视图没刷新_聊聊前端 UI 组件:组件体系
  2. 快来看看Google出品的Protocol Buffer,别仅仅会用Json和XML了
  3. 知识点 - python 类的私有/保护 属性和方法
  4. Hadoop RPC实例
  5. matlab 性能分析方法,DPCM,PSK系统的MATLAB实现及性能分析
  6. hive获取mysql里的文件_apache – 如何在hive中获取数据库用户名和密码
  7. kotlin教程(1)
  8. 拳王虚拟项目公社:怎么找低价电影票,低价电影票怎样赚钱,低价电影票实操赚钱方法?
  9. android log长字符串显示不全,如何解决Android的Log显示不全的问题
  10. Java架构-CAS SSO单点登录框架介绍
  11. K-th largest element in an array
  12. 项目操作案例丨西门子PLC通过网关连接ACS800变频器
  13. rbf神经网络和bp神经网络,rbf神经网络百度百科
  14. 【IDE-Visual Studio】无法启动程序“xxx.exe”。由于应用程序配置不正确,未能启动此应用程序。
  15. Access2016学习3
  16. 清华大学计算机科学系王瑀屏,清华大学材料科学与工程系
  17. 大秦帝国------令人神往的时代
  18. iOS 音乐播放器demo讲解
  19. audio autoplay
  20. THUOCL:清华大学开放中文词库

热门文章

  1. elasticsearch索引模块缓存
  2. codis实现redis分片和在线扩展
  3. 通过CSS3 Media Query实现响应式Web设计
  4. 系统开发中的时间类型的处理问题
  5. Keras(六)Autoencoder 自编码 原理及实例 Savereload 模型的保存和提取
  6. 第三百七十六节,Django+Xadmin打造上线标准的在线教育平台—创建用户操作app,在models.py文件生成5张表,用户咨询表、课程评论表、用户收藏表、用户消息表、用户学习表...
  7. 《软件构架实践》10-12章读后感
  8. CoreJavaE10V1P3.10 第3章 Java的基本编程结构-3.10 数组(Arrays)
  9. 自动化测试UI Test, Performance Test, Load Test 总结整理
  10. Symmetric Tree