版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、LINGO使用教程 LINGO是用來求解線性和非線性優(yōu)化問題的簡(jiǎn)易工具。LINGO內(nèi)置了一種建立最優(yōu)化模型的語言,可以簡(jiǎn)便地表達(dá)大規(guī)模問題,利用LINGO高效的求解器可快速求解并分析結(jié)果。一般來說LINGO多用于解決大規(guī)模數(shù)學(xué)規(guī)劃。用時(shí)要注意以下幾點(diǎn):每條語句后必須使用分號(hào)“;”結(jié)束。問題模型必須由MODEL命令開始,END結(jié)束。用MODEL命令來作為輸入問題模型的開始,格式為MODEL:statement (語句)。目標(biāo)函數(shù)必須由“min =”或“max =”開頭。1 LINGO快速入門當(dāng)你在windows下開始運(yùn)行LINGO系統(tǒng)時(shí),會(huì)得到類似下面的一個(gè)窗口:外層是主框架窗口,包含了所有菜單
2、命令和工具條,其它所有的窗口將被包含在主窗口之下。在主窗口內(nèi)的標(biāo)題為L(zhǎng)INGO Model LINGO1的窗口是LINGO的默認(rèn)模型窗口,建立的模型都都要在該窗口內(nèi)編碼實(shí)現(xiàn)。下面舉兩個(gè)例子。例 如何在LINGO中求解如下的LP問題:在模型窗口中輸入如下代碼:min=2*x1+3*x2;x1+x2=350;x1=100;2*x1+x2=600;然后點(diǎn)擊工具條上的按鈕 即可。例 使用LINGO軟件計(jì)算6個(gè)發(fā)點(diǎn)8個(gè)收點(diǎn)的最小費(fèi)用運(yùn)輸問題。產(chǎn)銷單位運(yùn)價(jià)如下表。單位 銷地運(yùn)價(jià)產(chǎn)地B1B2B3B4B5B6B7B8產(chǎn)量A16267425960A24953858255A35219743351A47673927
3、143A52395726541A65522814352銷量3537223241324338使用LINGO軟件,編制程序如下:model:!6發(fā)點(diǎn)8收點(diǎn)運(yùn)輸問題;sets: warehouses/wh1.wh6/: capacity; vendors/v1.v8/: demand; links(warehouses,vendors): cost, volume;endsets!目標(biāo)函數(shù); min=sum(links: cost*volume);!需求約束; for(vendors(J): sum(warehouses(I): volume(I,J)=demand(J);!產(chǎn)量約束; for(wa
4、rehouses(I): sum(vendors(J): volume(I,J)=capacity(I);!這里是數(shù)據(jù);data: capacity=60 55 51 43 41 52; demand=35 37 22 32 41 32 43 38; cost=6 2 6 7 4 2 9 5 4 9 5 3 8 5 8 2 5 2 1 9 7 4 3 3 7 6 7 3 9 2 7 1 2 3 9 5 7 2 6 5 5 5 2 2 8 1 4 3;enddataend然后點(diǎn)擊工具條上的按鈕 即可。為了能夠使用LINGO的強(qiáng)大功能,接著第二節(jié)的學(xué)習(xí)吧。2 LINGO中的集對(duì)實(shí)際問題建模的時(shí)候,
5、總會(huì)遇到一群或多群相聯(lián)系的對(duì)象,比如工廠、消費(fèi)者群體、交通工具和雇工等等。LINGO允許把這些相聯(lián)系的對(duì)象聚合成集(sets)。一旦把對(duì)象聚合成集,就可以利用集來最大限度的發(fā)揮LINGO建模語言的優(yōu)勢(shì)?,F(xiàn)在我們將深入介紹如何創(chuàng)建集,并用數(shù)據(jù)初始化集的屬性。學(xué)完本節(jié)后,你對(duì)基于建模技術(shù)的集如何引入模型會(huì)有一個(gè)基本的理解。2.1 為什么使用集集是LINGO建模語言的基礎(chǔ),是程序設(shè)計(jì)最強(qiáng)有力的基本構(gòu)件。借助于集,能夠用一個(gè)單一的、長(zhǎng)的、簡(jiǎn)明的復(fù)合公式表示一系列相似的約束,從而可以快速方便地表達(dá)規(guī)模較大的模型。 2.2 什么是集集是一群相聯(lián)系的對(duì)象,這些對(duì)象也稱為集的成員。一個(gè)集可能是一系列產(chǎn)品、卡車
6、或雇員。每個(gè)集成員可能有一個(gè)或多個(gè)與之有關(guān)聯(lián)的特征,我們把這些特征稱為屬性。屬性值可以預(yù)先給定,也可以是未知的,有待于LINGO求解。例如,產(chǎn)品集中的每個(gè)產(chǎn)品可以有一個(gè)價(jià)格屬性;卡車集中的每輛卡車可以有一個(gè)牽引力屬性;雇員集中的每位雇員可以有一個(gè)薪水屬性,也可以有一個(gè)生日屬性等等。LINGO有兩種類型的集:原始集(primitiveset)和派生集(derived set)。一個(gè)原始集是由一些最基本的對(duì)象組成的。一個(gè)派生集是用一個(gè)或多個(gè)其它集來定義的,也就是說,它的成員來自于其它已存在的集。2.3 模型的集部分集部分是LINGO模型的一個(gè)可選部分。在LINGO模型中使用集之前,必須在集部分事先
7、定義。集部分以關(guān)鍵字“sets:”開始,以“endsets”結(jié)束。一個(gè)模型可以沒有集部分,或有一個(gè)簡(jiǎn)單的集部分,或有多個(gè)集部分。一個(gè)集部分可以放置于模型的任何地方,但是一個(gè)集及其屬性在模型約束中被引用之前必須定義了它們。2.3.1 定義原始集為了定義一個(gè)原始集,必須詳細(xì)聲明:集的名字可選,集的成員可選,集成員的屬性定義一個(gè)原始集,用下面的語法:setname/member_list/:attribute_list;注意:用“”表示該部分內(nèi)容可選。下同,不再贅述。Setname是你選擇的來標(biāo)記集的名字,最好具有較強(qiáng)的可讀性。集名字必須嚴(yán)格符合標(biāo)準(zhǔn)命名規(guī)則:以拉丁字母或下劃線(_)為首字符,其后由
8、拉丁字母(AZ)、下劃線、阿拉伯?dāng)?shù)字(0,1,9)組成的總長(zhǎng)度不超過32個(gè)字符的字符串,且不區(qū)分大小寫。注意:該命名規(guī)則同樣適用于集成員名和屬性名等的命名。Member_list是集成員列表。如果集成員放在集定義中,那么對(duì)它們可采取顯式羅列和隱式羅列兩種方式。如果集成員不放在集定義中,那么可以在隨后的數(shù)據(jù)部分定義它們。 當(dāng)顯式羅列成員時(shí),必須為每個(gè)成員輸入一個(gè)不同的名字,中間用空格或逗號(hào)擱開,允許混合使用。例 可以定義一個(gè)名為students的原始集,它具有成員John、Jill、Rose和Mike,屬性有sex和age:sets: students/John Jill, Rose Mike/
9、: sex, age;endsets 當(dāng)隱式羅列成員時(shí),不必羅列出每個(gè)集成員??刹捎萌缦抡Z法:setname/member1.memberN/: attribute_list;這里的member1是集的第一個(gè)成員名,memberN是集的最末一個(gè)成員名。LINGO將自動(dòng)產(chǎn)生中間的所有成員名。LINGO也接受一些特定的首成員名和末成員名,用于創(chuàng)建一些特殊的集。列表如下:隱式成員列表格式示例所產(chǎn)生集成員1.n1.51,2,3,4,5StringM.StringNCar2.car14Car2,Car3,Car4,Car14DayM.DayNMon.FriMon,Tue,Wed,Thu,FriMonth
10、M.MonthNOct.JanOct,Nov,Dec,JanMonthYearM.MonthYearNOct2001.Jan2002Oct2001,Nov2001,Dec2001,Jan2002 集成員不放在集定義中,而在隨后的數(shù)據(jù)部分來定義。例!集部分;sets: students:sex,age;endsets!數(shù)據(jù)部分;data: students,sex,age= John 1 16 Jill 0 14 Rose 0 17 Mike 1 13;enddata注意:開頭用感嘆號(hào)(!),末尾用分號(hào)(;)表示注釋,可跨多行。在集部分只定義了一個(gè)集students,并未指定成員。在數(shù)據(jù)部分羅列
11、了集成員John、Jill、Rose和Mike,并對(duì)屬性sex和age分別給出了值。集成員無論用何種字符標(biāo)記,它的索引都是從1開始連續(xù)計(jì)數(shù)。在attribute_ list可以指定一個(gè)或多個(gè)集成員的屬性,屬性之間必須用逗號(hào)隔開??梢园鸭?、集成員和集屬性同C語言中的結(jié)構(gòu)體作個(gè)類比。如下圖:集 結(jié)構(gòu)體集成員 結(jié)構(gòu)體的域集屬性 結(jié)構(gòu)體實(shí)例LINGO內(nèi)置的建模語言是一種描述性語言,用它可以描述現(xiàn)實(shí)世界中的一些問題,然后再借助于LINGO求解器求解。因此,集屬性的值一旦在模型中被確定,就不可能再更改。在LINGO中,只有在初始部分中給出的集屬性值在以后的求解中可更改。這與前面并不矛盾,初始部分是LING
12、O求解器的需要,并不是描述問題所必須的。2.3.2 定義派生集為了定義一個(gè)派生集,必須詳細(xì)聲明:集的名字父集的名字可選,集成員可選,集成員的屬性可用下面的語法定義一個(gè)派生集:setname(parent_set_list)/member_list/:attribute_list;setname是集的名字。parent_set_list是已定義的集的列表,多個(gè)時(shí)必須用逗號(hào)隔開。如果沒有指定成員列表,那么LINGO會(huì)自動(dòng)創(chuàng)建父集成員的所有組合作為派生集的成員。派生集的父集既可以是原始集,也可以是其它的派生集。例sets: product/A B/; machine/M N/; week/1.2/;
13、 allowed(product,machine,week):x;endsetsLINGO生成了三個(gè)父集的所有組合共八組作為allowed集的成員。列表如下:編號(hào) 成員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)成員列表被忽略時(shí),派生集成員由父集成員所有的組合構(gòu)成,這樣的派生集成為稠密集。如果限制派生集的成員,使它成為父集成員所有組合構(gòu)成的集合的一個(gè)子集,這樣的派生集成為稀疏集。同原始集一樣,派生集成員的聲明也可以放在數(shù)據(jù)部分。一個(gè)派生集的成員列表有兩種方式生成:顯式羅列;設(shè)置成員資格過濾器。當(dāng)
14、采用方式時(shí),必須顯式羅列出所有要包含在派生集中的成員,并且羅列的每個(gè)成員必須屬于稠密集。使用前面的例子,顯式羅列派生集的成員:allowed(product,machine,week)/A M 1,A N 2,B N 1/;如果需要生成一個(gè)大的、稀疏的集,那么顯式羅列就很討厭。幸運(yùn)地是許多稀疏集的成員都滿足一些條件以和非成員相區(qū)分。我們可以把這些邏輯條件看作過濾器,在LINGO生成派生集的成員時(shí)把使邏輯條件為假的成員從稠密集中過濾掉。例sets: !學(xué)生集:性別屬性sex,1表示男性,0表示女性;年齡屬性age. ; students/John,Jill,Rose,Mike/:sex,age;
15、 !男學(xué)生和女學(xué)生的聯(lián)系集:友好程度屬性friend,0,1之間的數(shù)。 ; linkmf(students,students)|sex(&1) #eq# 1 #and# sex(&2) #eq# 0: friend; !男學(xué)生和女學(xué)生的友好程度大于的集; 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)記一個(gè)成員資格過濾器的開始。#eq#是邏輯運(yùn)算符,用來判斷是否“相等”,可參考4. &1可看作
16、派生集的第1個(gè)原始父集的索引,它取遍該原始父集的所有成員;&2可看作派生集的第2 個(gè)原始父集的索引,它取遍該原始父集的所有成員;&3,&4,以此類推。注意如果派生集B的父集是另外的派生集A,那么上面所說的原始父集是集A向前回溯到最終的原始集,其順序保持不變,并且派生集A的過濾器對(duì)派生集B仍然有效。因此,派生集的索引個(gè)數(shù)是最終原始父集的個(gè)數(shù),索引的取值是從原始父集到當(dāng)前派生集所作限制的總和??偟膩碚f,LINGO可識(shí)別的集只有兩種類型:原始集和派生集。在一個(gè)模型中,原始集是基本的對(duì)象,不能再被拆分成更小的組分。原始集可以由顯式羅列和隱式羅列兩種方式來定義。當(dāng)用顯式羅列方式時(shí),需在集成員列表中逐個(gè)輸
17、入每個(gè)成員。當(dāng)用隱式羅列方式時(shí),只需在集成員列表中輸入首成員和末成員,而中間的成員由LINGO產(chǎn)生。另一方面,派生集是由其它的集來創(chuàng)建。這些集被稱為該派生集的父集(原始集或其它的派生集)。一個(gè)派生集既可以是稀疏的,也可以是稠密的。稠密集包含了父集成員的所有組合(有時(shí)也稱為父集的笛卡爾乘積)。稀疏集僅包含了父集的笛卡爾乘積的一個(gè)子集,可通過顯式羅列和成員資格過濾器這兩種方式來定義。顯式羅列方法就是逐個(gè)羅列稀疏集的成員。成員資格過濾器方法通過使用稀疏集成員必須滿足的邏輯條件從稠密集成員中過濾出稀疏集的成員。不同集類型的關(guān)系見下圖。集稠密集原始集顯式羅列稀疏集過濾器派生集LINGO集類型3 模型的數(shù)
18、據(jù)部分和初始部分 在處理模型的數(shù)據(jù)時(shí),需要為集指派一些成員并且在LINGO求解模型之前為集的某些屬性指定值。為此,LINGO為用戶提供了兩個(gè)可選部分:輸入集成員和數(shù)據(jù)的數(shù)據(jù)部分(Data Section)和為決策變量設(shè)置初始值的初始部分(Init Section)。 3.1 模型的數(shù)據(jù)部分 3.1.1 數(shù)據(jù)部分入門數(shù)據(jù)部分提供了模型相對(duì)靜止部分和數(shù)據(jù)分離的可能性。顯然,這對(duì)模型的維護(hù)和維數(shù)的縮放非常便利。數(shù)據(jù)部分以關(guān)鍵字“data:”開始,以關(guān)鍵字“enddata”結(jié)束。在這里,可以指定集成員、集的屬性。其語法如下:object_list = value_list;對(duì)象列(object_lis
19、t)包含要指定值的屬性名、要設(shè)置集成員的集名,用逗號(hào)或空格隔開。一個(gè)對(duì)象列中至多有一個(gè)集名,而屬性名可以有任意多。如果對(duì)象列中有多個(gè)屬性名,那么它們的類型必須一致。如果對(duì)象列中有一個(gè)集名,那么對(duì)象列中所有的屬性的類型就是這個(gè)集。數(shù)值列(value_list)包含要分配給對(duì)象列中的對(duì)象的值,用逗號(hào)或空格隔開。注意屬性值的個(gè)數(shù)必須等于集成員的個(gè)數(shù)??聪旅娴睦?。例sets: set1/A,B,C/: X,Y;endsetsdata: X=1,2,3; Y=4,5,6;enddata在集set1中定義了兩個(gè)屬性X和Y。X的三個(gè)值是1、2和3,Y的三個(gè)值是4、5和6。也可采用如下例子中的復(fù)合數(shù)據(jù)聲明(
20、data statement)實(shí)現(xiàn)同樣的功能。例sets: set1/A,B,C/: X,Y;endsetsdata: X,Y=1 4 2 5 3 6;enddata看到這個(gè)例子,可能會(huì)認(rèn)為X被指定了1、4和2三個(gè)值,因?yàn)樗鼈兪菙?shù)值列中前三個(gè),而正確的答案是1、2和3。假設(shè)對(duì)象列有n個(gè)對(duì)象,LINGO在為對(duì)象指定值時(shí),首先在n個(gè)對(duì)象的第1個(gè)索引處依次分配數(shù)值列中的前n個(gè)對(duì)象,然后在n個(gè)對(duì)象的第2個(gè)索引處依次分配數(shù)值列中緊接著的n個(gè)對(duì)象,以此類推。模型的所有數(shù)據(jù)屬性值和集成員被單獨(dú)放在數(shù)據(jù)部分,這可能是最規(guī)范的數(shù)據(jù)輸入方式。3.1.2 參數(shù)在數(shù)據(jù)部分也可以指定一些標(biāo)量變量(scalar vari
21、ables)。當(dāng)一個(gè)標(biāo)量變量在數(shù)據(jù)部分確定時(shí),稱之為參數(shù)??匆焕?,假設(shè)模型中用利率8.5%作為一個(gè)參數(shù),就可以象下面一樣輸入一個(gè)利率作為參數(shù)。例data: interest_rate = .085;enddata也可以同時(shí)指定多個(gè)參數(shù)。例data: interest_rate,inflation_rate = .085 .03;enddata3.1.3 實(shí)時(shí)數(shù)據(jù)處理在某些情況,對(duì)于模型中的某些數(shù)據(jù)并不是定值。譬如模型中有一個(gè)通貨膨脹率的參數(shù),我們想在2%至6%范圍內(nèi),對(duì)不同的值求解模型,來觀察模型的結(jié)果對(duì)通貨膨脹的依賴有多么敏感。我們把這種情況稱為實(shí)時(shí)數(shù)據(jù)處理(what if analysis
22、)。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ì)把輸入的值指定給inflation_rate,然后繼續(xù)求解模型。 除了參數(shù)之外,也可以實(shí)時(shí)輸入集的屬性值,但不允許實(shí)時(shí)輸入集成員名。 3.1.4 指定屬性為一個(gè)值可以在數(shù)據(jù)聲明的右邊輸入一個(gè)值來把所有的成員的該屬性指定為一個(gè)值。
23、看下面的例子。例sets: days /MO,TU,WE,TH,FR,SA,SU/:needs;endsetsdata: needs = 20;enddataLINGO將用20指定days集的所有成員的needs屬性。對(duì)于多個(gè)屬性的情形,見下例。例sets: days /MO,TU,WE,TH,FR,SA,SU/:needs,cost;endsetsdata: needs cost = 20 100;enddata 3.1.5 數(shù)據(jù)部分的未知數(shù)值有時(shí)只想為一個(gè)集的部分成員的某個(gè)屬性指定值,而讓其余成員的該屬性保持未知,以便讓LINGO去求出它們的最優(yōu)值。在數(shù)據(jù)聲明中輸入兩個(gè)相連的逗號(hào)表示該位置
24、對(duì)應(yīng)的集成員的屬性值未知。兩個(gè)逗號(hào)間可以有空格。例sets: years/1.5/: capacity;endsetsdata: capacity = ,34,20,;enddata屬性capacity的第2個(gè)和第3個(gè)值分別為34和20,其余的未知。 3.2 模型的初始部分初始部分是LINGO提供的另一個(gè)可選部分。在初始部分中,可以輸入初始聲明(initialization statement),和數(shù)據(jù)部分中的數(shù)據(jù)聲明相同。對(duì)實(shí)際問題的建模時(shí),初始部分并不起到描述模型的作用,在初始部分輸入的值僅被LINGO求解器當(dāng)作初始點(diǎn)來用,并且僅僅對(duì)非線性模型有用。和數(shù)據(jù)部分指定變量的值不同,LINGO求
25、解器可以自由改變初始部分初始化的變量的值。一個(gè)初始部分以“init:”開始,以“endinit”結(jié)束。初始部分的初始聲明規(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í)間。 在這一節(jié)中,我們僅帶大家接觸了一些基本的數(shù)據(jù)輸入和初始化概念,不過現(xiàn)在你應(yīng)該可以輕松的為自己的模型加入原始數(shù)據(jù)和初始部分啦。4 LINGO函數(shù) 有了前幾節(jié)的基礎(chǔ)知識(shí),再加上本節(jié)的內(nèi)容,你就能
26、夠借助于LINGO建立并求解復(fù)雜的優(yōu)化模型了。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ù)用來定義變量的取值范圍6 集操作函數(shù):這類函數(shù)為對(duì)集的操作提供幫助7 集循環(huán)函數(shù):遍歷集的元素,執(zhí)行一定的操作的函數(shù)8 數(shù)據(jù)輸入輸出函數(shù):這類函數(shù)允許模型和外部數(shù)據(jù)源相聯(lián)系,進(jìn)行數(shù)據(jù)的輸入輸出9 輔助函數(shù):各種雜類函數(shù)4.1 基本運(yùn)算符這些運(yùn)算符是非?;镜模踔量梢圆徽J(rèn)為它們是一類函數(shù)。事實(shí)上,在LINGO中它們是
27、非常重要的。4.1.1 算術(shù)運(yùn)算符算術(shù)運(yùn)算符是針對(duì)數(shù)值進(jìn)行操作的。LINGO提供了5種二元運(yùn)算符:乘方乘除加減LINGO唯一的一元算術(shù)運(yùn)算符是取反函數(shù)“”。這些運(yùn)算符的優(yōu)先級(jí)由高到底為:高(取反) 低運(yùn)算符的運(yùn)算次序?yàn)閺淖蟮接野磧?yōu)先級(jí)高低來執(zhí)行。運(yùn)算的次序可以用圓括號(hào)“()”來改變。例 算術(shù)運(yùn)算符示例。253,(24)5等等。4.1.2 邏輯運(yùn)算符在LINGO中,邏輯運(yùn)算符主要用于集循環(huán)函數(shù)的條件表達(dá)式中,來控制在函數(shù)中哪些集成員被包含,哪些被排斥。在創(chuàng)建稀疏集時(shí)用在成員資格過濾器中。LINGO具有種邏輯運(yùn)算符:#not# 否定該操作數(shù)的邏輯值,not是一個(gè)一元運(yùn)算符#eq#若兩個(gè)運(yùn)算數(shù)相等,
28、則為true;否則為flase#ne# 若兩個(gè)運(yùn)算符不相等,則為true;否則為flase#gt# 若左邊的運(yùn)算符嚴(yán)格大于右邊的運(yùn)算符,則為true;否則為flase#ge# 若左邊的運(yùn)算符大于或等于右邊的運(yùn)算符,則為true;否則為flase#lt# 若左邊的運(yùn)算符嚴(yán)格小于右邊的運(yùn)算符,則為true;否則為flase#le# 若左邊的運(yùn)算符小于或等于右邊的運(yùn)算符,則為true;否則為flase#and# 僅當(dāng)兩個(gè)參數(shù)都為true時(shí),結(jié)果為true;否則為flase#or# 僅當(dāng)兩個(gè)參數(shù)都為false時(shí),結(jié)果為false;否則為true這些運(yùn)算符的優(yōu)先級(jí)由高到低為:高 #not# #eq# #
29、ne# #gt# #ge# #lt# #le#低 #and# #or#例 邏輯運(yùn)算符示例2 #gt# 3 #and# 4 #gt# 2,其結(jié)果為假(0)。 4.1.3 關(guān)系運(yùn)算符在LINGO中,關(guān)系運(yùn)算符主要是被用在模型中,來指定一個(gè)表達(dá)式的左邊是否等于、小于等于、或者大于等于右邊,形成模型的一個(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)系。LINGO并不支持嚴(yán)格小于和嚴(yán)格大于關(guān)系運(yùn)
30、算符。然而,如果需要嚴(yán)格小于和嚴(yán)格大于關(guān)系,比如讓A嚴(yán)格小于B:AB,那么可以把它變成如下的小于等于表達(dá)式:A+=B,這里是一個(gè)小的正數(shù),它的值依賴于模型中A小于B多少才算不等。下面給出以上三類操作符的優(yōu)先級(jí):高#not# (取反) #eq# #ne# #gt# #ge# #lt# #le#and# #or#低 = 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ù)e的x次方log(x) 返回x的自然對(duì)數(shù)lgm(x) 返回x的gamma函數(shù)的自然
31、對(duì)數(shù)sign(x) 如果x=0時(shí),返回不超過x的最大整數(shù);當(dāng)x= required(J);end計(jì)算的部分結(jié)果為Global optimal solution found at iteration: 0 Variable Value Reduced Cost從而解決方案是:每周最少需要22個(gè)職員,周一安排8人,周二安排2人,周三無需安排人,周四安排6人,周五和周六都安排3人,周日無需安排人。 4.8 輸入和輸出函數(shù)輸入和輸出函數(shù)可以把模型和外部數(shù)據(jù)比如文本文件、數(shù)據(jù)庫(kù)和電子表格等連接起來。1file函數(shù) 該函數(shù)用從外部文件中輸入數(shù)據(jù),可以放在模型中任何地方。該函數(shù)的語法格式為file(file
32、name)。這里filename是文件名,可以采用相對(duì)路徑和絕對(duì)路徑兩種表示方式。file函數(shù)對(duì)同一文件的兩種表示方式的處理和對(duì)兩個(gè)不同的文件處理是一樣的,這一點(diǎn)必須注意。例 以例1.2來講解file函數(shù)的用法。注意到在例1.2的編碼中有兩處涉及到數(shù)據(jù)。第一個(gè)地方是集部分的6個(gè)warehouses集成員和8個(gè)vendors集成員;第二個(gè)地方是數(shù)據(jù)部分的capacity,demand和cost數(shù)據(jù)。為了使數(shù)據(jù)和我們的模型完全分開,我們把它們移到外部的文本文件中。修改模型代碼以便于用file函數(shù)把數(shù)據(jù)從文本文件中拖到模型中來。修改后(修改處代碼黑體加粗)的模型代碼如下:model:!6發(fā)點(diǎn)8收點(diǎn)運(yùn)
33、輸問題;sets: warehouses/ file(1_2.txt) /: capacity; vendors/ file(1_2.txt) /: demand; links(warehouses,vendors): cost, volume;endsets!目標(biāo)函數(shù); min=sum(links: cost*volume);!需求約束; for(vendors(J): sum(warehouses(I): volume(I,J)=demand(J);!產(chǎn)量約束; for(warehouses(I): sum(vendors(J): volume(I,J)= required(J);end3
34、ole函數(shù)OLE是從EXCEL中引入或輸出數(shù)據(jù)的接口函數(shù),它是基于傳輸?shù)腛LE技術(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è)集成員,依此
35、類推。OLE只能讀一維或二維的Ranges(在單個(gè)的EXCEL工作表(sheet)中),但不能讀間斷的或三維的Ranges。Ranges是自左而右、自上而下來讀。例sets: PRODUCT; !產(chǎn)品; MACHINE; !機(jī)器; WEEK; !周; ALLOWED(PRODUCT,MACHINE,WEEK):x,y; !允許組合及屬性;endsetsdata: rate=0.01; PRODUCT,MACHINE,WEEK,ALLOWED,x,y=OLE(D:IMPORT.XLS); OLE(D:IMPORT.XLS)=rate;enddata代替在代碼文本的數(shù)據(jù)部分顯式輸入形式,我們把相關(guān)
36、數(shù)據(jù)全部放在如下電子數(shù)據(jù)表中來輸入。下面是D:IMPORT.XLS的圖表。除了輸入數(shù)據(jù)之外,我們也必須定義Ranges名:PRODUCT,MACHINE,WEEK,ALLOWED,x,y. 明確的,我們需要定義如下的Ranges名:Name RangePRODUCT B3:B4MACHINE C3:C4WEEK D3:D5ALLOWED B8:D10X F8:F10Y G8:G10rate C13為了在EXCEL中定義Ranges名: 按鼠標(biāo)左鍵拖曳選擇Range, 釋放鼠標(biāo)按鈕, 選擇“插入|名稱|定義”, 輸入希望的名字, 點(diǎn)擊“確定”按鈕。我們?cè)谀P偷臄?shù)據(jù)部分用如下代碼從EXECL中引入
37、數(shù)據(jù):PRODUCT,MACHINE,WEEK,ALLOWED,x,y=OLE(D:IMPORT.XLS);OLE(D:IMPORT.XLS)=rate;等價(jià)的描述為PRODUCT,MACHINE,WEEK,ALLOWED,x,y=OLE(D:IMPORT.XLS, PRODUCT,MACHINE,WEEK,ALLOWED,x,y);OLE(D:IMPORT.XLS,rate)=rate;這一等價(jià)描述使得變量名和Ranges不同亦可。4ranged(variable_or_row_name)為了保持最優(yōu)基不變,變量的費(fèi)用系數(shù)或約束行的右端項(xiàng)允許減少的量。5rangeu(variable_or_
38、row_name)為了保持最優(yōu)基不變,變量的費(fèi)用系數(shù)或約束行的右端項(xiàng)允許增加的量。6status()返回LINGO求解模型結(jié)束后的狀態(tài):0 Global Optimum(全局最優(yōu))1 Infeasible(不可行)2 Unbounded(無界)3 Undetermined(不確定)4 Feasible(可行)5 Infeasible or Unbounded(通常需要關(guān)閉“預(yù)處理”選項(xiàng)后重新求解模型,以確定模型究竟是不可行還是無界)6 Local Optimum(局部最優(yōu))7 Locally Infeasible(局部不可行,盡管可行解可能存在,但是LINGO并沒有找到一個(gè))8 Cutoff(
39、目標(biāo)函數(shù)的截?cái)嘀当贿_(dá)到)9 Numeric Error(求解器因在某約束中遇到無定義的算術(shù)運(yùn)算而停止) 通常,如果返回值不是0、4或6時(shí),那么解將不可信,幾乎不能用。該函數(shù)僅被用在模型的數(shù)據(jù)部分來輸出數(shù)據(jù)。 例model:min=sin(x);data: text()=status();enddataend部分計(jì)算結(jié)果為: Local optimal solution found at iteration: 33 6 Variable Value Reduced Cost結(jié)果中的6就是status()返回的結(jié)果,表明最終解是局部最優(yōu)的。 7dual dual(variable_or_row_n
40、ame)返回變量的判別數(shù)(檢驗(yàn)數(shù))或約束行的對(duì)偶(影子)價(jià)格(dual prices)。 4.9 輔助函數(shù)1if(logical_condition,true_result,false_result)if函數(shù)將評(píng)價(jià)一個(gè)邏輯表達(dá)式logical_condition,如果為真,返回true_ result,否則返回false_result。 例 求解最優(yōu)化問題其LINGO代碼如下:model: min=fx+fy; fx=if(x #gt# 0, 100,0)+2*x; fy=if(y #gt# 0,60,0)+3*y; x+y=30;end 2warn(text,logical_conditio
41、n)如果邏輯條件logical_condition為真,則產(chǎn)生一個(gè)內(nèi)容為text的信息框。例 示例。model: x=1; warn(x是正數(shù),x #gt# 0); end5 LINGO WINDOWS命令5.1 文件菜單(File Menu)1 新建(New)從文件菜單中選用“新建”命令、單擊“新建”按鈕或直接按F2鍵可以創(chuàng)建一個(gè)新的“Model”窗口。在這個(gè)新的“Model”窗口中能夠輸入所要求解的模型。2 打開(Open) 從文件菜單中選用“打開”命令、單擊“打開”按鈕或直接按F3鍵可以打開一個(gè)已經(jīng)存在的文本文件。這個(gè)文件可能是一個(gè)Model文件。3 保存(Save) 從文件菜單中選用“
42、保存”命令、單擊“保存”按鈕或直接按F4鍵用來保存當(dāng)前活動(dòng)窗口(最前臺(tái)的窗口)中的模型結(jié)果、命令序列等保存為文件。4 另存為(Save As) 從文件菜單中選用“另存為”命令或按F5鍵可以將當(dāng)前活動(dòng)窗口中的內(nèi)容保存為文本文件,其文件名為你在“另存為”對(duì)話框中輸入的文件名。利用這種方法你可以將任何窗口的內(nèi)容如模型、求解結(jié)果或命令保存為文件。5 關(guān)閉(Close)在文件菜單中選用“關(guān)閉”(Close)命令或按F6鍵將關(guān)閉當(dāng)前活動(dòng)窗口。如果這個(gè)窗口是新建窗口或已經(jīng)改變了當(dāng)前文件的內(nèi)容,LINGO系統(tǒng)將會(huì)提示是否想要保存改變后的內(nèi)容。6 打印(Print) 在文件菜單中選用“打印” (Print)命令
43、、單擊“打印”按鈕或直接按F7鍵可以將當(dāng)前活動(dòng)窗口中的內(nèi)容發(fā)送到打印機(jī)。7 打印設(shè)置(Print Setup) 在文件菜單中選用“打印設(shè)置”命令或直接按F8鍵可以將文件輸出到指定的打印機(jī)。8 打印預(yù)覽(Print Preview) 在文件菜單中選用“打印預(yù)覽”命令或直接按Shift+F8鍵可以進(jìn)行打印預(yù)覽。9 輸出到日志文件(Log Output) 從文件菜單中選用“Log Output”命令或按F9鍵打開一個(gè)對(duì)話框,用于生成一個(gè)日志文件,它存儲(chǔ)接下來在“命令窗口”中輸入的所有命令。10提交LINGO命令腳本文件(Take Commands) 從文件菜單中選用“Take Commands”命令
44、或直接按F11鍵就可以將LINGO命令腳本(command script)文件提交給系統(tǒng)進(jìn)程來運(yùn)行。11引入LINGO文件(Import Lingo File)從文件菜單中選用“Import Lingo File”命令或直接按F12鍵可以打開一個(gè)LINGO格式模型的文件,然后LINGO系統(tǒng)會(huì)盡可能把模型轉(zhuǎn)化為L(zhǎng)INGO語法允許的程序。12退出(Exit)從文件菜單中選用“Exit”命令或直接按F10鍵可以退出LINGO系統(tǒng)。5.2 編輯菜單(Edit Menu)1 恢復(fù)(Undo)從編輯菜單中選用“恢復(fù)”(Undo)命令或按Ctrl+Z組合鍵,將撤銷上次操作、恢復(fù)至其前的狀態(tài)。2 剪切(Cut
45、)從編輯菜單中選用“剪切”(Cut)命令或按Ctrl+X組合鍵可以將當(dāng)前選中的內(nèi)容剪切至剪貼板中。3 復(fù)制(Copy)從編輯菜單中選用“復(fù)制”(Copy)命令、單擊“復(fù)制”按鈕或按Ctrl+C組合鍵可以將當(dāng)前選中的內(nèi)容復(fù)制到剪貼板中。4 粘貼(Paste)從編輯菜單中選用“粘貼”(Paste)命令、單擊“粘貼”按鈕或按Ctrl+V組合鍵可以將粘貼板中的當(dāng)前內(nèi)容復(fù)制到當(dāng)前插入點(diǎn)的位置。5 粘貼特定.(Paste Special。)與上面的命令不同,它可以用于剪貼板中的內(nèi)容不是文本的情形。6 全選(Select All) 從編輯菜單中選用“Select All”命令或按Ctrl+A組合鍵可選定當(dāng)前
46、窗口中的所有內(nèi)容。7 匹配小括號(hào)(Match Parenthesis) 從編輯菜單中選用“Match Parenthesis”命令、單擊“Match Parenthesis”按鈕或按Ctrl+P組合鍵可以為當(dāng)前選中的開括號(hào)查找匹配的閉括號(hào)。8 粘貼函數(shù)(Paste Function)從編輯菜單中選用“Paste Function”命令可以將LINGO的內(nèi)部函數(shù)粘貼到當(dāng)前插入點(diǎn)。5.3 LINGO菜單1 求解模型(Slove) 從LINGO菜單中選用“求解”命令、單擊“Slove”按鈕或按Ctrl+S組合鍵可以將當(dāng)前模型送入內(nèi)存求解。2 求解結(jié)果(Solution) 從LINGO菜單中選用“So
47、lution”命令、單擊“Solution”按鈕或直接按Ctrl+O組合鍵可以打開求解結(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),但是默認(rèn)是不激活的。為了激活靈敏性分析,運(yùn)行LINGO|Options,選擇General S
48、olver Tab, 在Dual Computations列表框中,選擇Prices and Ranges選項(xiàng)。靈敏性分析耗費(fèi)相當(dāng)多的求解時(shí)間,因此當(dāng)速度很關(guān)鍵時(shí),就沒有必要激活它。下面我們看一個(gè)簡(jiǎn)單的具體例子。例某家具公司制造書桌、餐桌和椅子,所用的資源有三種:木料、木工和漆工。生產(chǎn)數(shù)據(jù)如下表所示:每個(gè)書桌每個(gè)餐桌每個(gè)椅子現(xiàn)有資源總數(shù)木料8單位6單位1單位48單位漆工4單位2單位20單位木工2單位8單位成品單價(jià)60單位30單位20單位若要求桌子的生產(chǎn)量不超過5件,如何安排三種產(chǎn)品的生產(chǎn)可使利潤(rùn)最大?用DESKS、TABLES和CHAIRS分別表示三種產(chǎn)品的生產(chǎn)量,建立LP模型。max=60*
49、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;求解這個(gè)模型,并激活靈敏性分析。這時(shí),查看報(bào)告窗口(Reports Window),可以看到如下結(jié)果。Global optimal solution found at iteration: 3 Variable Value Reduced Cost Row Slack or Surplus Dual Price 4 “Global optimal s
50、olution found at iteration: 3”表示3次迭代后得到全局最優(yōu)解。 “”表示最優(yōu)目標(biāo)值為280。 “Value”給出最優(yōu)解中各變量的值:造2個(gè)書桌(desks), 0個(gè)餐桌(tables), 8個(gè)椅子(chairs)。所以desks、chairs是基變量(非0),tables是非基變量(0)。 “Slack or Surplus”給出松馳變量的值:第1行松馳變量 =280(模型第一行表示目標(biāo)函數(shù),所以第二行對(duì)應(yīng)第一個(gè)約束)第2行松馳變量 =24第3行松馳變量 =0第4行松馳變量 =0第5行松馳變量 =5“Reduced Cost”列出最優(yōu)單純形表中判別數(shù)所在行的變量的系
51、數(shù),表示當(dāng)變量有微小變動(dòng)時(shí), 目標(biāo)函數(shù)的變化率。其中基變量的reduced cost值應(yīng)為0, 對(duì)于非基變量 Xj, 相應(yīng)的 reduced cost值表示當(dāng)某個(gè)變量Xj 增加一個(gè)單位時(shí)目標(biāo)函數(shù)減少的量( max型問題)。本例中:變量tables對(duì)應(yīng)的reduced cost值為5,表示當(dāng)非基變量tables的值從0變?yōu)?1時(shí)(此時(shí)假定其他非基變量保持不變,但為了滿足約束條件,基變量顯然會(huì)發(fā)生變化),最優(yōu)的目標(biāo)函數(shù)值 = 280 - 5 = 275。“DUAL PRICE”(對(duì)偶價(jià)格)表示當(dāng)對(duì)應(yīng)約束有微小變動(dòng)時(shí), 目標(biāo)函數(shù)的變化率。輸出結(jié)果中對(duì)應(yīng)于每一個(gè)約束有一個(gè)對(duì)偶價(jià)格。 若其數(shù)值為p, 表
52、示對(duì)應(yīng)約束中不等式右端項(xiàng)若增加1 個(gè)單位,目標(biāo)函數(shù)將增加p個(gè)單位(max型問題)。顯然,如果在最優(yōu)解處約束正好取等號(hào)(也就是“緊約束”,也稱為有效約束或起作用約束),對(duì)偶價(jià)格值才可能不是0。本例中:第3、4行是緊約束,對(duì)應(yīng)的對(duì)偶價(jià)格值為10,表示當(dāng)緊約束 3) 4 DESKS + 2 TABLES + 1.5 CHAIRS = 20 變?yōu)?3) 4 DESKS + 2 TABLES + 1.5 CHAIRS = 21 時(shí),目標(biāo)函數(shù)值 = 280 +10 = 290。對(duì)第4行也類似。 對(duì)于非緊約束(如本例中第2、5行是非緊約束),DUAL PRICE 的值為0, 表示對(duì)應(yīng)約束中不等式右端項(xiàng)的微小
53、擾動(dòng)不影響目標(biāo)函數(shù)。有時(shí), 通過分析DUAL PRICE, 也可對(duì)產(chǎn)生不可行問題的原因有所了解。靈敏度分析的結(jié)果是Ranges in which the basis is unchanged: Objective Coefficient Ranges Current Allowable Allowable Variable Coefficient Increase Decrease Righthand Side Ranges Row Current Allowable Allowable RHS Increase Decrease 2 48.00000 目標(biāo)函數(shù)中DESKS變量原來的費(fèi)用系數(shù)為
54、60,允許增加(Allowable Increase)=4、允許減少(Allowable Decrease)=2,說明當(dāng)它在60-4,60+20 = 56,80范圍變化時(shí),最優(yōu)基保持不變。對(duì)TABLES、CHAIRS變量,可以類似解釋。由于此時(shí)約束沒有變化(只是目標(biāo)函數(shù)中某個(gè)費(fèi)用系數(shù)發(fā)生變化),所以最優(yōu)基保持不變的意思也就是最優(yōu)解不變(當(dāng)然,由于目標(biāo)函數(shù)中費(fèi)用系數(shù)發(fā)生了變化,所以最優(yōu)值會(huì)變化)。 第2行約束中右端項(xiàng)(Right Hand Side,簡(jiǎn)寫為RHS)原來為48,當(dāng)它在48-24,48+ = 24,范圍變化時(shí),最優(yōu)基保持不變。第3、4、5行可以類似解釋。不過由于此時(shí)約束發(fā)生變化,最優(yōu)
55、基即使不變,最優(yōu)解、最優(yōu)值也會(huì)發(fā)生變化。靈敏性分析結(jié)果表示的是最優(yōu)基保持不變的系數(shù)范圍。由此,也可以進(jìn)一步確定當(dāng)目標(biāo)函數(shù)的費(fèi)用系數(shù)和約束右端項(xiàng)發(fā)生小的變化時(shí),最優(yōu)基和最優(yōu)解、最優(yōu)值如何變化。下面我們通過求解一個(gè)實(shí)際問題來進(jìn)行說明。例一奶制品加工廠用牛奶生產(chǎn)A1,A2兩種奶制品,1桶牛奶可以在甲車間用12小時(shí)加工成3公斤A1,或者在乙車間用8小時(shí)加工成4公斤A2。根據(jù)市場(chǎng)需求,生產(chǎn)的A1,A2全部能售出,且每公斤A1獲利24元,每公斤A2獲利16元。現(xiàn)在加工廠每天能得到50桶牛奶的供應(yīng),每天正式工人總的勞動(dòng)時(shí)間480小時(shí),并且甲車間每天至多能加工100公斤A1,乙車間的加工能力沒有限制。試為該廠
56、制訂一個(gè)生產(chǎn)計(jì)劃,使每天獲利最大,并進(jìn)一步討論以下3個(gè)附加問題: 1) 若用35元可以買到1桶牛奶,應(yīng)否作這項(xiàng)投資?若投資,每天最多購(gòu)買多少桶牛奶? 2) 若可以聘用臨時(shí)工人以增加勞動(dòng)時(shí)間,付給臨時(shí)工人的工資最多是每小時(shí)幾元? 3) 由于市場(chǎng)需求變化,每公斤A1的獲利增加到30元,應(yīng)否改變生產(chǎn)計(jì)劃?模型代碼如下:max=72*x1+64*x2;x1+x2=50;12*x1+8*x2=480;3*x11的正整數(shù)):N點(diǎn)求解 Barrier: 障礙法 (即內(nèi)點(diǎn)法)5.4 窗口菜單(Windows Menu)1 命令行窗口(Open Command Window) 從窗口菜單中選用“Open Com
57、mand Window”命令或直接按Ctrl+1可以打開LINGO的命令行窗口。在命令行窗口中可以獲得命令行界面,在“:”提示符后可以輸入LINGO的命令行命令。2 狀態(tài)窗口(Status Window)從窗口菜單中選用“Status Window”命令或直接按Ctrl+2可以打開LINGO的求解狀態(tài)窗口。如果在編譯期間沒有表達(dá)錯(cuò)誤,那么LINGO將調(diào)用適當(dāng)?shù)那蠼馄鱽砬蠼饽P?。?dāng)求解器開始運(yùn)行時(shí),它就會(huì)顯示如下的求解器狀態(tài)窗口(LINGO Solver Status)。求解器狀態(tài)窗口對(duì)于監(jiān)視求解器的進(jìn)展和模型大小是有用的。求解器狀態(tài)窗口提供了一個(gè)中斷求解器按鈕(Interrupt Solver
58、),點(diǎn)擊它會(huì)導(dǎo)致LINGO在下一次迭代時(shí)停止求解。在絕大多數(shù)情況,LINGO能夠交還和報(bào)告到目前為止的最好解。一個(gè)例外是線性規(guī)劃模型,返回的解是無意義的,應(yīng)該被忽略。但這并不是一個(gè)問題,因?yàn)榫€性規(guī)劃通常求解速度很快,很少需要中斷。注意:在中斷求解器后,必須小心解釋當(dāng)前解,因?yàn)檫@些解可能根本就不最優(yōu)解、可能也不是可行解或者對(duì)線性規(guī)劃模型來說就是無價(jià)值的。 在中斷求解器按鈕的右邊的是關(guān)閉按鈕(Close)。點(diǎn)擊它可以關(guān)閉求解器狀態(tài)窗口,不過可在任何時(shí)間通過選擇Windows|Status Window再重新打開。 在中斷求解器按鈕的右邊的是標(biāo)記為更新時(shí)間間隔(Update Interval)的域。
59、LINGO將根據(jù)該域指示的時(shí)間(以秒為單位)為周期更新求解器狀態(tài)窗口。可以隨意設(shè)置該域,不過若設(shè)置為0將導(dǎo)致更長(zhǎng)的求解時(shí)間LINGO花費(fèi)在更新的時(shí)間會(huì)超過求解模型的時(shí)間。變量框(Variables)Total顯示當(dāng)前模型的全部變量數(shù),Nonlinear顯示其中的非線性變量數(shù),Integers顯示其中的整數(shù)變量數(shù)。非線性變量是指它至少處于某一個(gè)約束中的非線性關(guān)系中。例如,對(duì)約束X+Y=100;X和Y都是線性變量。對(duì)約束X*Y=100;X和Y的關(guān)系是二次的,所以X和Y都是非線性變量。對(duì)約束X*X+Y=100;X是二次方是非線性的,Y雖與X構(gòu)成二次關(guān)系,但與X*X這個(gè)整體是一次的,因此Y是線性變量。
60、被計(jì)數(shù)變量不包括LINGO確定為定值的變量。例如:X=1; X+Y=3;這里X是1,由此可得Y是2,所以X和Y都是定值,模型中的X和Y都用1和2代換掉。約束(Constraints)框 Total顯示當(dāng)前模型擴(kuò)展后的全部約束數(shù),Nonlinear顯示其中的非線性約束數(shù)。非線性約束是該約束中至少有一個(gè)非線性變量。如果一個(gè)約束中的所有變量都是定值,那么該約束就被剔除出模型(該約束為真),不計(jì)入約束總數(shù)中。非零(Nonzeroes)框 Total顯示當(dāng)前模型中全部非零系數(shù)的數(shù)目,Nonlinear顯示其中的非線性變量系數(shù)的數(shù)目。內(nèi)存使用(Generator Memory Used,單位:K)框顯示當(dāng)
溫馨提示
- 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. 人人文庫(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)3D攝像頭市場(chǎng)行情動(dòng)態(tài)分析及發(fā)展前景趨勢(shì)預(yù)測(cè)報(bào)告
- 節(jié)電插座生產(chǎn)建設(shè)項(xiàng)目節(jié)能評(píng)估報(bào)告(節(jié)能專)
- PVC盒項(xiàng)目可行性研究報(bào)告
- 2025年中國(guó)B超診斷儀行業(yè)發(fā)展?jié)摿Ψ治黾巴顿Y戰(zhàn)略咨詢報(bào)告
- 2025年自行車鋁合金配件項(xiàng)目可行性研究報(bào)告
- 某游客服務(wù)中心建設(shè)項(xiàng)目可行性研究報(bào)告
- 2025年圓簡(jiǎn)燈項(xiàng)目可行性研究報(bào)告
- 2025年中國(guó)航空融資行業(yè)發(fā)展概況及行業(yè)投資潛力預(yù)測(cè)報(bào)告
- 中國(guó)臉盆龍頭行業(yè)發(fā)展監(jiān)測(cè)及投資方向研究報(bào)告
- 關(guān)于編制石墨及碳素項(xiàng)目可行性研究報(bào)告編制說明
- 九年級(jí)數(shù)學(xué)特長(zhǎng)生選拔考試試題
- 幼兒園交通安全宣傳課件PPT
- 門窗施工組織設(shè)計(jì)與方案
- 健身健美(課堂PPT)
- 制冷與空調(diào)作業(yè)實(shí)操考核標(biāo)準(zhǔn)
- (完整版)財(cái)務(wù)管理學(xué)課后習(xí)題答案-人大版
- 火災(zāi)直接財(cái)產(chǎn)損失申報(bào)表
- 錨索試驗(yàn)總結(jié)(共11頁)
- 移動(dòng)腳手架安全交底
- 人教版“課標(biāo)”教材《統(tǒng)計(jì)與概率》教學(xué)內(nèi)容、具體目標(biāo)和要求
- 矩形鋼板水箱的設(shè)計(jì)與計(jì)算
評(píng)論
0/150
提交評(píng)論