參考一:LINGO軟件入門_第1頁
參考一:LINGO軟件入門_第2頁
參考一:LINGO軟件入門_第3頁
參考一:LINGO軟件入門_第4頁
參考一:LINGO軟件入門_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第7章LINGO軟件入門7.1LINGO軟件基本用法LINGO軟件簡(jiǎn)介:LINGO軟件是一套專門用于求解最優(yōu)化問題的軟件包.LINGO可用于求解線性規(guī)劃(LP),二次規(guī)劃(QP),非線性規(guī)劃(NLP),整數(shù)規(guī)劃(IP),動(dòng)態(tài)規(guī)劃,多目標(biāo)規(guī)劃等,特別是對(duì)于變量或約束條件較復(fù)雜的大規(guī)模模型,提供了較好的選擇.LINGO還是最優(yōu)化問題的一種建模語言,包括許多常用的數(shù)學(xué)函數(shù)可以調(diào)用,并可以接受其他數(shù)據(jù)文件(如文本文件、Excel電子表格文件、數(shù)據(jù)庫文件等),同時(shí)LINGO提供了與電子表格軟件(如Excel等)的接口,能夠直接集成到電子表格中使用.即使對(duì)優(yōu)化方面知識(shí)了解不多的用戶,也能夠方便地建模和輸入、有效地求解.LINGO基本用法:?jiǎn)?dòng)LINGO后,在主窗口上彈出標(biāo)題為L(zhǎng)INGOModel-LINGO1的窗口,稱^LINGO的模型窗口,建立的模型都要在該窗口內(nèi)編碼實(shí)現(xiàn).目標(biāo)函數(shù)98x+277x-X2—0.3xx-2X2;約束條件 氣+x2<100;x<2x;x,xeN;輸入模型窗口LINGO1后的形式見下圖.請(qǐng)注意以下幾點(diǎn):(1) LINGO總是根據(jù)“MAX=”或“MIN=”語句尋找目標(biāo)函數(shù),而其他語句都是約束條件(除注釋語句和TITLE語句),所以語句順序不重要.(2) LINGO中模型以“MODEL:”開始,以“END”結(jié)束.對(duì)簡(jiǎn)單的模型,這倆個(gè)語句也可以省略.(3) LINGO模型是由一系列語句組成,每個(gè)語句都以分號(hào)“;”結(jié)尾.(4) LINGO中不分大小寫字母;其變量和行名由不超過32個(gè)字符(數(shù)字和字母)組成,且以字母開頭;(5) 乘號(hào)不能省略,即系數(shù)與變量之間要加運(yùn)算符“*”.(6) “!”開頭的是注釋行(注釋語句),可以省略.(7) “口”為用戶自定義的行號(hào)或行名,放在每行之前,可以省略(8) LINGO中以“@”都是函數(shù)調(diào)用,@GIN表示變量取正整數(shù).默認(rèn)情況下,LINGO規(guī)定變量是非負(fù)的.(我們將在后面詳細(xì)介紹函數(shù))(9) “TITLE”后加名字,可對(duì)此模型命名,可以省略現(xiàn)在我們用LINGO來解這個(gè)模型.點(diǎn)擊工具條上的按鈕◎,或從菜單中選擇LINGO|Sovle即可.(若模型編譯有錯(cuò),會(huì)有提示)求解時(shí)會(huì)顯示下圖:

即可.(若模型編譯有錯(cuò),會(huì)有提示)求解時(shí)會(huì)顯示下圖:域名含義可能的顯示ModelClass當(dāng)前模型的類型〔諾參閱本書第1章)LP,QP>ILP,IQP+PILE,PIQP,NLP,INLP,PINLP〔以I開頭表示IP.以口開頭表示FIF)State當(dāng)前解的狀態(tài)^GlobalOptimum^, LocalOptimum*,^Feasible*7,^Infeasible*7(不可行),^Unbounded^C無界),Interrupted#(中斷),^Undetermined*7(未確定)Objective當(dāng)前解的目標(biāo)函數(shù)值實(shí)數(shù)Infeasibility當(dāng)前約束不滿足的總量(不是不滿足的約束的個(gè)數(shù))實(shí)數(shù)〔即使該值=0,當(dāng)前解也可能不可行.因?yàn)檫@個(gè)量中沒有考慮用上下界形式給出的約束)Iterations目前為止的選代次數(shù)非仇格數(shù)域名含義可能的顯示SolverType使用的特殊求解程序B-and-B(分枝定界法)Global(全局最優(yōu)求解)Multistart(用多個(gè)初始點(diǎn)求解)BestObj目前為止找到的可行解的最佳目標(biāo)函數(shù)值實(shí)數(shù)ObjBound目標(biāo)函數(shù)值的界實(shí)數(shù)Steps特殊求解程序當(dāng)前運(yùn)行步數(shù):分枝數(shù)(對(duì)B-and-B程序);子問題數(shù)(對(duì)Global程序);初始點(diǎn)數(shù)〔對(duì)Multistart程序)非務(wù)愜數(shù)Active有效步數(shù)非務(wù)收數(shù)關(guān)閉窗口,得到運(yùn)行結(jié)果:Localoptimalsolutionfoundatiteration:找到最優(yōu)解時(shí)迭代的次數(shù).Objectivevalue:表示所求的最優(yōu)目標(biāo)值(11077.50).Variable:變量名Value:最優(yōu)解中各變量(Variable)的值.Row:約束條件行名.ReducedCost:當(dāng)該非基變量增加一個(gè)單位時(shí)(其他非基變量保持不變)目標(biāo)函數(shù)減少的量(對(duì)max型問題)SlackorSurplus:約束對(duì)應(yīng)得松弛變量的值.(第三行取0,對(duì)于最優(yōu)解來講,第三個(gè)約束取等號(hào),為緊約束)DualPrice:對(duì)偶價(jià)格的值.表示當(dāng)對(duì)應(yīng)約束有微小變動(dòng)時(shí),目標(biāo)函數(shù)的變化率,若其數(shù)值為X,表示對(duì)應(yīng)約束中不等式右端項(xiàng)若增加一個(gè)單位,目標(biāo)函數(shù)將增加X個(gè)單位(max型問題).7.1.3在LINGO中使用集合:1、 LINGO模型的基本組成LINGO也是一種建模語言,稱為矩陣生成器,通過集合的引入,它可使輸入較大規(guī)模問題的過程得到簡(jiǎn)化.LINGO模型由5段組成:(1) 、集合段:是用于定義變量.以“SETS:”開始,以“ENDSETS”結(jié)束.定義集合變量,元素,和屬性.集合名/元素/:屬性元素:類似于數(shù)組的下標(biāo).屬性:定義集合的變量,類似于數(shù)組.屬性之間必須用逗號(hào)或空格隔開.(2) 、目標(biāo)與約束段:定義目標(biāo)函數(shù),約束條件.(3) 、數(shù)據(jù)段:用于給變量賦值.以“DATA:”開始,以“ENDDATA”結(jié)束.對(duì)集合的屬性(數(shù)組)輸入必要的常數(shù)數(shù)據(jù).attributelist(屬性)=value_list;(常數(shù)列表)(value_list)中數(shù)據(jù)用逗號(hào)或空格隔開.*在此段也可引入?yún)?shù),“變量名=?”在運(yùn)行時(shí)才對(duì)參數(shù)賦值.但這僅用于單個(gè)變量賦值,而不能用于屬性變量(數(shù)組).(4) 、初始段:以'init:”開始,以輪ndinit”結(jié)束.對(duì)集合的屬性(數(shù)組)定義初值(5) 、計(jì)算段:以“CALC:”開始,以“ENDCALA”結(jié)束.對(duì)一些原始數(shù)據(jù)進(jìn)行“預(yù)處理”.*計(jì)算段中語句是順序執(zhí)行,不能交換位置.*計(jì)算段中只能直接使用賦值語句.2、 集合的定義:變量使用之前需先定義,而LINGO中的變量是通過集合來定義的,變量皆為向量或由向量生成的二維數(shù)組.如:Demand/1..6/:a,b,d:集合名為Demand,共6個(gè)元素,a,b,d為屬于此集合的變量,其為含6個(gè)元素的向量.Supply/1,2/:x,y,e:集合名為Supply,共2個(gè)元素,x,y,e為屬于此集合的變量,其為含2個(gè)元素的向量. 基本集合Link(demand,supply):c:集合link是由集合demand和supply生成的新集合,為二維數(shù)組,其元素由demand和supply的笛卡爾積構(gòu)成,即

變量c即為6*2的矩陣 派生集合例、某公司有6個(gè)建筑工地,位置坐標(biāo)為(ai,bi)(單位:公里),水泥日用量di(單位:噸)i123456a1.258.750.55.7537.25b1.250.754.7556.57.75d3547611現(xiàn)有2料場(chǎng),位于A(5,1),B(2,7),記(xj,yj),j=1,2,日儲(chǔ)量ej各有20噸.r1r1)r1*11*2)22*12*23(1 2)=3*13*244*14*255*15*2"J(6*16*2j共6*2=12個(gè)元素假設(shè)從料場(chǎng)到工地之間均有直線道路相連,試制定每天的供應(yīng)計(jì)劃,即從A,B兩料場(chǎng)分別向各工地運(yùn)送多少噸水泥,使總的噸公里數(shù)最小.解:設(shè)決策變量:c(料場(chǎng)j到工地i的運(yùn)量)則其為12維.則規(guī)劃模型為ijminEEc[(x-a)2+(y一b)2]i/2ij jijij=1i=1s.t Ec=d,i=16j=iE:e.,j=1,2i=1其LINGO模型為:(1)集合段:我們定義需求點(diǎn)demand和供應(yīng)點(diǎn)supply兩個(gè)集合,分別有6個(gè)和2個(gè)元素,Demand/1..6/:a,b,d; 其中a為該集合的屬性(變量),表示6個(gè)工地位置的橫坐標(biāo)的集合,是一個(gè)有6個(gè)元素的向量.Supply/1,2/:x,y,e; 其中x該集合的屬性(變量),表示2個(gè)料場(chǎng)位置的橫坐標(biāo)的集合,是一個(gè)有2個(gè)元素的向量.運(yùn)送量c的集合是一個(gè)6*2的矩陣,它需要利用集合demand和supply,定義一個(gè)新集合,ij定義c^為這個(gè)新集合的屬性:Link(demand,supply):c;數(shù)據(jù)段:給已知變量賦值.如a,b=1.25,1.25,8.75,0.75,0.5,4.75,5.75,5,3,6.5,7.25,7.75;也可寫成a=1.25,8.75,0.5,5.75,3,7.25;b=1.25,0.75,4.75,5,6.5,7.75;注LINGO對(duì)數(shù)據(jù)是按列賦值的,而不是按行.分割數(shù)據(jù)可用空格,逗號(hào),回車.目標(biāo)與約束段:目標(biāo)函數(shù)min盤6c[(x-a)2+(y-b)2]1/2用lingO語句表示為:ij jijij=1i=1min=@sum(link(i,j):c(i,j)*((x(j)-a(i))”2+(y(j)-b(i))"2)”(1/2));@sum:求和函數(shù).這個(gè)函數(shù)的功能是對(duì)語句中冒號(hào)“:”后面的的表達(dá)式,按照“:”前面的集合指定的下標(biāo)進(jìn)行求和.“@sum”相當(dāng)于“£”,“l(fā)ink(i,j)”相當(dāng)于“i,jElink”約束條件s.t 22c「=氣,i=16用LINGO語旬表示為:j=i???@for(demand(i):@sum(supply(j):c(i,j))=d(i););@for:循環(huán)函數(shù).意思是對(duì)冒號(hào)“:”前面的集合的每個(gè)元素(下標(biāo)),對(duì)于“:”后面的約束關(guān)系式都要成立.注@for和@sum可以嵌套使用.@free函數(shù)取消了變量x,y非負(fù)限制.初始段:“X,Y=5,1,2,7;”語旬的實(shí)際賦值順序是X=(5,2),Y=(1,7).作為尋找最優(yōu)解的起始值.模型如下:MODEL:TitleLocationProblem;sets:demand/1..6/:a,b,d;supply/1..2/:x,y,e;link(demand,supply):c;endsetsdata:!locationsforthedemand(需求點(diǎn)的位置);a=1.25,8.75,0.5,5.75,3,7.25;b=1.25,0.75,4.75,5,6.5,7.75;!quantitiesofthedemandandsupply(供需量);d=3,5,4,7,6,11;e=20,20;enddatainit:!initiallocationsforthesupply(初始點(diǎn));x,y=5,1,2,7;endinit!Objectivefunction(目標(biāo));[OBJ]min=@sum(link(i,j):c(i,j)*((x(j)-a(i))“2+(y(j)-b(i))“2)"(1/2));!demandconstraints(需求約束);@for(demand(i):@sum(supply(j):c(i,j))=d(i););!supplyconstraints(供應(yīng)約束);@for(supply(i):@sum(demand(j):c(j,i))<=e(i););@for(supply:@bnd(0.5,X,8.75);@bnd(0.75,Y,7.75););END運(yùn)行,得局部最優(yōu)解X(1)=7.249997,X(2)=5.695940,Y(1)=7.749998,Y(2)=4.928524,,最小運(yùn)量=89.8835(噸公里).NLP中局部最優(yōu)解不一定就是全局最優(yōu)解,可通過“LINGO|Options|GlobalSolver|UseGlobalSolver”菜單命令激活全局最優(yōu)求解程序.7.1.4LINGO的運(yùn)算符和函數(shù):在此我們主要介紹前六種函數(shù)1、算術(shù)運(yùn)算符及其優(yōu)先級(jí):算術(shù)運(yùn)算符:+(加法),一(減法或負(fù)號(hào)),*(乘法),/(除法)八求幕)關(guān)系運(yùn)算符:<(即<=,小于等于),二(等于),>(即>二,大于等于)邏輯運(yùn)算符:#AND#(與),#OR#(或),#NOT#(非),#EQ#(等于),#NE#(不等于),#GT#(大于),#GE#(大于等于),#LT#(小于),#LE#(小于等于).結(jié)果只有“真”(1)和“假”(0)兩個(gè)值。(用在循環(huán)語句中,及過濾條件)優(yōu)先級(jí)運(yùn)算符最高#not#一(負(fù)號(hào))A*/+-#EQ##NE##GT##GE##LT##LE##AND#,#OR#最低< = >2、數(shù)學(xué)函數(shù):@abs(x)返回x的絕對(duì)值@sin(x)返回x的正弦值,x采用弧度制@cos(x)返回x的余弦值@tan(x)返回x的正切值@exp(x)返回常數(shù)e的x次方@log(x)返回x的自然對(duì)數(shù)@lgm(x)返回x的gamma函數(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中的最小值例求向量[5,1,3,4,6,10]前5個(gè)數(shù)的最小值,后3個(gè)數(shù)的最大值.model:data:N=6;enddatasets:number/1..N/:x;endsetsdata:x=5134610;enddataV=@min(number(I)|I#le#5:x);W=@max(number(I)|I#ge#N-2:x);end@sqr(x):平方函數(shù),返回x的平方值@sqrt(x):開方根函數(shù),返回x的開方根值3、 變量界定函數(shù)變量界定函數(shù)實(shí)現(xiàn)對(duì)變量取值范圍的附加限制,共4種:@bin(x)限制x為0或1@bnd(L,x,U)限制LWxWU@free(x)取消對(duì)變量x的默認(rèn)下界為0的限制,即乂可以取任意實(shí)數(shù)@gin(x)限制x為整數(shù)4、 集和操作函數(shù)集循環(huán)函數(shù)遍歷整個(gè)集進(jìn)行操作.其語法為@function(slc:e);?function相應(yīng)于下面羅列的四個(gè)集循環(huán)函數(shù)之一;s是要遍歷的集;c是用邏輯表達(dá)式描述的過濾條件.e可以包含多個(gè)表達(dá)式,其間用逗號(hào)隔開.這些表達(dá)式將被作為約束加到模型中.@for(集合元素的循環(huán)函數(shù)):對(duì)集合s的每個(gè)元素獨(dú)立地生成表達(dá)式,表達(dá)式由e描述.@min(集合屬性的最小值函數(shù)):返回指定的集合s的一個(gè)表達(dá)式的最小值.@max(集合屬性的最大值函數(shù)):返回指定的集合,的一個(gè)表達(dá)式的最大值.@sum(集合屬性的求和函數(shù)):返回集合s的一個(gè)表達(dá)式的和.@prod((集合屬性的求和函):返回集合s的一個(gè)表達(dá)式的積.@in(s:el):如果元素el在指定集s中,返回1;否則返回0.@index(s:ek):返回成員ek在集s中的索引值(順序號(hào)).@size(s):該函數(shù)返回集s的成員個(gè)數(shù).5、 輸入和輸出函數(shù)@ole函數(shù):是從EXCEL中引入或輸出數(shù)據(jù)的接口函數(shù),它是基于傳輸?shù)腛LE技術(shù).6、 其它函數(shù)@if(邏輯表達(dá)式,表達(dá)式為真時(shí)的值,表達(dá)式為假時(shí)的值)'4x,0<x<100例f(x)=]10+3x,100<x<200、5+2x,x>200用LINGO語句表示為:f=@if(x#le#100,4*x,@if(x#le#200,10+3*x,5+2*x));7.2LINGO與Excle的鏈接在實(shí)際中模型中所需的數(shù)據(jù)可能以一定的格式保存在獨(dú)立的文件中,同時(shí)也可能要求將計(jì)算的結(jié)果輸入到指定文件中保存下來.LINGO與外部文件的輸入輸出的三種方法:Edit|PasteSpecial@File:輸入數(shù)據(jù) @Text:輸出結(jié)果@ole:與電子表格的鏈接在此僅介紹第3種,與Excle的鏈接.LINGO通過@OLE函數(shù)與Excle鏈接,該函數(shù)只能在LINGO模型的集合段,數(shù)據(jù)段,初始段使用,其格式為:@OLE(‘文件名.xls’,‘?dāng)?shù)據(jù)的單元范圍’)Excle到LINGO:.集合段:直接引用“@OLE(?.)”.數(shù)據(jù)段,初始段:變量(或?qū)傩?="@OLE(?.)”將LINGO結(jié)果輸?shù)紼xcle:數(shù)據(jù)段:"@OLE(?.)”=變量(或?qū)傩?注:‘文件名.xls’應(yīng)包括完整的路徑名(字符不超過64),但當(dāng)該Excle文件打開時(shí),可以省略路徑,默認(rèn)為當(dāng)前文件.例現(xiàn)在WW(WirelessWidgets)公司擁有6個(gè)倉(cāng)庫,向其8個(gè)銷售商供應(yīng)它的產(chǎn)品.要求每個(gè)倉(cāng)庫供應(yīng)不能超量,每個(gè)銷售商的需求必須得到滿足.WW公司需要決策具體的從每個(gè)倉(cāng)庫運(yùn)輸多少產(chǎn)品到每個(gè)銷售商.以使得所花的運(yùn)輸費(fèi)用最少?并將結(jié)果返回到文件“BOOK1”中.數(shù)據(jù)見文件cname▼A1ABCDEFGHI1倉(cāng)庫編號(hào)產(chǎn)品庫存量銷售商編專產(chǎn)品需求量21601353I2I55237435132254434326541541766328743983310每件產(chǎn)品運(yùn)輸費(fèi)用11銷售商[右]vlv2v3v4v5v6v7v8121626425981324958582314352174336154767927171652397265417655281435解:建立模型變量%:第i個(gè)倉(cāng)庫到第頂個(gè)銷售商的運(yùn)量 a「運(yùn)費(fèi)b—第i個(gè)倉(cāng)庫的庫存量 c-第個(gè)銷售商的需求量i j目標(biāo)函數(shù)minz=金8axi=1j=1約束條件:倉(cāng)庫供應(yīng)不能超量£x<bj=1滿足銷售商的需求:£x<C.i=1為了能將LINGO與Excle間傳遞數(shù)據(jù),需對(duì)文件“BOOK1”中的數(shù)據(jù)進(jìn)行命名.具體做法:用鼠標(biāo)選中表格A2:A7所在的6個(gè)單元格,然后選擇Excle的“插入|名稱|定義”,彈出一對(duì)話框,輸入名稱“cname”.同理將B

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論