版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
數學建模講座優化模型與LINGO優化軟件謝金星清華大學數學科學系
Telmail:jxie@
/~jxie簡要提綱
優化模型簡介
LINGO軟件的使用簡介
建模與求解實例(結合軟件使用)優化模型
實際問題中的優化模型x~決策變量f(x)~目標函數gi(x)0~約束條件數學規劃線性規劃(LP)二次規劃(QP)非線性規劃(NLP)純整數規劃(PIP)混合整數規劃(MIP)整數規劃(IP)0-1整數規劃一般整數規劃連續規劃LINDO公司軟件產品簡要介紹
美國芝加哥(Chicago)大學的LinusSchrage教授于1980年前后開發,后來成立LINDO系統公司(LINDOSystemsInc.),網址:
LINDO:LinearINteractiveandDiscreteOptimizer(V6.1)LINGO:LinearINteractiveGeneralOptimizer(V8.0)LINDOAPI:LINDOApplicationProgrammingInterface(V2.0)What’sBest!:(SpreadSheete.g.EXCEL)(V7.0)演示(試用)版、學生版、高級版、超級版、工業版、擴展版…(求解問題規模和選件不同)LINDO和LINGO軟件能求解的優化模型LINGOLINDO優化模型線性規劃(LP)非線性規劃(NLP)二次規劃(QP)連續優化整數規劃(IP)LPQPNLPIP全局優化(選)
ILPIQPINLP
LINDO/LINGO軟件的求解過程LINDO/LINGO預處理程序線性優化求解程序非線性優化求解程序分枝定界管理程序1.確定常數2.識別類型1.單純形算法2.內點算法(選)1、順序線性規劃法(SLP)2、廣義既約梯度法(GRG)(選)
3、多點搜索(Multistart)(選)建模時需要注意的幾個基本問題
1、盡量使用實數優化,減少整數約束和整數變量2、盡量使用光滑優化,減少非光滑約束的個數如:盡量少使用絕對值、符號函數、多個變量求最大/最小值、四舍五入、取整函數等3、盡量使用線性模型,減少非線性約束和非線性變量的個數(如x/y<5改為x<5y)4、合理設定變量上下界,盡可能給出變量初始值5、模型中使用的參數數量級要適當(如小于103)需要掌握的幾個重要方面1、LINGO:
正確閱讀求解報告(尤其要掌握敏感性分析)2、LINGO: 掌握集合(SETS)的應用; 正確閱讀求解報告; 正確理解求解狀態窗口; 學會設置基本的求解選項(OPTIONS); 掌握與外部文件的基本接口方法例1加工奶制品的生產計劃1桶牛奶3公斤A1
12小時8小時4公斤A2
或獲利24元/公斤獲利16元/公斤50桶牛奶時間480小時至多加工100公斤A1
制訂生產計劃,使每天獲利最大35元可買到1桶牛奶,買嗎?若買,每天最多買多少?
可聘用臨時工人,付出的工資最多是每小時幾元?A1的獲利增加到30元/公斤,應否改變生產計劃?每天:1桶牛奶3公斤A1
12小時8小時4公斤A2
或獲利24元/公斤獲利16元/公斤x1桶牛奶生產A1
x2桶牛奶生產A2
獲利24×3x1
獲利16×4x2
原料供應
勞動時間
加工能力
決策變量
目標函數
每天獲利約束條件非負約束
線性規劃模型(LP)時間480小時至多加工100公斤A1
50桶牛奶每天模型求解
max72*x1+64*x2st2)x1+x2<503)12*x1+8*x2<4804)3*x1<100end
OBJECTIVEFUNCTIONVALUE
1)3360.000
VARIABLEVALUEREDUCEDCOST
X120.0000000.000000
X230.0000000.000000ROWSLACKORSURPLUSDUALPRICES2)0.00000048.0000003)0.0000002.0000004)40.0000000.000000NO.ITERATIONS=2DORANGE(SENSITIVITY)ANALYSIS?No20桶牛奶生產A1,30桶生產A2,利潤3360元。模型求解
reducedcost值表示當該非基變量增加一個單位時(其他非基變量保持不變)目標函數減少的量(對max型問題)
OBJECTIVEFUNCTIONVALUE1)3360.000VARIABLEVALUEREDUCEDCOSTX120.0000000.000000X230.0000000.000000ROWSLACKORSURPLUSDUALPRICES2)0.00000048.0000003)0.0000002.0000004)40.0000000.000000NO.ITERATIONS=2也可理解為:為了使該非基變量變成基變量,目標函數中對應系數應增加的量OBJECTIVEFUNCTIONVALUE1)3360.000VARIABLEVALUEREDUCEDCOSTX120.0000000.000000X230.0000000.000000
ROW
SLACKORSURPLUSDUALPRICES
2)0.00000048.000000
3)0.0000002.0000004)40.0000000.000000原料無剩余時間無剩余加工能力剩余40max72x1+64x2st2)x1+x2<503)12x1+8x2<4804)3x1<100end三種資源“資源”剩余為零的約束為緊約束(有效約束)結果解釋
OBJECTIVEFUNCTIONVALUE1)3360.000VARIABLEVALUEREDUCEDCOSTX120.0000000.000000X230.0000000.000000ROWSLACKORSURPLUSDUALPRICES
2)0.00000048.000000
3)0.0000002.000000
4)40.0000000.000000結果解釋
最優解下“資源”增加1單位時“效益”的增量原料增1單位,利潤增48時間加1單位,利潤增2能力增減不影響利潤影子價格35元可買到1桶牛奶,要買嗎?35<48,應該買!
聘用臨時工人付出的工資最多每小時幾元?2元!RANGESINWHICHTHEBASISISUNCHANGED:
OBJCOEFFICIENTRANGES
VARIABLECURRENTALLOWABLEALLOWABLECOEFINCREASEDECREASE
X172.00000024.0000008.000000X264.0000008.00000016.000000RIGHTHANDSIDERANGESROWCURRENTALLOWABLEALLOWABLERHSINCREASEDECREASE250.00000010.0000006.6666673480.00000053.33333280.0000004100.000000INFINITY40.000000最優解不變時目標系數允許變化范圍DORANGE(SENSITIVITY)ANALYSIS?
Yesx1系數范圍(64,96)
x2系數范圍(48,72)A1獲利增加到30元/千克,應否改變生產計劃x1系數由243=72增加為303=90,在允許范圍內不變!(約束條件不變)結果解釋
結果解釋
RANGESINWHICHTHEBASISISUNCHANGED:OBJCOEFFICIENTRANGESVARIABLECURRENTALLOWABLEALLOWABLECOEFINCREASEDECREASEX172.00000024.0000008.000000X264.0000008.00000016.000000
RIGHTHANDSIDERANGESROWCURRENTALLOWABLEALLOWABLERHSINCREASEDECREASE250.00000010.0000006.6666673480.00000053.33333280.0000004100.000000INFINITY40.000000影子價格有意義時約束右端的允許變化范圍原料最多增加10時間最多增加5335元可買到1桶牛奶,每天最多買多少?最多買10桶?(目標函數不變)注意:充分但可能不必要使用LINGO的一些注意事項“>”(或“<”)號與“>=”(或“<=”)功能相同變量與系數間需要有運算符變量名以字母開頭,不能超過32個字符變量名不區分大小寫(包括LINGO中的關鍵字)集合,數據,目標函數,約束條件.一般按這個順序寫.行號(行名)自動產生或人為定義。行中注有“!”符號的后面部分為注釋。如:
!It’sComment;分號;結束.在模型的第一行用“TITLE”對模型命名(最多72個字符),如:
TITLE:ThisModelisonlyanExample;變量可以出現在一個約束條件的兩端表達式中接受括號“()”改變計算順序,例:400*(X1+X2)表達式可不化簡,如2*X1+3*X2-4*X1缺省假定所有變量非負;可在模型最后用“@FREE(X)”將變量name的非負假定取消可在用“@bnd(a,x,b)”設定變量上下界作用等價于“a<=x<=b”
但用“@bnd(a,x,b)”設定表示的上下界約束不計入模型的約束,也不能給出其松緊判斷和敏感性分析。14.0-1變量:@Bin(x);15.
整數變量:@GIN(x)使用LINGO的一些注意事項狀態窗口(LINGOSolverStatus)模型:線性規劃當前狀態:全局最優解約束不滿足的式子:0迭代次數:0次變量個數:2非線性個數:0整數個數:0當前的目標值:29000所用時間:0.00秒(太快了,還不到0.005秒)LINGO軟件簡介目標與約束段集合段(SETSENDSETS)數據段(DATAENDDATA)初始段(INITENDINIT)LINGO模型的構成:4個段LINGO模型的優點包含了LINDO的全部功能提供了靈活的編程語言(矩陣生成器)LINGO模型—
例:選址問題某公司有6個建筑工地,位置坐標為(ai,bi)(單位:公里),水泥日用量di
(單位:噸)假設:料場和工地之間有直線道路用例中數據計算,最優解為總噸公里數為136.2線性規劃模型決策變量:cij(料場j到工地i的運量)~12維選址問題:NLP2)改建兩個新料場,需要確定新料場位置(xj,yj)和運量cij
,在其它條件不變下使總噸公里數最小。決策變量:cij,(xj,yj)~16維非線性規劃模型LINGO模型的構成:4個段集合段(SETSENDSETS)數據段(DATAENDDATA)初始段(INITENDINIT)目標與約束段
局部最優:89.8835(噸公里
)LP:移到數據段邊界集合的類型
集合派生集合基本集合稀疏集合稠密集合元素列表法元素過濾法直接列舉法隱式列舉法setname[/member_list/][:attribute_list];setname(parent_set_list)[/member_list/][:attribute_list];SETS:CITIES/A1,A2,A3,B1,B2/;ROADS(CITIES,CITIES)/ A1,B1A1,B2A2,B1A3,B2/:D;ENDSETSSETS:STUDENTS/S1..S8/;PAIRS(STUDENTS,STUDENTS)|&2#GT#&1:BENEFIT,MATCH;ENDSETS集合元素的隱式列舉類型隱式列舉格式示例示例集合的元素數字型1..n1..51,2,3,4,5字符-數字型stringM..stringNCar101..car208Car101,car102,…,car208星期型dayM..dayNMON..FRIMON,TUE,WED,THU,FRI月份型monthM..monthNOCT..JANOCT,NOV,DEC,JAN年份-月份型monthYearM..monthYearNOCT2001..JAN2002OCT2001,NOV2001,DEC2001,JAN2002運算符的優先級優先級運算符最高#NOT#—(負號)^*/+—(減法)#EQ##NE##GT##GE##LT##LE##AND##OR#最低<(=)=>(=)三類運算符:算術運算符邏輯運算符關系運算符集合循環函數四個集合循環函數:FOR、SUM、MAX、MIN@function(setname[(set_index_list)[|condition]]:expression_list);[objective]MAX=@SUM(PAIRS(I,J):BENEFIT(I,J)*MATCH(I,J));@FOR(STUDENTS(I):[constraints]@SUM(PAIRS(J,K)|J#EQ#I#OR#K#EQ#I:MATCH(J,K))=1);@FOR(PAIRS(I,J):@BIN(MATCH(I,J)));MAXB=@MAX(PAIRS(I,J):BENEFIT(I,J));MINB=@MIN(PAIRS(I,J):BENEFIT(I,J));Example:狀態窗口SolverType:B-and-BGlobalMultistartModelClass:LP,QP,ILP,IQP,PILP,PIQP,NLP,INLP,PINLPState:GlobalOptimumLocalOptimumFeasibleInfeasibleUnboundedInterruptedUndetermined7個選項卡(可設置80-90個控制參數)
程序與數據分離文本文件使用外部數據文件Cut(orCopy)–Paste方法@FILE
輸入數據、@TEXT輸出數據(文本文件)@OLE函數與電子表格軟件(如EXCEL)連接@ODBC函數與數據庫連接LINGO命令腳本文件LG4(LONGO模型文件)LNG(LONGO模型文件)LTF(LONGO腳本文件)LDT(LONGO數據文件)LRP(LONGO報告文件)常用文件后綴@FILE和@TEXT:文本文件輸入輸出MODEL:SETS:MYSET/@FILE(‘myfile.txt’)/:@FILE(‘myfile.txt’);ENDSETSMIN=@SUM(MYSET(I):SHIP(I)*COST(I));@FOR(MYSET(I):[CON1]SHIP(I)>NEED(I);[CON2]SHIP(I)<SUPPLY(I));DATA:COST=@FILE(‘myfile.txt’);NEED=@FILE(‘myfile.txt’);SUPPLY=@FILE(‘myfile.txt’);@TEXT(‘result.txt’)=SHIP,@DUAL(SHIP),@DUAL(CON1);ENDDATAENDmyfile.txt文件的內容、格式:Seattle,Detroit,Chicago,Denver~COST,NEED,SUPPLY,SHIP~12,28,15,20~1600,1800,1200,1000~1700,1900,1300,1100演示MyfileExample.lg4@OLE:與EXCEL連接MODEL:SETS:MYSET:COST,SHIP,NEED,SUPPLY;ENDSETSMIN=@SUM(MYSET(I):SHIP(I)*COST(I));@FOR(MYSET(I):[CON1]SHIP(I)>NEED(I);[CON2]SHIP(I)<SUPPLY(I));DATA:MYSET=@OLE('D:\JXIE\BJ2004MCM\mydata.xls','CITIES');COST,NEED,SUPPLY=@OLE(mydata.xls);@OLE(mydata.xls,'SOLUTION')=SHIP;ENDDATAENDmydata.xls文件中必須有下列名稱(及數據):
CITIES,COST,NEED,SUPPLY,SOLUTION在EXCEL中還可以通過“宏”自動調用LINGO(略)也可以將EXCEL表格嵌入到LINGO模型中(略)演示MydataExample.lg4@ODBC:與數據庫連接輸入基本集合元素:setname/@ODBC([‘datasource’[,‘tablename’[,‘columnname’]]])/輸入派生集合元素:setname/@ODBC([‘source’[,‘table’[,‘column1’[,‘column2’…]]]])/目前支持下列DBMS:(如為其他數據庫,則需自行安裝驅動)ACCESS,DBASE,EXCEL,FOXPRO,ORACLE,PARADOX,SQLSERVER,TEXEFILES使用數據庫之前,數據源需要在ODBC管理器注冊輸入數據:Attr_list=@ODBC([‘source’[,‘table’[,‘column1’[,‘column2’…]]]])輸出數據:@ODBC([‘source’[,‘table’[,‘column1’[,‘column2’…]]]])=Attr_list具體例子略建模實例與求解最短路問題下料問題露天礦的運輸問題鋼管運輸問題最短路問題求各點到T的最短路56774968658336C1B1C2B2A1A2A3TS6shortestPath.lg4問題1.如何下料最節省?例鋼管下料問題2.客戶增加需求:原料鋼管:每根19米4米50根6米20根8米15根客戶需求節省的標準是什么?由于采用不同切割模式太多,會增加生產和管理成本,規定切割模式不能超過3種。如何下料最節省?5米10根按照客戶需要在一根原料鋼管上安排切割的一種組合。
切割模式余料1米4米1根6米1根8米1根余料3米4米1根6米1根6米1根合理切割模式的余料應小于客戶需要鋼管的最小尺寸余料3米8米1根8米1根鋼管下料為滿足客戶需要,按照哪些種合理模式,每種模式切割多少根原料鋼管,最為節省?合理切割模式2.所用原料鋼管總根數最少模式
4米鋼管根數6米鋼管根數8米鋼管根數余料(米)14003231013201341203511116030170023鋼管下料問題1兩種標準1.原料鋼管剩余總余量最小xi~按第i種模式切割的原料鋼管根數(i=1,2,…7)約束滿足需求決策變量
目標1(總余量)按模式2切割12根,按模式5切割15根,余料27米
模式4米根數6米根數8米根數余料14003231013201341203511116030170023需求502015最優解:x2=12,x5=15,
其余為0;最優值:27整數約束:xi為整數當余料沒有用處時,通常以總根數最少為目標目標2(總根數)鋼管下料問題1約束條件不變最優解:x2=15,x5=5,x7=5,其余為0;最優值:25。xi為整數按模式2切割15根,按模式5切割5根,按模式7切割5根,共25根,余料35米雖余料增加8米,但減少了2根與目標1的結果“共切割27根,余料27米”相比鋼管下料問題2對大規模問題,用模型的約束條件界定合理模式增加一種需求:5米10根;切割模式不超過3種。現有4種需求:4米50根,5米10根,6米20根,8米15根,用枚舉法確定合理切割模式,過于復雜。決策變量
xi~按第i種模式切割的原料鋼管根數(i=1,2,3)r1i,r2i,r3i,r4i~第i種切割模式下,每根原料鋼管生產4米、5米、6米和8米長的鋼管的數量滿足需求模式合理:每根余料不超過3米整數非線性規劃模型鋼管下料問題2目標函數(總根數)約束條件整數約束:xi,r1i,r2i,r3i,r4i(i=1,2,3)為整數增加約束,縮小可行域,便于求解原料鋼管總根數下界:
特殊生產計劃:對每根原料鋼管模式1:切割成4根4米鋼管,需13根;模式2:切割成1根5米和2根6米鋼管,需10根;模式3:切割成2根8米鋼管,需8根。原料鋼管總根數上界:31模式排列順序可任定
鋼管下料問題2需求:4米50根,5米10根,6米20根,8米15根每根原料鋼管長19米LINGO求解整數非線性規劃模型Localoptimalsolutionfoundatiteration:12211Objectivevalue:28.00000VariableValueReducedCostX110.000000.000000X210.000002.000000X38.0000001.000000R113.0000000.000000R122.0000000.000000R130.0000000.000000R210.0000000.000000R221.0000000.000000R230.0000000.000000R311.0000000.000000R321.0000000.000000R330.0000000.000000R410.0000000.000000R420.0000000.000000R432.0000000.000000模式1:每根原料鋼管切割成3根4米和1根6米鋼管,共10根;模式2:每根原料鋼管切割成2根4米、1根5米和1根6米鋼管,共10根;模式3:每根原料鋼管切割成2根8米鋼管,共8根。原料鋼管總根數為28根。演示cut02a.lg4;cut02b.lg4露天礦里鏟位已分成礦石和巖石:平均鐵含量不低于25%的為礦石,否則為巖石。每個鏟位的礦石、巖石數量,以及礦石的平均鐵含量(稱為品位)都是已知的。每個鏟位至多安置一臺電鏟,電鏟平均裝車時間5分鐘卡車在等待時所耗費的能量也是相當可觀的,原則上在安排時不應發生卡車等待的情況。露天礦生產的車輛安排(CUMCM-2003B)
礦石卸點需要的鐵含量要求都為29.5%1%(品位限制),搭配量在一個班次(8小時)內滿足品位限制即可。卸點在一個班次內不變。卡車載重量為154噸,平均時速28km,平均卸車時間為3分鐘。問題:出動幾臺電鏟,分別在哪些鏟位上;出動幾輛卡車,分別在哪些路線上各運輸多少次?平面示意圖問題數據距離鏟位1鏟位2鏟位3鏟位4鏟位5鏟位6鏟位7鏟位8鏟位9鏟位10礦石漏5.265.194.214.002.952.742.461.900.641.27倒裝Ⅰ1.900.991.901.131.272.251.482.043.093.51巖場5.895.615.614.563.513.652.462.461.060.57巖石漏0.641.761.271.832.742.604.213.725.056.10倒裝Ⅱ4.423.863.723.162.252.810.781.621.270.50鏟位1鏟位2鏟位3鏟位4鏟位5鏟位6鏟位7鏟位8鏟位9鏟位10礦石量0.951.051.001.051.101.251.051.301.351.25巖石量1.251.101.351.051.151.351.051.151.351.25鐵含量30%28%29%32%31%33%32%31%33%31%問題分析與典型的運輸問題明顯有以下不同:這是運輸礦石與巖石兩種物資的問題;屬于產量大于銷量的不平衡運輸問題;為了完成品位約束,礦石要搭配運輸;產地、銷地均有單位時間的流量限制;運輸車輛只有一種,每次滿載運輸,154噸/車次;鏟位數多于鏟車數意味著要最優的選擇不多于7個產地作為最后結果中的產地;最后求出各條路線上的派出車輛數及安排。近似處理:先求出產位、卸點每條線路上的運輸量(MIP模型)然后求出各條路線上的派出車輛數及安排模型假設卡車在一個班次中不應發生等待或熄火后再啟動的情況;在鏟位或卸點處由兩條路線以上造成的沖突問題面前,我們認為只要平均時間能完成任務,就認為不沖突。我們不排時地進行討論;空載與重載的速度都是28km/h,耗油相差很大;卡車可提前退出系統,等等。如理解為嚴格不等待,難以用數學規劃模型來解個別參數隊找到了可行解(略)符號xij
:從i鏟位到j號卸點的石料運量(車)單位:噸;cij
:從i號鏟位到j號卸點的距離公里;Tij:從i號鏟位到號j卸點路線上運行一個周期平均時間分;Aij
:從號鏟位到號卸點最多能同時運行的卡車數輛;Bij
:從號鏟位到號卸點路線上一輛車最多可運行的次數次;pi:i號鏟位的礦石鐵含量p=(30,28,29,32,31,33,32
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 信訪維穩工作階段性總結及改進措施
- 自費飛行員就業前景
- 消防安全教育20秒文案
- 消防安全與逃生視頻課程
- 鍍錫工安全防護模擬考核試卷含答案
- 油墨顏料制作工風險評估與管理知識考核試卷含答案
- 快就業前景-標準模板
- 燃氣管網運行工崗前操作規程考核試卷含答案
- 電解精煉工崗前基礎操作考核試卷含答案
- 生活燃煤供應工道德競賽考核試卷含答案
- 一帶一路稅收征管合作機制年度報告(2024年)
- tig焊接工藝參數選擇方法
- 2024年云南省昆明市交通運輸局局屬事業單位招聘7人歷年【重點基礎提升】模擬試題(共500題)附帶答案詳解
- 教育學原理第一章:教育的本質
- 夏季施工防暑降溫安全培訓
- 結構設計概況表
- 石膏粉研究預測報告-石膏粉行業市場深度分析及發展策略研究預測報告(2024-2028年)
- 形式發票樣本
- 10kV架空線路現場驗收表
- 《普通生物學》教材全文
- 應聘機械工程師考試試題(答案)
評論
0/150
提交評論