培訓(xùn)教案LINGO省公開課一等獎全國示范課微課金獎?wù)n件_第1頁
培訓(xùn)教案LINGO省公開課一等獎全國示范課微課金獎?wù)n件_第2頁
培訓(xùn)教案LINGO省公開課一等獎全國示范課微課金獎?wù)n件_第3頁
培訓(xùn)教案LINGO省公開課一等獎全國示范課微課金獎?wù)n件_第4頁
培訓(xùn)教案LINGO省公開課一等獎全國示范課微課金獎?wù)n件_第5頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

LINGO實用簡易教程

1/77培訓(xùn)內(nèi)容早晨(8:30——11:30)下午(13:30——16:30)LINGO基本功效介紹利用LINGO求解整數(shù)規(guī)劃問題LINGO慣用函數(shù)定義及其分類利用LINGO求解非線性規(guī)劃問題利用LINGO求解線性規(guī)劃問題在編程中對LINGO調(diào)用利用LINGO進(jìn)行敏感度分析2/77LINGO介紹LINGO是一個專門用于求解數(shù)學(xué)規(guī)劃問題軟件包。因為LINGO執(zhí)行速度快,易于方便地輸入、求解和分析數(shù)學(xué)規(guī)劃問題,所以在教學(xué)、科研和工業(yè)界得到廣泛應(yīng)用。LINGO主要用于求解線性規(guī)劃、非線性規(guī)劃、二次規(guī)劃和整數(shù)規(guī)劃等問題,也能夠用于求解一些線性和非線性方程組及代數(shù)方程求根等。3/77使用入門——界面4/77使用入門——菜單命令“File”“Edit”:——matchparenthesis:括號匹配,選定某括號一邊,然后點擊此選項,程序會自動尋找與之相匹配括號,假如未找到,會有彈窗提醒?!猵astefunction:用來進(jìn)行函數(shù)插入?!發(fā)ingo”:——solution:主要是考查結(jié)果,能夠指定某一行或者某一個項目來考查結(jié)果,有文字形式也有圖表形式?!猺ange:主要是用于靈敏度分析,在這里要先更改默認(rèn)設(shè)置,將price改為priceandrange,然后才能運行range?!猤enerate:能夠產(chǎn)生相對應(yīng)程序。——debug:用于調(diào)試程序,只能在程序犯錯時才能用。示例:model:sets:number/1..6/:x;endsetsdata:x=5134610;enddataendwindows:——commandwindow:生成命令窗口,用于在非windows系統(tǒng)下以命令方式編寫和運行程序?!猼ile:排列窗口方式/橫排或豎排——cascade:以瀑布方式排列窗口——arrangeicons:當(dāng)窗口最小化之后用來排列圖標(biāo)。5/77程序結(jié)構(gòu)——集LINGO程序普通是一“MODEL:”開頭,以“end”結(jié)束,內(nèi)容包含四部分:集部分,數(shù)據(jù)部分,初始部分,目標(biāo)函數(shù)、約束函數(shù)部分。集部分是LINGO模型一個可選部分。在LINGO模型中使用集之前,必須在集部分事先定義。集部分以關(guān)鍵字“sets:”開始,以“endsets”結(jié)束。一個模型能夠沒有集部分,或有一個簡單集部分,或有多個集部分。一個集部分能夠放置于模型任何地方,不過一個集及其屬性在模型約束中被引用之前必須被定義。6/77程序結(jié)構(gòu)——原始集集包含原始集和派生集兩種。定義原始集為了定義一個原始集,必須詳細(xì)申明:·集名字·可選,集組員·可選,集組員屬性定義一個原始集,用下面語法:setname[/member_list/][:attribute_list];注意:用“[]”表示該部分內(nèi)容可選。示例1:model:sets:students/John,Linda,Tom/:age,gender;endsetsEnd示例2:Model:Sets:Month/Jan..Dec/:temperature;Endsetsend7/77程序結(jié)構(gòu)——原始集集組員列表羅列能夠有顯式羅列和隱式羅列兩種,顯示羅列如上頁所表示,即將集組員全部羅列出來。隱式羅列無須羅列出每個集組員??刹扇∫韵抡Z法:setname/member1..memberN/[:attribute_list];這里member1是集第一個組員名,memberN是集最末一個組員名。LINGO將自動產(chǎn)生中間全部組員名。LINGO也接收一些特定首組員名和末組員名,用于創(chuàng)建一些特殊集。列表以下:隱式組員列表格式示例所產(chǎn)生集組員隱式組員列表格式示例所產(chǎn)生集組員1..n1..51,2,3,4,5StringM..stringNCard2..Card10Card2,Card3,Card4…Card10DayM..DayNMon..FriMon,Tue,Wen,Thu,FriMonthM..MonthNOct..JanOct,Nov,Dec,JanMonthYearM..MonthYearNOct..JanOct,Nov,Dec,Jan8/77程序結(jié)構(gòu)——原始集也能夠講集組員在數(shù)據(jù)部分定義。示例:!集部分;sets:students:sex,age;endsets!數(shù)據(jù)部分;data:students,sex,age= John116Jill014Rose017Mike113;Enddata注意:開頭用感嘆號(!),末尾用分號(;)表示注釋,可跨多行。請注意:數(shù)據(jù)部分?jǐn)?shù)據(jù)之間能夠用空格隔開,也能夠用逗號隔開。程序默認(rèn)數(shù)據(jù)是從索引1開始分配,即將“students,sex,age”第一個數(shù)據(jù)分配完了之后再分配其第二個數(shù)據(jù)。再以下例:model:sets:students/John,Linda,Tom/:age,gender;EndsetsData:Age,gender=10,1,11,0,12,1;enddataEnd運行之后便可看出數(shù)據(jù)分配結(jié)果。9/77程序結(jié)構(gòu)——派生集定義派生集為了定義一個派生集,必須詳細(xì)申明:·集名字·父集名字·可選,集組員·可選,集組員屬性可用下面語法定義一個派生集:setname(parent_set_list)[/member_list/][:attribute_list];setname是集名字。parent_set_list是已定義集列表,多個時必須用逗號隔開。假如沒有指定組員列表,那么LINGO會自動創(chuàng)建父集組員全部組合作為派生集組員。派生集父集既能夠是原始集,也能夠是其它派生集。friendsStudentsHarryGreenJohn84Linda96Tom68示例:model:sets:students/John,Linda,Tom/:age,gender;friends/Harry,Green/;Links(students,friends):relationship;EndsetsData:Relationship=8,4,9,6,6,8;enddataEnd運行結(jié)果以下列圖:10/77程序結(jié)構(gòu)——派生集稀疏集能夠用顯式表示也能夠用組員資格過濾器表示。顯式表示能夠下示例:Links(students,friends)/John,Harry,Linda,Green/:relationship;(1)組員資格過濾器表示能夠下示例:Links(students,friends)|&1#eq#1#and#&2#eq#2:relationship;(2)將分別插入程序中,并修改數(shù)據(jù),可得到以下結(jié)果:(1)RELATIONSHIP(JOHN,HARRY)8.000000RELATIONSHIP(LINDA,GREEN)6.000000(2)RELATIONSHIP(JOHN,GREEN)8.00000011/77程序結(jié)構(gòu)——數(shù)據(jù)數(shù)據(jù)部分以關(guān)鍵字“data:”開始,以關(guān)鍵字“enddata”結(jié)束。在這里,能夠指定集組員、集屬性。其語法以下:object_list=value_list;對象列(object_list)包含要指定值屬性名、要設(shè)置集組員集名,用逗號或空格隔開。一個對象列中至多有一個集名,而屬性名能夠有任意多。假如對象列中有多個屬性名,那么它們類型必須一致。假如對象列中有一個集名,那么對象列中全部屬性類型就是這個集。數(shù)值列(value_list)包含要分配給對象列中對象值,用逗號或空格隔開。注意屬性值個數(shù)必須等于集組員個數(shù)??聪旅胬?。示例:sets:set1/A,B,C/:X,Y;endsetsdata:X=1,2,3;Y=4,5,6;Enddata數(shù)據(jù)部分也能夠如此表示,其本質(zhì)是一樣:data:X,Y=142536;enddata12/77程序結(jié)構(gòu)——數(shù)據(jù)Data部分也能夠用來定義標(biāo)量變量,以下所表示:data:interest_rate=.085;enddata也能夠同時指定多個參數(shù)。data:interest_rate,inflation_rate=.085.03;enddata在一些情況,對于模型中一些數(shù)據(jù)并不是定值。譬如模型中有一個通貨膨脹率參數(shù),我們想在2%至6%范圍內(nèi),對不一樣值求解模型,來觀察模型結(jié)果對通貨膨脹依賴有多么敏感。我們把這種情況稱為實時數(shù)據(jù)處理(whatifanalysis)。LINGO有一個特征可方便地做到這件事:在本該放數(shù)地方輸入一個問號(?)。以下所表示:data:interest_rate,inflation_rate=.085?;enddata每一次求解模型時,LINGO都會提醒為參數(shù)inflation_rate輸入一個值。在WINDOWS操作系統(tǒng)下,將會接收到一個類似右上角所表示對話框:

直接輸入一個值再點擊OK按鈕,LINGO就會把輸入值指定給inflation_rate,然后繼續(xù)求解模型。13/77程序結(jié)構(gòu)——數(shù)據(jù)指定屬性為一個值能夠在數(shù)據(jù)申明右邊輸入一個值來把全部組員該屬性指定為一個值。看下面例子。數(shù)據(jù)部分未知數(shù)值有時只想為一個集部分組員某個屬性指定值,而讓其余組員該屬性保持未知,方便讓LINGO去求出它們最優(yōu)值。在數(shù)據(jù)申明中輸入兩個相連逗號表示該位置對應(yīng)集組員屬性值未知。兩個逗號間能夠有空格。屬性capacity第2個和第3個值分別為34和20,其余未知。示例1:sets:days/MO,TU,WE,TH,FR,SA,SU/:needs,cost;endsetsdata:needscost=20100;Enddata示例2:sets:years/1..5/:capacity;endsetsdata:capacity=,34,20,,;Enddata屬性capacity第2個和第3個值分別為34和20,其余未知。14/77程序結(jié)構(gòu)——初始部分初始部分是LINGO提供另一個可選部分。在初始部分中,能夠輸入初始申明(initializationstatement),和數(shù)據(jù)部分中數(shù)據(jù)申明相同。對實際問題建模時,初始部分并不起到描述模型作用,在初始部分輸入值僅被LINGO求解器看成初始點來用,而且僅僅對非線性模型有用。和數(shù)據(jù)部分指定變量值不一樣,LINGO求解器能夠自由改變初始部分初始化變量值。一個初始部分以“init:”開始,以“endinit”結(jié)束。初始部分初始申明規(guī)則和數(shù)據(jù)部分?jǐn)?shù)據(jù)申明規(guī)則相同。也就是說,我們能夠在申明左邊同時初始化多個集屬性,能夠把集屬性初始化為一個值,能夠用問號實現(xiàn)實時數(shù)據(jù)處理,還能夠用逗號指定未知數(shù)值。示例: init: X,Y=0,.001; endinit Y=@log(X); X+Y<=1;注意:好初始點會降低模型求解時間。如左例中,若將x初始值改為0.9,則能夠顯著降低迭代次數(shù)。15/77程序結(jié)構(gòu)——基本運算符一、基本運算符1、算術(shù)運算符算術(shù)運算符是針對數(shù)值進(jìn)行操作。LINGO提供了5種二元運算符:^乘方﹡乘/除﹢加﹣減LINGO唯一一元算術(shù)運算符是取反函數(shù)“﹣”。這些運算符優(yōu)先級由高到底為:高﹣(取反)^

﹡/低﹢﹣運算符運算次序為從左到右按優(yōu)先級高低來執(zhí)行。運算次序能夠用圓括號“()”來改變。16/77程序結(jié)構(gòu)——邏輯運算符2、邏輯運算符在LINGO中,邏輯運算符主要用于集循環(huán)函數(shù)條件表示式中,來控制在函數(shù)中哪些集組員被包含,哪些被排斥。在創(chuàng)建稀疏集時用在組員資格過濾器中。LINGO含有9種邏輯運算符:#not#否定該操作數(shù)邏輯值,#not#是一個一元運算符#eq#若兩個運算數(shù)相等,則為true;不然為flase#ne#若兩個運算符不相等,則為true;不然為flase#gt#若左邊運算符嚴(yán)格大于右邊運算符,則為true;不然為flase#ge#若左邊運算符大于或等于右邊運算符,則為true;不然為flase#lt#若左邊運算符嚴(yán)格小于右邊運算符,則為true;不然為flase#le#若左邊運算符小于或等于右邊運算符,則為true;不然為flase#and#僅當(dāng)兩個參數(shù)都為true時,結(jié)果為true;不然為flase#or#僅當(dāng)兩個參數(shù)都為false時,結(jié)果為false;不然為true這些運算符優(yōu)先級由高到低為:高#not##eq##ne##gt##ge##lt##le#低#and##or#17/77程序結(jié)構(gòu)——數(shù)學(xué)算符二、數(shù)學(xué)函數(shù)LINGO提供了大量標(biāo)準(zhǔn)數(shù)學(xué)函數(shù):@abs(x)返回x絕對值@sin(x)返回x正弦值,x采取弧度制@cos(x)返回x余弦值@tan(x)返回x正切值@exp(x)返回常數(shù)ex次方@log(x)返回x自然對數(shù)@lgm(x)返回xgamma函數(shù)自然對數(shù)@sign(x)假如x<0返回-1;不然,返回1@floor(x)返回x整數(shù)部分。當(dāng)x>=0時,返回不超出x最大整數(shù);當(dāng)x<0時,返回不低于x最小整數(shù)。@smax(x1,x2,…,xn)返回x1,x2,…,xn中最大值@smin(x1,x2,…,xn)返回x1,x2,…,xn中最小值18/77程序結(jié)構(gòu)——應(yīng)用實例應(yīng)用示例:給定一個直角三角形,求包含該三角形最小正方形。解:如圖所表示。求最小正方形就相當(dāng)于求以下最優(yōu)化問題:LINGO代碼以下:model:sets:object/1..3/:f;endsetsdata:a,b=3,4;!兩個直角邊長,修改很方便;enddataf(1)=a*@sin(x);f(2)=b*@cos(x);f(3)=a*@cos(x)+b*@sin(x);min=@smax(f(1),f(2),f(3));@bnd(0,x,1.57);endA

B

C

D

E

a

b

x

19/77程序結(jié)構(gòu)——概率函數(shù)三、概率函數(shù)1.@pbn(p,n,x):二項分布累積分布函數(shù)。當(dāng)n和(或)x不是整數(shù)時,用線性插值法進(jìn)行計算。2.@pcx(n,x):自由度為nχ2分布累積分布函數(shù)。3.@peb(a,x):當(dāng)?shù)诌_(dá)負(fù)荷為a,服務(wù)系統(tǒng)有x個服務(wù)器且允許無窮排隊時Erlang繁忙概率。4.@pel(a,x):當(dāng)?shù)诌_(dá)負(fù)荷為a,服務(wù)系統(tǒng)有x個服務(wù)器且不允許排隊時Erlang繁忙概率。5.@pfd(n,d,x):自由度為n和dF分布累積分布函數(shù)。6.@pfs(a,x,c):當(dāng)負(fù)荷上限為a,用戶數(shù)為c,平行服務(wù)器數(shù)量為x時,有限源Poisson服務(wù)系統(tǒng)等候或返修用戶數(shù)期望值。a是用戶數(shù)乘以平均服務(wù)時間,再除以平均返修時間。當(dāng)c和(或)x不是整數(shù)時,采取線性插值進(jìn)行計算。7.@phg(pop,g,n,x):超幾何(Hypergeometric)分布累積分布函數(shù)。pop表示產(chǎn)品總數(shù),g是正品數(shù)。從全部產(chǎn)品中任意取出n(n≤pop)件。pop,g,n和x都能夠是非整數(shù),這時采取線性插值進(jìn)行計算。8.@ppl(a,x)Poisson:分布線性損失函數(shù),即返回max(0,z-x)期望值,其中隨機(jī)變量z服從均值為aPoisson分布。9.@pps(a,x):均值為aPoisson分布累積分布函數(shù)。當(dāng)x不是整數(shù)時,采取線性插值進(jìn)行計算。10.@psl(x):單位正態(tài)線性損失函數(shù),即返回max(0,z-x)期望值,其中隨機(jī)變量z服從標(biāo)準(zhǔn)正態(tài)分布。11.@psn(x):標(biāo)準(zhǔn)正態(tài)分布累積分布函數(shù)12.@ptd(n,x):自由度為nt分布累積分布函數(shù)。20/77程序結(jié)構(gòu)——@qrand13.@qrand(seed):產(chǎn)生服從(0,1)區(qū)間擬隨機(jī)數(shù)。@qrand只允許在模型數(shù)據(jù)部分使用,它將用擬隨機(jī)數(shù)填滿集屬性。通常,申明一個m×n二維表,m表示運行試驗次數(shù),n表示每次試驗所需隨機(jī)數(shù)個數(shù)。在行內(nèi),隨機(jī)數(shù)是獨立分布;在行間,隨機(jī)數(shù)是非常均勻。這些隨機(jī)數(shù)是用“分層取樣”方法產(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假如沒有為函數(shù)指定種子,那么LINGO將用系統(tǒng)時間結(jié)構(gòu)種子。21/77程序結(jié)構(gòu)——@rand14.@rand(seed)返回0和1間偽隨機(jī)數(shù),依賴于指定種子。經(jīng)典使用方法是U(I+1)=@rand(U(I))。注意假如seed不變,那么產(chǎn)生隨機(jī)數(shù)也不變。示例:利用@rand產(chǎn)生15個標(biāo)準(zhǔn)正態(tài)分布隨機(jī)數(shù)和自由度為2t分布隨機(jī)數(shù)。model:!產(chǎn)生一列正態(tài)分布和t分布隨機(jī)數(shù);sets:series/1..15/:u,znorm,zt;endsets

!第一個均勻分布隨機(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);!和自由度為2t分布隨機(jī)數(shù);@ptd(2,zt(I))=u(I);!ZNORM和ZT能夠是負(fù)數(shù);@free(znorm(I));@free(zt(I)););end22/77程序結(jié)構(gòu)——變量界定函數(shù)四、變量界定函數(shù)變量界定函數(shù)實現(xiàn)對變量取值范圍附加限制,共4種:@bin(x):限制x為0或1@bnd(L,x,U):限制L≤x≤U@free(x):取消對變量x默認(rèn)下界為0限制,即x能夠取任意實數(shù)@gin(x):限制x為整數(shù)在默認(rèn)情況下,LINGO要求變量是非負(fù),也就是說下界為0,上界為+∞。@free取消了默認(rèn)下界為0限制,使變量也能夠取負(fù)值。@bnd用于設(shè)定一個變量上下界,它也能夠取消默認(rèn)下界為0約束。應(yīng)用示例:(1)min=x1+x2;x1-x2<=2;x1+2*x2<=3;結(jié)果顯示:x1=0,x2=0。(2)若添加@free函數(shù):@free(x1);@free(x2);則結(jié)果顯示為:“UnboundedSolution”,即為無界解。(3)若將添加@gin函數(shù):@gin(x1);@gin(x2);則結(jié)果顯示:x1=0,x2=0,說明@gin函數(shù)限制x為整數(shù)同時也限定x>0。(4)若將程序修改為:max=x1+x2;x1-x2<=2;x1+2*x2<=3;則結(jié)果顯示為x1=2.333333,x2=0.333333,為全局最優(yōu)解。(5)若將添加@gin函數(shù):@gin(x1);@gin(x2);則結(jié)果顯示為:x1=1,x2=1,即為整數(shù)最優(yōu)解。23/77程序結(jié)構(gòu)——集操作函數(shù)五、集操作函數(shù)LINGO提供了幾個函數(shù)幫助處理集。1.@in(set_name,primitive_index_1[,primitive_index_2,…])假如元素在指定集中,返回1;不然返回0。示例:

全集為I,B是I一個子集,C是B補(bǔ)集。sets:I/x1..x4/;B(I)/x2/;C(I)|#not#@in(B,&1);endsets

此例C(I)中元素為x1,x3,x4。另見此例:model:sets:series/x1..x5/;endsetsy=@in(series,8);End返回結(jié)果為y=0,說明集series中不包含第8個元素;若程序為:model:sets:series/x1..x5/;series1/z1..z4/;links(series,series1);endsetsy=@in(links,1,4);End返回結(jié)果為y=1,說明在集links中存在第一行第四列元素。24/77程序結(jié)構(gòu)——集操作函數(shù)2.@index([set_name,]primitive_set_element)該函數(shù)返回在集set_name中原始集組員primitive_set_element索引。假如set_name被忽略,那么LINGO將返回與primitive_set_element匹配第一個原始集組員索引。假如找不到,則產(chǎn)生一個錯誤。示例1:

怎樣確定集組員(B,Y)屬于派生集S3。sets:S1/ABC/;S2/XYZ/;S3(S1,S2)/AX,AZ,BY,CX/;endsetsX=@in(S3,@index(S1,B),@index(S2,Y));看下面例子,表明有時為@index指定集是必要。示例2:sets:girls/debble,sue,alice/;boys/bob,joe,sue,fred/;endsetsI1=@index(sue);I2=@index(boys,sue);I1值是2,I2值是3-=。我們提議在使用@index函數(shù)時最好指定集。25/77程序結(jié)構(gòu)——集操作函數(shù)3.@wrap(index,limit) 該函數(shù)返回j=index-k*limit,其中k是一個整數(shù),取適當(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ù)。在模型中明確給出集大小時最好使用該函數(shù)。它使用使模型愈加數(shù)據(jù)中立,集大小改變時也更易維護(hù)。26/77程序結(jié)構(gòu)——集循環(huán)函數(shù)六、集循環(huán)函數(shù)集循環(huán)函數(shù)遍歷整個集進(jìn)行操作。其語法為@function(setname[(set_index_list)[|conditional_qualifier]]:expression_list); @function對應(yīng)于下面羅列四個集循環(huán)函數(shù)之一;setname是要遍歷集;set_index_list是集索引列表;conditional_qualifier是用來限制集循環(huán)函數(shù)范圍,當(dāng)集循環(huán)函數(shù)遍歷集每個組員時,LINGO都要對conditional_qualifier進(jìn)行評價,若結(jié)果為真,則對該組員執(zhí)行@function操作,不然跳過,繼續(xù)執(zhí)行下一次循環(huán)。expression_list是被應(yīng)用到每個集組員表示式列表,當(dāng)用是@for函數(shù)時,expression_list能夠包含多個表示式,其間用分號隔開。這些表示式將被作為約束加到模型中。當(dāng)使用其余三個集循環(huán)函數(shù)時,expression_list只能有一個表示式。假如省略set_index_list,那么在expression_list中引用全部屬性類型都是setname集。1.@for 該函數(shù)用來產(chǎn)生對集組員約束?;诮UZ言標(biāo)量需要顯式輸入每個約束,不過@for函數(shù)允許只輸入一個約束,然后LINGO自動產(chǎn)生每個集組員約束。示例:

產(chǎn)生序列{1,4,9,16,25}sets:number/1..5/:x;endsets@for(number(I):x(I)=I^2);27/77程序結(jié)構(gòu)——集循環(huán)函數(shù)2.@sum該函數(shù)返回遍歷指定集組員一個表示式和。示例1:

求向量[5,1,3,4,6,10]前5個數(shù)和。model:data:N=6;enddatasets:number/1..N/:x;endsetsdata:x=5134610;enddatas=@sum(number(I)|I#le#5:x);End注意:此時假如將集部分和第一個數(shù)據(jù)部分調(diào)換話,程序無法運行,因為此時N還未被定義。3.@min和@max返回指定集組員一個表示式最小值或最大值。示例2:求向量[5,1,3,4,6,10]前5個數(shù)最小值,后3個數(shù)最大值。model:data:N=6;enddatasets:number/1..N/:x;endsetsdata:x=5134610;enddataminv=@min(number(I)|I#le#5:x);maxv=@max(number(I)|I#ge#N-2:x);end28/77程序結(jié)構(gòu)——應(yīng)用實例示例:職員時序安排模型一項工作一周7天都需要有些人(比如護(hù)士工作),天天(周一至周日)所需最少職員數(shù)為20、16、13、16、19、14和12,并要求每個職員一周連續(xù)工作5天,試求每七天所需最少職員數(shù),并給出安排。注意這里我們考慮穩(wěn)定后情況。model:sets:days/mon..sun/:required,start;endsetsdata:!天天所需最少職員數(shù);required=20161316191412;enddata!最小化每七天所需職員數(shù);min=@sum(days:start);@for(days(J):@sum(days(I)|I#le#5:start(@wrap(J+I+2,7)))>=required(J));end29/77程序結(jié)構(gòu)——應(yīng)用實例計算部分結(jié)果為Globaloptimalsolutionfoundatiteration:0Objectivevalue:22.00000VariableValueReducedCostREQUIRED(MON)20.000000.000000REQUIRED(TUE)16.000000.000000REQUIRED(WED)13.000000.000000REQUIRED(THU)16.000000.000000REQUIRED(FRI)19.000000.000000REQUIRED(SAT)14.000000.000000REQUIRED(SUN)12.000000.000000START(MON)8.0000000.000000START(TUE)2.0000000.000000START(WED)0.0000000.3333333START(THU)6.0000000.000000START(FRI)3.0000000.000000START(SAT)3.0000000.000000START(SUN)0.0000000.000000從而處理方案是:每七天最少需要22個職員,周一安排8人,周二安排2人,周三無需安排人,周四安排6人,周五和周六都安排3人,周日無需安排人。30/77程序結(jié)構(gòu)——集循環(huán)函數(shù)3.@prod函數(shù):用于獲取集中全部元素乘積。示例:MODEL:SETS:COMPONENTS:P;ENDSETSDATA:P=.95.99.98;ENDDATAP_FAIL=1-@PROD(COMPONENTS(I):P(I));END本例中P_FAIL表示是一個串聯(lián)絡(luò)統(tǒng)失效概率。31/77程序結(jié)構(gòu)——輔助函數(shù)七、輔助函數(shù)1.@if(logical_condition,true_result,false_result)@if函數(shù)將評價一個邏輯表示式logical_condition,假如為真,返回true_result,不然返回false_result。示例1:求解最優(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;end2.@warn(’text’,logical_condition)假如邏輯條件logical_condition為真,則產(chǎn)生一個內(nèi)容為’text’信息框。示例2:model:x=1;@warn('x是正數(shù)',x#gt#0);end32/77簡單命令行命令及應(yīng)用

命令行命令普通用于非windows系統(tǒng)計算機(jī)中,我們能夠經(jīng)過菜單行中找到“commandwindow”或者按組合鍵“CTRL+1”來開啟命令窗口。在這里僅僅對簡單命令作一下介紹。 cat——顯示全部命令類型; com——按類型顯示全部命令; model——開始以命令行方式輸入一個模型; go——求解當(dāng)前模型; solu——顯示當(dāng)前模型求解結(jié)果; quit——退出lingo系統(tǒng)。33/77LINGO實戰(zhàn)——線性規(guī)劃

某家俱企業(yè)制造書桌、餐桌和椅子,所用資源有三種:木料、木工和漆工。生產(chǎn)數(shù)據(jù)以下表所表示:

若要求桌子生產(chǎn)量不超出5件,怎樣安排三種產(chǎn)品生產(chǎn)可使利潤最大?

每個書桌每個餐桌每個椅子現(xiàn)有資源總數(shù)木料8單位6單位1單位48單位漆工4單位2單位1.5單位20單位木工2單位1.5單位0.5單位8單位成本單價60單位30單位20單位

34/77LINGO實戰(zhàn)——線性規(guī)劃

分析:這是一個經(jīng)典線性規(guī)劃問題。我們用DESKS、TABLES和CHAIRS分別表示三種產(chǎn)品生產(chǎn)量,建立LP模型。

程序以下所表示:

max=60*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;

在變量較少情況下,用這種格式是比較方便,不過當(dāng)變量增多時,這么寫法就會耗時耗力了。所以,我們提倡用lingo提供函數(shù)來簡化模型結(jié)構(gòu),使之愈加易寫與易讀。

首先,我們要定義集合: sets: products/desks,tables,chairs/:interest,volume; materials/a..c/:capacity; links(products,materials):x; endsets35/77LINGO實戰(zhàn)——線性規(guī)劃

現(xiàn)在我們來定義數(shù)據(jù)部分: data: interest=60,30,20; capacity=48,20,8; x=8,4,2 6,2,1.5 1,1.5,0.5; enddata

然后我們寫出目標(biāo)函數(shù)與約束條件: max=@sum(products(i):interest(i)*volume(i)); @for(materials(j):@sum(products(i):x(i,j)*volume(i))<=capacity(j)); volume(2)<=5;

最終,我們只需要將這幾部分組合起來即可。

36/77LINGO實戰(zhàn)——線性規(guī)劃 model: sets: products/desks,tables,chairs/:interest,volume; materials/a..c/:capacity; links(products,materials):x; endsets data: interest=60,30,20; capacity=48,20,8; x=8,4,2 6,2,1.5 1,1.5,0.5; enddata max=@sum(products(i):interest(i)*volume(i)); @for(materials(j):@sum(products(i):x(i,j)*volume(i))<=capacity(j)); volume(2)<=5; end37/77LINGO實戰(zhàn)——線性規(guī)劃Objectivevalue:280.0000Totalsolveriterations:2 Variable ValueReducedCost VOLUME(DESKS)2.0000000.000000

VOLUME(TABLES)0.0000005.000000

VOLUME(CHAIRS)8.0000000.000000

RowSlackorSurplusDualPrice

1280.00001.000000

224.000000.000000

30.00000010.00000

40.00000010.00000

55.0000000.000000“Globaloptimalsolutionfoundatiteration:2”表示2次迭代后得到全局最優(yōu)解。“Objectivevalue:280.0000”表示最優(yōu)目標(biāo)值為280。38/77LINGO實戰(zhàn)——線性規(guī)劃

“ReducedCost”列出最優(yōu)單純形表中判別數(shù)所在行變量系數(shù),表示當(dāng)變量有微小變動時,目標(biāo)函數(shù)改變率。其中基變量reducedcost值應(yīng)為0,對于非基變量

Xj,對應(yīng)

reducedcost值表示當(dāng)某個變量Xj增加一個單位時目標(biāo)函數(shù)降低量(max型問題)。本例中:變量tables對應(yīng)reducedcost值為5,表示當(dāng)非基變量tables值從0變?yōu)?/p>

1時(此時假定其它非基變量保持不變,但為了滿足約束條件,基變量顯然會發(fā)生改變),最優(yōu)目標(biāo)函數(shù)值

=280-5=275。

“DUALPRICE”(對偶價格)表示當(dāng)對應(yīng)約束有微小變動時,目標(biāo)函數(shù)改變率。輸出結(jié)果中對應(yīng)于每一個約束有一個對偶價格。若其數(shù)值為p,表示對應(yīng)約束中不等式右端項若增加1個單位,目標(biāo)函數(shù)將增加p個單位(max型問題)。顯然,假如在最優(yōu)解處約束恰好取等號(也就是“緊約束”,也稱為有效約束或起作用約束),對偶價格值才可能不是0。本例中:第3、4行是緊約束,對應(yīng)對偶價格值為10,表示當(dāng)緊約束

3)4DESKS+2TABLES+1.5CHAIRS<=20

變?yōu)?/p>

3)4DESKS+2TABLES+1.5CHAIRS<=21

時,目標(biāo)函數(shù)值

=280+10=290。對第4行也類似。

對于非緊約束(如本例中第2、5行是非緊約束),DUALPRICE值為0,表示對應(yīng)約束中不等式右端項微小擾動不影響目標(biāo)函數(shù)。有時,經(jīng)過分析DUALPRICE,也可對產(chǎn)生不可行問題原因有所了解。39/77LINGO實戰(zhàn)——靈敏度分析

下面我們來做靈敏度分析:

首先,我們要開啟靈敏度分析,即將“GeneralSolver”選項卡中“DualComputation”下拉項修改為“Prices&Ranges”。

然后,我們點“Solve”運行程序,運行完之后,回到模型界面,點擊“l(fā)ingo”菜單下“range”選項即可得到結(jié)果。

結(jié)果顯示以下:

Rangesinwhichthebasisisunchanged:

ObjectiveCoefficientRanges

CurrentAllowableAllowable

Variable CoefficientIncreaseDecrease

VOLUME(DESKS)60.0000020.000004.000000

VOLUME(TABLES)30.000005.000000INFINITY

VOLUME(CHAIRS)20.000002.5000005.00000040/77LINGO實戰(zhàn)——靈敏度分析

RighthandSideRanges

RowCurrentAllowableAllowable

RHSIncreaseDecrease

248.00000INFINITY24.00000

320.000004.0000004.000000

48.0000002.0000001.333333

55.000000INFINITY5.00000041/77LINGO實戰(zhàn)——靈敏度分析

目標(biāo)函數(shù)中DESKS變量原來費用系數(shù)為60,允許增加(AllowableIncrease)=4、允許降低(AllowableDecrease)=2,說明當(dāng)它在[60-4,60+20]=[56,80]范圍改變時,最優(yōu)基保持不變。對TABLES、CHAIRS變量,能夠類似解釋。因為此時約束沒有改變(只是目標(biāo)函數(shù)中某個費用系數(shù)發(fā)生改變),所以最優(yōu)基保持不變意思也就是最優(yōu)解不變(當(dāng)然,因為目標(biāo)函數(shù)中費用系數(shù)發(fā)生了改變,所以最優(yōu)值會改變)。

第2行約束中右端項(RightHandSide,簡寫為RHS)原來為48,當(dāng)它在[48-24,48+∞]=[24,∞]范圍改變時,最優(yōu)基保持不變。第3、4、5行能夠類似解釋。不過因為此時約束發(fā)生改變,最優(yōu)基即使不變,最優(yōu)解、最優(yōu)值也會發(fā)生改變。

靈敏性分析結(jié)果表示是最優(yōu)基保持不變系數(shù)范圍。由此,也能夠深入確定當(dāng)目標(biāo)函數(shù)費用系數(shù)和約束右端項發(fā)生小改變時,最優(yōu)基和最優(yōu)解、最優(yōu)值怎樣改變。下面我們經(jīng)過求解一個實際問題來進(jìn)行說明。42/77LINGO實戰(zhàn)——靈敏度分析

一奶制品加工廠用牛奶生產(chǎn)A1,A2兩種奶制品,1桶牛奶能夠在甲車間用12小時加工成3千克A1,或者在乙車間用8小時加工成4千克A2。依據(jù)市場需求,生產(chǎn)A1,A2全部能售出,且每千克A1贏利24元,每千克A2贏利16元?,F(xiàn)在加工廠天天能得到50桶牛奶供給,天天正式工人總勞動時間480小時,而且甲車間天天至多能加工100千克A1,乙車間加工能力沒有限制。試為該廠制訂一個生產(chǎn)計劃,使天天贏利最大,并深入討論以下3個附加問題:

1)若用35元能夠買到1桶牛奶,應(yīng)否作這項投資?若投資,天天最多購置多少桶牛奶?

2)若能夠聘用暫時工人以增加勞動時間,付給暫時工人工資最多是每小時幾元?

3)因為市場需求改變,每千克A1贏利增加到30元,應(yīng)否改變生產(chǎn)計劃?

模型很簡單,設(shè)生產(chǎn)A1數(shù)量為x1,生產(chǎn)A2數(shù)量為x2,代碼以下:

max=72*x1+64*x2; x1+x2<=50; 12*x1+8*x2<=480; 3*x1<=100;43/77LINGO實戰(zhàn)——靈敏度分析求解這個模型并做靈敏性分析,結(jié)果以下。Globaloptimalsolutionfoundatiteration:0Objectivevalue:3360.000

VariableValueReducedCostX120.000000.000000X230.000000.000000RowSlackorSurplusDualPrice13360.0001.00000020.00000048.0000030.0000002.000000440.000000.00000044/77LINGO實戰(zhàn)——靈敏度分析 Rangesinwhichthebasisisunchanged:ObjectiveCoefficientRangesCurrentAllowableAllowable VariableCoefficientIncreaseDecreaseX172.0000024.000008.000000X264.000008.00000016.00000RighthandSideRangesRowCurrentAllowableAllowableRHSIncreaseDecrease250.0000010.000006.6666673480.000053.3333380.00000

4100.0000INFINITY40.0000045/77LINGO實戰(zhàn)——靈敏度分析

目標(biāo)函數(shù)能夠看作“效益”,成為緊約束“資源”一旦增加,“效益”必定跟著增加。輸出中DUALPRICES給出這3種資源在最優(yōu)解下“資源”增加1個單位時“效益”增量:原料增加1個單位(1桶牛奶)時利潤增加48(元),勞動時間增加1個單位(1小時)時利潤增加2(元),而增加非緊約束車間甲能力顯然不會使利潤增加。這里,“效益”增量能夠看作“資源”潛在價值,經(jīng)濟(jì)學(xué)上稱為影子價格,即1桶牛奶影子價格為48元,1小時勞動影子價格為2元,車間甲影子價格為零。讀者能夠用直接求解方法驗證上面結(jié)論,即將輸入文件中原料約束milk)右端50改為51,看看得到最優(yōu)值(利潤)是否恰好增加48(元)。

用影子價格概念很輕易回答附加問題1):用35元能夠買到1桶牛奶,低于1桶牛奶影子價格48,當(dāng)然應(yīng)該作這項投資。

回答附加問題2):聘用暫時工人以增加勞動時間,付給工資低于勞動時間影子價格才能夠增加利潤,所以工資最多是每小時2元。

目標(biāo)函數(shù)系數(shù)發(fā)生改變時(假定約束條件不變),最優(yōu)解和最優(yōu)值會改變嗎?這個問題不能簡單地回答。上面輸出給出了最優(yōu)基不變條件下目標(biāo)函數(shù)系數(shù)允許改變范圍:x1系數(shù)為(72-8,72+24)=(64,96);x2系數(shù)為(64-16,64+8)=(48,72)。注意:x1系數(shù)允許范圍需要x2系數(shù)64不變,反之亦然。因為目標(biāo)函數(shù)費用系數(shù)改變并不影響約束條件,所以此時最優(yōu)基不變能夠確保最優(yōu)解也不變,但最優(yōu)值改變。

用這個結(jié)果很輕易回答附加問題3):若每千克A1贏利增加到30元,則x1系數(shù)變?yōu)?0×3=90,在允許范圍內(nèi),所以不應(yīng)改變生產(chǎn)計劃,但最優(yōu)值變?yōu)?0×20+64×30=3720。

46/77LINGO實戰(zhàn)——靈敏度分析

下面對“資源”影子價格作深入分析。影子價格作用(即在最優(yōu)解下“資源”增加1個單位時“效益”增量)是有限制。每增加1桶牛奶利潤增加48元(影子價格),不過,上

面輸出CURRENTRHSALLOWABLEINCREASE和

ALLOWABLEDECREASE給出了影子價格有意義條件下約束右端限制范圍:

milk)原料最多增加10(桶牛奶),time)勞動時間最多增加53(小時)。

現(xiàn)在能夠回答附加問題1)第2問:即使應(yīng)該同意用35元買1桶牛奶投資,但天天最多購置10桶牛奶。順便地說,能夠用低于每小時2元工資聘用暫時工人以增加勞動時間,但最多增加53.3333小時。

需要注意是:靈敏性分析給出只是最優(yōu)基保持不變充分條件,而不一定是必要條件。比如對于上面問題,“原料最多增加10(桶牛奶)”含義只能是“原料增加10(桶牛奶)”時最優(yōu)基保持不變,所以影子價格有意義,即利潤增加大于牛奶投資。反過來,原料增加超出10(桶牛奶),影子價格是否一定沒有意義?最優(yōu)基是否一定改變?普通來說,這是不能從靈敏性分析匯報中直接得到。此時,應(yīng)該重新用新數(shù)據(jù)求解規(guī)劃模型,才能做出判斷。所以,從正常了解角度來看,我們上面回答“原料最多增加10(桶牛奶)”并不是完全科學(xué)。47/77LINGO實戰(zhàn)——整數(shù)規(guī)劃有四種資源被用于生產(chǎn)三種產(chǎn)品,資源量、產(chǎn)品單件可變費用、單件售價、資源單耗量及組織三種商品生產(chǎn)固定費用見下表。現(xiàn)要求制訂一個生產(chǎn)計劃,使總收益最大。產(chǎn)品IIIIII資源量A248500B234300C123100D357700單件可變費用4612固定費用100150200單件售價71020單耗量資源48/77LINGO實戰(zhàn)——整數(shù)規(guī)劃49/77LINGO實戰(zhàn)——整數(shù)規(guī)劃50/77LINGO實戰(zhàn)——整數(shù)規(guī)劃51/77LINGO實戰(zhàn)——整數(shù)規(guī)劃下面是LINGO程序。MODEL:DATA:M=150;ENDDATAmax=3*x1+4*x2+8*x3-100*y1-150*y2-200*y3;!目標(biāo)函數(shù);2*x1+4*x2+8*x3<=500;2*x1+3*x2+4*x3<=300;x1+2*x2+3*x3<=100;3*x1+5*x2+7*x3<=700;x1<=M*y1;x2<=M*y2;x3<=M*y3;@GIN(x1);@GIN(x2);@GIN(x3);!指定產(chǎn)品件數(shù)為整數(shù);@BIN(y1);@BIN(y2);@BIN(y3);!指定0-1變量;end得到解為x1=100,x2=0,x3=0,y1=1,y2=0,y3=0。最大值為Z=200元。52/77LINGO——整數(shù)規(guī)劃

企業(yè)在各地有4項業(yè)務(wù),選定了4位業(yè)務(wù)員去處理。因為業(yè)務(wù)能力、經(jīng)驗和其它情況不一樣,4業(yè)務(wù)員去處理4項業(yè)務(wù)費用(單位:元)各不相同,見下表:業(yè)務(wù)業(yè)務(wù)員1234111008001000700260050030080034008001000900411001000500700應(yīng)該怎樣分配任務(wù),才能使總費用最???53/77LINGO實戰(zhàn)——整數(shù)規(guī)劃54/77LINGO實戰(zhàn)——整數(shù)規(guī)劃LINGO程序以下:MODEL:SETS:person/1..4/;task/1..4/;assign(person,task):a,x;ENDSETSDATA:a=1100,800,1000,700,600,500,300,800,400,800,1000,900,1100,1000,500,700;ENDDATAmin=@sum(assign:a*x);@for(person(i):@sum(task(j):x(i,j))=1);@for(task(j):@sum(person(i):x(i,j))=1);@for(assign(i,j):@bin(x(i,j)));END55/77LINGO實戰(zhàn)——整數(shù)規(guī)劃得到結(jié)果以下:x(1,1)=0,x(1,2)=0,x(1,3)=0,x(1,4)=1;x(2,1)=0,x(2,2)=1,x(2,3)=0,x(2,4)=0;x(3,1)=1,x(3,2)=0,x(3,3)=0,x(3,4)=0;x(4,1)=0,x(4,2)=0,x(4,3)=1,x(4,4)=0;最小費用為2100元。即第1個業(yè)余員做第4項業(yè)務(wù),第2個業(yè)余員做第2項業(yè)務(wù),即第3個業(yè)余員做第1項業(yè)務(wù),第4業(yè)余員做第3項業(yè)務(wù)??傎M用到達(dá)最小,為2100元。56/77LINGO實戰(zhàn)——TSP問題設(shè)有一個售貨員從10個城市中某一個城市出發(fā),去其它9個城市推銷產(chǎn)品。10個城市相互距離以下表。要求每個城市抵達(dá)一次僅一次后,回到原出發(fā)城市。問他應(yīng)怎樣選擇旅行路線,使總旅程最短。城市123456789101074586121311182703109145141717343059102182712451050149109231658991407872019661410970135251371252110813023211881314897523018129111727232025211801610181712161913181216057/77LINGO實戰(zhàn)——TSP問題58/77LINGO實戰(zhàn)——TSP問題LINGO程序以下:!TSPquesion;MODEL:SETS:city/1..10/;link(city,city)|&1#GT#&2:d,s;ENDSETSDATA:d=7435105899146141097125211081313148975231117272320252118181712161913181216;

59/77LINGO實戰(zhàn)——TSP問題ENDDATAMIN=@SUM(link:d*s);@SUM(city(j)|j#GT#1:S(j,1))=2;!與第1個城市相連有兩個城市;!與第i個城市相連有兩個城市;@FOR(city(i)|i#GT#1:@SUM(city(j)|j#GT#i:s(j,i))+@SUM(city(k)|k#LT#i:s(i,k))=2);@FOR(link:@BIN(s));得到結(jié)果以下:

S(3,2)=1,S(4,1)=1,S(4,3)=1,S(6,5)=1,S(7,2)=1,S(7,5)=1,S(8,6)=1,S(9,1)=1,S(10,8)=1,S(10,9)=1。其它全為0。

其最短路線為1—4—3—2—7—5—6—8—10—9—1,最短距離為77公里。60/77LINGO實戰(zhàn)——非線性規(guī)劃使用LINGO軟件計算6個發(fā)點8個收點最小費用運輸問題。產(chǎn)銷單位運價以下表。

單銷地位運價產(chǎn)地B1B2B3B4B5B6B7B8產(chǎn)量A16267425960A24953858255A35219743351A47673927143A52395726541A65522814352銷量3537223241324338

61/77LINGO實戰(zhàn)——非線性規(guī)劃Sets部分:SETS:

WAREHOUSES/WH1..WH6/:CAPACITY;

VENDORS/V1..V8/:DEMAND;

LINKS(WAREHOUSES,VENDORS):COST,VOLUME;ENDSETSData部分:DATA:

CAPACITY=605551434152;

DEMAND=3537223241324338;

COST=62674259

49538582

52197433

76739271

23957265

55228143;ENDDATA

62/77LINGO實戰(zhàn)——非線性規(guī)劃目標(biāo)函數(shù): MinimizeΣijCOSTij?VOLUMEij翻譯成lingo語言即為:MIN=@SUM(LINKS(I,J):COST(I,J)*VOLUME(I,J));約束條件:

Σi

VOLUMEij=DEMANDj,foralljinVENDORS

翻譯成lingo語言即為:@FOR(VENDORS(J):@SUM(WAREHOUSES(I):VOLUME(I,J))=DEMAND(J));

ΣjVOLUMEij<=CAPi,foralliinWAREHOUSES翻譯成lingo語言即為:@FOR(WAREHOUSES(I):@SUM(VENDORS(J):VOLUME(I,J))<=CAPACITY(I));63/77LINGO實戰(zhàn)——非線性規(guī)劃MODEL:TITLEWIDGETS;!A6Warehouse8VendorTransportationProblem;SETS:WAREHOUSES/WH1..WH6/:CAPACITY;VENDORS/V1..V8/:DEMAND;LINKS(WAREHOUSES,VENDORS):COST,VOLUME;ENDSETS!Hereisthedata;DATA:!attributevalues;CAPACITY=605551434152;DEMAND=3537223241324338;COST=626742594953858252197433767392712395726555228143;ENDDATA!Theobjective;MIN=@SUM(LINKS(I,J):COST(I,J)*VOLUME(I,J));!Thedemandconstraints;@FOR(VENDORS(J):@SUM(WAREHOUSES(I):VOLUME(I,J))=DEMAND(J));!Thecapacityconstraints;@FOR(WAREHOUSES(I):@SUM(VENDORS(J):VOLUME(I,J))<=CAPACI

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論