線性規(guī)劃問題Matlab求解_第1頁
線性規(guī)劃問題Matlab求解_第2頁
線性規(guī)劃問題Matlab求解_第3頁
線性規(guī)劃問題Matlab求解_第4頁
線性規(guī)劃問題Matlab求解_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、用MATLAB優(yōu)化工具箱解線性規(guī)劃 命令:x=linprog(c,A,b) 命令:x=linprog(c,A,b,Aeq,beq)注意:若沒有不等式: 存在,則令A= ,b= . 若沒有等式約束, 則令Aeq= , beq= .命令:1 x=linprog(c,A,b,Aeq,beq, VLB,VUB) 2 x=linprog(c,A,b,Aeq,beq, VLB,VUB, X0) 注意:1 若沒有等式約束, 則令Aeq= , beq= . 2其中X0表示初始點 4、命令:x,fval=linprog()返回最優(yōu)解x及x處的目標函數值fval.例1 解 編寫M文件小xxgh1.m如下:c=-0

2、.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,0,20; vub=; x,fva

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

4、 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小時的產量不低于1800件。為了進行質量控制,計劃聘請兩種不同水平的檢驗員。一級檢驗員的標準為:速度25件/小時,正確率98%,計時工資4元/小時;二級檢驗員的標準為:速度15小時/件,正確率95%,計時工資3元/小時。檢驗員每錯檢一次,工廠要損失2元。為使總檢驗費用最省,該

5、工廠應聘一級、二級檢驗員各幾名?解 設需要一級和二級檢驗員的人數分別為x1、x2人,編寫M文件xxgh4.m如下:c = 40;36;A=-5 -3;b=-45;Aeq=;beq=;vlb = zeros(2,1);vub=9;15; %調用linprog函數:x,fval = linprog(c,A,b,Aeq,beq,vlb,vub)結果為:x = 9.0000 0.0000fval =360即只需聘用9個一級檢驗員。4控制參數options的設置Options中常用的幾個參數的名稱、含義、取值如下:(1) Display: 顯示水平.取值為off時,不顯示輸出; 取值為iter時,顯示每

6、次迭代的信息;取值為final時,顯示最終結果.默認值為final.(2) MaxFunEvals: 允許進行函數評價的最大次數,取值為正整數.(3) MaxIter: 允許進行迭代的最大次數,取值為正整數控制參數options可以通過函數optimset創(chuàng)建或修改。命令的格式如下:(1) options=optimset(optimfun) 創(chuàng)建一個含有所有參數名,并與優(yōu)化函數optimfun相關的默認值的選項結構options.(2)options=optimset(param1,value1,param2,value2,.) 創(chuàng)建一個名稱為options的優(yōu)化選項參數,其中指定的參數具有

7、指定值,所有未指定的參數取默認值.(3)options=optimset(oldops,param1,value1,param2, value2,.) 創(chuàng)建名稱為oldops的參數的拷貝,用指定的參數值修改oldops中相應的參數.例:opts=optimset(Display,iter,TolFun,1e-8) 該語句創(chuàng)建一個稱為opts的優(yōu)化選項結構,其中顯示參數設為iter, TolFun參數設為1e-8.用Matlab解無約束優(yōu)化問題 一元函數無約束優(yōu)化問題 常用格式如下:(1)x= fminbnd (fun,x1,x2)(2)x= fminbnd (fun,x1,x2 ,option

8、s)(3)x,fval= fminbnd(.)(4)x,fval,exitflag= fminbnd(.)(5)x,fval,exitflag,output= fminbnd(.)其中(3)、(4)、(5)的等式右邊可選用(1)或(2)的等式右邊。 函數fminbnd的算法基于黃金分割法和二次插值法,它要求目標函數必須是連續(xù)函數,并可能只給出局部最優(yōu)解。例1 求 在0<x<8中的最小值與最大值主程序為wliti1.m: f='2*exp(-x).*sin(x)' fplot(f,0,8); %作圖語句 xmin,ymin=fminbnd (f, 0,8) f1=&#

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

10、= 0.5000,fmax =2.0000.即剪掉的正方形的邊長為0.5米時水槽的容積最大,最大容積為2立方米.2、多元函數無約束優(yōu)化問題標準型為: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= fminsearch

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

12、,擬牛頓法的BFGS公式;HessUpdate=dfp,擬牛頓法的DFP公式;HessUpdate=steepdesc,最速下降法3 fminunc為中型優(yōu)化算法的步長一維搜索提供了兩種算法, 由options中參數LineSearchType控制:LineSearchType=quadcubic(缺省值),混合的二次和三 次多項式插值;LineSearchType=cubicpoly,三次多項式插 使用fminunc和 fminsearch可能會得到局部最優(yōu)解.例3 min f(x)=(4x12+2x22+4x1x2+2x2+1)*exp(x1)1、編寫M-文件 fun1.m: functi

13、on 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如下: x0 = -1, 1; x=fminunc(fun1,x0); y=fun1(x)3、運行結果: x= 0.5000 -1.0000 y = 1.3029e-10例4 Rosenbrock 函數 f(x1,x2)=100(x2-x12)2+(1-x1)2 的最優(yōu)解(極?。閤*=(1,1),極小值為f*=0.試用 不同算法(搜索方向和步長搜索)求數值最優(yōu)解. 初值選為x0=(-1.2 , 2).1. 為獲得直觀認識,先畫

14、出Rosenbrock 函數的三維圖形, 輸入以下命令: 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 函數的等高線圖,輸入命令: 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函數求解輸入命令: f='100

15、*(x(2)-x(1)2)2+(1-x(1)2' x,fval,exitflag,output=fminsearch(f, -1.2 2)運行結果: x =1.0000 1.0000fval =1.9151e-010exitflag = 1output = iterations: 108 funcCount: 202 algorithm: 'Nelder-Mead simplex direct search'4. 用fminunc 函數(1)建立M-文件fun2.m function f=fun2(x) f=100*(x(2)-x(1)2)2+(1-x(1)2(2)主程

16、序wliti44.mRosenbrock函數不同算法的計算結果可以看出,最速下降法的結果最差.因為最速下降法特別不適合于從一狹長通道到達最優(yōu)解的情況.例5 產銷量的最佳安排 某廠生產一種產品有甲、乙兩個牌號,討論在產銷平衡的情況下如何確定各自的產量,使總利潤最大. 所謂產銷平衡指工廠的產量等于市場上的銷量. 符號說明z(x1,x2)表示總利潤;p1,q1,x1分別表示甲的價格、成本、銷量; p2,q2,x2分別表示乙的價格、成本、銷量; aij,bi,i,ci(i,j =1,2)是待定系數.基本假設1價格與銷量成線性關系利潤既取決于銷量和價格,也依賴于產量和成本。按照市場規(guī)律,甲的價格p1會隨

17、其銷量x1的增長而降低,同時乙的銷量x2的增長也會使甲的價格有稍微的下降,可以簡單地假設價格與銷量成線性關系,即: p1 = b1 - a11 x1 - a12 x2 ,b1,a11,a12 > 0,且a11 > a12;同理, p2 = b2 - a21 x1- a22 x2 ,b2,a21,a22 > 02成本與產量成負指數關系甲的成本隨其產量的增長而降低,且有一個漸進值,可以假設為負指數關系, 總利潤為: z(x1,x2)=(p1-q1)x1+(p2-q2)x2若根據大量的統(tǒng)計數據,求出系數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,則問題轉化為無約束優(yōu)化問題:求甲,乙兩個牌號的產量x1,x2,使總利潤z最大.為簡化模型,先忽略成本,并令a12=0,a21=0,問題轉化為求: z1 = ( b1 - a11x1 ) x1 + ( b2 - a22x2 ) x2 的極值. 顯然其解為x1 = b1/2a11 = 50, x2 = b2/2a22 = 70,我們把它作為原問題的初始值.模型求解1.建立M-文件fun.m: function

溫馨提示

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

評論

0/150

提交評論