桑海風(fēng) 李慶春 劉畔畔 呂學(xué)哲
【摘要】針對(duì)數(shù)學(xué)規(guī)劃問題在全國大學(xué)生數(shù)學(xué)建模競(jìng)賽中的重要性,本文詳細(xì)介紹兩種求解規(guī)劃模型軟件(Matlab與Lingo)的具體操作過程.特別針對(duì)非標(biāo)準(zhǔn)形式,給出了有效的求解方案.
【關(guān)鍵詞】數(shù)學(xué)建模; 優(yōu)化模型; Matlab; Lingo
從1992年開始的全國大學(xué)生數(shù)學(xué)建模競(jìng)賽所出現(xiàn)的48道(本科組)題目中,約有2/3的競(jìng)賽題涉及數(shù)學(xué)規(guī)劃模型.由此可見,數(shù)學(xué)規(guī)劃模型的建立與求解在數(shù)學(xué)建模競(jìng)賽中占有重要的地位.因此能夠快速求解規(guī)劃類問題是數(shù)學(xué)建模隊(duì)員的基本素質(zhì).利用Matlab與Lingo提供的強(qiáng)大的規(guī)劃模型求解命令,可以簡(jiǎn)單快速地得到所要的結(jié)果.
一、Matlab與Lingo簡(jiǎn)介
數(shù)學(xué)軟件大致可分為兩大類:一類為通用型軟件(如Matlab),一類為專用型軟件(如Lingo).MATLAB ( Matrix Laboratory,即 “矩陣實(shí)驗(yàn)室”)是一款集數(shù)值計(jì)算、符號(hào)運(yùn)算、圖形處理及程序設(shè)計(jì)等強(qiáng)大功能于一體的軟件,也是當(dāng)今國際上最流行的科學(xué)與工程計(jì)算的軟件工具之一.LINGO是美國LINDO系統(tǒng)公司開發(fā)的一套專門用于求解最優(yōu)化問題的軟件包,它除了具有求解線性規(guī)劃和二次規(guī)劃問題的全部功能外,還可以用于求解非線性規(guī)劃問題,也可以用于一些線性和非線性方程(組)的求解等.
二、利用Matlab求解數(shù)學(xué)規(guī)劃問題
Matlab中求解數(shù)學(xué)規(guī)劃問題的常用命令為linprog(處理線性規(guī)劃)和fmincon(處理非線性規(guī)劃).
1.線性規(guī)劃
點(diǎn)擊菜單‘lingo下的‘solve,得到結(jié)果:
說明:當(dāng)x1=35,x2=65時(shí),目標(biāo)函數(shù)的最大值為11077.50.
注:1.求目標(biāo)函數(shù)的最大值(或最小值)用MAX=目標(biāo)函數(shù)(或MIN=目標(biāo)函數(shù))來表示.
2.每個(gè)語句都必須以英文的分號(hào)結(jié)束.
3.如果對(duì)變量的取值范圍沒有作特殊說明,則默認(rèn)所有決策變量都非負(fù).
4.LINGO中函數(shù)一律需要以“@”開頭,其中@gin(x)表示x為整數(shù).
5.如果熟悉Lingo軟件,對(duì)于線性規(guī)劃和非線性規(guī)劃模型,建議也用Lingo求解.
四、結(jié) 語
現(xiàn)階段大部分高校已經(jīng)開設(shè)Matlab程序設(shè)計(jì)的相關(guān)課程,而開設(shè)Lingo軟件課程的高校并不多.故對(duì)于有Matlab基礎(chǔ)的同學(xué),可以利用優(yōu)化工具箱中的命令解決一些線性規(guī)劃和非線性規(guī)劃問題;而對(duì)于靈敏度分析和整數(shù)規(guī)劃模型的求解等問題,建議利用Lingo軟件求解.
【參考文獻(xiàn)】
[1]卓金武.MATLAB 在數(shù)學(xué)建模中的應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2011.
[2]劉衛(wèi)國.MATLAB程序設(shè)計(jì)與應(yīng)用[M].北京:高等教育出版社,2007.
[3]謝金星,薛毅.優(yōu)化建模與 LINDO/LINGO 軟件[M].北京:清華大學(xué)出版社,2005.
[4]葉其孝,姜啟源.數(shù)學(xué)建模[M].北京:機(jī)械工業(yè)出版社,2005.