matlab中如何求解線性規(guī)劃問(wèn)題_第1頁(yè)
matlab中如何求解線性規(guī)劃問(wèn)題_第2頁(yè)
matlab中如何求解線性規(guī)劃問(wèn)題_第3頁(yè)
matlab中如何求解線性規(guī)劃問(wèn)題_第4頁(yè)
matlab中如何求解線性規(guī)劃問(wèn)題_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、matlab 中如何求解線性規(guī)劃問(wèn)題 懸賞分:0 - 解決時(shí)間:2008-9-9 12:52 提問(wèn)者: zyb5302882 - 二級(jí)最佳答案bintprog 求解0-1規(guī)劃問(wèn)題 格式如下x = bintprog(f)x = bintprog(f, A, b)x = bintprog(f, A, b, Aeq, beq)x = bintprog(f, A, b, Aeq, beq, x0)x = bintprog(f, A, b, Aeq, Beq, x0, options)x, fval = bintprog(.)x,fval, e

2、xitflag = bintprog(.)x, fval, exitflag, output = bintprog(.)這里x是問(wèn)題的解向量f是由目標(biāo)函數(shù)的系數(shù)構(gòu)成的向量A是一個(gè)矩陣,b是一個(gè)向量A,b和變量x=x1,x2,xn一起,表示了線性規(guī)劃中不等式約束條件A,b是系數(shù)矩陣和右端向量。Aeq和Beq表示了線性規(guī)劃中等式約束條件中的系數(shù)矩陣和右端向量。X0是給定的變量的初始值options為控制規(guī)劃過(guò)程的參數(shù)系列。返回值中fval是優(yōu)化結(jié)束后得到的目標(biāo)函數(shù)值。exitflag=0表示優(yōu)化結(jié)果已經(jīng)超過(guò)了函數(shù)的估計(jì)值或者已聲明的最大迭代次數(shù);exitflag>0表示優(yōu)化過(guò)程中變量收斂于解

3、X,exitflag<0表示計(jì)算不收斂。output有3個(gè)分量,iterations表示優(yōu)化過(guò)程的迭代次數(shù),cgiterations表示PCG迭代次數(shù),algorithm表示優(yōu)化所采用的運(yùn)算規(guī)則。在使用linprog()命令時(shí),系統(tǒng)默認(rèn)它的參數(shù)至少為1個(gè),但如果我們需要給定第6個(gè)參數(shù),則第2、3、4、5個(gè)參數(shù)也必須給出,否則系統(tǒng)無(wú)法認(rèn)定給出的是第6個(gè)參數(shù)。遇到無(wú)法給出時(shí),則用空矩陣“”替代。例如max=193*x1+191*x2+187*x3+186*x4+180*x5+185*x6; %f由這里給出st.x5+x6>=1;x3+x5>=1;x1+x2<=1;x2+x6

4、<=1;x4+x6<=1; %a、b由不等關(guān)系給出,如沒(méi)有不等關(guān)系,a、b取x1+x2+x3+x4+x5+x6=1; %aep、bep由等式約束給出代碼如下f=-193;-191;-187;-186;-180;-185;a=0 0 0 0 -1 -1;0 -1 0 0 -1 0;1 1 0 0 0 0;0 1 0 0 0 1;0 0 0 1 0 1;b=-1,-1,1,1,1'aeq=1 1 1 1 1 1;beq=3;x=bintprog(f,a,b,aeq,beq)注意目標(biāo)值為最大值時(shí)應(yīng)乘以-1化為求最小值;不等約束為>=時(shí)應(yīng)乘以-1化為<=;linprog

5、 非0-1規(guī)劃 格式如下x = linprog(f,A,b)x = linprog(f,A,b,Aeq,beq)x = linprog(f,A,b,Aeq,beq,lb,ub)x = linprog(f,A,b,Aeq,beq,lb,ub,x0)x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options) x,fval = linprog(.) x,lambda,exitflag = linprog(.) x,lambda,exitflag,output = linprog(.) x,fval,exitflag,output,lambda = linprog(.) 參

6、數(shù)說(shuō)明和使用格式同bintprogLB和UB是約束變量的下界和上界向量lambda有4個(gè)分量,ineqlin是線性不等式約束條件,eqlin是線性等式約束條件,upper是變量的上界約束條件,lower是變量的下界約束條件。它們的返回值分別表示相應(yīng)的約束條件在優(yōu)化過(guò)程中是否有效。滬深300 年化收益率34.49%,投資比例不超過(guò)30%;封閉式基金年化收益率113.15%,投資比例不超過(guò)10%;中債企業(yè)債年化收益率5.41%,可轉(zhuǎn)債年化收益率32.59%,投資比例不超過(guò)10%;短融年化收益率3.58%,中期票據(jù)年化收益率7.12%,其中D+F+G投資比例不超過(guò)50%。Matlab線性規(guī)劃求解優(yōu)化

7、問(wèn)題 (2010-07-12 11:16:44)轉(zhuǎn)載標(biāo)簽: 雜談分類(lèi): Matlab用MATLAB優(yōu)化工具箱解線性規(guī)劃命令:x=linprog(c,A,b) 命令:x=linprog(c,A,b,Aeq,beq)注意:若沒(méi)有不等式: 存在,則令A(yù)= ,b= . 若沒(méi)有等式約束, 則令A(yù)eq= , beq= .命令:1 x=linprog(c,A,b,Aeq,beq, VLB,VUB)           2 x=linprog(c,A,b,Aeq

8、,beq, VLB,VUB, X0)注意:1 若沒(méi)有等式約束, 則令A(yù)eq= , beq= . 2其中X0表示初始點(diǎn)4、命令:x,fval=linprog()返回最優(yōu)解x及x處的目標(biāo)函數(shù)值fval.例1                  解 編寫(xiě)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.

9、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 解:  編寫(xiě)M文件xxgh2.m如下:   c=6 3 4;   A=0 1 0;   

10、;b=50;   Aeq=1 1 1;   beq=120;   vlb=30,0,20;   vub=;               x,fval=linprog(c,A,b,Aeq,beq,vlb,vub例3   (任務(wù)分配問(wèn)題)某車(chē)間有甲、乙兩臺(tái)機(jī)床,可用于加工三種工件。假定這兩臺(tái)車(chē)床的可用臺(tái)時(shí)數(shù)分別為800和9

11、00,三種工件的數(shù)量分別為400、600和500,且已知用三種不同車(chē)床加工單位數(shù)量不同工件所需的臺(tái)時(shí)數(shù)和加工費(fèi)用如下表。問(wèn)怎樣分配車(chē)床的加工任務(wù),才能既滿(mǎn)足加工工件的要求,又使加工費(fèi)用最低解    設(shè)在甲車(chē)床上加工工件1、2、3的數(shù)量分別為x1、x2、x3,在乙車(chē)床上加工工件1、2、3的數(shù)量分別為x4、x5、x6??山⒁韵戮€性規(guī)劃模型:編寫(xiě)M文件xxgh3.m如下:f = 13 9 10 11 12 8;A =  0.4 1.1 1 0 0 0     0 0 0 0.5 1.2 1.3;b = 800

12、; 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ò)檢一次,工廠要損失

13、2元。為使總檢驗(yàn)費(fèi)用最省,該工廠應(yīng)聘一級(jí)、二級(jí)檢驗(yàn)員各幾名?解    設(shè)需要一級(jí)和二級(jí)檢驗(yàn)員的人數(shù)分別為x1、x2人,編寫(xiě)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)

14、員。4控制參數(shù)options的設(shè)置Options中常用的幾個(gè)參數(shù)的名稱(chēng)、含義、取值如下:(1) Display: 顯示水平.取值為off時(shí),不顯示輸出; 取值為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可以通過(guò)函數(shù)optimset創(chuàng)建或修改。命令的格式如下:(1) options=optimset(optimfun)  創(chuàng)建一個(gè)含有所有參數(shù)名,并與優(yōu)化函數(shù)opt

15、imfun相關(guān)的默認(rèn)值的選項(xiàng)結(jié)構(gòu)options.(2)options=optimset(param1,value1,param2,value2,.)  創(chuàng)建一個(gè)名稱(chēng)為options的優(yōu)化選項(xiàng)參數(shù),其中指定的參數(shù)具有指定值,所有未指定的參數(shù)取默認(rèn)值.(3)options=optimset(oldops,param1,value1,param2,           value2,.)  創(chuàng)建名稱(chēng)為oldops的參數(shù)的拷貝,用指定的參數(shù)值修改oldo

16、ps中相應(yīng)的參數(shù).例:opts=optimset(Display,iter,TolFun,1e-8) 該語(yǔ)句創(chuàng)建一個(gè)稱(chēng)為opts的優(yōu)化選項(xiàng)結(jié)構(gòu),其中顯示參數(shù)設(shè)為iter, TolFun參數(shù)設(shè)為1e-8.用Matlab解無(wú)約束優(yōu)化問(wèn)題一元函數(shù)無(wú)約束優(yōu)化問(wèn)題常用格式如下:(1)x= fminbnd (fun,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)的

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

18、; %作圖語(yǔ)句       xmin,ymin=fminbnd (f, 0,8)       f1='-2*exp(-x).*sin(x)'       xmax,ymax=fminbnd (f1, 0,8)運(yùn)行結(jié)果:         xmin = 3.9270  

19、;      ymin = -0.0279         xmax =  0.7854       ymax =  0.6448例2  對(duì)邊長(zhǎng)為3米的正方形鐵板,在四個(gè)角剪去相等的正方形以制成方形無(wú)蓋水槽,問(wèn)如何剪法使水槽的容積最大?先編寫(xiě)M文件fun0.m如下: function f=fun0(x) f=-(3-2*x).2*x;主程

20、序?yàn)閣liti2.m: x,fval=fminbnd('fun0',0,1.5); xmax=x fmax=-fval運(yùn)算結(jié)果為: xmax = 0.5000,fmax =2.0000.即剪掉的正方形的邊長(zhǎng)為0.5米時(shí)水槽的容積最大,最大容積為2立方米.2、多元函數(shù)無(wú)約束優(yōu)化問(wèn)題標(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,

21、X0 ,options)(3)x,fval= fminunc(.);    或x,fval= fminsearch(.)(4)x,fval,exitflag= fminunc(.);    或x,fval,exitflag= fminsearch(5)x,fval,exitflag,output= fminunc(.);    或x,fval,exitflag,output= fminsearch(.)說(shuō)明:&#8226; fminsearch是用單純形法尋優(yōu). fm

22、inunc的算法見(jiàn)以下幾點(diǎn)說(shuō)明:1 fminunc為無(wú)約束優(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控制:HessUpdate=bfgs(默認(rèn)值),擬牛頓法的BFGS公式;HessUpdate=dfp,擬牛頓法的DFP公式;HessUpdate=steepdesc,最速下降法3 fminunc為中型優(yōu)化算法的步長(zhǎng)一維

23、搜索提供了兩種算法,   由options中參數(shù)LineSearchType控制:LineSearchType=quadcubic(缺省值),混合的二次和三                                  

24、60;次多項(xiàng)式插值;LineSearchType=cubicpoly,三次多項(xiàng)式插&#8226; 使用fminunc和 fminsearch可能會(huì)得到局部最優(yōu)解.例3 min f(x)=(4x12+2x22+4x1x2+2x2+1)*exp(x1)1、編寫(xiě)M-文件 fun1.m:   function f = fun1 (x)   f = exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1);2、輸入M文件wliti3.m如下:     

25、; x0 = -1, 1;      x=fminunc(fun1,x0);      y=fun1(x)3、運(yùn)行結(jié)果:      x=   0.5000     -1.0000      y =   1.3029e-10例4   Rosenbroc

26、k 函數(shù) f(x1,x2)=100(x2-x12)2+(1-x1)2     的最優(yōu)解(極?。閤*=(1,1),極小值為f*=0.試用     不同算法(搜索方向和步長(zhǎng)搜索)求數(shù)值最優(yōu)解.         初值選為x0=(-1.2 , 2).1. 為獲得直觀認(rèn)識(shí),先畫(huà)出Rosenbrock  函數(shù)的三維圖形, 輸入以下命令:    x,y=mes

27、hgrid(-2:0.1:2,-1:0.1:3);    z=100*(y-x.2).2+(1-x).2;    mesh(x,y,z)2. 畫(huà)出Rosenbrock  函數(shù)的等高線圖,輸入命令:    contour(x,y,z,20)    hold on    plot(-1.2,2,' o ');    text(-1.2,

28、2,'start point')    plot(1,1,'o')    text(1,1,'solution')3.用fminsearch函數(shù)求解輸入命令:  f='100*(x(2)-x(1)2)2+(1-x(1)2'  x,fval,exitflag,output=fminsearch(f, -1.2 2)運(yùn)行結(jié)果:      x =1.0000

29、   1.0000fval =1.9151e-010exitflag = 1output =            iterations: 108            funcCount: 202           

30、algorithm: 'Nelder-Mead 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ù)不同算法的計(jì)算結(jié)果可以看出,最速下降法的結(jié)果最差.因?yàn)樽钏傧陆捣ㄌ貏e不適

31、合于從一狹長(zhǎng)通道到達(dá)最優(yōu)解的情況.例5  產(chǎn)銷(xiāo)量的最佳安排   某廠生產(chǎn)一種產(chǎn)品有甲、乙兩個(gè)牌號(hào),討論在產(chǎn)銷(xiāo)平衡的情況下如何確定各自的產(chǎn)量,使總利潤(rùn)最大. 所謂產(chǎn)銷(xiāo)平衡指工廠的產(chǎn)量等于市場(chǎng)上的銷(xiāo)量.  符號(hào)說(shuō)明z(x1,x2)表示總利潤(rùn);p1,q1,x1分別表示甲的價(jià)格、成本、銷(xiāo)量;p2,q2,x2分別表示乙的價(jià)格、成本、銷(xiāo)量;   aij,bi,i,ci(i,j =1,2)是待定系數(shù).基本假設(shè)1價(jià)格與銷(xiāo)量成線性關(guān)系利潤(rùn)既取決于銷(xiāo)量和價(jià)格,也依賴(lài)于產(chǎn)量和成本。按照市場(chǎng)規(guī)律,甲的價(jià)格p1會(huì)隨其銷(xiāo)量x1的增長(zhǎng)

32、而降低,同時(shí)乙的銷(xiāo)量x2的增長(zhǎng)也會(huì)使甲的價(jià)格有稍微的下降,可以簡(jiǎn)單地假設(shè)價(jià)格與銷(xiāo)量成線性關(guān)系,即:   p1 = b1 - a11 x1 - a12 x2 ,b1,a11,a12 &gt; 0,且a11 &gt; a12;同理, p2 = b2 - a21 x1- a22 x2 ,b2,a21,a22 &gt; 02成本與產(chǎn)量成負(fù)指數(shù)關(guān)系甲的成本隨其產(chǎn)量的增長(zhǎng)而降低,且有一個(gè)漸進(jìn)值,可以假設(shè)為負(fù)指數(shù)關(guān)系,      總利潤(rùn)為: z(x1,x2)=(p1-q1)x1+(p2-q2)x2若根據(jù)大量的統(tǒng)計(jì)數(shù)

33、據(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,則問(wèn)題轉(zhuǎn)化為無(wú)約束優(yōu)化問(wèn)題:求甲,乙兩個(gè)牌號(hào)的產(chǎn)量x1,x2,使總利潤(rùn)z最大.為簡(jiǎn)化模型,先忽略成本,并令a12=0,a21=0,問(wèn)題轉(zhuǎn)化為求:       z1 = ( b1 - a11x1 ) x1 + ( b2 - a22x2 ) x2的極值. 顯然其解為x1 = b1/2a11 = 50, x2 = b2/2a22 = 70,我們把它作為原問(wèn)

34、題的初始值.模型求解1.建立M-文件fun.m:       function f = fun(x)     y1=(100-x(1)- 0.1*x(2)-(30*exp(-0.015*x(1)+20)*x(1);     y2=(280-0.2*x(1)- 2*x(2)-(100*exp(-0.02*x(2)+30)*x(2);     f=-y1-y2;2.輸入命令: &#

35、160;   x0=50,70;     x=fminunc(fun,x0),     z=fun(x)3.計(jì)算結(jié)果:     x=23.9025, 62.4977,  z=6.4135e+003 即甲的產(chǎn)量為23.9025,乙的產(chǎn)量為62.4977,最大利潤(rùn)為6413.5. matlab線性規(guī)劃 懸賞分:5 - 提問(wèn)時(shí)間2007-5-3 17:10求解最大

36、值Z=y1×5.2×105+(2.5+x1+x2-y1) ×4.3×105+y2×4.7 × 105+(8.2x1+x3-y2) ×3.9×105+0.25×y1+0.2×(2.5+x1+x2-y1)+0.23×y2+0.185×(8.2-x1+x2-y2)-2×106-x1×2.0×105-x3×8.5×105-x2×10×105 約束條件:3.5-x2-x30 8.2-x1+x30 0y12.5+x1+x2 0y28.2-x1+x3 7.5y1+6.1 ×(2.5+x1+x2-y1)+9.0y2+7.35×(8.2-x1+x3-y2) 96.5 1.4y1+1.65y27.5 0.25y1+0

溫馨提示

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

評(píng)論

0/150

提交評(píng)論