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

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

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

名词:

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)仿真流程:


仿真代码已上传至:https://download.csdn.net/download/qq_39578356/12819416
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. SEO优化知识点以及思路学习笔记

    文章目录 前言 实用网站 工具网站 SEO知识博客 一.初步认识SEO 二.网页爬虫的管理规则 三.链接提交与页面收录 四.知识点学习 4.1.了解权重 4.2.点击率.访问量与停留时间 五.SEO优 ...

  2. 联合目标检测和语义分割——学习笔记

    联合目标检测和语义分割 目标检测 目标检测是一种与计算机视觉和图像处理相关的计算机技术,用于检测数字图像和视频中特定类别的语义对象(例如人,建筑物或汽车)的实例.然而现实中物体的尺寸.姿态.位置都有很 ...

  3. 熬了几个大夜,学完一套985博士总结的「卷积神经网络、目标检测、OpenCV」学习笔记(20G高清/PPT/代码)...

    AI 显然是最近几年非常火的一个新技术方向,从几年前大家认识到 AI 的能力,到现在产业里已经在普遍的探讨 AI 如何落地了. 我们可以预言未来在很多的领域,很多的行业,AI 都会在里边起到重要的作用 ...

  4. 遗传算法学习笔记(一):常用的选择策略

    简述 遗传算法(GA)是一种模拟生物进化自然选择过程的非确定性搜索方法,源于达尔文的进化论和孟德尔的遗传定律,由美国 Michigan 大学的 Holland教授在 20 世纪 70 年代首先提出.生 ...

  5. 目标检测——neck组件的学习笔记

    1 致谢 感谢江哥的帮助! 2 前言 这里关于模型组件的命名,我们是参考的YOLOv4的论文,如图所示, 3 ASPP--基于稀疏卷积的SPP模块 ASPP是南溪学习的第一个类SPP模块,当时是在百度 ...

  6. 目标检测——Anchor-Based算法的学习笔记

    1 前言 在写这篇笔记之前,首先我们需要确定的是:Anchor-Based的思路一定优于Anchor-Free的算法,这是毋庸置疑的: 你想想,一个事情分成两步做:正负目标分类--目标的精细定位和回归 ...

  7. 目标检测——域适应的学习笔记

    1 前言 在基于深度学习的目标检测任务中,训练集与测试集样本分布的不一致是一个影响模型表现的常见因素, 为了使得训练集的分布与测试集一致,我们需要采用一定的样本增广操作: 2 备注 2.1 " ...

  8. 目标检测之RRPN的学习笔记~

    1 前言 今天在学习RRPN网络~ 2 RRPN网络介绍 RRPN,Rotation Region Proposal Networks,旋转区域候选框网络.通过其命名就可以看出,他是为了解决目标检测中 ...

  9. 目标检测—基于Yolov3的目标检测项目实战(学习笔记)

    最近在学习tensorflow,尝试运行学习了github上基于yolov3的一个目标检测项目,此算法可对视频.图片.摄像头实时进行检测,本文主要讲述了,在windows电脑上,复现这一目标检测项目的 ...

最新文章

  1. linux刷新磁盘的命令,sync命令 – 刷新文件系统缓冲区
  2. Science:人工智能的发展离不开神经科学,先天结构或是下一个方向
  3. VS2010中使用正则表达式替换时无法使用回车符的解决方法
  4. 为什么都用m3u8_为什么中国人都喜欢用红砖盖房?
  5. hibernate 别名_Hibernate:在sqlRestriction上使用联接表别名
  6. 吴恩达 神经网络和深度学习 第一课 第三周 (代码)planar data classify
  7. 面向车载通信的安全关键技术【会议】
  8. linux中Cron定时任务系统命令详解
  9. Elasticsearch 实战1:ES 项目实战(一)Java 集成 Spring Data Elasticsearch(一):简介及环境搭建
  10. 机器学习模型部署文章存档
  11. js-权威指南学习笔记4
  12. 同是4G标准,TD和FDD怎么区分?谁更快?
  13. Datawhale---Task2(EDA-数据探索性分析)
  14. Unity初级案例 - 吃豆人(Unity2017.2.0)Day 2
  15. Mel中级教程精华篇预告
  16. 车牌号测试打分最准确的软件,车牌号码吉凶测试
  17. 联想ThinkBook 16+ 2023款 评测
  18. ffmpeg中vf与filter_complex的区别
  19. html 字体形状,二十款漂亮的CSS字体样式
  20. spring切入点函数

热门文章

  1. 全球及中国抗体药物市场展望规划及专项深度调研报告2021-2027年
  2. Windows程序设计——Ellipse函数画圆及不用Windows自带的画椭圆函数画椭圆
  3. 北中医远程教育计算机2008,北京中医药大学远程教育“计算机应用基础”第7次作业...
  4. 通过Alertmanager实现Prometheus的告警告警配置(邮箱加钉钉)
  5. 如何删除PDF空白签名域?
  6. 人工智能对人类的机遇与挑战
  7. 【MATLAB强化学习工具箱】学习笔记--actor网络和critic网络的结果放在哪里?
  8. [data engineering] (一)数据工程师的工作内容以及需要的软硬实力
  9. 在 CentOS 7.6 上打包 Android Package APK
  10. 在ARCGIS中画一幅高程地图、地形图