優(yōu)化建模與lingo第02章2.1lindo入門_第1頁
優(yōu)化建模與lingo第02章2.1lindo入門_第2頁
優(yōu)化建模與lingo第02章2.1lindo入門_第3頁
優(yōu)化建模與lingo第02章2.1lindo入門_第4頁
優(yōu)化建模與lingo第02章2.1lindo入門_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第二章 LINDO軟件的基本使用方法原書相關信息謝金星, 薛毅編著, 清華大學出版社, 2005年7月第1版. 優(yōu)化建模與LINDO/LINGO軟件2.1 LINDO入門內(nèi)容提要:1. LINDO軟件的安裝 2. 編寫一個簡單的LINDO程序3. 一些注意事項 2.1.1 LINDO軟件的安裝 本教材使用軟件是 LINDO 6.1 for Windows試用版 安裝過程中,用戶只需要按照程序給出的提示,一步一步走下去,直到安裝成功為止。 第一次運行剛安裝的LINDO軟件時,系統(tǒng)會彈出一個對話框,要求你輸入密碼(Password)。如果你買的是正版軟件,請在密碼框中輸入LINDO公司給你提供的密

2、碼,然后按“OK” 按鈕即可。否則,你只能使用演示版(即試用版),按下“Demo Version(演示版)” 按鈕即可。 2.1.2 編寫一個簡單的LINDO程序例2.1 簡單的線性規(guī)劃(LP)問題: 在空白的模型窗口中輸入這個LP模型:max 2x+3yst 4x+3y=10 3x+5y12end如圖: LINDO程序有以下特點: 程序以“MAX”(或“MIN”)開始,表示目標最大化(或最小化)問題,后面直接寫出目標函數(shù)表達式和約束表達式; 目標函數(shù)和約束之間用“ST”分開; (或用“s.t.”,“sunject to”) 程序以“END”結束( “END” 也可以省略)。 系數(shù)與變量之間的

3、乘號必須省略。 系統(tǒng)對目標函數(shù)所在行自動生成行名“1)”,對約束默認的行名分別是“2)” “3)”,用戶也可以自己輸入行名;行名放在對應的約束之前。 書寫相當靈活,不必對齊,不區(qū)分字符的大小寫。 默認所有的變量都是非負的, 所以不必輸入非負約束。 約束條件中的“=”可分別用“”代替。 一行中感嘆號“!”后面的文字為是注釋語句,可增強程序的可讀性,不參與模型的建立。模型求解:用鼠標點擊工具欄中的圖標 ,或從菜單中選擇Solve|Solve(Ctrl+S)命令LINDO首先開始編譯這個模型,編譯沒有錯誤則開始求解;求解時會首先顯示如右圖所示的LINDO“求解器運行狀態(tài)窗口 ”。求解器運行狀態(tài)窗口顯

4、示的相應信息及含義: 名稱含義Status(當前狀態(tài))顯示當前求解狀態(tài):“Optimal”表示已經(jīng)達到最優(yōu)解;其他可能的顯示還有三個:Feasible(可行解), Infeasible(不可行), Unbounded(最優(yōu)值無界)。Iterations(迭代次數(shù))顯示迭代次數(shù):“2”表示經(jīng)過了2次迭代。 Infeasibility (不可行性)約束不滿足的量(即各個約束條件不滿足的“數(shù)量”的和;特別注意不是“不滿足的約束個數(shù)”):“0”表示這個解是可行的。Objective (當前的目標值)顯示目標函數(shù)當前的值:7.45455。Best IP(整數(shù)規(guī)劃當前的最佳目標值)顯示整數(shù)規(guī)劃當前的最佳目

5、標值:“N/A” (No Answer或Not Applicable)表示無答案或無意義,因為這個模型中沒有整數(shù)變量,不是整數(shù)規(guī)劃(IP)。 名稱含義IP Bound(整數(shù)規(guī)劃的界)顯示整數(shù)規(guī)劃的界(對最大化問題顯示上界;對最小化問題,顯示下界):“N/A”含義同上。 Branches(分枝數(shù))顯示分枝定界算法已經(jīng)計算的分枝數(shù): “N/A”含義同上。Elapsed Time(所用時間)顯示計算所用時間(秒):“0.00”說明計算太快了,用時還不到0.005秒。Update Interval(刷新本界面的時間間隔)顯示和控制刷新本界面的時間間隔:“1”表示1秒;用戶可以直接在界面上修改這個時間間

6、隔。Interrupt Solver(中斷求解程序)當模型規(guī)模比較大時(尤其對整數(shù)規(guī)劃),可能求解時間會很長,如果不想再等待下去時,可以在程序運行過程中用鼠標點擊該按鈕終止計算。求解結束后這個按鈕變成了灰色,再點擊就不起作用了。Close(關閉)該按鈕只是關閉狀態(tài)窗口,并不終止計算。如果你關閉了狀態(tài)窗口,將來隨時可以選擇WINDOW | OPEN STATUS WINDOW 菜單命令來再次打開這個窗口。緊接著彈出一對話框,詢問你是否需要做靈敏性分析(DO RANGE (SENSITIVITY) ANALYSIS? )先選擇“否(N)”按鈕,這個窗口就會關閉。然后,再把狀態(tài)窗口也關閉。 報告窗口

7、 用鼠標選擇“Window | Reports Window”(報告窗口),就可以查看該窗口的內(nèi)容 輸出結果表示的意思是:“LP OPTIMUM FOUND AT STEP2”表示單純形法在兩次迭代(旋轉)后得到最優(yōu)解。 “VALUE”給出最優(yōu)解中各變量(VARIABLE)的值: X =1.272727, Y =1.636364. “OBJECTIVE FUNCTION VALUE 1) 7.4545450 ”表示最優(yōu)目標值為7.4545450.(注意:在LINDO中目標函數(shù)所在的行總是被認為是第1行,這就是這里“1)”的含義)。 “SLACK OR SURPLUS(松馳或剩余)” 給出約束對

8、應的松馳變量的值: 第2、3行松馳變量均為0, 說明對于最優(yōu)解來講,兩個約束(第2、3行)均取等號,即都是緊約束。 “DUAL PRICES” 給出對偶價格的值: 第2、3行對偶價格分別為 .090909,.545455。 “NO. ITERATIONS= 2” 表示用單純形法進行了兩次迭代(旋轉)。 “REDUCED COST” 給出最優(yōu)的單純形表中目標函數(shù)行(第1行)中變量對應的系數(shù)(即各個變量的檢驗數(shù)(也稱為判別數(shù)). 其中基變量的reduced cost值一定為0;對于非基變量(注意:非基變量本身取值一定為0), 相應的 reduced cost值表示當該非基變量增加一個單位(其他非基

9、變量保持不變)時目標函數(shù)減少的量( 對max型問題)。本例最優(yōu)解中兩個變量都是基變量,所以對應的REDUCED COST的值均為0。 保存文件選擇File|Save(F5)命令把“結果報告”保存在一個文件中(缺省的后綴名為LTX,即LINDO文本文件)類似地,回到模型窗口,可以把輸入的模型保存在一個文件中。保存的文件將來可以用File | Open(F3)和File | View(F4)重新打開,用前者打開的程序可以進行修改,而后者只能瀏覽。如果模型有錯誤,運行時會彈出出錯信息報告窗口(LINDO Error Message),則需要修改模型。2.1.3 LINDO模型的一些注意事項 1.變量

10、名由字母和數(shù)字組成,但必須以字母開頭,且長度不能超過8個字符,不區(qū)分大小寫字母,包括關鍵字(如MAX、MIN等)也不區(qū)分大小寫字母。 2.對目標函數(shù)和約束用行號(行名)進行標識,這些標識會在將來的求解結果報告中用到。行名可以和變量名一樣命名,也可以只用數(shù)字命名,還可以含有中文字符,但長度同樣不能超過8個字符。為了方便將來閱讀求解結果報告,建議用戶總是自覺地對每個約束進行命名。行名結束標志符號、即右括號“)”必須是英文字符,否則會出現(xiàn)錯誤。 3.可以用“TITLE”語句對輸入的模型命名,用法是在TITLE后面寫出其名字(最多72個字符,可以有漢字),在程序中單獨占一行,可以在模型的任何地方。模型

11、命名的第一個作用類似于對模型的注釋和說明。模型命名的另一個目的,是為了方便將來閱讀求解結果報告。因為用戶有可能同時處理多個模型,很容易混淆模型與求解結果的對應關系。這時如果對不同模型分別進行了命名,就可以隨時(例如在求解當前模型前)使用菜單命令“FILE|TITLE”將當前模型的名字顯示在求解結果報告窗口中,這樣就容易判別每個求解結果與每個模型的對應關系。 4.模型中以感嘆號“!” 開頭的是注釋行(注釋語句,或稱為說明語句),可以幫助他人或以后自己理解這個模型。實際上,每行中“!”符號后面的都是注釋或說明。注釋語句中可以使用漢字字符 。 5.變量不能出現(xiàn)在一個約束條件的右端(即約束條件的右端只

12、能是常數(shù));變量與其系數(shù)間可以有空格(甚至回車),但不能有任何運算符號(包括乘號“*”等)。6.模型中不接受括號“( )”和逗號“,”等符號(除非在注釋語句中)。 例如: 4(X1+X2)需寫為4X1+4X2;“10,000”需寫為10000。7.表達式應當已經(jīng)經(jīng)過化簡。如不能出現(xiàn)2X1 + 3X2 - 4X1,而應寫成 -2X1 + 3X2等。8.LINDO 中已假定所有變量非負。若要取消變量的非負假定,可在模型的“END”語句后面用命令“FREE”。例如,在“END”語句后輸入FREE vname,可將變量vname的非負假定取消。9.可以在模型的“END”語句后面用命令“SUB”(即設置

13、上界(SET UPPER BOUND)的英文縮寫)設定變量的上界,用命令“SLB” (即設置下界(SET LOWER BOUND)的英文縮寫)設定變量的上下界。其用法是:“SUB vname value”將變量vname的上限設定為value;“SLB”的用法類似。用“SUB”和“SLB”表示的上下界約束不計入模型的約束,因此LINDO也不能給出其松緊判斷和敏感性分析。 10.數(shù)值均衡化考慮:如果約束系數(shù)矩陣中各非零元的絕對值的數(shù)量級差別很大(相差1000倍以上),則稱其為數(shù)值不均衡的。為了避免數(shù)值不均衡引起的計算問題, 使用者應盡可能自己對矩陣的行列進行均衡化。此時還有一個原則, 即系數(shù)中非

14、零元的絕對值不能大于100000 或者小于.0001。LINDO 不能對LP 中的系數(shù)自動進行數(shù)值均衡化,但如果LINDO 覺得矩陣元素之間很不均衡, 將會給出警告。11. 簡單錯誤的檢查和避免: 輸入模型時可能會有某些輸入錯誤. 當問題規(guī)模較大時, 要查找錯誤是比較困難的。在LINDO 中有一些可幫助尋找錯誤的功能,其中之一就是菜單命令“Report | Picture(Alt+5)” , 它的功能是可以將目標函數(shù)和約束表達式中的非零系數(shù)通過列表(或圖形)顯示出來。 例2.2 菜單命令“Report | Picture(Alt+5)” 的功能用Report | Picture命令,將彈出一個

15、對話框,在彈出的對話框中采用缺省選項(即不采用下三角矩陣形式,并以圖形方式顯示),直接按“OK”按鈕可得到一個輸出圖形??梢詮膱D中很直觀地發(fā)現(xiàn),其實錯誤原因只不過是在輸入5)行的表達式中C0與CO弄混了(英文字母O與數(shù)字0弄混了)。在圖中,還可以用鼠標控制顯示圖形的縮放,這對于規(guī)模較大的模型是有用的。MIN 5 A0 +6 A1 +2 A2 +4 B0 +3 B1 +7 B2 +2 C0 +9 C1 +8 C2SUBJECT TO2) A0 +Al +A2 =83) B0 +B1 +B2 =94) C0 +C1 +C2 =65) A0 +B0 +CO =66) A1 +B1 +C1 =57)A2 +B2 +C2 =9END對如下的一個有錯誤的模型輸入:例2.3 三個變量范圍限定命令(FREE、SUB、SLB)的作用 求解如下的LP問題: 這個模型中對變量x沒有非負限制,對y有上限限制,對z有下限限制。用FREE、SUB、SLB三個命令可以實現(xiàn)這些功能。MAX 2x 3y + 4zS.T.con2) 4 x + 3y + 2z = 10con3) -3x + 5 y - z 8con5) -5x - y - z 2ENDfree x ! 說明:變量x沒有非負限制sub y

溫馨提示

  • 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

提交評論