吳衛(wèi)國 孫 霞
(1、總后勤部軍事交通運(yùn)輸研究所,天津 河?xùn)| 300161 2、長安大學(xué),陜西 西安 710064)
MATLAB是美國MathWorks公司推出的大型數(shù)學(xué)軟件,具有強(qiáng)大的數(shù)學(xué)運(yùn)算功能,同時(shí)涉及面也非常廣,能夠?yàn)楦鲗W(xué)科多種工作平臺(tái)提供支持。MATLAB工具箱更為各學(xué)科專業(yè)提供了方便的工具,它能解決控制系統(tǒng)、信號處理、財(cái)政金融、優(yōu)化設(shè)計(jì)等各種問題,大大豐富和拓寬了MATLAB的功能,使得計(jì)算更為便捷高效。優(yōu)化設(shè)計(jì)是專門研究如何從多個(gè)方案中獲得最科學(xué)合理的學(xué)科。它研究決策問題的最佳選擇特性,構(gòu)造尋求最優(yōu)解的計(jì)算方法,廣泛應(yīng)用于各個(gè)行業(yè)的生產(chǎn)和管理決策,以及機(jī)械設(shè)計(jì)等領(lǐng)域,取得了良好的經(jīng)濟(jì)效益和社會(huì)效益,發(fā)揮著極其重要的作用。管理決策過程極其復(fù)雜,受到各種條件,各種因素的制約,同時(shí)決策目標(biāo)又具有多樣性,因此決策起來比較困難,決策的好壞直接影響到企業(yè)和單位的效益。如何尋求最優(yōu)化的解決辦法,成為我們關(guān)注的問題。本文將運(yùn)用MATLAB工具,以管理中的運(yùn)輸計(jì)劃決策為例,對其進(jìn)行優(yōu)化設(shè)計(jì),得出最優(yōu)解,指導(dǎo)管理決策。
對實(shí)際的問題進(jìn)行優(yōu)化設(shè)計(jì),首先,必須對實(shí)際問題具體分析,將其簡化成數(shù)學(xué)問題,建立其數(shù)學(xué)模型;然后針對該數(shù)學(xué)模型,選取合適的方法,編制優(yōu)化程序,進(jìn)行優(yōu)化求解。以MATLAB為工具的優(yōu)化設(shè)計(jì)應(yīng)根據(jù)得出的數(shù)學(xué)模型,確定系統(tǒng)變量,建立目標(biāo)函數(shù),列出約束條件,選取合適的優(yōu)化工具箱函數(shù),進(jìn)行數(shù)值運(yùn)算,并對得出的結(jié)果進(jìn)行分析。
下面以管理中的運(yùn)輸計(jì)劃決策為例,運(yùn)用MATLAB工具進(jìn)行優(yōu)化設(shè)計(jì)。
某軍用運(yùn)輸機(jī)參加搶救物資任務(wù),由于受惡劣天氣的影響,該運(yùn)輸機(jī)只能往返1次,運(yùn)輸機(jī)裝載量有限,只能裝載部分物資,搶救物資中有A和B兩種,價(jià)值不等,物資A有18噸,每噸體積為15m3,價(jià)值為每噸1000元,物資B總重為10噸,每噸體積為30m3,價(jià)值為每噸1500元,該運(yùn)輸機(jī)分為前后兩艙,前艙容積為120m3,最大裝載量為8噸,后艙容積為300m3,最大裝載量為14噸,為確保運(yùn)輸安全,后艙貨物的重量要求為前艙貨物的重量的1.5倍。如何安排運(yùn)輸計(jì)劃才能獲得最大的效益,使損失降到最小。
問題分析:
首先,將運(yùn)輸計(jì)劃問題簡化,如表1所示。
該運(yùn)輸問題涉及到A和B兩種物資,混合裝載在運(yùn)輸機(jī)前后兩艙,為使效益最大,損失最小,A和B存在裝載比例關(guān)系,同時(shí)每一個(gè)艙都存在著A與B分配的比例問題,每個(gè)艙對重量、容積都有要求,飛行安全也有要求。
首先,確定系統(tǒng)變量,設(shè)x,y分別為該運(yùn)輸機(jī)裝載物資A、B的重量,下標(biāo)表示運(yùn)輸機(jī)的前、后兩艙,系統(tǒng)變量為:x1,x2,y1,y2,該模型的目標(biāo)函數(shù)為:1000*(x1+x2)+1500*(y1+y2)
按要求,運(yùn)輸機(jī)對裝載量和容積都有要求,存在下列約束關(guān)系:
x1+y1≤8 x2+y2≤14
15x1+30y1≤120
15x2+30y2≤300
另外,裝載物資的總重量不能超過物資的總重量,物資量應(yīng)為正數(shù)
x1≥0,x2≥0,x1+x2≤18 y1≥0,y1≥0,y1+y2≤10
飛行安全要求:1.5*(x1+y1)=x2+y2
從而將該問題轉(zhuǎn)化為數(shù)學(xué)模型,求目標(biāo)函數(shù)的最大值。
在MATLAB中可轉(zhuǎn)化為求最小值:
Min-1000*(x1+x)2-1500*(y1+y)2
約束條件為:
x1+x2≤18
y1+y2≤10
x1+y1≤8
x2+y2≤14
15x1+30y1≤120
15x2+30y2≤300
1.5 *(x1+y1)=x2+y2
x1≥0,x2≥0,y1≥0,y2≥0
利用MATLAB進(jìn)行優(yōu)化求解:
輸入目標(biāo)函數(shù)的系數(shù)、約束矩陣、右端項(xiàng)和下界:
》f=[-1000;-1000;-1500;-1500];
》A=[1 1 0 0;0 0 1 1;1 0 1 0;0 1 0 1;15 0 30 0;0 15 0 30];
》Aeq=[1.5-1 1.5-1];
》b=[18;10;8;14;120;300;]
》beq=[0];
》lb=zeros(4,1)
調(diào)用MATLAB優(yōu)化工具箱linprog函數(shù),進(jìn)行優(yōu)化設(shè)計(jì),輸入命令:
[x,fval,exitflag,output]=linprog(f,A,b,Aeq,beq,lb)
運(yùn)行結(jié)果為:x=8 4 0 8
fval=-2.4000e+004
exitflag=1
output=literations:6...
message:Optimization teminated
由上面的結(jié)果得到該運(yùn)輸機(jī)前艙裝8噸A,不裝物資B,后艙裝4噸A,8噸B,運(yùn)輸總價(jià)值為24000元,損失降到了最小。
運(yùn)用MATLAB工具,采用優(yōu)化設(shè)計(jì)的方法,很好的解決管理決策問題,給管理決策者帶來了很大便利,不需要編寫大量程序,使用方便,在管理決策中具有重要的應(yīng)用價(jià)值。
[1]精銳創(chuàng)作組.MATLAB6.0科學(xué)運(yùn)算完整解決方案[M].人民郵電出版社,2001.
[2]孫亮.MATLAB.北京工業(yè)大學(xué)出版社[M].
[3]王振軍.交通運(yùn)輸系統(tǒng)工程[M].東南大學(xué)出版社,2008,10.