多目标最优化模型及其算法应用
一.大纲
- 多目标最优化模型概论
- 传统最优化解决方法
- 现代最优化算法
- 样例示范
二.多目标最优化模型概论
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.011
13 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.数学建模算法及其应用(第二版)文章来源:https://www.toymoban.com/news/detail-437035.html
2.博客https://blog.csdn.net/weixin_47102975/article/details/108253584,文章来源地址https://www.toymoban.com/news/detail-437035.html
到了这里,关于多目标最优化模型及算法应用(NSGA-II)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!