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