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

下載本文檔

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

文檔簡介

1、6.3 軟件求解,Matlab求解有約束規(guī)劃函數(shù),1.fmincon函數(shù)求解形如下面的有約束非線性規(guī)劃模型,一般形式:,Matlab求解有約束非線性最小化 求解非線性規(guī)劃問題的Matlab函數(shù)fmincon 1.約束中可以有等式約束 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,

2、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ù)的幾點(diǎn)說明,模型中如果沒有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 = myco

3、n(x) c = .% 計算非線性不等式約束在點(diǎn)x處的函數(shù)值 ceq = .%計算機(jī)非線性等式約束在點(diǎn)x處的函數(shù)值,對參數(shù)nonlcon的進(jìn)一步示例,2個不等式約束, 2個等式約束 3個決策變量x1,x2,x3 如果nonlcon以mycon1作為參數(shù)值,則程序mycon1.m如下,對照約束條件編寫myfun1.m,function c,ceq = mycon1(x) c(1) = x(1)*x(1)+x(2)*x(2)+x(3)*x(3)-100 c(2) = 60 - x(1)*x(1) + 10*x(3)*x(3) ceq(1) = x(1) + x(2)*x(2) + x(3) - 8

4、0 ceq(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 = .% 計算非線性不等式約束在點(diǎn)x處的函數(shù)值 ceq = .%計算機(jī)非線性等式約束在點(diǎn)x處的函數(shù)值 if nargout 2% nonlcon 如果四個輸出參數(shù) GC = .% 不等式約束的

5、梯度 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(.) 運(yùn)用步驟: 將自己的模型轉(zhuǎn)化為上面的形式 寫出對應(yīng)的參數(shù) 調(diào)用函數(shù),f

6、mincon應(yīng)用求解示例:,請問: 1、結(jié)合fmincon函數(shù),需要提供哪些參數(shù),第一步:編寫一個M文件返回目標(biāo)函數(shù)f在點(diǎn)x處的值函數(shù)程序,function f = myfun(x) f = -x(1) * x(2) * x(3);,函數(shù)myfun.m,第二步:為了調(diào)用MATLAB函數(shù),必須將模型中的約束轉(zhuǎn)化為如下形式(=)。,這里: A=-1 -2 -2; 1 2 2 ; b=0 72;,這是2個線性約束,形如,第三步:提供一個搜索起點(diǎn),然后調(diào)用相應(yīng)函數(shù),程序如下:,% 給一個初始搜索點(diǎn) x0 = 10; 10; 10; x,fval = fmincon(myfun,x0,A,b),主程序(

7、整體):,A=-1 -2 -2; 1 2 2 ; b=0 72; % 給一個初始搜索點(diǎn) x0 = 10; 10; 10; x,fval = fmincon(myfun,x0,A,b),最后得到如下結(jié)果:,x = 24.0000 12.0000 12.0000 fval = -3.4560e+03,2.非負(fù)條件下線性最小二乘 lsqnonneg,適合如下模型:,注意:約束只有非負(fù)約束,語法:,x =lsqnonneg(c,d) x =lsqnonneg(c,d,x0) x =lsqnonneg(c,d,x0,options),3.有約束線性最小二乘lsqlin,適合如下模型:,注意:約束有線性等

8、式、不等式約束,語法:,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,out

9、put = 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,residu

10、al,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,使得下式最小,resnorm 等于 norm(C*x-d)2 residual 等于C*x-d,返回參數(shù)說明,第一步:編寫M文件myfun.m計算向量F,function F = myfun(x) k = 1:10; F = 2 + 2*k-exp(k*x(1)-exp(k*x(2);,第二步:調(diào)用優(yōu)化函數(shù)lsqnonlin,% 給定搜索起點(diǎn) x0 = 0.3 0

溫馨提示

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

評論

0/150

提交評論