版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、整理課件,1,LINGO軟件,Hanguang Xiao Chongqing University of Technology,2,整理課件,主要內(nèi)容,LINGO軟件 LINGO中建模語(yǔ)言(集合、運(yùn)算符和函數(shù)等) LINGO編程實(shí)例 露天礦生產(chǎn)的車輛安排,3,整理課件,LINGO軟件,1)美國(guó)芝加哥(Chicago)大學(xué)的Linus Schrage(萊納斯.施拉蓋 )教授于1980年前后開(kāi)發(fā)。 (2) LINGO: Linear Interactive General Optimizer (線性交互式通用優(yōu)化器)。 (3)用來(lái)求解的優(yōu)化模型(連續(xù)優(yōu)化和整數(shù)規(guī)劃(IP)。 類型:線性規(guī)劃(LP)
2、、二次規(guī)劃(QP)、非線性規(guī)劃(NLP,4,整理課件,LINDO/LINGO軟件能求解的模型,優(yōu)化,線性規(guī)劃,非線性規(guī)劃,二次規(guī)劃,連續(xù)優(yōu)化,整數(shù)規(guī)劃,LINDO,LINGO,5,整理課件,學(xué)習(xí)LINGO需掌握的方面,LINGO: Linear Interactive General Optimizer (V12.0) 求解數(shù)學(xué)規(guī)劃問(wèn)題 Min Z = f (x) s.t x D ( Rn ) 需要掌握: 軟件操作 基本語(yǔ)法結(jié)構(gòu) 掌握集合(SETS)的應(yīng)用 正確閱讀求解報(bào)告 正確理解求解狀態(tài)窗口 學(xué)會(huì)設(shè)置基本的求解選項(xiàng)(OPTIONS,6,整理課件,LINGO軟件界面,7,整理課件,LINGO
3、軟件菜單FILE,1新建(New) 單擊“新建”按鈕或直接按F2鍵可以創(chuàng)建一個(gè)新的“Model”窗口。在這個(gè)新的“Model”窗口中能夠輸入所要求解的模型。 2 打開(kāi)(Open) 單擊“打開(kāi)”按鈕或直接按F3鍵可以打開(kāi)一個(gè)已經(jīng)存在的文本文件。這個(gè)文件可能是一個(gè)Model文件。 3 保存(Save) 單擊“保存”按鈕或直接按F4鍵用來(lái)保存當(dāng)前活動(dòng)窗口(最前臺(tái)的窗口)中的模型結(jié)果、命令序列等保存為文件。 4 另存為(Save As) “另存為”命令或按F5鍵可以將當(dāng)前活動(dòng)窗口中的內(nèi)容保存為文本文件,其文件名為你在“另存為”對(duì)話框中輸入的文件名。利用這種方法你可以將任何窗口的內(nèi)容如模型、求解結(jié)果或命
4、令保存為文件。 5 關(guān)閉(Close) 在文件菜單中選用“關(guān)閉”(Close)命令或按F6鍵將關(guān)閉當(dāng)前活動(dòng)窗口。如果這個(gè)窗口是新建窗口或已經(jīng)改變了當(dāng)前文件的內(nèi)容,LINGO系統(tǒng)將會(huì)提示是否想要保存改變后的內(nèi)容 6 打印(Print) “打印” (Print)命令、單擊“打印”按鈕或直接按F7鍵可以將當(dāng)前活動(dòng)窗口中的內(nèi)容發(fā)送到打印機(jī) 7 打印設(shè)置(Print Setup) “打印設(shè)置”命令或直接按F8鍵可以將文件輸出到指定的打印機(jī)。 8 打印預(yù)覽(Print Preview) “打印預(yù)覽”命令或直接按Shift+F8鍵可以進(jìn)行打印預(yù)覽。 9 輸出到日志文件(Log Output) 從文件菜單中選
5、用“Log Output”命令或按F9鍵打開(kāi)一個(gè)對(duì)話框,用于生成一個(gè)日志文件,它存儲(chǔ)接下來(lái)在“命令窗口”中輸入的所有命令。 10提交LINGO命令腳本文件(Take Commands) “Take Commands”命令或直接按F11鍵就可以將LINGO命令腳本(command script)文件提交給系統(tǒng)進(jìn)程來(lái)運(yùn)行。 11引入LINGO文件(Import Lingo File) 從文件菜單中選用“Import Lingo File”命令或直接按F12鍵可以打開(kāi)一個(gè)LINGO格式模型的文件,然后LINGO系統(tǒng)會(huì)盡可能把模型轉(zhuǎn)化為L(zhǎng)INGO語(yǔ)法允許的程序。 12退出(Exit) 從文件菜單中選用
6、“Exit”命令或直接按F10鍵可以退出LINGO系統(tǒng),8,整理課件,LINGO軟件菜單EIDT,1 恢復(fù)(Undo) 從編輯菜單中選用“恢復(fù)”(Undo)命令或按Ctrl+Z組合鍵,將撤銷上次操作、恢復(fù)至其前的狀態(tài)。 2 剪切(Cut) 從編輯菜單中選用“剪切”(Cut)命令或按Ctrl+X組合鍵可以將當(dāng)前選中的內(nèi)容剪切至剪貼板中。 3 復(fù)制(Copy) 從編輯菜單中選用“復(fù)制”(Copy)命令、單擊“復(fù)制”按鈕或按Ctrl+C組合鍵可以將當(dāng)前選中的內(nèi)容復(fù)制到剪貼板中。 4 粘貼(Paste) 從編輯菜單中選用“粘貼”(Paste)命令、單擊“粘貼”按鈕或按Ctrl+V組合鍵可以將粘貼板中的
7、當(dāng)前內(nèi)容復(fù)制到當(dāng)前插入點(diǎn)的位置。 5 粘貼特定.(Paste Special。) 與上面的命令不同,它可以用于剪貼板中的內(nèi)容不是文本的情形. 6 全選(Select All) 從編輯菜單中選用“Select All”命令或按Ctrl+A組合鍵可選定當(dāng)前窗口中的所有內(nèi)容。 7 匹配小括號(hào)(Match Parenthesis) 從編輯菜單中選用“Match Parenthesis”命令、單擊“Match Parenthesis”按鈕或按Ctrl+P組合鍵可以為當(dāng)前選中的開(kāi)括號(hào)查找匹配的閉括號(hào)。 8 粘貼函數(shù)(Paste Function) 從編輯菜單中選用“Paste Function”命令可以將
8、LINGO的內(nèi)部函數(shù)粘貼到當(dāng)前插入點(diǎn),9,整理課件,LINGO軟件菜單LINGO,1 求解模型(Slove) 從LINGO菜單中選用“求解”命令、單擊“Slove”按鈕或按Ctrl+S組合鍵可以將當(dāng)前模型送入內(nèi)存求解。 2 求解結(jié)果(Solution) 從LINGO菜單中選用“Solution”命令、單擊“Solution”按鈕或直接按Ctrl+O組合鍵可以打開(kāi)求解結(jié)果的對(duì)話框。這里可以指定查看當(dāng)前內(nèi)存中求解結(jié)果的那些內(nèi)容。 3靈敏性分析(Range,Ctrl+R) 用該命令產(chǎn)生當(dāng)前模型的靈敏性分析報(bào)告:研究當(dāng)目標(biāo)函數(shù)的費(fèi)用系數(shù)和約束右端項(xiàng)在什么范圍(此時(shí)假定其它系數(shù)不變)時(shí),最優(yōu)基保持不變。
9、靈敏性分析是在求解模型時(shí)作出的,因此在求解模型時(shí)靈敏性分析是激活狀態(tài),但是默認(rèn)是不激活的。為了激活靈敏性分析,運(yùn)行LINGO|Options,選擇General Solver Tab, 在Dual Computations列表框中,選擇Prices and Ranges選項(xiàng)。靈敏性分析耗費(fèi)相當(dāng)多的求解時(shí)間,因此當(dāng)速度很關(guān)鍵時(shí),就沒(méi)有必要激活它。 4選項(xiàng)(Options) 從LINGO菜單中選用“Options”命令、單擊“Options”按鈕或直接按Ctrl+I組合鍵可以改變一些影響LINGO模型求解時(shí)的參數(shù)。該命令將打開(kāi)一個(gè)含有7個(gè)選項(xiàng)卡的窗口,你可以通過(guò)它修改LINGO系統(tǒng)的各種參數(shù)和選項(xiàng)
10、。 5 模型通常形式(Generate) 從LINGO菜單中選用“Generate”命令或直接按Ctrl+G組合鍵可以創(chuàng)建當(dāng)前模型的代數(shù)形式、LINGO模型或MPS格式文本。 6. 圖片(Picture) 7. 調(diào)試(Debug) 8. 模型統(tǒng)計(jì)(Model Statistics) 6查看(Look) 從LINGO菜單中選用“Look”命令或直接按Ctrl+L組合鍵可以查看全部的或選中的模型文本內(nèi)容,10,整理課件,LINGO軟件菜單WINDOW,1 命令行窗口(Open Command Window) 從窗口菜單中選用“Open Command Window”命令或直接按Ctrl+1可以打開(kāi)
11、LINGO的命令行窗口。在命令行窗口中可以獲得命令行界面,在“:”提示符后可以輸入LINGO的命令行命令。 2 狀態(tài)窗口(Status Window) 從窗口菜單中選用“Status Window”命令或直接按Ctrl+2可以打開(kāi)LINGO的求解狀態(tài)窗口。 回到模型窗口(Sent To Back) Ctrl+B 關(guān)閉所有窗口(Close All) Ctrl+3 并行放置窗口 (Tile) Ctrl+4 層疊放置窗口(Cascade) Ctrl+5 放置圖標(biāo)(Arrange Icons) Ctrl+6,11,整理課件,LINGO軟件菜單HELP,1 幫助主題(Help Menu) 從幫助菜單中選
12、用“Help Menu”可以打開(kāi)LINGO的幫助文件。 注冊(cè)信息(Register) 填寫(xiě)注冊(cè)信息。 自動(dòng)更新(AutoUptate) 自動(dòng)升級(jí)。 2 關(guān)于LINGO(About Lingo) 關(guān)于當(dāng)前LINGO的版本信息等,整理課件,12,打開(kāi)文件:F3,打印文件:F7,復(fù)制:Ctrl+C,取消操作:Ctrl+Z,查找:Ctrl+F,顯示解答:Alt+O,匹配括號(hào):Ctrl+P,選項(xiàng)設(shè)置: Ctrl+I,關(guān)閉所有窗口:Alt+X,在線幫助:F1,新建文件:F2,保存文件:F4,剪切:Ctrl+X,粘貼:Ctrl+V,恢復(fù)操作:Ctrl+Y,定位某行:ctrl+T,求解模型:Ctrl+S,模型
13、圖示:Ctrl+K,窗口后置:Ctrl+B,平鋪窗口:Alt+T,上下文相關(guān)的幫助,LINGO軟件工具欄,整理課件,13,LINGO軟件文件保存類型,整理課件,14,Variables(變量數(shù)量): 變量總數(shù)(Total)、 非線性變量數(shù)(Nonlinear)、 整數(shù)變量數(shù)(Integer,Constraints(約束數(shù)量): 約束總數(shù)(Total)、 非線性約束個(gè)數(shù)(Nonlinear,Nonzeros(非零系數(shù)數(shù)量): 總數(shù)(Total)、 非線性項(xiàng)系數(shù)個(gè)數(shù)(Nonlinear,Generator Memory Used (K) (內(nèi)存使用量,Elapsed Runtime (hh:mm:
14、ss)(求解花費(fèi)的時(shí)間,LINGO軟件運(yùn)行狀態(tài)窗口的參數(shù)解釋,整理課件,15,LINGO軟件運(yùn)行狀態(tài)窗口的參數(shù)解釋,求解器(求解程序)狀態(tài)框,當(dāng)前模型的類型 :LP,QP,ILP,IQP,PILP, PIQP,NLP,INLP,PINLP (以I開(kāi)頭表示IP,以PI開(kāi)頭表示PIP,當(dāng)前解的狀態(tài) : Global Optimum, Local Optimum, Feasible, Infeasible“(不可行), Unbounded“(無(wú)界), Interrupted“(中斷), Undetermined“(未確定,解的目標(biāo)函數(shù)值,當(dāng)前約束不滿足的總量(不是不滿足的約束的個(gè)數(shù)):實(shí)數(shù)(即使該值
15、=0,當(dāng)前解也可能不可行,因?yàn)檫@個(gè)量中沒(méi)有考慮用上下界命令形式給出的約束,目前為止的迭代次數(shù),整理課件,16,運(yùn)行狀態(tài)窗口,擴(kuò)展的求解器(求解程序)狀態(tài)框,使用的特殊求解程序 : B-and-B (分枝定界算法) Global (全局最優(yōu)求解程序) Multistart(用多個(gè)初始點(diǎn)求解的程序,目前為止找到的可行解的最佳目標(biāo)函數(shù)值,目標(biāo)函數(shù)值的界,特殊求解程序當(dāng)前運(yùn)行步數(shù): 分枝數(shù)(對(duì)B-and-B程序); 子問(wèn)題數(shù)(對(duì)Global程序); 初始點(diǎn)數(shù)(對(duì)Multistart程序,有效步數(shù),17,整理課件,主要內(nèi)容,LINGO軟件簡(jiǎn)介 LINGO建模語(yǔ)言(集合、運(yùn)算符和函數(shù)等) LINGO編程實(shí)
16、例 露天礦生產(chǎn)的車輛安排,18,整理課件,一個(gè)簡(jiǎn)單的LINGO程序,例 直接用LINGO來(lái)解如下二次規(guī)劃問(wèn)題,輸入窗口如下,目標(biāo)函數(shù),約束條件,變量取整,每個(gè)語(yǔ)句以“;”結(jié)束,順序無(wú)關(guān),程序: eg1.lg4,19,整理課件,輸出結(jié)果,運(yùn)行菜單命令“LINGO|Solve,最優(yōu)整數(shù)解 X=(35,65,最大利潤(rùn)=11077.5,一個(gè)簡(jiǎn)單的LINGO程序,整理課件,20,例1 SAILCO公司需要決定下四個(gè)季度的帆船生產(chǎn)量。下四個(gè)季度的帆船需求量分別是40條,60條,75條,25條,這些需求必須按時(shí)滿足。每個(gè)季度正常的生產(chǎn)能力是40條帆船,每條船的生產(chǎn)費(fèi)用為400美元。如果加班生產(chǎn),每條船的生產(chǎn)
17、費(fèi)用為450美元。每個(gè)季度末,每條船的庫(kù)存費(fèi)用為20美元。假定生產(chǎn)提前期為0,初始庫(kù)存為10條船。如何安排生產(chǎn)可使總費(fèi)用最小,21,整理課件,集合及其屬性,quarters/1,2,3,4/:dem,rp,op,inv,22,整理課件,LINGO中定義集合及其屬性,以“MODEL:”開(kāi)始,以“END”結(jié)束,給出優(yōu)化目標(biāo)和約束,程序: eg2.lg4,23,整理課件,目標(biāo)函數(shù)的定義方式,對(duì)語(yǔ)句中冒號(hào)“:”后面的表達(dá)式,按照“:”前面的集合指定的下標(biāo)(元素)進(jìn)行求和,本例中目標(biāo)函數(shù)也可以等價(jià)地寫(xiě)成 SUM(QUARTERS(i): 400*RP(i) +450*OP(i) +20*INV(i) )
18、 “SUM”相當(dāng)于求和符號(hào)“”, 由于本例中目標(biāo)函數(shù)對(duì)集合QUARTERS的所有元素(下標(biāo)) 都要求和,所以可以將下標(biāo)i省去,SUM(集合(下標(biāo)):關(guān)于集合的屬性的表達(dá)式,24,整理課件,約束條件的定義方式,循環(huán)函數(shù) FOR(集合(下標(biāo)):關(guān)于集合的屬性的約束關(guān)系式,對(duì)冒號(hào)“:”前面的集合的每個(gè)元素(下標(biāo)),冒號(hào)“:”后面的約束關(guān)系式都要成立,本例中,每個(gè)季度正常的生產(chǎn)能力是40條帆船,這正是語(yǔ)句“FOR(QUARTERS(I):RP(I)=40);”的含義。 這個(gè)語(yǔ)句可以簡(jiǎn)化成“FOR(QUARTERS:RP40);”,25,整理課件,問(wèn)題求解:運(yùn)行菜單命令“LINGO|SOLVE,最小成本
19、=78450,26,整理課件,LINGO模型最基本的組成要素,1)集合段(SETS):以“ SETS:” 開(kāi)始, “ENDSETS”結(jié)束,定義必要的集合變量(SET)及其元素(MEMBER,含義類似于數(shù)組的下標(biāo))和屬性(ATTRIBUTE,含義類似于數(shù)組,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等,27,整理課件,LINGO模型最基本的組成要素,3)數(shù)據(jù)段(DATA):以 “DATA:” 開(kāi)始, “ENDDATA”結(jié)束,
20、對(duì)集合的屬性(數(shù)組)輸入必要的常數(shù)數(shù)據(jù)。 格式為:“attribute(屬性) = value_list(常數(shù)列表);” 常數(shù)列表(value_list)中數(shù)據(jù)之間可以用逗號(hào)“,”分開(kāi),也可以用空格分開(kāi)(回車等價(jià)于一個(gè)空格),如上面對(duì)DEM的賦值也可以寫(xiě)成“DEM=40 60 75 25;,28,整理課件,LINGO模型最基本的組成要素,4)初始段(INIT):以“INIT: ”開(kāi)始, “ENDINIT”結(jié)束,對(duì)集合的屬性(數(shù)組)定義初值(因?yàn)榍蠼馑惴ㄒ话闶堑惴ǎ?,如果能給出一個(gè)比較好的迭代初值,對(duì)提高算法的計(jì)算效果是有益的)。 如果有一個(gè)接近最優(yōu)解的初值,對(duì)LINGO求解模型是有幫助
21、的。定義初值的格式為: “attribute(屬性) = value_list(常數(shù)列表);,5)計(jì)算段(CALC):以“CALC: ”開(kāi)始, “ENDCALC”結(jié)束,對(duì)一些原始數(shù)據(jù)進(jìn)行計(jì)算處理,29,整理課件,基本集合與派生集合,例2 建筑工地的位置(用平面坐標(biāo)a, b表示,距離單位:公里)及水泥日用量d(噸)下表給出。有兩個(gè)臨時(shí)料場(chǎng)位于P (5,1), Q (2, 7),日儲(chǔ)量各有20噸。從A, B兩料場(chǎng)分別向各工地運(yùn)送多少噸水泥,使總的噸公里數(shù)最小。兩個(gè)新的料場(chǎng)應(yīng)建在何處,節(jié)省的噸公里數(shù)有多大,30,整理課件,基本集合與派生集合,建立模型,記工地的位置為 ,水泥日用量為 ;料場(chǎng)位置為 ,
22、日儲(chǔ)量為 ;從料場(chǎng) 向工地 的運(yùn)送量為,31,整理課件,基本集合與派生集合,本例中集合的概念,利用集合的概念,可以定義需求點(diǎn)DEMAND和供應(yīng)點(diǎn)SUPPLY兩個(gè)集合,分別有6個(gè)和2個(gè)元素(下標(biāo),集合的屬性相當(dāng)于以集合的元素為下標(biāo)的數(shù)組。這里的 相當(dāng)于二維數(shù)組。它的兩個(gè)下標(biāo)分別來(lái)自集合DEMAND和SUPPLY,因此可以定義一個(gè)由二元對(duì)組成的新的集合,然后將 定義成這個(gè)新集合的屬性,link(demand,supply):c,32,整理課件,基本集合與派生集合,定義了三個(gè)集合,其中LINK在前兩個(gè)集合DEMAND 和SUPPLY的基礎(chǔ)上定義,表示集合LINK中的元素就是集合DEMAND 和SUP
23、PLY的元素組合成的有序二元組, 從數(shù)學(xué)上看LINK是DEMAND 和SUPPLY的笛卡兒積,也就是說(shuō) LINK=(S,T)|SDEMAND,TSUPPLY 因此,其屬性C也就是一個(gè)6*2的矩陣(或者說(shuō)是含有12個(gè)元素的二維數(shù)組,LINGO建模語(yǔ)言也稱為矩陣生成器(MATRIX GENERATOR)。類似DEMAND 和SUPPLY直接把元素列舉出來(lái)的集合,稱為基本集合(primary set),而把LINK這種基于其它集合而派生出來(lái)的二維或多維集合稱為派生集合(derived set)。由于是DEMAND 和SUPPLY生成了派生集合LINK,所以DEMAND 和SUPPLY 稱為L(zhǎng)INK的
24、父集合,程序: eg3.lg4,33,整理課件,基本集合與派生集合,初始段,LINGO對(duì)數(shù)據(jù)是按列賦值的 語(yǔ)句的實(shí)際賦值順序是 X=(5,2), Y=(1,7), 而不是X=(5,1), Y=(2,7) 等價(jià)寫(xiě)法: “X=5,2; Y=1,7;,同理,數(shù)據(jù)段中對(duì)常數(shù)數(shù)組A,B的賦值語(yǔ)句也可以寫(xiě)成 A, B=1.25 1.25 8.75 0.75 0.5 4.75 5.75 5 3 6.5 7.25 7.75,34,整理課件,基本集合與派生集合,35,整理課件,基本集合與派生集合,解答:運(yùn)行菜單命令“LINGO|Solve,局部最優(yōu)解X(1)=7.249997, X(2)=5.695940,Y(
25、1)=7.749998, Y(2)=4.928524,C(略), 最小運(yùn)量=89.8835(噸公里,問(wèn)題:最小運(yùn)量89.8835是不是全局最優(yōu),使用“LINGO|Options”菜單命令打開(kāi)選項(xiàng)對(duì)話框,在“Global Solver”選項(xiàng)卡上選擇“Use Global Solver”, 激活全局最優(yōu)求解程序,36,整理課件,基本集合與派生集合,問(wèn)題:最小運(yùn)量89.8835是不是全局最優(yōu),為減少計(jì)算工作量,對(duì)X,Y的取值再做一些限制。雖然理論上新建料場(chǎng)的位置可以是任意的,但顯然最佳的料場(chǎng)位置不應(yīng)該離工地太遠(yuǎn),至少不應(yīng)該超出現(xiàn)在6個(gè)工地所決定的坐標(biāo)的最大、最小值決定的矩形之外,即: 0.5=x=8
26、.75, 0.75=y=7.75,此時(shí)目標(biāo)函數(shù)值的下界(Obj Bound=85.2638)與目前得到的最好的可行解的目標(biāo)函數(shù)值(Best Obj=85.2661)相差已經(jīng)非常小,可以認(rèn)為已經(jīng)得到了全局最優(yōu)解,37,整理課件,基本集合與派生集合,計(jì)算結(jié)果,工地與料場(chǎng)示意圖 : “*”表示料場(chǎng),“+”表示工地,可以認(rèn)為是模型的最后結(jié)果,如果要把料廠P(5, 1), Q (2, 7)的位置看成是已知并且固定的,這時(shí)是LP模型。只需要把初始段的“X Y =5,1,2,7;”語(yǔ)句移到數(shù)據(jù)段就可以了。此時(shí),運(yùn)行結(jié)果告訴我們得到全局最優(yōu)解(變量C的取值這里略去),最小運(yùn)量136.2275(噸公里,38,整
27、理課件,稠密集合與稀疏集合,包含了兩個(gè)基本集合構(gòu)成的所有二元有序?qū)Φ呐缮戏Q為稠密集合(簡(jiǎn)稱稠集)。有時(shí)候,在實(shí)際問(wèn)題中,一些屬性(數(shù)組) 只在笛卡兒積的一個(gè)真子集合上定義,這種派生集合稱為稀疏集合(簡(jiǎn)稱疏集,例3 (最短路問(wèn)題) 在縱橫交錯(cuò)的公路網(wǎng)中,貨車司機(jī)希望找到一條從一個(gè)城市到另一個(gè)城市的最短路. 下圖表示的是公路網(wǎng), 節(jié)點(diǎn)表示貨車可以??康某鞘?弧上的權(quán)表示兩個(gè)城市之間的距離(百公里). 那么,貨車從城市S出發(fā)到達(dá)城市T,如何選擇行駛路線,使所經(jīng)過(guò)的路程最短,39,整理課件,稠密集合與稀疏集合,分析,為得到從S到T的最優(yōu)行駛路線, 只需要先求出從S到Ck(k=1,2)的最優(yōu)行駛路線
28、, 就可以方便地得到從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)行駛路線是很容易得到的(實(shí)際上, 此例中S到Ai(i=1,2,3)只有唯一的道路,40,整理課件,稠密集合與稀疏集合,分析,可把從S到T的行駛過(guò)程分成4個(gè)階段,即 SAi (i=1,2或3), Ai Bj(j=1或2), Bj Ck(k=1或2), Ck T. 記d(Y,X)為城市Y與城市X之間的直
29、接距離(若這兩個(gè)城市之間沒(méi)有道路直接相連,則可以認(rèn)為直接距離為),用L(X)表示城市S到城市X的最優(yōu)行駛路線的路長(zhǎng),41,整理課件,稠密集合與稀疏集合,計(jì)算,所以, 從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,42,整理課件,本例的LINGO求解,CITIES”(城市):一個(gè)基本集合(元素通過(guò)枚舉給出,L:CITIES對(duì)應(yīng)的屬性變量(我們要求的最短路長(zhǎng),ROADS”(道路):由CITIES導(dǎo)出的一個(gè)派生集合(請(qǐng)?zhí)貏e注意其用法),由于只有一部分
30、城市之間有道路相連,所以不應(yīng)該把它定義成稠密集合,將其元素通過(guò)枚舉給出,這就是一個(gè)稀疏集合,D:稀疏集合ROADS對(duì)應(yīng)的屬性變量(給定的距離,程序: eg4.lg4,43,整理課件,稠密集合與稀疏集合,從模型中還可以看出:這個(gè)LINGO程序可以沒(méi)有目標(biāo)函數(shù),這在LINGO中,可以用來(lái)找可行解(解方程組和不等式組,在數(shù)據(jù)段對(duì)L進(jìn)行賦值,只有L(S)=0已知,后面的值為空(但位置必須留出來(lái),即逗號(hào)“,”一個(gè)也不能少,否則會(huì)出錯(cuò))。如果這個(gè)語(yǔ)句直接寫(xiě)成“L=0;”,語(yǔ)法上看也是對(duì)的,但其含義是L所有元素的取值全部為0,所以也會(huì)與題意不符,44,整理課件,稠密集合與稀疏集合,雖然集合CITIES中的元
31、素不是數(shù)字,但當(dāng)它以CITIES(I)的形式出現(xiàn)在循環(huán)中時(shí),引用下標(biāo)I卻實(shí)際上仍是正整數(shù),也就是說(shuō)I指的正是元素在集合中的位置(順序),一般稱為元素的索引(INDEX,在for循環(huán)中的過(guò)濾條件里用了一個(gè)函數(shù)“index”, 其作用是返回一個(gè)元素在集合中的索引值,這里index(S)=1(即元素S在集合中的索引值為1),所以邏輯關(guān)系式“I#GT#index(S)”可以可以直接等價(jià)地寫(xiě)成“I#GT#1” 。這里index(S)實(shí)際上還是index(CITIES,S)的簡(jiǎn)寫(xiě),即返回S在集合CITIES中的索引值,45,整理課件,稠密集合與稀疏集合,本例的LINGO求解結(jié)果,從S到T的最優(yōu)行駛路線的路
32、長(zhǎng)為20(進(jìn)一步分析,可以得到最優(yōu)行駛路線為S A3 B2 C1 T,整理課件,46,集合的類型,集合 派生集合 基本集合 稀疏集合 稠密集合 元素列表法 元素過(guò)濾法 直接列舉法 隱式列舉法,setname /member_list/ : attribute_list,setname(parent_set_list) /member_list/ : attribute_list,SETS: CITIES /A1,A2,A3,B1,B2/; ROADS(CITIES, CITIES)/ A1,B1 A1,B2 A2,B1 A3,B2/:D; ENDSETS,SETS: STUDENTS /S1.
33、S8/; PAIRS( STUDENTS, STUDENTS) | ENDSETS,47,整理課件,集合使用小結(jié),基本集合的定義語(yǔ)法,setname /member_list/ : attribute_list; 其中setname為定義的集合名,member_list為元素列表,attribute_list為屬性列表,48,整理課件,派生集合的定義語(yǔ)法,setname(parent_set_list) /member_list/ : attribute_list; 與基本集合的定義相比較多了一個(gè)parent_set_list(父集合列表)。 父集合列表中的集合(如 set1,set2,等)稱
34、為派生集合setname的父集合,它們本身也可以是派生集合,49,整理課件,算術(shù)運(yùn)算符,LINGO中的算術(shù)運(yùn)算符有以下5種: +(加法), -(減法或負(fù)號(hào)), *(乘法), /(除法), (求冪,50,整理課件,邏輯運(yùn)算符,在LINGO中,邏輯運(yùn)算(表達(dá)式)通常作為過(guò)濾條件使用,邏輯運(yùn)算符有9種,可以分成兩類: #AND#(與) #OR#(或) #NOT#(非):邏輯值之間的運(yùn)算,它們操作的對(duì)象本身已經(jīng)是邏輯值或邏輯表達(dá)式,計(jì)算結(jié)果也是邏輯值。 #EQ#(等于) #NE#(不等于) #GT#(大于),#GE#(大于等于),#LT#(小于),#LE#(小于等于):是“數(shù)與數(shù)之間”的比較,也就是它
35、們操作的對(duì)象本身必須是兩個(gè)數(shù), 計(jì)算得到的結(jié)果是邏輯值,51,整理課件,關(guān)系運(yùn)算符,在LINGO中用來(lái)表示優(yōu)化模型的約束條件。 LINGO中關(guān)系運(yùn)算符有3種: (即=,大于等于) (在優(yōu)化模型中約束一般沒(méi)有嚴(yán)格小于、嚴(yán)格大于關(guān)系,整理課件,52,運(yùn)算符的優(yōu)先級(jí),53,整理課件,基本的數(shù)學(xué)函數(shù),ABS(X):絕對(duì)值函數(shù),返回X的絕對(duì)值。 COS(X):余弦函數(shù),返回X的余弦值(X的單位是弧度)。 EXP(X):指數(shù)函數(shù),返回,FLOOR(X):取整函數(shù),返回X的整數(shù)部分(向最靠近0的方向取整)。 LGM(X) :返回X的伽瑪(gamma)函數(shù)的自然對(duì)數(shù)值(當(dāng)X為整數(shù)時(shí) LGM(X) = LOG(
36、X-1)?。?當(dāng)X不為整數(shù)時(shí),采用線性插值得到結(jié)果)。 LOG(X):自然對(duì)數(shù)函數(shù),返回X的自然對(duì)數(shù)值,的值(其中e=2.718281.,MOD(X,Y):模函數(shù),返回X對(duì)Y取模的結(jié)果,即X除以Y的余數(shù), 這里X和Y應(yīng)該是整數(shù)。 POW(X,Y):指數(shù)函數(shù),返回XY的值,54,整理課件,基本的數(shù)學(xué)函數(shù),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):平方函數(shù),返回X的
37、平方(即X*X)的值。 SQRT(X):開(kāi)平方函數(shù),返回X的正的平方根的值。 TAN(X):正切函數(shù),返回X的正切值(X的單位是弧度,55,整理課件,集合循環(huán)函數(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ù)):返回集合setna
38、me上的表達(dá)式的和,56,整理課件,集合操作函數(shù),INDEX( set_name, primitive_set_element) 給出元素primitive_set_element在集合set_name中的索引值(即按定義集合時(shí)元素出現(xiàn)順序的位置編號(hào))。省略set_name,LINGO按模型中定義的集合順序找到第一個(gè)含有該元素的集合,并返回索引值。如果沒(méi)有找到該元素,則出錯(cuò),IN( set_name, primitive_index_1 , primitive_index_2 .) 判斷一個(gè)集合中是否含有某個(gè)索引值。如果集合set_name中包含由索引primitive_index_1 , p
39、rimitive_index_2 .所對(duì)應(yīng)元素,則返回1(邏輯值“真”),否則返回0(邏輯值“假”,WRAP(I,N) 此函數(shù)對(duì)N1無(wú)定義 當(dāng)I位于區(qū)間1, N內(nèi)時(shí)直接返回I;一般地,返回 J = I - K *N , 其中J位于區(qū)間1, N , K為整數(shù),SIZE (set_name) 返回?cái)?shù)據(jù)集set_name中包含元素的個(gè)數(shù),57,整理課件,變量定界函數(shù),BND(L, X, U) :限制L = X = U。 注意LINGO中沒(méi)有與LINDO命令SLB、SUB類似的函數(shù)SLB和SUB BIN(X) :限制X為0或1。注意LINDO中的命令是INT,但LINGO中這個(gè)函數(shù)的名字卻不是INT(
40、X) FREE(X):取消對(duì)X的符號(hào)限制(即可取負(fù)數(shù)、0或正數(shù)) GIN(X):限制X為整數(shù),58,整理課件,文件輸入輸出函數(shù),FILE(filename) 當(dāng)前模型引用其他ASCII碼文件中的數(shù)據(jù)或文本時(shí)可以采用該語(yǔ)句(但不允許嵌套使用),其中filename為存放數(shù)據(jù)的文件名,該文件中記錄之間用“”分開(kāi)。 ODBC 提供LINGO與ODBC(Open Data Base Connection,開(kāi)放式數(shù)據(jù)庫(kù)連接)的接口。 OLE 提供LINGO與OLE(Object Linking and Embeding)接口。 POINTER( N)在Windows下使用LINGO的動(dòng)態(tài)連接庫(kù)DLL ,
41、直接從共享的內(nèi)存中傳送數(shù)據(jù)。 TEXT(filename) 用于數(shù)據(jù)段中將解答結(jié)果送到文本文件filename中,當(dāng)省略filename時(shí),結(jié)果送到標(biāo)準(zhǔn)的輸出設(shè)備(通常就是屏幕)。filename中可以帶有文件路徑,沒(méi)有指定路徑時(shí)表示在當(dāng)前目錄,如果這個(gè)文件已經(jīng)存在,將會(huì)被覆蓋,59,整理課件,其他函數(shù),IF(logical_condition, true_result, false_result) 當(dāng)邏輯表達(dá)式logical_condition的結(jié)果為真時(shí),返回true_result,否則返回false_result。 WARN(text, logical_condition ) 如果邏輯表
42、達(dá)式“l(fā)ogical_condition”的結(jié)果為真,顯示text信息。 USER(user_determined_arguments) 允許用戶自己編寫(xiě)的函數(shù)(DLL或OBJ文件),可能應(yīng)當(dāng)用C或FORTRAN等其他語(yǔ)言編寫(xiě)并編譯,60,整理課件,主要內(nèi)容,LINGO軟件簡(jiǎn)介 LINGO建模語(yǔ)言(集合、運(yùn)算符和函數(shù)等) LINGO編程實(shí)例 露天礦生產(chǎn)的車輛安排,整理課件,61,例1某晝夜服務(wù)的公交路線每天各時(shí)間區(qū)段內(nèi)需司機(jī)和乘務(wù)人員如下,設(shè)司機(jī)和乘務(wù)人員分別在各時(shí)間區(qū)段一開(kāi)始上班,并連續(xù)工作八小時(shí),問(wèn)該公交線路至少配備多少名司機(jī)和乘務(wù)人員?從第一班開(kāi)始排,試建立線性模型,整理課件,62,解,
43、按所需人數(shù)最少的要求,可得到線性模型如下,整理課件,63,LINGO程序如下,MODEL: min=x1+x2+x3+x4+x5+x6; x1+x6=60; x1+x2=70; x2+x3=60; x3+x4=50; x4+x5=20; x5+x6=30; END,得到的解為,配備的司機(jī)和乘務(wù)人員最少為150人,x1=60,x2=10,x3=50,x4=0,x5=30,x6=0,整理課件,64,例2. 某地區(qū)有三個(gè)農(nóng)場(chǎng)共用一條灌渠,每個(gè)農(nóng)場(chǎng)的可灌溉地及分配到的最大用水量如下表,各農(nóng)場(chǎng)均可種植甜菜、棉花和高粱三種作物,各種作物的用水量、凈收益及國(guó)家規(guī)定的該地區(qū)各種作物種植總面積最高限額如下表,三
44、個(gè)農(nóng)場(chǎng)達(dá)成協(xié)議,他們的播種面積與其可灌溉面積相等,而各農(nóng)場(chǎng)種何種作物并無(wú)限制.問(wèn)如何制定各農(nóng)場(chǎng)種植計(jì)劃才能在上述限制條件下,使本地區(qū)的三個(gè)農(nóng)場(chǎng)的總凈收益最大,整理課件,65,解,設(shè)農(nóng)場(chǎng)1種植的甜菜、棉花和高粱分別為,畝,農(nóng)場(chǎng)2種植的甜菜、棉花和高粱分別為,設(shè)三個(gè)農(nóng)場(chǎng)可耕地分別為,其最大用水量分別為,其甜菜、棉花和高粱的種植限額分別為,整理課件,66,根據(jù)題目條件,可建立如下線性模型,其凈收益分別為,其耗水量分別為,整理課件,67,LINGO編程如下,MODEL: SETS: place/1.3/:a,b; kind/1.3/:c,d,e; plan(place,kind):x; ENDSETS
45、 DATA: a=400,600,300; b=600,800,375; c=600,500,325; d=3,2,1; e=400,300,100; ENDDATA max=sum(kind(j):e(j)*sum(place(i):x(i,j); for(kind(j):sum(place(i):x(i,j)=c(j); for(place(i):sum(kind(j):x(i,j)=a(i); for(place(i):sum(kind(j):d(j)*x(i,j)=b(i); END,整理課件,68,得到結(jié)果如下,X(1,1)=0,X(1,2)=300,X(1,3)=0 X(2,1)=
46、258.3333,X(2,2)=12.5,X(2,3)=0 X(3,1)=0,X(3,2)=187.5,X(3,3)=0,最大總凈收益為253333.3元,對(duì)本題來(lái)說(shuō),由于數(shù)據(jù)少,可以不采用數(shù)組形式,而直接采用變量表示,建立模型如下,畝,設(shè)農(nóng)場(chǎng)1種植的甜菜、棉花和高粱分別為,畝,農(nóng)場(chǎng)2種植的甜菜、棉花和高粱分別為,畝,農(nóng)場(chǎng)3種植的甜菜、棉花和高粱分別為,整理課件,69,根據(jù)題目條件,可建立如下線性模型,整理課件,70,LINGO程序如下,MODEL: max=400*(x1+x2+x3)+300*(y1+y2+y3)+100*(z1+z2+z3); x1+x2+x3=600; y1+y2+y3
47、=500; z1+z2+z3=325; x1+y1+z1=400; x2+y2+z2=600; x3+y3+z3=300; 3*x1+2*y1+z1=600; 3*x2+2*y2+z2=800; 3*x3+2*y3+z3=375; END,得到的解如下,X1=200,Y1=0,Z1=0;X2=58.33333,Y2=312.5,Z2=0; X3=0,Y3=187.5,Z3=0,最大總凈收益為253333.3元,整理課件,71,例3公司在各地有4項(xiàng)業(yè)務(wù),選定了4位業(yè)務(wù)員去處理.由于業(yè)務(wù)能力、經(jīng)驗(yàn)和其它情況不同,4業(yè)務(wù)員去處理4項(xiàng)業(yè)務(wù)的費(fèi)用(單位:元)各不相同,見(jiàn)下表,應(yīng)當(dāng)怎樣分派任務(wù),才能使總的
48、費(fèi)用最小,整理課件,72,則可以建立如下模型,整理課件,73,LINGO程序如下,MODEL: SETS: person/1.4/; task/1.4/; assign(person,task):a,x; ENDSETS DATA: a=1100,800,1000,700, 600,500,300,800, 400,800,1000,900, 1100,1000,500,700; ENDDATA min=sum(assign:a*x); for(person(i):sum(task(j):x(i,j)=1); for(task(j):sum(person(i):x(i,j)=1); for(a
49、ssign(i,j):bin(x(i,j); END,整理課件,74,得到的結(jié)果如下,最小費(fèi)用為2100元,即第1個(gè)業(yè)余員做第4項(xiàng)業(yè)務(wù),第2個(gè)業(yè)余員做第2,第3項(xiàng)業(yè)務(wù).總費(fèi)用達(dá)到最小,為2100元,x(1,1)=0,x(1,2)=0,x(1,3)=0,x(1,4)=1; x(2,1)=0,x(2,2)=1,x(2,3)=0,x(2,4)=0; x(3,1)=1,x(3,2)=0,x(3,3)=0,x(3,4)=0; x(4,1)=0,x(4,2)=0,x(4,3)=1,x(4,4)=0,整理課件,75,MODEL: DATA: a=file(data.txt); ENDDATA END,同時(shí)在
50、LINGO目錄下建立文本文件data.txt,數(shù)據(jù)如下,LINGO程序中輸入的數(shù)據(jù)也可以從文本文件中讀入,特別是數(shù)據(jù)比較多時(shí),將程序與數(shù)據(jù)分開(kāi),顯得更方便.如上面程序也可以這樣寫(xiě),1100,800,1000,700 600,500,300,800 400,800,1000,900 1100,1000,500,700,整理課件,76,例4. 籃球隊(duì)選隊(duì)員問(wèn)題籃球隊(duì)要選擇5名隊(duì)員上場(chǎng)組成出場(chǎng)陣容參加比賽.8名籃球隊(duì)員的身高及擅長(zhǎng)位置如下表,出場(chǎng)陣容滿足如下條件,1)只能有一名中鋒上場(chǎng),2)至少有一名后衛(wèi)上場(chǎng),4)2號(hào)和8號(hào)至少有1個(gè)不出場(chǎng),3)如1號(hào)和4號(hào)均上場(chǎng),則6號(hào)不出場(chǎng),問(wèn)應(yīng)當(dāng)選擇哪5名隊(duì)員
51、上場(chǎng),才能使出場(chǎng)隊(duì)員平均身高最高,整理課件,77,解,這是一個(gè)0-1整數(shù)規(guī)劃問(wèn)題,則目標(biāo)函數(shù)很容易給出,約束條件,所選隊(duì)員為5人,則,只能有一名中鋒上場(chǎng),則,至少有一名后衛(wèi),則,整理課件,78,如1號(hào)和4號(hào)均上場(chǎng),則6號(hào)不出場(chǎng).則可用如下一個(gè)約束來(lái)表達(dá),2號(hào)和8號(hào)至少有1個(gè)不出場(chǎng),即2號(hào)和8號(hào)至多出場(chǎng)1個(gè).約束表達(dá),數(shù)學(xué)模型,整理課件,79,LINGO編程如下,MODEL: SETS: team/1.8/:a,x; ENDSETS DATA: a=1.92,1.90,1.88,1.86,1.85,1.83,1.80,1.78;!給出身高數(shù)據(jù); ENDDATA max=sum(team(i):a
52、(i)*x(i)/5.0; SUM(team(i):x(i)=5; !所選隊(duì)員為5人; x(1)+x(2)=1; !只能有一名中鋒上場(chǎng); x(6)+x(7)+x(8)=1; !至少有一名后衛(wèi)上場(chǎng); x(1)+x(4)+x(6)=2; !如果1號(hào)和4號(hào)上場(chǎng),則6號(hào)不上場(chǎng); x(2)+x(8)=1; !2號(hào)和8號(hào)至少有一個(gè)不出場(chǎng).即出場(chǎng)人數(shù)至多為1個(gè); FOR(team(i):bin(x(i); !所有變量為0-1變量; END,解為,x(1)=0,x(2)=1,x(3)=1,x(4)=1,x(5)=1,x(6)=1,x(7)=0,x(8)=0,即第2,3,4,5,6名隊(duì)員被選上,最大平均身高為Z
53、=1.864米,整理課件,80,例5. 有五項(xiàng)設(shè)計(jì)任務(wù)可供選擇.各項(xiàng)設(shè)計(jì)任務(wù)的預(yù)期完成時(shí)間分別為3,8,5,4,10(周),設(shè)計(jì)報(bào)酬分別為7,17,11,9,21(萬(wàn)元).設(shè)計(jì)任務(wù)只能一項(xiàng)一項(xiàng)地進(jìn)行,總的期限為20周. 選擇任務(wù)時(shí)必須滿足下面要求,1) 至少完成3項(xiàng)設(shè)計(jì)任務(wù),2) 若選擇任務(wù)1,必須同時(shí)選擇任務(wù)2,3) 任務(wù)3和任務(wù)4不能同時(shí)選擇,應(yīng)當(dāng)選擇哪些任務(wù),才能使總的設(shè)計(jì)報(bào)酬最大,整理課件,81,解,這是一個(gè)0-1整數(shù)規(guī)劃問(wèn)題,則容易得到目標(biāo)函數(shù),整理課件,82,根據(jù)題目要求分別列出約束條件如下,數(shù)學(xué)模型,總期限為20周,則約束條件為,至少完成3項(xiàng)設(shè)計(jì)任務(wù),則,若選擇任務(wù)1,必須同時(shí)選
54、擇任務(wù)2,則,任務(wù)3和任務(wù)4不能同時(shí)選擇,則,整理課件,83,整理課件,84,MODEL: SETS: mat/1.5/:m,t,x; ENDSETS DATA: m=7,17,11,9,21; !定義報(bào)酬數(shù)組; t=3,8,5,4,10; !定義完成時(shí)間; ENDDATA max=SUM(mat(i):m(i)*x(i); !定義目標(biāo)函數(shù); SUM(mat(i):t(i)*x(i)=3; !至少完成3項(xiàng)任務(wù); x(2)=x(1); !若選擇任務(wù)1,必須同時(shí)選擇任務(wù)2; x(3)+x(4)=1; !任務(wù)3和任務(wù)4不能同時(shí)選擇; FOR(mat(i):BIN(x(i); !使各變量為0-1變量;
55、 END,解為:x(1)=1,x(2)=1,x(3)=1,x(4)=0,x(5)=0. 選擇設(shè)計(jì)任務(wù)1,2,3,最大報(bào)酬為35萬(wàn)元,LINGO程序如下,整理課件,85,例6. 固定費(fèi)用,有四種資源A,B,C,D被用于生產(chǎn)三種產(chǎn)品I, II,單耗量及組織三種商品生產(chǎn)的固定費(fèi)用見(jiàn)下表.現(xiàn)要,求制定一個(gè)生產(chǎn)計(jì)劃,使總收益最大,整理課件,86,解,可引入用0-1變量來(lái)解決是否需要固定費(fèi)用問(wèn)題,整理課件,87,第I種產(chǎn)品銷售一件可收入7-4=3元,第II種產(chǎn)品,銷售一件可收入10-6=4元,第III種產(chǎn)品銷售一件可,收入20-12=8元,則問(wèn)題的整數(shù)規(guī)劃模型為,整理課件,88,整理課件,89,LINGO
56、程序,MODEL: DATA: M=150; ENDDATA max=3*x1+4*x2+8*x3-100*y1-150*y2-200*y3;!目標(biāo)函數(shù); 2*x1+4*x2+8*x3=500; 2*x1+3*x2+4*x3=300; x1+2*x2+3*x3=100; 3*x1+5*x2+7*x3=700; x1=M*y1; x2=M*y2; x3=M*y3; GIN(x1);GIN(x2);GIN(x3); !指定產(chǎn)品件數(shù)為整數(shù); BIN(y1);BIN(y2);BIN(y3); !指定0-1變量; end,最大值為Z=200元,整理課件,90,例7. 某企業(yè)和用戶簽定了設(shè)備交貨合同,已知
57、該,企業(yè)各季度的生產(chǎn)能力、每臺(tái)設(shè)備的生產(chǎn)成本和每,季度末的交貨量見(jiàn)下表,若生產(chǎn)出的設(shè)備當(dāng)季度不,交貨,每臺(tái)設(shè)備每季度需要支付保管費(fèi)0.1萬(wàn)元,試,問(wèn)在遵守合同的條件下,企業(yè)應(yīng)如何安排生產(chǎn)計(jì)劃,才能使年消耗費(fèi)用最低,整理課件,91,解法1,整理課件,92,LINGO程序如下,MODEL: SETS: QUART/1.4/:x,y,p,d,c; ENDSETS DATA: !指定數(shù)據(jù); p=25,35,30,20; d=15,20,25,20; c=12.0,11.0,11.5,12.5; ENDDATA min=sum(QUART(i):c(i)*x(i)+0.1*y(i); !目標(biāo)函數(shù); FO
58、R(QUART(i):x(i)=p(i); !生產(chǎn)能力限制; FOR(QUART(i)|i#GT#1:y(i)=y(i-1)+x(i)-d(i); y(1)=x(1)-d(1); end,得到的結(jié)果如下,x1=15,x2=35,x3=30,x4=0;y1=0,y2=15, y3=20,y4=0,年消耗最小費(fèi)用為913.5萬(wàn)元,整理課件,93,解法2,下面條件,根據(jù)交貨量的規(guī)定,應(yīng)滿足如下條件,其值如下表,整理課件,94,則該模型表示如下,整理課件,95,LINGO程序如下,MODEL: SETS: QUART/1.4/:p,d; LINK(QUART,QUART)| End,整理課件,96,得
59、到的結(jié)果如下,年消耗最小費(fèi)用為913.5萬(wàn)元,為0臺(tái),與前面方法得到的結(jié)果一樣.其最小費(fèi)用也,可以看出,第1季度生產(chǎn)量為15臺(tái),第2季度生產(chǎn),量為35臺(tái),第3季度生產(chǎn)量為30臺(tái),第4季度生產(chǎn)量,一樣,整理課件,97,例8. 旅行售貨商問(wèn)題(TSP問(wèn)題,設(shè)有一個(gè)售貨員從10個(gè)城市中的某一個(gè)城市出發(fā),去其它9個(gè)城市推銷產(chǎn)品. 10個(gè)城市相互距離如下表,要求每個(gè)城市到達(dá)一次僅一次后,回到原出發(fā)城市,回到原出發(fā)城市.問(wèn)他應(yīng)如何選擇旅行路線,使總路,程最短,整理課件,98,整理課件,99,用來(lái)表示經(jīng)過(guò)的各城市之間的路線.設(shè),則該TSP問(wèn)題轉(zhuǎn)化為如下線性模型,整理課件,100,LINGO程序如下,TSP
60、quesion; MODEL: SETS: city/1.10/; link(city,city)| ENDDATA,整理課件,101,MIN=SUM(link:d*s); SUM(city(j)|j#GT#1:S(j,1)=2; !與第1個(gè)城市相連的有兩個(gè)城市; !與第i個(gè)城市相連有兩個(gè)城市; FOR(city(i)|i#GT#1:SUM(city(j)|j#GT#i:s(j,i)+ SUM(city(k)|k#LT#i:s(i,k)=2); FOR(link:BIN(s,其最短路線為143375681091,最短距離為77公里,得到的結(jié)果如下,整理課件,102,優(yōu)缺點(diǎn)分析,該方法將TSP問(wèn)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024施工混凝土合同范本
- 2024年中英文對(duì)照技術(shù)文檔制作與審核合同3篇
- 2024年高端住宅銷售代理協(xié)議版
- 2025年度甜品連鎖店品牌授權(quán)合作合同范本3篇
- 2024幼兒園幼兒安全與健康管理聘用協(xié)議書(shū)3篇
- 2024幼兒園教師學(xué)生個(gè)性發(fā)展與教育引導(dǎo)合同3篇
- 2024年電子商務(wù)用戶隱私保護(hù)協(xié)議3篇
- 2024年電子產(chǎn)品物流配送合同
- 2025年度冷鏈倉(cāng)儲(chǔ)與配送服務(wù)合同范本3篇
- 2024物流運(yùn)輸合同涉及的責(zé)任與義務(wù)
- (八省聯(lián)考)河南省2025年高考綜合改革適應(yīng)性演練 思想政治試卷(含答案)
- 綜合測(cè)試 散文閱讀(多文本)(解析版)-2025年高考語(yǔ)文一輪復(fù)習(xí)(新高考)
- 鈑金設(shè)備操作培訓(xùn)
- 2024駕校經(jīng)營(yíng)權(quán)承包合同
- 福建省能化集團(tuán)筆試題目
- 快遞公司與驛站合作協(xié)議模板 3篇
- 水利工程招標(biāo)文件樣本
- 品質(zhì)管控培訓(xùn)質(zhì)量管理與質(zhì)量控制課件
- 小數(shù)加減乘除計(jì)算題大全(300題大全)-
- 中考英語(yǔ)688高頻詞大綱詞頻表
- 手糊補(bǔ)強(qiáng)工A卷考試 (1)附有答案
評(píng)論
0/150
提交評(píng)論