數(shù)學(xué)建模LINGO培訓(xùn)省名師優(yōu)質(zhì)課賽課獲獎(jiǎng)?wù)n件市賽課一等獎(jiǎng)?wù)n件_第1頁(yè)
數(shù)學(xué)建模LINGO培訓(xùn)省名師優(yōu)質(zhì)課賽課獲獎(jiǎng)?wù)n件市賽課一等獎(jiǎng)?wù)n件_第2頁(yè)
數(shù)學(xué)建模LINGO培訓(xùn)省名師優(yōu)質(zhì)課賽課獲獎(jiǎng)?wù)n件市賽課一等獎(jiǎng)?wù)n件_第3頁(yè)
數(shù)學(xué)建模LINGO培訓(xùn)省名師優(yōu)質(zhì)課賽課獲獎(jiǎng)?wù)n件市賽課一等獎(jiǎng)?wù)n件_第4頁(yè)
數(shù)學(xué)建模LINGO培訓(xùn)省名師優(yōu)質(zhì)課賽課獲獎(jiǎng)?wù)n件市賽課一等獎(jiǎng)?wù)n件_第5頁(yè)
已閱讀5頁(yè),還剩103頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Lingo使用教程

東南大學(xué)數(shù)模培訓(xùn)材料

2011.7.2第1頁(yè)優(yōu)化問(wèn)題三要素:決議變量;目標(biāo)函數(shù);約束條件約束條件決議變量?jī)?yōu)化問(wèn)題普通形式無(wú)約束優(yōu)化(沒(méi)有約束)與約束優(yōu)化(有約束)

可行解(只滿足約束)與最優(yōu)解(取到最優(yōu)值)目標(biāo)函數(shù)第2頁(yè)2局部最優(yōu)解與整體最優(yōu)解

局部最優(yōu)解(LocalOptimalSolution,如x1)

整體最優(yōu)解(GlobalOptimalSolution,如x2)x*f(x)x1x2o第3頁(yè)3優(yōu)化模型簡(jiǎn)單分類

線性規(guī)劃(LP)

目標(biāo)和約束均為線性函數(shù)

非線性規(guī)劃(NLP)

目標(biāo)或約束中存在非線性函數(shù)

二次規(guī)劃(QP)

目標(biāo)為二次函數(shù)、約束為線性

整數(shù)規(guī)劃(IP)

決議變量(全部或部分)為整數(shù)整數(shù)線性規(guī)劃(ILP),整數(shù)非線性規(guī)劃(INLP)

純整數(shù)規(guī)劃(PIP),混合整數(shù)規(guī)劃(MIP)

普通整數(shù)規(guī)劃,0-1(整數(shù))規(guī)劃(ZOP)連續(xù)優(yōu)化離散優(yōu)化數(shù)學(xué)規(guī)劃第4頁(yè)優(yōu)化模型簡(jiǎn)單分類和求解難度優(yōu)化線性規(guī)劃非線性規(guī)劃二次規(guī)劃連續(xù)優(yōu)化整數(shù)規(guī)劃問(wèn)題求解難度增加

LP,ILP,BILP,NLP,INLP,QP,IQP,PIP,ZOP第5頁(yè)線性規(guī)劃問(wèn)題LP標(biāo)準(zhǔn)形式MATLAB命令:linprog,bintprog第6頁(yè)MATLAB優(yōu)化工具箱能求解優(yōu)化模型優(yōu)化工具箱3.0(MATLAB7.0R14)連續(xù)優(yōu)化離散優(yōu)化無(wú)約束優(yōu)化非線性極小fminunc非光滑(不可微)優(yōu)化fminsearch非線性方程(組)fzerofsolve全局優(yōu)化暫缺非線性最小二乘lsqnonlinlsqcurvefit線性規(guī)劃linprog純0-1規(guī)劃bintprog普通IP(暫缺)非線性規(guī)劃fminconfminimaxfgoalattainfseminf上下界約束fminbndfminconlsqnonlinlsqcurvefit約束線性最小二乘lsqnonneglsqlin約束優(yōu)化二次規(guī)劃quadprog第7頁(yè)LINDO企業(yè)軟件產(chǎn)品簡(jiǎn)明介紹

美國(guó)芝加哥(Chicago)大學(xué)LinusSchrage教授于1980年前后開(kāi)發(fā),以后成立LINDO系統(tǒng)企業(yè)(LINDOSystemsInc.),網(wǎng)址:

LINDO:

LinearINteractiveandDiscreteOptimizer(V6.1)LINDOAPI:LINDOApplicationProgrammingInterfaceLINGO:LinearINteractiveGeneralOptimizer(V13.0)What’sBest!:(SpreadSheete.g.EXCEL)演示(試用)版、高級(jí)版、超級(jí)版、工業(yè)版、擴(kuò)展版…(求解問(wèn)題規(guī)模和選件不一樣)第8頁(yè)LINDO/LINGO軟件能求解模型優(yōu)化線性規(guī)劃非線性規(guī)劃二次規(guī)劃連續(xù)優(yōu)化整數(shù)規(guī)劃LINDOLINGO第9頁(yè)LINGO軟件功效與特點(diǎn)LINGO模型優(yōu)點(diǎn)集成了線性(非線性)/連續(xù)(整數(shù))優(yōu)化功效含有多點(diǎn)搜索/全局優(yōu)化功效提供了靈活編程語(yǔ)言(矩陣生成器),可方便地輸入模型提供與其它數(shù)據(jù)文件接口提供與其它編程語(yǔ)言接口

LINDOAPI可用于自主開(kāi)發(fā)運(yùn)行速度較快第10頁(yè)

LPQPNLPIP全局優(yōu)化(選)

ILPIQPINLP

LINGO軟件求解過(guò)程

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

3、多點(diǎn)搜索(Multistart)(選)第11頁(yè)LINGOprovidesallofthetoolsyouwillneedtogetupandrunningquickly.YougettheLINGOUserManual(inprintedformandavailableviatheonlineHelp),whichfullydescribesthecommandsandfeaturesoftheprogram.AlsoincludedwithsuperversionsandlargerisacopyofOptimizationModelingwithLINGO,/index.php?option=com_content&view=article&id=38&Itemid=24acomprehensivemodelingtextdiscussingallmajorclassesoflinear,integerandnonlinearoptimizationproblems.LINGOalsocomeswithdozensofreal-worldbasedexamplesforyoutomodifyandexpand.第12頁(yè)例1.在LINGO中求解LP問(wèn)題:LINGO代碼:min=2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;第13頁(yè)第14頁(yè)線性規(guī)劃模型解幾個(gè)情況線性規(guī)劃問(wèn)題有可行解(Feasible)無(wú)可行解(Infeasible)有最優(yōu)解(Optimal)無(wú)最優(yōu)解(Unbounded)第15頁(yè)例2.怎樣在LINGO中求解以下IQP問(wèn)題:LINGO代碼:max=98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2;x1+x2<=100;x1<2*x2;@gin(x1);@gin(x2);第16頁(yè)第17頁(yè)整數(shù)規(guī)劃-例1.4:聘用方案決議變量:周一至周日天天(新)聘用人數(shù)x1,x2,x7目標(biāo)函數(shù):7天(新)聘用人數(shù)之和約束條件:周一至周日天天工作人數(shù)滿足需要第18頁(yè)連續(xù)工作5天設(shè)系統(tǒng)已進(jìn)入穩(wěn)態(tài)(不是開(kāi)始幾周)聘用方案整數(shù)規(guī)劃模型(IP)第19頁(yè)采取集合LINGO程序model:sets:days/mon..sun/:required,start;endsetsdata:!天天所需最少職員數(shù);required=20161316191412;enddata!最小化每七天所需職員數(shù);min=@sum(days:start);@for(days(J):@sum(days(I)|I#le#5:start(@wrap(J+I+2,7)))>=required(J));end第20頁(yè)例2。職員時(shí)序安排模型一項(xiàng)工作一周7天都需要有些人(比如護(hù)士工作),天天(周一至周日)所需最少職員數(shù)為20、16、13、16、19、14和12,并要求每個(gè)職員一周連續(xù)工作5天,試求每七天所需最少職員數(shù),并給出安排。注意這里我們考慮穩(wěn)定后情況。model:sets:days/mon..sun/:required,start;endsetsdata:!天天所需最少職員數(shù);required=20161316191412;enddata!最小化每七天所需職員數(shù);min=@sum(days:start);@for(days(J):@sum(days(I)|I#le#5:start(@wrap(J+I+2,7)))>=required(J));end最優(yōu)處理方案是:每七天最少需要22個(gè)職員,周一安排8人,周二安排2人,周三無(wú)需安排人,周四安排6人,周五和周六都安排3人,周日無(wú)需安排人。第21頁(yè)LINDO/LINGO軟件LINGO:LinearINteractiveGeneralOptimizer(V12.0)求解數(shù)學(xué)規(guī)劃問(wèn)題MinZ=f(x)s.tx

D(

Rn)需要掌握幾個(gè)主要方面基本語(yǔ)法結(jié)構(gòu)掌握集合(SETS)應(yīng)用正確閱讀求解匯報(bào)正確了解求解狀態(tài)窗口學(xué)會(huì)設(shè)置基本求解選項(xiàng)(OPTIONS)第22頁(yè)一、Lingo基本語(yǔ)法1、定義了目標(biāo)函數(shù)為MIN=..2、以一個(gè)分號(hào)“;”結(jié)尾——除SETS,ENDSETS,DATA,ENDDATA,

END之外3、變量能夠放在約束條件右端,也可放在約束條件左端。4、默認(rèn)假定各變量非負(fù)。5、注釋:“!”6、<、>為≤、≥第23頁(yè)建模時(shí)需要注意幾個(gè)基本問(wèn)題

盡可能使用實(shí)數(shù)優(yōu)化,降低整數(shù)約束和整數(shù)變量盡可能使用光滑優(yōu)化,降低非光滑約束個(gè)數(shù)盡可能少使用絕對(duì)值、符號(hào)函數(shù)、多個(gè)變量求最大/最小值、四舍五入、取整函數(shù)等盡可能使用線性模型,降低非線性約束和非線性變量個(gè)數(shù)如x/y<5改為x<5y合理設(shè)定變量上下界,盡可能給出變量初始值模型中使用參數(shù)數(shù)量級(jí)要適當(dāng)不一樣參數(shù)絕對(duì)值數(shù)量級(jí)之間差距普通要求小于3第24頁(yè)LINGO函數(shù)

LINGO有9種類型函數(shù):1.

基本運(yùn)算符:包含算術(shù)運(yùn)算符、邏輯運(yùn)算符和關(guān)系運(yùn)算符2.

數(shù)學(xué)函數(shù):三角函數(shù)和常規(guī)數(shù)學(xué)函數(shù)3.

金融函數(shù):LINGO提供兩種金融函數(shù)4.

概率函數(shù):LINGO提供了大量概率相關(guān)函數(shù)5.

變量界定函數(shù):這類函數(shù)用來(lái)定義變量取值范圍6.

集操作函數(shù):這類函數(shù)為對(duì)集操作提供幫助7.

集循環(huán)函數(shù):遍歷集元素,執(zhí)行一定操作函數(shù)8.

數(shù)據(jù)輸入輸出函數(shù):這類函數(shù)允許模型和外部數(shù)據(jù)源相聯(lián)絡(luò),

進(jìn)行數(shù)據(jù)輸入輸出9.

輔助函數(shù):各種雜類函數(shù)第25頁(yè)過(guò)濾條件使用——結(jié)果:014.1運(yùn)算符及其優(yōu)先級(jí)邏輯運(yùn)算符#NOT#否定#EQ#相等#NE#不等#AND#而且#OR#或者#GT#大于#GE#大于等于#LT# 小于#LE#小于等于算術(shù)運(yùn)算符+-*/^關(guān)系運(yùn)算符<(=)=>(=)第26頁(yè)4.1.3關(guān)系運(yùn)算符在LINGO中,關(guān)系運(yùn)算符主要是被用來(lái)指定一個(gè)表示式左邊是否等于、小于等于、或者大于等于右邊,形成模型一個(gè)約束條件。關(guān)系運(yùn)算符與邏輯運(yùn)算符#eq#、#le#、#ge#截然不一樣,前者是模型中該關(guān)系運(yùn)算符所指定關(guān)系為真描述,而后者僅僅判斷一個(gè)該關(guān)系是否被滿足:滿足為真,不滿足為假。

LINGO有三種關(guān)系運(yùn)算符:“=”、“<=”和“>=”。LINGO中還能用“<”表示小于等于關(guān)系,“>”表示大于等于關(guān)系。LINGO并不支持嚴(yán)格小于和嚴(yán)格大于關(guān)系運(yùn)算符。然而,假如需要嚴(yán)格小于和嚴(yán)格大于關(guān)系,比如讓A嚴(yán)格小于B:A<B,那么能夠把它變成以下小于等于表示式:A+ε<=B,這里ε是一個(gè)小正數(shù),它值依賴于模型中A小于B多少才算不等。

運(yùn)算符優(yōu)先級(jí)最高——————————————最低#NOT#—(負(fù)號(hào))^*/+—(減法)#EQ##NE##GT##GE##LT##LE##AND##OR#<=>先左后右,先括號(hào)內(nèi),后括號(hào)外第27頁(yè)4.2數(shù)學(xué)函數(shù)LINGO提供了大量標(biāo)準(zhǔn)數(shù)學(xué)函數(shù):@abs(x)返回x絕對(duì)值@sin(x)返回x正弦值,x采取弧度制@cos(x)返回x余弦值@tan(x)返回x正切值@exp(x)返回常數(shù)ex次方@log(x)返回x自然對(duì)數(shù)@lgm(x)返回xgamma函數(shù)自然對(duì)數(shù)@sign(x)假如x<0返回-1;不然,返回1@floor(x)返回x整數(shù)部分。當(dāng)x>=0時(shí),返回不超出x最大整數(shù);

當(dāng)x<0時(shí),返回不低于x最大整數(shù)。@smax(x1,x2,…,xn)返回x1,x2,…,xn中最大值@smin(x1,x2,…,xn)返回x1,x2,…,xn中最小值Lingo內(nèi)部函數(shù)——”@”第28頁(yè)4.3金融函數(shù)當(dāng)前LINGO提供了兩個(gè)金融函數(shù)。1.@fpa(I,n)返回以下情形凈現(xiàn)值:?jiǎn)挝粫r(shí)段利率為I,連續(xù)n個(gè)時(shí)段支付,每個(gè)時(shí)段支付單位費(fèi)用。若每個(gè)時(shí)段支付x單位費(fèi)用,則凈現(xiàn)值可用x乘以@fpa(I,n)算得。凈現(xiàn)值就是在一定時(shí)期內(nèi)為了取得一定收益在該時(shí)期初所支付實(shí)際費(fèi)用。例4.4貸款買房問(wèn)題貸款金額50000元,貸款年利率5.31%,采取分期付款方式(每年年末還固定金額,直至還清)。問(wèn)擬貸款10年,每年需償還多少元?LINGO代碼以下:50000=x*@fpa(.0531,10);答案是x=6573.069元。2.@fpl(I,n)返回以下情形凈現(xiàn)值:?jiǎn)挝粫r(shí)段利率為I,第n個(gè)時(shí)段支付單位費(fèi)用.@fpl(I,n)計(jì)算公式為第29頁(yè)

4.4概率函數(shù)1.@pbn(p,n,x)二項(xiàng)分布累積分布函數(shù)。當(dāng)n和(或)x不是整數(shù)時(shí),用線性插值法進(jìn)行計(jì)算。2.@pcx(n,x)自由度為nχ2分布累積分布函數(shù)。3.@peb(a,x)當(dāng)?shù)诌_(dá)負(fù)荷為a,服務(wù)系統(tǒng)有x個(gè)服務(wù)器且允許無(wú)窮排隊(duì)時(shí)Erlang繁忙概率。4.@pel(a,x)當(dāng)?shù)诌_(dá)負(fù)荷為a,服務(wù)系統(tǒng)有x個(gè)服務(wù)器且不允許排隊(duì)時(shí)Erlang繁忙概率。5.@pfd(n,d,x)自由度為n和dF分布累積分布函數(shù)。6.@pfs(a,x,c)當(dāng)負(fù)荷上限為a,用戶數(shù)為c,平行服務(wù)器數(shù)量為x時(shí),有限源Poisson服務(wù)系統(tǒng)等候或返修用戶數(shù)期望值。a是用戶數(shù)乘以平均服務(wù)時(shí)間,再除以平均返修時(shí)間。當(dāng)c和(或)x不是整數(shù)時(shí),采取線性插值進(jìn)行計(jì)算。第30頁(yè)7.@phg(pop,g,n,x)超幾何(Hypergeometric)分布累積分布函數(shù)。pop表示產(chǎn)品總數(shù),g是正品數(shù)。從全部產(chǎn)品中任意取出n(n≤pop)件。pop,g,n和x都能夠是非整數(shù),這時(shí)采取線性插值進(jìn)行計(jì)算。8.@ppl(a,x)Poisson分布線性損失函數(shù),即返回max(0,z-x)期望值,其中隨機(jī)變量z服從均值為aPoisson分布。9.@pps(a,x)均值為aPoisson分布累積分布函數(shù)。當(dāng)x不是整數(shù)時(shí),采取線性插值進(jìn)行計(jì)算。10.@psl(x)單位正態(tài)線性損失函數(shù),即返回max(0,z-x)期望值,其中隨機(jī)變量z服從標(biāo)準(zhǔn)正態(tài)分布。11.@psn(x)標(biāo)準(zhǔn)正態(tài)分布累積分布函數(shù)。12.@ptd(n,x)自由度為nt分布累積分布函數(shù)。13.@qrand(seed)產(chǎn)生服從(0,1)區(qū)間擬隨機(jī)數(shù)。@qrand只允許在模型數(shù)據(jù)部分使用,它將用擬隨機(jī)數(shù)填滿集屬性。通常,申明一個(gè)m×n二維表,m表示運(yùn)行試驗(yàn)次數(shù),n表示每次試驗(yàn)所需隨機(jī)數(shù)個(gè)數(shù)。在行內(nèi),隨機(jī)數(shù)是獨(dú)立分布;在行間,隨機(jī)數(shù)是非常均勻。這些隨機(jī)數(shù)是用“分層取樣”方法產(chǎn)生。第31頁(yè)4.5變量界定函數(shù)變量界定函數(shù)實(shí)現(xiàn)對(duì)變量取值范圍附加限制,共4種:@bin(x)限制x為0或1@bnd(L,x,U)限制L≤x≤U@free(x)取消對(duì)變量x默認(rèn)下界為0限制,即x能夠取任意實(shí)數(shù)@gin(x)限制x為整數(shù)在默認(rèn)情況下,LINGO要求變量是非負(fù),也就是說(shuō)下界為0,上界為+∞。@free取消了默認(rèn)下界為0限制,使變量也能夠取負(fù)值。@bnd用于設(shè)定一個(gè)變量上下界,它也能夠取消默認(rèn)下界為0約束。

第32頁(yè)4.6集合操作函數(shù)LINGO提供了幾個(gè)函數(shù)幫助處理集。

1.@in(set_name,primitive_index_1[,primitive_index_2,…])假如元素在指定集中,返回1;不然返回0。2.@wrap(index,limit)該函數(shù)返回j=index-k*limit,其中k是一個(gè)整數(shù),取適當(dāng)值確保j落在區(qū)間[1,limit]內(nèi)。該函數(shù)相當(dāng)于index模limit再加1。該函數(shù)在循環(huán)、多階段計(jì)劃編制中尤其有用。3.@size(set_name)該函數(shù)返回集set_name組員個(gè)數(shù)。在模型中明確給出集大小時(shí)最好使用該函數(shù)。它使用使模型愈加數(shù)據(jù)中立,集大小改變時(shí)也更易維護(hù)。第33頁(yè)4.7集循環(huán)函數(shù)集循環(huán)函數(shù)遍歷整個(gè)集進(jìn)行操作。其語(yǔ)法為@function(setname[(set_index_list)[|conditional_qualifier]]:expression_list);@function對(duì)應(yīng)于下面羅列四個(gè)集循環(huán)函數(shù)之一;setname是要遍歷集;set_index_list是集索引列表;conditional_qualifier是用來(lái)限制集循環(huán)函數(shù)范圍,當(dāng)集循環(huán)函數(shù)遍歷集每個(gè)組員時(shí),LINGO都要對(duì)conditional_qualifier進(jìn)行評(píng)價(jià),若結(jié)果為真,則對(duì)該組員執(zhí)行@function操作,不然跳過(guò),繼續(xù)執(zhí)行下一次循環(huán)。expression_list是被應(yīng)用到每個(gè)集組員表示式列表,當(dāng)用是@for函數(shù)時(shí),expression_list能夠包含多個(gè)表示式,其間用逗號(hào)隔開(kāi)。這些表示式將被作為約束加到模型中。當(dāng)使用其余三個(gè)集循環(huán)函數(shù)時(shí),expression_list只能有一個(gè)表示式。假如省略set_index_list,那么在expression_list中引用全部屬性類型都是setname集。第34頁(yè)1.@for該函數(shù)用來(lái)產(chǎn)生對(duì)集組員約束?;诮UZ(yǔ)言標(biāo)量需要顯式輸入每個(gè)約束,不過(guò)@for函數(shù)允許只輸入一個(gè)約束,然后LINGO自動(dòng)產(chǎn)生每個(gè)集組員約束。例4.10產(chǎn)生序列{1,4,9,16,25}model:sets:number/1..5/:x;endsets@for(number(I):x(I)=I^2);end第35頁(yè)2.@sum該函數(shù)返回遍歷指定集組員一個(gè)表示式和。例4.11求向量[5,1,3,4,6,10]前5個(gè)數(shù)和。model:data:N=6;enddatasets:number/1..N/:x;endsetsdata:x=5134610;enddatas=@sum(number(I)|I#le#5:x);end第36頁(yè)3.@min和@max返回指定集組員一個(gè)表示式最小值或最大值。例4.12求向量[5,1,3,4,6,10]前5個(gè)數(shù)最小值,后3個(gè)數(shù)最大值。model:data:N=6;enddatasets:number/1..N/:x;endsetsdata:x=5134610;enddataminv=@min(number(I)|I#le#5:x);maxv=@max(number(I)|I#ge#N-2:x);end第37頁(yè)4.8輸入和輸出函數(shù)輸入和輸出函數(shù)能夠把模型和外部數(shù)據(jù)比如文本文件、數(shù)據(jù)庫(kù)和電子表格等連接起來(lái)。1.@file函數(shù)該函數(shù)用從外部文件中輸入數(shù)據(jù),能夠放在模型中任何地方。該函數(shù)語(yǔ)法格式為@file(’filename’)。這里filename是文件名,能夠采取相對(duì)路徑和絕對(duì)路徑兩種表示方式。@file函數(shù)對(duì)同一文件兩種表示方式處理和對(duì)兩個(gè)不一樣文件處理是一樣,這一點(diǎn)必須注意。第38頁(yè)2.@text函數(shù)該函數(shù)被用在數(shù)據(jù)部分用來(lái)把解輸出至文本文件中。它能夠輸出集組員和集屬性值。其語(yǔ)法為@text([’filename’])這里filename是文件名,能夠采取相對(duì)路徑和絕對(duì)路徑兩種表示方式。假如忽略filename,那么數(shù)據(jù)就被輸出到標(biāo)準(zhǔn)輸出設(shè)備(大多數(shù)情形都是屏幕)。@text函數(shù)僅能出現(xiàn)在模型數(shù)據(jù)部分一條語(yǔ)句左邊,右邊是集名(用來(lái)輸出該集全部組員名)或集屬性名(用來(lái)輸出該集屬性值)。我們把用接口函數(shù)產(chǎn)生輸出數(shù)據(jù)申明稱為輸出操作。輸出操作僅當(dāng)求解器求解完模型后才執(zhí)行,執(zhí)行次序取決于其在模型中出現(xiàn)先后。第39頁(yè)3.@ole函數(shù)@OLE是從EXCEL中引入或輸出數(shù)據(jù)接口函數(shù),它是基于傳輸OLE技術(shù)。OLE傳輸直接在內(nèi)存中傳輸數(shù)據(jù),并不借助于中間文件。當(dāng)使用@OLE時(shí),LINGO先裝載EXCEL,再通知EXCEL裝載指定電子數(shù)據(jù)表,最終從電子數(shù)據(jù)表中取得Ranges。為了使用OLE函數(shù),必須有EXCEL5及其以上版本。OLE函數(shù)可在數(shù)據(jù)部分和初始部分引入數(shù)據(jù)。@OLE能夠同時(shí)讀集組員和集屬性,集組員最好用文本格式,集屬性最好用數(shù)值格式。原始集每個(gè)集組員需要一個(gè)單元(cell),而對(duì)于n元派生集每個(gè)集組員需要n個(gè)單元,這里第一行n個(gè)單元對(duì)應(yīng)派生集第一個(gè)集組員,第二行n個(gè)單元對(duì)應(yīng)派生集第二個(gè)集組員,依這類推。@OLE只能讀一維或二維Ranges(在單個(gè)EXCEL工作表(sheet)中),但不能讀間斷或三維Ranges。Ranges是自左而右、自上而下來(lái)讀。第40頁(yè)4.@ranged(variable_or_row_name)為了保持最優(yōu)基不變,變量費(fèi)用系數(shù)或約束行右端項(xiàng)允許降低量。5.@rangeu(variable_or_row_name)為了保持最優(yōu)基不變,變量費(fèi)用系數(shù)或約束行右端項(xiàng)允許增加量。6.@status()返回LINGO求解模型結(jié)束后狀態(tài):0GlobalOptimum(全局最優(yōu))1Infeasible(不可行)2Unbounded(無(wú)界)3Undetermined(不確定)4Feasible(可行)5InfeasibleorUnbounded(通常需要關(guān)閉“預(yù)處理”選項(xiàng)后重新求解模型,以確定模型終究是不可行還是無(wú)界)6LocalOptimum(局部最優(yōu))7LocallyInfeasible(局部不可行,盡管可行解可能存在,不過(guò)LINGO并沒(méi)有找到一個(gè))8Cutoff(目標(biāo)函數(shù)截?cái)嘀当坏竭_(dá))第41頁(yè)9NumericError(求解器因在某約束中碰到無(wú)定義算術(shù)運(yùn)算而停頓)

通常,假如返回值不是0、4或6時(shí),那么解將不可信,幾乎不能用。該函數(shù)僅被用在模型數(shù)據(jù)部分來(lái)輸出數(shù)據(jù)。例4.17model:min=@sin(x);data:@text()=@status();enddataend部分計(jì)算結(jié)果為:

Localoptimalsolutionfoundatiteration:33Objectivevalue:-1.000000

6VariableValueReducedCostX4.7123880.000000結(jié)果中6就是@status()返回結(jié)果,表明最終解是局部最優(yōu)。

7.@dual@dual(variable_or_row_name)返回變量判別數(shù)(檢驗(yàn)數(shù))或約束行對(duì)偶(影子)價(jià)格(dualprices)。第42頁(yè)Lingo條件判斷函數(shù)分段函數(shù)@IF(logical_condition,true_result,false_result)例5求解最優(yōu)化問(wèn)題LINGO代碼以下:model:min=fx+fy;fx=@if(x#gt#0,100,0)+2*x;fy=@if(y#gt#0,60+3*y,2*y);x+y>=30;end第43頁(yè)第44頁(yè)5.LINGO慣用菜單命令1.求解模型(Slove)從LINGO菜單中選取“求解”命令、單擊“Slove”按鈕或按Ctrl+S組合鍵能夠?qū)?dāng)前模型送入內(nèi)存求解。2.求解結(jié)果...(Solution...)從LINGO菜單中選取“Solution...”命令、單擊“Solution...”按鈕或直接按Ctrl+O組合鍵能夠打開(kāi)求解結(jié)果對(duì)話框。這里能夠指定查看當(dāng)前內(nèi)存中求解結(jié)果那些內(nèi)容。3.查看...(Look...)從LINGO菜單中選取“Look...”命令或直接按Ctrl+L組合鍵能夠查看全部或選中模型文本內(nèi)容。4.靈敏性分析(Range,Ctrl+R)用該命令產(chǎn)生當(dāng)前模型靈敏性分析匯報(bào):研究當(dāng)目標(biāo)函數(shù)費(fèi)用系數(shù)和約束右端項(xiàng)在什么范圍(此時(shí)假定其它系數(shù)不變)時(shí),最優(yōu)基保持不變。靈敏性分析是在求解模型時(shí)作出,所以在求解模型時(shí)靈敏性分析是激活狀態(tài),不過(guò)默認(rèn)是不激活。為了激活靈敏性分析,運(yùn)行LINGO|Options…,選擇GeneralSolverTab,在DualComputations列表框中,選擇Prices&Ranges選項(xiàng)。靈敏性分析花費(fèi)相當(dāng)多求解時(shí)間,所以當(dāng)速度很關(guān)鍵時(shí),就沒(méi)有必要激活它。第45頁(yè)二、Lingo集合某企業(yè)有6個(gè)建筑工地,位置坐標(biāo)為(ai,bi)(單位:公里),水泥日用量di

(單位:噸)例4選址問(wèn)題假設(shè):料場(chǎng)和工地之間有直線道路(1)現(xiàn)有2料場(chǎng),位于A(5,1),B(2,7),記(xj,yj),j=1,2,日儲(chǔ)量ej各有20噸。目標(biāo):制訂天天供給計(jì)劃,即從A,B兩料場(chǎng)分別向各工地運(yùn)輸多少噸水泥,使總噸公里數(shù)最小。i123456a28.750.55.7537.25b30.754.7556.57.75d1.25547611第46頁(yè)用例中數(shù)據(jù)計(jì)算,最優(yōu)解為總噸公里數(shù)為136.2線性規(guī)劃模型(LP)決議變量:cij(料場(chǎng)j到工地i運(yùn)量)~12維第47頁(yè)基本使用1、Lingo建模語(yǔ)言組成:4個(gè)段目標(biāo)與約束段集合段(SETSENDSETS)數(shù)據(jù)段(DATAENDDATA)初始段(INITENDINIT)(計(jì)算段(CALCENDCALC))第48頁(yè)目標(biāo)與約束段MODEL:TitleLocationProblem;sets:demand/1..6/:a,b,d;supply/1..2/:x,y,e;link(demand,supply):c;endsetsdata:a=1.25,8.75,0.5,5.75,3,7.25;b=1.25,0.75,4.75,5,6.5,7.75;d=3,5,4,7,6,11;e=20,20;enddatainit:x,y=5,1,2,7;endinitmin=@sum(link(i,j):c(i,j)*((x(j)-a(i))^2+(y(j)-b(i))^2)^(1/2));@for(demand(i):@sum(supply(j):c(i,j))=d(i););@for(supply(i):@sum(demand(j):c(j,i))<=e(i););END集合段數(shù)據(jù)段初始段供給約束需求需求點(diǎn)位置供需量供給初始點(diǎn)目標(biāo)需求約束連接第49頁(yè)2、Lingo集合Set及其屬性Attribute例1建筑工地位置坐標(biāo)(ai,bi)、水泥日用量di

:對(duì)每個(gè)建筑工地(6個(gè))都有一個(gè)對(duì)應(yīng)值都是一個(gè)由6個(gè)元素組成數(shù)組——是已知料場(chǎng)位置坐標(biāo)(xj,yj)、日儲(chǔ)量ej對(duì)每個(gè)料場(chǎng)(2個(gè))都有一個(gè)對(duì)應(yīng)值都是一個(gè)由2個(gè)元素組成數(shù)組——當(dāng)前是已知料場(chǎng)到建筑工地供給計(jì)劃cij

對(duì)每個(gè)料場(chǎng)與建筑工地之間(6×2)都有一個(gè)對(duì)應(yīng)值是一個(gè)6×2個(gè)元素組成矩陣——是未知數(shù)LINDO無(wú)數(shù)組,每個(gè)變量輸入——麻煩Lingo集合Set——下標(biāo)集合——100個(gè)工地?第50頁(yè)集合Set及其屬性Attribute定義數(shù)組下標(biāo)集合demand/1..6/———表示6個(gè)建筑工地a,b,d稱為該集合屬性———表示坐標(biāo)(ai,bi)、水泥日用量di定義數(shù)組下標(biāo)集合supply/1..2/———表示6個(gè)建筑工地該集合屬性x,y,e———表示坐標(biāo)(xj,yj)、日儲(chǔ)量ej

定義數(shù)組下標(biāo)集合link(demand,supply)———表示6×2個(gè)料場(chǎng)到建筑工地連接該集合屬性c———表示每個(gè)料場(chǎng)與建筑工地之間供給計(jì)劃cij1到6整數(shù)第51頁(yè)建立下標(biāo)集合例4需求點(diǎn)位置供需量sets:demand/1..6/:a,b,d;supply/1..2/:x,y,e;link(demand,supply):c;endsetsdata:a=1.25,8.75,0.5,5.75,3,7.25;b=1.25,0.75,4.75,5,6.5,7.75;d=3,5,4,7,6,11;x,y=5,1,2,7;e=20,20;enddata賦值需求供給連接基本集合派生集合Lingo建模語(yǔ)言——集合段數(shù)據(jù)段第52頁(yè)3、定義集合Set直接把元素列舉出來(lái)定義格式——集合名元素列表屬性列表setname[/member_list/][:attribute_list];[……]——可選項(xiàng)元素列表顯式列舉法——列出全部元素,用逗號(hào)或空格分開(kāi)隱式列舉法——1..n屬性列表缺省——集合可在程序中作為一循環(huán)變量使用,結(jié)構(gòu)更復(fù)雜派生集合元素列表缺省——必須在數(shù)據(jù)段給出元素列表賦值基本集合primaryset第53頁(yè)派生集合derivedset基于其它集合而派生出來(lái)二維或多維集合定義格式——集合名父集合列表元素列表屬性列表setname(parent_set_list)[/member_list/][:attribute_list];元素列表缺省全部組合——稠密集合、或數(shù)據(jù)段列表賦值元素列表——稀疏集合元素列表法——枚舉元素過(guò)濾法——利用過(guò)濾條件setname(parent_set_list)[|filtrate_condition][:attribute_list];第54頁(yè)集合類型集合派生集合基本集合稀疏集合稠密集合元素列表法元素過(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,B1A1,B2A2,B1A3,B2/:D;ENDSETSSETS:STUDENTS/S1..S8/;PAIRS(STUDENTS,STUDENTS)|&2#GT#&1:BENEFIT,MATCH;ENDSETS第55頁(yè)3、Lingo集合循環(huán)函數(shù)難點(diǎn)!重點(diǎn)!循環(huán)操作函數(shù)——集合上元素——下標(biāo):集合函數(shù)名@function(setname[(set_index_list)[|condition]]:expression_list);集合名集合索引列表過(guò)濾條件表示式FOR MAX MIN SUM PROD第56頁(yè)目標(biāo):噸公里@for(demand(i):@sum(supply(j):c(i,j))=d(i););@for(supply(i):@sum(demand(j):c(j,i))<=e(i););例1約束:需求供給min=@sum(link(i,j):c(i,j)*((x(j)-a(i))^2+(y(j)-b(i))^2)^(1/2));第57頁(yè)默認(rèn):非負(fù)實(shí)數(shù)變量4、Lingo變量定界函數(shù)@BND(L,X,N)[L,U]@FREE(X)自由變量@BIN(X)0-1變量@GIN(X)整數(shù)變量例4約束:非負(fù)第58頁(yè)目標(biāo)與約束段MODEL:TitleLocationProblem;sets:demand/1..6/:a,b,d;supply/1..2/:x,y,e;link(demand,supply):c;endsetsdata:a=1.25,8.75,0.5,5.75,3,7.25;b=1.25,0.75,4.75,5,6.5,7.75;d=3,5,4,7,6,11;x,y=5,1,2,7;e=20,20;enddatamin=@sum(link(i,j):c(i,j)*((x(j)-a(i))^2+(y(j)-b(i))^2)^(1/2));@for(demand(i):@sum(supply(j):c(i,j))=d(i););@for(supply(i):@sum(demand(j):c(j,i))<=e(i););END集合段數(shù)據(jù)段供給約束需求需求點(diǎn)位置需求量供給供給點(diǎn)目標(biāo)需求約束連接結(jié)果:總噸公里數(shù)為136.228供給量第59頁(yè)2)改建兩個(gè)新料場(chǎng),需要確定新料場(chǎng)位置(xj,yj)和運(yùn)量cij,在其它條件不變下使總噸公里數(shù)最小。決議變量:cij,(xj,yj)~16維非線性規(guī)劃模型例6選址問(wèn)題目標(biāo):噸公里約束:需求供給第60頁(yè)LINGO集合段數(shù)據(jù)段初始段目標(biāo)與約束段最優(yōu):85.266(噸公里)

NLP:從數(shù)據(jù)段移到初始段局部第61頁(yè)最優(yōu):89.8835(噸公里)局部若對(duì)新料場(chǎng)位置加以限制第62頁(yè)界面四、LINGO菜單及對(duì)話框1、LINGO界面主窗口模型窗口ModelWindow狀態(tài)欄當(dāng)前時(shí)間當(dāng)前光標(biāo)位置第63頁(yè)2、LINGO工具欄File|Open(F3)打開(kāi)文件File|Print(F7)打印文件Edit|Copy(Ctrl+C)復(fù)制Edit|Undo(Ctrl+Z)取消操作Edit|Find(Ctrl+F)查找LINGO|Solution(Alt+O)顯示解答Edit|MatchParenthesis(Ctrl+P)匹配括號(hào)LINGO|Options(Ctrl+I)選項(xiàng)設(shè)置Window|CloseAll(Alt+X)關(guān)閉全部窗口Help|Contents(F1)在線幫助File|New(F2)新建文件File|Save(F4)保留文件Edit|Cut(Ctrl+X)剪切Edit|Paste(Ctrl+V)粘貼Edit|Redo(Ctrl+Y)恢復(fù)操作Edit|GoToLine(Ctrl+T)定位某行LINGO|Solve(Ctrl+S)求解模型LINGO|Picture(Ctrl+K)模型圖示W(wǎng)indow|SendtoBack(Ctrl+B)窗口后置Window|Tile(Alt+T)

平鋪窗口上下文相關(guān)幫助

第64頁(yè)FileExportFile…UserDatabaseInfoEditPastePasteSpecial…MatchParenthesisPasteFunctionSelectFontInsertNewObjectLinksObjectProperties3、LINGO菜單欄LINGOLOOKGeneratePictureFileGenerateOptions第65頁(yè)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)GeneratorMemoryUsed(K)(內(nèi)存使用量)ElapsedRuntime(hh:mm:ss)(求解花費(fèi)時(shí)間)4、LINGO運(yùn)行狀態(tài)窗口第66頁(yè)求解器(求解程序)狀態(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):"GlobalOptimum","LocalOptimum","Feasible","Infeasible“(不可行),"Unbounded“(無(wú)界),"Interrupted“(中止),"Undetermined“(未確定)解目標(biāo)函數(shù)值當(dāng)前約束不滿足總量(不是不滿足約束個(gè)數(shù)):實(shí)數(shù)(即使該值=0,當(dāng)前解也可能不可行,因?yàn)檫@個(gè)量中沒(méi)有考慮用上下界命令形式給出約束)當(dāng)前為止迭代次數(shù)運(yùn)行狀態(tài)窗口第67頁(yè)擴(kuò)展求解器(求解程序)狀態(tài)框使用特殊求解程序:B-and-B(分枝定界算法)Global(全局最優(yōu)求解程序)Multistart(用多個(gè)初始點(diǎn)求解程序)當(dāng)前為止找到可行解最正確目標(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ù)運(yùn)行狀態(tài)窗口第68頁(yè)可設(shè)置80-90個(gè)控制參數(shù)

5、Options7個(gè)選項(xiàng)卡Interface界面GeneralSolver通用求解LinearSolver線性求解NonlinearSolver非線性求解IntegerPre-Solver整數(shù)預(yù)處理IntegerSolver整數(shù)求解GlobalSolver全局最優(yōu)求解第69頁(yè)

LINGO系統(tǒng)(LINGO)主菜單LINGO|Options命令打開(kāi)一個(gè)含有7個(gè)選項(xiàng)卡窗口,經(jīng)過(guò)它修改LINGO系統(tǒng)各種控制參數(shù)和選項(xiàng)。新設(shè)置生效新設(shè)置生效,并關(guān)閉窗口當(dāng)前設(shè)置變?yōu)槟J(rèn)設(shè)置,下次開(kāi)啟LINGO時(shí)這些設(shè)置依然有效恢復(fù)LINGO系統(tǒng)定義原始默認(rèn)設(shè)置(缺省設(shè)置)廢棄此次操作,退出對(duì)話框顯示本對(duì)話框幫助信息第70頁(yè)LINGO|Options|Interface(界面)選項(xiàng)卡錯(cuò)誤信息對(duì)話框:假如選擇該選項(xiàng),求解程序碰到錯(cuò)誤時(shí)將打開(kāi)一個(gè)對(duì)話框顯示錯(cuò)誤,關(guān)閉該對(duì)話框后程序才會(huì)繼續(xù)執(zhí)行;不然,錯(cuò)誤信息將在匯報(bào)窗口顯示,程序仍會(huì)繼續(xù)執(zhí)行彈出屏幕:假如選擇該選項(xiàng),則LINGO每次開(kāi)啟時(shí)會(huì)在屏幕上彈出一個(gè)對(duì)話框,顯示LINGO版本和版權(quán)信息;不然不彈出解截?cái)?小于等于這個(gè)值解將匯報(bào)為“0”(缺省是10-9)填充數(shù)據(jù)庫(kù)表:當(dāng)LINGO向電子表(如EXCEL文件)或數(shù)據(jù)庫(kù)中輸出數(shù)據(jù)時(shí),假如電子表或數(shù)據(jù)庫(kù)中用來(lái)接收收據(jù)空間大于實(shí)際輸出數(shù)據(jù)占用空間,是否對(duì)多出表空間進(jìn)行數(shù)據(jù)填充?(缺省值為不進(jìn)行填充)第71頁(yè)LINGO|Options|Interface(界面)選項(xiàng)卡狀態(tài)欄:假如選擇該選項(xiàng),則LINGO系統(tǒng)在主窗口最下面一行顯示狀態(tài)欄;不然不顯示狀態(tài)窗口:假如選擇該選項(xiàng),則LINGO系統(tǒng)每次運(yùn)行LINGO|Solve命令時(shí)會(huì)在屏幕上彈出狀態(tài)窗口;不然不彈出工具欄:假如選擇該選項(xiàng),則顯示工具欄;不然不顯示簡(jiǎn)練輸出:假如選擇該選項(xiàng),則LINGO系統(tǒng)對(duì)求解結(jié)果匯報(bào)等將以簡(jiǎn)練形式輸出;不然以詳細(xì)形式輸出第72頁(yè)LINGO|Options|Interface(界面)選項(xiàng)卡LINGO擴(kuò)展格式:模型文件缺省保留格式是lg4格式(這是一個(gè)二進(jìn)制文件,只有LINGO能讀出)LINDO純文本格式:模型文件缺省保留格式變?yōu)長(zhǎng)INDO格式(純文本)LINGO純文本格式:模型文件缺省保留格式變?yōu)閘ng格式(純文本)第73頁(yè)LINGO|Options|Interface(界面)選項(xiàng)卡行數(shù)限制:語(yǔ)法配色行數(shù)限制(缺省為1000)。LINGO模型窗口中將LINGO關(guān)鍵字顯示為蘭色,注釋為綠色,其它為黑色,超出該行數(shù)限制后則不再區(qū)分顏色。尤其地,設(shè)置行數(shù)限制為0時(shí),整個(gè)文件不再區(qū)分顏色。括號(hào)匹配:假如選擇該選項(xiàng),則模型中當(dāng)前光標(biāo)所在處括號(hào)及其相匹配括號(hào)將以紅色顯示;不然不使用該功效延遲:設(shè)置語(yǔ)法配色延遲時(shí)間(秒,缺省為0,從最終一次擊鍵算起)。第74頁(yè)LINGO|Options|Interface(界面)選項(xiàng)卡匯報(bào)發(fā)送到命令窗口:假如選擇該選項(xiàng),則輸出信息會(huì)發(fā)送到命令窗口;不然不使用該功效輸入信息反饋:假如選擇該選項(xiàng),則用File|TakeCommand命令執(zhí)行命令腳本文件時(shí),處理信息會(huì)發(fā)送到命令窗口;不然不使用該功效頁(yè)面大小限制:命令窗口每次顯示行數(shù)最大值為L(zhǎng)ength(缺省為沒(méi)有限制),顯示這么多行后會(huì)暫停,等候用戶響應(yīng);每行最大字符數(shù)為Width(缺省為74,能夠設(shè)定為64-200之間),多出字符將被截?cái)嘈袛?shù)限制:命令窗口能顯示行數(shù)最大值為Maximum(缺省為800);假如要顯示內(nèi)容超出這個(gè)值,每次從命令窗口滾動(dòng)刪除最小行數(shù)為Minimum(缺省為400)第75頁(yè)LINGO|Options|GeneralSolver(通用求解程序)選項(xiàng)卡矩陣生成器內(nèi)存限制:缺省值為32M,矩陣生成器使用內(nèi)存超出該限制,LINGO將匯報(bào)"Themodelgeneratorranoutofmemory"運(yùn)行限制:迭代次數(shù):求解一個(gè)模型時(shí),允許最大迭代次數(shù)(缺省值為無(wú)限)運(yùn)行限制:運(yùn)行時(shí)間:求解一個(gè)模型時(shí),允許最大運(yùn)行時(shí)間(秒)(缺省值為無(wú)限)對(duì)偶計(jì)算:求解時(shí)控制對(duì)偶計(jì)算級(jí)別,有三種可能設(shè)置:None:不計(jì)算任何對(duì)偶信息;Prices:計(jì)算對(duì)偶價(jià)格(缺省設(shè)置);PricesandRanges:計(jì)算對(duì)偶價(jià)格并分析敏感性;Prices,OptOnly:只計(jì)算最優(yōu)行對(duì)偶價(jià)格。第76頁(yè)LINGO|Options|GeneralSolver(通用求解程序)選項(xiàng)卡固定變量歸結(jié)、簡(jiǎn)化:求解前對(duì)固定變量歸結(jié)程度(相當(dāng)于預(yù)處理程度):None:不歸結(jié);Always:總是歸結(jié);Notwithglobalandmultistart:在全局優(yōu)化和多初值優(yōu)化程序中不歸結(jié)。模型重新生成:控制重新生成模型頻率,有三種可能設(shè)置:Onlywhentextchanges:只有當(dāng)模型文本修改后才再生成模型;Whentextchangesorwithexternalreferences:當(dāng)模型文本修改或模型含有外部引用時(shí)(缺省設(shè)置);Always:每當(dāng)有需要時(shí)。第77頁(yè)LINGO|Options|GeneralSolver(通用求解程序)選項(xiàng)卡線性化程度:決定求解模型時(shí)線性化程度,有四種可能設(shè)置:SolverDecides:若變量數(shù)小于等于12個(gè),則盡可能全部線性化;不然不做任何線性化(缺省設(shè)置)None:不做任何線性化Low:對(duì)函數(shù)@ABS(),@MAX(),@MIN(),@SMAX(),@SMIN(),以及二進(jìn)制變量與連續(xù)變量乘積項(xiàng)做線性化High:同上,另外對(duì)邏輯運(yùn)算符#LE#,#EQ#,#GE#,#NE#做線性化線性化誤差限:設(shè)置線性化誤差限(缺省值為10^-6)線性化大M系數(shù):設(shè)置線性化大M系數(shù)(缺省值為10^6)第78頁(yè)LINGO|Options|GeneralSolver(通用求解程序)選項(xiàng)卡允許無(wú)限制地使用基本集合組員名:選擇該選項(xiàng)能夠保持與LINGO4.0以前版本兼容:即允許使用基本集合組員名稱直接作為該組員在該集合索引值(LINGO4.0以后版本要求使用@INDEX函數(shù))檢驗(yàn)數(shù)據(jù)和模型中名稱是否重復(fù)使用:選擇該選項(xiàng),LINGO將檢驗(yàn)數(shù)據(jù)和模型中名稱是否重復(fù)使用,如基本集合組員名是否與決議變量名重復(fù)檢驗(yàn)數(shù)據(jù)和模型中名稱是否重復(fù)使用:選擇該選項(xiàng),LINGO將檢驗(yàn)數(shù)據(jù)和模型中名稱是否重復(fù)使用,如基本集合組員名是否與決議變量名重復(fù)最小化內(nèi)存使用量:是否最小化內(nèi)存使用量。缺省設(shè)置為“是”。使用這個(gè)功效一個(gè)缺點(diǎn)是可能引發(fā)計(jì)算速度下降第79頁(yè)LINGO|OPTIONS|LinearSolver(線性求解程序)選項(xiàng)卡求解時(shí)算法,有四種可能設(shè)置:SolverDecides:LINGO自動(dòng)選擇算法(缺省設(shè)置)PrimalSimplex:原始單純形法DualSimplex:對(duì)偶單純形法Barrier:障礙法(即內(nèi)點(diǎn)法)模型降維:控制是否檢驗(yàn)?zāi)P椭袩o(wú)關(guān)變量,從而降低模型規(guī)模:Off:不檢驗(yàn)On:檢驗(yàn)SolverDecides:LINGO自動(dòng)決定(缺省設(shè)置)初始線性可行性誤差限:控制線性模型中約束滿足初始誤差限(缺省值為3*10^-6).最終線性可行性誤差限:控制線性模型中約束滿足最終誤差限(缺省值為10^-7).第80頁(yè)LINGO|OPTIONS|LinearSolver(線性求解程序)選項(xiàng)卡原始單純形法:有三種可能設(shè)置:SolverDecides:LINGO自動(dòng)決定(缺省設(shè)置)Partial:LINGO對(duì)一部分可能出基變量進(jìn)行嘗試Devex:用Steepest-Edge(最陡邊)近似算法對(duì)全部可能變量進(jìn)行嘗試,找到使目標(biāo)值下降最多出基變量對(duì)偶單純形法:有三種可能設(shè)置:SolverDecides:LINGO自動(dòng)決定(缺省設(shè)置)Dantzig:按最大下降百分比法確定出基變量Steepest-Edge:最陡邊策略,對(duì)全部可能變量進(jìn)行嘗試,找到使目標(biāo)值下降最多出基變量?jī)r(jià)格策略(決定出基變量策略)第81頁(yè)LINGO|OPTIONS|LinearSolver(線性求解程序)選項(xiàng)卡冷開(kāi)啟時(shí):設(shè)置LINGO|Debug命令調(diào)試所使用程序(冷開(kāi)啟含義是不從當(dāng)前基開(kāi)始,而是從頭開(kāi)始運(yùn)行)。有四種可能設(shè)置:SolverDecides:LINGO自動(dòng)選擇算法(缺省設(shè)置)PrimalSimplex:原始單純形法DualSimplex:對(duì)偶單純形法Barrier:障礙法(即內(nèi)點(diǎn)法)熱開(kāi)啟時(shí)同冷開(kāi)啟(熱開(kāi)啟含義是從當(dāng)前基開(kāi)始運(yùn)行)調(diào)試時(shí)采取求解程序矩陣分解:選擇該選項(xiàng),LINGO將嘗試將一個(gè)大模型分解為幾個(gè)小模型求解;不然不嘗試檢驗(yàn)?zāi)P蛿?shù)據(jù)平衡性:選擇該選項(xiàng),LINGO檢驗(yàn)?zāi)P椭袛?shù)據(jù)是否平衡(數(shù)量級(jí)是否相差太大)并嘗試改變尺度使模型平衡;不然不嘗試第82頁(yè)LINGO|OPTIONS|NonlinearSolver(非線性求解程序)選項(xiàng)卡初始非線性可行性誤差限:控制模型中約束滿足初始誤差限(缺省值為10-3)最終非線性可行性誤差限:控制模型中約束滿足最終誤差限(缺省值為10-6)非線性規(guī)劃最優(yōu)性誤差限:當(dāng)目標(biāo)函數(shù)在當(dāng)前解梯度小于等于這個(gè)值以后,停頓迭代(缺省值為2*10-7)遲緩改進(jìn)迭代次數(shù)上限:當(dāng)目標(biāo)函數(shù)在連續(xù)這么屢次迭代沒(méi)有顯著改進(jìn)以后,停頓迭代(缺省值為5)非線性求解程序版本:在個(gè)別情況下,可能老版本會(huì)更有效些,可能選擇有:SolverDecides:LINGO自動(dòng)選擇(缺省設(shè)置,當(dāng)前就是2.0版);Ver1.0:選擇1.0版本;Ver2.0:選擇2.0版本。第83頁(yè)LINGO|OPTIONS|NonlinearSolver(非線性求解程序)選項(xiàng)卡導(dǎo)數(shù)計(jì)算方式:設(shè)置導(dǎo)數(shù)計(jì)算方式,有5種選擇:SolverDecides:LINGO自動(dòng)選擇(缺省設(shè)置)Backwardanalytical:前向解析法計(jì)算導(dǎo)數(shù);Forwardanalytical:前向解析法計(jì)算導(dǎo)數(shù)Centraldifferences:中心差分法計(jì)算數(shù)值導(dǎo)數(shù)Forwarddifferences:前向差分法計(jì)算數(shù)值導(dǎo)數(shù)。生成初始解:選擇該選項(xiàng),LINGO將用啟發(fā)式方法生成初始解;不然不生成(缺省值)識(shí)別二次規(guī)劃:選擇該選項(xiàng),LINGO將判別模型是否為二次規(guī)劃,若是則采取二次規(guī)劃算法(包含在線性規(guī)劃內(nèi)點(diǎn)法中);不然不判別(缺省值)策略第84頁(yè)LINGO|OPTIONS|NonlinearSolver(非線性求解程序)選項(xiàng)卡SLP方向:選擇該選項(xiàng),LINGO在每次迭代時(shí)用SLP(SuccessiveLP,逐次線性規(guī)劃)方法尋找搜索方向(缺省值)有選擇地檢驗(yàn)約束:選擇該選項(xiàng),LINGO在每次迭代時(shí)只檢驗(yàn)必須檢驗(yàn)約束(假如有些約束函數(shù)在一些區(qū)域沒(méi)有定義,這么做會(huì)出現(xiàn)錯(cuò)誤);不然,檢驗(yàn)全部約束(缺省值)策略最陡邊策略:選擇該選項(xiàng),LINGO在每次迭代時(shí)將對(duì)全部可能變量進(jìn)行嘗試,找到使目標(biāo)值下降最多變量進(jìn)行迭代;缺省值為不使用最陡邊策略第85頁(yè)LINGO|OPTIONS|IntegerPre-Solver(整數(shù)預(yù)處理程序)選項(xiàng)卡最小時(shí)間:每個(gè)分枝節(jié)點(diǎn)使用啟發(fā)式搜索最小時(shí)間(秒)水平:控制采取啟發(fā)式搜索次數(shù)(缺省值為3,可能值為0-100).啟發(fā)式方法目標(biāo)是從分枝節(jié)點(diǎn)連續(xù)解出發(fā),搜索一個(gè)好整數(shù)解。探測(cè)水平(級(jí)別):控制采取探測(cè)(Probing)技術(shù)級(jí)別(探測(cè)能夠用于混合整數(shù)線性規(guī)劃模型,收緊變量上下界和約束右端項(xiàng)值)。可能取值為:SolverDecides:LINGO自動(dòng)決定(缺省設(shè)置)1-7:探測(cè)級(jí)別逐步升高。啟發(fā)式方法約束割(平面)第86頁(yè)LINGO|OPTIONS|IntegerPre-Solver(整數(shù)預(yù)處理程序)選項(xiàng)卡最大迭代檢驗(yàn)次數(shù):為了尋找適當(dāng)割,最大迭代檢驗(yàn)次數(shù)。應(yīng)用節(jié)點(diǎn):控制在分枝定界樹中,哪些節(jié)點(diǎn)需要增加割(平面),可能取值為:RootOnly:僅根節(jié)點(diǎn)增加割(平面)AllNodes:全部節(jié)點(diǎn)均增加割(平面)SolverDecides:LINGO自動(dòng)決定(缺省設(shè)置)相對(duì)上限:控制生成割(平面)個(gè)數(shù)相對(duì)于原問(wèn)題約束個(gè)數(shù)上限(比值),缺省值為0.75約束割(平面)對(duì)根節(jié)點(diǎn)次數(shù)(缺省值為200)對(duì)其它節(jié)點(diǎn)次數(shù)(缺省值為2)類型:控制生成割(平面)策略第87頁(yè)LINGO|OPTIONS|IntegerSolver(整數(shù)求解程序)選項(xiàng)卡控制分枝策略中優(yōu)先對(duì)變量取整方向,有三種選擇:Both:LINGO自動(dòng)決定(缺省)Up:向上取整優(yōu)先Down:向下取整優(yōu)先絕對(duì)誤差限:當(dāng)變量與整數(shù)絕對(duì)誤差小于這個(gè)值時(shí),該變量被認(rèn)為是整數(shù)。缺省值為10-6分枝控制分枝策略中優(yōu)先對(duì)哪些變量進(jìn)行分枝,有兩種選擇:LINGODecides:LINGO自動(dòng)決定(缺省設(shè)置)Binary:二進(jìn)制(0-1)變量?jī)?yōu)先整性相對(duì)誤差限:當(dāng)變量與整數(shù)相對(duì)誤差小于這個(gè)值時(shí),該變量被認(rèn)為是整數(shù)。缺省值為8*10-6第88頁(yè)LINGO|OPTIONS|IntegerSolver(整數(shù)求解程序)選項(xiàng)卡熱開(kāi)啟:當(dāng)以前面求解結(jié)果為基礎(chǔ),熱開(kāi)啟求解程序時(shí)采取算法,有四種可能設(shè)置:LINGODecides:LINGO自動(dòng)選擇算法(缺省)PrimalSimplex:原始單純形法DualSimplex:對(duì)偶單純形法Barrier:障礙法(即內(nèi)點(diǎn)法)目標(biāo)函數(shù)絕對(duì)誤差限:當(dāng)當(dāng)前目標(biāo)函數(shù)值與最優(yōu)值絕對(duì)誤差小于這個(gè)值時(shí),當(dāng)前解被認(rèn)為是最優(yōu)解(也就是說(shuō):只需要搜索比當(dāng)前解最少改進(jìn)這么多個(gè)單位解)。缺省值為8*10-8LP求解程序冷開(kāi)啟:當(dāng)不以前面求解結(jié)果為基礎(chǔ),冷開(kāi)啟求解程序時(shí)采取算法,有四種可能設(shè)置(同熱開(kāi)啟)最優(yōu)性目標(biāo)函數(shù)相對(duì)誤差限:當(dāng)當(dāng)前目標(biāo)函數(shù)值與最優(yōu)值相對(duì)誤差小于這個(gè)值時(shí),當(dāng)前解被認(rèn)為是最優(yōu)解(也就是說(shuō):只需要搜索比當(dāng)前解最少改進(jìn)這么多百分比解)。缺省值為5*10-8第89頁(yè)LINGO|OPTIONS|IntegerSolver(整數(shù)求解程序)選項(xiàng)卡最優(yōu)性開(kāi)始采取相對(duì)誤差限時(shí)間(秒):在程序開(kāi)始運(yùn)行后這么多秒內(nèi),不采取相對(duì)誤差限策略;今后才使用相對(duì)誤差限策略。缺省值為100秒誤差限籬笆值(同LINDO)節(jié)點(diǎn)選擇:控制怎樣選擇節(jié)點(diǎn)分枝求解,有以下選項(xiàng):LINGODecides:LINGO自動(dòng)選擇(缺省設(shè)置)DepthFirst:按深度優(yōu)先WorstBound:選擇含有最壞界節(jié)點(diǎn)BestBound:選擇含有最好界節(jié)點(diǎn)強(qiáng)分枝層數(shù):控制采取強(qiáng)分枝層數(shù)。也就是說(shuō),對(duì)前這么多層分枝,采取強(qiáng)分枝策略。所謂強(qiáng)分枝,就是在一個(gè)節(jié)點(diǎn)對(duì)多個(gè)變量分別嘗試進(jìn)行預(yù)分枝,找出其中最好解(變量)進(jìn)行實(shí)際分枝第90頁(yè)LINGO|OPTIONS|GlobalSolver(全局最優(yōu)求解程序)選項(xiàng)卡

全局最優(yōu)求解程序使用全局最優(yōu)求解程序:選擇該選項(xiàng),LINGO將用全局最優(yōu)求解程序求解模型,盡可能得到全局最優(yōu)解(求解花費(fèi)時(shí)間可能很長(zhǎng));不然不使用全局最優(yōu)求解程序,通常只好到局部最優(yōu)解變量上界設(shè)定變量上界,缺省值為1010設(shè)置這個(gè)界三種應(yīng)用范圍:None:全部變量都不使用這個(gè)上界;All:全部變量都使用這個(gè)上界;Selected:先找到第1個(gè)局部最優(yōu)解,然后對(duì)滿足這個(gè)上界變量使用這個(gè)上界(缺省設(shè)置)第91頁(yè)LINGO|OPTIONS|GlobalSolver(全局最優(yōu)求解程序)選項(xiàng)卡

全局最優(yōu)求解程序只搜索比當(dāng)前解最少改進(jìn)這么多個(gè)單位解(缺省值為10-6)按絕對(duì)值控制兩類誤差限全局最優(yōu)求解程序在凸化過(guò)程中增加約束誤差限(缺省值為10-7)第92頁(yè)LINGO|OPTIONS|GlobalSolver(全局最優(yōu)求解程序)選項(xiàng)卡

全局最優(yōu)求解程序策略第1次對(duì)變量分枝時(shí)使用分枝策略AbsoluteWidth(絕對(duì)寬度)LocalWidth(局部寬度)GlobalWidth(全局寬度)GlobalDistance(全局距離)Abs(Absolute)Violation(絕對(duì)沖突)Rel(Relative)Violation(相對(duì)沖突,缺省設(shè)置)選擇活躍分枝節(jié)點(diǎn)方法:DepthFirst(深度優(yōu)先)WorstBound(含有最壞界分枝優(yōu)先,缺省)Reformulation:模型重整級(jí)別:None(不重整)Low(低)Medium(中)High(高,缺省)第93頁(yè)LINGO|OPTIONS|GlobalSolver(全局最優(yōu)求解程序)選項(xiàng)卡

多初始點(diǎn)求解程序嘗試次數(shù):設(shè)定用多少個(gè)初始點(diǎn)嘗試求解,有以下幾個(gè)可能設(shè)置:SolverDecides:由LINGO決定(缺省設(shè)置,對(duì)小規(guī)模NLP問(wèn)題為5次,對(duì)大規(guī)模問(wèn)題不使用多點(diǎn)求解程序)Off:不使用多點(diǎn)求解程序N(>1正整數(shù)):N點(diǎn)求解第94頁(yè)例6.某家俱企業(yè)制造書桌、餐桌和椅子,所用資源有三種:木料、木工和漆工。生產(chǎn)數(shù)據(jù)以下表所表示:

每個(gè)書桌每個(gè)餐桌每個(gè)椅子現(xiàn)有資源總數(shù)木料8單位6單位1單位48單位漆工4單位2單位1.5單位20單位木工2單位1.5單位0.5單位8單位成品單價(jià)60單位30單位20單位

若要求桌子生產(chǎn)量不超出5件,怎樣安排三種產(chǎn)品生產(chǎn)可使利潤(rùn)最大?用DESKS、TABLES和CHAIRS分別表示三種產(chǎn)品生產(chǎn)量,建立LP模型。max=60*desks+30*tables+20*chairs;8*desks+6*tables+chairs<=48;4*desks+2*tables+1.5*chairs<=20;2*desks+1.5*tables+.5*chairs<=8;tables<=5;第95頁(yè)第96頁(yè)求解這個(gè)模型,并激活靈敏性分析。這時(shí),查看匯報(bào)窗口(ReportsWindow),能夠看到以下結(jié)果。Globaloptimalsolutionfoundatiteration:3Objectivevalue:280.0000

VariableValueReducedCostDESKS2.0000000.000000TABLES0.0000005.000000CHAIRS8.0000000.000000

RowSlackorSurplusDualPrice1280.00001.000000224.000000.00000030.00000010.0000040.00000010.0000055.0000000.000000第97頁(yè)“Globaloptimalsolutionfoundatiteration:3”表示3次迭代后得到全局最優(yōu)解?!癘bjectivevalue:280.0000”表示最優(yōu)目標(biāo)值為280?!癡alue”給出最優(yōu)解中各變量值:造2個(gè)書桌(desks),0個(gè)餐桌(tables),8個(gè)椅子(chairs)。所以desks、chairs是基變量(非0),tables是非基變量(0)。“SlackorSurplus”給出松馳變量值:第1行松馳變量=280(模型第一行表示目標(biāo)函數(shù),所以第二行對(duì)應(yīng)第一個(gè)約束)第2行松馳變量=24第3行松馳變量=0第4行松馳變量=0第5行松馳變量=5“ReducedCost”列出最優(yōu)單純形表中判別數(shù)所在行變量系數(shù),表示當(dāng)變量有微小變動(dòng)時(shí),目標(biāo)函數(shù)改變率。其中基變量reducedcost值應(yīng)為0,對(duì)于非基變量Xj,對(duì)應(yīng)reducedcost值表示當(dāng)某個(gè)變量Xj增加一個(gè)單位時(shí)目標(biāo)函數(shù)降低量(max型問(wèn)題)。本例中:變量tables對(duì)應(yīng)reducedcost值為5,表示當(dāng)非基變量tables值從0變?yōu)?時(shí)(此時(shí)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論