多目标优化问题(over)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七章多目标优化问题的求解
优化问题按照目标函数的数量,可以分为单目标优化问题和多目标优化问题,前面我们讲过的线性优化就是一个单目标优化问题,对单目标优化问题进一步突破,将目标函数扩展为向量函数后,问题就转化为多目标优化问题。本节将简要介绍多目标最优化问题的建模与求解方法。
1、多目标优化模型
多目标优化问题一般表示为
..()min ()
s t J ≤=
x G x 0
x F 其中121()[(),(),,()]T f f f =F x x x x ,下面将通过例子演示多目标优化问题的建模。
例1
设某商店有123,,A A A 三种糖果,单价分别为4,2.8和2.4元/kg ,现在
要举办一次茶话会,要求买糖果的钱不超过20元,但糖果的总重量不少于6kg ,
1A 和2A 两种糖果的总重量不低于3kg ,应该如何确定最好的买糖方案。
分析:首先应该确定目标函数如何选择的问题,本例中,好的方案意味着少花钱多办事,这应该是对应两个目标函数,一个是花钱最少,一个是买的糖果最重,其他的可以认为是约束条件。当然,这两个目标函数有些矛盾,下面考虑如何将这个问题用数学描述。
设123,,A A A 三种糖果的购买重量分别为123,,x x x kg ,这时两个目标函数分别为花钱:1123min ()4 2.8 2.4f x x x =++x ,糖果总重量:2123max ()f x x x =++x ,如果统一用最小值问题表示,则有约束的多目标优化问题可以表示为
123123123123121234 2.8 2.4min
-4 2.8 2.4206..
+3,,0
x x x x x x x x x x x x s t x x x x x ++⎡⎤
⎢⎥++⎣⎦++≤⎧⎪++≥⎪⎨
≥⎪⎪≥⎩()模型建立以后,可以考虑用后面的方法进行求解。
2、无约束目标函数的最小二乘求解
假设多目标优化问题的目标函数为121()[(),(),,()]T f f f =F x x x x ,则可以按照下面的方式将其转化为单目标问题
22212..min
()()++()
L m M
n s t f f f ≤≤+x x x x x x x 这样就可以用以前的单目标优化的方法直接求解该问题了。此外,Matlab 还提供了lsqnonlin()函数直接求解这类问题,该函数的调用格式为
f 0[,,,flag,c]lsqnonlin(F,,,)
m M n f =opt x x x x 其中,F 为目标函数写的M 函数、匿名函数或inline()函数,该函数为向量函数。
0x 为初始搜索点。最优化运算完成后,结果将在变量x 中返回,最优化的目标函
数向量将在f opt 中返回,其范数由f n 返回,和其他优化函数一样,选项OPT 有时候很重要。
例2试求解下面无约束非线性多目标优化问题的最小二乘解。
2
2
1323
22
123123412(23)sin()5min cos(4)03005x x x x x x x x x e x e x x π----⎡⎤
++++⎢⎥⎢⎥+⎣⎦⎡⎤⎡⎤⎢⎥⎢⎥≤≤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦
x s.t.x 求解写出向量型的目标函数,则可以调用下面的语句直接求解原问题。
Program 1
f=@(x)[(x(1)+2*x(2)+3*x(3))*sin(x(1)+x(2))*exp(-x(1)^2-x(3)^2)+5*x(3);
exp(-x(2)^2-4*x(2)^3)*cos(4*x(1)+x(2))];
xm=[0;0;0];xM=[3;pi;5];
x=lsqnonlin(f,xM,xm,xM)
得到x=[3.0000 3.14160.0000],如果最后输出语句修改为
[x,nf,fopt,flag,c]=lsqnonlin(f,xM,xm,xM)
则可以得到更为详细的输出。事实上,如果采用fmincon()函数,则可以重新定
义目标函数,调用该函数求解可以直接得到所需结果x x=[3.0000 3.1416
0.0000],值得注意的是,用后者(fmincon())可以求取含有约束条件的多目标优化最小二乘问题。
3、多目标问题转化为单目标问题求解
多目标最优问题可以转化为单目标的优化问题,例如对多目标函数进行加权或最小二乘处理等。接下来对其简单介绍。
3.1线性加权变换及求解
显然,将多目标优化问题转化为单目标的优化问题的最简单的方法是根据指标的侧重侧重不同引入加权,使得目标函数改写为标量形式
1122()()()()
n n f w f w f w f =+++ x x x x 其中121n w w w +++= ,且120,,,1n w w w ≤≤ 。
例3试在不同的加权的系数下,求出例1的解。解原问题可以重新修改为下面的线性优化问题
1212312312123min ((4,2.8,2.4)(1,1,1))4 2.8 2.420
6..
+3,,0
w w x x x x x x s t x x x x x -++≤⎧⎪++≥⎪⎨
≥⎪⎪≥⎩x 程序如下:
Program 2
f1=[4,2.8,2.4];f2=[-1,-1,-1];Aeq=[];beq=[];xm=[0;0;0];c=[];
A=[4,2.8,2.4;-1,-1,-1;-1,-1,0];B=[20;-6;-3];ww1=[0:0.1:1];for w1=ww1,w2=1-w1;
x=linprog(w1*f1+w2*f2,A,B,Aeq,beq,xm);c=[c;w1,w2,x',f1*x,-f2*x]end
求解结果如下表1.