線性規(guī)劃問題Matlab求解【精選文檔】_第1頁
線性規(guī)劃問題Matlab求解【精選文檔】_第2頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、線性規(guī)劃問題Matlab求解【精選文檔】用MATLAB優(yōu)化工具箱解線性規(guī)劃 命令:x=linprog(c,A,b) 命令:x=linprog(c,A,b,Aeq,beq)注意:若沒有不等式: 存在,則令A(yù)= ,b= . 若沒有等式約束, 則令A(yù)eq= , beq= .命令:1 x=linprog(c,A,b,Aeq,beq, VLB,VUB) 2 x=linprog(c,A,b,Aeq,beq, VLB,VUB, X0) 注意:1 若沒有等式約束, 則令A(yù)eq= , beq= . 2其中X0表示初始點(diǎn) 4、命令:x,fval=linprog()返回最優(yōu)解x及x處的目標(biāo)函數(shù)值fval。例1 解

2、編寫M文件小xxgh1.m如下:c=-0.4 -0。28 0.32 0。72 0。64 -0.6; A=0.01 0。01 0。01 0.03 0.03 0.03;0.02 0 0 0。05 0 0;0 0。02 0 0 0。05 0;0 0 0.03 0 0 0.08; b=850;700;100;900; Aeq=; beq=; vlb=0;0;0;0;0;0; vub=;x,fval=linprog(c,A,b,Aeq,beq,vlb,vub)例2 解: 編寫M文件xxgh2。m如下: c=6 3 4; A=0 1 0; b=50; Aeq=1 1 1; beq=120; vlb=30,

3、0,20; vub=; x,fval=linprog(c,A,b,Aeq,beq,vlb,vub例3 (任務(wù)分配問題)某車間有甲、乙兩臺(tái)機(jī)床,可用于加工三種工件。假定這兩臺(tái)車床的可用臺(tái)時(shí)數(shù)分別為800和900,三種工件的數(shù)量分別為400、600和500,且已知用三種不同車床加工單位數(shù)量不同工件所需的臺(tái)時(shí)數(shù)和加工費(fèi)用如下表。問怎樣分配車床的加工任務(wù),才能既滿足加工工件的要求,又使加工費(fèi)用最低解 設(shè)在甲車床上加工工件1、2、3的數(shù)量分別為x1、x2、x3,在乙車床上加工工件1、2、3的數(shù)量分別為x4、x5、x6.可建立以下線性規(guī)劃模型:編寫M文件xxgh3。m如下:f = 13 9 10 11 1

4、2 8;A = 0.4 1.1 1 0 0 0 0 0 0 0。5 1。2 1。3;b = 800; 900;Aeq=1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1;beq=400 600 500;vlb = zeros(6,1);vub=;x,fval = linprog(f,A,b,Aeq,beq,vlb,vub)例4某廠每日8小時(shí)的產(chǎn)量不低于1800件。為了進(jìn)行質(zhì)量控制,計(jì)劃聘請(qǐng)兩種不同水平的檢驗(yàn)員。一級(jí)檢驗(yàn)員的標(biāo)準(zhǔn)為:速度25件/小時(shí),正確率98%,計(jì)時(shí)工資4元/小時(shí);二級(jí)檢驗(yàn)員的標(biāo)準(zhǔn)為:速度15小時(shí)/件,正確率95,計(jì)時(shí)工資3元/小時(shí).檢驗(yàn)員每錯(cuò)檢一次,工廠要

5、損失2元。為使總檢驗(yàn)費(fèi)用最省,該工廠應(yīng)聘一級(jí)、二級(jí)檢驗(yàn)員各幾名?解 設(shè)需要一級(jí)和二級(jí)檢驗(yàn)員的人數(shù)分別為x1、x2人,編寫M文件xxgh4。m如下:c = 40;36;A=5 3;b=-45;Aeq=;beq=;vlb = zeros(2,1);vub=9;15; %調(diào)用linprog函數(shù):x,fval = linprog(c,A,b,Aeq,beq,vlb,vub)結(jié)果為:x = 9.0000 0.0000fval =360即只需聘用9個(gè)一級(jí)檢驗(yàn)員。4控制參數(shù)options的設(shè)置Options中常用的幾個(gè)參數(shù)的名稱、含義、取值如下:(1) Display: 顯示水平.取值為off時(shí),不顯示輸出

6、; 取值為iter'時(shí),顯示每次迭代的信息;取值為'final時(shí),顯示最終結(jié)果。默認(rèn)值為final'。(2) MaxFunEvals: 允許進(jìn)行函數(shù)評(píng)價(jià)的最大次數(shù),取值為正整數(shù)。(3) MaxIter: 允許進(jìn)行迭代的最大次數(shù),取值為正整數(shù)控制參數(shù)options可以通過函數(shù)optimset創(chuàng)建或修改。命令的格式如下:(1) options=optimset(optimfun) 創(chuàng)建一個(gè)含有所有參數(shù)名,并與優(yōu)化函數(shù)optimfun相關(guān)的默認(rèn)值的選項(xiàng)結(jié)構(gòu)options.(2)options=optimset(param1,value1,param2,value2,.。) 創(chuàng)

7、建一個(gè)名稱為options的優(yōu)化選項(xiàng)參數(shù),其中指定的參數(shù)具有指定值,所有未指定的參數(shù)取默認(rèn)值。(3)options=optimset(oldops,param1,value1,param2, value2,.。) 創(chuàng)建名稱為oldops的參數(shù)的拷貝,用指定的參數(shù)值修改oldops中相應(yīng)的參數(shù).例:opts=optimset(Display',iter,'TolFun,1e8) 該語句創(chuàng)建一個(gè)稱為opts的優(yōu)化選項(xiàng)結(jié)構(gòu),其中顯示參數(shù)設(shè)為iter, TolFun參數(shù)設(shè)為1e8。用Matlab解無約束優(yōu)化問題 一元函數(shù)無約束優(yōu)化問題 常用格式如下:(1)x= fminbnd (fun

8、,x1,x2)(2)x= fminbnd (fun,x1,x2 ,options)(3)x,fval= fminbnd(.。)(4)x,fval,exitflag= fminbnd(。)(5)x,fval,exitflag,output= fminbnd(。.。)其中(3)、(4)、(5)的等式右邊可選用(1)或(2)的等式右邊. 函數(shù)fminbnd的算法基于黃金分割法和二次插值法,它要求目標(biāo)函數(shù)必須是連續(xù)函數(shù),并可能只給出局部最優(yōu)解。例1 求 在0x8中的最小值與最大值主程序?yàn)閣liti1.m: f=2*exp(-x).*sin(x)' fplot(f,0,8); %作圖語句 xmi

9、n,ymin=fminbnd (f, 0,8) f1='2*exp(x)。sin(x); xmax,ymax=fminbnd (f1, 0,8)運(yùn)行結(jié)果: xmin = 3。9270 ymin = -0.0279 xmax = 0.7854 ymax = 0.6448例2 對(duì)邊長為3米的正方形鐵板,在四個(gè)角剪去相等的正方形以制成方形無蓋水槽,問如何剪法使水槽的容積最大? 先編寫M文件fun0。m如下: function f=fun0(x) f=(32*x).2x;主程序?yàn)閣liti2。m: x,fval=fminbnd(fun0,0,1.5); xmax=x fmax=fval運(yùn)算結(jié)果

10、為: xmax = 0.5000,fmax =2.0000。即剪掉的正方形的邊長為0.5米時(shí)水槽的容積最大,最大容積為2立方米。2、多元函數(shù)無約束優(yōu)化問題標(biāo)準(zhǔn)型為:min F(X)命令格式為:(1)x= fminunc(fun,X0 );或x=fminsearch(fun,X0 )(2)x= fminunc(fun,X0 ,options); 或x=fminsearch(fun,X0 ,options)(3)x,fval= fminunc(.。.); 或x,fval= fminsearch(。)(4)x,fval,exitflag= fminunc(.。); 或x,fval,exitflag=

11、 fminsearch(5)x,fval,exitflag,output= fminunc(。.); 或x,fval,exitflag,output= fminsearch(.。)說明: fminsearch是用單純形法尋優(yōu). fminunc的算法見以下幾點(diǎn)說明:1 fminunc為無約束優(yōu)化提供了大型優(yōu)化和中型優(yōu)化算法。由options中的參數(shù)LargeScale控制:LargeScale=on'(默認(rèn)值),使用大型算法LargeScale=off(默認(rèn)值),使用中型算法2 fminunc為中型優(yōu)化算法的搜索方向提供了4種算法,由 options中的參數(shù)HessUpdate控制:He

12、ssUpdate='bfgs(默認(rèn)值),擬牛頓法的BFGS公式;HessUpdate=dfp,擬牛頓法的DFP公式;HessUpdate=steepdesc',最速下降法3 fminunc為中型優(yōu)化算法的步長一維搜索提供了兩種算法, 由options中參數(shù)LineSearchType控制:LineSearchType=quadcubic(缺省值),混合的二次和三 次多項(xiàng)式插值;LineSearchType=cubicpoly',三次多項(xiàng)式插 使用fminunc和 fminsearch可能會(huì)得到局部最優(yōu)解。例3 min f(x)=(4x12+2x22+4x1x2+2x2+

13、1)exp(x1)1、編寫M-文件 fun1。m: function f = fun1 (x) f = exp(x(1))*(4x(1)2+2*x(2)2+4*x(1)x(2)+2*x(2)+1); 2、輸入M文件wliti3。m如下: x0 = -1, 1; x=fminunc(fun1,x0); y=fun1(x)3、運(yùn)行結(jié)果: x= 0.5000 -1.0000 y = 1.3029e10例4 Rosenbrock 函數(shù) f(x1,x2)=100(x2-x12)2+(1x1)2 的最優(yōu)解(極小)為x=(1,1),極小值為f*=0。試用 不同算法(搜索方向和步長搜索)求數(shù)值最優(yōu)解。 初值選

14、為x0=(1.2 , 2).1. 為獲得直觀認(rèn)識(shí),先畫出Rosenbrock 函數(shù)的三維圖形, 輸入以下命令: x,y=meshgrid(-2:0.1:2,1:0.1:3); z=100(y-x.2)。2+(1-x)。2; mesh(x,y,z)2。 畫出Rosenbrock 函數(shù)的等高線圖,輸入命令: contour(x,y,z,20) hold on plot(1.2,2, o ); text(1。2,2,start point') plot(1,1,'o) text(1,1,solution)3.用fminsearch函數(shù)求解輸入命令: f=100(x(2)-x(1)2)

15、2+(1x(1))2; x,fval,exitflag,output=fminsearch(f, 1。2 2)運(yùn)行結(jié)果: x =1.0000 1.0000fval =1。9151e010exitflag = 1output = iterations: 108 funcCount: 202 algorithm: NelderMead simplex direct search'4. 用fminunc 函數(shù)(1)建立M-文件fun2.m function f=fun2(x) f=100*(x(2)x(1)2)2+(1-x(1))2(2)主程序wliti44。mRosenbrock函數(shù)不同算

16、法的計(jì)算結(jié)果可以看出,最速下降法的結(jié)果最差。因?yàn)樽钏傧陆捣ㄌ貏e不適合于從一狹長通道到達(dá)最優(yōu)解的情況。例5 產(chǎn)銷量的最佳安排 某廠生產(chǎn)一種產(chǎn)品有甲、乙兩個(gè)牌號(hào),討論在產(chǎn)銷平衡的情況下如何確定各自的產(chǎn)量,使總利潤最大。 所謂產(chǎn)銷平衡指工廠的產(chǎn)量等于市場(chǎng)上的銷量。 符號(hào)說明z(x1,x2)表示總利潤;p1,q1,x1分別表示甲的價(jià)格、成本、銷量; p2,q2,x2分別表示乙的價(jià)格、成本、銷量; aij,bi,i,ci(i,j =1,2)是待定系數(shù)。基本假設(shè)1價(jià)格與銷量成線性關(guān)系利潤既取決于銷量和價(jià)格,也依賴于產(chǎn)量和成本。按照市場(chǎng)規(guī)律,甲的價(jià)格p1會(huì)隨其銷量x1的增長而降低,同時(shí)乙的銷量x2的增長也會(huì)

17、使甲的價(jià)格有稍微的下降,可以簡單地假設(shè)價(jià)格與銷量成線性關(guān)系,即: p1 = b1 - a11 x1 a12 x2 ,b1,a11,a12 0,且a11 a12;同理, p2 = b2 a21 x1- a22 x2 ,b2,a21,a22 > 02成本與產(chǎn)量成負(fù)指數(shù)關(guān)系甲的成本隨其產(chǎn)量的增長而降低,且有一個(gè)漸進(jìn)值,可以假設(shè)為負(fù)指數(shù)關(guān)系, 總利潤為: z(x1,x2)=(p1-q1)x1+(p2q2)x2若根據(jù)大量的統(tǒng)計(jì)數(shù)據(jù),求出系數(shù)b1=100,a11=1,a12=0.1,b2=280,a21=0.2,a22=2,r1=30,1=0.015,c1=20, r2=100,2=0.02,c2=30,則問題轉(zhuǎn)化為無約束優(yōu)化問題:求甲,乙兩個(gè)牌號(hào)的產(chǎn)量x1,x2,使總利潤z最大.為簡化模型,先忽略成本,并令a12=0,a21=0,問題轉(zhuǎn)化為求: z1 = ( b1 - a11x1 ) x1 + ( b2 a22x2 ) x2 的極值。 顯然其解為x1 = b1/2a11 = 50, x2 = b2/2a22 = 70,我們把它作為原問題的初始值。模型求解1。建立M文件fun。m:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論