Matlab求解有約束規(guī)劃函數(shù)_第1頁
Matlab求解有約束規(guī)劃函數(shù)_第2頁
Matlab求解有約束規(guī)劃函數(shù)_第3頁
Matlab求解有約束規(guī)劃函數(shù)_第4頁
Matlab求解有約束規(guī)劃函數(shù)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

6.3

軟件求解第一頁,編輯于星期一:十九點五十分。Matlab求解有約束規(guī)劃函數(shù)第二頁,編輯于星期一:十九點五十分。1.fmincon函數(shù)求解形如下面的有約束非線性規(guī)劃模型一般形式:第三頁,編輯于星期一:十九點五十分。Matlab求解有約束非線性最小化求解非線性規(guī)劃問題的Matlab函數(shù)fmincon1.約束中可以有等式約束2.可以含線性、非線性約束均可第四頁,編輯于星期一:十九點五十分。輸入?yún)?shù)語法: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

=

fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)x

=

fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)x

=

fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2,第五頁,編輯于星期一:十九點五十分。輸入?yún)?shù)的幾點說明?模型中如果沒有A,b,Aeq,beq,lb,ub的限制,則以空矩陣[]作為?參數(shù)傳入;?nonlcon:如果包含非線性等式或不等式約束,則將這些函數(shù)編寫為一個Matlab函數(shù),nonlcon就是定義這些函數(shù)的程序文件名;不等式約束c(x)<=0等式約束ceq(x)=0.如果nonlcon=‘mycon’;則myfun.m定義如下

function[c,ceq]=mycon(x)c

=

...

%

計算非線性不等式約束在點x處的函數(shù)值ceq

=

...

%計算機非線性等式約束在點x處的函數(shù)值第六頁,編輯于星期一:十九點五十分。對參數(shù)nonlcon的進一步示例2個不等式約束,2個等式約束3個決策變量x1,x2,x3如果nonlcon以‘mycon1’作為參數(shù)值,則程序

mycon1.m如下第七頁,編輯于星期一:十九點五十分。對照約束條件編寫myfun1.mfunction

[c,ceq]

=

mycon1(x)c(1)

=

x(1)*x(1)+x(2)*x(2)+x(3)*x(3)-100c(2)

=

60

-

x(1)*x(1)

+

10*x(3)*x(3)ceq(1)

=

x(1)

+

x(2)*x(2)

+

x(3)

-

80ceq(2)

=

x(1)^3

+

x(2)*x(2)

+

x(3)

-

80第八頁,編輯于星期一:十九點五十分。nonlcon的高級用法允許提供非線性約束條件中函數(shù)的梯度設(shè)置方法:options

=

optimset("GradConstr",

"on")如果提供非線性約束條件中函數(shù)梯度,nonlcon的函數(shù)必須如下格式:第九頁,編輯于星期一:十九點五十分。參數(shù)nonlcon的函數(shù)一般格式如下function

[c,ceq,GC,GCeq]

=

mycon(x)c

=

...ceq

=

...%計算非線性不等式約束在點x處的函數(shù)值%計算機非線性等式約束在點x處的函數(shù)值if

nargout

>

2%nonlcon如果四個輸出參數(shù)%不等式約束的梯度%等式約束的梯度GC

=

...GCeq

=

...end第十頁,編輯于星期一:十九點五十分。輸出參數(shù)語法:[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]=fmincon(...)運用步驟:將自己的模型轉(zhuǎn)化為上面的形式寫出對應(yīng)的參數(shù)調(diào)用函數(shù)第十一頁,編輯于星期一:十九點五十分。fmincon應(yīng)用求解示例:請問:1、結(jié)合fmincon函數(shù),需要提供哪些參數(shù)第十二頁,編輯于星期一:十九點五十分。第一步:編寫一個M文件返回目標(biāo)函數(shù)f在點x處的值函數(shù)程序函數(shù)myfun.mfunction

f

=

myfun(x)f

=

-x(1)

*

x(2)

*

x(3);第十三頁,編輯于星期一:十九點五十分。第二步:為了調(diào)用MATLAB函數(shù),必須將模型中的約束轉(zhuǎn)化為如下形式(<=)。這是2個線性約束,形如這里:A=[-1

-2

-2;

1

2

2

];b=[0

72]’;第十四頁,編輯于星期一:十九點五十分。第三步:提供一個搜索起點,然后調(diào)用相應(yīng)函數(shù),程序如下:%給一個初始搜索點x0

=

[10;

10;

10];[x,fval]

=

fmincon("myfun",x0,A,b)第十五頁,編輯于星期一:十九點五十分。主程序(整體):A=[-1-2

-2;

1

2

2

];b=[0

72]’;%給一個初始搜索點x0

=

[10;

10;

10];[x,fval]

=

fmincon("myfun",x0,A,b)第十六頁,編輯于星期一:十九點五十分。最后得到如下結(jié)果:x

=24.000012.000012.0000fval

=-3.4560e+03第十七頁,編輯于星期一:十九點五十分。2.非負(fù)條件下線性最小二乘lsqnonneg適合如下模型:注意:約束只有非負(fù)約束第十八頁,編輯于星期一:十九點五十分。語法:x

=lsqnonneg(c,d)x

=lsqnonneg(c,d,x0)x

=lsqnonneg(c,d,x0,options)第十九頁,編輯于星期一:十九點五十分。3.有約束線性最小二乘lsqlin適合如下模型:注意:約束有線性等式、不等式約束第二十頁,編輯于星期一:十九點五十分。語法:x

=

lsqlin(C,d,A,b)x

=

lsqlin(C,d,A,b,Aeq,beq)x

=

lsqlin(C,d,A,b,Aeq,beq,lb,ub)x

=

lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0)x

=

lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0,options)[x,resnorm]

=

lsqlin(...)[x,resnorm,residual]

=

lsqlin(...)[x,resnorm,residual,exitflag]

=

lsqlin(...)[x,resnorm,residual,exitflag,output]

=

lsqlin(...)[x,resnorm,residual,exitflag,output,lambda]

=

lsqlin(...)第二十一頁,編輯于星期一:十九點五十分。4.非線性最小二乘lsqnonlin適合模型:第二十二頁,編輯于星期一:十九點五十分。語法:x

=

lsqnonlin(fun,x0)x

=

lsqnonlin(fun,x0,lb,ub)x

=

lsqnonlin(fun,x0,lb,ub,options)x

=

lsqnonlin(fun,x0,options,P1,P2,

...

)[x,resnorm]

=

lsqnonlin(...)[x,resnorm,residual]

=

lsqnonlin(...)[x,resnorm,residual,exitflag]

=

lsqnonlin(...)[x,resnorm,residual,exitflag,output]

=

lsqnonlin(...)[x,resnorm,residual,exitflag,output,lambda]

=

lsqnonlin(...)[x,resnorm,residual,exitflag,output,lambda,jacobian]

=lsqnonlin(...)第二十三頁,編輯于星期一:十九點五十分。例1:求解x,使得下式最小resnormresidual等于norm(C*x-d)^2等于C*x-d返回參數(shù)說明第二十四頁,編輯于星期一:十九點五十分。第一步:編寫M文件myfun.m計算向量Ffunction

F

=

myfun(x)k

=

1:10;F

=

2

+

2*k-exp(k*x(1))-exp(k*x(2));第二十五頁,編輯于星期一:十九點五十分。第二步:調(diào)用優(yōu)化函數(shù)lsqnonlin%給定搜索起點x0=[0.3

0.4];%調(diào)用求解函數(shù)[x,resnorm]

=

ls

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論