lingo解题报告内容解释
1.2菜單介紹
1.2.1 File
1 New
新建一個窗口,當你執行這個命令時,會出現如下對話框:
你可以在對話框中選擇你想要建立的類型.類型如下:
1)擴展名為(*.lg4)
LG4格式是LINGO4.0的版本,是在Windows下最主要的儲存文件格式,這種格式支持字體格式,自定義格式以及動態連接,? LG4以二進制格式存儲,所以不能被其它的應用軟件直接讀取.
2)擴展名為(*.lng)
LNG是捷便的存儲方式,是4.0版本前的標準文件格式,為了與前版本的兼容,所以還一直在用,LNG文件是以ASCII形式存儲的,所以能被支持文本文件的應用程序讀取.該格式不支持多種字體.
3)擴展名為(*.ltd)
LTD是數據文件,可以從@FILE函數導入數據,@FILE函數只能讀取文本文件,所以所有的LTD文件是以ASCII形式存儲,也不支持多種字體.
4)擴展名為(*.ltf)
LTF是LINGO的調試文件格式,也是以ASCII格式存儲,能直接被LINGO的File|Take command執行.
2 Log Output
輸出文本文件,可以將隨后原輸出到報告窗口的內容輸出到文本中.該命令與Maple中的writeto命令非常相似.
在Maple中輸入如下:
> x:=sin(5.);
writeto("c://maple.txt");
y:=x+1:
print(x,y);
print(x);
> y;
> writeto(terminal);
> y;
執行菜單中的Edit|Excute|Worksheet,按鈕,窗口重新顯示如下:
> x:=sin(5.);
writeto("c://maple.txt");
y:=x+1:
print(x,y);
?? print(x);
?????????????x:=-.9589242747
??
> y;
>writeto(terminal);
> y;
???????????????????????????0.4010757253
而在C盤的maple.txt文件的內容為:
??????????????????????????-.9589242747, .0410757253
?
????????????????????????????????-.9589242747
?
?????????????????????????????????.0410757253
從中可以知道,用了writeto(filename)命令以后把結果輸出到filename中.直到碰到writeto(terminal)命令時,才重新在工作窗口中顯示.
當你點擊菜單File|LogOutput時,系統出現保存對話框,系統就會將命令窗口中的輸出結果保存到指定的文件中.
3 Import LINDO File
該命令是用來導入LINDO軟件保存的LINDO文件(*.LTX)格式.只要在LINGO中導入LINDO文件格式,LINGO系統自動將該文件轉化為LINGO可執行語句.
1.2.2 Edit
1 Paste Function
用該命令可以在當前點插入LINGO的內部函數,
2 Select Fonts
設置字體類型,字體大小,字體顏色.
1.2.3 LINGO
1 Solve
用solve命令對當前窗口中的模型求解,該命令只對report script窗口起作用,不能對數據窗口求解.
當你對一個模型進行求解,LINGO首先檢查該模型的語句格式是否正確,如果LINGO發現在語句中存在錯誤,將會出現類似于如下的對話框:
在上圖的Error Text框中,LINGO提示發生語句錯誤的行數及該行的內容.在通常情況下,LINGO系統能很好的指出錯誤,但是有時也會提供錯誤的信息.
如果在編譯的過程中沒有語法的錯誤,LINGO將調用適當的內部函數對模型進行優化求解.假如我們在工作窗口輸入如下內容:
點擊菜單LINGO|SOLVE,或者點擊工具欄,將會在屏幕上顯示LINGO解的狀態窗口(Solver Status Windows):
該狀態窗口用于跟蹤整個求解過程,下面我們將詳細的描寫該窗口中的一些主要的內容.
1)?按鈕
在解的狀態窗口提供了兩個按鈕,一個為關閉按鈕 (Close),另一個是打斷(interruptSolver)求解按鈕,該按鈕的作用是阻止LINGO求解下一個迭代.在線性模型中,LINGO一般能給出優化解(除整數規劃時沒有整數解),如果這線性模型被打斷了,LINGO返回的將是無意義的,應該被忽略的值.
注意:如果你按了interruptsolver這個按鈕,解的情況是這樣的:
·????????毫無疑問這不是最優解;
·????????解可能不能全部滿足約束條件;
·????????如果這個是線性模型,這個解毫無意義.
2)?文本框
在該窗口中有一個文本框,該文本框的作用是更新狀態窗口的相隔時間,單位為秒,在默認時為2秒.
3)狀態窗口(Solver StatusBox)
狀態窗口的詳細的介紹如下:
?
| Model Class: | 模型類別顯示的模型類別為LP, QP ILP, QP, ILP, IQP, LP, NLP等 |
| State: | Possible states are "Global Optimum", "Local Optimum", "Feasible", "Infeasible", "Unbounded", "Interrupted", and "Undetermined". |
| Objective: | 目標函數的當前值. |
| Infeasibility: | 不滿足約束條件的個數. |
| Iterations? : | 迭代次數 |
其中
| 縮寫 | 類型 | 描述 |
| LP | 線性模型 | 所有的表達式是線性,并且模型的約束條件中變量沒有被約束為整數。 |
| QP | 二次模型 | 所有表達式是線性或二次型,沒有整數約束。 |
| ILP | 整數線性模型 | 所有的表達式是線性,在變量中存在整數約束。 |
| IQP | 整數二次模型 | 所有表達式是線性或二次型,在變量中存在整數約束。 |
| PILP | 純整數線性模型 | 所有表達式是線性,所有變量是整數。 |
| PIQP | 純整數二次模型 | 所有表達式是線性或二次型,所有變量是整數。 |
| NLP | 非線性模型 | 至少存在一個非線性的表達式 |
?
一旦LINGO處理完成該模型,建立一個包括該模型解的報告(Solve Report)窗口.你可以通過拉窗口的滾動條,檢查該窗口內部的內容.該窗口如下:
第一:Solution Report告訴我們求該模型迭帶的次數是0次;第二:該目標函數的最大值是1.285714;第三:取到最優值時變量X、Y分別為1.142857、0.1428571.
我們用數學軟件Maple來驗證該結果:
> ?with(simplex):
maximize( x+y, {4*x+3*y <= 5, 3*x+4*y <= 4 } );
> evalf(%);
?
比較LINGO與Maple所求的結果,完全一致.
在SolutionReport中還包括The Reduced Costs, Slack or Surplus, Dual Price欄.
?
Reduced Cost:
假設X的reduce cost值為10,則X系數加上10時,求優化模型變量取值不變.例如下模型:
MAX = 4.0 * TOM + 3.0 *DICK ?? +2.0 *HARRY;
?? ????2.5 *TOM???????????????? +3.1 *HARRY <= 5;
???? ??2.0 * TOM + 0.7 *DICK ?? +0.4 *HARRY <= 1;
?
求解得到solution report如下:
? Global optimal solution found atiteration:????????????0
? Objectivevalue:????????????????????????????????10.57143
?
?
??????????????????????Variable??????????Value??????? Reduced Cost
???????????????????????????TOM???????2.000000?????? ?????0.000000
??????????????????????????DICK??????0.8571429???????????0.000000
?????????????????????????HARRY???????0.000000???????????3.611429
?
???????????????????????????Row??? Slack or Surplus????? Dual Price
?????????????????????????????1????? ??10.57143???????????1.000000
?????????????????????????????2??????? 0.000000???????????1.257143
?????????????????????????????3??????? 0.000000???????????4.285714
該解中變量HARRY的Reduced Cost為3.611429,現在我們把HARRY前的系數加2,得到的新模型如下:
MAX = 4.0 * TOM + 3.0 *DICK ?? +4.0 *HARRY;
?? ????2.5 *TOM???????????????? +3.1 *HARRY <= 5;
???? ??2.0 * TOM + 0.7 *DICK ?? +0.4 *HARRY <= 1;
再求解得到solution report如下:
? Global optimal solution found atiteration:????????????0
? Objectivevalue:????????????????????????????????10.57143
?
?
??????????????????????Variable??????????Value??????? Reduced Cost
???????????????????????????TOM???????2.000000???????????0.000000
??????????????????????????DICK??????0.8571429???????????0.000000
?????????????????????????HARRY???????0.000000???????????1.611429
?
???????????????????????????Row??? Slack or Surplus????? Dual Price
?????????????????????????????1??????? 10.57143???????????1.000000
?????????????????????????????2???????0.000000???????????1.257143
?????????????????????????????3??????? 0.000000???????????4.285714
?
變量TOM、DICK的取值沒有變化分別為2.000000、0.8571429.從變量HARRY的Reduced Cost中看到從原來得3.611429到現在得1.611429差為2.如果如果系數變化在Reduced Cost內,優化取值不變.
?
Slack or Surplus(小于:松弛,大于:過剩):
如果滿足約束條件,則該值是左右差的絕對值.
如果不滿足約束條件,則該值為負數.
如果該值為0,說明兩邊相等.
例2模型如下:
Max = 3 * X + 4 * Y;
???????????X??????????<= 40;
?????????????????????Y <= 60;
???????????X +??? ??Y <=80;
解該模型,得到的Solution Report如下:
? Global optimal solution found atiteration:????????????0
? Objectivevalue:????????????????????????????????300.0000
?
?
??????????????????????Variable??????????Value??????? Reduced Cost
?????????????????????????????X??????? 20.00000???????????0.000000
?????????????????????????????Y???????60.00000???????????0.000000
?
???????????????????????????Row??? Slack or Surplus????? Dual Price
?????????????????????????????1??????? 300.0000???????????1.000000
?????????????????????????????2??????? 20.00000???????????0.000000
?????????????????????????????3???????0.000000???????????1.000000
4???????0.000000???????????3.000000
把X=20.00000,Y=60.00000代入目標函數和約束條件:
1??? Max=300;????? 300
2??? 20<=40;?????? 20
3??? 60<=60;?????? 0
4??? 20+60<=80;??? 0
?
Dual Price:
如果該行右邊數值加1,就得到優化模型相應的加上該行的Dual Price或減去該行的Dual Price。舉例如下:
在例2中第4行的Dual Price為3,現在我們在第4行的右邊加上1等到如下模型:
Max = 3 * X + 4 * Y;
???????????X??????????<= 40;
?????????????????????Y <= 60;
???????????X +??? ??Y <=81;(本來是80)
解該模型,得到的Solution Report如下:
? Global optimal solution found at iteration:????????????2
? Objectivevalue:????????????????????????????????303.0000
?
?
??????????????????????Variable??????????Value??????? Reduced Cost
?????????????????????????????X??????? 21.00000???????????0.000000
?????????????????????????????Y???????60.00000???????????0.000000
?
???????????????????????????Row??? Slack or Surplus????? Dual Price
?????????????????????????????1??????? 303.0000???????????1.000000
?????????????????????????????2??????? 19.00000???????????0.000000
?????????????????????????????3???????0.000000???????????1.000000
?????????????????????????4???????0.000000???????????3.000000
Objective value值從300增加到303。
?
2? Range
點擊Range命令在當前模型中會產生一個Range report窗口,在該窗口中有兩段分別是,Objective Coefficient Ranges(目標函數系數范圍)和RighthandSide Ranges(約束條件右邊的范圍)在例2模型下,產生的range report窗口內容如下:
?
?Ranges in which the basis is unchanged:
?
?????????????????????????????????????Objective Coefficient Ranges
?????????????????????????????????Current??????? Allowable???????Allowable
???????????????Variable?????Coefficient????????Increase???????? Decrease
??????????????????????X????????3.000000???????? 1.000000????????3.000000
??????????????????????Y????????4.000000???????? INFINITY????????1.000000
?
??????????????????????????????????????????Righthand Side Ranges
????????????????????Row?????????Current??????? Allowable???????Allowable
?????????????????????????????????????RHS????????Increase???????? Decrease
??????????????????????2????????40.00000???????? INFINITY????????20.00000
??????????????????????3????????60.00000????????20.00000???????? 20.00000
??????????????????4????????80.00000????????20.00000???????? 20.00000
?
Objective Coefficient Ranges:
在Objective Coefficient Ranges中的第一列為目標函數的變量名稱,第二列為對應變量名的系數,第三列是系數可增加的最大范圍,第四列是系數可減少的最大范圍.
改變目標函數的變量系數(在給定的范圍內),不改變優化求解中變量的取值.
?
Right-handSide Ranges:
在Right-handSide Ranges中的第一列為row的名稱,第二列是常數項或者是右邊的值.第三列是該模型的右邊最多可以加的量,第四列是該模型的右邊最多可以減的量.我們可以回想,在solution report中有DualPrice列,在右邊加1(1必須不大于Righthand Side Ranges中,Allowable Increase對應的值),就得到優化模型相應的加上該行的DualPrice或減去該行的Dual Price.
3 Options
該菜單中包含絕大部分的LINGO參數,可設置的tabs內容如下:
·????????Interface,
·????????GeneralSolver,
·????????LinearSolver,
·????????NonlinearSolver,
·????????IntegerPre-Solver
·????????IntegerSolver, and
·????????GlobalSolver.
在Interface的tabs面中可以控制LINGO系統的界面(包括是否顯示工具欄,界面的大小),輸出形式(Terse Output)以及默認的文件格式.其它的tabs內容可以參考幫助文件.
4 Model Statistics
統計該模型的信息,包括行數、變量數、約束條件數等等;在如下模型中:
model:
max=2* x1+3*x2;
x1+2*x2+x3=8;
4*x1+x4=16;
4*x2+x5=12;
end
執行LINGO|ModelStatistics后得到如下:
?Rows=??????4 Vars=?????? 2 No. integervars=????? 0? ( all are linear)
?Nonzeros=???????9 Constraint nonz=???????4(??????? 1 are +- 1) Density= 0
?Smallestand largest elements in abs value=???1.00000??????? 16.0000
?No.< :?????? 3 No.=:?????? 0 No. >:?????? 0, Obj= MAX, GUBs<=?????? 2
?Singlecols=??? 0
其中Single cols表示松弛變量;現在我們在上面模型中添加三個松弛變量,模型變為:
model:
max=2*x1+3*x2+0*x3+0*x4+0*x5;
x1+2*x2+x3=8;
4*x1+x4=16;
4*x2+x5=12;
end
執行LINGO|ModelStatistics后得到如下:
Rows=??????4 Vars=?????? 5 No. integervars=????? 0? ( all are linear)
Nonzeros=??????12 Constraint nonz=???????7(?????? ?4 are +- 1) Density= 0
Smallest andlargest elements in abs value=???1.00000??????? 16.0000
No. <:?????? 0 No.=:?????? 3 No. > :??????0, Obj= MAX, GUBs <=?????? 2
Singlecols=??? 3
Single cols由原來的0變到3.
?
總結
以上是生活随笔為你收集整理的lingo解题报告内容解释的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MATLAB画图命令zz
- 下一篇: poj3714 最近点对