資源描述:
《Lingo 求解運(yùn)輸問(wèn)題.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、(LinearInteractiveGeneralOptimizer)LINGO簡(jiǎn)介L(zhǎng)INGO(LinearInteractiveGeneralOptimizer)是用來(lái)求解線性和非線性優(yōu)化問(wèn)題的簡(jiǎn)易工具。LINGO內(nèi)置了一種建立最優(yōu)化模型的語(yǔ)言,可以簡(jiǎn)便地表達(dá)大規(guī)模問(wèn)題,利用LINGO高效的求解器可快速求解并分析結(jié)果。例1如何在LINGO中求解如下的LP問(wèn)題:min=2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;然后點(diǎn)擊工具條上的按鈕即可。在模型窗口中輸入如下代碼:例2直接用LINGO來(lái)解如下二次規(guī)劃問(wèn)題:輸入窗
2、口如下:程序語(yǔ)句輸入的備注:LINGO總是根據(jù)“MAX=”或“MIN=”尋找目標(biāo)函數(shù),而除注釋語(yǔ)句和TITLE語(yǔ)句外的其他語(yǔ)句都是約束條件,因此語(yǔ)句的順序并不重要。限定變量取整數(shù)值的語(yǔ)句為“@GIN(X1)”和“@GIN(X2)”,不可以寫成“@GIN(2)”,否則LINGO將把這個(gè)模型看成沒(méi)有整數(shù)變量。LINGO中函數(shù)一律需要以“@”開(kāi)頭,其中整型變量函數(shù)(@BIN、@GIN)和上下界限定函數(shù)(@FREE、@SUB、@SLB)與LINDO中的命令類似。而且0/1變量函數(shù)是@BIN函數(shù)。LINGO的基本用法的幾點(diǎn)注意事項(xiàng)LINGO中不區(qū)分大小寫字母;變量
3、和行名可以超過(guò)8個(gè)字符,但不能超過(guò)32個(gè)字符,且必須以字母開(kāi)頭。用LINGO解優(yōu)化模型時(shí)已假定所有變量非負(fù)(除非用限定變量取值范圍的函數(shù)@free或@sub或@slb另行說(shuō)明)。變量可以放在約束條件的右端(同時(shí)數(shù)字也可放在約束條件的左端)。但為了提高LINGO求解時(shí)的效率,應(yīng)盡可能采用線性表達(dá)式定義目標(biāo)和約束(如果可能的話)。語(yǔ)句是組成LINGO模型的基本單位,每個(gè)語(yǔ)句都以分號(hào)結(jié)尾,編寫程序時(shí)應(yīng)注意模型的可讀性。例如:一行只寫一個(gè)語(yǔ)句,按照語(yǔ)句之間的嵌套關(guān)系對(duì)語(yǔ)句安排適當(dāng)?shù)目s進(jìn),增強(qiáng)層次感。以感嘆號(hào)開(kāi)始的是說(shuō)明語(yǔ)句(說(shuō)明語(yǔ)句也需要以分號(hào)結(jié)束)。LINGO
4、模型最基本的組成要素一般來(lái)說(shuō),LINGO中建立的優(yōu)化模型可以由五個(gè)部分組成,或稱為五“段”(SECTION):(1)集合段(SETS):以“SETS:”開(kāi)始,“ENDSETS”結(jié)束,定義必要的集合變量(SET)及其元素(MEMBER,含義類似于數(shù)組的下標(biāo))和屬性(ATTRIBUTE,含義類似于數(shù)組)?;炯系亩x語(yǔ)法基本集合的定義格式為(方括號(hào)“[]”中的內(nèi)容是可選項(xiàng),可以沒(méi)有):setname[/member_list/][:attribute_list];類型隱式列舉格式示例示例集合表示的元素?cái)?shù)字型1..n1..51,2,3,4,5字符-數(shù)字型st
5、ringM..stringNCar101..car208Car101,car102,…,car208日期(星期)型dayM..dayNMON..FRIMON,TUE,WED,THU,FRI月份型monthM..monthNOCT..JANOCT,NOV,DEC,JAN年份-月份型monthYearM..monthYearNOCT2001..JAN2002OCT2001,NOV2001,DEC2001,JAN2002setname[/member_list/][:attribute_list];其中setname為定義的集合名,member_list為元素
6、列表,attribute_list為屬性列表。元素列表可以采用顯式列舉法(即直接將所有元素全部列出,元素之間用逗號(hào)或空格分開(kāi)),也可以采用隱式列舉法,隱式列舉法可以有幾種不同格式。(2)目標(biāo)與約束段:目標(biāo)函數(shù)、約束條件等,沒(méi)有段的開(kāi)始和結(jié)束標(biāo)記,因此實(shí)際上就是除其它四個(gè)段(都有明確的段標(biāo)記)外的LINGO模型。這里一般要用到LINGO的內(nèi)部函數(shù),尤其是與集合相關(guān)的求和函數(shù)@SUM和循環(huán)函數(shù)@FOR等。(3)數(shù)據(jù)段(DATA):以“DATA:”開(kāi)始,“ENDDATA”結(jié)束,對(duì)集合的屬性(數(shù)組)輸入必要的常數(shù)數(shù)據(jù)。格式為:“attribute(屬性)=val
7、ue_list(常數(shù)列表);”常數(shù)列表(value_list)中數(shù)據(jù)之間可以用逗號(hào)“,”分開(kāi),也可以用空格分開(kāi)(回車等價(jià)于一個(gè)空格)。(4)初始段(INIT):以“INIT:”開(kāi)始,“ENDINIT”結(jié)束,對(duì)集合的屬性(數(shù)組)定義初值(因?yàn)榍蠼馑惴ㄒ话闶堑惴?,所以用戶如果能給出一個(gè)比較好的迭代初值,對(duì)提高算法的計(jì)算效果是有益的)。如果有一個(gè)接近最優(yōu)解的初值,對(duì)LINGO求解模型是有幫助的。定義初值的格式為:“attribute(屬性)=value_list(常數(shù)列表);”這與數(shù)據(jù)段中的用法是類似的。(5)計(jì)算段(CALC):以“CALC:”開(kāi)始,“E
8、NDCALC”結(jié)束,對(duì)一些原始數(shù)據(jù)進(jìn)行計(jì)算處理。在實(shí)際問(wèn)題中,輸入的數(shù)據(jù)通常是原