楊 柳
(陜西國(guó)際商貿(mào)學(xué)院 基礎(chǔ)課部,西安 712046)
Matlab是由美國(guó)mathworks公司發(fā)布的主要面對(duì)科學(xué)計(jì)算、可視化以及數(shù)值計(jì)算的高級(jí)技術(shù)計(jì)算語(yǔ)言,為數(shù)值計(jì)算提供了解決方案。它有高效的數(shù)值計(jì)算,又有圖形處理功能為用戶的提供了便利。Matlab中包含大量的算法,直接調(diào)用,可以快速得到近似解或者圖解。現(xiàn)代化計(jì)算必須與科學(xué)計(jì)算機(jī)相結(jié)合,否則對(duì)學(xué)科的研究就只停留在大型的計(jì)算上。
經(jīng)濟(jì)學(xué)中,數(shù)學(xué)模型和計(jì)算機(jī)的應(yīng)用是對(duì)某些經(jīng)濟(jì)問題分析的基礎(chǔ)[1],只有得到模型的解或模型的圖像,才能更好地分析經(jīng)濟(jì)活動(dòng)體現(xiàn)的問題。模型求解的過程中,數(shù)值解往往比準(zhǔn)確解更容易得到,也能更好地反饋經(jīng)濟(jì)活動(dòng)的變化過程,利用計(jì)算機(jī)求解模型是數(shù)值計(jì)算的有效方法。
在宏觀經(jīng)濟(jì)運(yùn)行過程中,運(yùn)輸問題、配料問題、合理下料問題等線性規(guī)劃問題比較常見,線性規(guī)劃問題是運(yùn)籌學(xué)的重要分支,廣泛應(yīng)用于軍事作戰(zhàn)、經(jīng)濟(jì)分析、經(jīng)營(yíng)管理和工程技術(shù)等方面,為合理地利用有限的人力、物力、財(cái)力等資源做出最優(yōu)的決策,提供科學(xué)的依據(jù)。運(yùn)籌學(xué)中,對(duì)線性規(guī)劃問題的求解方式有三種,包括圖解法、單純形法、計(jì)算機(jī)求解。其中,圖解法是變量只有兩個(gè)的情況下,在直角坐標(biāo)系中畫出可行域,找目標(biāo)函數(shù)的最優(yōu)解;單純形法適用于任意變量,但需要把線性規(guī)劃問題轉(zhuǎn)化為標(biāo)準(zhǔn)的形式;計(jì)算機(jī)求解課采用Matlab軟件、lingo軟件或者Excel表格。利用圖表法求解過程煩瑣,且只能有兩個(gè)變量,多個(gè)變量則不能使用,單純形法的求解速度較慢,需要對(duì)單純形法的步驟很清晰,計(jì)算能力要求較高。而宏觀經(jīng)濟(jì)學(xué)中,模型越趨向于非線性,計(jì)算方法與非線性模型的數(shù)值計(jì)算緊密相連,隨著計(jì)算機(jī)技術(shù)的成熟,非線性模型的求解已經(jīng)不受限制,并且大規(guī)模的運(yùn)算也能夠?qū)崿F(xiàn)。Matlab工具箱提供了非線性模型的求解方法,無論是提高求解速度的方法,或者是提高數(shù)值解精度的方法,在軟件中都有涉及。
宏觀經(jīng)濟(jì)的最優(yōu)化問題是指在決策管理中,通過協(xié)調(diào)有限的資源,達(dá)到最佳的經(jīng)濟(jì)效果,最大限度地滿足人們的需求。最優(yōu)化問題最基本的是線性規(guī)劃問題,線性規(guī)劃是經(jīng)濟(jì)計(jì)劃最優(yōu)化的基本方法之一,是進(jìn)行科學(xué)管理的一種數(shù)學(xué)方法,在經(jīng)濟(jì)管理、交通運(yùn)輸、工農(nóng)業(yè)生產(chǎn)等經(jīng)濟(jì)活動(dòng)中,提高經(jīng)濟(jì)效果是人們的要求。而提高經(jīng)濟(jì)效果一般通過兩種途徑:一是技術(shù)方面的改進(jìn),例如改善生產(chǎn)工藝,使用新設(shè)備和新型原材料;二是生產(chǎn)組織與計(jì)劃的改進(jìn),即合理安排人力物力資源。線性規(guī)劃所研究的是:在一定條件下,合理安排資源,使經(jīng)濟(jì)效果達(dá)到最好。規(guī)劃問題,即求線性目標(biāo)函數(shù)在線性約束條件下的最大值或最小值的問題[2]。
Matlab為規(guī)劃問題(線性規(guī)劃和非線性規(guī)劃)提供了求解的工具箱。求線性規(guī)劃問題的最優(yōu)解有兩種方法,一種方法是使用linprog命令,另一種是使用optimtool工具箱。一般情況下,linprog 命令的調(diào)用格式為[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub,x0)。其中,f表示目標(biāo)函數(shù)中各個(gè)變量前面的系數(shù)向量,如果是求最小值問題,那么f就是各個(gè)變量的系數(shù),如果是求最大值問題,那么f就是各個(gè)變量的系數(shù)的相反數(shù);A和b分別表示不等式約束A*x<=b中的矩陣A和向量b;Aeq和beq表示等式約束Aeq*x=beq中的矩陣Aeq和向量beq。
例如,某工廠要用三種原料1、2、3混合調(diào)配出三種不同規(guī)格的產(chǎn)品甲、乙、丙,已知產(chǎn)品的規(guī)格要求及單價(jià)為:甲產(chǎn)品需要原材料1不少于50%,原材料2不超過25%,每千克售價(jià)50元;乙產(chǎn)品需要原材料1不少于25%,原材料2不超過50%,每千克售價(jià)35元;丙產(chǎn)品對(duì)原材料沒有限制,每千克售價(jià)25元。每天能供應(yīng)的原料數(shù)量及原料單價(jià)為:原材料1每天最多供應(yīng)100千克,每千克65元;原材料2每天最多供應(yīng)100千克,每千克25元;原材料3每天最多供應(yīng)100千克,每千克35元。問:該廠應(yīng)如何安排生產(chǎn),使利潤(rùn)收入為最大?
解:設(shè)xi,j表示第i(i=1,2,3,1=甲,2=乙,3=丙)種產(chǎn)品中原料j(j=1,2,3)的含量。如,x1,2就表示甲產(chǎn)品中第2種原材料的含量。
max z=-15x11+25x12+15x13-30x21+10x22-40x31-10x33
S.t.
0.5x11-0.5x12-0.5x13≥0
-0.25x11+0.75x12-0.25x13≤0
0.75x21-0.25x22-0.25x23≥0
-0.5x21+0.5x22-0.5x23≤0
x11+x21+x31≤100
x12+x22+x32≤100
x13+x23+x33≤60
xij≥0,i=1,2,3;j=1,2,3
Matlab求解程序?yàn)椋?/p>
>>f=[15,-25,-15,30,-10,0,40,0,10];
>>A=[-0.5,0.5,0.5,0,0,0,0,0,0;-0.25,0.75,-0.25,0,0,0,0,0,0;0,0,0,-0.75,0.25,0.25,0,0,0;0,0,0,-0.5,0.5,-0.5,0,0,0;1,0,0,1,0,0,1,0,0;0,1,0,0,1,0,0,1,0;0,0,1,0,0,1,0,0,1];
>>B=[0,0,0,0,100,100,60];
>>lb=zeros(9,1);
>>[x,fval]=linprog(f,A,B,[],[],lb)
Optimization terminated.
x=
100.0000
50.0000
50.0000
0.0000
0.0000
0.0000
0.0000
25.00000.0000
fval=
-500.0000
結(jié)果分析:由于求的是最大值,在MATLAB的標(biāo)準(zhǔn)形式中,需要把最大值的目標(biāo)函數(shù)兩邊取負(fù)號(hào),轉(zhuǎn)變?yōu)榍笞钚≈档男问剑虼私Y(jié)果中的-500是添加負(fù)號(hào)之后的最小值。因此,本題收入的最大值為500元,安排的生產(chǎn)方案是:甲產(chǎn)品中第一種原材料的含量為100千克,甲產(chǎn)品中的第二種原材料的含量為50千克,甲產(chǎn)品中的第三種原材料含量為50千克,丙產(chǎn)品中的第二中原材料含量為25千克。
美國(guó)經(jīng)濟(jì)學(xué)家列昂惕夫提出的投入產(chǎn)出模型是對(duì)經(jīng)濟(jì)學(xué)系統(tǒng)中產(chǎn)品的投入及產(chǎn)出之間關(guān)系的考察,也是對(duì)經(jīng)濟(jì)預(yù)測(cè)和制定經(jīng)濟(jì)政策及措施的依據(jù)的數(shù)學(xué)模型。由于社會(huì)分工的不同,可以分為若干個(gè)經(jīng)濟(jì)部門,每個(gè)經(jīng)濟(jì)部門的活動(dòng)可以分為投入和產(chǎn)出兩方面,通過投入產(chǎn)出模型可以描述短期的投入產(chǎn)出的經(jīng)濟(jì)聯(lián)系,是一個(gè)相對(duì)靜態(tài)的模型[3]。
假設(shè) n 個(gè)能夠生產(chǎn)產(chǎn)品的部門,令 x=(x1,x2,…,xn)T為產(chǎn)出向量,y=(y1,y2,…,yn)T是最終需求向量,A 為消耗系數(shù)矩陣,則列昂惕夫投入產(chǎn)出模型為x=Ax+y,整理得x=(I-A)-1y,大部分實(shí)際問題中I-A是可逆矩陣,產(chǎn)出量轉(zhuǎn)化為矩陣的乘法,若A與y已知,則可求出對(duì)應(yīng)的產(chǎn)量x。Matlab實(shí)現(xiàn):在命令窗口中輸入投入產(chǎn)出表,求出消耗系數(shù)矩陣A,輸入最終需求向量y,根據(jù)x=(I-A)-1y求出相應(yīng)的產(chǎn)出向量x。
投入產(chǎn)出模型可以分析各部門在生產(chǎn)實(shí)際中所占的比例,調(diào)整產(chǎn)業(yè)結(jié)構(gòu),也能研究各部門運(yùn)轉(zhuǎn)的內(nèi)在聯(lián)系及之間的影響。并且在某一產(chǎn)品價(jià)格變動(dòng)的過程中,可以了解對(duì)整個(gè)生產(chǎn)活動(dòng)的影響,從而為最終的生產(chǎn)提供科學(xué)的規(guī)劃[4]。
宏觀經(jīng)濟(jì)發(fā)展的趨勢(shì)是越來越多地使用數(shù)學(xué)和統(tǒng)計(jì)工具,利用數(shù)學(xué)模型來表述經(jīng)濟(jì)理論,好的模型要能夠正確證明自已的想法、數(shù)學(xué)符號(hào)與語(yǔ)言解釋能夠緊密聯(lián)系、經(jīng)濟(jì)變量要有意義且與實(shí)際數(shù)據(jù)能夠較為緊密地對(duì)應(yīng)。將Matlab運(yùn)用于經(jīng)濟(jì)模型的求解過程,一方面可以提高計(jì)算的速度,另一方面可以把抽象的模型轉(zhuǎn)化為數(shù)值解與圖形,從圖形觀察和理解經(jīng)濟(jì)活動(dòng),化復(fù)雜為簡(jiǎn)單,化抽象為具體,有利于提高感性的認(rèn)知,加強(qiáng)對(duì)經(jīng)濟(jì)模型的直觀認(rèn)識(shí),對(duì)抽象的定理及經(jīng)濟(jì)活動(dòng)的理解。