LINGO軟件的基本使用方法課件_第1頁
LINGO軟件的基本使用方法課件_第2頁
LINGO軟件的基本使用方法課件_第3頁
LINGO軟件的基本使用方法課件_第4頁
LINGO軟件的基本使用方法課件_第5頁
已閱讀5頁,還剩259頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

LINGO軟件簡介LINGO軟件簡介常用優(yōu)化軟件1.LINDO/LINGO軟件2.MATLAB優(yōu)化工具箱/Mathematic的優(yōu)化功能3.SAS(統(tǒng)計分析)軟件的優(yōu)化功能4.EXCEL軟件的優(yōu)化功能常用優(yōu)化軟件1.LINDO/LINGO軟件MATLAB優(yōu)化工具箱能求解的優(yōu)化模型優(yōu)化工具箱3.0(MATLAB7.0R14)連續(xù)優(yōu)化離散優(yōu)化無約束優(yōu)化非線性極小fminunc非光滑(不可微)優(yōu)化fminsearch非線性方程(組)fzerofsolve全局優(yōu)化暫缺非線性最小二乘lsqnonlinlsqcurvefit線性規(guī)劃linprog純0-1規(guī)劃bintprog一般IP(暫缺)非線性規(guī)劃fminconfminimaxfgoalattainfseminf上下界約束fminbndfminconlsqnonlinlsqcurvefit約束線性最小二乘lsqnonneglsqlin約束優(yōu)化二次規(guī)劃quadprogMATLAB優(yōu)化工具箱能求解的優(yōu)化模型優(yōu)化工具箱3.0(MLINDO公司軟件產(chǎn)品簡要介紹

美國芝加哥(Chicago)大學的LinusSchrage教授于1980年前后開發(fā),后來成立LINDO系統(tǒng)公司(LINDOSystemsInc.),網(wǎng)址:LINDO:

LinearINteractiveandDiscreteOptimizer(V6.1)LINDOAPI:LINDOApplicationProgrammingInterface(V4.1)LINGO:LinearINteractiveGeneralOptimizer(V10.0)What’sBest!:(SpreadSheete.g.EXCEL)(V8.0)演示(試用)版、高級版、超級版、工業(yè)版、擴展版…(求解問題規(guī)模和選件不同)LINDO公司軟件產(chǎn)品簡要介紹美國芝加哥(ChicagoLINDO/LINGO軟件能求解的模型優(yōu)化線性規(guī)劃非線性規(guī)劃二次規(guī)劃連續(xù)優(yōu)化整數(shù)規(guī)劃LINDOLINGOLINDO/LINGO軟件能求解的模型優(yōu)化線性規(guī)劃非線性規(guī)劃LINGO軟件的功能與特點LINGO模型的優(yōu)點集成了線性(非線性)/連續(xù)(整數(shù))優(yōu)化功能具有多點搜索/全局優(yōu)化功能提供了靈活的編程語言(矩陣生成器),可方便地輸入模型提供與其他數(shù)據(jù)文件的接口提供與其他編程語言的接口LINDOAPI可用于自主開發(fā)運行速度較快LINGO軟件的功能與特點LINGO模型的優(yōu)點集成了線性(LPQPNLPIP全局優(yōu)化(選)

ILPIQPINLP

LINGO軟件的求解過程LINGO預處理程序線性優(yōu)化求解程序非線性優(yōu)化求解程序分枝定界管理程序1.確定常數(shù)2.識別類型1.單純形算法2.內(nèi)點算法(選)1、順序線性規(guī)劃法(SLP)2、廣義既約梯度法(GRG)(選)

3、多點搜索(Multistart)(選)LPQPNLPIP建模時需要注意的幾個基本問題

1、盡量使用實數(shù)優(yōu)化,減少整數(shù)約束和整數(shù)變量2、盡量使用光滑優(yōu)化,減少非光滑約束的個數(shù)如:盡量少使用絕對值、符號函數(shù)、多個變量求最大/最小值、四舍五入、取整函數(shù)等3、盡量使用線性模型,減少非線性約束和非線性變量的個數(shù)(如x/y<5改為x<5y)4、合理設定變量上下界,盡可能給出變量初始值5、模型中使用的參數(shù)數(shù)量級要適當(如小于103)建模時需要注意的幾個基本問題1、盡量使用實數(shù)優(yōu)化,減少整數(shù)LINGO軟件的基本使用方法LINGO軟件的基本使用方法課件1.LINGO入門1.LINGO入門安裝文件20M多一點,需要接受安裝協(xié)議、選擇安裝目錄(缺省C:\LINGO8)。LINGO軟件的安裝安裝過程:與一般Windows程序類似.

安裝文件20M多一點,需要接受安裝協(xié)議、選擇安裝目錄(缺省C第一次運行時提示輸入授權密碼,如圖:第一次運行時提示輸入授權密碼,如圖:LINGO軟件的主要特色兩種命令模式Windows模式:通過下拉式菜單命令驅(qū)動LINGO運行(多數(shù)菜單命令有快捷鍵,常用的菜單命令有快捷按鈕),圖形界面,使用方便;命令行模式:僅在命令窗口(CommandWindow)下操作,通過輸入行命令驅(qū)動LINGO運行。(這里主要介紹這種模式)LINGO軟件的主要特色兩種命令模式Windows模式:通LINGO界面簡介LINGO的界面LINGO軟件的主窗口(用戶界面),所有其他窗口都在這個窗口之內(nèi)。模型窗口(ModelWindow),用于輸入LINGO優(yōu)化模型(即LINGO程序)。狀態(tài)行(最左邊顯示“Ready”,表示“準備就緒”)當前時間當前光標的位置LINGO界面簡介LINGO的界面LINGO軟件的主窗口(用LINGO的文件類型.LG4:LINGO格式的模型文件,保存了模型窗口中所能夠看到的所有文本和其他對象及其格式信息;.LNG:文本格式的模型文件,不保存模型中的格式信息(如字體、顏色、嵌入對象等);.LDT:LINGO數(shù)據(jù)文件;.LTF:LINGO命令腳本文件;.LGR:LINGO報告文件;.LTX:LINDO格式的模型文件;.MPS:示MPS(數(shù)學規(guī)劃系統(tǒng))格式的模型文件。除“LG4”文件外,另外幾種格式的文件都是普通的文本文件,可以用任何文本編輯器打開和編輯。LINGO的文件類型.LG4:LINGO格式的模型文件,保存運行狀態(tài)窗口Variables(變量數(shù)量):變量總數(shù)(Total)、非線性變量數(shù)(Nonlinear)、整數(shù)變量數(shù)(Integer)。Constraints(約束數(shù)量):約束總數(shù)(Total)、非線性約束個數(shù)(Nonlinear)。Nonzeros(非零系數(shù)數(shù)量):總數(shù)(Total)、非線性項系數(shù)個數(shù)(Nonlinear)。GeneratorMemoryUsed(K)(內(nèi)存使用量)ElapsedRuntime(hh:mm:ss)(求解花費的時間)運行狀態(tài)窗口Variables(變量數(shù)量):Constrai運行狀態(tài)窗口求解器(求解程序)狀態(tài)框當前模型的類型:LP,QP,ILP,IQP,PILP,PIQP,NLP,INLP,PINLP(以I開頭表示IP,以PI開頭表示PIP)當前解的狀態(tài):"GlobalOptimum","LocalOptimum","Feasible","Infeasible“(不可行),"Unbounded“(無界),"Interrupted“(中斷),"Undetermined“(未確定)解的目標函數(shù)值當前約束不滿足的總量目前為止的迭代次數(shù)運行狀態(tài)窗口求解器(求解程序)狀態(tài)框當前模型的類型:LP,運行狀態(tài)窗口擴展的求解器(求解程序)狀態(tài)框使用的特殊求解程序:B-and-B(分枝定界算法)Global(全局最優(yōu)求解程序)Multistart(用多個初始點求解的程序)目前為止找到的可行解的最佳目標函數(shù)值目標函數(shù)值的界特殊求解程序當前運行步數(shù):分枝數(shù)(對B-and-B程序);子問題數(shù)(對Global程序);初始點數(shù)(對Multistart程序)有效步數(shù)運行狀態(tài)窗口擴展的求解器(求解程序)狀態(tài)框使用的特殊求解程序一個簡單的LINGO程序例1直接用LINGO來解如下二次規(guī)劃問題:輸入窗口如下:一個簡單的LINGO程序例1直接用LINGO來解如下二次程序語句輸入的備注:LINGO總是根據(jù)“MAX=”或“MIN=”尋找目標函數(shù),而除注釋語句和TITLE語句外的其他語句都是約束條件,因此語句的順序并不重要。限定變量取整數(shù)值的語句為“@GIN(X1)”和“@GIN(X2)”。LINGO中函數(shù)一律需要以“@”開頭,其中整型變量函數(shù)是@BIN、@GIN和上下界限定函數(shù)是@FREE、@SUB、@SLB。程序語句輸入的備注:LINGO總是根據(jù)“MAX=”或“MIN輸出結(jié)果:運行菜單命令“LINGO|Solve”最優(yōu)整數(shù)解X=(35,65)最大利潤=11077.5輸出結(jié)果:運行菜單命令“LINGO|Solve”最優(yōu)整數(shù)解輸出結(jié)果備注:通過菜單“WINDOW|StatusWindow”看到狀態(tài)窗口,可看到最佳目標值“BestObj”與問題的上界“ObjBound”已經(jīng)是一樣的,當前解的最大利潤與這兩個值非常接近,是計算誤差引起的。如果采用全局最優(yōu)求解程序(后面介紹),可以驗證它就是全局最優(yōu)解。LINGO是將它作為PINLP(純整數(shù)非線性規(guī)劃)來求解,因此找到的是局部最優(yōu)解。輸出結(jié)果備注:通過菜單“WINDOW|StatusWi一個簡單的LINGO程序LINGO的基本用法的幾點注意事項LINGO中不區(qū)分大小寫字母;變量和行名可以超過8個字符,但不能超過32個字符,且必須以字母開頭。用LINGO解優(yōu)化模型時已假定所有變量非負(除非用限定變量取值范圍的函數(shù)@free或@sub或@slb另行說明)。變量可以放在約束條件的右端(同時數(shù)字也可放在約束條件的左端)。但為了提高LINGO求解時的效率,應盡可能采用線性表達式定義目標和約束(如果可能的話)。語句是組成LINGO模型的基本單位,每個語句都以分號結(jié)尾,編寫程序時應注意模型的可讀性。例如:一行只寫一個語句,按照語句之間的嵌套關系對語句安排適當?shù)目s進,增強層次感。以感嘆號開始的是說明語句(說明語句也需要以分號結(jié)束))。一個簡單的LINGO程序LINGO的基本用法的幾點注意事項2.在LINGO中使用集合2.在LINGO中使用集合集合的基本用法和LINGO模型的基本要素理解LINGO建模語言最重要的是理解集合(Set)及其屬性(Attribute)的概念。例2.SAILCO公司需要決定下四個季度的帆船生產(chǎn)量。下四個季度的帆船需求量分別是40條,60條,75條,25條,這些需求必須按時滿足。每個季度正常的生產(chǎn)能力是40條帆船,每條船的生產(chǎn)費用為400美元。如果加班生產(chǎn),每條船的生產(chǎn)費用為450美元。每個季度末,每條船的庫存費用為20美元。假定生產(chǎn)提前期為0,初始庫存為10條船。如何安排生產(chǎn)可使總費用最?。坑肈EM,RP,OP,INV分別表示需求量、正常生產(chǎn)的產(chǎn)量、加班生產(chǎn)的產(chǎn)量、庫存量,則DEM,RP,OP,INV對每個季度都應該有一個對應的值,也就說他們都應該是一個由4個元素組成的數(shù)組,其中DEM是已知的,而RP,OP,INV是未知數(shù)。集合的基本用法和LINGO模型的基本要素理解LINGO建模問題的模型(可以看出是LP模型)目標函數(shù)是所有費用的和約束條件主要有兩個:1)能力限制:2)產(chǎn)品數(shù)量的平衡方程:加上變量的非負約束問題的模型(可以看出是LP模型)目標函數(shù)是所有費用的和約注:LINDO中沒有數(shù)組,只能對每個季度分別定義變量,如正常產(chǎn)量就要有RP1,RP2,RP3,RP44個變量等。寫起來就比較麻煩,尤其是更多(如1000個季度)的時候。記四個季度組成的集合QUARTERS={1,2,3,4},它們就是上面數(shù)組的下標集合,而數(shù)組DEM,RP,OP,INV對集合QUARTERS中的每個元素1,2,3,4分別對應于一個值。LINGO正是充分利用了這種數(shù)組及其下標的關系,引入了“集合”及其“屬性”的概念,把QUARTERS={1,2,3,4}稱為集合,把DEM,RP,OP,INV稱為該集合的屬性(即定義在該集合上的屬性)。注:LINDO中沒有數(shù)組,只能對每個季度分別定義變量,如正常QUARTERS集合的屬性DEMRPOPINVQUARTERS集合2341集合及其屬性QUARTERS集合的屬性DEMRPOPINV2341集合元素及集合的屬性確定的所有變量集合QUARTERS的元素1234定義在集合QUARTERS上的屬性DEMDEM(1)DEM(2)DEM(3)DEM(4)RPRP(1)RP(2)RP(3)RP(4)OPOP(1)OP(2)OP(3)OP(4)INVINV(1)INV(2)INV(3)INV(4)集合元素及集合的屬性確定的所有變量集合QUARTERS的元素LINGO中定義集合及其屬性LP模型在LINGO中的一個典型輸入方式以“MODEL:”開始以“END”結(jié)束集合定義部分從(“SETS:”到“ENDSETS”):定義集合及其屬性數(shù)據(jù)輸入部分從(“DATA:”到“ENDDATA”)給出優(yōu)化目標和約束LINGO中定義集合及其屬性LP模型在LINGO中的一個典目標函數(shù)的定義方式@SUM(集合(下標):關于集合的屬性的表達式)對語句中冒號“:”后面的表達式,按照“:”前面的集合指定的下標(元素)進行求和。本例中目標函數(shù)也可以等價地寫成@SUM(QUARTERS(i):400*RP(i)+450*OP(i)+20*INV(i)),“@SUM”相當于求和符號“∑”,“QUARTERS(i)”相當于“”的含義。由于本例中目標函數(shù)對集合QUARTERS的所有元素(下標)都要求和,所以可以將下標i省去。目標函數(shù)的定義方式@SUM(集合(下標):關于集合的屬性的表約束的定義方式循環(huán)函數(shù)@FOR(集合(下標):關于集合的屬性的約束關系式)對冒號“:”前面的集合的每個元素(下標),冒號“:”后面的約束關系式都要成立本例中,每個季度正常的生產(chǎn)能力是40條帆船,這正是語句“@FOR(QUARTERS(I):RP(I)<40);”的含義。由于對所有元素(下標I),約束的形式是一樣的,所以也可以像上面定義目標函數(shù)時一樣,將下標i省去,這個語句可以簡化成“@FOR(QUARTERS:RP<40);”。約束的定義方式循環(huán)函數(shù)對冒號“:”前面的集合的每個元素(下標本例中,對于產(chǎn)品數(shù)量的平衡方程,由于下標i=1時的約束關系式與i=2,3,4時有所區(qū)別,所以不能省略下標“i”。實際上,i=1時要用到變量INV(0),但定義的屬性變量中INV不包含INV(0)(INV(0)=10是一個已知的)。為了區(qū)別i=1和i=2,3,4,把i=1時的約束關系式單獨寫出,即“INV(1)=10+RP(1)+OP(1)-DEM(1);”;而對i=2,3,4對應的約束,對下標集合的元素(下標i)增加了一個邏輯關系式“i#GT#1”(這個限制條件與集合之間有一個豎線“|”分開,稱為過濾條件)。限制條件“i#GT#1”是一個邏輯表達式,意思就是i>1;“#GT#”是邏輯運算符號,意思是“大于(GreaterThan的字首字母縮寫)”。約束的定義方式本例中,對于產(chǎn)品數(shù)量的平衡方程,由于下標i=1時的約束關系式問題的求解:運行菜單命令“LINGO|Solve”全局最優(yōu)解RP=(40,40,40,25),OP=(0,10,35,0)最小成本=78450問題的求解:運行菜單命令“LINGO|Solve”全局最優(yōu)注:由于輸入中沒有給出行名,所以行名是系統(tǒng)自動按照行號1-9生成的。選擇菜單命令“LINGO|Generate|Displymodel(Ctrl+G)”,可以得到展開形式的模型(如圖),可以看到完整的模型,也能確定行號(行號放在方括號“[]”中,且數(shù)字前面帶有下劃線“_”)。最好在輸入模型時用戶主動設定約束的行名(即約束名),使程序清晰些。單一約束的行名設置方法就是將行名放在方括號“[]”中,置于約束之前。后面將結(jié)合具體例子介紹在使用集合的情況下如何設置行名。注:由于輸入中沒有給出行名,所以行名是系統(tǒng)自動按照行號1-9小結(jié):LINGO模型最基本的組成要素一般來說,LINGO中建立的優(yōu)化模型可以由五個部分組成,或稱為五“段”(SECTION):(1)集合段(SETS):以“SETS:”開始,“ENDSETS”結(jié)束,定義必要的集合變量(SET)及其元素(MEMBER,含義類似于數(shù)組的下標)和屬性(ATTRIBUTE,含義類似于數(shù)組)。如上例中定義了集合quarters(含義是季節(jié)),它包含四個元素即四個季節(jié)指標(1,2,3,4),每個季節(jié)都有需求(DEM)、正常生產(chǎn)量(RP)、加班生產(chǎn)量(OP)、庫存量(INV)等屬性(相當于數(shù)組,數(shù)組下標由quarters元素決定)。一旦這樣的定義建立起來,如果quarters的數(shù)量不是4而是1000,只需擴展其元素為1,2,...,1000,每個季節(jié)仍然都有DEM,RP,OP,INV這樣的屬性(這些量的具體數(shù)值如果是常量,則可在數(shù)據(jù)段輸入;如果是未知數(shù),則可在初始段輸入初值)。當quarters的數(shù)量不是4而是1000時,沒有必要把1,2,...,1000全部一個一個列出來,而是可以如下定義quarters集合:“quarters/1..1000/:DEM,RP,OP,INV;”,“1..1000”的意思就是從1到1000的所有整數(shù)。小結(jié):LINGO模型最基本的組成要素一般來說,LINGO(2)目標與約束段:目標函數(shù)、約束條件等,沒有段的開始和結(jié)束標記,因此實際上就是除其它四個段(都有明確的段標記)外的LINGO模型。這里一般要用到LINGO的內(nèi)部函數(shù),尤其是與集合相關的求和函數(shù)@SUM和循環(huán)函數(shù)@FOR等。上例中定義的目標函數(shù)與quarters的元素數(shù)目是4或1000并無具體的關系。約束的表示也類似。(2)目標與約束段:目標函數(shù)、約束條件等,沒有段的開始和結(jié)束(3)數(shù)據(jù)段(DATA):以“DATA:”開始,“ENDDATA”結(jié)束,對集合的屬性(數(shù)組)輸入必要的常數(shù)數(shù)據(jù)。格式為:“attribute(屬性)=value_list(常數(shù)列表);”常數(shù)列表(value_list)中數(shù)據(jù)之間可以用逗號“,”分開,也可以用空格分開(回車等價于一個空格),如上面對DEM的賦值也可以寫成“DEM=40607525;”。在LINGO模型中,如果想在運行時才對參數(shù)賦值,可以在數(shù)據(jù)段使用輸入語句。但這僅能用于對單個變量賦值,輸入語句格式為:“變量名=?;”。例如,上例中如果需要在求解模型時才給出初始庫存量(記為A),則可以在模型中數(shù)據(jù)段寫上語句:”A=?;”在求解時LINDO系統(tǒng)給出提示界面,等待用戶輸入變量A的數(shù)值。當然,此時的約束語句INV(1)=10+RP(1)+OP(1)-DEM(1);也應該改寫成INV(1)=A+RP(1)+OP(1)-DEM(1);這樣,模型就可以計算任意初始庫存量(而不僅僅只能計算初始庫存量為10)的情況了。(3)數(shù)據(jù)段(DATA):以“DATA:”開始,“EN(4)初始段(INIT):以“INIT:”開始,“ENDINIT”結(jié)束,對集合的屬性(數(shù)組)定義初值(因為求解算法一般是迭代算法,所以用戶如果能給出一個比較好的迭代初值,對提高算法的計算效果是有益的)。如果有一個接近最優(yōu)解的初值,對LINGO求解模型是有幫助的。定義初值的格式為:“attribute(屬性)=value_list(常數(shù)列表);”這與數(shù)據(jù)段中的用法是類似的。上例中沒有初始化部分,我們將在下一個例子中舉例說明。(4)初始段(INIT):以“INIT:”開始,“END(5)計算段(CALC):以“CALC:”開始,“ENDCALC”結(jié)束,對一些原始數(shù)據(jù)進行計算處理。在實際問題中,輸入的數(shù)據(jù)通常是原始數(shù)據(jù),不一定能在模型中直接使用,可以在這個段對這些原始數(shù)據(jù)進行一定的“預處理”,得到模型中真正需要的數(shù)據(jù)。例如上例,如果希望得到全年的總需求和季度平均需求,可以增加這個段:CALC:T_DEM=@SUM(quarters:DEM);!總需求;A_DEM=T_DEM/@size(quarters);!平均需求;ENDCALC在計算段中也可以使用集合函數(shù)(其中函數(shù)@size(quarters)表示集合quarters的元素個數(shù),這里也就是4)。這時,變量T_DEM的值就是總需求,A_DEM的值就是平均需求(如果需要的話,這兩個變量就可以在程序的其它地方作為常數(shù)使用了)。注:上面的兩個語句不能交換順序,因為計算A_DEM必須要用到T_DEM的值。此外,在計算段中只能直接使用賦值語句,而不能包含需要經(jīng)過解方程或經(jīng)過求解優(yōu)化問題以后才能決定的變量。(5)計算段(CALC):以“CALC:”開始,“END基本集合與派生集合例3建筑工地的位置(用平面坐標a,b表示,距離單位:公里)及水泥日用量d(噸)下表給出。有兩個臨時料場位于P(5,1),Q(2,7),日儲量各有20噸。從A,B兩料場分別向各工地運送多少噸水泥,使總的噸公里數(shù)最小。兩個新的料場應建在何處,節(jié)省的噸公里數(shù)有多大?123456a1.258.750.55.7537.25b1.250.754.7556.57.75d3547611基本集合與派生集合例3建筑工地的位置(用平面坐標a,b建立模型記工地的位置為,水泥日用量為;料場位置為,日儲量為;從料場向工地的運送量為。使用現(xiàn)有臨時料場時,決策變量只有(非負),所以這是LP模型;當為新建料場選址時決策變量為和,由于目標函數(shù)對是非線性的,所以在新建料場時是NLP模型。先解NLP模型,而把現(xiàn)有臨時料場的位置作為初始解告訴LINGO。建立模型記工地的位置為,水泥日用量為本例中集合的概念利用集合的概念,可以定義需求點DEMAND和供應點SUPPLY兩個集合,分別有6個和2個元素(下標)。但決策變量(運送量)與集合DEMAND和集合SUPPLY都有關系的。該如何定義這樣的屬性?集合的屬性相當于以集合的元素為下標的數(shù)組。這里的相當于二維數(shù)組。它的兩個下標分別來自集合DEMAND和SUPPLY,因此可以定義一個由二元對組成的新的集合,然后將定義成這個新集合的屬性。本例中集合的概念利用集合的概念,可以定義需求點DEMAND和輸入程序

定義了三個集合,其中LINK在前兩個集合DEMAND和SUPPLY的基礎上定義LINGO建模語言也稱為矩陣生成器(MATRIXGENERATOR)。類似DEMAND和SUPPLY直接把元素列舉出來的集合,稱為基本集合(primaryset),而把LINK這種基于其它集合而派生出來的二維或多維集合稱為派生集合(derivedset)。由于是DEMAND和SUPPLY生成了派生集合LINK,所以DEMAND和SUPPLY稱為LINK的父集合。表示集合LINK中的元素就是集合DEMAND和SUPPLY的元素組合成的有序二元組,從數(shù)學上看LINK是DEMAND和SUPPLY的笛卡兒積,也就是說LINK={(S,T)|SDEMAND,TSUPPLY}因此,其屬性C也就是一個6*2的矩陣(或者說是含有12個元素的二維數(shù)組)。輸入程序定義了三個集合,其中LINK在前兩個集合DEMAN輸入程序

初始段INGO對數(shù)據(jù)是按列賦值的語句的實際賦值順序是X=(5,2),Y=(1,7),而不是X=(5,1),Y=(2,7)等價寫法:“X=5,2;Y=1,7;”同理,數(shù)據(jù)段中對常數(shù)數(shù)組A,B的賦值語句也可以寫成A,B=1.251.258.750.750.54.755.75536.57.257.75;輸入程序初始段INGO對數(shù)據(jù)是按列賦值的同理,數(shù)據(jù)段中輸入程序

定義目標和約束,與前例的方法是類似(這里包含了派生集合),請?zhí)貏e注意進一步體會集合函數(shù)@SUM和@FOR的用法。由于新建料場的位置理論上講可以是任意的,所以在約束的最后(模型的“END”語句上面的一行)用@free函數(shù)取消了變量X、Y的非負限制在程序開頭用TITLE語句對這個模型取了一個標題“LOCATIONPROBLEM;并且對目標行([OBJ])和兩類約束(DEMAND_CON、SUPPLY_CON)分別進行了命名(請?zhí)貏e注意這里約束命名的特點)。輸入程序定義目標和約束,與前例的方法是類似(這里包含了派生解答:運行菜單命令“LINGO|Solve”局部最優(yōu)解X(1)=7.249997,X(2)=5.695940,Y(1)=7.749998,Y(2)=4.928524,C(略),最小運量=89.8835(噸公里)。問題:最小運量89.8835是不是全局最優(yōu)用“LINGO|Options”菜單命令打開選項對話框,在“GlobalSolver”選項卡上選擇“UseGlobalSolver”,激活全局最優(yōu)求解程序。解答:運行菜單命令“LINGO|Solve”局部最優(yōu)解X(問題:最小運量89.8835是不是全局最優(yōu)為減少計算工作量,對X,Y的取值再做一些限制。雖然理論上新建料場的位置可以是任意的,但顯然最佳的料場位置不應該離工地太遠,至少不應該超出現(xiàn)在6個工地所決定的坐標的最大、最小值決定的矩形之外,即:0.5<=x<=8.75,0.75<=y<=7.75.

可以用@bnd函數(shù)加上這個條件取代模型END上面的行,運行NLP模型,全局最優(yōu)求解程序花費的時間仍然很長,運行27分35秒時人為終止求解(按下“InterruptSolver”按鈕)得到左邊模型窗口和全局求解器的狀態(tài)窗口此時目標函數(shù)值的下界(ObjBound=85.2638)與目前得到的最好的可行解的目標函數(shù)值(BestObj=85.2661)相差已經(jīng)非常小,可以認為已經(jīng)得到了全局最優(yōu)解。問題:最小運量89.8835是不是全局最優(yōu)為減少計算工作量計算結(jié)果

工地與料場示意圖:“*”表示料場,“+”表示工地

可以認為是模型的最后結(jié)果附注:如果要把料廠P(5,1),Q(2,7)的位置看成是已知并且固定的,這時是LP模型。只需要把初始段的“XY=5,1,2,7;”語句移到數(shù)據(jù)段就可以了。此時,運行結(jié)果告訴我們得到全局最優(yōu)解(變量C的取值這里略去),最小運量136.2275(噸公里)。計算結(jié)果工地與料場示意圖:“*”表示料場,“+”表示工稠密集合與稀疏集合包含了兩個基本集合構成的所有二元有序?qū)Φ呐缮戏Q為稠密集合(簡稱稠集)。有時候,在實際問題中,一些屬性(數(shù)組)只在笛卡兒積的一個真子集合上定義,這種派生集合稱為稀疏集合(簡稱疏集)。例4.(最短路問題)在縱橫交錯的公路網(wǎng)中,貨車司機希望找到一條從一個城市到另一個城市的最短路.下圖表示的是公路網(wǎng),節(jié)點表示貨車可以??康某鞘?弧上的權表示兩個城市之間的距離(百公里).那么,貨車從城市S出發(fā)到達城市T,如何選擇行駛路線,使所經(jīng)過的路程最短?STA1

A2

A3

B1

B2

C1

C2

633665874678956稠密集合與稀疏集合包含了兩個基本集合構成的所有二元有序?qū)Φ腟TA1

A2

A3

B1

B2

C1

C2

633665874678956分析

假設從S到T的最優(yōu)行駛路線P經(jīng)過城市C1,則P中從S到C1的子路也一定是從S到C1的最優(yōu)行駛路線;假設P經(jīng)過城市C2,則P中從S到C2的子路也一定是從S到C2的最優(yōu)行駛路線.因此,為得到從S到T的最優(yōu)行駛路線,只需要先求出從S到Ck(k=1,2)的最優(yōu)行駛路線,就可以方便地得到從S到T的最優(yōu)行駛路線.同樣,為了求出從S到Ck(k=1,2)的最優(yōu)行駛路線,只需要先求出從S到Bj(j=1,2)的最優(yōu)行駛路線;為了求出從S到Bj(j=1,2)的最優(yōu)行駛路線,只需要先求出從S到Ai(i=1,2,3)的最優(yōu)行駛路線.而S到Ai(i=1,2,3)的最優(yōu)行駛路線是很容易得到的(實際上,此例中S到Ai(i=1,2,3)只有唯一的道路)STA1A2A3B1B2C1C26336658分析

STA1

A2

A3

B1

B2

C1

C2

633665874678956此例中可把從S到T的行駛過程分成4個階段,即S→Ai

(i=1,2或3),Ai

→Bj(j=1或2),Bj→Ck(k=1或2),Ck→T.記d(Y,X)為城市Y與城市X之間的直接距離(若這兩個城市之間沒有道路直接相連,則可以認為直接距離為∞),用L(X)表示城市S到城市X的最優(yōu)行駛路線的路長:分析STA1A2A3B1B2C1C26336本例的計算STA1

A2

A3

B1

B2

C1

C2

633665874678956所以,從S到T的最優(yōu)行駛路線的路長為20.進一步分析以上求解過程,可以得到從S到T的最優(yōu)行駛路線為S→A3→B2→C1→T.這種計算方法在數(shù)學上稱為動態(tài)規(guī)劃(DynamicProgramming)本例的計算STA1A2A3B1B2C1C263本例的LINGO求解“CITIES”(城市):一個基本集合(元素通過枚舉給出)L:CITIES對應的屬性變量(我們要求的最短路長)“ROADS”(道路):由CITIES導出的一個派生集合(請?zhí)貏e注意其用法),由于只有一部分城市之間有道路相連,所以不應該把它定義成稠密集合,將其元素通過枚舉給出,這就是一個稀疏集合。D:稀疏集合ROADS對應的屬性變量(給定的距離)本例的LINGO求解“CITIES”(城市):一個基本集合(本例的LINGO求解從模型中還可以看出:這個LINGO程序可以沒有目標函數(shù),這在LINGO中,可以用來找可行解(解方程組和不等式組)。在數(shù)據(jù)段對L進行賦值,只有L(S)=0已知,后面的值為空(但位置必須留出來,即逗號“,”一個也不能少,否則會出錯)。如果這個語句直接寫成“L=0;”,語法上看也是對的,但其含義是L所有元素的取值全部為0,所以也會與題意不符。本例的LINGO求解從模型中還可以看出:這個LINGO程序可本例的LINGO求解雖然集合CITIES中的元素不是數(shù)字,但當它以CITIES(I)的形式出現(xiàn)在循環(huán)中時,引用下標I卻實際上仍是正整數(shù),也就是說I指的正是元素在集合中的位置(順序),一般稱為元素的索引(INDEX)。在@for循環(huán)中的過濾條件里用了一個函數(shù)“@index”,其作用是返回一個元素在集合中的索引值,這里@index(S)=1(即元素S在集合中的索引值為1),所以邏輯關系式“I#GT#@index(S)”可以直接等價地寫成“I#GT#1”。這里@index(S)實際上還是@index(CITIES,S)的簡寫,即返回S在集合CITIES中的索引值。本例的LINGO求解雖然集合CITIES中的元素不是數(shù)字,但本例的LINGO求解結(jié)果從S到T的最優(yōu)行駛路線的路長為20(進一步分析,可以得到最優(yōu)行駛路線為S→A3→B2→C1→T)。本例中定義稀疏集合ROADS的方法是將其元素通過枚舉給出,有時如果元素比較多,用起來不方便。另一種定義稀疏集合的方法是“元素過濾”法,能夠從笛卡兒積中系統(tǒng)地過濾下來一些真正的元素。本例的LINGO求解結(jié)果從S到T的最優(yōu)行駛路線的路長為20(例5.某班8名同學準備分成4個調(diào)查隊(每隊兩人)前往4個地區(qū)進行社會調(diào)查。這8名同學兩兩之間組隊的效率如下表所示(由于對稱性,只列出了嚴格上三角部分),問如何組隊可以使總效率最高?學生S1S2S3S4S5S6S7S8S1-9342156S2--173521S3---44292S4----1552S5-----876S6------23S7-------4例5.某班8名同學準備分成4個調(diào)查隊(每隊兩人)前往4個地分析這是一個匹配(MATCHING)問題。把上表的效率矩陣記為BENEFIT(由于對稱性,這個矩陣只有嚴格上三角部分共28個數(shù)取非零值)。用MATCH(Si,Sj)=1表示同學Si,Sj組成一隊,而MATCH(Si,Sj)=0表示Si,Sj不組隊。由于對稱性,只需考慮i<j共28個0-1變量(而不是全部32個變量)。顯然,目標函數(shù)正好是BENEFIT(Si,Sj)*MATCH(Si,Sj)對i,j之和。約束條件是每個同學只能(而且必須在)某一組,即對于任意i有:只要屬性MATCH的某個下標為i就加起來,此和應該等于1。由上面的分析,因此,完整的數(shù)學模型如下(顯然,這是一個0-1線性規(guī)劃):分析這是一個匹配(MATCHIN問題的LINGO求解“S1..S8”等價于寫成“S1S2S3S4S5S6S7S8”,它沒有相關的屬性列表,只用于表示是一個下標集合在派生集合PAIRS定義中增加了過濾條件“&2#GT#&1”,意思是第2個父集合的元素的索引值(用“&2”表示)大于第1個父集合的元素的索引值(用“&1”表示)。PAIRS中的元素對應于上表中的嚴格上三角部分的二維下標(共28個元素)。BENEFIT和MATCH是PAIRS的屬性。注意數(shù)據(jù)段對BENEFIT的賦值方式,“LINGO按照列的順序?qū)傩宰兞康脑剡M行賦值。在約束部分,過濾條件“J#EQ#I#OR#K#EQ#I”是由邏輯運算符“#OR#(或者)”連接的一個復合的邏輯關系式,連接由“#EQ#(等于)”表示的兩個邏輯關系。由于“#OR#”的運算級別低于“#EQ#”,所以這個邏輯式中沒有必要使用括號指定運算次序。問題的LINGO求解“S1..S8”等價于寫成“S1S2LINGO求解結(jié)果“LINGO|SOLVE”運行這個程序,可以得到全局最優(yōu)值為30MATCH變量中多數(shù)為0,可以更清晰地瀏覽最優(yōu)解。選擇菜單命令“LINGO|SOLUTION”,可以看到圖示對話框。選擇屬性MATCH(變量)選擇Text(文本格式)選擇NonzerosOnly(只顯示非零值)點擊“OK”按鈕,得到關于最優(yōu)解的非零分量的報告學生最佳的組隊方式是(1,8),(2,4),(3,7),(5,6).LINGO求解結(jié)果“LINGO|SOLVE”運行這個程序,可集合的使用小結(jié)集合的不同類型及其關系集合派生集合稀疏集合稠密集合基本集合元素列表法元素過濾法

直接列舉法

隱式列舉法

集合的使用小結(jié)集合的不同類型及其關系集合派生集合稀疏集合基本集合的定義語法基本集合的定義格式為(方括號“[]”中的內(nèi)容是可選項,可以沒有):setname[/member_list/][:attribute_list];其中setname為定義的集合名,member_list為元素列表,attribute_list為屬性列表。元素列表可以采用顯式列舉法(即直接將所有元素全部列出,元素之間用逗號或空格分開),也可以采用隱式列舉法。隱式列舉法可以有幾種不同格式,類型隱式列舉格式示例示例集合表示的元素數(shù)字型1..n1..51,2,3,4,5字符-數(shù)字型stringM..stringNCar101..car208Car101,car102,…,car208日期(星期)型dayM..dayNMON..FRIMON,TUE,WED,THU,FRI月份型monthM..monthNOCT..JANOCT,NOV,DEC,JAN年份-月份型monthYearM..monthYearNOCT2001..JAN2002OCT2001,NOV2001,DEC2001,JAN2002基本集合的定義語法基本集合的定義格式為(方括號“[]”中元素列表和屬性列表都是可選的。當屬性列表不在集合定義中出現(xiàn)時,這樣的集合往往只是為了將來在程序中作為一個循環(huán)變量來使用,或者作為構造更復雜的派生集合的父集合使用(匹配問題中的集合STUDENTS沒有屬性列表)。而當元素列表不在基本集合的定義中出現(xiàn)時,則必須在程序的數(shù)據(jù)段以賦值語句的方式直接給出元素列表。例如,前例中SAILCO公司決定四個季度的帆船生產(chǎn)量模型的集合段和數(shù)據(jù)段可以分別改為:SETS:QUARTERS:DEM,RP,OP,INV;!注意沒有給出集合的元素列表;ENDSETSDATA:QUARTERSDEM=140260375425;!注意LINGO按列賦值的特點;ENDDATA基本集合的定義語法帆船生產(chǎn)量模型的源程序匹配問題的源程序元素列表和屬性列表都是可選的?;炯系亩x語法派生集合的定義語法派生集合的定義格式為(方括號“[]”中的內(nèi)容是可選項,可以沒有):setname(parent_set_list)[/member_list/][:attribute_list];與基本集合的定義相比較多了一個parent_set_list(父集合列表)。父集合列表中的集合(如set1,set2,…,等)稱為派生集合setname的父集合,它們本身也可以是派生集合。當元素列表(member_list)不在集合定義中出現(xiàn)時,還可以在程序的數(shù)據(jù)段以賦值語句的方式給出元素列表;若在程序的數(shù)據(jù)段也不以賦值語句的方式給出元素列表,則認為定義的是稠密集合,即父集合中所有元素的有序組合(笛卡兒積)都是setname的元素。當元素列表在集合定義中出現(xiàn)時,又有“元素列表法”(直接列出元素)和“元素過濾法”(利用過濾條件)兩種不同方式。派生集合的定義語法派生集合的定義格式為(方括號“[]”中3.運算符和函數(shù)

3.運算符和函數(shù)運算符及其優(yōu)先級算術運算符加、減、乘、除、乘方等數(shù)學運算(即數(shù)與數(shù)之間的運算,運算結(jié)果也是數(shù))。LINGO中的算術運算符有以下5種:+(加法),—(減法或負號),*(乘法),/(除法),^(求冪)。運算符及其優(yōu)先級算術運算符加、減、乘、除、乘方等數(shù)學運算(邏輯運算符運算結(jié)果只有“真”(TRUE)和“假”(FALSE)兩個值(稱為“邏輯值”),LINGO中用數(shù)字1代表TRUE,其他值(典型的值是0)都是FALSE。在LINGO中,邏輯運算(表達式)通常作為過濾條件使用,邏輯運算符有9種,可以分成兩類:#AND#(與),#OR#(或),#NOT#(非):邏輯值之間的運算,它們操作的對象本身已經(jīng)是邏輯值或邏輯表達式,計算結(jié)果也是邏輯值。#EQ#(等于),#NE#(不等于),#GT#(大于),#GE#(大于等于),#LT#(小于),#LE#(小于等于):是“數(shù)與數(shù)之間”的比較,也就是它們操作的對象本身必須是兩個數(shù),計算得到的結(jié)果是邏輯值。邏輯運算符運算結(jié)果只有“真”(TRUE)和“假”(FALSE關系運算符表示是“數(shù)與數(shù)之間”的大小關系,在LINGO中用來表示優(yōu)化模型的約束條件。LINGO中關系運算符有3種:<(即<=,小于等于),=(等于),>(即>=,大于等于)(在優(yōu)化模型中約束一般沒有嚴格小于、嚴格大于關系)運算符的優(yōu)先級優(yōu)先級最高

最低運算符#NOT#—(負號)^*/+—(減法)#EQ##NE##GT##GE##LT##LE##AND##OR#<=>關系運算符表示是“數(shù)與數(shù)之間”的大小關系,在LINGO中用來基本的數(shù)學函數(shù)在LINGO中建立優(yōu)化模型時可以引用大量的內(nèi)部函數(shù),這些函數(shù)以”@”打頭。LINGO中包括相當豐富的數(shù)學函數(shù),這些函數(shù)的用法非常簡單,下面一一列出。@ABS(X):絕對值函數(shù),返回X的絕對值。@COS(X):余弦函數(shù),返回X的余弦值(X的單位是弧度)。@EXP(X):指數(shù)函數(shù),返回@FLOOR(X):取整函數(shù),返回X的整數(shù)部分(向最靠近0的方向取整)。@LGM(X):返回X的伽瑪(gamma)函數(shù)的自然對數(shù)值(當X為整數(shù)時LGM(X)=LOG(X-1)!;當X不為整數(shù)時,采用線性插值得到結(jié)果)。@LOG(X):自然對數(shù)函數(shù),返回X的自然對數(shù)值。的值(其中e=2.718281...)?;镜臄?shù)學函數(shù)在LINGO中建立優(yōu)化模型時可以引用大量的內(nèi)基本的數(shù)學函數(shù)@SIGN(X):符號函數(shù),返回X的符號值(X<0時返回-1,X>=0時返回+1)。@SIN(X):正弦函數(shù),返回X的正弦值(X的單位是弧度)。@SMAX(list):最大值函數(shù),返回一列數(shù)(list)的最大值。@SMIN(list):最小值函數(shù),返回一列數(shù)(list)的最小值。@SQR(X):平方函數(shù),返回X的平方(即X*X)的值。@SQRT(X):開平方函數(shù),返回X的正的平方根的值。@TAN(X):正切函數(shù),返回X的正切值(X的單位是弧度)?;镜臄?shù)學函數(shù)@SIGN(X):符號函數(shù),返回X的符號值(集合循環(huán)函數(shù)集合上的元素(下標)進行循環(huán)操作的函數(shù),一般用法如下:@function(setname[(set_index_list)[|condition]]:expression_list);其中:function集合函數(shù)名,FOR、MAX、MIN、SUM之一;Setname集合名;set_index_list集合索引列表(不需使用索引時可以省略);Condition用邏輯表達式描述的過濾條件(通常含有索引,無條件時可以省略);expression_list一個表達式(對@FOR函數(shù),可以是一組表達式。集合循環(huán)函數(shù)集合上的元素(下標)進行循環(huán)操作的函數(shù),一般集合循環(huán)函數(shù)四個集合函數(shù)名的含義:@FOR(集合元素的循環(huán)函數(shù)):對集合setname的每個元素獨立地生成表達式,表達式由expression_list描述(通常是優(yōu)化問題的約束)。@MAX(集合屬性的最大值函數(shù)):返回集合setname上的表達式的最大值。@MIN(集合屬性的最小值函數(shù)):返回集合setname上的表達式的最小值。@SUM(集合屬性的求和函數(shù)):返回集合setname上的表達式的和。集合循環(huán)函數(shù)四個集合函數(shù)名的含義:集合操作函數(shù)@INDEX([set_name,]primitive_set_element)給出元素primitive_set_element在集合set_name中的索引值(即按定義集合時元素出現(xiàn)順序的位置編號)。省略set_name,LINGO按模型中定義的集合順序找到第一個含有該元素的集合,并返回索引值。如果沒有找到該元素,則出錯。注:Set_name的索引值是正整數(shù)且只能位于1和元素個數(shù)之間。例:定義一個女孩姓名集合(GIRLS)和男孩姓名集合(BOYS):SETS:GIRLS/DEBBIE,SUE,ALICE/;BOYS/BOB,JOE,SUE,FRED/;ENDSETS都有SUE,GIRLS在BOYS前定義,調(diào)用@INDEX(SUE)將返2,相當于@INDEX(GIRLS,SUE)。要找男孩中名為SUE的小孩的索引,應該使用@INDEX(BOYS,SUE),返3。集合操作函數(shù)@INDEX([set_name,]pri集合操作函數(shù)@IN(set_name,primitive_index_1[,primitive_index_2...])判斷一個集合中是否含有某個索引值。如果集合set_name中包含由索引primitive_index_1[,primitive_index_2...]所對應元素,則返回1(邏輯值“真”),否則返回0(邏輯值“假”)。索引用“&1”、“&2”或@INDEX函數(shù)等形式給出,這里“&1”表示對應于第1個父集合的元素的索引值,“&2”表示對應于第2個父集合的元素的索引值。例:定義一個集合STUDENTS(基本集合),派生出集合PASSED和FAILED,定義:SETS:STUDENTS/ZHAO,QIAN,SUN,LI/:;PASSED(STUDENTS)/QIAN,SUN/:;FAILED(STUDENTS)|#NOT#@IN(PASSED,&1):;ENDSETS集合操作函數(shù)@IN(set_name,primitiv如果集合C是由集合A,B派生的,例如:SETS:A/1..3/:; B/XYZ/:; C(A,B)/1,X1,Z2,Y3,X/:;ENDSETS判斷C中是否包含元素(2,Y),則可以利用以下語句: X=@IN(C,@INDEX(A,2),@INDEX(B,Y));對本例,結(jié)果是X=1(真)。注:X既是集合B的元素,又對X賦值1,在LINGO中這種表達是允許的,因為前者是集合的元素,后者是變量,邏輯上沒有關系(除了同名外),所以不會出現(xiàn)混淆。集合操作函數(shù)@IN(set_name,primitive_index_1[,primitive_index_2...])如果集合C是由集合A,B派生的,例如:集合操作函@WRAP(I,N)

此函數(shù)對N<1無定義當I位于區(qū)間[1,N]內(nèi)時直接返回I;一般地,返回J=I-K*N,其中J位于區(qū)間[1,N],K為整數(shù)。即@WRAP(I,N)=@MOD(I,N)(此函數(shù)8.0版本沒有)。但當@MOD(I,N)=0時@WRAP(I,N)=N.此函數(shù)可以用來防止集合的索引值越界。用戶在編寫LINGO程序時,應注意避免LINGO模型求解時出現(xiàn)集合的索引值越界的錯誤。集合操作函數(shù)@SIZE(set_name)返回數(shù)據(jù)集set_name中包含元素的個數(shù)。@WRAP(I,N)此函數(shù)對N<1無定義集合操作函數(shù)變量定界函數(shù)對變量的取值范圍附加限制,共有以下四種:@BND(L,X,U):限制L<=X<=U。@BIN(X):限制X為0或1。@FREE(X):取消對X的符號限制(即可取負數(shù)、0或正數(shù))@GIN(X):限制X為整數(shù)變量定界函數(shù)對變量的取值范圍附加限制,共有以下四種:文件輸入輸出函數(shù)@)當前模型引用其他ASCII碼文件中的數(shù)據(jù)或文本時可以采用該語句(但不允許嵌套使用),其中為存放數(shù)據(jù)的文件名,該文件中記錄之間用“~”分開。@ODBC提供LINGO與ODBC(OpenDataBaseConnection,開放式數(shù)據(jù)庫連接)的接口。@OLE提供LINGO與OLE(ObjectLinkingandEmbeding)接口。@POINTER(N) 在Windows下使用LINGO的動態(tài)連接庫DLL,直接從共享的內(nèi)存中傳送數(shù)據(jù)。@TEXT([''])用于數(shù)據(jù)段中將解答結(jié)果送到文本文件中,當省略時,結(jié)果送到標準的輸出設備(通常就是屏幕)。中可以帶有文件路徑,沒有指定路徑時表示在當前目錄,如果這個文件已經(jīng)存在,將會被覆蓋。文件輸入輸出函數(shù)@)當前模型引用其他ASCII碼文件中其他函數(shù)@IF(logical_condition,true_result,false_result)當邏輯表達式logical_condition的結(jié)果為真時,返回true_result,否則返回false_result。@WARN('text',logical_condition)如果邏輯表達式“l(fā)ogical_condition”的結(jié)果為真,顯示‘text’信息。@USER(user_determined_arguments)允許用戶自己編寫的函數(shù)(DLL或OBJ文件),可能應當用C或FORTRAN等其他語言編寫并編譯。其他函數(shù)@IF(logical_condition,tru4.LINGO的主要菜單命令

4.LINGO的主要菜單命令工具欄(F3)打開文件(F7)打印文件Edit|Copy(Ctrl+C)復制Edit|Undo(Ctrl+Z)取消操作Edit|Find(Ctrl+F)查找LINGO|Solution(Alt+O)顯示解答Edit|MatchParenthesis(Ctrl+P)匹配括號LINGO|Options(Ctrl+I)選項設置Window|CloseAll(Alt+X)關閉所有窗口Help|Contents(F1)在線幫助(F2)新建文件(F4)保存文件Edit|Cut(Ctrl+X)剪切Edit|Paste(Ctrl+V)粘貼Edit|Redo(Ctrl+Y)恢復操作Edit|GoToLine(Ctrl+T)定位某行LINGO|Solve(Ctrl+S)求解模型LINGO|Picture(Ctrl+K)模型圖示W(wǎng)indow|SendtoBack(Ctrl+B)窗口后置Window|Tile(Alt+T)平鋪窗口上下文相關的幫助工具欄Edit|CopyEdit|UndoEdit|Find文件(File)主菜單File… 優(yōu)化模型輸出到文件,有兩個子菜單,分別表示兩種輸出格式(都是文本文件):MPSFormat(MPS格式):是IBM公司制定的一種數(shù)學規(guī)劃文件格式。MPIFormat(MPI格式):是LINDO公司制定的一種數(shù)學規(guī)劃文件格式。DatabaseInfo 彈出對話框,用戶輸入用戶使用數(shù)據(jù)庫時需要驗證的用戶名(UserID)和密碼(Password),這些信息在使用@ODBC()函數(shù)訪問數(shù)據(jù)庫時要用到。文件(File)主菜單File…編輯(Edit)主菜單將WINDOWS剪貼板中的內(nèi)容粘貼到當前光標處。“Edit|Paste(粘貼命令)”僅用于剪貼板中的內(nèi)容是文本的情形?!癊dit|PasteSpecial…(特殊粘貼命令)”可以用于剪貼板中的內(nèi)容不是文本的情形,可以插入其它應用程序中生成的對象(Object)或?qū)ο蟮逆溄樱↙ink)。例如,LINGO模型中可能會在數(shù)據(jù)段用到從其它應用程序中生成的數(shù)據(jù)對象(如EXCEL電子表格數(shù)據(jù)),這時用“Edit|PasteSpecial…”是很方便的。Edit|Paste和Edit|PasteSpecial…

編輯(Edit)主菜單將WINDOWS剪貼板中的內(nèi)容粘貼到當編輯(Edit)主菜單Edit|MatchParenthesis 用于匹配模型中的括號:如果當前沒有選定括號,則把光標移動到離當前光標最近的一個括號并選中這個括號。當選定一個括號后,則把光標移動到與這個括號相匹配的括號并選中這個括號。Edit|PasteFunction 還有下一級子菜單和下下一級子菜單,用于按函數(shù)類型選擇LINGO的某個函數(shù),粘貼到當前光標處。編輯(Edit)主菜單Edit|MatchParenthe編輯(Edit)主菜單Edit|SelectFont彈出對話框,控制顯示字體、字形、大小、顏色、效果等。注:這些顯示特性只有當文件保存為LINGO格式(*.LG4)的文件時才能保存下來。此外,如果“按語法顯示色彩”選項是有效的(參見“LINGO|Options”),在模型窗口中將不能通過“Edit|SelectFont”菜單命令控制文本的顏色。編輯(Edit)主菜單Edit|SelectFont彈出對編輯(Edit)主菜單Edit|InsertNewObject

插入其它應用程序中生成的整個對象或?qū)ο蟮逆溄?。前面介紹過的“Edit|PasteSpecial…”與此類似,但“PasteSpecial”命令一般用于粘貼某個外部對象的一部分,而這里的命令是插入整個對象或?qū)ο蟮逆溄?。Edit|Links在模型窗口中選擇一個外部對象的鏈接,然后選擇“Edit|Links(鏈接)”命令,則彈出一個對話框,可以修改這個外部對象的鏈接屬性。編輯(Edit)主菜單Edit|InsertNewObj編輯(Edit)主菜單Edit|ObjectProperties在模型窗口中選擇一個鏈接或嵌入對象(OLE),然后選擇“Edit|ObjectProperties(對象屬性)”命令,則彈出一個對話框,可以修改這個對象的屬性。主要包括以下屬性:displayoftheobject:對象的顯示;theobject'ssource:對象的源;typeofupdate(automaticormanual):修改方式(自動或人工修改);openingalinktotheobject:打開對象的一個鏈接;updatingtheobject:修改對象;breakingthelinktotheobject:斷開對象的鏈接。編輯(Edit)主菜單Edit|ObjectPropertLINGO系統(tǒng)(LINGO)主菜單LINGO|LOOK(模型顯示)

模型窗口下才能使用,按照LINGO模型的輸入形式以文本方式顯示,顯示時對輸入的所有行(包括說明語句)按順序編號。將彈出一個對話框,在對話框中選擇“All”將對所有行進行顯示,也可以選擇“Selected”輸入起始行,這時只顯示相應行的內(nèi)容。LINGO|Generate和LINGO|Picture

都是在模型窗口下才能使用,它們的功能是按照LINGO模型的完整形式(例如將屬性按下標(集合的每個元素)展開)顯示目標函數(shù)和約束(只有非零項會顯示出來)。LINGO系統(tǒng)(LINGO)主菜單LINGO|LOOK(模LINGO系統(tǒng)(LINGO)主菜單LINGO|Generate結(jié)果以代數(shù)表達式的形式給出,按照是否在屏幕上顯示結(jié)果的要求,可以選擇“Displaymodel(Ctrl+G)”和“Don’tdisplaymodel(Ctrl+Q)”兩個子菜單供選擇。在屏幕上不顯示時,運行該命令的目的可能僅僅是為了以后選擇適當?shù)那蠼獬绦蚴褂?。例如,選址問題,LINGO|Generate命令顯示的結(jié)果如圖。注:在LINGO8.0以及更早以前的版本中,如果有非線性變量項,對應的非線性變量前的系數(shù)將以問號(“?”)顯示。LINGO系統(tǒng)(LINGO)主菜單LINGO|GeneraLINGO系統(tǒng)(LINGO)主菜單LINGO|Generate結(jié)果按照矩陣形式以圖形方式給出。例:選址問題,該命令的結(jié)果如圖。該顯示中非線性項的系數(shù)以黑色顯示為“?”,線性項的系數(shù)為正時顯示為蘭色,為負則為紅色(本例沒有紅色)。在這個圖形上單擊鼠標右鍵,可以出現(xiàn)一個相關聯(lián)的顯示控制菜單(如圖中寫有“ZoomIn”的菜單所示),這個菜單可以控制圖形顯示的內(nèi)容的放大(ZoomIn)、縮小(ZoomOut)、顯示全部內(nèi)容(ViewAll),也可以控制該窗口是否顯示行名(RowNames)、變量名(VarNames)、滾動條(ScrollBars)。LINGO系統(tǒng)(LINGO)主菜單LINGO|GeneraLINGO系統(tǒng)(LINGO)主菜單LINGO|Options命令打開一個含有7個選項卡的窗口,通過它修改LINGO系統(tǒng)的各種控制參數(shù)和選項。新的設置生效新的設置生效,并關閉窗口當前設置變?yōu)槟J設置,下次啟動LINGO時這些設置仍然有效恢復LINGO系統(tǒng)定義的原始默認設置(缺省設置)廢棄本次操作,退出對話框顯示本對話框的幫助信息LINGO系統(tǒng)(LINGO)主菜單LINGO|OptionLINGO|Options|Interface(界面)選項卡錯誤信息對話框:如果選擇該選項,求解程序遇到錯誤時將打開一個對話框顯示錯誤,關閉該對話框后程序才會繼續(xù)執(zhí)行;否則,錯誤信息將在報告窗口顯示,程序仍會繼續(xù)執(zhí)行彈出屏幕:如果選擇該選項,則LINGO每次啟動時會在屏幕上彈出一個對話框,顯示LINGO的版本和版權信息;否則不彈出解的截斷:小于等于這個值的解將報告為“0”(缺省是10-9)填充數(shù)據(jù)庫表:當LINGO向電子表(如EXCEL文件)或數(shù)據(jù)庫中輸出數(shù)據(jù)時,如果電子表或數(shù)據(jù)庫中用來接收收據(jù)的空間大于實際輸出的數(shù)據(jù)占用的空間,是否對多余的表空間進行數(shù)據(jù)填充?(缺省值為不進行填充)LINGO|Options|Interface(界面)選項卡LINGO|Options|Interface(界面)選項卡狀態(tài)欄:如果選擇該選項,則LINGO系統(tǒng)在主窗口最下面一行顯示狀態(tài)欄;否則不顯示狀態(tài)窗口:如果選擇該選項,則LINGO系統(tǒng)每次運行LINGO|Solve命令時會在屏幕上彈出狀態(tài)窗口;否則不彈出工具欄:如果選擇該選項,則顯示工具欄;否則不顯示簡潔輸出:如果選擇該選項,則LINGO系統(tǒng)對求解結(jié)果報告等將以簡潔形式輸出;否則以詳細形式輸出LINGO|Options|Interface(界面)選項卡LINGO|Options|Interface(界面)選項卡LINGO擴展格式:模型文件的缺省保存格式是lg4格式(這是一種二進制文件,只有LINGO能讀出)LINDO純文本格式:模型文件的缺省保存格式變?yōu)長INDO格式(純文本)LINGO純文本格式:模型文件的缺省保存格式變?yōu)閘ng格式(純文本)LINGO|Options|Interface(界面)選項卡LINGO|Options|Interface(界面)選項卡行數(shù)限制:語法配色的行數(shù)限制(缺省為1000)。LINGO模型窗口中將LINGO關鍵詞顯示為蘭色,注釋為綠色,其他為黑色,超過該行數(shù)限制后則不再區(qū)分顏色。特別地,設置行數(shù)限制為0時,整個文件不再區(qū)分顏色。括號匹配:如果選擇該選項,則模型中當前光標所在處的括號及其相匹配的括號將以紅色顯示;否則不使用該功能延遲:設置語法配色的延遲時間(秒,缺省為0,從最后一次擊鍵算起)。LINGO|Options|Interface(界面)選項卡LINGO|Options|Interface(界面)選項卡報告發(fā)送到命令窗口:如果選擇該選項,則輸出信息會發(fā)送到命令窗口;否則不使用該功能輸入信息反饋:如果選擇該選項,則用Command命令執(zhí)行命令腳本文件時,處理信息會發(fā)送到命令窗口;否則不使用該功能頁面大小限制:命令窗口每次顯示的行數(shù)的最大值為Length(缺省為沒有限制),顯示這么多行后會暫停,等待用戶響應;每行最大字符數(shù)為Width(缺省為74,可以設定為64-200之間),多余的字符將被截斷行數(shù)限制:命令窗口能顯示的行數(shù)的最大值為Maximum(缺省為800);如果要顯示的內(nèi)容超過這個值,每次從命令窗口滾動刪除的最小行數(shù)為Minimum(缺省為400)LINGO|Options|Interface(界面)選項卡LINGO|Options|GeneralSolver(通用求解程序)選項卡矩陣生成器的內(nèi)存限制:缺省值為32M,矩陣生成器使用的內(nèi)存超過該限制,LINGO將報告"Themodelgeneratorranoutofmemory"運行限制:迭代次數(shù):求解一個模型時,允許的最大迭代次數(shù)(缺省值為無限)運行限制:運行時間:求解一個模型時,允許的最大運行時間(秒)(缺省值為無限)對偶計算:求解時控制對偶計算的級別,有三種可能的設置:None:不計算任何對偶信息;Prices:計算對偶價格(缺省設置);PricesandRanges:計算對偶價格并分析敏感性;Prices,OptOnly:只計算最優(yōu)行的對偶價格。LINGO|Options|GeneralSolver(通LINGO|Options|GeneralSolver(通用求解程序)選項卡固定變量的歸結(jié)、簡化:求解前對固定變量的歸結(jié)程度(相當于預處理程度):None:不歸結(jié);Always:總是歸結(jié);Notwithglobalandmultistart:在全局優(yōu)化和多初值優(yōu)化程序中不歸結(jié)。模型的重新生成:控制重新生成模型的頻率,有三種可能的設置:Onlywhentextchanges:只有當模型的文本修改后才再生成模型;Whentextchangesorwithexternalreferences:當模型的文本修改或模型含有外部引用時(缺省設置);Always:每當有需要時。LINGO|Options|GeneralSolver(通LINGO|Options|GeneralSolver(通用求解程序)選項卡線性化程度:決定求解模型時線性化的程度,有四種可能的設置:SolverDecides:若變量數(shù)小于等于12個,則盡可能全部線性化;否則不做任何線性化(缺省設置)None:不做任何線性化Low:對函數(shù)@ABS(),@MAX(),@MIN(),@SMAX(),@SMIN(),以及二進制變量與連續(xù)變量的乘積項做線性化High:同上,此外對邏輯運算符#LE#,#EQ#,#GE#,

溫馨提示

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

評論

0/150

提交評論