培訓(xùn)教案——LINGO

上傳人:功*** 文檔編號:248218811 上傳時間:2024-10-22 格式:PPT 頁數(shù):77 大?。?.08MB
收藏 版權(quán)申訴 舉報 下載
培訓(xùn)教案——LINGO_第1頁
第1頁 / 共77頁
培訓(xùn)教案——LINGO_第2頁
第2頁 / 共77頁
培訓(xùn)教案——LINGO_第3頁
第3頁 / 共77頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《培訓(xùn)教案——LINGO》由會員分享,可在線閱讀,更多相關(guān)《培訓(xùn)教案——LINGO(77頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,LINGO,實用簡易教程,培訓(xùn)內(nèi)容,上午(,8,:,3011,:,30,),下午(,13,:,3016,:,30,),LINGO,基本功能介紹,利用,LINGO,求解整數(shù)規(guī)劃問題,LINGO,的常用函數(shù)定義及其分類,利用,LINGO,求解非線性規(guī)劃問題,利用,LINGO,求解線性規(guī)劃問題,在編程中對,LINGO,的調(diào)用,利用,LINGO,進(jìn)行敏感度分析,LINGO,簡介,LINGO,是一種專門用于求解數(shù)學(xué)規(guī)劃問題的軟件包。由于,LINGO,執(zhí)行速度快,易于方便地輸入、求解和分析數(shù)學(xué)規(guī)劃問題,因此在教學(xué)

2、、科研和工業(yè)界得到廣泛應(yīng)用。,LINGO,主要用于求解線性規(guī)劃、非線性規(guī)劃、二次規(guī)劃和整數(shù)規(guī)劃等問題,也可以用于求解一些線性和非線性方程組及代數(shù)方程求根等。,使用入門,界面,使用入門,菜單命令,“,File”,“Edit”,:,match parenthesis,:括號匹配,選定某括號的一邊,然后點擊此選項,程序會自動尋找與之相匹配的括號,如果未找到,會有彈窗提示。,paste function,:用來進(jìn)行函數(shù)的插入。,“,lingo”,:,solution,:主要是考察結(jié)果,可以指定某一行或者某一個項目來考察結(jié)果,有文字形式也有圖表形式。,range,:主要是用于靈敏度分析,在這里要先更改默

3、認(rèn)設(shè)置,將,price,改為,price and range,,然后才能運行,range,。,generate,:可以產(chǎn)生相對應(yīng)的程序。,debug,:用于調(diào)試程序,只能在程序出錯時才能用。,示例:,model:,sets:,number/1.6/:x;,endsets,data:,x = 5 1 3 4 6 10;,enddata,end,windows,:,command window,:生成命令窗口,用于在非,windows,系統(tǒng)下以命令的方式編寫和運行程序。,tile,:排列窗口的方式,/,橫排或豎排,cascade,:以瀑布的方式排列窗口,arrange icons,:當(dāng)窗口最小化之

4、后用來排列圖標(biāo)。,程序結(jié)構(gòu),集,LINGO,的程序一般是一“,MODEL,:”開頭,以“,end”,結(jié)束,內(nèi)容包括四部分:集部分,數(shù)據(jù)部分,初始部分,目標(biāo)函數(shù)、約束函數(shù)部分。,集部分,是,LINGO,模型的一個可選部分。在,LINGO,模型中使用集之前,必須在集部分事先定義。集部分以關(guān)鍵字“,sets:”,開始,以“,endsets”,結(jié)束。一個模型可以沒有集部分,或有一個簡單的集部分,或有多個集部分。一個集部分可以放置于模型的任何地方,但是一個集及其屬性在模型約束中被引用之前必須被定義。,程序結(jié)構(gòu),原始集,集包括原始集和派生集兩種。,定義原始集,為了定義一個原始集,必須詳細(xì)聲明:,集的名字,

5、可選,集的成員,可選,集成員的屬性,定義一個原始集,用下面的語法:,setname/member_list/:attribute_list;,注意:用“, ”,表示該部分內(nèi)容可選。,示例,1,:,model:,sets:,students/John,Linda,Tom/:age,gender;,endsets,End,示例,2,:,Model:,Sets:,Month/Jan.Dec/:temperature;,Endsets,end,程序結(jié)構(gòu),原始集,集成員列表的羅列可以有顯式羅列和隱式羅列兩種,顯示羅列如上頁所示,即將集成員全部羅列出來。,隱式羅列不必羅列出每個集成員??刹捎萌缦抡Z法:,s

6、etname/member1.memberN/: attribute_list;,這里的,member1,是集的第一個成員名,,memberN,是集的最末一個成員名。,LINGO,將自動產(chǎn)生中間的所有成員名。,LINGO,也接受一些特定的首成員名和末成員名,用于創(chuàng)建一些特殊的集。列表如下:隱式成員列表格式示例所產(chǎn)生集成員,隱式成員列表格式,示例,所產(chǎn)生的集成員,1.n,1.5,1,2,3,4,5,StringM.stringN,Card2.Card10,Card2,Card3,Card4Card10,DayM.DayN,Mon.Fri,Mon,Tue,Wen,Thu,Fri,MonthM.Mo

7、nthN,Oct.Jan,Oct,Nov,Dec,Jan,MonthYearM.MonthYearN,Oct2001.Jan2002,Oct2001,Nov2001,Dec2001,Jan2002,程序結(jié)構(gòu),原始集,也可以講集成員在數(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,注意:開頭用感嘆號(,!,),,末尾用分號(,;,)表示注釋,可跨多行。,請注意:數(shù)據(jù)部分的數(shù)據(jù)之間

8、可以用空格隔開,也可以用逗號隔開。程序默認(rèn)的數(shù)據(jù)是從索引,1,開始分配,即將“,students,,,sex,,,age”,的第一個數(shù)據(jù)分配完了之后再分配其第二個數(shù)據(jù)。,再如下例:,model:,sets:,students/John,Linda,Tom/:age,gender;,Endsets,Data:,Age,gender=10,1,11,0,12,1;,enddata,End,運行之后便可看出數(shù)據(jù)分配的結(jié)果。,程序結(jié)構(gòu),派生集,定義派生集,為了定義一個派生集,必須詳細(xì)聲明:,集的名字,父集,的名字,可選,集成員,可選,集成員的屬性,可用下面的語法定義一個派生集:,setname(par

9、ent_set_list)/member_list/:attribute_list;,setname,是集的名字。,parent_set_list,是已定義的集的列表,多個時必須用逗號隔開。,如果沒有指定成員列表,那么,LINGO,會自動創(chuàng)建父集成員的所有組合作為派生集的成員。,派生集的父集既可以是原始集,也可以是其它的派生集。,friends,Students,Harry,Green,John,8,4,Linda,9,6,Tom,6,8,示例:,model:,sets:,students/John,Linda,Tom/:age,gender;,friends/Harry,Green/;,Li

10、nks(students,friends):relationship;,Endsets,Data:,Relationship=8,4,9,6,6,8;,enddata,End,運行結(jié)果如下圖:,程序結(jié)構(gòu),派生集,稀疏集可以用顯式表示也可以用成員資格過濾器表示。,顯式表示可如下示例:,Links(students,friends)/John,Harry,Linda,Green/:relationship;,(,1,),成員資格過濾器表示可如下示例:,Links(students,friends)|,(,2,),將分別插入程序中,并修改數(shù)據(jù),可得到如下結(jié)果:,(,1,),RELATIONSHIP(

11、 JOHN, HARRY) 8.000000,RELATIONSHIP( LINDA, GREEN) 6.000000,(,2,),RELATIONSHIP( JOHN, GREEN) 8.000000,程序結(jié)構(gòu),數(shù)據(jù),數(shù)據(jù)部分以關(guān)鍵字“,data:”,開始,以關(guān)鍵字“,enddata”,結(jié)束。在這里,可以指定集成員、集的屬性。其語法如下:,object_list = value_list;,對象列,(,object_list,)包含要指定值的屬性名、要設(shè)置集成員的集名,用逗號或空格隔開。,一個對象列中至多有一個集名,而屬性名可以有任意多。,如果對象列中有多個屬性名,那么它們的類型必須一致。如

12、果對象列中有一個集名,那么對象列中所有的屬性的類型就是這個集。,數(shù)值列,(,value_list,)包含要分配給對象列中的對象的值,用逗號或空格隔開。注意屬性值的個數(shù)必須等于集成員的個數(shù)??聪旅娴睦印?示例:,sets:,set1/A,B,C/: X,Y;,endsets,data:,X=1,2,3;,Y=4,5,6;,Enddata,數(shù)據(jù)部分也可以如此表示,其本質(zhì)是一樣的:,data:,X,Y=1 4,2 5,3 6;,enddata,程序結(jié)構(gòu),數(shù)據(jù),Data,部分也可以用來定義標(biāo)量變量,如下所示,:,data:,interest_rate = .085;,enddata,也可以同時指定多

13、個參數(shù)。,data:,interest_rate,inflation_rate = .085 .03;,enddata,在某些情況,對于模型中的某些數(shù)據(jù)并不是定值。譬如模型中有一個通貨膨脹率的參數(shù),我們想在,2%,至,6%,范圍內(nèi),對不同的值求解模型,來觀察模型的結(jié)果對通貨膨脹的依賴有多么敏感。我們把這種情況稱為,實時數(shù)據(jù)處理,(,what if analysis,)。,LINGO,有一個特征可方便地做到這件事:在本該放數(shù)的地方輸入一個問號(,?,)。如下所示:,data:,interest_rate,inflation_rate = .085 ?;,enddata,每一次求解模型時,,LIN

14、GO,都會提示為參數(shù),inflation_rate,輸入一個值。在,WINDOWS,操作系統(tǒng)下,將會接收到一個類似右上角所示的對話框:,直接輸入一個值再點擊,OK,按鈕,,LINGO,就會把輸入的值指定給,inflation_rate,,然后繼續(xù)求解模型。,程序結(jié)構(gòu),數(shù)據(jù),指定屬性為一個值,可以在數(shù)據(jù)聲明的右邊輸入一個值來把所有的成員的該屬性指定為一個值??聪旅娴睦印?數(shù)據(jù)部分的未知數(shù)值,有時只想為一個集的部分成員的某個屬性指定值,而讓其余成員的該屬性保持未知,以便讓,LINGO,去求出它們的最優(yōu)值。在數(shù)據(jù)聲明中輸入兩個相連的逗號表示該位置對應(yīng)的集成員的屬性值未知。兩個逗號間可以有空格。,屬

15、性,capacity,的第,2,個和第,3,個值分別為,34,和,20,,其余的未知。,示例,1,:,sets:,days /MO,TU,WE,TH,FR,SA,SU/:needs,cost;,endsets,data:,needs cost = 20 100;,Enddata,示例,2,:,sets:,years/1.5/: capacity;,endsets,data:,capacity = ,34,20,;,Enddata,屬性,capacity,的第,2,個和第,3,個值分別為,34,和,20,,其余的未知。,程序結(jié)構(gòu),初始部分,初始部分是,LINGO,提供的另一個可選部分。在初始部分

16、中,可以輸入,初始聲明,(,initialization statement,),和數(shù)據(jù)部分中的數(shù)據(jù)聲明相同。對實際問題的建模時,初始部分并不起到描述模型的作用,在初始部分輸入的值僅被,LINGO,求解器當(dāng)作初始點來用,并且,僅僅對非線性模型有用。,和數(shù)據(jù)部分指定變量的值不同,,LINGO,求解器可以自由改變初始部分初始化的變量的值。,一個初始部分以“,init:”,開始,以“,endinit”,結(jié)束。初始部分的初始聲明規(guī)則和數(shù)據(jù)部分的數(shù)據(jù)聲明規(guī)則相同。也就是說,我們可以在聲明的左邊同時初始化多個集屬性,可以把集屬性初始化為一個值,可以用問號實現(xiàn)實時數(shù)據(jù)處理,還可以用逗號指定未知數(shù)值。,示例:

17、,init:,X, Y = 0, .001;,endinit,Y=log(X);,X+Y=1;,注意:好的初始點會減少模型的求解時間。如左例中,若將,x,的初始值改為,0.9,,則可以明顯減少迭代次數(shù)。,程序結(jié)構(gòu),基本運算符,一、基本運算符,1,、算術(shù)運算符,算術(shù)運算符是針對數(shù)值進(jìn)行操作的。,LINGO,提供了,5,種二元運算符:,乘方,乘,除,加,減,LINGO,唯一的一元算術(shù)運算符是取反函數(shù)“,”,。,這些運算符的優(yōu)先級由高到底為:,高,(取反),低,運算符的運算次序為從左到右按優(yōu)先級高低來執(zhí)行。運算的次序可以用圓括號“()”來改變。,程序結(jié)構(gòu),邏輯運算符,2,、邏輯運算符,在,LINGO

18、,中,邏輯運算符主要用于集循環(huán)函數(shù)的條件表達(dá)式中,來控制在函數(shù)中哪些集成員被包含,哪些被排斥。在創(chuàng)建稀疏集時用在成員資格過濾器中。,LINGO,具有種邏輯運算符:,#not#,否定該操作數(shù)的邏輯值,,not,是一個一元運算符,#eq#,若兩個運算數(shù)相等,則為,true,;否則為,flase,#ne#,若兩個運算符不相等,則為,true,;否則為,flase,#gt#,若左邊的運算符嚴(yán)格大于右邊的運算符,則為,true,;否則為,flase,#ge#,若左邊的運算符大于或等于右邊的運算符,則為,true,;否則為,flase,#lt#,若左邊的運算符嚴(yán)格小于右邊的運算符,則為,true,;否則為

19、,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#,程序結(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,的余弦值,ta

20、n(x),返回,x,的正切值,exp(x),返回常數(shù),e,的,x,次方,log(x),返回,x,的自然對數(shù),lgm(x),返回,x,的,gamma,函數(shù)的自然對數(shù),sign(x),如果,x=0,時,返回不超過,x,的最大整數(shù);當(dāng),x0,時,返回不低于,x,的最小整數(shù)。,smax(x1,x2,xn),返回,x1,,,x2,,,,,xn,中的最大值,smin(x1,x2,xn),返回,x1,,,x2,,,,,xn,中的最小值,程序結(jié)構(gòu),應(yīng)用實例,應(yīng)用示例:,給定一個直角三角形,求包含該三角形的最小正方形。,解:如圖所示。,求最小的正方形就相當(dāng)于求如下的最優(yōu)化問題:,LINGO,代碼如下:,mode

21、l:,sets:,object/1.3/: f;,endsets,data:,a, b = 3, 4; !,兩個直角邊長,修改很方便,;,enddata,f(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);,end,A,B,C,D,E,a,b,x,程序結(jié)構(gòu),概率函數(shù),三、概率函數(shù),1,pbn(p,n,x),:二項分布的累積分布函數(shù)。當(dāng),n,和(或),x,不是整數(shù)時,用線性插值法進(jìn)行計算。,2,pcx(n,x),:自由度為,n,

22、的,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,和,d,的,F,分布的累積分布函數(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

23、,phg(pop,g,n,x),:超幾何(,Hypergeometric,)分布的累積分布函數(shù)。,pop,表示產(chǎn)品總數(shù),,g,是正品數(shù)。從所有產(chǎn)品中任意取出,n,(,npop,)件。,pop,,,g,,,n,和,x,都可以是非整數(shù),這時采用線性插值進(jìn)行計算。,8,ppl(a,x)Poisson,:分布的線性損失函數(shù),即返回,max(0,z-x),的期望值,其中隨機變量,z,服從均值為,a,的,Poisson,分布。,9,pps(a,x),:均值為,a,的,Poisson,分布的累積分布函數(shù)。當(dāng),x,不是整數(shù)時,采用線性插值進(jìn)行計算。,10,psl(x),:單位正態(tài)線性損失函數(shù),即返回,max(

24、0,z-x),的期望值,其中隨機變量,z,服從標(biāo)準(zhǔn)正態(tài)分布。,11,psn(x),:標(biāo)準(zhǔn)正態(tài)分布的累積分布函數(shù),12,ptd(n,x),:自由度為,n,的,t,分布的累積分布函數(shù)。,程序結(jié)構(gòu),qrand,13,qrand(seed),:產(chǎn)生服從,(0,1),區(qū)間的擬隨機數(shù)。,qrand,只允許在模型的數(shù)據(jù)部分使用,它將用擬隨機數(shù)填滿集屬性。通常,聲明一個,mn,的二維表,,m,表示運行實驗的次數(shù),,n,表示每次實驗所需的隨機數(shù)的個數(shù)。在行內(nèi),隨機數(shù)是獨立分布的;在行間,隨機數(shù)是非常均勻的。這些隨機數(shù)是用“分層取樣”的方法產(chǎn)生的。,model:,data:,M=4; N=2; seed=1234

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

26、布和,t,分布的隨機數(shù),;,sets:,series/1.15/: u, znorm, zt;,endsets,!,第一個均勻分布隨機數(shù)是任意的,;,u( 1) = rand( .1234);,!,產(chǎn)生其余的均勻分布的隨機數(shù),;,for(series( I)| I #GT# 1:u( I) = rand( u( I - 1) );,for( series( I):,!,正態(tài)分布隨機數(shù),;,psn( znorm( I) = u( I);,!,和自由度為,2,的,t,分布隨機數(shù),;,ptd( 2, zt( I) = u( I);,!ZNORM,和,ZT,可以是負(fù)數(shù),;,free( znorm( I

27、); free( zt( I); );,end,程序結(jié)構(gòu),變量界定函數(shù),四、變量界定函數(shù),變量界定函數(shù)實現(xiàn)對變量取值范圍的附加限制,共,4,種:,bin(x),:限制,x,為,0,或,1,bnd(L,x,U),:限制,LxU,free(x),:取消對變量,x,的默認(rèn)下界為,0,的限制,即,x,可以取任意實數(shù),gin(x),:限制,x,為整數(shù),在默認(rèn)情況下,,LINGO,規(guī)定變量是非負(fù)的,也就是說下界為,0,,上界為,+,。,free,取消了默認(rèn)的下界為,0,的限制,使變量也可以取負(fù)值。,bnd,用于設(shè)定一個變量的上下界,它也可以取消默認(rèn)下界為,0,的約束。,應(yīng)用示例:,(,1,),min=x1

28、+x2;,x1-x2=2;,x1+2*x20,。,(,4,)若將程序修改為:,max=x1+x2;,x1-x2=2;,x1+2*x2= required(J);,end,程序結(jié)構(gòu),應(yīng)用實例,計算的部分結(jié)果為,Global optimal solution found at iteration: 0,Objective value: 22.00000,Variable Value Reduced Cost,REQUIRED( MON) 20.00000 0.000000,REQUIRED( TUE) 16.00000 0.000000,REQUIRED( WED) 13.00000 0.0000

29、00,REQUIRED( THU) 16.00000 0.000000,REQUIRED( FRI) 19.00000 0.000000,REQUIRED( SAT) 14.00000 0.000000,REQUIRED( SUN) 12.00000 0.000000,START( MON) 8.000000 0.000000,START( TUE) 2.000000 0.000000,START( WED) 0.000000 0.3333333,START( THU) 6.000000 0.000000,START( FRI) 3.000000 0.000000,START( SAT) 3.

30、000000 0.000000,START( SUN) 0.000000 0.000000,從而解決方案是:每周最少需要,22,個職員,周一安排,8,人,周二安排,2,人,周三無需安排人,周四安排,6,人,周五和周六都安排,3,人,周日無需安排人。,程序結(jié)構(gòu),集循環(huán)函數(shù),3. prod,函數(shù):用于獲取集中所有元素的乘積。,示例:,MODEL:,SETS:,COMPONENTS: P;,ENDSETS,DATA:,P = .95 .99 .98;,ENDDATA,P_FAIL = 1 - PROD( COMPONENTS( I): P( I);,END,本例中,P_FAIL,表示的是一個串聯(lián)系統(tǒng)

31、失效的概率。,程序結(jié)構(gòu),輔助函數(shù),七、輔助函數(shù),1,if(logical_condition,true_result,false_result),if,函數(shù)將評價一個邏輯表達(dá)式,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;,end,2,warn(text,logical_condition),如果邏輯條件,

32、logical_condition,為真,則產(chǎn)生一個內(nèi)容為,text,的信息框。,示例,2,:,model:,x=1;,warn(x,是正數(shù),x #gt# 0);,end,簡單的命令行命令及應(yīng)用,命令行命令一般用于非,windows,系統(tǒng)的計算機中,我們可以通過菜單行中找到“,command window,”或者按組合鍵“,CTRL+1,” 來啟動命令窗口。在這里僅僅對簡單的命令作一下介紹。,cat,顯示所有命令類型;,com,按類型顯示所有命令;,model,開始以命令行方式輸入一個模型;,go,求解當(dāng)前模型;,solu,顯示當(dāng)前模型的求解結(jié)果;,quit,退出,lingo,系統(tǒng)。,LING

33、O,實戰(zhàn),線性規(guī)劃,某家具公司制造書桌、餐桌和椅子,所用的資源有三種:木料、木工和漆工。生產(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,單位,LINGO,實戰(zhàn),線性規(guī)劃,分析:這是一個典型的線性規(guī)劃問題。我們用,DESKS,、,TABLES,和,CHAIRS,分別表示三種產(chǎn)品的生產(chǎn)量,建立,LP,模型。,程序如下所

34、示:,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.

35、c/:capacity;,links(products,materials):x;,endsets,LINGO,實戰(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、這幾部分組合起來即可。,LINGO,實戰(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

37、):x(i,j)*volume(i)=capacity(j);,volume(2)=5;,end,LINGO,實戰(zhàn),線性規(guī)劃,Objective value: 280.0000,Total solver iterations: 2,Variable Value Reduced Cost,VOLUME( DESKS) 2.000000 0.000000,VOLUME( TABLES) 0.000000 5.000000,VOLUME( CHAIRS) 8.000000 0.000000,Row Slack or Surplus Dual Price,1 280.0000 1.000000,2 2

38、4.00000 0.000000,3 0.000000 10.00000,4 0.000000 10.00000,5 5.000000 0.000000,“,Global optimal solution found at iteration: 2,”表示,2,次迭代后得到全局最優(yōu)解。,“,Objective value:280.0000,”表示最優(yōu)目標(biāo)值為,280,。,LINGO,實戰(zhàn),線性規(guī)劃,“,Reduced Cost”,列出最優(yōu)單純形表中判別數(shù)所在行的變量的系數(shù),表示當(dāng)變量有微小變動時,目標(biāo)函數(shù)的變化率。其中基變量的,reduced cost,值應(yīng)為,0,, 對于非基變量,X,j,相

39、應(yīng)的,reduced cost,值表示當(dāng)某個變量,X,j,增加一個單位時目標(biāo)函數(shù)減少的量,( max,型問題,),。本例中:變量,tables,對應(yīng)的,reduced cost,值為,5,,表示當(dāng)非基變量,tables,的值從,0,變?yōu)?1,時(此時假定其他非基變量保持不變,但為了滿足約束條件,基變量顯然會發(fā)生變化),最優(yōu)的目標(biāo)函數(shù)值,= 280 - 5 = 275,。,“,DUAL PRICE”,(對偶價格)表示當(dāng)對應(yīng)約束有微小變動時,目標(biāo)函數(shù)的變化率。輸出結(jié)果中對應(yīng)于每一個約束有一個對偶價格。 若其數(shù)值為,p,, 表示對應(yīng)約束中不等式右端項若增加,1,個單位,目標(biāo)函數(shù)將增加,p,個單位(,

40、max,型問題)。顯然,如果在最優(yōu)解處約束正好取等號(也就是,“,緊約束,”,,也稱為有效約束或起作用約束),對偶價格值才可能不是,0,。本例中:第,3,、,4,行是緊約束,對應(yīng)的對偶價格值為,10,,表示當(dāng)緊約束,3) 4 DESKS + 2 TABLES + 1.5 CHAIRS = 20,變?yōu)?3) 4 DESKS + 2 TABLES + 1.5 CHAIRS = 21,時,目標(biāo)函數(shù)值,= 280 +10 = 290,。對第,4,行也類似。,對于非緊約束(如本例中第,2,、,5,行是非緊約束),,DUAL PRICE,的值為,0,表示對應(yīng)約束中不等式右端項的微小擾動不影響目標(biāo)函數(shù)。有時

41、,通過分析,DUAL PRICE,也可對產(chǎn)生不可行問題的原因有所了解。,LINGO,實戰(zhàn),靈敏度分析,下面我們來做靈敏度分析:,首先,我們要啟動靈敏度分析,即將“,General Solver,”選項卡中的“,Dual Computation,”下拉項修改為“,Prices & Ranges,”。,然后,我們點“,Solve,”運行程序,運行完之后,回到模型界面,點擊“,lingo,”菜單下的“,range,”選項即可得到結(jié)果。,結(jié)果顯示如下:,Ranges in which the basis is unchanged:,Objective Coefficient Ranges,Curren

42、t Allowable Allowable,Variable Coefficient Increase Decrease,VOLUME( DESKS) 60.00000 20.00000 4.000000,VOLUME( TABLES) 30.00000 5.000000 INFINITY,VOLUME( CHAIRS) 20.00000 2.500000 5.000000,LINGO,實戰(zhàn),靈敏度分析,Righthand Side Ranges,Row Current Allowable Allowable,RHS Increase Decrease,2 48.00000 INFINITY

43、24.00000,3 20.00000 4.000000 4.000000,4 8.000000 2.000000 1.333333,5 5.000000 INFINITY 5.000000,LINGO,實戰(zhàn),靈敏度分析,目標(biāo)函數(shù)中,DESKS,變量原來的費用系數(shù)為,60,,允許增加(,Allowable Increase,),=4,、允許減少(,Allowable Decrease,),=2,,說明當(dāng)它在,60-4,,,60+20 = 56,,,80,范圍變化時,最優(yōu)基保持不變。對,TABLES,、,CHAIRS,變量,可以類似解釋。由于此時約束沒有變化(只是目標(biāo)函數(shù)中某個費用系數(shù)發(fā)生變化)

44、,所以最優(yōu)基保持不變的意思也就是最優(yōu)解不變(當(dāng)然,由于目標(biāo)函數(shù)中費用系數(shù)發(fā)生了變化,所以最優(yōu)值會變化)。,第,2,行約束中右端項(,Right Hand Side,,簡寫為,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ù)范圍。由此,也可以進(jìn)一步確定當(dāng)目標(biāo)函數(shù)的費用系數(shù)和約束右端項發(fā)生小的變化時,最優(yōu)基和最優(yōu)解、最優(yōu)值如何變化。下面我們通過求解一個實際問題來進(jìn)行說明。,LINGO,實戰(zhàn),靈敏

45、度分析,一奶制品加工廠用牛奶生產(chǎn),A,1,A,2,兩種奶制品,,1,桶牛奶可以在甲車間用,12,小時加工成,3,公斤,A,1,,或者在乙車間用,8,小時加工成,4,公斤,A,2,。根據(jù)市場需求,生產(chǎn)的,A,1,A,2,全部能售出,且每公斤,A,1,獲利,24,元,每公斤,A,2,獲利,16,元。現(xiàn)在加工廠每天能得到,50,桶牛奶的供應(yīng),每天正式工人總的勞動時間,480,小時,并且甲車間每天至多能加工,100,公斤,A,1,,乙車間的加工能力沒有限制。試為該廠制訂一個生產(chǎn)計劃,使每天獲利最大,并進(jìn)一步討論以下,3,個附加問題:,1,) 若用,35,元可以買到,1,桶牛奶,應(yīng)否作這項投資?若投資,

46、每天最多購買多少桶牛奶?,2,) 若可以聘用臨時工人以增加勞動時間,付給臨時工人的工資最多是每小時幾元?,3,) 由于市場需求變化,每公斤,A,1,的獲利增加到,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;,LINGO,實戰(zhàn),靈敏度分析,求解這個模型并做靈敏性分析,結(jié)果如下。,Global optimal solution found at iteration: 0,Objective value: 3360.000,V

47、ariable Value Reduced Cost,X1 20.00000 0.000000,X2 30.00000 0.000000,Row Slack or Surplus Dual Price,1 3360.000 1.000000,2 0.000000 48.00000,3 0.000000 2.000000,4 40.00000 0.000000,LINGO,實戰(zhàn),靈敏度分析,Ranges in which the basis is unchanged:,Objective Coefficient Ranges,Current Allowable Allowable,Variabl

48、e Coefficient Increase Decrease,X1 72.00000 24.00000 8.000000,X2 64.00000 8.000000 16.00000,Righthand Side Ranges,Row Current Allowable Allowable,RHS Increase Decrease,2 50.00000 10.00000 6.666667,3 480.0000 53.33333 80.00000,4 100.0000 INFINITY 40.00000,LINGO,實戰(zhàn),靈敏度分析,目標(biāo)函數(shù)可以看作,“,效益,”,,成為緊約束的,“,資源,”,一旦增加,,“,效益,”,必然跟著增長。輸出中,DUAL PRICES,給出這,3,種資源在最優(yōu)解下,“,資源,”,增加,1,個單位時,“,效益,”,的增量:原料增加,1,個單位(,1,桶牛奶)時利潤增長,48,(元),勞動時間增加,1,個單位(,1,小時)時利潤增長,2,(

展開閱讀全文
溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔

相關(guān)搜索

關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!