陳諾凡
(福州第二中學(xué),福建 福州 350001)
線性規(guī)劃問(wèn)題是指在線性約束條件下求線性目標(biāo)函數(shù)的最值問(wèn)題。利用平面區(qū)域只能求解含有兩個(gè)變量的線性規(guī)劃模型,當(dāng)線性規(guī)劃模型包含的變量多于兩個(gè)時(shí),就需要借助各類(lèi)數(shù)學(xué)計(jì)算軟件來(lái)高效求解。復(fù)雜的線性規(guī)劃模型可以用哪些計(jì)算軟件來(lái)求解?各種軟件的應(yīng)用又各有哪些優(yōu)勢(shì)?為回答這些問(wèn)題,以下對(duì)三種數(shù)學(xué)計(jì)算軟件在線性規(guī)劃模型求解中的應(yīng)用進(jìn)行研究,并結(jié)合實(shí)例加以分析。
求解線性規(guī)劃問(wèn)題建立的數(shù)學(xué)模型簡(jiǎn)稱(chēng)線性規(guī)劃模型。求解線性規(guī)劃問(wèn)題一般步驟是:把實(shí)際問(wèn)題轉(zhuǎn)化為線性規(guī)劃模型→求解數(shù)學(xué)模型→求解結(jié)果的解釋與應(yīng)用。線性規(guī)劃模型由目標(biāo)函數(shù)、約束條件、決策變量三要素構(gòu)成。在建立線性規(guī)劃模型時(shí),首先要假設(shè)決策變量,并將目標(biāo)函數(shù)與約束條件分別表示為決策變量的線性函數(shù)。模型求解結(jié)果中決策變量的取值即為線性規(guī)劃問(wèn)題的最優(yōu)解,亦稱(chēng)為最優(yōu)決策方案。
由于生產(chǎn)、生活中遇到的多數(shù)線性規(guī)劃問(wèn)題對(duì)應(yīng)的模型包含的決策變量個(gè)數(shù)一般較多,當(dāng)決策變量個(gè)數(shù)多于兩個(gè),即目標(biāo)函數(shù)與約束條件為n(n≧3)元函數(shù)時(shí),最簡(jiǎn)單、便捷且實(shí)用的方法莫過(guò)于利用數(shù)學(xué)計(jì)算軟件進(jìn)行求解的方法。當(dāng)然,能夠簡(jiǎn)捷地利用數(shù)學(xué)軟件求解線性規(guī)劃模型的前提是:理解線性規(guī)劃模型構(gòu)造、熟悉數(shù)學(xué)軟件的特點(diǎn)。求解線性規(guī)劃模型的計(jì)算軟件比較多,文章主要重點(diǎn)對(duì)Excel規(guī)劃求解工具、Matlab軟件、Lingo軟件等的使用特點(diǎn)進(jìn)行歸納與比較,以便選擇使用。
Excel可以進(jìn)行各種數(shù)據(jù)的處理、統(tǒng)計(jì)分析和輔助決策[1],加載“規(guī)劃求解”功能項(xiàng)的Excel能夠簡(jiǎn)單、方便地用于較小規(guī)模線性規(guī)劃問(wèn)題的求解。
例1.營(yíng)養(yǎng)學(xué)家指出,成人良好的日常飲食應(yīng)該每天至少提供0.075千克的碳水化合物,0.06千克的蛋白質(zhì),0.06千克的脂肪?,F(xiàn)有兩種食物A、B可提供此三種物質(zhì),每千克食物A、B分別含有碳水化合物、蛋白質(zhì)、脂肪的數(shù)量及每千克食物A、B的分別費(fèi)用如表1所示。為了滿(mǎn)足營(yíng)養(yǎng)學(xué)家指出的飲食要求,同時(shí)使花費(fèi)最低,成人每天同時(shí)食用食物A和食物B各為多少?
表1 食物A、B物質(zhì)含量及費(fèi)用數(shù)據(jù)表
解:設(shè)成人每天食用食物A、B的數(shù)量分別為x1千克,x2千克,根據(jù)題意建立如下線性規(guī)劃模型 (1):
利用Excel2010求解模型(1)的具體過(guò)程如下述表2、圖1所示。
表2 例1求解數(shù)據(jù)表及項(xiàng)目設(shè)定
圖1 規(guī)劃求解過(guò)程參數(shù)及設(shè)定
根據(jù)模型(1),在表2、圖1中設(shè)置好“目標(biāo)”“可變單元格”“約束”,且在圖1中選定“使無(wú)約束變量為非負(fù)數(shù)”及“單純線性規(guī)劃”后,點(diǎn)“求解”即可得求解結(jié)果:決策變量值x1=0.1429,x2=0.5714;目標(biāo)函數(shù)值z(mì)=16.0000。從而得到該線性規(guī)劃問(wèn)題的最優(yōu)解與最優(yōu)值,即成人食用食物A、B分別為0.143千克、0.571千克,相應(yīng)的最低花費(fèi)為16元。
利用Excel“規(guī)劃求解”工具求解線性規(guī)劃模型盡管步驟較多,但讀者在熟悉了Excel規(guī)劃求解過(guò)程后,會(huì)感受到其友好的界面,較易理解并掌握其操作過(guò)程,因而Excel規(guī)劃求解工具是求解線性規(guī)劃問(wèn)題較常用的辦法。但從表2、圖1也發(fā)現(xiàn),當(dāng)決策變量的個(gè)數(shù)較多或者約束條件的個(gè)數(shù)較多時(shí),求解過(guò)程要輸入的數(shù)據(jù)等各類(lèi)信息量比較大,且在Excel表中占用的空間較大,給求解過(guò)程的操作造成一定麻煩。因此,在線性規(guī)劃模型的規(guī)模較大(變量較多或約束條件較多)時(shí),考慮利用其他軟件求解模型。
Matlab是一種用于科學(xué)計(jì)算的、高效率的高級(jí)計(jì)算機(jī)編程語(yǔ)言[2],是求解線性規(guī)劃模型常用、高效的計(jì)算軟件。利用Matlab求解線性規(guī)劃模型時(shí),規(guī)定了線性規(guī)劃模型的標(biāo)準(zhǔn)形式,設(shè)定了特定的程序命令。Matlab運(yùn)用中規(guī)定的線性規(guī)劃模型的標(biāo)準(zhǔn)形式為[3]:
其中,f為目標(biāo)函數(shù)中價(jià)值系數(shù)組成的列向量,也稱(chēng)價(jià)值向量;x為決策變量組成的列向量;A是約束不等式的系數(shù)矩陣,Aeq是約束等式的系數(shù)矩陣;b是約束不等式的資源向量,beq是約束等式的資源向量(為列向量);lb、ub分別為決策變量上、下界組成的列向量。
Matlab中求解線性規(guī)劃模型的命令為:
[x,f val]=linprog(f,A,b,Aeq,beq,lb,ub)
在具體的線性規(guī)劃問(wèn)題求解時(shí),只要根據(jù)模型中目標(biāo)函數(shù)與約束條件的系數(shù)與常數(shù),對(duì)程序中的數(shù)字進(jìn)行相應(yīng)的更改即可。
例如,求解例1所示線性規(guī)劃問(wèn)題的Matlab程序如下:
其中[]表示所求解的模型無(wú)對(duì)應(yīng)的限制項(xiàng)。
由此程序解得模型(1)最優(yōu)解為:x1=0.1429,x2=0.5714;對(duì)應(yīng)的最優(yōu)值z(mì)=16.0000。因此,例1的線性規(guī)劃問(wèn)題的最優(yōu)決策方案是:成人每天食用食物A、B的數(shù)量分別為0.1429千克,0.5714千克;相應(yīng)的最少費(fèi)用為16元。
上述求解例1的程序是求解線性規(guī)劃問(wèn)題的通用程序,在其它具體的線性規(guī)劃模型求解時(shí)只需把各矩陣(向量)的值進(jìn)行重新輸入即可。由上述程序可知:求解線性規(guī)劃問(wèn)題的Matlab程序可讀性強(qiáng),直觀明了,且占用空間少,此優(yōu)點(diǎn)使其更適合于求解規(guī)模較大(決策變量多或約束條件多)的線性規(guī)劃問(wèn)題;若出現(xiàn)程序錯(cuò)誤,會(huì)準(zhǔn)確顯示錯(cuò)誤的位置,利于程序錯(cuò)誤的糾正或模型錯(cuò)誤的糾正,此特點(diǎn)也更有利于其運(yùn)用于大規(guī)模線性規(guī)劃問(wèn)題的求解;在利用Matlab進(jìn)行計(jì)算時(shí),可以創(chuàng)建新文件或打開(kāi)一個(gè)已存在的M文件,利用文件編輯器對(duì)文件進(jìn)行編輯和修改,在已有的M文件上進(jìn)行編輯和修改可使每次輸入的工作量大大減少,這也是利用Matlab求解線性規(guī)劃模型的突出優(yōu)勢(shì)。
(三)利用Lingo軟件解線性規(guī)劃模型
Lingo是一套專(zhuān)門(mén)求解最優(yōu)化問(wèn)題的軟件包[2]。Lingo用于求解線性規(guī)劃這一類(lèi)最優(yōu)化問(wèn)題時(shí)執(zhí)行速度快;Lingo含有與其它數(shù)據(jù)文件的接口,因此在輸入、求解和分析大規(guī)模最優(yōu)化問(wèn)題時(shí)較為方便;Lingo本身就是最優(yōu)化問(wèn)題的建模語(yǔ)言,軟件可以將模型建立語(yǔ)言與求解引擎整合起來(lái)闡述和求解線性規(guī)劃等最優(yōu)化模型,很多時(shí)候均是“模型即程序”,因此利用Lingo建立和求解線性規(guī)劃模型具有快捷、簡(jiǎn)單、高效等特點(diǎn)[2]。
由于Lingo本身就是線性規(guī)劃問(wèn)題等最優(yōu)化問(wèn)題的建模語(yǔ)言,因此,利用Lingo編寫(xiě)線性規(guī)劃模型仍包含目標(biāo)函數(shù)、決策變量、約束條件三個(gè)要素。例如,求解線性規(guī)劃模型(1)的Lingo程序命令(為后續(xù)比較研究,此處稱(chēng)其為L(zhǎng)ingo程序1(簡(jiǎn)易程序)如下:
在Lingo中沒(méi)有嚴(yán)格的不等號(hào),比如“>”仍表示大于等于。上述模型(1)的Lingo程序1的輸入是一種比較直接的輸入方式,基本上和模型的書(shū)寫(xiě)一樣。如果線性規(guī)劃模型的規(guī)模不大(決策變量較少且約束條件較少),則對(duì)應(yīng)的程序不大,這時(shí)使用程序1的輸入方式最簡(jiǎn)便、直觀。但同時(shí),從Lingo程序1觀察可知,這種方式的程序輸入需要將每個(gè)變量列出,如果模型規(guī)模較大,對(duì)應(yīng)的程序較大,則這種方式的輸入就很麻煩,這時(shí)可利用改進(jìn)的Lingo程序即如下列所示的Lingo程序2來(lái)求解線性規(guī)劃模型(1)。程序2是采用矩陣生成器編寫(xiě)程序[3]。
由Lingo程序1、程序2均可得到線性規(guī)劃模型(1)的最優(yōu)解為:x1=0.1429,x2=0.5714;最優(yōu)值z(mì)=16.0000.
Lingo程序2將不等式約束全部轉(zhuǎn)化為小于等于約束,從而可以在一個(gè)循環(huán)語(yǔ)句中實(shí)現(xiàn)。如果程序中還有等式約束,可以再引入一個(gè)循環(huán)語(yǔ)句來(lái)控制。Lingo程序2模式用來(lái)處理大規(guī)模線性規(guī)劃模型輸入特別方便且求解速度快。
求解線性規(guī)劃模型所運(yùn)用的Excel規(guī)劃求解工具、Matlab軟件、Lingo軟件等各有特點(diǎn),適用性不同??傮w來(lái)講:(1)Excel規(guī)劃求解工具、Lingo程序1模式表達(dá)直觀、可讀性較強(qiáng)、便于理解與應(yīng)用,求解過(guò)程操作方便、直接,適合于規(guī)模較小(決策變量個(gè)數(shù)較少且約束條件個(gè)數(shù)較少)的線性規(guī)劃模型,同時(shí)也是初學(xué)運(yùn)用數(shù)學(xué)軟件的讀者較易掌握的方法;(2)Matlab軟件、Lingo軟件的程序2模式含有與其它數(shù)據(jù)文件的接口,在輸入、求解和分析大規(guī)模線性規(guī)劃問(wèn)題方面較為便捷;(3)Matlab軟件、Lingo軟件在點(diǎn)擊運(yùn)行后如果輸入有錯(cuò)會(huì)彈出錯(cuò)誤提示,可根據(jù)提示對(duì)程序或模型做針對(duì)性的修改,對(duì)高效求解與模型的修正和完善非常有利;(4)Matlab軟件的安裝目前對(duì)于很多非專(zhuān)業(yè)使用人士而言有一定困難,不同Matlab版本在不同配置的計(jì)算機(jī)上的安裝操作也不同,相對(duì)Matlab軟件而言,具有免安裝版本的Lingo軟件使用更為便捷。
在生產(chǎn)、生活實(shí)際中遇到的線性規(guī)劃問(wèn)題,是否能夠找到恰當(dāng)?shù)臄?shù)學(xué)軟件高效地求解相應(yīng)的線性規(guī)劃模型從很大程度上決定了線性規(guī)劃理論是否能得到廣泛應(yīng)用。研究數(shù)學(xué)計(jì)算軟件在求解線性規(guī)劃模型中的多用與妙用,為線性規(guī)劃理論的廣泛應(yīng)用提供了便捷、高效計(jì)算的保障。在理解線性規(guī)劃等最優(yōu)化決策問(wèn)題理論知識(shí)的基礎(chǔ)上,多了解各種數(shù)學(xué)計(jì)算軟件的應(yīng)用優(yōu)勢(shì),可以更巧妙地運(yùn)用好數(shù)學(xué)計(jì)算軟件,方便地解決生產(chǎn)、生活中的線性規(guī)劃等各種最優(yōu)決策問(wèn)題,使得數(shù)學(xué)知識(shí)的應(yīng)用范圍越來(lái)越廣。
[1]黃少玲.探析Excel函數(shù)在數(shù)據(jù)處理中的應(yīng)用[J].電腦編程技巧與維護(hù),2017(5).
[2]汪曉銀,周保平,侯志敏.數(shù)學(xué)軟件與數(shù)學(xué)實(shí)驗(yàn)(第三版)[M].北京:科學(xué)出版社,2015:1,34,36.
[3]司守奎,孫璽菁.數(shù)學(xué)建模算法與應(yīng)用[M].北京:國(guó)防工業(yè)出版社,2016:2,3.
福建教育學(xué)院學(xué)報(bào)2018年1期