資源描述:
《運(yùn)用matlab進(jìn)行線性規(guī)劃求解(實(shí)例)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、8.2線性規(guī)劃 線性規(guī)劃是處理線性目標(biāo)函數(shù)和線性約束的一種較為成熟的方法,目前已經(jīng)廣泛應(yīng)用于軍事、經(jīng)濟(jì)、工業(yè)、農(nóng)業(yè)、教育、商業(yè)和社會(huì)科學(xué)等許多方面。8.2.1基本數(shù)學(xué)原理線性規(guī)劃問題的標(biāo)準(zhǔn)形式是:或?qū)懗删仃囆问綖椋壕€性規(guī)劃的標(biāo)準(zhǔn)形式要求使目標(biāo)函數(shù)最小化,約束條件取等式,變量非負(fù)。不符合這幾個(gè)條件的線性模型可以轉(zhuǎn)化成標(biāo)準(zhǔn)形式。MATLAB采用投影法求解線性規(guī)劃問題,該方法是單純形法的變種。8.2.2有關(guān)函數(shù)介紹在MATLAB工具箱中,可用linprog函數(shù)求解線性規(guī)劃問題。linprog函數(shù)的調(diào)用格式如下:●x=li
2、nprog(f,A,b):求解問題minf'*x,約束條件為A*x<=b?!駒=linprog(f,A,b,Aeq,beq):求解上面的問題,但增加等式約束,即Aeq*x=beq。若沒有不等式約束,則令A(yù)=[],b=[]?!駒=linprog(f,A,b,Aeq,beq,lb,ub):定義設(shè)計(jì)x的下界lb和上界ub,使得x始終在該范圍內(nèi)。若沒有等式約束,令A(yù)eq=[],beq=[]。●x=linprog(f,A,b,Aeq,beq,lb,ub,x0):設(shè)置初值為x0。該選項(xiàng)只適用于中型問題,默認(rèn)時(shí)大型算法將忽略初值。
3、●x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options):用options指定的優(yōu)化參數(shù)進(jìn)行最小化。●[x,fval]=linprog(…):返回解x處的目標(biāo)函數(shù)值fval?!馵x,lambda,exitflag]=linprog(…):返回exitflag值,描述函數(shù)計(jì)算的退出條件?!馵x,lambda,exitflag,output]=linprog(…):返回包含優(yōu)化信息的輸出參數(shù)output?!馵x,fval,exitflag,output,lambda]=linprog(…):將
4、解x處的拉格朗日乘子返回到lambda參數(shù)中。調(diào)用格式中,lambda參數(shù)為解x處包含拉格朗日乘子的結(jié)構(gòu)。它有以下一些字段:lower—下界lbupper—上界ubineqlin—線性不等式eqlin—線性等式exitflag參數(shù)表示算法終止的原因,下面列出不同值對(duì)應(yīng)的退出原因:1函數(shù)在解x處有解0迭代次數(shù)超過options.MaxIter-2沒有找到可行點(diǎn)-3問題無解-4執(zhí)行算法時(shí)遇到NaN-5原問題和對(duì)偶問題都不可行-7搜索方向太小,不能繼續(xù)前進(jìn)。8.2.3應(yīng)用實(shí)例例8-2 某河流邊有兩個(gè)化工廠,流經(jīng)第一個(gè)化工廠
5、的河水流量是每天500萬立方米,在兩個(gè)工廠之間有一條流量為200萬立方米的支流(如圖8-1所示)。第一個(gè)化工廠每天排放工業(yè)污水2萬立方米,第二個(gè)化工廠每天排放工業(yè)污水1.4萬立方米,從第一個(gè)化工廠排出的污水流到第二個(gè)化工廠之前,有20%可自然凈化。根據(jù)環(huán)保要求,河流中工業(yè)污水的含量應(yīng)不大于0.2%,因此兩個(gè)化工廠都必須各自處理凈化一部分污水,第一個(gè)化工廠處理污水的成本是0.1元∕立方米,第二個(gè)化工廠處理污水的成本是0.08元∕立方米。問在滿足環(huán)保要求的條件下,各化工廠每天應(yīng)處理多少污水,才能使兩廠總的處理污水費(fèi)用最少
6、?第一化工廠 第二化工廠圖8-1 解:設(shè),分別表示第一個(gè)化工廠和第二個(gè)化工廠每天處理的污水量(萬立方米∕天)。 則目標(biāo)函數(shù):(元∕天)約束條件1:,即;約束條件2:,即;約束條件3:。因此,該問題的線性規(guī)劃模型歸結(jié)為: 求解程序:%線性規(guī)劃問題f=[1000800];A=[-10;-0.8-1;10;01];b=[-1;-1.6;2;1.4];lb=zeros(2,1);[x,fval,exitflag]=linprog(f,A,b,[],[],lb)運(yùn)行結(jié)果:x=1.00000.8000
7、fval=1.6400e+003exitflag=1由上可知,第一個(gè)化工廠每天處理的污水量為1萬立方米∕天,第二個(gè)化工廠每天處理的污水量為0.8萬立方米∕天,才能使兩廠總的處理污水費(fèi)用最少。