多目标最优化模型及其算法应用

一.大纲
  1. 多目标最优化模型概论
  2. 传统最优化解决方法
  3. 现代最优化算法
  4. 样例示范
二.多目标最优化模型概论

1.对于多余一个的目标函数在给定区域内的最优化问题称为多目标优化问题。

​ 例如:在给定条件下,设计一款汽车,既要满足安全(重量大),又要满足经济(耗油量小)即为多目标最优化问题。

​ 该模型通常可总述为:


​ 其中x=(x1,x2,x3…xn)所在的空间Ω称为决策空间(可行解空间),向量F(x)所在的空间为目标空间

​ 不同于单目标优化,在多目标优化中,各目标函数之间是相互冲突的。导致不一定存在在所有目标函数上都是最优解,某个解可能在一个目标函数中是最优的,但在另一个目标函数中是最差(判断多目标优化问题的关键)

​ 因此,多目标最优化问题得到的通常是一个解集,他们之间不能简单地比较优劣,这样的被称为非支配解(有效解),Pareto最优解

2.多目标优化相关概念:
  • 定义一

    向量支配对于最小化问题,一个向量u=(u1,u2…un)支配另一个向量v=(v1,v2…vn),当且仅当

    ui≤vi

  • 定义二

    如果Ω中没有支配(优于)x的解,则称x是该问题的一个Pareto最优解(非劣解,有效解,非支配解)

    Pareto最优解的全体组成的集合称为Pareto最优解集,Pareto最优解集在目标函数空间的像集称为Pareto Front(Pareto 前沿)

    ​ 如上图所示,A,B两点中是一个最优解,他们相应的自变量向量没有被其他任何的自变量向量所支配,也就意味着在任何一个目标上他们都不能被其他个体所支配。这样的解就是Pareto最优解。

    ​ 由定义一和定义二可知C点优于D点,C点优于F点,C点优于E点

三.传统最优化解决方法(点到点优化)
1.传统的处理多目标优化问题方法主要分为

其共同特点都是通过各种方式将多目标优化问题转化为单目标优化问题,然后应用单目标优化方法进行求解

①主要目标法

从m个目标中,确定一个为主要目标,其余目标作为次要目标,根据实际情况确定适当的界限值,把次要目标转化为约束条件来处理。可总述为下列模型

②分层序列法

把m个目标,按照重要程度排一个次序。不妨重要程度次序为f1(x),f2(x)…fn(x),

先求问题1:

得到最优解为x(1),以及最优值为f1*

再求问题2:

得到最优解为x(2),以及最优值为f2*

再求问题3:

得到最优解为x(3),以及最优值为f3*

以此类推直至求出问题m,所得到的解[x1,x2…]记为最优解

③加权法

对m个目标,按照重要程度给予适当的权系数ωi≥0,且满足∑ωi=1,即可将多优化问题转化为单一目标优化问题

所得到的解[x1,x2…]记为最优解

④理想点法

分别先求解m个单目标问题,令

即可转化为单目标问题

其中权系数ωi≥0,且满足∑ωi=1,所得到的解[x1,x2…]记为最优解

四.现代最优化算法(基于精英策略的快速非支配排序遗传算法)

1.算法框图

Pareto等级:在一组解中,非支配解Pareto等级定义为1,将非支配解从解的集合中删除,剩下解的Pareto等级定义为2,依次类推,可以得到该解集合中所有解的Pareto等级。示意图如图1所示。

对同一等级的点,通过拥挤度进行划分

拥挤度:

精英保留策略(根据拥挤选择算子)选择出较优的新的N个点
拥挤选择算子:

在NSGA-II中,定义拥挤比较算子,假设i,j分别表示种群P的两个个体。满足下列条件之一

1).irank<jrank

2).irank=jrank,且di>dj

即可称个体i优于个体j

确定算法选项

% 最优个体系数paretoFraction
% 种群大小populationsize
% 最大进化代数generations
% 停止代数stallGenLimit
% 适应度函数偏差TolFun
调用matlab库函数gamultiobj即可求解。
五.样例示范

建立模型

程序求解

所得Pareto最优解为

10932.6429473119 14.6295387130128
14605.3404613523 18.2262297321479
12068.3433707838 15.1109915229892
12429.0573504143 15.4986606722887
14532.6593388757 18.1842935253039
11131.9589772932 14.7011627210495

12231.6101793012 15.3304399641518
14601.9178238651 18.2252135575028
12925.9261417602 15.9920094703867

对应x为

267.971023073048 51.3565915834627 455.633097995301 125.585979212038
252.525614499897 239.427658309710 457.418751888526 128.750437678343
254.389944994419 171.851099214132 358.767031591140 127.301254104520
254.132868382987 186.732012546206 363.703424720114 127.760522787065
262.449535283310 233.128879659259 454.068085989463 128.340668641702
265.164827238227 73.5469917676312 436.961892621559 126.130582721401
255.486999974281 230.161706396739 363.122909473250 128.882635799297
256.416538867289 200.269620434745 381.067408667307 128.202939645206
261.153624157576 113.996154755591 403.634395120644 126.983182335415

252.260342156546 239.240158309710 457.928750235712 128.526159519777
253.531045975866 212.059789018681 363.552109061208 127.628185206671

pateto front 图

源代码:

%[x,fval]=gamultiobj(fitnessfcn,nvars,A,b,Aeq,beq,lb,ub,options)clear;clc;fitnessfcn=@fun;
nvars=4;
A=[0.015 0.02 0.018 0.01113 13.5 14 11.5-13 -13.5 -14 -11.5];
b=[20;14400;-12000];
Aeq=[];
beq=[];
lb=[0 0 150 0];
ub=[270 240 460 130];
options=gaoptimset('paretoFraction',0.3,'populationsize',200,'generations',300,'stallGenLimit',200,'TolFun',1e-10,'PlotFcns',@gaplotpareto);
[x,fval]=gamultiobj(fitnessfcn,nvars,A,b,Aeq,beq,lb,ub,options);function y=fun(x)
y(1)=-10.*x(1)+-20.*x(2)+-12.*x(3)+-14.*x(4);
y(2)=0.015.*x(1)+0.02.*x(2)+0.018.*x(3)+0.011.*x(4);
end

参考文献:

1.数学建模算法及其应用(第二版)

2.博客https://blog.csdn.net/weixin_47102975/article/details/108253584,

多目标最优化模型及算法应用(NSGA-II)相关推荐

  1. 进化计算(四)——NSGA/NSGA II算法详解

    NSGA/NSGA II算法理论学习  -A fast and elitist multiobjective genetic algorithm NSGA-II阅读笔记 引言 概述 为什么引入NSGA ...

  2. 进化计算(六)——NSGA II代码实现(Matlab)

    NSGA II代码实现 代码流程图 Code Main 函数选择 种群初始化 非支配排序 拥挤度计算 二进制锦标赛选择算子 SBX&Poly mutation 精英策略选择 目标函数 参考链接 ...

  3. 多目标优化-NSGAII算法

    NSGA-II学习笔记 阅读文献:A Fast and Elitist Multiobjective Genetic Algorithm: NSGA-II 有兴趣的话可以阅读中文翻译版本:https: ...

  4. NSGA II实例讲解

    NSGA II实例讲解 此文章是[1]的文字版,相关视频原链接见参考资料. 假设有一个圆规问题,目标函数为最小的底面积和最小的侧面积. 底面积=πr^2, 侧面积=πrsh 总的目标函数=底面积+侧面 ...

  5. 多目标蚁群算法路径规划(四)------多目标约束过程常规流程框架

    多目标蚁群算法路径规划(四) 文章目录 多目标蚁群算法路径规划(四) 零.系列前言(一定要看) 一.内容说明 1.1 本章内容说明 1.2 本章主要分享内容简介(摘要) 二. 多目标计算预先准备 2. ...

  6. CVPR2020论文介绍: 3D 目标检测高效算法

    CVPR2020论文介绍: 3D 目标检测高效算法 CVPR 2020: Structure Aware Single-Stage 3D Object Detection from Point Clo ...

  7. 计算机视觉多目标检测整合算法

    计算机视觉多目标检测整合算法 输入输出接口 Input:image/video Output:(1)BandingBox左上右下的坐标位置 (2)Type类型:人,车,-,-(3) 执行度:是指判别目 ...

  8. 目标跟踪学习算法DSST

    原文:http://blog.csdn.net/gxb0505/article/details/52601613?locationNum=8 简介(Accurate Scale Estimation ...

  9. 多目标遗传优化算法nsga2求解复杂约束问题【python源码实现,实数编码】

    效果图如下: 提示:专栏解锁后,可以查看该专栏所有文章. 文章目录 一.必备知识 二.nsga2(遗传算法为实数编码) 2.1 有规则的例子 2.2 没有规则的例子 总结 一.必备知识 十分钟了解完多 ...

  10. 多目标遗传优化算法nsga2求解复杂约束问题【python源码实现,二进制编码】

    前言 本文讲解多个输入情况下,多目标复杂约束问题.示例问题.Pareto解分布.代码量见下图 提示:专栏解锁后,可以查看该专栏所有文章.划算. 文章目录 前言 一.必备知识 二.多目标遗传优化算法求解 ...

最新文章

  1. SAP EWM 代码实现Transportation Unit(TU)的创建
  2. 对分贝(dB)概念的理解
  3. Js中数组去重的几种方法
  4. 字符串表达式求值 C#实现
  5. P4248-[AHOI2013]差异【SAM or SA】
  6. [one day one question] safari缓存太厉害
  7. C#使用StreamReader类读取文件文件
  8. 搭建CentOS7.6容器镜像
  9. java画圈_java动态画圈圈。运用多线程,绘图
  10. 在Python中从头开始迭代本地搜索
  11. Androd UI学习之ImageSwitcher
  12. 垃圾邮件识别(一):用机器学习做中文邮件内容分类
  13. 怎样对系统进行优化?
  14. 丘成桐:如何学好微分几何
  15. 升级Android SDK (API24)笔记
  16. linux之ps aux、ps -aux、ps -ef命令的区别
  17. Java面试——消息队列
  18. 基于ArcGIS Pro、Python、USLE、INVEST模型等多技术融合的生态系统服务构建生态安全格局
  19. [Swift]LeetCode1031. 两个非重叠子数组的最大和 | Maximum Sum of Two Non-Overlapping Subarrays...
  20. mysql match 中文_Mysql全文搜索match against的用法

热门文章

  1. ACM算法分类及完成情况
  2. Could not find artifact com.oracle:ojdbc7:pom:12.1.0.2 in central (https://r......的解决方案
  3. vb通过ado连接oracle数据库,vb ado连接oracle数据库
  4. 收藏 | 数据资源下载网址大全
  5. 二等水准数据平差_二等水准点高程平差计算表(1)
  6. exeScope软件修改exe或dll文件资源-20150818
  7. PowerBuilder9.0连接ORACLE数据库
  8. 英伟达显卡不同架构_求历代英伟达显卡架构名称
  9. 麦咖啡企业版McAfee VirusScan Enterprise v8.8授权版
  10. 最近不少朋友问WPS专业版,再发一次