lingo8.0中文快速入門手冊(cè)_第1頁(yè)
lingo8.0中文快速入門手冊(cè)_第2頁(yè)
lingo8.0中文快速入門手冊(cè)_第3頁(yè)
lingo8.0中文快速入門手冊(cè)_第4頁(yè)
lingo8.0中文快速入門手冊(cè)_第5頁(yè)
已閱讀5頁(yè),還剩42頁(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)介

1、LINGO是用來(lái)求解線性和非線性優(yōu)化問(wèn)題的簡(jiǎn)易工具。LINGO內(nèi)置了一種建立最優(yōu)化模型的語(yǔ)言,可以簡(jiǎn)便地表達(dá)大規(guī)模問(wèn)題,利用LINGO高效的求解器可快速求解并分析結(jié)果。§1LINGO快速入門當(dāng)你在windows下開(kāi)始運(yùn)行LINGO系統(tǒng)時(shí),會(huì)得到類似下面的一個(gè)窗口:外層是主框架窗口,包含了所有菜單命令和工具條,其它所有的窗口將被包含在主窗口之下。在主窗口內(nèi)的標(biāo)題為L(zhǎng)INGOModel-LINGO1的窗口是LINGO的默認(rèn)模型窗口,建立的模型都都要在該窗口內(nèi)編碼實(shí)現(xiàn)。下面舉兩個(gè)例子。例如何在LINGO中求解如下的LP問(wèn)題:在模型窗口中輸入如下代碼:min=2*x1+3*x2;x1+x2&

2、gt;=350;x1>=100;2*x1+x2<=600;然后點(diǎn)擊工具條上的按鈕即可。例使用LINGO軟件方f算6個(gè)發(fā)點(diǎn)8個(gè)收點(diǎn)的最小費(fèi)用運(yùn)輸問(wèn)題。產(chǎn)銷單位運(yùn)價(jià)如下表。銷地BiB &E4&& 巳B8產(chǎn)量A6267425960A4953858255A5219743351A7673927143A2395726541A65522814352銷量3537223241324338使用LINGO軟件,編制程序如下:model:!6發(fā)點(diǎn)8收點(diǎn)運(yùn)輸問(wèn)題;sets:warehouses/wh1.wh6/:capacity;vendors/v1.v8/:demand;links

3、(warehouses,vendors):cost,volume;endsets!目標(biāo)函數(shù);min=surminks:cost*volume);!需求約束;for(vendors(J):sumwarehouses(I):volume(I,J)尸demand(J);!產(chǎn)量約束;for(warehouses(I):sumvendors(J):volume(I,J)<=capacity(I);!這里是數(shù)據(jù);data:capacity=605551434152;demand=3537223241324338;cost=626742954953858252197433767392712395726

4、555228143;enddataend然后點(diǎn)擊工具條上的按鈕即可。為了能夠使用LINGO的強(qiáng)大功能,接著第二節(jié)的學(xué)習(xí)吧。2LINGO中的集對(duì)實(shí)際問(wèn)題建模的時(shí)候,總會(huì)遇到一群或多群相聯(lián)系的對(duì)象,比如工廠、消費(fèi)者群體、交通工具和雇工等等。LINGO允許把這些相聯(lián)系的對(duì)象聚合成集(sets)。一旦把對(duì)象聚合成集,就可以利用集來(lái)最大限度的發(fā)揮LINGO建模語(yǔ)言的優(yōu)勢(shì)。現(xiàn)在我們將深入介紹如何創(chuàng)建集,并用數(shù)據(jù)初始化集的屬性。學(xué)完本節(jié)后,你對(duì)基于建模技術(shù)的集如何引入模型會(huì)有一個(gè)基本的理解。為什么使用集集是LINGO建模語(yǔ)言的基礎(chǔ),是程序設(shè)計(jì)最強(qiáng)有力的基本構(gòu)件。借助于集,能夠用一個(gè)單一的、長(zhǎng)的、簡(jiǎn)明的復(fù)合公

5、式表示一系列相似的約束,從而可以快速方便地表達(dá)規(guī)模較大的模型。什么是集集是一群相聯(lián)系的對(duì)象,這些對(duì)象也稱為集的成員。一個(gè)集可能是一系列產(chǎn)品、卡車或雇員。每個(gè)集成員可能有一個(gè)或多個(gè)與之有關(guān)聯(lián)的特征,我們把這些特征稱為屬性。屬性值可以預(yù)先給定,也可以是未知的,有待于LINGO求解。例如,產(chǎn)品集中的每個(gè)產(chǎn)品可以有一個(gè)價(jià)格屬性;卡車集中的每輛卡車可以有一個(gè)牽引力屬性;雇員集中的每位雇員可以有一個(gè)薪水屬性,也可以有一個(gè)生日屬性等等。LINGO有兩種類型的集:原始集(primitiveset)和派生集(derivedset)。一個(gè)原始集是由一些最基本的對(duì)象組成的。一個(gè)派生集是用一個(gè)或多個(gè)其它集來(lái)定義的,也

6、就是說(shuō),它的成員來(lái)自于其它已存在的模型的集部分集部分是LINGO模型的一個(gè)可選部分。在LINGO模型中使用集之前,必須在集部分事先定義。集部分以關(guān)鍵字“sets:”開(kāi)始,以“endsets”結(jié)束。一個(gè)模型可以沒(méi)有集部分,或有一個(gè)簡(jiǎn)單的集部分,或有多個(gè)集部分。一個(gè)集部分可以放置于模型的任何地方,但是一個(gè)集及其屬性在模型約束中被引用之前必須定義了它們。2.3.1定義原始集為了定義一個(gè)原始集,必須詳細(xì)聲明:集的名字可選,集的成員可選,集成員的屬性定義一個(gè)原始集,用下面的語(yǔ)法:setname/member_list/:attribute_list;注意:用“”表示該部分內(nèi)容可選。下同,不再贅述。Set

7、name是你選擇的來(lái)標(biāo)記集的名字,最好具有較強(qiáng)的可讀性。集名字必須嚴(yán)格符合標(biāo)準(zhǔn)命名規(guī)則:以拉丁字母或下劃線(_)為首字符,其后由拉丁字母(AZ)、下劃線、阿拉伯?dāng)?shù)字(0,1,,9)組成的總長(zhǎng)度不超過(guò)32個(gè)字符的字符串,且不區(qū)分大小寫(xiě)。注意:該命名規(guī)則同樣適用于集成員名和屬性名等的命名。Member_list是集成員列表。如果集成員放在集定義中,那么對(duì)它們可采取顯式羅列和隱式羅列兩種方式。如果集成員不放在集定義中,那么可以在隨后的數(shù)據(jù)部分定義它們。當(dāng)顯式羅列成員時(shí),必須為每個(gè)成員輸入一個(gè)不同的名字,中間用空格或逗號(hào)擱開(kāi),允許混合使用。例可以定義一個(gè)名為students的原始集,它具有成員John

8、、Jill、Rose和Mike,屬性有sex和age:sets:students/JohnJill,RoseMike/:sex,age;endsets當(dāng)隱式羅列成員時(shí),不必羅列出每個(gè)集成員。可采用如下語(yǔ)法:setname/member1.memberN/:attribute_list;這里的membe門是集的第一個(gè)成員名,memberN!集的最末一個(gè)成員名。LINGO將自動(dòng)產(chǎn)生中間的所有成員名。LINGO也接受一些特定的首成員名和末成員名,用于創(chuàng)建一些特殊的集。列表如下:隱式成員列表格式示例所產(chǎn)生集成員1.n1.51,2,3,4,5StringM.StringNCar2.car14Car2,C

9、ar3,Car4,Car14DayM.DayNMon.FriMon,Tue,Wed,Thu,FriMonthM.MonthNOct.JanOct,Nov,Dec,JanMonthYearM.MonthYearNOct2001.Jan2002Oct2001,Nov2001,Dec2001,Jan2002集成員不放在集定義中,而在隨后的數(shù)據(jù)部分來(lái)定義。例!集部分;sets:students:sex,age;endsets!數(shù)據(jù)部分;data:students,sex,age=John116Jill014Rose017Mike113;enddata注意:開(kāi)頭用感嘆號(hào)(?。┪灿梅痔?hào)(;)表示注釋,

10、可跨多行。在集部分只定義了一個(gè)集students,并未指定成員。在數(shù)據(jù)部分羅列了集成員John、Jill、Rose和Mike,并對(duì)屬性sex和age分別給出了值。集成員無(wú)論用何種字符標(biāo)記,它的索引都是從1開(kāi)始連續(xù)計(jì)數(shù)。在attribute,list可以指定一個(gè)或多個(gè)集成員的屬性,屬性之間必須用逗號(hào)隔開(kāi)??梢园鸭?、集成員和集屬性同C語(yǔ)言中的結(jié)構(gòu)體作個(gè)類比。如下圖:集<>結(jié)構(gòu)體集成員一一結(jié)構(gòu)體的域集屬性一一結(jié)構(gòu)體實(shí)例LINGO內(nèi)置的建模語(yǔ)言是一種描述性語(yǔ)言,用它可以描述現(xiàn)實(shí)世界中的一些問(wèn)題,然后再借助于LINGO求解器求解。因此,集屬性的值一旦在模型中被確定,就不可能再更改。在LING

11、O中,只有在初始部分中給出的集屬性值在以后的求解中可更改。這與前面并不矛盾,初始部分是LINGO求解器的需要,并不是描述問(wèn)題所必須的。2.3.2定義派生集為了定義一個(gè)派生集,必須詳細(xì)聲明: 集的名字 父集的名字 可選,集成員 可選,集成員的屬性可用下面的語(yǔ)法定義一個(gè)派生集:setname(parent_set_list)/member_list/:attribute_list;setname是集的名字。parent_set_list是已定義的集的列表,多個(gè)時(shí)必須用逗號(hào)隔開(kāi)。如果沒(méi)有指定成員列表,那么LINGO會(huì)自動(dòng)創(chuàng)建父集成員的所有組合作為派生集的成員。派生集的父集既可以是原始集,也可以是其它

12、的派生集。例sets:product/AB/;machine/MN/;week/1.2/;allowed(product,machine,week):x;endsetsLINGO生成了三個(gè)父集的所有組合共八組作為allowed集的成員。列表如下:22編號(hào)1成員(A,M,1)(A,M,2)33(A,N,1)44(A,N,2)55(B,M,1)66(B,M,2)77(B,N,1)88(B,N,2)成員列表被忽略時(shí),派生集成員由父集成員所有的組合構(gòu)成,這樣的派生集成為稠密集。如果限制派生集的成員,使它成為父集成員所有組合構(gòu)成的集合的一個(gè)子集,這樣的派生集成為稀疏集。同原始集一樣,派生集成員的聲明也可

13、以放在數(shù)據(jù)部分。一個(gè)派生集的成員列表有兩種方式生成:顯式羅列;設(shè)置成員資格過(guò)濾器。當(dāng)采用方式時(shí),必須顯式羅列出所有要包含在派生集中的成員,并且羅列的每個(gè)成員必須屬于稠密集。使用前面的例子,顯式羅列派生集的成員:allowed(product,machine,week)/AM1,AN2,BN1/;如果需要生成一個(gè)大的、稀疏的集,那么顯式羅列就很討厭。幸運(yùn)地是許多稀疏集的成員都滿足一些條件以和非成員相區(qū)分。我們可以把這些邏輯條件看作過(guò)濾器,在LINGO生成派生集的成員時(shí)把使邏輯條件為假的成員從稠密集中過(guò)濾掉。例sets:!學(xué)生集:性別屬性sex,1表示男性,0表示女性;年齡屬性age.;stude

14、nts/John,Jill,Rose,Mike/:sex,age;!男學(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#:x;endsetsdata:sex,age=116014017013;friend=;enddata用豎線(|)來(lái)標(biāo)記一個(gè)成員資格過(guò)濾器的開(kāi)始。#eq#是邏輯運(yùn)算符,用來(lái)判斷是否“相等”,可參考

15、7;4.&1可看作派生集的第1個(gè)原始父集的索引,它取遍該原始父集的所有成員;&2可看作派生集的第2個(gè)原始父集的索引,它取遍該原始父集的所有成員;&3,&4,,以此類推。注意如果派生集B的父集是另外的派生集A,那么上面所說(shuō)的原始父集是集A向前回溯到最終的原始集,其順序保持不變,并且派生集A的過(guò)濾器對(duì)派生集B仍然有效。因此,派生集的索引個(gè)數(shù)是最終原始父集的個(gè)數(shù),索引的取值是從原始父集到當(dāng)前派生集所作限制的總和??偟膩?lái)說(shuō),LINGO可識(shí)別的集只有兩種類型:原始集和派生集。在一個(gè)模型中,原始集是基本的對(duì)象,不能再被拆分成更小的組分。原始集可以由顯式羅列和隱式羅列兩種方式

16、來(lái)定義。當(dāng)用顯式羅列方式時(shí),需在集成員列表中逐個(gè)輸入每個(gè)成員。當(dāng)用隱式羅列方式時(shí),只需在集成員列表中輸入首成員和末成員,而中間的成員由LINGO產(chǎn)生。另一方面,派生集是由其它的集來(lái)創(chuàng)建。這些集被稱為該派生集的父集(原始集或其它的派生集)。一個(gè)派生集既可以是稀疏的,也可以是稠密的。稠密集包含了父集成員的所有組合(有時(shí)也稱為父集的笛卡爾乘積)。稀疏集僅包含了父集的笛卡爾乘積的一個(gè)子集,可通過(guò)顯式羅列和成員資格過(guò)濾器這兩種方式來(lái)定義。顯式羅列方法就是逐個(gè)羅列稀疏集的成員。成員資格過(guò)濾器方法通過(guò)使用稀疏集成員必須滿足的邏輯條件從稠密集成員中過(guò)濾出稀疏集的成員。不同集類型的關(guān)系見(jiàn)下圖。LINGO集類型&

17、#167;3模型的數(shù)據(jù)部分和初始部分在處理模型的數(shù)據(jù)時(shí),需要為集指派一些成員并且在LINGO求解模型之前為集的某些屬性指定值。為此,LINGO為用戶提供了兩個(gè)可選部分:輸入集成員和數(shù)據(jù)的數(shù)據(jù)部分(DataSection)和為決策變量設(shè)置初始值的初始部分(InitSection)。模型的數(shù)據(jù)部分3.1.1數(shù)據(jù)部分入門數(shù)據(jù)部分提供了模型相對(duì)靜止部分和數(shù)據(jù)分離的可能性。顯然,這對(duì)模型的維護(hù)和維數(shù)的縮放非常便利。數(shù)據(jù)部分以關(guān)鍵字“data:"開(kāi)始,以關(guān)鍵字“enddata”結(jié)束。在這里,可以指定集成員、集的屬性。其語(yǔ)法如下:object_list=value_list;對(duì)象列(object_

18、list)包含要指定值的屬性,、要設(shè)置集成員的集名,用逗號(hào)或空格隔開(kāi)。一個(gè)對(duì)象列中至多有一個(gè)集名,而屬性名可以有任意多。如果對(duì)象列中有多個(gè)屬性名,那么它們的類型必須一致。如果對(duì)象列中有一個(gè)集名,那么對(duì)象列中所有的屬性的類型就是這個(gè)集。數(shù)值列(value_list)包含要分配給對(duì)象列中的對(duì)象的值,用逗號(hào)或空格隔開(kāi)。注意屬性值的個(gè)數(shù)必須等于集成員的個(gè)數(shù)??聪旅娴睦?。例sets:set1/A,B,C/:X,Y;endsetsdata:X=1,2,3;Y=4,5,6;enddata在集setl中定義了兩個(gè)屬性X和Y。X的三個(gè)值是1、2和3,Y的三個(gè)值是4、5和6。也可采用如下例子中的復(fù)合數(shù)據(jù)聲明(d

19、atastatement)實(shí)現(xiàn)同樣的功能。例sets:set1/A,B,C/:X,Y;endsetsdata:X,Y=142 53 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)量變量(scalarvariables)。當(dāng)一

20、個(gè)標(biāo)量變量在數(shù)據(jù)部分確定時(shí),稱之為參數(shù)??匆焕僭O(shè)模型中用利率%作為一個(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ì)不同的值求解模型,來(lái)觀察模型的結(jié)果對(duì)通貨膨脹的依賴有多么敏感。我們把這種情況稱為實(shí)時(shí)數(shù)據(jù)處理(whatifanalysis)。LINGO有一個(gè)特征可方便地做到這件事

21、。在本該放數(shù)的地方輸入一個(gè)問(wèn)號(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è)值來(lái)把所有的成員的該屬性指定為一個(gè)值??聪旅娴睦?。例sets:days/MO,TU,WE,TH,F

22、R,SA,SU/:needs;endsetsdata:needs=20;enddataLINGO將用20指定days集的所有成員的needs屬性。對(duì)于多個(gè)屬性的情形,見(jiàn)下例。例sets:days/MO,TU,WE,TH,FR,SA,SU/:needs,cost;endsetsdata:needscost=20100;enddata3.1.5 數(shù)據(jù)部分的未知數(shù)值有時(shí)只想為一個(gè)集的部分成員的某個(gè)屬性指定值,而讓其余成員的該屬性保持未知,以便讓LINGO去求出它們的最優(yōu)值。在數(shù)據(jù)聲明中輸入兩個(gè)相連的逗號(hào)表示該位置對(duì)應(yīng)的集成員的屬性值未知。兩個(gè)逗號(hào)間可以有空格。例sets:years/1.5/:cap

23、acity;endsetsdata:capacity=,34,20,;enddata屬性capacity的第2個(gè)和第3個(gè)值分別為34和20,其余的未知。模型的初始部分初始部分是LINGO提供的另一個(gè)可選部分。在初始部分中,可以輸入初始聲明(initializationstatement),和數(shù)據(jù)部分中的數(shù)據(jù)聲明相同。對(duì)實(shí)際問(wèn)題的建模時(shí),初始部分并不起到描述模型的作用,在初始部分輸入的值僅被LINGO求解器當(dāng)作初始點(diǎn)來(lái)用,并且僅僅對(duì)非線性模型有用。和數(shù)據(jù)部分指定變量的值不同,LINGO求解器可以自由改變初始部分初始化的變量的值。一個(gè)初始部分以“init:”開(kāi)始,以“endinit”結(jié)束。初始部分

24、的初始聲明規(guī)則和數(shù)據(jù)部分的數(shù)據(jù)聲明規(guī)則相同。也就是說(shuō),我們可以在聲明的左邊同時(shí)初始化多個(gè)集屬性,可以把集屬性初始化為一個(gè)值,可以用問(wèn)號(hào)實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)處理,還可以用逗號(hào)指定未知數(shù)值。例init:X,Y=0,.1;endinitY=log(X);XA2+YA2<=1;好的初始點(diǎn)會(huì)減少模型的求解時(shí)間。不過(guò)現(xiàn)在你應(yīng)該在這一節(jié)中,我們僅帶大家接觸了一些基本的數(shù)據(jù)輸入和初始化概念,可以輕松的為自己的模型加入原始數(shù)據(jù)和初始部分啦。§ 4 LINGO函數(shù)有了前幾節(jié)的基礎(chǔ)知識(shí),再加上本節(jié)的內(nèi)容,你就能夠借助于LINGO建立并求解復(fù)雜的優(yōu)化模型了。LINGO有9種類型的函數(shù):1 1基本運(yùn)算符:包括算

25、術(shù)運(yùn)算符、邏輯運(yùn)算符和關(guān)系運(yùn)算符2 2數(shù)學(xué)函數(shù):三角函數(shù)和常規(guī)的數(shù)學(xué)函數(shù)3 3.金融函數(shù):LINGO提供的兩種金融函數(shù)4 4.概率函數(shù):LINGO提供了大量概率相關(guān)的函數(shù)5 5變量界定函數(shù):這類函數(shù)用來(lái)定義變量的取值范圍6 6集操作函數(shù):這類函數(shù)為對(duì)集的操作提供幫助7 7集循環(huán)函數(shù):遍歷集的元素,執(zhí)行一定的操作的函數(shù)8 8數(shù)據(jù)輸入輸出函數(shù):這類函數(shù)允許模型和外部數(shù)據(jù)源相聯(lián)系,進(jìn)行數(shù)據(jù)的輸入輸出9 9輔助函數(shù):各種雜類函數(shù)基本運(yùn)算符這些運(yùn)算符是非?;镜?,甚至可以不認(rèn)為它們是一類函數(shù)。事實(shí)上,在LINGO中它們是非常重要的。4.1.1 算術(shù)運(yùn)算符算術(shù)運(yùn)算符是針對(duì)數(shù)值進(jìn)行操作的。LINGO提供了5

26、種二元運(yùn)算符:人乘方*乘除+加-減LINGO唯一的一元算術(shù)運(yùn)算符是取反函數(shù)。這些運(yùn)算符的優(yōu)先級(jí)由高到底為:高-(取反)人*/低+-運(yùn)算符的運(yùn)算次序?yàn)閺淖蟮接野磧?yōu)先級(jí)高低來(lái)執(zhí)行。運(yùn)算的次序可以用圓括號(hào)“()”來(lái)改變。例算術(shù)運(yùn)算符示例。25/3,(2+4)/5等等。4.1.2邏輯運(yùn)算符在LINGO中,邏輯運(yùn)算符主要用于集循環(huán)函數(shù)的條件表達(dá)式中,來(lái)控制在函數(shù)中哪些集成員被包含,哪些被排斥。在創(chuàng)建稀疏集時(shí)用在成員資格過(guò)濾器中。LINGO具有9種邏輯運(yùn)算符:# not#否定該操作數(shù)的邏輯值,not是一個(gè)一元運(yùn)算符# eq#若兩個(gè)運(yùn)算數(shù)相等,則為true;否則為flase# ne#若兩個(gè)運(yùn)算符不相等,則為

27、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#ne#gt#ge#lt#le#低#and#or#例邏輯運(yùn)算符示例2#gt#

28、3#and#4#gt#2,其結(jié)果為假(0)。4.1.3關(guān)系運(yùn)算符在LINGO中,關(guān)系運(yùn)算符主要是被用在模型中,來(lái)指定一個(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)系,“>”表示大于等于關(guān)系。LINGO并不支持嚴(yán)格小于和嚴(yán)格大于關(guān)系運(yùn)算符。然而,如果需要嚴(yán)格

29、小于和嚴(yán)格大于關(guān)系,比如讓A嚴(yán)格小于B:A<B,那么可以把它變成如下的小于等于表達(dá)式:A+e<=B,這里e是一個(gè)小的正數(shù),它的值依賴于模型中A小于B多少才算不等。下面給出以上三類操作符的優(yōu)先級(jí):高#not#-(取反)人*/#eq#ne#gt#ge#lt#le#and#or#低<=>=數(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ù)的自然對(duì)數(shù)sign(x)如果x<

30、0返回-1;否則,返回1floor(x)返回x的整數(shù)部分。當(dāng)x>=0時(shí),返回不超過(guò)x的最大整數(shù);當(dāng)x<0時(shí),返回不低于x的最大整數(shù)。smax(x1,x2,,xn)返回x1,x2,,xn中的最大值smin(x1,x2,xn)返回x1,x2,,xn中的最小值例給定一個(gè)直角三角形,求包含該三角形的最小正方形。解:如圖所示。求最小的正方形就相當(dāng)于求如下的最優(yōu)化問(wèn)題:LINGO代碼如下:model:sets:object/1.3/:f;endsetsdata:a,b=3,4;!兩個(gè)直角邊長(zhǎng),修改很方便;enddataf(1)=a*sin(x);f(2)=b*cos(x);f(3)=a*cos

31、(x)+b*sin(x);min=sma(xf(1),f(2),f(3);bnd(0,x,;end在上面的代碼中用到了函數(shù)bncj詳情請(qǐng)見(jiàn)節(jié)。金融函數(shù)目前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)算得。fpa的計(jì)算公式為凈現(xiàn)值就是在一定時(shí)期內(nèi)為了獲得一定收益在該時(shí)期初所支付的實(shí)際費(fèi)用。例貸款買房問(wèn)題貸款金額50000元,貸款年利率%,采取分期付款方式(每年年末還固定金額,直至還清)。問(wèn)擬貸款10年,每年需償還多少元LINGO代碼如下:50000=

32、x*fpa(.0531,10);答案是x二元。2 fpl(I,n)返回如下情形的凈現(xiàn)值:?jiǎn)挝粫r(shí)段利率為I,第n個(gè)時(shí)段支付單位費(fèi)用。fpl(I,n)的計(jì)算公式為細(xì)心的讀者可以發(fā)現(xiàn)這兩個(gè)函數(shù)間的關(guān)系:概率函數(shù)3 pbn(p,n,x)二項(xiàng)分布的累積分布函數(shù)。當(dāng)n和(或)x不是整數(shù)時(shí),用線性插值法進(jìn)行計(jì)算。4 pcx(n,x)自由度為n的x2分布的累積分布函數(shù)。5 peb(a,x)當(dāng)?shù)竭_(dá)負(fù)荷為a,服務(wù)系統(tǒng)有x個(gè)服務(wù)器且允許無(wú)窮排隊(duì)時(shí)的Erlang繁忙概率。6 pel(a,x)當(dāng)?shù)竭_(dá)負(fù)荷為a,服務(wù)系統(tǒng)有x個(gè)服務(wù)器且不允許排隊(duì)時(shí)的Erlang繁忙概率。7 pfd(n,d,x)自由度為n和d的F分布的累積分

33、布函數(shù)。8 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ì)算。9 phg(pop,g,n,x)超幾何(Hypergeometric)分布的累積分布函數(shù)。pop表示產(chǎn)品總數(shù),g是正品數(shù)。從所有產(chǎn)品中任意取出n(nwpop)件。pop,g,n和x都可以是非整數(shù),這時(shí)采用線性插值進(jìn)行計(jì)算。10 ppl(a,x)Poisson分布的線性損失函數(shù),即返回max(0,z-x)的期望值,其中隨機(jī)變量z服從均值為a的Poisson分布。11 p

34、ps(a,x)均值為a的Poisson分布的累積分布函數(shù)。當(dāng)x不是整數(shù)時(shí),采用線性插值進(jìn)行計(jì)算。12 psl(x)單位正態(tài)線性損失函數(shù),即返回max(0,z-x)的期望值,其中隨機(jī)變量z服從標(biāo)準(zhǔn)正態(tài)分布。13 psn(x)標(biāo)準(zhǔn)正態(tài)分布的累積分布函數(shù)。14 ptd(n,x)自由度為n的t分布的累積分布函數(shù)。15 qrand(seed)產(chǎn)生服從(0,1)區(qū)間的擬隨機(jī)數(shù)。qrand只允許在模型的數(shù)據(jù)部分使用,它將用擬隨機(jī)數(shù)填滿集屬性。通常,聲明一個(gè)mxn的二維表,m表示運(yùn)行實(shí)驗(yàn)的次數(shù),n表示每次實(shí)驗(yàn)所需的隨機(jī)數(shù)的個(gè)數(shù)。在行內(nèi),隨機(jī)數(shù)是獨(dú)立分布的;在行間,隨機(jī)數(shù)是非常均勻的。這些隨機(jī)數(shù)是用“分層取樣”

35、的方法產(chǎn)生的。例model:data:M=4;N=2;seed=1234567;enddatasets:rows/1.M/;cols/1.N/;table(rows,cols):x;endsetsdata:X=qrand(seed);enddataend如果沒(méi)有為函數(shù)指定種子,那么LINGO將用系統(tǒng)時(shí)間構(gòu)造種子。16 rand(seed)返回0和1間的偽隨機(jī)數(shù),依賴于指定的種子。典型用法是U(I+1)=rand(U(I)。注意如果seed不變,那么產(chǎn)生的隨機(jī)數(shù)也不變。例利用rand產(chǎn)生15個(gè)標(biāo)準(zhǔn)正態(tài)分布的隨機(jī)數(shù)和自由度為2的t分布的隨機(jī)數(shù)。model:!產(chǎn)生一列正態(tài)分布和t分布的隨機(jī)數(shù);set

36、s:series/1.15/:u,znorm,zt;endsets!第一個(gè)均勻分布隨機(jī)數(shù)是任意的;u(1)=rand(.1234);!產(chǎn)生其余的均勻分布的隨機(jī)數(shù);for(series(I)|I#GT#1:u(I)=rand(u(I-1);for(series(I):!正態(tài)分布隨機(jī)數(shù);psn(znorm(I)=u(I);!和自由度為2的t分布隨機(jī)數(shù);ptd(2,zt(I)=u(I);!ZNORM和ZT可以是負(fù)數(shù);free(znorm(I);free(zt(I););end變量界定函數(shù)變量界定函數(shù)實(shí)現(xiàn)對(duì)變量取值范圍的附加限制,共4種:bin(x)限制x為0或1bnd(L,x,U)限制Lwxwufr

37、ee(x)取消對(duì)變量x的默認(rèn)下界為0的限制,即x可以取任意實(shí)數(shù)gin(x)限制x為整數(shù)在默認(rèn)情況下,LINGO規(guī)定變量是非負(fù)的,也就是說(shuō)下界為0,上界為+8。free取消了默認(rèn)的下界為0的限制,使變量也可以取負(fù)值。bnd用于設(shè)定一個(gè)變量的上下界,它也可以取消默認(rèn)下界為0的約束。集操作函數(shù)LINGO提供了幾個(gè)函數(shù)幫助處理集。1 in(set_name,primitive_index_1,primitive_index_2,)如果元素在指定集中,返回1;否則返回0。例全集為I,B是I的一個(gè)子集,C是B的補(bǔ)集。sets:I/x1.x4/;B(I)/x2/;C(I)|#not#in(B,&1)

38、:;endsets2 index(set_name,primitive_set_element)該函數(shù)返回在集set_name中原始集成員primitive_set_element的索引。如果set_name被忽略,那么LINGO將返回與primitive_set_element匹配的第一個(gè)原始集成員的索引。如果找不到,則產(chǎn)生一個(gè)錯(cuò)誤。例如何確定集成員(B,Y)屬于派生集S3。sets:S1/ABC/;S2/XYZ/;S3(S1,S2)/AX,AZ,BY,CX/;endsetsX=in(S3,index(S1,B),index(S2,Y);看下面的例子,表明有時(shí)為index指定集是必要的。例s

39、ets:girls/debble,sue,alice/;boys/bob,joe,sue,fred/;endsetsI1=index(sue);I2=index(boys,sue);I1的值是2,I2的值是3。我們建議在使用index函數(shù)時(shí)最好指定集。3 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ì)劃編制中特別有用。4 size(set_name)該函數(shù)返回集set_name的成員個(gè)數(shù)。在模型中明確給出集大小時(shí)最好使用該函數(shù)。它的使用使模型更

40、加數(shù)據(jù)中立,集大小改變時(shí)也更易維護(hù)。集循環(huán)函數(shù)集循環(huán)函數(shù)遍歷整個(gè)集進(jìn)行操作。其語(yǔ)法為function(setname(set_index_list)|conditional_qualifier:expression_list);function相應(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)。e

41、xpression_list是被應(yīng)用到每個(gè)集成員的表達(dá)式列表,當(dāng)用的是for函數(shù)時(shí),expression_list可以包含多個(gè)表達(dá)式,其間用逗號(hào)隔開(kāi)。這些表達(dá)式將被作為約束加到模型中。當(dāng)使用其余的三個(gè)集循環(huán)函數(shù)時(shí),expression_list只能有一個(gè)表達(dá)式。如果省略set_index_list,那么在expression_list中引用的所有屬性的類型都是setname集。5 for該函數(shù)用來(lái)產(chǎn)生對(duì)集成員的約束。基于建模語(yǔ)言的標(biāo)量需要顯式輸入每個(gè)約束,不過(guò)for函數(shù)允許只輸入一個(gè)約束,然后LINGO自動(dòng)產(chǎn)生每個(gè)集成員的約束。例產(chǎn)生序列1,4,9,16,25model:sets:number

42、/1.5/:x;endsetsfor(number(I):x(I)=IA2);end6 sum該函數(shù)返回遍歷指定的集成員的一個(gè)表達(dá)式的和。例求向量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);end7 min和max返回指定的集成員的一個(gè)表達(dá)式的最小值或最大值。例求向量5,1,3,4,6,10前5個(gè)數(shù)的最小值,后3個(gè)數(shù)的最大值。model:data:N=6;enddatasets:number/1.N/:x;en

43、dsetsdata:x=5134610;enddataminv=min(number(I)|I#le#5:x);maxv=ma(xnumber(I)|I#ge#N-2:x);end下面看一個(gè)稍微復(fù)雜一點(diǎn)兒的例子。例職員時(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=20

44、161316191412;enddata!最小化每周所需職員數(shù);min=sum(days:start);for(days(J):sum(days(I)|I#le#5:start(wrap(J+I+2,7)>=required(J);end計(jì)算的部分結(jié)果為Globaloptimalsolutionfoundatiteration:0Objectivevalue:VariableValueReducedCostREQUIRED(MON)REQUIRED(TUE)REQUIRED(WED)REQUIRED(THU)REQUIRED(FRI)REQUIRED(SAT)REQUIRED(SUN)S

45、TART(MON)START(TUE)START(WED)START(THU)START(FRI)START(SAT)START(SUN)從而解決方案是:每周最少需要22個(gè)職員,周一安排8人,周二安排2人,周三無(wú)需安排人,周四安排6人,周五和周六都安排3人,周日無(wú)需安排人。輸入和輸出函數(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ì)兩

46、個(gè)不同的文件處理是一樣的,這一點(diǎn)必須注意。例以例來(lái)講解file函數(shù)的用法。注意到在例的編碼中有兩處涉及到數(shù)據(jù)。第一個(gè)地方是集部分的6個(gè)warehouses集成員和8個(gè)vendors集成員;第二個(gè)地方是數(shù)據(jù)部分的capacity,demand和cost數(shù)據(jù)。為了使數(shù)據(jù)和我們的模型完全分開(kāi),我們把它們移到外部的文本文件中。修改模型代碼以便于用file函數(shù)把數(shù)據(jù)從文本文件中拖到模型中來(lái)。修改后(修改處代碼黑體加粗)的模型代碼如下:model:!6發(fā)點(diǎn)8收點(diǎn)運(yùn)輸問(wèn)題;sets:warehouses/file('')/:capacity;vendors/file('')/

47、: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)<=capacity(I);!這里是數(shù)據(jù);data:capacity=file('');demand=file('');cost=file('');en

48、ddataend模型的所有數(shù)據(jù)來(lái)自于文件。其內(nèi)容如下:!warehouses成員;WH1WH2WH3WH4WH5WH6!vendors成員;V1V2V3V4V5V6V7V8!產(chǎn)量;605551434152!銷量;3537223241324338!單位運(yùn)輸費(fèi)用矩陣;626742594953858252197433767392712395726555228143把記錄結(jié)束標(biāo)記()之間的數(shù)據(jù)文件部分稱為記錄。如果數(shù)據(jù)文件中沒(méi)有記錄結(jié)束標(biāo)記,那么整個(gè)文件被看作單個(gè)記錄。注意到除了記錄結(jié)束標(biāo)記外,模型的文本和數(shù)據(jù)同它們直接放在模型里是一樣的。我們來(lái)看一下在數(shù)據(jù)文件中的記錄結(jié)束標(biāo)記連同模型中file函數(shù)調(diào)

49、用是如何工作的。當(dāng)在模型中第一次調(diào)用file函數(shù)時(shí),LINGO打開(kāi)數(shù)據(jù)文件,然后讀取第一個(gè)記錄;第二次調(diào)用file函數(shù)時(shí),LINGO讀取第二個(gè)記錄等等。文件的最后一條記錄可以沒(méi)有記錄結(jié)束標(biāo)記,當(dāng)遇到文件結(jié)束標(biāo)記時(shí),LINGO會(huì)讀取最后一條記錄,然后關(guān)閉文件。如果最后一條記錄也有記錄結(jié)束標(biāo)記,那么直到LINGO求解完當(dāng)前模型后才關(guān)閉該文件。如果多個(gè)文件保持打開(kāi)狀態(tài),可能就會(huì)導(dǎo)致一些問(wèn)題,因?yàn)檫@會(huì)使同時(shí)打開(kāi)的文件總數(shù)超過(guò)允許同時(shí)打開(kāi)文件的上限16。當(dāng)使用file函數(shù)時(shí),可把記錄的內(nèi)容(除了一些記錄結(jié)束標(biāo)記外)看作是替代模型中file(filename)位置的文本。這也就是說(shuō),一條記錄可以是聲明的一

50、部分,整個(gè)聲明,或一系列聲明。在數(shù)據(jù)文件中注釋被忽略。注意在LINGO中不允許嵌套調(diào)用le函數(shù)。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í)行次序取決于其

51、在模型中出現(xiàn)的先后。例借用例,說(shuō)明text的用法。model:sets:days/mon.sun/:required,start;endsetsdata:!每天所需的最少職員數(shù);required=20161316191412;text('d:')=days'至少需要的職員數(shù)為'start;enddata!最小化每周所需職員數(shù);min=sum(days:start);for(days(J):sum(days(I)|I#le#5:start(wrap(J+I+2,7)>=required(J);end3 ole函數(shù)OL星從EXCEL中引入或輸出數(shù)據(jù)的接口函數(shù),

52、它是基于傳輸?shù)腛LE技術(shù)。OLE傳輸直接在內(nèi)存中傳輸數(shù)據(jù),并不借助于中間文件。當(dāng)使用OLE寸,LINGO先裝載EXCEL再通知EXCELS載指定的電子數(shù)據(jù)表,最后從電子數(shù)據(jù)表中獲得Ranges。為了使用OLE函數(shù),必須有EXCEL展其以上版本。OLE!數(shù)可在數(shù)據(jù)部分和初始部分引入數(shù)據(jù)。OLEM以同時(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è)的EXCELT

53、作表(sheet)中),但不能讀間斷的或三維的Ranges。Ranges是自左而右、自上而下來(lái)讀。例sets:PRODUCT;!產(chǎn)品;MACHINE;!機(jī)器;WEEK;!周;ALLOWED(PRODUCT,MACHINE,WEEK):x,y;!允許組合及屬性;endsetsdata:rate=;PRODUCT,MACHINE,WEEK,ALLOWED,x,y=OL(E'D:');OL(E'D:')=rate;enddata代替在代碼文本的數(shù)據(jù)部分顯式輸入形式,我們把相關(guān)數(shù)據(jù)全部放在如下電子數(shù)據(jù)表中來(lái)輸入。下面是的圖表。除了輸入數(shù)據(jù)之外,我們也必須定義Ranges

54、名:PRODUC,TMACHIN,EWEE,KALLOWE,Dx,y.明確的,我們需要定義如下的Ranges名:NameRangePRODUCTB3:B4MACHINEC3:C4WEEKD3:D5ALLOWEDB8:D10XF8:F10YG8:G10rateC13為了在EXCEL中定義Ranges名: 按鼠標(biāo)左鍵拖曳選擇Range, 釋放鼠標(biāo)按鈕, 選擇“插入|名稱|定義”, 輸入希望的名字, 點(diǎn)擊“確定”按鈕。我們?cè)谀P偷臄?shù)據(jù)部分用如下代碼從EXECL中引入數(shù)據(jù):PRODUCT,MACHINE,WEEK,ALLOWED,x,y=OLE('D:');OLE('D:')=rate;等價(jià)的描述為PRODUCT,MACHINE,WEEK,ALLOWED,x,y=OLE('D:',PRODUCT,MACHINE,WE

溫馨提示

  • 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)論