LINGO軟件入門(mén)(數(shù)學(xué)建模所需)_第1頁(yè)
LINGO軟件入門(mén)(數(shù)學(xué)建模所需)_第2頁(yè)
LINGO軟件入門(mén)(數(shù)學(xué)建模所需)_第3頁(yè)
LINGO軟件入門(mén)(數(shù)學(xué)建模所需)_第4頁(yè)
LINGO軟件入門(mén)(數(shù)學(xué)建模所需)_第5頁(yè)
已閱讀5頁(yè),還剩145頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、LINGOLINGO軟件篇軟件篇LINGO 9.0 for windowsLINGO 9.0 for windows任興龍任興龍建模時(shí)需要注意的幾個(gè)基本問(wèn)題建模時(shí)需要注意的幾個(gè)基本問(wèn)題 1、盡量使用實(shí)數(shù)優(yōu)化,減少整數(shù)約束和整數(shù)變量盡量使用實(shí)數(shù)優(yōu)化,減少整數(shù)約束和整數(shù)變量2、盡量使用光滑優(yōu)化,減少非光滑約束的個(gè)數(shù)盡量使用光滑優(yōu)化,減少非光滑約束的個(gè)數(shù) 如:盡量少使用絕對(duì)值、符號(hào)函數(shù)、多個(gè)變量求如:盡量少使用絕對(duì)值、符號(hào)函數(shù)、多個(gè)變量求最大最大/最小值、四舍五入、取整函數(shù)等最小值、四舍五入、取整函數(shù)等3、盡量使用線性模型,減少非線性約束和非線性變盡量使用線性模型,減少非線性約束和非線性變量的個(gè)數(shù)量

2、的個(gè)數(shù) (如(如x/y 5 改為改為x5y)4、合理設(shè)定變量上下界,盡可能給出變量初始值合理設(shè)定變量上下界,盡可能給出變量初始值 5、模型中使用的參數(shù)數(shù)量級(jí)要適當(dāng)模型中使用的參數(shù)數(shù)量級(jí)要適當(dāng) (如小于如小于103)否則會(huì)給警告信息,選擇適當(dāng)單位改變相對(duì)尺度否則會(huì)給警告信息,選擇適當(dāng)單位改變相對(duì)尺度scaling LP QP NLP IP 全局優(yōu)化全局優(yōu)化(選選) ILP IQP INLP LINGO軟件的求解過(guò)程 LINDO/LINGO預(yù)處理程序預(yù)處理程序線性優(yōu)化求解程序線性優(yōu)化求解程序非線性優(yōu)化求解程序非線性優(yōu)化求解程序分枝定界管理程序分枝定界管理程序1. 確定常數(shù)確定常數(shù)2. 識(shí)別類型識(shí)別

3、類型1. 單純形算法單純形算法2. 內(nèi)點(diǎn)算法內(nèi)點(diǎn)算法(選選)1、順序線性規(guī)劃法、順序線性規(guī)劃法(SLP) 2、廣義既約梯度法、廣義既約梯度法(GRG) (選選) 3、多點(diǎn)搜索、多點(diǎn)搜索(Multistart) (選選) 又稱障礙法又稱障礙法barrierLINGOLINGO的文件類型的文件類型.LG4:LINGO格式的模型文件,保存了模型窗口中所格式的模型文件,保存了模型窗口中所能夠看到的所有文本和其他對(duì)象及其格式信息;能夠看到的所有文本和其他對(duì)象及其格式信息;.LNG:文本格式的模型文件,不保存模型中的格式信:文本格式的模型文件,不保存模型中的格式信息(如字體、顏色、嵌入對(duì)象等);息(如字體

4、、顏色、嵌入對(duì)象等);.LDT:LINGO數(shù)據(jù)文件;數(shù)據(jù)文件;.LTF:LINGO命令腳本文件;命令腳本文件;.LGR:LINGO報(bào)告文件;報(bào)告文件;.LTX: LINDO格式的模型文件;格式的模型文件;.MPS:示:示MPS(數(shù)學(xué)規(guī)劃系統(tǒng))格式的模型文件。(數(shù)學(xué)規(guī)劃系統(tǒng))格式的模型文件。除除“LG4”文件外,文件外,另外幾種格式的文件另外幾種格式的文件都是普通的文本文件,都是普通的文本文件,可以用任何文本編輯可以用任何文本編輯器打開(kāi)和編輯。器打開(kāi)和編輯。規(guī)劃問(wèn)題的傻瓜輸入規(guī)劃問(wèn)題的傻瓜輸入取整取整, 0,2100.23 . 02779max22222212121xxxxxxtsxxxxxx1

5、11 8 Model:Title:傻瓜輸入法傻瓜輸入法;!小程序可用,大程序不提倡小程序可用,大程序不提倡;st1x1+x2100;optmax=98*x1+277*x2-x12-0.3*x1*x2-2*x22;st2x1”(或(或“=”(或(或“=”)功能相同)功能相同LINGO模型以模型以“MODEL:”開(kāi)始,開(kāi)始,“END”結(jié)束。結(jié)束。目標(biāo)函數(shù)為目標(biāo)函數(shù)為“MAX=”。不需要寫(xiě)。不需要寫(xiě)“ST” 。變量與系數(shù)間有乘號(hào)運(yùn)算符變量與系數(shù)間有乘號(hào)運(yùn)算符“ * ”變量名以字母開(kāi)頭,不能超過(guò)變量名以字母開(kāi)頭,不能超過(guò)32個(gè)字符個(gè)字符變量名不區(qū)分大小寫(xiě)(包括變量名不區(qū)分大小寫(xiě)(包括LINGO中的關(guān)鍵

6、字)中的關(guān)鍵字)語(yǔ)句的順序不重要語(yǔ)句的順序不重要行號(hào)自動(dòng)產(chǎn)生或人為定義。目標(biāo)函數(shù)所在行是第一行,行號(hào)自動(dòng)產(chǎn)生或人為定義。目標(biāo)函數(shù)所在行是第一行,第二行起為約束條件第二行起為約束條件,約束行名字被放約束行名字被放“”中。中。行中注有行中注有“!”符號(hào)的后面部分為注釋。符號(hào)的后面部分為注釋。使用使用LINGOLINGO的一些注意事項(xiàng)的一些注意事項(xiàng)在模型的開(kāi)頭可以用在模型的開(kāi)頭可以用“TITLE” 對(duì)模型命名,對(duì)模型命名,變量可以放在約束右端變量可以放在約束右端每行(目標(biāo),約束,說(shuō)明語(yǔ)句)后增加每行(目標(biāo),約束,說(shuō)明語(yǔ)句)后增加 “;”開(kāi)頭都是函數(shù)調(diào)用;開(kāi)頭都是函數(shù)調(diào)用;上下界限定用上下界限定用BN

7、D,不計(jì)入模型的約束,也不能給出不計(jì)入模型的約束,也不能給出其松緊判斷和敏感性分析其松緊判斷和敏感性分析;缺省假定所有變量非負(fù);可在模型的缺省假定所有變量非負(fù);可在模型的“END”語(yǔ)句后語(yǔ)句后用用“FREE ”將變量的非負(fù)假定取消將變量的非負(fù)假定取消;對(duì)對(duì)0-1變量說(shuō)明:變量說(shuō)明:BIN;對(duì)整型變量說(shuō)明:對(duì)整型變量說(shuō)明:GIN模型由一系列語(yǔ)句組成,適當(dāng)縮進(jìn),增強(qiáng)可讀性模型由一系列語(yǔ)句組成,適當(dāng)縮進(jìn),增強(qiáng)可讀性LINGO狀態(tài)窗口狀態(tài)窗口變量數(shù)量變量數(shù)量TNInTNTNClassObInfeIteTypeObj求解花費(fèi)時(shí)間求解花費(fèi)時(shí)間非零系數(shù)數(shù)量非零系數(shù)數(shù)量?jī)?nèi)存使用數(shù)量?jī)?nèi)存使用數(shù)量約束數(shù)量約束數(shù)量

8、模型類型模型類型當(dāng)前解狀態(tài)當(dāng)前解狀態(tài)當(dāng)前目標(biāo)函數(shù)值當(dāng)前目標(biāo)函數(shù)值擴(kuò)展求解器擴(kuò)展求解器使用的特殊求解程序使用的特殊求解程序到目前的最佳目標(biāo)值到目前的最佳目標(biāo)值特殊求解程序特殊求解程序當(dāng)前運(yùn)行步數(shù)當(dāng)前運(yùn)行步數(shù)有效步數(shù)有效步數(shù)可能顯示可能顯示B-and-BGlobalMultistart可直接求可直接求解的變量解的變量不作為決不作為決策變量。策變量。一般線性規(guī)劃問(wèn)題的一般線性規(guī)劃問(wèn)題的影子價(jià)格與敏感性分析影子價(jià)格與敏感性分析1桶牛奶 3公斤A1 12小時(shí) 8小時(shí) 4公斤A2 或獲利24元/公斤 獲利16元/公斤 50桶牛奶桶牛奶 時(shí)間時(shí)間480小時(shí)小時(shí) 至多加工至多加工100公斤公斤A1 制訂生產(chǎn)計(jì)

9、劃,使每天獲利最大制訂生產(chǎn)計(jì)劃,使每天獲利最大 35元可買(mǎi)到元可買(mǎi)到1桶牛奶,買(mǎi)嗎?若買(mǎi),每天最多買(mǎi)多少桶牛奶,買(mǎi)嗎?若買(mǎi),每天最多買(mǎi)多少? 可聘用臨時(shí)工人,付出的工資最多是每小時(shí)幾元可聘用臨時(shí)工人,付出的工資最多是每小時(shí)幾元? A1的獲利增加到的獲利增加到 30元元/公斤,應(yīng)否改變生產(chǎn)計(jì)劃?公斤,應(yīng)否改變生產(chǎn)計(jì)劃? 每天:每天:加工奶制品的生產(chǎn)計(jì)劃加工奶制品的生產(chǎn)計(jì)劃1桶牛奶 3公斤A1 12小時(shí) 8小時(shí) 4公斤A2 或獲利24元/公斤 獲利16元/公斤 x1桶牛奶生產(chǎn)桶牛奶生產(chǎn)A1 x2桶牛奶生產(chǎn)桶牛奶生產(chǎn)A2 獲利獲利 243x1 獲利獲利 164 x2 原料供應(yīng)原料供應(yīng) 5021 xx

10、勞動(dòng)時(shí)間勞動(dòng)時(shí)間 48081221 xx加工能力加工能力 10031x決策變量決策變量 目標(biāo)函數(shù)目標(biāo)函數(shù) 216472xxzMax每天獲利每天獲利約束條件約束條件非負(fù)約束非負(fù)約束 0,21xx線性線性規(guī)劃規(guī)劃模型模型(LP)時(shí)間時(shí)間480小時(shí)小時(shí) 至多加工至多加工100公斤公斤A1 50桶牛奶桶牛奶 每天每天模型求解模型求解 OBJECTIVE FUNCTION VALUE 1) 3360.000 VARIABLE VALUE REDUCED COST X1 20.000000 0.000000 X2 30.000000 0.000000 ROW SLACK OR SURPLUS DUAL P

11、RICES 2) 0.000000 48.000000 3) 0.000000 2.000000 4) 40.000000 0.000000 NO. ITERATIONS= 220桶牛奶生產(chǎn)桶牛奶生產(chǎn)A1, 30桶生產(chǎn)桶生產(chǎn)A2,利潤(rùn),利潤(rùn)3360元。元。 Max=72*x1+64*x2;x1+x250;12*x1+8*x2480;3*x1100;模型求解模型求解 reduced cost值表值表示當(dāng)該非基變量示當(dāng)該非基變量增加一個(gè)單位時(shí)增加一個(gè)單位時(shí)(其他非基變量(其他非基變量保持不變)目標(biāo)保持不變)目標(biāo)函數(shù)減少的量函數(shù)減少的量(對(duì)對(duì)max型問(wèn)題型問(wèn)題) OBJECTIVE FUNCTION

12、 VALUE 1) 3360.000 VARIABLE VALUE REDUCED COST X1 20.000000 0.000000 X2 30.000000 0.000000 ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 48.000000 3) 0.000000 2.000000 4) 40.000000 0.000000 NO. ITERATIONS= 2也可理解為:也可理解為:為了使該非基變?yōu)榱耸乖摲腔兞孔兂苫兞?,量變成基變量,目?biāo)函數(shù)中對(duì)應(yīng)目標(biāo)函數(shù)中對(duì)應(yīng)系數(shù)應(yīng)增加的量系數(shù)應(yīng)增加的量 OBJECTIVE FUNCTION VALUE

13、1) 3360.000 VARIABLE VALUE REDUCED COST X1 20.000000 0.000000 X2 30.000000 0.000000 ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 48.000000 3) 0.000000 2.000000 4) 40.000000 0.000000原料無(wú)剩余原料無(wú)剩余時(shí)間無(wú)剩余時(shí)間無(wú)剩余加工能力剩余加工能力剩余40三三種種資資源源“資源資源” 剩余為零的約束為緊約束(有效約束)剩余為零的約束為緊約束(有效約束) 結(jié)果解釋結(jié)果解釋 Max=72*x1+64*x2;x1+x250;12

14、*x1+8*x2480;3*x1100; OBJECTIVE FUNCTION VALUE 1) 3360.000 VARIABLE VALUE REDUCED COST X1 20.000000 0.000000 X2 30.000000 0.000000 ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 48.000000 3) 0.000000 2.000000 4) 40.000000 0.000000結(jié)果解釋結(jié)果解釋 最優(yōu)解下最優(yōu)解下“資源資源”增增加加1單位時(shí)單位時(shí)“效益效益”的的增量增量 原料增原料增1單位單位, 利潤(rùn)增利潤(rùn)增48 時(shí)間加時(shí)

15、間加1單位單位, 利潤(rùn)增利潤(rùn)增2 能力增減不影響利潤(rùn)能力增減不影響利潤(rùn)影子價(jià)格影子價(jià)格Shadow price 35元可買(mǎi)到元可買(mǎi)到1桶牛奶,要買(mǎi)嗎?桶牛奶,要買(mǎi)嗎? 35 48, 應(yīng)該買(mǎi)!應(yīng)該買(mǎi)! 聘用臨時(shí)工人付出的工資最多每小時(shí)幾元?聘用臨時(shí)工人付出的工資最多每小時(shí)幾元? 2元!元!對(duì)偶計(jì)算,包括對(duì)偶對(duì)偶計(jì)算,包括對(duì)偶價(jià)格和敏感性分析價(jià)格和敏感性分析LINGOOptionsGeneral Solver(通用求解程序通用求解程序)選項(xiàng)卡選項(xiàng)卡要使用敏感性分析要使用敏感性分析必須要在這選擇必須要在這選擇使用敏感性分析使用敏感性分析RANGES IN WHICH THE BASIS IS UNC

16、HANGED: OBJ COEFFICIENT RANGES VARIABLE CURRENT ALLOWABLE ALLOWABLE COEF INCREASE DECREASE X1 72.000000 24.000000 8.000000 X2 64.000000 8.000000 16.000000 RIGHTHAND SIDE RANGES ROW CURRENT ALLOWABLE ALLOWABLE RHS INCREASE DECREASE 2 50.000000 10.000000 6.666667 3 480.000000 53.333332 80.000000 4 100

17、.000000 INFINITY 40.000000最優(yōu)解不變時(shí)目標(biāo)最優(yōu)解不變時(shí)目標(biāo)系數(shù)允許變化范圍系數(shù)允許變化范圍 x1系數(shù)范圍系數(shù)范圍(64,96) x2系數(shù)范圍系數(shù)范圍(48,72) A1獲利增加到獲利增加到 30元元/千克,應(yīng)否改變生產(chǎn)計(jì)劃千克,應(yīng)否改變生產(chǎn)計(jì)劃 x1系數(shù)由系數(shù)由24 3= 72 增加增加為為30 3= 90,在,在允許范允許范圍內(nèi)圍內(nèi) 不變!不變!(約束條件不變約束條件不變)結(jié)果解釋結(jié)果解釋 LINGORange結(jié)果解釋結(jié)果解釋 RANGES IN WHICH THE BASIS IS UNCHANGED: OBJ COEFFICIENT RANGES VARIABL

18、E CURRENT ALLOWABLE ALLOWABLE COEF INCREASE DECREASE X1 72.000000 24.000000 8.000000 X2 64.000000 8.000000 16.000000 RIGHTHAND SIDE RANGES ROW CURRENT ALLOWABLE ALLOWABLE RHS INCREASE DECREASE 2 50.000000 10.000000 6.666667 3 480.000000 53.333332 80.000000 4 100.000000 INFINITY 40.000000影子價(jià)格有意義影子價(jià)格有

19、意義時(shí)約束右端的允時(shí)約束右端的允許變化范圍許變化范圍 原料最多增加原料最多增加10 時(shí)間最多增加時(shí)間最多增加53 35元可買(mǎi)到元可買(mǎi)到1桶牛奶,每天最多買(mǎi)多少?桶牛奶,每天最多買(mǎi)多少?最多買(mǎi)最多買(mǎi)10桶?桶?(目標(biāo)函數(shù)不變目標(biāo)函數(shù)不變)注意注意: 充分但充分但可能不必要可能不必要LINGO的高級(jí)使用的高級(jí)使用 MODEL:TITLE EX060201;!簡(jiǎn)單的線性規(guī)劃只需要修簡(jiǎn)單的線性規(guī)劃只需要修改一下已有模型的集合段改一下已有模型的集合段和數(shù)據(jù)段和數(shù)據(jù)段;!直接輸入為直接輸入為 min=-5*x1-2*x2;2*x1+x2+x3=8;x1+x4=3;x2+x5=4; (為了避免中止說(shuō)明語(yǔ)句,

20、(為了避免中止說(shuō)明語(yǔ)句,這里用的是文本格式的分這里用的是文本格式的分號(hào),在模型中是作為文本的)號(hào),在模型中是作為文本的)SETS:HANG/1.3/:B;LIE/1.5/:C,X;XISHU(HANG,LIE):A;ENDSETSDATA:A= 2 1 1 0 0 1 0 0 1 0 0 1 0 0 1;C=-5 -2 0 0 0;B=8 3 4;ENDDATAOBJMIN=SUM(LIE:C*X);FOR(HANG(I):YUESHU SUM(LIE(J):A(I,J)*X(J)=B(I);END集合與屬性集合與屬性例例 SAILCO公司需要決定下四個(gè)季度的帆船生產(chǎn)量。下公司需要決定下四個(gè)季

21、度的帆船生產(chǎn)量。下四個(gè)季度的帆船需求量分別是四個(gè)季度的帆船需求量分別是40條,條,60條,條,75條,條,25條,條,這些需求必須按時(shí)滿足。每個(gè)季度正常的生產(chǎn)能力是這些需求必須按時(shí)滿足。每個(gè)季度正常的生產(chǎn)能力是40條帆船,每條船的生產(chǎn)費(fèi)用為條帆船,每條船的生產(chǎn)費(fèi)用為400美元。如果加班生產(chǎn),美元。如果加班生產(chǎn),每條船的生產(chǎn)費(fèi)用為每條船的生產(chǎn)費(fèi)用為450美元。每個(gè)季度末,每條船的美元。每個(gè)季度末,每條船的庫(kù)存費(fèi)用為庫(kù)存費(fèi)用為20美元。假定生產(chǎn)提前期為美元。假定生產(chǎn)提前期為0,初始庫(kù)存為,初始庫(kù)存為10條船。如何安排生產(chǎn)可使總費(fèi)用最???條船。如何安排生產(chǎn)可使總費(fèi)用最??? 分析分析:用用DEM,RP

22、,OP,INV分別表示需求量、正常生分別表示需求量、正常生產(chǎn)的產(chǎn)量、加班生產(chǎn)的產(chǎn)量、庫(kù)存量,則產(chǎn)的產(chǎn)量、加班生產(chǎn)的產(chǎn)量、庫(kù)存量,則DEM,RP,OP,INV對(duì)每個(gè)季度都應(yīng)該有一個(gè)對(duì)應(yīng)的值,對(duì)每個(gè)季度都應(yīng)該有一個(gè)對(duì)應(yīng)的值,也就說(shuō)他們都應(yīng)該是一個(gè)由也就說(shuō)他們都應(yīng)該是一個(gè)由4個(gè)元素組成的數(shù)組,其中個(gè)元素組成的數(shù)組,其中DEM是已知的,而是已知的,而RP,OP,INV是未知數(shù)。是未知數(shù)。 集合元素及集合的屬性確定的所有變量集合元素及集合的屬性確定的所有變量集合QUARTERS的元素1234定義在集合QUARTERS上的屬性DEM DEM(1) DEM(2) DEM(3) DEM(4)RPRP(1)RP

23、(2)RP(3)RP(4)OPOP(1)OP(2)OP(3)OP(4)INVINV(1)INV(2)INV(3)INV(4) MODEL:!集合段:定義集合集合段:定義集合SET,元素,元素member及其屬性及其屬性attribute; SETS: QUARTERS/1,2,3,4/:DEM,RP,OP,INV; ENDSETS!目標(biāo)與約束段:沒(méi)有開(kāi)始和結(jié)束標(biāo)記,順序無(wú)關(guān);目標(biāo)與約束段:沒(méi)有開(kāi)始和結(jié)束標(biāo)記,順序無(wú)關(guān); MIN=SUM(QUARTERS:400*RP+450*OP+20*INV); FOR(QUARTERS(I):RP(I)1(greater than)LINGOGenerat

24、eDisply Model(Ctrl+G)自動(dòng)生成行號(hào)自動(dòng)生成行號(hào)可得展開(kāi)式可得展開(kāi)式想求解時(shí)賦值可在數(shù)據(jù)段用語(yǔ)句想求解時(shí)賦值可在數(shù)據(jù)段用語(yǔ)句 “A=?;”例例0303-1例例 建筑工地的位置建筑工地的位置(用平面坐標(biāo)用平面坐標(biāo)a, b表示,距離單位:表示,距離單位:公里公里)及水泥日用量及水泥日用量d(噸噸)下表給出。有兩個(gè)臨時(shí)料場(chǎng)位下表給出。有兩個(gè)臨時(shí)料場(chǎng)位于于P (5,1), Q (2, 7),日儲(chǔ)量各有日儲(chǔ)量各有20噸。從噸。從A, B兩料場(chǎng)分別兩料場(chǎng)分別向各工地運(yùn)送多少噸水泥,使總的噸公里數(shù)最小。兩個(gè)向各工地運(yùn)送多少噸水泥,使總的噸公里數(shù)最小。兩個(gè)新的料場(chǎng)應(yīng)建在何處,節(jié)省的噸公里數(shù)有

25、多大?新的料場(chǎng)應(yīng)建在何處,節(jié)省的噸公里數(shù)有多大?a1.258.750.55.7537.25b1.250.754.7556.57.75d3547611基本集合與派生集合基本集合與派生集合建立模型建立模型記工地的位置為記工地的位置為 ,水泥日用量為,水泥日用量為 ;料場(chǎng);料場(chǎng)位置為位置為 ,日儲(chǔ)量為,日儲(chǔ)量為 ;從料場(chǎng);從料場(chǎng) 向工地向工地 的的運(yùn)送量為運(yùn)送量為 。 ),(iiba6, 1,idi),(jjyx2 , 1,jejjiijc 2622112161MIN1s.t.,1,2,62,1,23ijjijijiijijijjifcxayacdicej使用現(xiàn)有臨時(shí)料場(chǎng)時(shí),決策變量只有使用現(xiàn)有臨時(shí)

26、料場(chǎng)時(shí),決策變量只有 (非負(fù)),所以這是(非負(fù)),所以這是LP模型;當(dāng)為新模型;當(dāng)為新建料場(chǎng)選址時(shí)決策變量為建料場(chǎng)選址時(shí)決策變量為 和和 ,由于目標(biāo)函數(shù),由于目標(biāo)函數(shù) 對(duì)對(duì) 是非線性的,是非線性的,所以在新建料場(chǎng)時(shí)是所以在新建料場(chǎng)時(shí)是NLP模型。先解模型。先解NLP模型,而把現(xiàn)有臨時(shí)料場(chǎng)的位置作模型,而把現(xiàn)有臨時(shí)料場(chǎng)的位置作為初始解告訴為初始解告訴LINGO。 ijcijcjjyx ,fjjyx ,本例中集合的概念本例中集合的概念利用集合的概念,可以定義需求點(diǎn)利用集合的概念,可以定義需求點(diǎn)DEMAND和供應(yīng)點(diǎn)和供應(yīng)點(diǎn)SUPPLY兩個(gè)集合,分別有兩個(gè)集合,分別有6個(gè)和個(gè)和2個(gè)元素個(gè)元素(下標(biāo)下標(biāo)

27、)。但決。但決策變量策變量(運(yùn)送量運(yùn)送量) 與集合與集合DEMAND和集合和集合SUPPLY都都有關(guān)系的。該如何定義這樣的屬性?有關(guān)系的。該如何定義這樣的屬性?ijc集合的屬性相當(dāng)于以集合的元素為下標(biāo)的數(shù)組。這里的集合的屬性相當(dāng)于以集合的元素為下標(biāo)的數(shù)組。這里的 相當(dāng)于二維數(shù)組。它的兩個(gè)下標(biāo)分別來(lái)自集合相當(dāng)于二維數(shù)組。它的兩個(gè)下標(biāo)分別來(lái)自集合DEMAND和和SUPPLY,因此可以定義一個(gè)由二元對(duì)組,因此可以定義一個(gè)由二元對(duì)組成的新的集合,然后將成的新的集合,然后將 定義成這個(gè)新集合的屬性。定義成這個(gè)新集合的屬性。ijcijcMODEL:Title Location Problem;sets:

28、demand/1.6/:a,b,d; supply/1.2/:x,y,e; link(demand,supply):c;endsetsdata:!locations for the demand(需求點(diǎn)的位置需求點(diǎn)的位置);a=1.25,8.75,0.5,5.75,3,7.25;b=1.25,0.75,4.75,5,6.5,7.75;!quantities of the demand and supply(供需量)(供需量);d=3,5,4,7,6,11; e=20,20;enddata基本集合基本集合primary set與與派生集合派生集合derived set(定義多維數(shù)組)(定義多維數(shù)

29、組)!初始段:對(duì)集合屬性定義初值(迭代算法的迭代初值)初始段:對(duì)集合屬性定義初值(迭代算法的迭代初值);init:!initial locations for the supply(初始點(diǎn))(初始點(diǎn));x,y=5,1,2,7;endinit!Objective function(目標(biāo))(目標(biāo));OBJ min=sum(link(i,j): c(i,j)*(x(j)-a(i)2+(y(j)-b(i)2)(1/2) );!demand constraints(需求約束)(需求約束);for(demand(i):DEMAND_CON sum(supply(j):c(i,j) =d(i););!sup

30、ply constraints(供應(yīng)約束)(供應(yīng)約束);for(supply(i):SUPPLY_CON sum(demand(j):c(j,i) =e(i); );for(supply: bnd(0.5,X,8.75); bnd(0.75,Y,7.75); );ENDLINGO對(duì)數(shù)值順序按列賦值,即:對(duì)數(shù)值順序按列賦值,即:x=5,2;y=1,7;標(biāo)號(hào)自動(dòng)在后加下標(biāo)標(biāo)號(hào)自動(dòng)在后加下標(biāo) *_1 , _2比比f(wàn)ree(x);free(y);要好,可減少計(jì)算工作量要好,可減少計(jì)算工作量激活全局最優(yōu)解:激活全局最優(yōu)解:LINGOOptionsGlobal SolverUse Global Solve

31、r集合段(集合段(SETS ENDSETS)數(shù)據(jù)段(數(shù)據(jù)段(DATA ENDDATA)初始段(初始段(INIT ENDINIT) 目標(biāo)與目標(biāo)與約束段約束段 局部最優(yōu):局部最優(yōu):89.8835(噸公里噸公里 ) LP:移到數(shù)據(jù)段:移到數(shù)據(jù)段LINGO模型的構(gòu)成模型的構(gòu)成(5)計(jì)算段計(jì)算段CALC:T_DEM=SUN(QUARTERS:DEM);!總需求;總需求;A_DEM=T_DEM/SIZE(QUARTERS);!平均需求;平均需求;ENDCALC在數(shù)據(jù)段輸入完成之后在正式求解模型之前對(duì)原在數(shù)據(jù)段輸入完成之后在正式求解模型之前對(duì)原始數(shù)據(jù)進(jìn)行處理,語(yǔ)句是始數(shù)據(jù)進(jìn)行處理,語(yǔ)句是順序順序執(zhí)行的,不能

32、更換執(zhí)行的,不能更換順序,只能直接使用順序,只能直接使用賦值語(yǔ)句賦值語(yǔ)句,不能包含需要經(jīng),不能包含需要經(jīng)過(guò)解方程或經(jīng)過(guò)求解優(yōu)化問(wèn)題以后才能決定的變過(guò)解方程或經(jīng)過(guò)求解優(yōu)化問(wèn)題以后才能決定的變量。量。 包含了兩個(gè)基本集合構(gòu)成的所有二元有序?qū)Φ呐缮藘蓚€(gè)基本集合構(gòu)成的所有二元有序?qū)Φ呐缮戏Q為集合稱為稠密集合稠密集合(簡(jiǎn)稱稠集簡(jiǎn)稱稠集)。有時(shí)候,在實(shí)際問(wèn)題中,。有時(shí)候,在實(shí)際問(wèn)題中,一些屬性一些屬性(數(shù)組數(shù)組) 只在笛卡兒積的一個(gè)真子集合上定義,只在笛卡兒積的一個(gè)真子集合上定義,這種派生集合稱為這種派生集合稱為稀疏集合稀疏集合(簡(jiǎn)稱疏集簡(jiǎn)稱疏集)。稠密集合與稀疏集合稠密集合與稀疏集合最短路問(wèn)題

33、最短路問(wèn)題例例 (最短路問(wèn)題最短路問(wèn)題) 在縱橫交錯(cuò)的公路網(wǎng)中,貨車司機(jī)希望在縱橫交錯(cuò)的公路網(wǎng)中,貨車司機(jī)希望找到一條從一個(gè)城市到另一個(gè)城市的最短路找到一條從一個(gè)城市到另一個(gè)城市的最短路. 下圖表示的下圖表示的是公路網(wǎng)是公路網(wǎng), 節(jié)點(diǎn)表示貨車可以??康某鞘泄?jié)點(diǎn)表示貨車可以停靠的城市,弧上的權(quán)表示弧上的權(quán)表示兩個(gè)城市之間的距離兩個(gè)城市之間的距離(百公里百公里). 那么那么,貨車從城市貨車從城市S出發(fā)到出發(fā)到達(dá)城市達(dá)城市T,如何選擇行駛路線如何選擇行駛路線,使所經(jīng)過(guò)的路程最短使所經(jīng)過(guò)的路程最短?STA1 A2 A3 B1 B2 C1 C2 633665874678956分析分析 STA1 A2 A

34、3 B1 B2 C1 C2 633665874678956此例中可把從此例中可把從S到到T的行駛過(guò)程分成的行駛過(guò)程分成4個(gè)階段個(gè)階段,即即 SAi (i=1,2或或3), Ai Bj(j=1或或2), Bj Ck(k=1或或2), Ck T. 記記d(Y,X)為城市為城市Y與城市與城市X之間的直接距離之間的直接距離(若這兩個(gè)城市若這兩個(gè)城市之間沒(méi)有道路直接相連,則可以認(rèn)為直接距離為之間沒(méi)有道路直接相連,則可以認(rèn)為直接距離為),用,用L(X)表示城市表示城市S到城市到城市X的最優(yōu)行駛路線的路長(zhǎng)的最優(yōu)行駛路線的路長(zhǎng): 0;1min,.2YXL SL XL Yd Y XXS本例的計(jì)算本例的計(jì)算 12

35、31123321233112221221216,3,3;min6,8,7107;min5,6,474;min6,8158;min7,9169;min5,6205.L AL AL AL BL AL AL AL AL BL AL AL AL AL CL BL BL BL CL BL BL BL TL CL CL CSTA1 A2 A3 B1 B2 C1 C2 633665874678956所以, 從S到T的最優(yōu)行駛路線的路長(zhǎng)為20. 進(jìn)一步分析以上求解過(guò)程, 可以得到從S到T的最優(yōu)行駛路線為S A3 B2 C1 T.這種計(jì)算方法在數(shù)學(xué)上稱為動(dòng)態(tài)規(guī)劃(Dynamic Programming) mod

36、el:SETS: CITIES /S,A1,A2,A3,B1,B2,C1,C2,T/: L; !屬性屬性L(i)表示城市表示城市S S到城市到城市i的最優(yōu)行駛路線的路長(zhǎng)的最優(yōu)行駛路線的路長(zhǎng); ; ROADS(CITIES, CITIES)/ !派生集合派生集合ROADS表示的是網(wǎng)絡(luò)中的道路(?。┍硎镜氖蔷W(wǎng)絡(luò)中的道路(?。? S,A1 S,A2 S,A3 !由于并非所有城市間都有道路直接連接,所以將弧具體列出由于并非所有城市間都有道路直接連接,所以將弧具體列出; A1,B1 A1,B2 A2,B1 A2,B2 A3,B1 A3,B2 B1,C1 B1,C2 B2,C1 B2,C2 C1,T C2

37、,T/: D; !屬性屬性D( i, j) 是城市是城市i到到j(luò)的直接距離(已知)的直接距離(已知);ENDSETSDATA: D = 6 3 3 6 5 8 6 7 4 6 7 8 9 5 6; L= 0, , , , , , , , ; !因?yàn)橐驗(yàn)長(zhǎng)(S)=0;ENDDATA FOR( CITIES( i)|i#GT#index(S): !這行中這行中index(S)index(S)可以直接寫(xiě)成可以直接寫(xiě)成11; L( i) = MIN( ROADS( j, i): L( j) + D( j, i); ); !這就是前面寫(xiě)出的最短路關(guān)系式這就是前面寫(xiě)出的最短路關(guān)系式;endend定義稀疏集

38、合方法:枚舉法定義稀疏集合方法:枚舉法CITIES(i)中的)中的 i 指元素在集合中的位置順序,指元素在集合中的位置順序, index(S)即即:index(CITIES,S),S在在CITIES中的索引值。中的索引值。沒(méi)有目標(biāo)函數(shù)是允許的沒(méi)有目標(biāo)函數(shù)是允許的 0;1min,.2YXL SL XL Yd Y XXS例例 某班某班8名同學(xué)準(zhǔn)備分成名同學(xué)準(zhǔn)備分成4個(gè)調(diào)查隊(duì)個(gè)調(diào)查隊(duì)(每隊(duì)兩人每隊(duì)兩人)前往前往4個(gè)個(gè)地區(qū)進(jìn)行社會(huì)調(diào)查。這地區(qū)進(jìn)行社會(huì)調(diào)查。這8名同學(xué)兩兩之間組隊(duì)的效率如名同學(xué)兩兩之間組隊(duì)的效率如下表所示下表所示(由于對(duì)稱性,只列出了嚴(yán)格上三角部分由于對(duì)稱性,只列出了嚴(yán)格上三角部分),問(wèn)

39、,問(wèn)如何組隊(duì)可以使總效率最高?如何組隊(duì)可以使總效率最高?學(xué)生S1S2S3S4S5S6S7S8S1-9342156S2-173521S3-44292S4-1552S5-876S6-23S7-4 元素過(guò)濾法元素過(guò)濾法組隊(duì)問(wèn)題組隊(duì)問(wèn)題分析分析 這是一個(gè)匹配(MATCHING)問(wèn)題。把上表的效率矩陣記為BENEFIT(由于對(duì)稱性,這個(gè)矩陣只有嚴(yán)格上三角部分共28個(gè)數(shù)取非零值)。 用MATCH(Si,Sj)=1表示同學(xué)Si,Sj組成一隊(duì) ,而MATCH(Si,Sj)=0表示Si,Sj不組隊(duì)。由于對(duì)稱性,只需考慮ij共28個(gè)0-1變量(而不是全部32個(gè)變量)。 顯然,目標(biāo)函數(shù)正好是BENEFIT(Si,S

40、j)*MATCH(Si,Sj)對(duì)I,j之和。 約束條件是每個(gè)同學(xué)只能(而且必須在)某一組,即對(duì)于任意i有:只要屬性MATCH的某個(gè)下標(biāo)為i就加起來(lái),此和應(yīng)該等于1。 由上面的分析,因此,完整的數(shù)學(xué)模型如下(顯然,這是一個(gè)0-1線性規(guī)劃): 31.0)(21,2,3,4,I 1,)(. .1 ),(),(II,或J,KMATCHJ,KMATCHtsJI*MATCHJIBENEFITMinKJJIMODEL:SETS: STUDENTS /S1.S8/; PAIRS( STUDENTS, STUDENTS) | &2 #GT# &1: BENEFIT, MATCH;ENDSETSD

41、ATA: BENEFIT = 9 3 4 2 1 5 6 1 7 3 5 2 1 4 4 2 9 2 1 5 5 2 8 7 6 2 3 4;ENDDATAobjective MAX = SUM( PAIRS( I, J): BENEFIT( I, J) * MATCH( I, J);FOR(STUDENTS( I): constraints SUM( PAIRS( J, K) | J #EQ# I #OR# K #EQ# I: MATCH( J, K) =1);FOR(PAIRS( I, J): BIN( MATCH( I, J);END第二個(gè)父集合的索引值大于第一個(gè)父集合的索引值第二個(gè)父集

42、合的索引值大于第一個(gè)父集合的索引值LINGOSolution經(jīng)驗(yàn)介紹經(jīng)驗(yàn)介紹很多時(shí)候是程序?qū)懗鰜?lái)了,但是有很多錯(cuò)誤,怎么很多時(shí)候是程序?qū)懗鰜?lái)了,但是有很多錯(cuò)誤,怎么進(jìn)行程序的進(jìn)行程序的調(diào)試調(diào)試呢?可按下面步驟進(jìn)行:呢?可按下面步驟進(jìn)行:1.直接點(diǎn)擊運(yùn)行,如果出錯(cuò)會(huì)彈出錯(cuò)誤提示,根據(jù)提直接點(diǎn)擊運(yùn)行,如果出錯(cuò)會(huì)彈出錯(cuò)誤提示,根據(jù)提示做相應(yīng)的修改;示做相應(yīng)的修改;2.可以用可以用“!”把約束變成說(shuō)明語(yǔ)句,而把這條語(yǔ)句把約束變成說(shuō)明語(yǔ)句,而把這條語(yǔ)句屏蔽掉,縮小尋找出錯(cuò)的范圍;屏蔽掉,縮小尋找出錯(cuò)的范圍;3.可以邊寫(xiě)程序邊運(yùn)行,保證每行書(shū)寫(xiě)都是正確的程可以邊寫(xiě)程序邊運(yùn)行,保證每行書(shū)寫(xiě)都是正確的程序;序

43、;一般容易一般容易出錯(cuò)出錯(cuò)的地方有:的地方有:定義了多個(gè)長(zhǎng)度一樣的集合,而在使用中區(qū)分不明確;定義了多個(gè)長(zhǎng)度一樣的集合,而在使用中區(qū)分不明確;定義了同名的屬性;定義了同名的屬性; 掉了或多了括號(hào);掉了或多了括號(hào);分號(hào)不是英文半角輸入;使用的字母沒(méi)有定義;分號(hào)不是英文半角輸入;使用的字母沒(méi)有定義;循環(huán)語(yǔ)句中元素下標(biāo)顛倒或者不明;循環(huán)語(yǔ)句中元素下標(biāo)顛倒或者不明;約束錯(cuò)誤變成不可行或無(wú)界;約束錯(cuò)誤變成不可行或無(wú)界;關(guān)系運(yùn)算符(如關(guān)系運(yùn)算符(如“=”)使用邏輯運(yùn)算符(如)使用邏輯運(yùn)算符(如“#EQ#”););使用了非使用了非LINGO語(yǔ)言的輸入;語(yǔ)言的輸入;(比如比如%引導(dǎo)說(shuō)明語(yǔ)句)引導(dǎo)說(shuō)明語(yǔ)句)函數(shù)

44、調(diào)用錯(cuò)誤;函數(shù)調(diào)用錯(cuò)誤;函數(shù)的括號(hào)寫(xiě)錯(cuò)了地方等函數(shù)的括號(hào)寫(xiě)錯(cuò)了地方等.集合的不同類型及其關(guān)系集合的不同類型及其關(guān)系 集合集合派生集合派生集合稀疏集合稀疏集合稠密集合稠密集合基本集合基本集合元素列表法元素列表法 元素過(guò)濾法元素過(guò)濾法 直接列舉法直接列舉法 隱式列舉法隱式列舉法 集合的使用小結(jié)集合的使用小結(jié)基本集合的定義語(yǔ)法基本集合的定義語(yǔ)法 基本集合的定義格式為基本集合的定義格式為(方括號(hào)方括號(hào)“ ”中的內(nèi)容是可選項(xiàng)中的內(nèi)容是可選項(xiàng), 可以沒(méi)可以沒(méi)有有):setname /member_list/ : attribute_list;其中其中setname為定義的集合名,為定義的集合名,membe

45、r_list為元素列表,為元素列表,attribute_list為屬性列表。元素列表可以采用顯式列舉法為屬性列表。元素列表可以采用顯式列舉法(即直接即直接將所有元素全部列出將所有元素全部列出,元素之間用逗號(hào)或空格分開(kāi)元素之間用逗號(hào)或空格分開(kāi)),也可以采用隱也可以采用隱式列舉法。隱式列舉法可以有幾種不同格式,式列舉法。隱式列舉法可以有幾種不同格式,類型類型隱式列舉格式隱式列舉格式示例示例示例集合表示的元素示例集合表示的元素?cái)?shù)字型數(shù)字型1.n1.51, 2, 3, 4, 5字符字符-數(shù)字型數(shù)字型stringM.stringNCar101.car208Car101, car102, , car208

46、日期(星期)型日期(星期)型dayM.dayNMON.FRIMON, TUE, WED, THU, FRI月份型月份型monthM.monthNOCT.JANOCT, NOV, DEC, JAN年份年份-月份型月份型monthYearM.monthYearNOCT2001.JAN2002OCT2001, NOV2001, DEC2001, JAN2002 元素列表和屬性列表都是可選的。 當(dāng)屬性列表不在集合定義中出現(xiàn)時(shí),這樣的集合往往只是為了將來(lái)在程序中作為一個(gè)循環(huán)變量來(lái)使用,或者作為構(gòu)造更復(fù)雜的派生集合的父集合使用(匹配問(wèn)題中的集合STUDENTS沒(méi)有屬性列表)。 而當(dāng)元素列表不在基本集合的定

47、義中出現(xiàn)時(shí),則必須在程序的數(shù)據(jù)段以賦值語(yǔ)句的方式直接給出元素列表。 例如,前例中SAILCO公司決定四個(gè)季度的帆船生產(chǎn)量模型的集合段和數(shù)據(jù)段可以分別改為:SETS: QUARTERS:DEM,RP,OP,INV; !注意沒(méi)有給出集合的元素列表;ENDSETSDATA: QUARTERS DEM=1 40 2 60 3 75 4 25; !注意LINGO按列賦值的特點(diǎn);ENDDATA基本集合的定義語(yǔ)法基本集合的定義語(yǔ)法 帆船生產(chǎn)量模型的源程序匹配問(wèn)題的源程序派生集合的定義語(yǔ)法派生集合的定義語(yǔ)法 派生集合的定義格式為(方括號(hào)“ ”中的內(nèi)容是可選項(xiàng), 可以沒(méi)有): setname(parent_se

48、t_list) /member_list/ : attribute_list;與基本集合的定義相比較多了一個(gè)parent_set_list(父集合列表)。父集合列表中的集合(如 set1,set2,等)稱為派生集合setname的父集合,它們本身也可以是派生集合。當(dāng)元素列表(member_list)不在集合定義中出現(xiàn)時(shí),還可以在程序的數(shù)據(jù)段以賦值語(yǔ)句的方式給出元素列表;若在程序的數(shù)據(jù)段也不以賦值語(yǔ)句的方式給出元素列表,則認(rèn)為定義的是稠密集合,即父集合中所有元素的有序組合(笛卡兒積)都是setname的元素。當(dāng)元素列表在集合定義中出現(xiàn)時(shí),又有“元素列表法”(直接列出元素)和“元素過(guò)濾法”(利用過(guò)

49、濾條件)兩種不同方式。 當(dāng)屬性列表不在集合定義中出現(xiàn)時(shí),這樣的集合往當(dāng)屬性列表不在集合定義中出現(xiàn)時(shí),這樣的集合往往只是為了將來(lái)在程序中作為一個(gè)循環(huán)變量來(lái)使用,或往只是為了將來(lái)在程序中作為一個(gè)循環(huán)變量來(lái)使用,或者構(gòu)造更復(fù)雜的派生集合的父集合使用。者構(gòu)造更復(fù)雜的派生集合的父集合使用。 當(dāng)元素列表不再基本集合的定義中出現(xiàn)時(shí),則必須當(dāng)元素列表不再基本集合的定義中出現(xiàn)時(shí),則必須在程序的數(shù)據(jù)段以賦值語(yǔ)句的方式直接給出元素列表。在程序的數(shù)據(jù)段以賦值語(yǔ)句的方式直接給出元素列表。SETS:QUARERS:DEM,RP,OP,INV;ENDSETSDATA:QUARTERS DEM=1 40 2 60 3 75

50、4 25;ENDDATA算術(shù)運(yùn)算符算術(shù)運(yùn)算符加、減、乘、除、乘方等數(shù)學(xué)運(yùn)算加、減、乘、除、乘方等數(shù)學(xué)運(yùn)算(即數(shù)與數(shù)之即數(shù)與數(shù)之間的運(yùn)算,運(yùn)算結(jié)果也是數(shù)間的運(yùn)算,運(yùn)算結(jié)果也是數(shù))。LINGO中的算術(shù)運(yùn)算符有以下中的算術(shù)運(yùn)算符有以下5種:種:+(加法),(加法),(減法或負(fù)號(hào)),(減法或負(fù)號(hào)),*(乘法),(乘法),/(除法),(除法), (求冪求冪)。運(yùn)算符及其優(yōu)先級(jí)運(yùn)算符及其優(yōu)先級(jí)邏輯運(yùn)算符邏輯運(yùn)算符運(yùn)算結(jié)果只有運(yùn)算結(jié)果只有“真真”(TRUE)和和“假假”(FALSE)兩個(gè)值兩個(gè)值(稱為稱為“邏輯值邏輯值”),LINGO中用數(shù)字中用數(shù)字1代表代表TRUE,其他值,其他值(典型典型的值是的值是0

51、)都是都是FALSE。在在LINGO中,邏輯運(yùn)算中,邏輯運(yùn)算(表達(dá)式表達(dá)式)通常作為過(guò)濾條件使用通常作為過(guò)濾條件使用,邏邏輯運(yùn)算符有輯運(yùn)算符有9種,可以分成兩類:種,可以分成兩類:#AND#(與與),#OR#(或或),#NOT#(非非):邏輯值之間的運(yùn)算,它邏輯值之間的運(yùn)算,它們操作的對(duì)象本身已經(jīng)是邏輯值或邏輯表達(dá)式,計(jì)算結(jié)果們操作的對(duì)象本身已經(jīng)是邏輯值或邏輯表達(dá)式,計(jì)算結(jié)果也是邏輯值。也是邏輯值。#EQ#(等于等于),#NE#(不等于不等于),#GT#(大于大于),#GE#(大于等大于等于于),#LT#(小于小于),#LE#(小于等于小于等于):是:是“數(shù)與數(shù)之間數(shù)與數(shù)之間”的比較的比較,也

52、就是它們操作的對(duì)象本身必須是兩個(gè)數(shù)也就是它們操作的對(duì)象本身必須是兩個(gè)數(shù), 計(jì)算得到的結(jié)果計(jì)算得到的結(jié)果是邏輯值。是邏輯值。關(guān)系運(yùn)算符關(guān)系運(yùn)算符表示是表示是“數(shù)與數(shù)之間數(shù)與數(shù)之間”的大小關(guān)系,在的大小關(guān)系,在LINGO中用來(lái)表中用來(lái)表示優(yōu)化模型的約束條件。示優(yōu)化模型的約束條件。LINGO中關(guān)系運(yùn)算符有中關(guān)系運(yùn)算符有3種:種:(即即(即即=,大于等于,大于等于)(在優(yōu)化模型中在優(yōu)化模型中約束一般沒(méi)有嚴(yán)格小于、嚴(yán)格大于關(guān)系約束一般沒(méi)有嚴(yán)格小于、嚴(yán)格大于關(guān)系)運(yùn)算符的優(yōu)先級(jí)運(yùn)算符的優(yōu)先級(jí) 優(yōu)先級(jí)優(yōu)先級(jí)運(yùn)算符運(yùn)算符最高最高#NOT# (負(fù)號(hào))(負(fù)號(hào))* /+ (減法)(減法)#EQ# #NE# #GT#

53、 #GE# #LT# #LE# #AND# #OR#最低最低(=)三類運(yùn)算符:三類運(yùn)算符: 算術(shù)運(yùn)算符算術(shù)運(yùn)算符 邏輯運(yùn)算符邏輯運(yùn)算符 關(guān)系運(yùn)算符關(guān)系運(yùn)算符在LINGO中建立優(yōu)化模型時(shí)可以引用大量的內(nèi)部函數(shù),這些函數(shù)以” 打頭。LINGO中包括相當(dāng)豐富的數(shù)學(xué)函數(shù),這些函數(shù)的用法非常簡(jiǎn)單,下面一一列出。ABS(X):絕對(duì)值函數(shù),返回X的絕對(duì)值。COS(X):余弦函數(shù),返回X的余弦值(X的單位是弧度)。EXP(X):指數(shù)函數(shù),返回eXFLOOR(X):取整函數(shù),返回X的整數(shù)部分(向最靠近0的方向取整)。LGM(X) :返回X的伽瑪(gamma)函數(shù)的自然對(duì)數(shù)值(當(dāng)X為整數(shù)時(shí)LGM(X) = LOG

54、(X-1)??;當(dāng)X不為整數(shù)時(shí),采用線性插值得到結(jié)果)。LOG(X):自然對(duì)數(shù)函數(shù),返回X的自然對(duì)數(shù)值。的值(其中e=2.718281.)?;镜臄?shù)學(xué)函數(shù)基本的數(shù)學(xué)函數(shù)基本的數(shù)學(xué)函數(shù)基本的數(shù)學(xué)函數(shù) MOD(X,Y):模函數(shù),返回X對(duì)Y取模的結(jié)果,即X除以Y的余數(shù),這里X和Y應(yīng)該是整數(shù)。POW(X,Y):指數(shù)函數(shù),返回XY的值。SIGN(X):符號(hào)函數(shù),返回X的符號(hào)值(X = 0時(shí)返回+1)。SIN(X):正弦函數(shù),返回X的正弦值(X的單位是弧度)。SMAX(list):最大值函數(shù),返回一列數(shù)(list)的最大值。SMIN(list):最小值函數(shù),返回一列數(shù)(list)的最小值。SQR(X):平方

55、函數(shù),返回X的平方(即X*X)的值。SQRT(X):開(kāi)平方函數(shù),返回X的正的平方根的值。TAN(X):正切函數(shù),返回X的正切值(X的單位是弧度)。集合循環(huán)函數(shù)集合循環(huán)函數(shù) 集合上的元素(下標(biāo))進(jìn)行循環(huán)操作的函數(shù), 一般用法如下:function(setname ( set_index_list) | condition : expression_list);其中:function 集合函數(shù)名,FOR、MAX、MIN、PROD、SUM之一; Setname 集合名;set_index_list 集合索引列表(不需使用索引時(shí)可以省略);Condition 用邏輯表達(dá)式描述的過(guò)濾條件(通常含有索引,

56、無(wú)條件時(shí)可以省略);expression_list 一個(gè)表達(dá)式(對(duì)FOR函數(shù),可以是一組表達(dá)式。五個(gè)集合函數(shù)名的含義:FOR(集合元素的循環(huán)函數(shù)): 對(duì)集合setname的每個(gè)元素獨(dú)立地生成表達(dá)式,表達(dá)式由expression_list描述(通常是優(yōu)化問(wèn)題的約束)。MAX(集合屬性的最大值函數(shù)):返回集合setname上的表達(dá)式的最大值。MIN(集合屬性的最小值函數(shù)):返回集合setname上的表達(dá)式的最小值。PROD(集合屬性的乘積函數(shù)): 返回集合setname上的表達(dá)式的積。SUM(集合屬性的求和函數(shù)):返回集合setname上的表達(dá)式的和。集合循環(huán)函數(shù)集合循環(huán)函數(shù) INDEX( set

57、_name, primitive_set_element) 給出元素primitive_set_element在集合set_name中的索引值(即按定義集合時(shí)元素出現(xiàn)順序的位置編號(hào))。省略set_name,LINGO按模型中定義的集合順序找到第一個(gè)含有該元素的集合,并返回索引值。如果沒(méi)有找到該元素,則出錯(cuò)。 注: Set_name的索引值是正整數(shù)且只能位于1和元素個(gè)數(shù)之間。例:定義一個(gè)女孩姓名集合(GIRLS)和男孩姓名集合(BOYS) :SETS: GIRLS /DEBBIE, SUE, ALICE/; BOYS /BOB, JOE, SUE, FRED/;ENDSETS 都有SUE, GI

58、RLS在BOYS前定義,調(diào)用INDEX(SUE)將返2,相當(dāng)于INDEX(GIRLS,SUE) 。要找男孩中名為SUE的小孩的索引,應(yīng)該使用INDEX(BOYS, SUE),返3。集合操作函數(shù)集合操作函數(shù) 集合操作函數(shù)集合操作函數(shù) IN( set_name, primitive_index_1 , primitive_index_2 .) 判斷一個(gè)集合中是否含有某個(gè)索引值。如果集合set_name中包含由索引primitive_index_1 , primitive_index_2 .所對(duì)應(yīng)元素,則返回1(邏輯值“真”),否則返回0(邏輯值“假”)。索引用“&1”、“&2”或I

59、NDEX函數(shù)等形式給出,這里“&1”表示對(duì)應(yīng)于第1個(gè)父集合的元素的索引值,“&2”表示對(duì)應(yīng)于第2個(gè)父集合的元素的索引值。 例:定義一個(gè)集合STUDENTS(基本集合),派生出集合PASSED和FAILED,定義: SETS: STUDENTS / ZHAO, QIAN, SUN, LI/:; PASSED( STUDENTS) /QIAN,SUN/:; FAILED( STUDENTS) | #NOT# IN( PASSED, &1):; ENDSETS 如果集合C是由集合A,B派生的,例如: SETS: A / 1.3/:; B / X Y Z/:; C( A, B)

60、 / 1,X 1,Z 2,Y 3,X/:; ENDSETS 判斷C中是否包含元素(2,Y),則可以利用以下語(yǔ)句: X = IN( C, INDEX( A, 2), INDEX( B, Y);對(duì)本例,結(jié)果是X=1(真)。 注:X既是集合B的元素,又對(duì)X賦值1,在LINGO中這種表達(dá)是允許的,因?yàn)榍罢呤羌系脑?,后者是變量,邏輯上沒(méi)有關(guān)系(除了同名外),所以不會(huì)出現(xiàn)混淆。集合操作函數(shù)集合操作函數(shù) IN( set_name, primitive_index_1 , primitive_index_2 .)WRAP(I,N) 此函數(shù)對(duì)此函數(shù)對(duì)N1無(wú)定義無(wú)定義 當(dāng)當(dāng)I位于區(qū)間位于區(qū)間1, N內(nèi)時(shí)直接返回內(nèi)時(shí)直接返回I;一般地,返回;一般地,返回 J =

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論