




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、lingo 大規(guī)模規(guī)劃求解首先,讓我們先看看一個(gè)非常簡單的規(guī)劃例子在LINGO軟件中實(shí)現(xiàn)過程:目標(biāo)函數(shù):y(min)=2*x1+x2-3*x3+5約束條件:x1+x2-3*x310x1-2*x25x1,x2,x3N求解上面目標(biāo)函數(shù)的最小值,我們?cè)趌ingo中可編寫如下代碼:model:MIN=2*X1+X2-3*X3+5;X1+X2-3*X3=5GIN(X1);!整數(shù)約束;GIN(X2);GIN(X3);END可以看出,LINGO語言和數(shù)學(xué)專業(yè)語言很接近,很容易表示約束條件和目標(biāo)函數(shù)??墒菍?duì)于規(guī)模很大的約束條件,難道我們也必須這樣一條一條的輸入嗎,顯然這樣做是一件非常困難和繁瑣的事,lingo
2、語言又是如何表示約束條件規(guī)模巨大的規(guī)劃問題呢,帶著這樣的疑問,讓我們一步一步得看下面的內(nèi)容:一、集合域在數(shù)學(xué)中集合的定義如下:集合:具有某種相同屬性的對(duì)象放在一起,就形成了一個(gè)集合,集合中的每一個(gè)對(duì)象稱作該集合的元素。在大規(guī)模的優(yōu)化問題中,集合是必然存在的,比如在平板車建模中,各種規(guī)格集裝箱就可以看成一個(gè)集合,在貨物配送問題中154個(gè)城市可以看成一個(gè)集合。在lingo語言中,將某些對(duì)象看成一個(gè)集合便可以很方便地對(duì)集合中的每一個(gè)元素進(jìn)行統(tǒng)一處理。集合域必須在模型的約束引用集合之前定義。集合域用關(guān)鍵字“sets”開始,“endsets”結(jié)束。集合分類:基本集合定義統(tǒng)一語法格式:setname/me
3、mber-list/:attribute-list; 集合名/對(duì)象名1 對(duì)象名2 對(duì)象名n/:對(duì)象屬性;集合定義的幾種方法:setsrow/1.20/:d1,d2,dn; !集合名/對(duì)象名/:對(duì)象屬性;end sets派生集合定義方法:setsrow/1.20/;col/1.100/;page/1.50/;link(row.col):k1,k2kn;trd/(row.col.page):t1,t2,tn;end setsK1可以表示某個(gè)省的某個(gè)城市的人口。t1可以表示某個(gè)省的某個(gè)城市某個(gè)人的收入。二、數(shù)據(jù)域:數(shù)據(jù)域是優(yōu)化問題中已知得對(duì)象的屬性值,例如:人的身高,體重;車輛的載重,行駛速度。數(shù)據(jù)
4、域以關(guān)鍵字“data”開頭,“enddata”結(jié)束。數(shù)據(jù)域可以出現(xiàn)在模型中的任何地方。data:d1=;k1=;t1=;enddata數(shù)據(jù)域的未知數(shù)值有時(shí)只想為一個(gè)集的部分成員的某個(gè)屬性指定值,而讓其余成員的該屬性保持未知,以便讓LINGO去求出它們的最優(yōu)值。在數(shù)據(jù)聲明中輸入兩個(gè)相連的逗號(hào)表示該位置對(duì)應(yīng)的集成員的屬性值未知。兩個(gè)逗號(hào)間可以有空格。例3.8sets: years/1.5/: capacity;endsetsdata: capacity = ,34,20,;enddata屬性capacity的第2個(gè)和第3個(gè)值分別為34和20,其余的未知。實(shí)時(shí)數(shù)據(jù)處理在某些情況,對(duì)于模型中的某些數(shù)據(jù)
5、并不是定值。譬如模型中有一個(gè)通貨膨脹率的參數(shù),我們想在2%至6%范圍內(nèi),對(duì)不同的值求解模型,來觀察模型的結(jié)果對(duì)通貨膨脹的依賴有多么敏感。我們把這種情況稱為實(shí)時(shí)數(shù)據(jù)處理(what if analysis)。LINGO有一個(gè)特征可方便地做到這件事。 在本該放數(shù)的地方輸入一個(gè)問號(hào)(?)。data: interest_rate,inflation_rate = .085 ?;enddata每一次求解模型時(shí),LINGO都會(huì)提示為參數(shù)inflation_rate輸入一個(gè)值。在WINDOWS操作系統(tǒng)下,將會(huì)接收到一個(gè)類似下面的對(duì)話框: 直接輸入一個(gè)值再點(diǎn)擊OK按鈕,LINGO就會(huì)把輸入的值指定給inflat
6、ion_rate,然后繼續(xù)求解模型。除了參數(shù)之外,也可以實(shí)時(shí)輸入集的屬性值,但不允許實(shí)時(shí)輸入集成員名。三、初始域初始域是專門為初始化決策變量而定義的一塊區(qū)域。初始部分是LINGO提供的另一個(gè)可選部分。在初始部分中,可以輸入初始聲明(initialization statement),和數(shù)據(jù)部分中的數(shù)據(jù)聲明相同。對(duì)實(shí)際問題的建模時(shí),初始部分并不起到描述模型的作用,在初始部分輸入的值僅被LINGO求解器當(dāng)作初始點(diǎn)來用,并且僅僅對(duì)非線性模型有用。和數(shù)據(jù)部分指定變量的值不同,LINGO求解器可以自由改變初始部分初始化的變量的值。一個(gè)初始部分以“init:”開始,以“endinit”結(jié)束。初始部分的初始
7、聲明規(guī)則和數(shù)據(jù)部分的數(shù)據(jù)聲明規(guī)則相同。也就是說,我們可以在聲明的左邊同時(shí)初始化多個(gè)集屬性,可以把集屬性初始化為一個(gè)值,可以用問號(hào)實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)處理,還可以用逗號(hào)指定未知數(shù)值。init: X, Y = 0, .1;endinitY=log(X);X2+Y2=1;好的初始點(diǎn)會(huì)減少模型的求解時(shí)間。四、集合循環(huán)函數(shù)統(tǒng)一語法格式:function(setname(set_index_list)| condition:expression_list); 其中: function是集合函數(shù)名,是FOR,MAX,MIN,PROD,SUM五種之一; setname是集合名; set_index_list是集合索引
8、列表(不需使用索引時(shí)可以省略); condition是邏輯表達(dá)式描述的過慮條件(通常含有索引,無條件時(shí)可省略); expression_list是一個(gè)表達(dá)式(對(duì)FOR函數(shù),可以是一組表達(dá)式)。 五個(gè)集合函數(shù)名的含義如下: FOR(集合元素循環(huán)函數(shù)):對(duì)集合setname 的每個(gè)元素獨(dú)立地生成表達(dá)式,表達(dá)式由expression_list描述(通常是優(yōu)化問題的約束)。 MAX(集合屬性的最大值函數(shù)):返回集合setname上的表達(dá)式的最大值。 MIN(集合屬性的最小值函數(shù)):返回集合setname上的表達(dá)式的最小值。 PROD(集合屬性的乘積函數(shù)):返回集合setname上的表達(dá)式的積。 SUM
9、(集合屬性的求和函數(shù)):返回集合setname上的表達(dá)式的和。對(duì)應(yīng)數(shù)學(xué)表達(dá)式與LINGO命令:數(shù)學(xué)表達(dá)式lingo命令i=1nxi (一維數(shù)組和)sum(row(i):x(i);i=1mj=1nxij (二維維數(shù)組和)sum(links(i,j):x(i,j);i=1mj=1nxijYij (矩陣點(diǎn)乘和)sum(links(i,j):x(i,j)*Y(i,j);i=1nxi (求數(shù)組的積)prod(row(i):x(i);i=1nxiji=1nyij(j=1,2,m) (比較m個(gè)一維數(shù)組的和)for(col(j):sum(row(i):x(i)=5)sum(links(i,j)|j#GE#5:
10、x(i,j);i=1mj=1nxijYij (xij0)sum(links(i,j)|x(i,j)#NE#0:x(i,j)*Y(i,j);i=1nxi(xi0) prod(row(i)|x(i)#NE#0:x(i);七、基本的數(shù)學(xué)函數(shù) 在LINGO中建立優(yōu)化模型時(shí)引用大量的內(nèi)部函數(shù)這些函數(shù)以、。號(hào)打頭. LINGO中包括相當(dāng)豐富的數(shù)學(xué)函數(shù),這些函數(shù)的用法非常簡單,我們直接在下一一列出 ABS(X);絕對(duì)值函數(shù),返回X的絕對(duì)值 COS(X);余弦函數(shù),返回X 的余弦值(X 的單位是弧度) EXP(X)指數(shù)函數(shù),返回x e的值(其中 e為自然對(duì)數(shù)值的底,即2.718281) FLOOR(X);取整
11、函數(shù),返回X的整數(shù)部分(向最靠近0的方向取整). LGM(X):返回X的伽馬(Gamma)函數(shù)的自然對(duì)數(shù)值(當(dāng)X為整數(shù)時(shí)LGM(X)=LOG(X-1)!;當(dāng)X不為整數(shù)時(shí),采用線性插值得到結(jié)果) LOG(X):自然對(duì)數(shù)函數(shù),返回自然對(duì)數(shù)值 MOD(X,Y): 模函數(shù),返回X對(duì)Y 的取模的結(jié)果,即X 除以Y的余數(shù),這里X余Y 應(yīng)是整數(shù) POW(X,Y):指數(shù)函數(shù),返回yX的值. SIGN(X):符號(hào)函數(shù),返回X 的符號(hào)值(X=0時(shí)返回+1) SIN(X):正弦函數(shù),返回X 的正弦值(X 的單位是弧度) 95 SMAX(list):最大值函數(shù),返回一列數(shù)(list)的:最大值 SMIN.(list)
12、:最小值函數(shù),返回一列數(shù)(list)的:最小值 SQR(X) :平方函數(shù),返回X 的 平方即(X*X)的值 SQRT(X):平方根函數(shù),返回X 的 平方根的值 TAN(X);正切函數(shù),返回X的正切值(X的單位是弧度)。八、lingo中其他常用命令WRAP(I,N) 當(dāng)I為于區(qū)間I,N內(nèi)時(shí)直接返回I;一般地,返回J=I-K*N,其中J位于區(qū)間1,N,K為函數(shù)??梢娺@個(gè)函數(shù)相當(dāng)于數(shù)學(xué)上用I 對(duì)N取模函數(shù)的值+1,即WRAP(I,N)=MOD(I,N)+1.此函數(shù)對(duì)N1無定義。 SIZE(set_name) 返回?cái)?shù)據(jù)集set_name中包含元素的個(gè)數(shù)。IF (logical _condition,
13、true _result, false _result) 當(dāng)邏輯表達(dá)式logical _condition的結(jié)果為真時(shí),返回true _result,否則返回false _result。例如if(x # LT # 100,20,15)語句,當(dāng)X100時(shí),返回20,否則返回15。 WARN (text, logical _condition) 如果邏輯表達(dá)式“l(fā)ogical _condition”的結(jié)果為真,顯示 text信息. USER (user _determined _arguments) 該函數(shù)是允許用戶自己編寫的函數(shù)( dl或0bj文件),該用戶函數(shù)可能當(dāng)用C或FORTRAN等其他語
14、言編寫并編譯,返回值為用戶函數(shù)計(jì)算的結(jié)果.從編程角度來看,USER 函數(shù)包含兩個(gè)參數(shù):第一個(gè)用于指定參數(shù)個(gè)數(shù),第二個(gè)用于指定參數(shù)向量:而在LINGO中調(diào)用USER時(shí)則直接指定對(duì)應(yīng)的參數(shù)“user _determined_”(類似于C語言中的main ( argc , argv ) 的編程和運(yùn)行方式).更多細(xì)節(jié)請(qǐng)參考LINGO使用手冊(cè). 九、文件讀寫1. 復(fù)制和粘貼功能對(duì)于數(shù)據(jù)量不是很大的集合而言,復(fù)制粘貼是最快捷最簡單的方法,和其他軟件操作一樣,LINGO軟件,支持從網(wǎng)頁,文本文檔,電子表格中復(fù)制數(shù)據(jù)。同樣對(duì)其LINGO運(yùn)行的結(jié)果,我們可以將求解報(bào)告窗口中的結(jié)果復(fù)制到其他地方。2. OLE函數(shù),它可以從Excel中讀取數(shù)據(jù)或?qū)⒔Y(jié)果寫入到Excel中。輸入數(shù)據(jù):統(tǒng)一語法格式:variable_list=OLE(spreadsheet-file,range_name_list);其中 spreadsheet_file是電子表格文件名稱,應(yīng)當(dāng)包括擴(kuò)展
溫馨提示
- 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)價(jià)研究-以XZ濕地公園為例
- 多囊腎的超聲診斷
- 保育員培訓(xùn):衛(wèi)生與消毒
- 闌尾炎的護(hù)理診斷與護(hù)理措施
- 項(xiàng)目進(jìn)度管理課件
- 油田開發(fā)項(xiàng)目運(yùn)營管理方案
- 高效節(jié)能電機(jī)項(xiàng)目節(jié)能評(píng)估報(bào)告
- 2025年水稻缽苗行栽機(jī)合作協(xié)議書
- 電網(wǎng)側(cè)獨(dú)立儲(chǔ)能示范項(xiàng)目投標(biāo)書(范文模板)
- 西醫(yī)外科治療前列腺增生診療規(guī)范
- 2025年廣西中考語文試題卷(含答案)
- 2025年南京市中考數(shù)學(xué)真題試卷
- 北師大版八年級(jí)上冊(cè)物理(基礎(chǔ)版)(全冊(cè)知識(shí)點(diǎn)考點(diǎn)梳理、重點(diǎn)題型分類鞏固練習(xí))(家教、補(bǔ)習(xí)、復(fù)習(xí)用)
- 護(hù)士延續(xù)注冊(cè)體檢表通用
- GB 2762-2022食品安全國家標(biāo)準(zhǔn)食品中污染物限量
- GB/T 31776-2015車用甲醇汽油中甲醇含量檢測(cè)方法
- 工程力學(xué)基礎(chǔ)(講義)
- 心電圖報(bào)告的書寫規(guī)范化培訓(xùn)課件
- 小學(xué)數(shù)學(xué)西南師大四年級(jí)下冊(cè)八平均數(shù)小學(xué)數(shù)學(xué)西師版四年級(jí)下冊(cè)《平均數(shù)》教學(xué)設(shè)計(jì)
- 藥物外滲的嚴(yán)重后果及處理課件
- 2021年軟件開發(fā)管理流程制度(附全套表格模板及填寫指引)58頁
評(píng)論
0/150
提交評(píng)論