LINGO的使用方法說明大全_第1頁
LINGO的使用方法說明大全_第2頁
LINGO的使用方法說明大全_第3頁
LINGO的使用方法說明大全_第4頁
LINGO的使用方法說明大全_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、LINGO的使用簡介LINGO軟件是美國的LINGO系統(tǒng)公司開發(fā)的一套專門用于求解最優(yōu)化問題的軟件包LINGO除了能夠用于求解線性規(guī)劃和二次規(guī)劃外,還可以用于非線性規(guī)劃求解、以及一些線性和非線性方程(組)的求解等LINGO軟件的最大特色在于它允許優(yōu)化模型中的決策變量為整數(shù),即可以求解整數(shù)規(guī)劃,而且執(zhí)行速度快LINGO是用來求解線性和非線性優(yōu)化問題的簡易工具LINGO內(nèi)置了一種建立最優(yōu)化模型的語言,可以簡便地表達大規(guī)模問題,利用LINGO高效的求解器可快速求解并分析結(jié)果在這里僅簡單介紹LINGO的使用方法LINGO(Linear INteractive and General Optimizer

2、 )的基本含義是交互式的線性和通過優(yōu)化求解器它是美國芝加哥大學(xué)的 Linus Schrage 教授于1980年開發(fā)了一套用于求解最優(yōu)化問題的工具包,后來經(jīng)過完善成何擴充,并成立了LINDO系統(tǒng)公司這套軟件主要產(chǎn)品有:LINDO,LINGO,LINDO API和WhatsBest它們在求解最優(yōu)化問題上,與同類軟件相比有著絕對的優(yōu)勢軟件有演示版和正式版正式版包括:求解包(solver suite)、高級版(super)、超級版(hyper)、工業(yè)版(industrial)、擴展版(extended)不同版本的LINGO對求解問題的規(guī)模有限制,如附表-1所示附表-1 不同版本LINGO對求解規(guī)模的限

3、制版本類型 總變量數(shù) 整數(shù)變量數(shù)非線性變量數(shù) 約束數(shù)演示版 300 30 30 150求解包 500 50 50 250高級版 2000 200 200 1000超級版 8000 800 800 4000工業(yè)版 32000 3200 32000 16000擴展版 無限 無限 無限 無限3.1 LINGO程序框架LINGO可以求解線性規(guī)劃、二次規(guī)劃、非線性規(guī)劃、整數(shù)規(guī)劃、圖論及網(wǎng)絡(luò)最優(yōu)化問題和最大最小求解問題,以及排隊論模型中最優(yōu)化等問題一個LINGO程序一般會包括以下幾個部分:(1) 集合段:集部分是LINGO模型的一個可選部分在LINGO模型中使用集之前,必須在集部分事先定義集部分以關(guān)鍵字“

4、sets:”開始,以“endsets”結(jié)束一個模型可以沒有集部分,或有一個簡單的集部分,或有多個集部分一個集部分可以放置于模型的任何地方,但是一個集及其屬性在模型約束中被引用之前必須先定義(2) 數(shù)據(jù)段:在處理模型的數(shù)據(jù)時,需要為集部分定義的某些元素在LINGO求解模型之前為其指定值數(shù)據(jù)部分以關(guān)鍵字“data:”開始,以關(guān)鍵字“enddata”結(jié)束(3) 目標(biāo)和約束段:這部分用來定義目標(biāo)函數(shù)和約束條件等該部分沒有開始和結(jié)束的標(biāo)記主要是要用到LINGO的內(nèi)部函數(shù),尤其是與集合有關(guān)的求和與循環(huán)函數(shù)等(4)初始段:這個部分要以關(guān)鍵字“INIT:”開始,以關(guān)鍵字“ENDINIT”結(jié)束,它的作用是對集合

5、的屬性定義一個初值在一般的迭代算法中,如果可以給一個接近最優(yōu)解的初始值,會大大減少程序運行的時間(5) 數(shù)據(jù)預(yù)處理段:這一部分是以關(guān)鍵字“CALC:”開始,以關(guān)鍵字“ENDCALC”結(jié)束它的作用是把原始數(shù)據(jù)處理成程序模型需要的數(shù)據(jù),它的處理是在數(shù)據(jù)段輸入完以后、開始正式求解模型之前進行的,程序語句是按順序執(zhí)行的3.2 LINGO中集合的概念在對實際問題建模的時候,總會遇到一群或多群相聯(lián)系的對象,比如工廠、消費者群體、交通工具和雇工等等LINGO允許把這些相聯(lián)系的對象聚合成集(sets)一旦把對象聚合成集,就可以利用集來最大限度地發(fā)揮LINGO建模語言的優(yōu)勢現(xiàn)在將深入介紹如何創(chuàng)建集,并用數(shù)據(jù)初始

6、化集的屬性3.2.1集的構(gòu)成集是LINGO建模語言的基礎(chǔ),是程序設(shè)計最強有力的基本構(gòu)件借助于集能夠用一個單一的、簡明的復(fù)合公式表示一系列相似的約束,從而可以快速方便地表達規(guī)模較大的模型集是一群相聯(lián)系的對象,這些對象也稱為集的元素一個集可能是一系列產(chǎn)品、卡車或雇員每個集的元素可能有一個或多個與之有關(guān)聯(lián)的特征,把這些特征稱為屬性屬性值可以預(yù)先給定,也可以是未知的,有待于LINGO求解的LINGO有兩種類型的集:原始集(primitiveset)和派生集(derived set)一個原始集是由一些最基本的對象組成的一個派生集是用一個或多個其它集來定義的,也就是說,它的元素來自于其它已存在的集3.2.

7、2模型的集部分集部分在程序中又稱為集合段,它是LINGO模型的一個可選部分在LINGO模型中使用集之前,必須在集部分事先定義集部分以關(guān)鍵字“sets:”開始,以“endsets”結(jié)束一個模型可以沒有集部分,或有一個簡單的集部分,或有多個集部分一個集部分可以放置于模型的任何地方,但是一個集及其屬性在模型約束中被引用之前必須先定義(1)原始集的定義為了定義一個原始集,必須詳細(xì)說明集的名字,而集的元素和相應(yīng)的屬性是可選的定義一個原始集,用下面的語法:setname/member_list/:attribute_list;注意:用“”表示該部分內(nèi)容是可選的(下同)Setname是用來標(biāo)記集的名字,最好

8、具有較強的可讀性集名字必須嚴(yán)格符合標(biāo)準(zhǔn)命名規(guī)則:以拉丁字母或下劃線為首字符,其后由拉丁字母、下劃線、阿拉伯?dāng)?shù)字組成的總長度不超過32個字符的字符串,且不區(qū)分大小寫注意:該命名規(guī)則同樣適用于集元素名和屬性名等的命名Member_list是集元素的列表如果集元素放在集定義中,那么對它們可采取顯式和隱式羅列兩種方式如果集元素不放在集定義中,那么可以在隨后的數(shù)據(jù)部分定義 當(dāng)顯式羅列元素時,必須為每個元素輸入一個不同的名字,中間用空格或逗號隔開,允許混合使用例3.1 定義一個名為friends的原始集,它具有元素John,Jill,Rose和Mike,其屬性有sex和age:sets:friends/J

9、ohn Jill, Rose Mike/: sex, age;endsets 當(dāng)隱式羅列元素時,不必羅列出每個集元素可采用如下語法:setname/member1.memberN/: attribute_list;這里的member1是集的第一個元素名,memberN是集的最后一個元素名LINGO將自動產(chǎn)生中間的所有元素名LINGO也接受一些特定的首元素名和末元素名,用于創(chuàng)建一些特殊的集 集元素不放在集定義中,而在隨后的數(shù)據(jù)部分來定義例3.2!集部分;sets:friends:sex,age;endsets!數(shù)據(jù)部分;data:friends,sex,age=John,1,16 Jill,0,

10、14 Rose,0,17 Mike,1,13;enddata注意:開頭用感嘆號(!),末尾用分號(;)表示注釋,可跨多行在集部分只定義了一個集friends,并未指定元素在數(shù)據(jù)部分羅列了集元素John,Jill,Rose和Mike,并對屬性sex和age分別給出了值集元素?zé)o論用何種字符標(biāo)記,它的索引都是從1開始連續(xù)計數(shù)在attribute_ list可以指定一個或多個集元素的屬性,屬性之間必須用逗號隔開LINGO內(nèi)置的建模語言是一種描述性語言,用它可以描述現(xiàn)實世界中的一些問題,然后再借助于LINGO求解器求解因此,集屬性的值一旦在模型中被確定,就不可能再更改只有在初始部分中給出的集屬性值在以后

11、的求解中可更改這與前面并不矛盾,初始部分是LINGO求解器的需要,并不是描述問題所必須的(2) 定義派生集為了定義一個派生集,必須詳細(xì)說明集的名字和父集的名字,而集元素和屬性是可選的可用下面的語法定義一個派生集:setname(parent_set_list)/member_list/:attribute_list;setname是集的名字parent_set_list是已定義的集的列表,多個時要用逗號隔開如果沒有指定成員列表,那么LINGO會自動創(chuàng)建父集元素的所有組合作為派生集的元素派生集的父集既可以是原始集,也可以是其它的派生集例3.3sets:product/A,B/;machine/M

12、,N/;week/1.2/;allowed(product,machine,week):x;endsetsLINGO生成了三個父集的所有組合共八組作為allowed集的元素,列表如下:編號 元素 1 (A,M,1) 2 (A,M,2) 3 (A,N,1) 4 (A,N,2) 5 (B,M,1) 6 (B,M,2) 7 (B,N,1) 8 (B,N,2)元素列表被忽略時,派生集成員由父集成員所有的組合構(gòu)成,這樣的派生集成為稠密集如果限制派生集的成員,使它成為父集成員所有組合構(gòu)成的集合的一個子集,這樣的派生集成為稀疏集同原始集一樣,派生集元素的說明也可以放在數(shù)據(jù)部分一個派生集的元素列表有兩種方式生

13、成:顯式羅列;設(shè)置元素選擇的過濾器當(dāng)采用方式時,必須顯式羅列出所有要包含在派生集中的元素,并且羅列的每個元素要屬于稠密集使用前面的例子,顯式羅列派生集的元素,如:allowed(product,machine,week)/A M 1,A N 2,B N 1/;如果需要生成一個大的、稀疏的集,那么顯式羅列就十分麻煩但是許多稀疏集的元素都滿足一些條件,可以把這些邏輯條件看作過濾器,在LINGO生成派生集的元素時把使邏輯條件為假的元素從稠密集中過濾掉例3.4sets:!學(xué)生集:性別屬性sex,1表示男性,0表示女性;年齡屬性age;students/John,Jill,Rose,Mike/:sex,

14、age;!男學(xué)生和女學(xué)生的聯(lián)系集:友好程度屬性friend!0,1之間的數(shù);linkmf(students,students)|sex(&1)#eq#1#and#sex(&2)#eq#0: friend;!男學(xué)生和女學(xué)生的友好程度大于0.5的集;linkmf2(linkmf) | friend(&1,&2) #ge# 0.5 : x;endsetsdata:sex,age =1 16,0 14,0 17,0 13;friend =0.3,0.5,0.6;enddata用豎線(|)來標(biāo)記一個元素過濾器的開始#eq#是邏輯運算符,用來判斷是否“相等”. &1

15、可看作派生集的第1個原始父集的索引,它取遍該原始父集的所有元素;&2可看作派生集的第2 個原始父集的索引,它取遍該原始父集的所有元素;&3,&4,依此類推注意如果派生集B的父集是另外的派生集A,那么上面所說的原始父集是集A向前回溯到最終的原始集,其順序保持不變,并且派生集A的過濾器對派生集B仍然有效因此,派生集的索引個數(shù)是最終原始父集的個數(shù),索引的取值是從原始父集到當(dāng)前派生集所作限制的總和3.3 LINGO數(shù)據(jù)部分和初始部分在處理模型的數(shù)據(jù)時,需要為集指定一些元素并且在LINGO求解模型之前為集的某些屬性指定數(shù)值為此,LINGO為用戶提供了兩個可選部分:輸入集元素數(shù)值的

16、數(shù)據(jù)部分(Data Section)和為決策變量設(shè)置初始值的初始部分(Init Section)3.3.1數(shù)據(jù)部分(1) 數(shù)據(jù)部分入門數(shù)據(jù)部分以關(guān)鍵字“data:”開始,“enddata”結(jié)束在這里,可以指定集元素和集的屬性其語法如下:object_list = value_list;對象列(object_list)包含要指定值的屬性名、要設(shè)置集元素的集名,用逗號或空格隔開一個對象列中只能有一個集名,而屬性名可以有任意多個如果對象列中有多個屬性名,那么它們的類型必須一致數(shù)值列(value_list)包含要分配給對象列中對象的值,用逗號或空格隔開注意屬性值的個數(shù)必須等于集元素的個數(shù)例3.5set

17、s:SET0/A,B,C/: X,Y;endsetsdata:X=1,2,3;Y=4,5,6;enddata在集SET0中定義了兩個屬性X和YX的三個值是1,2,3,Y的三個值是4,5,6也可采用如下例子中的復(fù)合數(shù)據(jù)說明(data statement)實現(xiàn)同樣的功能例3.6sets:SET0/A,B,C/: X,Y;endsetsdata:X,Y=1 4 2,5 3 6;enddata如果對象列中有n個對象,LINGO在為對象指定值時,首先在n個對象的第1個索引處依次分配數(shù)值列中的前n個對象,然后在n個對象的第2個索引處依次分配數(shù)值列中緊接著的n個對象,依此類推 (2) 參數(shù)輸入在數(shù)據(jù)部分也可

18、以指定一些標(biāo)量變量(scalar variables)當(dāng)一個標(biāo)量變量在數(shù)據(jù)部分確定時,稱之為參數(shù)例如,假設(shè)模型中用利率9%作為一個參數(shù),就可以輸入一個利率作為參數(shù)例3.7data:interest_rate = .09;enddata實際中也可以同時指定多個參數(shù)如:data:interest_rate,inflation_rate = .09, .025;enddata(3) 實時數(shù)據(jù)處理在某些情況下,模型中的某些數(shù)據(jù)并不是定值譬如模型中有一個參數(shù)在2%至6%范圍內(nèi),對不同的值求解模型,觀察模型的結(jié)果對參數(shù)依賴的程度,那么把這種情況稱為實時數(shù)據(jù)處理處理方法是在該語句的數(shù)值后面輸入一個問號(?)

19、例3.8data:interest_rate,inflation_rate = .09 ?;enddata在每一次求解模型時,LINGO都會提示為參數(shù)inflation_rate輸入一個值在WINDOWS操作系統(tǒng)下,將會看到一個如下面的對話框:直接輸入一個值再點擊OK按鈕,LINGO就會把輸入的值指定賦給inflation_rate,然后繼續(xù)求解模型除了參數(shù)之外,也可以實時輸入集的屬性值,但不允許實時輸入集元素名(4) 指定屬性為一個值可以在數(shù)據(jù)定義的右邊輸入一個值來把所有的元素的該屬性指定為一個值如下面的例子例3.9sets:days /MO,TU,WE,TH,FR,SA,SU/:needs

20、;endsetsdata:needs = 40;enddataLINGO將用40指定days集的所有元素的needs屬性對于多個屬性的情形如下:sets:days /MO,TU,WE,TH,FR,SA,SU/:needs,cost;endsetsdata:needs cost = 40 90;enddata(5) 數(shù)據(jù)部分的未知數(shù)值表示法有時候只需為一個集的部分元素的某個屬性指定數(shù)值,而讓其余元素的該屬性是未知的,以便讓LINGO去求出它們的最優(yōu)值在數(shù)據(jù)定義中輸入兩個相連的逗號表示該位置對應(yīng)元素的屬性值未知,兩個逗號間可以有空格例3.10sets:years/1.6/: capacity;en

21、dsetsdata:capacity = ,24,40,;enddata屬性capacity的第2個和第3個值分別為24和40,其余的未知3.3.2初始部分初始部分是LINGO提供的另一個可選內(nèi)容在初始部分中,與數(shù)據(jù)部分中的數(shù)據(jù)定義相同,可以輸入初始定義(initialization statement)在對實際問題的建模時,初始部分并不起到描述模型的作用,初始部分輸入的值僅被LINGO求解器當(dāng)作初始值來使用,并且僅僅對非線性模型有用這與數(shù)據(jù)部分指定變量的值不同,LINGO求解器可以自由改變初始部分初始化變量的數(shù)值一個初始部分以關(guān)鍵字“init:”開始,以關(guān)鍵字“endinit”結(jié)束初始部分的

22、初始定義規(guī)則和數(shù)據(jù)部分的數(shù)據(jù)定義規(guī)則相同也就是說,可以在定義的左邊同時初始化多個集屬性,即可以把集屬性初始化為一個數(shù)值,也可以用問號定義為實時數(shù)據(jù),還可以用逗號指定為未知數(shù)值例3.11init:X,Y = 1,0;endinitY=log(X);X2+Y2<=1;3.4 LINGO函數(shù)運算符及其優(yōu)先級LINGO 中的運算符可以分為三類:算數(shù)運算符、邏輯運算符和關(guān)系運算符(1) 算數(shù)運算符算數(shù)運算符分為5種: (加法), (減法), (乘法), (除法), (求冪)(2) 邏輯運算符邏輯運算符分為兩類:#AND#(與),#OR#(或),#NOT#(非):這3個運算符是參與邏輯值之間的運算,

23、其結(jié)果還是邏輯值運算符#EQ#(等于),#NE#(不等于),#GT#(大于),#GE#(大于等于),#LT#(小于),#LE#(小于等于)是用于“數(shù)與數(shù)之間”的比較,其結(jié)果是實邏輯值(3) 關(guān)系運算符LINGO中有3種關(guān)系運算符:<(小于等于),>(大于等于),=(等于)注意LINGO中優(yōu)化模型的約束一般沒有嚴(yán)格大于、嚴(yán)格小于,要和邏輯運算符區(qū)分開運算符的優(yōu)先等級如附表3-2所示附表3-2 運算符的優(yōu)先級優(yōu)先級運算符高級#NOT# ,(負(fù)號)* ,/+,#EQ#,#NE#,#GT#,#GE#,#LT#,#LE#,#AND#,#OR#最低< ,+ ,>3.4.2 LING

24、O數(shù)學(xué)函數(shù)(1) 基本數(shù)學(xué)函數(shù)LINGO中有相當(dāng)豐富的數(shù)學(xué)函數(shù),這些函數(shù)的用法簡單下面列表對各個函數(shù)的用法做簡單的介紹,具體情況如附表3-3所示(2) 集合循環(huán)函數(shù)集合循環(huán)是指對集合上的元素(下標(biāo))進行循環(huán)操作的函數(shù),它的一般用法如下:function(setname(set_index_list)|condition:expression_list);其中function是集合函數(shù)名,是FOR,MAX,MIN,PROD,SUM五種之一setname是集合名;set_index_list是集合索引列表(可以省略);condition是實用邏輯表達式描述的過濾條件(通常含有索引,可以省略);ex

25、pression_list是一個表達式(對FOR可以是一組表達式)下面對具體的集合函數(shù)作如下解釋:FOR(集合元素的循環(huán)函數(shù)):對集合setname的每個元素獨立生成表達式,表達式由expression_list描述MAX(集合屬性的最大值):返回集合setname上的表達式的最大值MIN(集合屬性的最小值) :返回集合setname上的表達式的最小值PROD(集合元素的乘積函數(shù)):返回集合setname上的表達式的積SUM(集合元素的求和函數(shù)) :返回集合setname上的表達式的和表附3-3 基本數(shù)學(xué)函數(shù)函數(shù)調(diào)用格式含義ABS(X)返回X的絕對值COS(X)返回X的余弦值(X單位是弧度)S

26、IN(X)返回X的正弦值(X單位是弧度)FLOOR(X)返回X的整數(shù)部分LGM(X)返回X的伽馬(Gamma)函數(shù)的自然對數(shù)值LOG(X)返回X的自然對數(shù)值MOD(X,Y)返回X對Y取模的結(jié)果POW(X,Y)返回XY的值SIGN(X)返回X的符號值EXP(X)返回eX的值SMAX(LIST)返回一列數(shù)的最大值SMIN(LIST)返回一列數(shù)的最小值SQR(X)返回X的平方SQRT(X)返回X的正的平方根值TAN(X)返回X的正切值 (3) 集合操作函數(shù)集合操作函數(shù)是對集合進行操作的函數(shù),主要有4種,下面分別介紹它們的一般用法1)INDEX(set_name,primitive_set_eleme

27、nt)這個函數(shù)給出元素primitive_set_element在集合set_name中的索引值(即按定義集合時元素出現(xiàn)順序的位置編號)如果省略編號set_name,LINGO按模型中定義的集合順序找到第一個含有元素primitive_set_element的集合,并返回索引值通過下面例子解釋函數(shù)的使用方法例如,假設(shè)定義一個女孩的姓名集合和一個男孩的姓名集合:SETS:GIRLS/DEBBLE,SUE,ALICE/;BOYS/BOB,JOE,SUE,FRED/;ENDSETS注意到女孩集和男孩集中都有一個為SUE的元素,如果要調(diào)用此函數(shù)INDEX(SUE),則得到返回索引值是2因為集合GIRL

28、S在集合BOYS之前,則索引函數(shù)只對集合GIRLS檢索如果想查找男孩集中的SUE,則應(yīng)該使用INDEX(BOYS,SUE),則此時得到的索引值是32)IN(set_name,primitive_index_1,primitive_index_2 )這個函數(shù)用于判斷一個集合中是否含有某個索引值它的返回值是1(邏輯值“真”),或是0(邏輯值“假”)例3.12全集為I,B是I的一個子集,C是B的補集sets:I/x1.x4/;B(I)/x2/;C(I)|#not#in(B,&1):;endsets3)wrap(index,limit)該函數(shù)返回j=index-k*limit,其中k是一個整數(shù)

29、,取適當(dāng)值保證j落在區(qū)間1,limit內(nèi)該函數(shù)相當(dāng)于index模limit再加1該函數(shù)在循環(huán)、多階段計劃編制中特別有用4)size(set_name)該函數(shù)返回集set_name的元素個數(shù)在LINGO模型中,如果沒有明確給出集的大小,則使用該函數(shù)能夠使模型中的數(shù)據(jù)變化和集的大小改變更加方便(4) 變量定界函數(shù)變量界定函數(shù)能夠?qū)崿F(xiàn)對變量取值范圍的附加限制,共4種:1)bin(x)表示限制就是x為0或1;2)bnd(L,x,U)表示限制變量x滿足;3)free(x)表示取消對變量x的默認(rèn)下界為0的限制,即x可以取任意實數(shù);4)gin(x)表示限制變量x為整數(shù)在默認(rèn)情況下,LINGO規(guī)定變量是非負(fù)的

30、,即下界值為0,上界為+free取消了默認(rèn)的下界為0的限制,使變量也可以取負(fù)值bnd用于設(shè)定一個變量的上下界,它也可以取消默認(rèn)下界為0的約束(5) 概率論中相關(guān)函數(shù)1)pbn(p,n,x)二項分布的分布函數(shù),當(dāng)n和(或)x不是整數(shù)時,用線性插值法進行計算2)pcx(n,x)自由度為n的2分布的分布函數(shù)在x點的取值3)peb(load,x)當(dāng)?shù)竭_負(fù)荷(平均服務(wù)強度)為load,服務(wù)系統(tǒng)有x個服務(wù)臺,且系統(tǒng)容量無限時的Erlang繁忙概率,多用于解決排隊問題4)pel(load,x)當(dāng)?shù)竭_負(fù)荷(平均服務(wù)強度)為load,服務(wù)系統(tǒng)有x個服務(wù)臺,系統(tǒng)容量為有限時的Erlang繁忙概率,多用于解決排隊問

31、題5)pfd(n,d,x)自由度為n和d的F分布的分布函數(shù)在x點的取值6)pfs(load,x,c)當(dāng)負(fù)荷上限為load,顧客數(shù)為c,平行服務(wù)臺數(shù)量為x時,顧客源有限的Poisson服務(wù)系統(tǒng)的等待或有返回顧客數(shù)的期望值load是顧客數(shù)乘以平均服務(wù)時間,再除以平均返回時間當(dāng)c和(或)x不是整數(shù)時,采用線性插值進行計算7)phg(pop,g,n,x)超幾何(Hypergeometric)分布的分布函數(shù)pop表示產(chǎn)品總數(shù),g是正品數(shù)從所有產(chǎn)品中任意取出n(npop)件pop,g,n和x都可以是非整數(shù),這時采用線性插值進行計算8)ppl(a,x)Poisson分布的線性損失函數(shù),即返回max(0,z-

32、x)的期望值,其中隨機變量z服從均值為a的Poisson分布9)pps(a,x)均值為a的Poisson分布的分布函數(shù)在x點的取值當(dāng)x不是整數(shù)時,采用線性插值進行計算10)psl(x)單位正態(tài)線性損失函數(shù),即返回max(0,z-x)的期望值,其中隨機變量z服從標(biāo)準(zhǔn)正態(tài)分布11)psn(x)標(biāo)準(zhǔn)正態(tài)分布的分布函數(shù)在x點的取值12)ptd(n,x)自由度為n的t分布的分布函數(shù)在x點的取值13)qrand(seed)產(chǎn)生(0,1)區(qū)間的擬隨機數(shù)qrand只允許在模型的數(shù)據(jù)部分使用,它將用擬隨機數(shù)填滿集屬性通常定義一個m×n的二維表,m表示運行實驗的次數(shù),n表示每次實驗所需的隨機數(shù)的個數(shù)在行

33、內(nèi),隨機數(shù)是獨立分布的;在行間,隨機數(shù)是非均勻的這些隨機數(shù)是用“分層取樣”的方法產(chǎn)生的(6) 金融函數(shù)目前LINGO提供了兩個金融函數(shù)1)fpa(I,n)返回如下情形的凈現(xiàn)值:單位時段利率為I,連續(xù)n個時段支付,每個時段支付單位費用若每個時段支付x單位的費用,則凈現(xiàn)值可用x乘以fpa(I,n)得到fpa的計算公式為凈現(xiàn)值就是在一定時期內(nèi)為了獲得一定收益,在該時期初所支付的實際費用2)fpl(I,n)返回如下情形的凈現(xiàn)值:單位時段利率為I,第n個時段支付單位費用fpl(I,n)的計算公式為這兩個函數(shù)間的關(guān)系:(7)輸入和輸出函數(shù)輸入和輸出函數(shù)可以把模型與外部數(shù)據(jù)(如文本文件、數(shù)據(jù)庫和電子表格等)

34、連接起來1)file函數(shù)該函數(shù)用于從外部數(shù)據(jù)文件中輸入數(shù)據(jù),它可以放在模型中任何地方該函數(shù)的語法格式為file(filename)這里filename是文件名,可以采用相對路徑和絕對路徑兩種表示方式記錄結(jié)束標(biāo)記()之間的數(shù)據(jù)文件部分稱為記錄如果數(shù)據(jù)文件中沒有記錄結(jié)束標(biāo)記,那么整個文件被看作單個記錄除了記錄結(jié)束標(biāo)記外,從模型外部調(diào)用的文本和數(shù)據(jù)同在模型里是一樣的下面介紹一下在數(shù)據(jù)文件中的記錄結(jié)束標(biāo)記連同模型中file函數(shù)調(diào)用是如何工作的當(dāng)在模型中第一次調(diào)用file函數(shù)時,LINGO打開數(shù)據(jù)文件,然后讀取第一個記錄;第二次調(diào)用file函數(shù)時,LINGO讀取第二個記錄等等文件的最后一條記錄可以沒有記

35、錄結(jié)束標(biāo)記,當(dāng)遇到文件結(jié)束標(biāo)記時,LINGO會讀取最后一條記錄,然后關(guān)閉文件如果最后一條記錄也有記錄結(jié)束標(biāo)記,那么直到LINGO求解完成模型后關(guān)閉該文件注意,如果有多個文件同時保持打開狀態(tài),可能就會導(dǎo)致一些問題,LINGO允許同時打開文件的上限數(shù)是16在LINGO中不允許嵌套調(diào)用file函數(shù)2)text函數(shù)該函數(shù)被用在數(shù)據(jù)部分,用來把求解結(jié)果輸出至文本文件中它可以輸出集元素和集屬性值其語法為text(filename)這里filename是文件名,可以采用相對路徑和絕對路徑兩種表示方式如果忽略filename,那么數(shù)據(jù)就被輸出到標(biāo)準(zhǔn)輸出設(shè)備(大多數(shù)情形都是屏幕)text函數(shù)僅能出現(xiàn)在模型數(shù)據(jù)部

36、分的一條語句的左邊,右邊是集名(用來輸出該集的所有元素名)或集屬性名(用來輸出該集屬性的值)用接口函數(shù)產(chǎn)生輸出的數(shù)據(jù)定義稱為輸出操作輸出操作僅當(dāng)求解器求解完模型后才執(zhí)行,執(zhí)行次序取決于其在模型中出現(xiàn)的先后3)ole函數(shù)OLE是從EXCEL中引入或輸出數(shù)據(jù)的接口函數(shù),它是基于傳輸?shù)腛LE技術(shù)OLE傳輸直接在內(nèi)存中傳輸數(shù)據(jù),并不借助于中間文件當(dāng)使用OLE時,LINGO先裝載EXCEL,再通知EXCEL裝載指定的電子數(shù)據(jù)表,最后從電子數(shù)據(jù)表中獲得Ranges為了使用OLE函數(shù),必須有EXCEL5及其以上版本OLE函數(shù)可在數(shù)據(jù)部分和初始部分引入數(shù)據(jù)OLE可以同時讀集元素和集屬性,集元素最好使用文本格式

37、,集屬性最好使用數(shù)值格式原始集每個集元素需要一個單元(cell),而對于n元的派生集每個集元素需要n個單元,這里第一行的n個單元對應(yīng)派生集的第一個集元素,第二行的n個單元對應(yīng)派生集的第二個集元素,依此類推4)ranged(variable_or_row_name)為了保持最優(yōu)基不變,變量的費用系數(shù)或約束行的右端項允許減少的量5)rangeu(variable_or_row_name)為了保持最優(yōu)基不變,變量的費用系數(shù)或約束行的右端項允許增加的量6)status()返回LINGO求解模型后的結(jié)束狀態(tài):0 - Global Optimum(全局最優(yōu));1 - Infeasible(不可行);2 -

38、 Unbounded(無界);3 - Undetermined(不確定);4 - Feasible(可行);5 - Infeasible or Unbounded(通常需要關(guān)閉“預(yù)處理”選項后重新求解模型,以確定模型究竟是不可行還是無界)6 - Local Optimum(局部最優(yōu));7 - Locally Infeasible(局部不可行,盡管可行解可能存在,但是LINGO并沒有找到一個);8 - Cutoff(目標(biāo)函數(shù)的截斷值被達到);9 - Numeric Error(求解器因在某約束中遇到無定義的算術(shù)運算而停止) 通常,如果返回值不是0,4或6時,那么解將不可信,幾乎不能用該函數(shù)僅被用

39、在模型的數(shù)據(jù)部分來輸出數(shù)據(jù)7)dual(variable_or_row_name)返回變量的判別數(shù)(檢驗數(shù))或約束行的對偶(影子)價格(dual prices)(8) 輔助函數(shù)1)if(logical_condition,true_result,false_result)if函數(shù)將評價一個邏輯表達式logical_condition是否為真,如果為真,返回true_ result,否則返回false_result2)warn(text,logical_condition)如果邏輯條件logical_condition為真,則產(chǎn)生一個內(nèi)容為text的信息框3)user(user_determin

40、ed_arguments)該函數(shù)允許用戶自己編寫函數(shù),可以用c語言等編寫,返回值為用戶函數(shù)計算的結(jié)果3. LINGO程序出錯信息在LINGO模型求解時,系統(tǒng)會對程序進行編譯、求解或是執(zhí)行于程序相關(guān)的命令,這都有可能出現(xiàn)一些語法或運行的錯誤當(dāng)出現(xiàn)時,系統(tǒng)會彈出一個出錯報告框,顯示錯誤代碼,并且大致指出錯誤的所在位置這些錯誤信息報告對于用戶發(fā)現(xiàn)及改正程序中的錯誤有很大幫助如附表3-4就出錯提示信息,進行說明(沒有說明的錯誤編號目前還沒有使用)附表3-4 LINGO錯誤報告編號及涵義對照表錯誤信息代碼含義及調(diào)試0LINGO模型生成器的內(nèi)存已經(jīng)用盡1模型中行數(shù)太多2模型中字符數(shù)太多3模型中某行的字符數(shù)

41、太多(每行不應(yīng)超過200個字符)4指定的行號超出了模型中實際具有的最大行號5當(dāng)前內(nèi)存中沒有模型6腳本文件中TAKE命令的嵌套重數(shù)太多(LINGO中限定TAKE命令最多嵌套10次)7無法打開指定的文件(通常是指定的文件名拼寫錯誤)8腳本文件中的錯誤太多,因此直接返回到命令模式(不再繼續(xù)處理這個腳本文件)11模型的語句出現(xiàn)語法錯誤(不符合LINGO語法)12模型中的括號不匹配13在電子表格文件中找不到指定的單元范圍名稱14運算所需要的臨時堆棧空間不夠(模型中的表達式太長)15找不到關(guān)系運算符(缺少“<”“=”或 “>”)16輸入輸出時不同對象的大小不一樣(使用集合方式輸入輸出時,集合的

42、大小應(yīng)該相同)17集合元素的索引的內(nèi)存堆棧空間不夠18集合的內(nèi)存堆??臻g不夠19索引函數(shù)INDEX使用不當(dāng)20集合名使用不當(dāng)21屬性名使用不當(dāng)22不等式或等式關(guān)系太多(多個不等式不允許連寫比如的寫法是不允許的)23參數(shù)的個數(shù)不符24集合名不合法25函數(shù)WKX()的參數(shù)非法(注:在LINGO9.0中已經(jīng)沒有該函數(shù))26集合的索引變量的不符27在電子表格單元中指定的單元范圍不連續(xù)28行名不合法29數(shù)據(jù)段或初始段的數(shù)據(jù)不符30連接到Excel時出現(xiàn)錯誤31使用TEXT函數(shù)時參數(shù)不合法32使用了空的集合成員名33使用OLET函數(shù)時參數(shù)不合法34用電子表格文件中指定的多個單元范圍生成的派生集時,單元的大

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論