




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第5章 優(yōu)化問題5.1 線性規(guī)劃問題線性規(guī)劃問題是目標(biāo)函數(shù)和約束條件均為線性函數(shù)的問題,MATLAB6.0解決的線性規(guī)劃問題的標(biāo)準(zhǔn)形式為:min sub.to: 其中f、x、b、beq、lb、ub為向量,A、Aeq為矩陣。其它形式的線性規(guī)劃問題都可經(jīng)過適當(dāng)變換化為此標(biāo)準(zhǔn)形式。在MATLAB6.0版中,線性規(guī)劃問題(Linear Programming)已用函數(shù)linprog取代了MATLAB5.x版中的lp函數(shù)。當(dāng)然,由于版本的向下兼容性,一般說來,低版本中的函數(shù)在6.0版中仍可使用。函數(shù) linprog格式 x = linprog(f,A,b) %求min f ' *x sub.to
2、 線性規(guī)劃的最優(yōu)解。x = linprog(f,A,b,Aeq,beq) %等式約束,若沒有不等式約束,則A= ,b= 。x = linprog(f,A,b,Aeq,beq,lb,ub) %指定x的范圍,若沒有等式約束 ,則Aeq= ,beq= x = linprog(f,A,b,Aeq,beq,lb,ub,x0) %設(shè)置初值x0x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options) % options為指定的優(yōu)化參數(shù)x,fval = linprog() % 返回目標(biāo)函數(shù)最優(yōu)值,即fval= f ' *x。x,lambda,exitflag = linp
3、rog() % lambda為解x的Lagrange乘子。x, lambda,fval,exitflag = linprog() % exitflag為終止迭代的錯誤條件。x,fval, lambda,exitflag,output = linprog() % output為關(guān)于優(yōu)化的一些信息說明 若exitflag>0表示函數(shù)收斂于解x,exitflag=0表示超過函數(shù)估值或迭代的最大數(shù)字,exitflag<0表示函數(shù)不收斂于解x;若lambda=lower 表示下界lb,lambda=upper表示上界ub,lambda=ineqlin表示不等式約束,lambda=eqlin表
4、示等式約束,lambda中的非0元素表示對應(yīng)的約束是有效約束;output=iterations表示迭代次數(shù),output=algorithm表示使用的運算規(guī)則,output=cgiterations表示PCG迭代次數(shù)。例5-1 求下面的優(yōu)化問題min sub.to 解:>>f = -5; -4; -6;>>A = 1 -1 1;3 2 4;3 2 0;>>b = 20; 42; 30;>>lb = zeros(3,1);>>x,fval,exitflag,output,lambda = linprog(f,A,b,lb)結(jié)果為:x
5、= %最優(yōu)解 0.0000 15.0000 3.0000fval = %最優(yōu)值 -78.0000exitflag = %收斂 1output = iterations: 6 %迭代次數(shù) cgiterations: 0 algorithm: 'lipsol' %所使用規(guī)則lambda = ineqlin: 3x1 double eqlin: 0x1 double upper: 3x1 double lower: 3x1 double>> lambda.ineqlinans = 0.0000 1.5000 0.5000>> lambda.lowerans =
6、 1.0000 0.0000 0.0000表明:不等約束條件2和3以及第1個下界是有效的5.2 foptions函數(shù)對于優(yōu)化控制,MATLAB提供了18個參數(shù),這些參數(shù)的具體意義為:options(1)-參數(shù)顯示控制(默認值為0)。等于1時顯示一些結(jié)果。 options(2)-優(yōu)化點x的精度控制(默認值為1e-4)。 options(3)-優(yōu)化函數(shù)F的精度控制(默認值為1e-4)。 options(4)-違反約束的結(jié)束標(biāo)準(zhǔn)(默認值為1e-6)。 options(5)-算法選擇,不常用。 options(6)-優(yōu)化程序方法選擇,為0則為BFCG算法,為1則采用DFP算法。 options(7)-
7、線性插值算法選擇,為0則為混合插值算法,為1則采用立方插算法。 options(8)-函數(shù)值顯示 (目標(biāo)達到問題中的Lambda ) options(9)-若需要檢測用戶提供的梯度,則設(shè)為1。 options(10)-函數(shù)和約束估值的數(shù)目。 options(11)-函數(shù)梯度估值的個數(shù)。 options(12)-約束估值的數(shù)目。 options(13)-等約束條件的個數(shù)。 options(14)-函數(shù)估值的最大次數(shù)(默認值是100×變量個數(shù)) options(15)-用于目標(biāo) 達到問題中的特殊目標(biāo)。 options(16)-優(yōu)化過程中變量的最小有限差分梯度值。 options(17)-
8、 優(yōu)化過程中變量的最大有限差分梯度值。 options(18)-步長設(shè)置 (默認為1或更小)。Foptions已經(jīng)被optimset和optimget代替,詳情請查函數(shù)optimset和optimget。5.3 非線性規(guī)劃問題5.3.1 有約束的一元函數(shù)的最小值單變量函數(shù)求最小值的標(biāo)準(zhǔn)形式為 sub.to 在MATLAB5.x中使用fmin函數(shù)求其最小值。函數(shù) fminbnd格式 x = fminbnd(fun,x1,x2) %返回自變量x在區(qū)間上函數(shù)fun取最小值時x值,fun為目標(biāo)函數(shù)的表達式字符串或MATLAB自定義函數(shù)的函數(shù)柄。x = fminbnd(fun,x1,x2,options
9、) % options為指定優(yōu)化參數(shù)選項x,fval = fminbnd() % fval為目標(biāo)函數(shù)的最小值x,fval,exitflag = fminbnd() %xitflag為終止迭代的條件x,fval,exitflag,output = fminbnd() % output為優(yōu)化信息說明 若參數(shù)exitflag>0,表示函數(shù)收斂于x,若exitflag=0,表示超過函數(shù)估計值或迭代的最大數(shù)字,exitflag<0表示函數(shù)不收斂于x;若參數(shù)output=iterations表示迭代次數(shù),output=funccount表示函數(shù)賦值次數(shù),output=algorithm表示所使
10、用的算法。例5-2 計算下面函數(shù)在區(qū)間(0,1)內(nèi)的最小值。解:>> x,fval,exitflag,output=fminbnd('(x3+cos(x)+x*log(x)/exp(x)',0,1)x = 0.5223fval = 0.3974exitflag = 1output = iterations: 9 funcCount: 9 algorithm: 'golden section search, parabolic interpolation'例5-3 在0,5上求下面函數(shù)的最小值解:先自定義函數(shù):在MATLAB編輯器中建立M文件為:fun
11、ction f = myfun(x)f = (x-3).2 - 1;保存為myfun.m,然后在命令窗口鍵入命令:>> x=fminbnd(myfun,0,5)則結(jié)果顯示為:x = 35.3.2 無約束多元函數(shù)最小值多元函數(shù)最小值的標(biāo)準(zhǔn)形式為其中:x為向量,如在MATLAB5.x中使用fmins求其最小值。命令 利用函數(shù)fminsearch求無約束多元函數(shù)最小值函數(shù) fminsearch格式 x = fminsearch(fun,x0) %x0為初始點,fun為目標(biāo)函數(shù)的表達式字符串或MATLAB自定義函數(shù)的函數(shù)柄。x = fminsearch(fun,x0,options) %
12、options查optimsetx,fval = fminsearch() %最優(yōu)點的函數(shù)值x,fval,exitflag = fminsearch() % exitflag與單變量情形一致x,fval,exitflag,output = fminsearch() %output與單變量情形一致注意:fminsearch采用了Nelder-Mead型簡單搜尋法。例5-4 求的最小值點解:>>X=fminsearch('2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2', 0,0)結(jié)果為X = 1.0016 0.8335或在MATLAB編
13、輯器中建立函數(shù)文件function f=myfun(x)f=2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2;保存為myfun.m,在命令窗口鍵入>> X=fminsearch ('myfun', 0,0) 或 >> X=fminsearch(myfun, 0,0)結(jié)果為:X = 1.0016 0.8335命令 利用函數(shù)fminunc求多變量無約束函數(shù)最小值函數(shù) fminunc格式 x = fminunc(fun,x0) %返回給定初始點x0的最小函數(shù)值點x = fminunc(fun,x0,options) % optio
14、ns為指定優(yōu)化參數(shù)x,fval = fminunc() %fval最優(yōu)點x處的函數(shù)值x,fval,exitflag = fminunc() % exitflag為終止迭代的條件,與上同。x,fval,exitflag,output = fminunc() %output為輸出優(yōu)化信息x,fval,exitflag,output,grad = fminunc() % grad為函數(shù)在解x處的梯度值x,fval,exitflag,output,grad,hessian = fminunc() %目標(biāo)函數(shù)在解x處的海賽(Hessian)值注意:當(dāng)函數(shù)的階數(shù)大于2時,使用fminunc比fminsea
15、rch更有效,但當(dāng)所選函數(shù)高度不連續(xù)時,使用fminsearch效果較好。例5-5 求的最小值。>> fun='3*x(1)2+2*x(1)*x(2)+x(2)2'>> x0=1 1;>> x,fval,exitflag,output,grad,hessian=fminunc(fun,x0)結(jié)果為:x = 1.0e-008 * -0.7591 0.2665fval = 1.3953e-016exitflag = 1output = iterations: 3 funcCount: 16 stepsize: 1.2353 firstordero
16、pt: 1.6772e-007 algorithm: 'medium-scale: Quasi-Newton line search'grad = 1.0e-006 * -0.1677 0.0114hessian = 6.0000 2.0000 2.0000 2.0000或用下面方法:>> fun=inline('3*x(1)2+2*x(1)*x(2)+x(2)2')fun = Inline function: fun(x) = 3*x(1)2+2*x(1)*x(2)+x(2)2>> x0=1 1;>> x=fminunc(f
17、un,x0)x = 1.0e-008 * -0.7591 0.26655.3.3 有約束的多元函數(shù)最小值非線性有約束的多元函數(shù)的標(biāo)準(zhǔn)形式為:sub.to 其中:x、b、beq、lb、ub是向量,A、Aeq為矩陣,C(x)、Ceq(x)是返回向量的函數(shù),f(x)為目標(biāo)函數(shù),f(x)、C(x)、Ceq(x)可以是非線性函數(shù)。在MATLAB5.x中,它的求解由函數(shù)constr實現(xiàn)。函數(shù) fmincon格式 x = fmincon(fun,x0,A,b)x = fmincon(fun,x0,A,b,Aeq,beq)x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)x = fmi
18、ncon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)x,fval = fmincon()x,fval,exitflag = fmincon()x,fval,exitflag,output = fmincon()x,fval,exitflag,output,lambda = fmincon()x,fval,exitflag,output,lambda,grad = fmincon()x,fval,exitflag,output,lambda,grad,hessian
19、= fmincon()參數(shù)說明:fun為目標(biāo)函數(shù),它可用前面的方法定義;x0為初始值;A、b滿足線性不等式約束,若沒有不等式約束,則取A= ,b= ;Aeq、beq滿足等式約束,若沒有,則取Aeq= ,beq= ;lb、ub滿足,若沒有界,可設(shè)lb= ,ub= ;nonlcon的作用是通過接受的向量x來計算非線性不等約束和等式約束分別在x處的估計C和Ceq,通過指定函數(shù)柄來使用,如:>>x = fmincon(myfun,x0,A,b,Aeq,beq,lb,ub,mycon),先建立非線性約束函數(shù),并保存為mycon.m:function C,Ceq = mycon(x)C = %
20、 計算x處的非線性不等約束的函數(shù)值。Ceq = % 計算x處的非線性等式約束的函數(shù)值。lambda是Lagrange乘子,它體現(xiàn)哪一個約束有效。output輸出優(yōu)化信息;grad表示目標(biāo)函數(shù)在x處的梯度;hessian表示目標(biāo)函數(shù)在x處的Hessiab值。例5-6 求下面問題在初始點(0,1)處的最優(yōu)解min sub.to 解:約束條件的標(biāo)準(zhǔn)形式為sub.to 先在MATLAB編輯器中建立非線性約束函數(shù)文件:function c, ceq=mycon (x)c=(x(1)-1)2-x(2);ceq= ; %無等式約束然后,在命令窗口鍵入如下命令或建立M文件:>>fun='x
21、(1)2+x(2)2-x(1)*x(2)-2*x(1)-5*x(2)' %目標(biāo)函數(shù)>>x0=0 1;>>A=-2 3; %線性不等式約束>>b=6;>>Aeq= ; %無線性等式約束>>beq= ;>>lb= ; %x沒有下、上界>>ub= ;>>x,fval,exitflag,output,lambda,grad,hessian=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,mycon)則結(jié)果為x = 3 4fval = -13exitflag = %解收斂 1outp
22、ut = iterations: 2 funcCount: 9 stepsize: 1 algorithm: 'medium-scale: SQP, Quasi-Newton, line-search' firstorderopt: cgiterations: lambda = lower: 2x1 double %x下界有效情況,通過lambda.lower可查看。 upper: 2x1 double %x上界有效情況,為0表示約束無效。 eqlin: 0x1 double %線性等式約束有效情況,不為0表示約束有效。 eqnonlin: 0x1 double %非線性等式約
23、束有效情況。 ineqlin: 2.5081e-008 %線性不等式約束有效情況。 ineqnonlin: 6.1938e-008 %非線性不等式約束有效情況。grad = %目標(biāo)函數(shù)在最小值點的梯度 1.0e-006 * -0.1776 0hessian = %目標(biāo)函數(shù)在最小值點的Hessian值 1.0000 -0.0000 -0.0000 1.0000例5-7 求下面問題在初始點x=(10, 10, 10)處的最優(yōu)解。Min Sub.to 解:約束條件的標(biāo)準(zhǔn)形式為sub.to >> fun= '-x(1)*x(2)*x(3)'>> x0=10,10
24、,10;>> A=-1 -2 -2;1 2 2;>> b=0;72;>> x,fval=fmincon(fun,x0,A,b)結(jié)果為:x = 24.0000 12.0000 12.0000fval = -34565.3.4 二次規(guī)劃問題二次規(guī)劃問題(quadratic programming)的標(biāo)準(zhǔn)形式為:sub.to 其中,H、A、Aeq為矩陣,f、b、beq、lb、ub、x為向量其它形式的二次規(guī)劃問題都可轉(zhuǎn)化為標(biāo)準(zhǔn)形式。MATLAB5.x版中的qp函數(shù)已被6.0版中的函數(shù)quadprog取代。函數(shù) quadprog格式 x = quadprog(H,f,
25、A,b) %其中H,f,A,b為標(biāo)準(zhǔn)形中的參數(shù),x為目標(biāo)函數(shù)的最小值。x = quadprog(H,f,A,b,Aeq,beq) %Aeq,beq滿足等約束條件。x = quadprog(H,f,A,b,Aeq,beq,lb,ub) % lb,ub分別為解x的下界與上界。x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0) %x0為設(shè)置的初值x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options) % options為指定的優(yōu)化參數(shù)x,fval = quadprog() %fval為目標(biāo)函數(shù)最優(yōu)值x,fval,exitflag = q
26、uadprog() % exitflag與線性規(guī)劃中參數(shù)意義相同x,fval,exitflag,output = quadprog() % output與線性規(guī)劃中參數(shù)意義相同x,fval,exitflag,output,lambda = quadprog() % lambda與線性規(guī)劃中參數(shù)意義相同例5-8 求解下面二次規(guī)劃問題sub.to 解:則,在MATLAB中實現(xiàn)如下:>>H = 1 -1; -1 2 ;>>f = -2; -6;>>A = 1 1; -1 2; 2 1;>>b = 2; 2; 3;>>lb = zeros(2
27、,1);>>x,fval,exitflag,output,lambda = quadprog(H,f,A,b, , ,lb)結(jié)果為:x = %最優(yōu)解 0.6667 1.3333fval = %最優(yōu)值 -8.2222exitflag = %收斂 1output = iterations: 3 algorithm: 'medium-scale: active-set' firstorderopt: cgiterations: lambda = lower: 2x1 double upper: 2x1 double eqlin: 0x1 double ineqlin: 3
28、x1 double>> lambda.ineqlinans = 3.1111 0.4444 0>> lambda.lowerans = 0 0說明 第1、2個約束條件有效,其余無效。例5-9 求二次規(guī)劃的最優(yōu)解max f (x1, x2)=x1x2+3sub.to x1+x2-2=0解:化成標(biāo)準(zhǔn)形式: sub.to x1+x2=2在Matlab中實現(xiàn)如下:>>H=0,-1;-1,0;>>f=0;0;>>Aeq=1 1;>>b=2;>>x,fval,exitflag,output,lambda = quadpro
29、g(H,f, , ,Aeq,b)結(jié)果為:x = 1.0000 1.0000fval = -1.0000exitflag = 1output = firstorderopt: 0 iterations: 1 cgiterations: 1 algorithm: 1x58 charlambda = eqlin: 1.0000 ineqlin: lower: upper: 5.4 “半無限”有約束的多元函數(shù)最優(yōu)解“半無限”有約束多元函數(shù)最優(yōu)解問題的標(biāo)準(zhǔn)形式為sub.to 其中:x、b、beq、lb、ub都是向量;A、Aeq是矩陣;C(x)、Ceq(x)、是返回向量的函數(shù),f(x)為目標(biāo)函數(shù);f(x)
30、、C(x)、Ceq(x)是非線性函數(shù);為半無限約束,通常是長度為2的向量。在MTALAB5.x中,使用函數(shù)seminf解決這類問題。函數(shù) fseminf格式 x = fseminf(fun,x0,ntheta,seminfcon)x = fseminf(fun,x0,ntheta,seminfcon,A,b)x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq)x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub)x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq
31、,beq,lb,ub,options)x,fval = fseminf()x,fval,exitflag = fseminf()x,fval,exitflag,output = fseminf()x,fval,exitflag,output,lambda = fseminf()參數(shù)說明:x0為初始估計值;fun為目標(biāo)函數(shù),其定義方式與前面相同;A、b由線性不等式約束確定,沒有,則A= ,b= ;Aeq、beq由線性等式約束確定,沒有,則Aeq= ,beq= ;Lb、ub由變量x的范圍確定;options為優(yōu)化參數(shù);ntheta為半無限約束的個數(shù);seminfcon用來確定非線性約束向量C和Ce
32、q以及半無限約束的向量K1,K2,Kn,通過指定函數(shù)柄來使用,如:x = fseminf(myfun,x0,ntheta,myinfcon)先建立非線性約束和半無限約束函數(shù)文件,并保存為myinfcon.m:function C,Ceq,K1,K2,Kntheta,S = myinfcon(x,S)%S為向量w的采樣值% 初始化樣本間距if isnan(S(1,1),S = % S 有ntheta行2列endw1 = %計算樣本集w2 = %計算樣本集wntheta = % 計算樣本集K1 = % 在x和w處的第1個半無限約束值K2 = %在x和w處的第2個半無限約束值Kntheta = %在
33、x和w處的第ntheta個半無限約束值C = % 在x處計算非線性不等式約束值Ceq = % 在x處計算非線性等式約束值如果沒有約束,則相應(yīng)的值取為“ ”,如Ceq=fval為在x處的目標(biāo)函數(shù)最小值;exitflag為終止迭代的條件;output為輸出的優(yōu)化信息;lambda為解x的Lagrange乘子。例5-10 求下面一維情形的最優(yōu)化問題sub.to 解:將約束方程化為標(biāo)準(zhǔn)形式:先建立非線性約束和半無限約束函數(shù)文件,并保存為mycon.m:function C,Ceq,K1,K2,S = mycon(X,S)% 初始化樣本間距:if isnan(S(1,1), S = 0.2 0; 0.2
34、 0;end% 產(chǎn)生樣本集:w1 = 1:S(1,1):100;w2 = 1:S(2,1):100;% 計算半無限約束:K1 = sin(w1*X(1).*cos(w1*X(2) - 1/1000*(w1-50).2 -sin(w1*X(3)-X(3)-1;K2 = sin(w2*X(2).*cos(w2*X(1) - 1/1000*(w2-50).2 -sin(w2*X(3)-X(3)-1;% 無非線性約束:C = ; Ceq= ;% 繪制半無限約束圖形plot(w1,K1,'-',w2,K2,':'),title('Semi-infinite con
35、straints')然后在MATLAB命令窗口或編輯器中建立M文件:fun = 'sum(x-0.5).2)'x0 = 0.5; 0.2; 0.3; % Starting guessx,fval = fseminf(fun,x0,2,mycon)結(jié)果為:x = 0.6673 0.3013 0.4023fval = 0.0770>>C,Ceq,K1,K2 = mycon (x,NaN); % 利用初始樣本間距>>max(K1)ans = -0.0017>>max(K2)ans = -0.0845圖5-1例5-11 求下面二維情形的最優(yōu)化
36、問題sub.to 初始點為x0=0.25, 0.25, 0.25。解:先建立非線性和半無限約束函數(shù)文件,并保存為mycon.m:function C,Ceq,K1,S = mycon(X,S)% 初始化樣本間距:if isnan(s(1,1), s = 2 2;end% 設(shè)置樣本集w1x = 1:s(1,1):100;w1y = 1:s(1,2):100;wx, wy = meshgrid(w1x,w1y);% 計算半無限約束函數(shù)值 K1 = sin(wx*X(1).*cos(wx*X(2)-1/1000*(wx-50).2 -sin(wx*X(3)-X(3)+sin(wy*X(2).*cos
37、(wx*X(1)-1/1000*(wy-50).2-sin(wy*X(3)-X(3)-1.5;% 無非線性約束C = ; Ceq= ;%作約束曲面圖形m = surf(wx,wy,K1,'edgecolor','none','facecolor','interp');camlight headlighttitle('Semi-infinite constraint')drawnow然后在MATLAB命令窗口下鍵入命令:>>fun = 'sum(x-0.2).2)'>>x0 =
38、 0.25, 0.25, 0.25; >>x,fval = fseminf(fun,x0,1,mycon)結(jié)果為(如圖)x = 0.2926 0.1874 0.2202圖5-2fval = 0.0091>>c,ceq,K1 = mycon(x,0.5,0.5); % 樣本間距為0.5>>max(max(K1)ans = -0.00275.5 極小化極大(Minmax)問題極小化極大問題的標(biāo)準(zhǔn)形式為sub.to 其中:x、b、beq、lb、ub是向量,A、Aeq為矩陣,C(x)、Ceq(x)和F(x)是返回向量的函數(shù),F(xiàn)(x)、C(x)、Ceq(x)可以是非線
39、性函數(shù)。在MATLAB5.x中,它的求解由函數(shù)minmax實現(xiàn)。函數(shù) fminimax格式 x = fminimax(fun,x0)x = fminimax(fun,x0,A,b)x = fminimax(fun,x0,A,b,Aeq,beq)x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub)x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)x,fval,maxfval = fminimax()x,fval,maxfva
40、l,exitflag = fminimax()x,fval,maxfval,exitflag,output = fminimax()x,fval,maxfval,exitflag,output,lambda = fminimax()參數(shù)說明:fun為目標(biāo)函數(shù);x0為初始值;A、b滿足線性不等約束,若沒有不等約束,則取A= ,b= ;Aeq、beq滿足等式約束,若沒有,則取Aeq= ,beq= ;lb、ub滿足,若沒有界,可設(shè)lb= ,ub= ;nonlcon的作用是通過接受的向量x來計算非線性不等約束和等式約束分別在x處的值C和Ceq,通過指定函數(shù)柄來使用,如:>>x = fmin
41、imax(myfun,x0,A,b,Aeq,beq,lb,ub,mycon),先建立非線性約束函數(shù),并保存為mycon.m:function C,Ceq = mycon(x)C = % 計算x處的非線性不等約束的函數(shù)值。Ceq = % 計算x處的非線性等式約束的函數(shù)值。options為指定的優(yōu)化參數(shù);fval為最優(yōu)點處的目標(biāo)函數(shù)值;maxfval為目標(biāo)函數(shù)在x處的最大值;exitflag為終止迭代的條件;lambda是Lagrange乘子,它體現(xiàn)哪一個約束有效。output輸出優(yōu)化信息。例5-12 求下列函數(shù)最大值的最小化問題其中:解:先建立目標(biāo)函數(shù)文件,并保存為myfun.m:functio
42、n f = myfun(x)f(1)= 2*x(1)2+x(2)2-48*x(1)-40*x(2)+304; f(2)= -x(1)2 - 3*x(2)2;f(3)= x(1) + 3*x(2) -18;f(4)= -x(1)- x(2);f(5)= x(1) + x(2) - 8;然后,在命令窗口鍵入命令:x0 = 0.1; 0.1; % 初始值x,fval = fminimax(myfun,x0)結(jié)果為:x = 4.0000 4.0000fval = 0.0000 -64.0000 -2.0000 -8.0000 -0.0000例5-13 求上述問題的絕對值的最大值最小化問題。目標(biāo)函數(shù)為:
43、解:先建立目標(biāo)函數(shù)文件(與上例相同)然后,在命令窗口或編輯器中建立M文件:>>x0 = 0.1; 0.1; % 初始點>>options = optimset('MinAbsMax',5); % 指定絕對值的最小化>>x,fval = fminimax(myfun,x0, , , , , , , ,options)則結(jié)果為x = 4.9256 2.0796fval = 37.2356 -37.2356 -6.8357 -7.0052 -0.99485.6 多目標(biāo)規(guī)劃問題多目標(biāo)規(guī)劃是指在一組約束下,對多個不同目標(biāo)函數(shù)進行優(yōu)化。它的一般形式為su
44、b.to 其中:。在同一約束下,當(dāng)目標(biāo)函數(shù)處于沖突狀態(tài)時,不存在最優(yōu)解x使所有目標(biāo)函數(shù)同時達到最優(yōu)。此時,我們使用有效解,即如果不存在,使得,i=1,2,m, 則稱x*為有效解。在MATLAB中,多目標(biāo)問題的標(biāo)準(zhǔn)形式為sub.to 其中:x、b、beq、lb、ub是向量;A、Aeq為矩陣;C(x)、Ceq(x)和F(x)是返回向量的函數(shù);F(x)、C(x)、Ceq(x)可以是非線性函數(shù);weight為權(quán)值系數(shù)向量,用于控制對應(yīng)的目標(biāo)函數(shù)與用戶定義的目標(biāo)函數(shù)值的接近程度;goal為用戶設(shè)計的與目標(biāo)函數(shù)相應(yīng)的目標(biāo)函數(shù)值向量;為一個松弛因子標(biāo)量;F(x)為多目標(biāo)規(guī)劃中的目標(biāo)函數(shù)向量。在MATLAB5
45、.x中,它的最優(yōu)解由attgoal函數(shù)實現(xiàn)。函數(shù) fgoalattain格式 x = fgoalattain(fun,x0,goal,weight)x = fgoalattain(fun,x0,goal,weight,A,b)x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq)x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)x = fgoalattain(fun,x0,goa
46、l,weight,A,b,Aeq,beq,lb,ub,nonlcon,options)x,fval = fgoalattain()x,fval,attainfactor = fgoalattain()x,fval,attainfactor,exitflag = fgoalattain()x,fval,attainfactor,exitflag,output = fgoalattain()x,fval,attainfactor,exitflag,output,lambda = fgoalattain()參數(shù)說明:x0為初始解向量;fun為多目標(biāo)函數(shù)的文件名字符串,其定義方式與前面fun的定義方式
47、相同;goal為用戶設(shè)計的目標(biāo)函數(shù)值向量;weight為權(quán)值系數(shù)向量,用于控制目標(biāo)函數(shù)與用戶自定義目標(biāo)值的接近程度;A、b滿足線性不等式約束,沒有時取A= ,b= ;Aeq、beq滿足線性等式約束,沒有時取Aeq= ,beq= ;lb、ub為變量的下界和上界:;nonlcon的作用是通過接受的向量x來計算非線性不等約束和等式約束分別在x處的值C和Ceq,通過指定函數(shù)柄來使用。如:>>x = fgoalattain(myfun,x0,goal,weight,A,b,Aeq,beq,lb,ub,mycon),先建立非線性約束函數(shù),并保存為mycon.m:function C,Ceq =
48、 mycon(x)C = % 計算x處的非線性不等式約束的函數(shù)值。Ceq = % 計算x處的非線性等式約束的函數(shù)值。options為指定的優(yōu)化參數(shù);fval為多目標(biāo)函數(shù)在x處的值;attainfactor為解x處的目標(biāo)規(guī)劃因子;exitflag為終止迭代的條件;output為輸出的優(yōu)化信息;lambda為解x處的Lagrange乘子例5-14 控制系統(tǒng)輸出反饋器設(shè)計。設(shè)如下線性系統(tǒng)其中: 要求設(shè)計輸出反饋控制器K,使閉環(huán)系統(tǒng)在復(fù)平面實軸上點-5,-3,-1的左側(cè)有極點,并要求 解:上述問題就是要求解矩陣K,使矩陣(A+BKC)的極點為-5,-3,-1,這是一個多目標(biāo)規(guī)劃問題。先建立目標(biāo)函數(shù)文件
49、,保存為eigfun.m:function F = eigfun(K,A,B,C)F = sort(eig(A+B*K*C); % 估計目標(biāo)函數(shù)值然后,輸入?yún)?shù)并調(diào)用優(yōu)化程序:A = -0.5 0 0; 0 -2 10; 0 1 -2;B = 1 0; -2 2; 0 1;C = 1 0 0; 0 0 1; K0 = -1 -1; -1 -1; % 初始化控制器矩陣goal = -5 -3 -1; % 為閉合環(huán)路的特征值(極點)設(shè)置目標(biāo)值向量weight = abs(goal) % 設(shè)置權(quán)值向量lb = -4*ones(size(K0); % 設(shè)置控制器的下界ub = 4*ones(size(
50、K0); % 設(shè)置控制器的上界options = optimset('Display','iter'); % 設(shè)置顯示參數(shù):顯示每次迭代的輸出K,fval,attainfactor = fgoalattain(eigfun,K0,goal,weight,lb,ub,options,A,B,C)結(jié)果為:weight = 5 3 1 Attainment Directional Iter F-count factor Step-size derivative Procedure 1 6 1.885 1 1.03 2 13 1.061 1 -0.679 3 20 0.4211 1 -0.523 Hessian modified 4 27 -0.06352 1 -0.053 Hessian modified twice 5 34 -0.1571 1 -0.133 6 41 -0.3489 1 -0.00768 Hessian modified 7 48 -0.3643 1 -4.25e-005 Hessian modified 8 55 -
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 旅游景區(qū)開發(fā)及運營服務(wù)合同
- 工程合同管理工作制度
- 擔(dān)保合同第三方擔(dān)保
- 職工勞動合同協(xié)議書
- 個人集資房屋買賣合同
- 商場物業(yè)合同年
- 房屋土地出租合同書
- 出租車庫正式合同
- 淺析合同擔(dān)保之定金
- 福建幼兒師范高等??茖W(xué)?!冬F(xiàn)代企業(yè)管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 《古詩三首》五年級下冊第一單元教學(xué)方案
- 中國農(nóng)業(yè)大學(xué)人文與發(fā)展學(xué)院管理服務(wù)崗位招聘筆試真題2023
- 2025年農(nóng)村婦婦兩癌檢查項目實施方案工作計劃
- 上海美食介紹
- 新人教版三年級下冊《道德與法治》教案
- 2024年11月時事政治試題及答案
- 烈士褒揚課件教學(xué)課件
- 退休延期留用崗位協(xié)議書
- 3.1 歌曲《音階歌》課件(10張內(nèi)嵌音頻)
- 中醫(yī)適宜技術(shù)-中藥熱奄包
- 2024年儲能行業(yè)市場全景分析及發(fā)展趨勢展望報告
評論
0/150
提交評論