何江蕓
摘要:本文探討了在高等學校線性規(guī)劃教學中引入計算機程序思想的重要性,在理論教學與軟件工具之間搭起橋梁,通過Matlab編程,不但使教師在理論教學中培養(yǎng)學生的應用能力,而且使得學生的計算機編程能力得到了很大提高。通過巧妙的計算機程序語言與理論模型的結(jié)合,使學生的學習興趣及學習能力都大為提高,達到了理論數(shù)學思維與計算機應用能力雙向豐收的教學效果。
關(guān)鍵詞:Matlab仿真;線性規(guī)劃;編程能力;教學效果
中圖分類號:G421 文獻標志碼:A 文章編號:1674-9324(2018)10-0181-04
一、引言
線性規(guī)劃不但是高校理工科專業(yè)的重要課程,而且在經(jīng)管類的數(shù)據(jù)挖掘教學中占據(jù)著非常重要的位置,是數(shù)據(jù)建模的重要內(nèi)容,是企業(yè)資源計劃(Enterprise Resource Planning,ERP)的核心思想之一。最優(yōu)化的資源管理及開發(fā)應用是每個企業(yè)長期堅持的戰(zhàn)略任務(wù)[1-5]。
但是在現(xiàn)行許多高等學校線性規(guī)劃實際的教學中,往往是過于偏重理論教學,沒有計算機應用及軟件編程,忽視了計算機應用能力的培養(yǎng),這使得教學過于枯燥,只進行理論教學會帶來三方面的問題:
1.重理論而不重計算機應用能力?!皩W以致用”是教學的本質(zhì),再好的理論如果不加以應用,這樣的理論發(fā)展往往受到限制,當然,一些純抽象某些專業(yè)課程(如抽象代數(shù))除外。許多高校的大學生都是要培養(yǎng)學生的應用能力,培養(yǎng)應用型復合型人才,特別是強調(diào)計算機應用能力,如果線性規(guī)劃教學只培養(yǎng)了學生的理論部分,這就欠缺了應用能力特別是計算機應用能力的培養(yǎng)。
2.教學的深度受到限制。線性規(guī)劃問題的解一般有圖解法及單純型法兩種,但圖解法對于兩個決策變量還好,三個以上就很難實施;而單純型法對于四個變量以上就將耗費大量時間,特別對于5個變量以上就顯得無從下手。如今的企業(yè)資源復雜,往往涉及更多的約束及決策變量,如果不借助計算機求解,這就會嚴重影響教學的深度及解決實際問題的能力。
3.學生的學習興趣大為降低,導致教學效果也低。因為只有枯燥的理論課堂使學生無法進入計算機實驗室進行操作程面的鍛煉。課堂上沒有計算機仿真的演示,現(xiàn)代計算機軟件工具沒有在課堂上體現(xiàn),學生學習枯燥無興趣,這使得這門課程的學習效果大打折扣。
因此,在線性規(guī)劃教學中引入計算機軟件工具不但有必要而且是現(xiàn)代教學培養(yǎng)目標非常重要的要求,通過Matlab這種優(yōu)秀的軟件來培養(yǎng)學生的編程能力在上述三個方面都會有重要的教學改革意義。
二、線性規(guī)劃與Matlab相關(guān)問題
1.線性規(guī)劃問題。線性規(guī)劃問題的歷史悠久、理論成熟及應用廣泛。法國數(shù)學家J.B.J.傅里葉和C.瓦萊-普森分別于1832和1911年獨立地提出線性規(guī)劃的想法,但未引起學術(shù)界注意。1939年蘇聯(lián)數(shù)學家Л.В.康托羅維奇在《生產(chǎn)組織與計劃中的數(shù)學方法》一書中提出線性規(guī)劃問題,也未引起重視。1947年美國數(shù)學家G.B.Dantzing提出求解線性規(guī)劃的單純形法,為這門學科奠定了算法基礎(chǔ)。1947年美國數(shù)學家J.馮諾伊曼提出對偶理論,開創(chuàng)了線性規(guī)劃的許多新的研究領(lǐng)域,擴大了它的應用范圍和解題能力??低新寰S奇和庫伯曼斯(Koopmans)因?qū)Y源最優(yōu)分配理論的貢獻而獲1975年諾貝爾經(jīng)濟學獎。上世紀60—70年代,隨著計算機的應用,線性規(guī)劃問題發(fā)展到了30000個約束,3000000個變量,這是理論和手工再也無法計算的。
從1964年諾貝爾獎設(shè)經(jīng)濟學獎后,到1992年28年間的32名獲獎?wù)咧杏?3人(40.6%)從事過與線性規(guī)劃有關(guān)的研究工作,其中比較著名的有Simon,Samullson,Leontief,Arrow,Miller等。
如今,隨著大數(shù)據(jù)時代的來臨及企業(yè)復雜業(yè)務(wù)的開展,線性規(guī)劃問題解決企業(yè)資源最優(yōu)配置變得異常重要,同時,為了解決復雜問題,計算機的應用也顯得越來越重要。
2.Matlab問題。Matlab是由美國MathWorks公司開發(fā)的一款商業(yè)軟件,起初是為實現(xiàn)數(shù)學計算而設(shè)計的。20世紀70年代,美國新墨西哥大學計算機科學系主任Cleve Moler為了減輕學生編程的負擔,用FORTRAN編寫了最早的Matlab。1984年由Little、Moler、Steve Bangert合作成立的MathWorks公司正式把Matlab推向市場。到20世紀90年代,Matlab已成為國際控制界的標準計算軟件[1-5]。
Matlab軟件優(yōu)勢主要體現(xiàn)在編程環(huán)境、簡單易用、強處理能力、圖形處理、模塊集合工具箱、程序接口和發(fā)布平臺、應用軟件開發(fā)等方面。目前已應用到數(shù)值分析、數(shù)值和符號計算、工程與科學繪圖、控制系統(tǒng)的設(shè)計與仿真、數(shù)字圖像處理技術(shù)、數(shù)字信號處理技術(shù)、通訊系統(tǒng)設(shè)計與仿真、財務(wù)與金融工程、管理與調(diào)度優(yōu)化計算(運籌學)等領(lǐng)域。
新版的Matlab自1984年推向市場以來,歷經(jīng)十多年的發(fā)展和競爭,現(xiàn)已成為國際認可的最優(yōu)化的科技應用軟件。與其他高級語言相比,Matlab提供了一個人機交互的數(shù)學系統(tǒng)環(huán)境,可以大大節(jié)省編程時間。Matlab語法規(guī)則簡單、容易掌握、調(diào)試方便,具有高效、簡單和直觀的特性。使用者只需輸入一條命令而不用編制大量的程序即可解決許多數(shù)字問題,正是由于Matlab的強大功能,受到國內(nèi)外專家學者的歡迎和重視,它已成為許多大學生研究與學習的重要工具[6-10]。
三、線性規(guī)劃問題的標準型及Matlab函數(shù)
1.線性規(guī)劃問題的標準型。利用線性規(guī)劃問題求解的步驟一般為“確定決策變量、確定目標函數(shù)、確定約束條件、確定非負約束、求解”五個步驟,為了求解,需要將之化為標準形式。線性規(guī)劃問題的標準型是:
max(min)z=■c■x■■■a■x■=b■,i=1,2,…,mx■≥0,j=1,2,…,nb■≥0,i=1,2,…,m (1)
其中z稱為目標函數(shù),x■(≥0,j=1,2,…,n)為決策變量。為了在教學中便于計算機求解,我們將(1)式化為:
max(min)z=fXs,t.AX≤BX≥0,B≥0 (2)
其中:
f=[c■,c■,…,c■],X=[x■,x■,…,x■]',
B=[b■,b■,…,b■]',
A=■=(a■)■
2.Matlab線性規(guī)劃程序。我們用linprog函數(shù)來求作為線性規(guī)劃程序。Matlab對于線性規(guī)劃問題的求解是求最小值問題:
minz=fXs,t.AX≤B (3)
使用linprog時,已經(jīng)用單純型方法進行了打包,計算機代碼簡單靈活,可以針對任意多個變量進行處理,同時,教學中要注意以下幾個不同的函數(shù):
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,X■) (4)
滿足Aeq·X=beq,是那些有等式的約束條件,LB,UB是決策變量X的下界與上界,X■為初值。
因此,教學中應根據(jù)不同的問題使用不同的Matlab函數(shù)。一般情況下應用X=linprog(f,A,B);當既有不等式又有等式時,用函數(shù)X=linprog(f,A,B,aeq,beq);當不但有等式約束而且明顯給出決策變量的上下界時,就用函數(shù)X=linprog(f,A,B,aeq,beq,LB,UB);既有等式約束,又有上下界約束,同時可以觀察到解的大致范圍時,不妨給出一個初值而利用函數(shù)X=linprog(f,A,B,aeq,beq,LB,UB,X■)。這樣可以省下計算機大量尋找解的時間。
同時,教學中要注意的是,Matlab使用的是求解最小值的表達式(3),因此,如果是求解的最大值問題,必須先將求解最大值用變換化為求最小值的形式,許多求解錯誤就是沒有注意到這一點。
四、Matlab求解線性規(guī)劃問題的仿真實驗
例子 最大利潤問題
某企業(yè)計劃生產(chǎn)Ⅰ、Ⅱ兩種產(chǎn)品。這兩種產(chǎn)品都要分別在A、B、C、D四種不同設(shè)備上加工。生產(chǎn)每件產(chǎn)品Ⅰ需占用各設(shè)備分別為2、1、4、0h,生產(chǎn)每件產(chǎn)品Ⅱ,需占用各設(shè)備分別為2、2、0、4h。已知各設(shè)備計劃期內(nèi)用于生產(chǎn)這兩種產(chǎn)品的能力分別為12、8、16、12h,又知每生產(chǎn)一件產(chǎn)品Ⅰ企業(yè)能獲得2元利潤,每生產(chǎn)一件產(chǎn)品Ⅱ企業(yè)能獲得3元利潤,問企業(yè)應安排生產(chǎn)兩種產(chǎn)品各多少件,使總的利潤收入為最大。
問題分析:
設(shè)分別用x■,x■分別表示Ⅰ、Ⅱ兩種產(chǎn)品在計劃期內(nèi)的產(chǎn)量,因為設(shè)備A在計劃期內(nèi)的可用時間為12h,不允許超,于是有:
2x■+x■≤12
同樣的對設(shè)備B,C,D有:
x■+2x■≤8
4x■≤16
4x■≤12
企業(yè)的目標是在各種設(shè)備能力允許的條件下,利潤達到最大,即有:
maxz=2x■+3x■
因此,這個問題對于Matlab要化為求最小值問題,這樣,該問題化為:
minz′=-z=-2x■-3x■
約束條件是:
2x■+x■≤12x■+2x■≤84x■+0x■≤160x■+4x■≤12 (5)
可見,這個問題顯然應該用函數(shù)X=linprog(f,A,B),這樣,其Matlab程序為:
f=[-2,-3];
A=[2,2;1,2;4,0;0,4];
B=[12,8,16,12]
X=linprog(f,A,B);
經(jīng)過運行,則有:
Optimization terminated.
x=
4.0000
2.0000
即當X=(4 2),即當x■=4,x■=2時,總的利潤收入為最大,最大利潤為z=2x■+3x■=14元。
如果在解題中沒有注意將最大值問題化為最小值問題而直接用如下程序:
f=[2,3]
A=[2,2;1,2;4,0;0,4];
B=[12,8,16,12]
X=linprog(f,A,B)
則會出現(xiàn)以下錯誤信息并得到錯誤結(jié)果:
Exiting:One or more of the residuals,duality gap,or total relative error has grown 100000 times greater than its minimum value so far:the dual appears to be infeasible (and the primal unbounded).,(The primal residual < TolFun=1.00e-008.)。
x=1.0e+024*(-0.0000 -2.2587)
意思是:一個或多個殘差、二元間隙或總相對誤差到目前為止已經(jīng)增長了100000倍以上:對偶似乎是不可行的(和原始無界)。并得到了上述錯誤結(jié)果。
另外,如果將(5)式化為:
2x■+x■≤12x■+2x■≤80≤x■≤40≤x■≤3 (6)
則反而沒有l(wèi)inprog的函數(shù)可以利用。計算無法進行下去。因此,正確的方法是根據(jù)linprog函數(shù)化為可以解出的函數(shù)模型,才會有真正的結(jié)果。
五、結(jié)論
線性規(guī)劃是高等學校教學中比較抽象的部分,本文論述了在高等學校線性規(guī)劃教學中引入計算機程序思想的重要性,在理論教學與軟件工具之間搭起橋梁,通過Matlab編程,不但使教師在理論教學中培養(yǎng)學生的應用能力,而且使得學生的計算機編程能力得到了很大提高。通過巧妙的計算機程序語言與理論模型的結(jié)合,使學生的學習興趣及學習能力都大為提高,達到了理論數(shù)學思維與計算機應用能力雙向豐收的教學效果。
參考文獻:
[1]聶建輝.Matlab與科學計算課程教學方法改革[J].學周刊,2017,(19):5-6.
[2]蔣玲玲.ASP和MATLAB混合編程實現(xiàn)線性規(guī)劃模型求解[J].信息與電腦:理論版,2017,(01):82-83.
[3]袁明珠.Matlab遺傳算法工具箱在約束非線性懲罰函數(shù)中的應用[J].軟件工程,2017,(01):37-39.
[4]孫建英.MATLAB平臺下運籌學模型的仿真實驗[J].沈陽大學學報:自然科學版,2016,(04):337-339.
[5]揭逸飛.運用MATLAB軟件求解高中數(shù)學中的線性和非線性規(guī)劃問題[J].科技視界,2016,(21):164.
[6]尚飛.Matlab在線性規(guī)劃中的應用[J].中華建設(shè),2016,(06):90-93.
[7]張雪峰.MATLAB仿真軟件在線性代數(shù)課程中的應用研究[J].曲阜師范大學學報:自然科學版,2016,(01):42-46+50.
[8]李林漢,韓祝華.基于matlab的《線性規(guī)劃》教學研究[J].價值工程,2015,(23):195-197.
[9]劉森,劉琳.Matlab與Excel聯(lián)合求解堤防工程土料場規(guī)劃的線性規(guī)劃模型[J].黑龍江水利科技,2015,(04):1-5.
[10]蔣春迪,張韜.表上作業(yè)法和Matlab求解土方調(diào)配方案的比較[J].價值工程,2015,(09):110-113.