金晶晶
(福建交通職業(yè)技術(shù)學(xué)院基礎(chǔ)部,福建福州350007)
Lingo軟件在數(shù)學(xué)建模競(jìng)賽中的應(yīng)用
金晶晶
(福建交通職業(yè)技術(shù)學(xué)院基礎(chǔ)部,福建福州350007)
針對(duì)三道全國(guó)大學(xué)生數(shù)學(xué)建模競(jìng)賽賽題,利用Lingo軟件對(duì)模型進(jìn)行求解,并分析了Lingo軟件在求解較大規(guī)模數(shù)學(xué)規(guī)劃模型所發(fā)揮的作用。
Lingo軟件;數(shù)學(xué)建模;數(shù)學(xué)規(guī)劃;曲線擬合
數(shù)學(xué)建模(Mathematical Modeling)是對(duì)現(xiàn)實(shí)世界的一個(gè)特定對(duì)象,為了一個(gè)特定目的,根據(jù)特有的內(nèi)在規(guī)律,作出一些必要的簡(jiǎn)化假設(shè),運(yùn)用適當(dāng)?shù)臄?shù)學(xué)工具,得到一個(gè)數(shù)學(xué)結(jié)構(gòu)的過(guò)程[1]。
Lingo是Linear Interactive and General Optimizer的縮寫(xiě)。Lingo軟件是美國(guó)芝加哥大學(xué)的Linus Schrage教授于1980年前后開(kāi)發(fā)出來(lái)的一套專(zhuān)門(mén)用于求解最優(yōu)化問(wèn)題的軟件包,即“交互式的線性和通用優(yōu)化求解器”,包括功能強(qiáng)大的建模語(yǔ)言,建立和編輯問(wèn)題的全功能環(huán)境,讀取和寫(xiě)入Excel和數(shù)據(jù)庫(kù)的功能,以及一系列完全內(nèi)置的求解程序。使用者甚至不需要指定或啟動(dòng)特定的求解器,因?yàn)長(zhǎng)ingo會(huì)讀取方程式并自動(dòng)選擇合適的求解器。目前Lingo產(chǎn)品已經(jīng)有Lingo8.0版本,新版本的求解規(guī)模都在原有基礎(chǔ)上得到進(jìn)一步加強(qiáng)。Lingo軟件的最大特色在于其具有的快速建構(gòu)模型、輕松編輯數(shù)據(jù)、強(qiáng)大求解工具、交互式模型或建立完成應(yīng)用、豐富的文件支持??v觀近幾年全國(guó)大學(xué)生數(shù)學(xué)建模競(jìng)賽賽題,參賽者大都需要處理較復(fù)雜的數(shù)學(xué)規(guī)劃和曲線擬合等問(wèn)題,模型的建立與求解較為復(fù)雜、計(jì)算量大,而matlab、mathmatica等軟件語(yǔ)法比較復(fù)雜不易掌握。Lingo軟件程序簡(jiǎn)潔、計(jì)算精度高、結(jié)果可靠、易于修改和擴(kuò)展,其內(nèi)部建模語(yǔ)言是建立與求解大規(guī)模數(shù)學(xué)規(guī)劃模型的有力武器。2000年全國(guó)大學(xué)生數(shù)學(xué)建模競(jìng)賽B題(鋼管訂購(gòu)和運(yùn)輸)中的最小費(fèi)用流問(wèn)題、2004年全國(guó)大學(xué)生數(shù)學(xué)建模競(jìng)賽C題(酒后駕車(chē))的曲線擬合問(wèn)題、2006年全國(guó)大學(xué)生數(shù)學(xué)建模競(jìng)賽中C題(易拉罐的最優(yōu)設(shè)計(jì))的非線性規(guī)劃問(wèn)題都可以充分展示用Lingo建模語(yǔ)言求解的優(yōu)越性。
歷年全國(guó)大學(xué)生數(shù)學(xué)建模競(jìng)賽都需解決最優(yōu)生產(chǎn)計(jì)劃、最優(yōu)分配最優(yōu)設(shè)計(jì)、最優(yōu)決策、最佳管理等較為復(fù)雜的非線性規(guī)劃問(wèn)題,模型由決策變量、目標(biāo)函數(shù)、約束條件三個(gè)要素組成,其計(jì)算量較大,可用Lingo軟件求解。
2006“高教社杯”全國(guó)大學(xué)生數(shù)學(xué)建模競(jìng)賽C題[3]第二小題,設(shè)易拉罐是一個(gè)正圓柱體,什么是它的最優(yōu)設(shè)計(jì)?經(jīng)測(cè)量得圓柱的上底厚度為a=0.036cm、下底厚度為c=0.040cm、圓柱側(cè)壁厚度為b=0.012 cm。考慮易拉罐設(shè)計(jì)美觀性、便于把握以及材料節(jié)省等因素,于是建立目標(biāo)規(guī)劃模型如下:利用Lingo8.0編程如下:
Lingo以語(yǔ)句Model開(kāi)始,以語(yǔ)句End結(jié)束,這兩個(gè)語(yǔ)句單獨(dú)成一行。語(yǔ)句分為集合定義部分、數(shù)據(jù)初始化部分、目標(biāo)函數(shù)、約束條件部分,這幾個(gè)部分的先后次序無(wú)關(guān)緊要。min開(kāi)頭的語(yǔ)句表示求目標(biāo)函數(shù)最小值。“!”開(kāi)頭的語(yǔ)句是注釋語(yǔ)句,Lingo不作運(yùn)行,每條中間語(yǔ)句必須以“;”號(hào)作為結(jié)尾。注意乘號(hào)不能省略,語(yǔ)句不計(jì)大小寫(xiě)。
運(yùn)行SOVLE,得部分結(jié)果如下:
即底面半徑為3.268480,圓柱體高為10.57760時(shí),用料體積為5.157389,此為最優(yōu)設(shè)計(jì)。第三題亦可按此方法迎刃而解。上例充分體現(xiàn)Lingo其簡(jiǎn)單易學(xué)、方便快捷的優(yōu)越性。
曲線擬合在眾多領(lǐng)域中得到了廣泛的應(yīng)用,將曲線擬合問(wèn)題轉(zhuǎn)化為數(shù)學(xué)規(guī)劃模型,并使用Lingo軟件來(lái)求解,該方法簡(jiǎn)便快捷,是實(shí)現(xiàn)曲線擬合的一個(gè)有效方法。
2004年全國(guó)大學(xué)生數(shù)學(xué)建模競(jìng)賽C題(酒后駕車(chē))中給出某人短時(shí)間內(nèi)喝下兩瓶啤酒后,間隔一定時(shí)間得到數(shù)據(jù)。以下建立無(wú)約束的非線性規(guī)劃模型[2]。間隔一定時(shí)間t測(cè)量他的血液中酒精含量y (毫克/百毫升),得到數(shù)據(jù)如表1:
表1 2004年全國(guó)大學(xué)生數(shù)學(xué)建模競(jìng)賽C題(酒后駕車(chē))數(shù)據(jù)
題目要求結(jié)合給定數(shù)據(jù)建立飲酒后血液中酒精濃度的數(shù)學(xué)模型。通過(guò)建立微分方程模型得到短時(shí)間內(nèi)喝酒后血液中酒精濃度與時(shí)間的關(guān)系為:
求均方誤差
取極小值的待定系數(shù),即為最小二乘解。下面用Lingo軟件求解,具體算法如下:
以上程序中,SETS和ENDSETS之間的語(yǔ)句是對(duì)集合作定義,在此所定義的BAC是包含23個(gè)成員的集合,T和Y是BAC的兩個(gè)屬性,分別表示時(shí)間t和血液中酒精濃度y,它們都是含有23個(gè)成員的一維數(shù)組。DATA和ENDDATA之間的語(yǔ)句是對(duì)T和Y的進(jìn)行賦值,其中@SUM和@EXP是Lingo提供的內(nèi)部函數(shù),@SUM的作用是對(duì)某個(gè)集合的所有成員求某個(gè)表達(dá)式的和,該函數(shù)需要兩個(gè)參數(shù),第一個(gè)參數(shù)為集合名稱(chēng),指定對(duì)該集合的所有成員求和,此處第一個(gè)參數(shù)是BAC,它有23個(gè)成員,則求和運(yùn)算對(duì)這23個(gè)成員進(jìn)行。第二個(gè)參數(shù)是一個(gè)表達(dá)式,表示求和運(yùn)算對(duì)該表達(dá)式進(jìn)行,兩個(gè)參數(shù)之間用“:”號(hào)隔開(kāi)。如果有約束條件,可放在目標(biāo)函數(shù)之后,此處沒(méi)有約束條件,故目標(biāo)函數(shù)之后即以END結(jié)束整個(gè)程序。點(diǎn)擊SOLVE,運(yùn)行結(jié)果如下:
LINGO求多元函數(shù)極小值時(shí)內(nèi)部所采用的算法效率高、速度快、精度高。用于非線性曲線擬合時(shí),對(duì)擬合函數(shù)的形式無(wú)任何限制,無(wú)需初始值,能準(zhǔn)確地得到回歸系數(shù)的最小二乘解,計(jì)算精度高,程序簡(jiǎn)潔。
運(yùn)籌學(xué)的交通運(yùn)輸問(wèn)題中,往往要求在完成運(yùn)輸任務(wù)的前提下,尋求一個(gè)使總運(yùn)輸費(fèi)用最省的運(yùn)輸方案,這就是最小費(fèi)用流問(wèn)題。如果只考慮單位貨物的運(yùn)輸費(fèi)用,那么這個(gè)問(wèn)題就變成最短路問(wèn)題。模型的傳統(tǒng)求解迭代次數(shù)太多,比較復(fù)雜,而matlab、mathmatica等軟件語(yǔ)法復(fù)雜不易編程,Lingo8.0其內(nèi)部語(yǔ)言為解決該類(lèi)問(wèn)題的強(qiáng)有力武器。
2000年全國(guó)大學(xué)生數(shù)學(xué)建模競(jìng)賽B題“鋼管的訂購(gòu)和運(yùn)輸”是一道離散優(yōu)化問(wèn)題。如圖1,有7家鋼管生產(chǎn)廠Si(i=1,2,…7),提供鋼管到一條擬鋪設(shè)鋼管的天然氣輸送主管道上的15個(gè)站點(diǎn) Aj(j=1,2,…15)。鋼管可通過(guò)公路和鐵路運(yùn)至鋪設(shè)地點(diǎn),圖中粗線表示鐵路,單細(xì)線表示公路,雙細(xì)線表示要鋪設(shè)的管道(假設(shè)沿管道或者原有公路,或者建有施工公路),空心圓點(diǎn)表示火車(chē)站。鋼管運(yùn)到站點(diǎn)后由各站點(diǎn)沿管道向兩邊鋪設(shè)直至合攏。該題要求制定鋼管訂購(gòu)和運(yùn)輸?shù)膬?yōu)化計(jì)劃,使總費(fèi)用最小。
圖1 天然氣輸送主管道圖
欲解決該問(wèn)題首先需確定從Si至Aj的最優(yōu)路徑,從而確定出鋼管從i地運(yùn)往j地的最小運(yùn)費(fèi),即求解最小費(fèi)用流問(wèn)題。根據(jù)該題的需要,不妨設(shè)從Si至Aj的鋼管經(jīng)過(guò)鐵路后,一旦走公路,則不會(huì)再通過(guò)鐵路運(yùn)輸。下以S2為例,計(jì)算S2至Aj的最優(yōu)路徑。圖1中Bk/Lk(k=16,2,…,32)中表示S2至沿鐵路至火車(chē)站Bk的費(fèi)用為L(zhǎng)k。問(wèn)題轉(zhuǎn)化為求以Si為起點(diǎn)、Aj為終點(diǎn)的賦權(quán)圖的最短路徑問(wèn)題。由Dijkstra算法,運(yùn)用Lingo8.0編程如下:
以上SETS開(kāi)始至ENDSETS結(jié)束的內(nèi)容是定義所有的邊。“CITIES/1..33/:F;”是用集合CITIES定義一維變量 F,其格式為:“setname/memberlist(or1.. n)/:attribute,...”,一個(gè)集合只需要給出維數(shù)(mem-berlist,用1..n表示或其他文字符號(hào)表示或用集合表示),后接具有該維數(shù)的變量(attribute)。以上DATA開(kāi)始至ENDDATA結(jié)束的內(nèi)容是賦以上各邊以相應(yīng)的權(quán)。Dijkstra算法的循環(huán)語(yǔ)句為:“@FOR(CITIES( i)|i#LT# @SIZE(CITIES):F(i)= @MIN( ROADS(i,j):D(i,j)+F(j)));”,其中邏輯運(yùn)算符“#LT#”表示小于。
即可求得單位鋼管從S2到Aj的最小運(yùn)費(fèi)F(j) (j=1,…,15)如下:
表2 單位鋼管從S2到Aj的最小運(yùn)費(fèi)
同理可求得S1,S3,S4,S5,S7,S7各點(diǎn)到目的點(diǎn)的最優(yōu)單位運(yùn)費(fèi)。
經(jīng)定量分析可得較合理的方案為:S1,S2,S3負(fù)責(zé)往鋪設(shè)點(diǎn)A1至A9供應(yīng)鋼管,S4、S5、S6、S7負(fù)責(zé)往A8至 A15供應(yīng)鋼管。
Lingo軟件內(nèi)置建模語(yǔ)言以較少的語(yǔ)句、直觀的方式描述較大規(guī)模的數(shù)學(xué)規(guī)劃模型。其中,@ SUM、@For和@IF等語(yǔ)句的應(yīng)用,極大地方便了數(shù)學(xué)模型的建立。此外,由曲線擬合模型可得,可以將原先不屬于優(yōu)化問(wèn)題的模型,利用Lingo軟件內(nèi)部建模語(yǔ)言進(jìn)行求解,較之傳統(tǒng)的求解方法更簡(jiǎn)單。
在實(shí)際應(yīng)用領(lǐng)域,Lingo其線性、非線性和整數(shù)規(guī)劃求解程序已經(jīng)被全世界數(shù)千萬(wàn)的公司用來(lái)做最大化利潤(rùn)和最小化成本的分析。Lingo能在產(chǎn)品分銷(xiāo)、成分混合、生產(chǎn)與個(gè)人事務(wù)安排、存貨管理、生產(chǎn)線性規(guī)劃、運(yùn)輸、財(cái)務(wù)金融、投資分配、資本預(yù)算、混合排程、庫(kù)存管理、資源配置等問(wèn)題的數(shù)學(xué)建模中發(fā)揮巨大作用。
[1]姜啟源,謝金星,葉 俊.數(shù)學(xué)模型:第三版[M].北京:高等教育出版社,2003:3-4.
[2]袁新生,廖大慶.用Lingo6.0求解大型數(shù)學(xué)規(guī)劃[J].工科數(shù)學(xué),2001(5):73-77.
Application of Lingo Software to Mathematical Contest in Modeling
J IN Jing-jing
(Basic Courses Dept.,Fujian Communication Technology College,Fuzhou 350007,China)
On the analysis of three questions in National Mathematical Contest in Modeling for College students,this paper puts forward the way in solving the model by using Lingo software accordingly,and analyzes the role the Lingo software plays in solving large-scale mathematical optimization model.
Lingo software;mathematical modeling;mathematical optimization;curve fitting
book=85,ebook=160
O141.4
A
1008-4738(2010)04-0085-04
2010-06-20
福建交通職業(yè)技術(shù)學(xué)院科技發(fā)展基金(Ky1001)。
金晶晶(1983-),男,福建交通職業(yè)技術(shù)學(xué)院基礎(chǔ)部助教,理學(xué)碩士,研究方向:組合數(shù)學(xué)與圖論。