培訓(xùn)教案——LINGO_第1頁(yè)
培訓(xùn)教案——LINGO_第2頁(yè)
培訓(xùn)教案——LINGO_第3頁(yè)
培訓(xùn)教案——LINGO_第4頁(yè)
培訓(xùn)教案——LINGO_第5頁(yè)
已閱讀5頁(yè),還剩72頁(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、L/O/G/O整理課件1LINGO實(shí)用簡(jiǎn)易教程實(shí)用簡(jiǎn)易教程整理課件2培訓(xùn)內(nèi)容培訓(xùn)內(nèi)容上午(上午(8:3011:30)下午(下午(13:3016:30)LINGO基本功能介紹利用LINGO求解整數(shù)規(guī)劃問(wèn)題LINGO的常用函數(shù)定義及其分類(lèi)利用LINGO求解非線性規(guī)劃問(wèn)題利用LINGO求解線性規(guī)劃問(wèn)題在編程中對(duì)LINGO的調(diào)用利用LINGO進(jìn)行敏感度分析整理課件3LINGOLINGO簡(jiǎn)介簡(jiǎn)介 LINGO是一種專(zhuān)門(mén)用于求解數(shù)學(xué)規(guī)劃問(wèn)題的軟件包。由于LINGO執(zhí)行速度快,易于方便地輸入、求解和分析數(shù)學(xué)規(guī)劃問(wèn)題,因此在教學(xué)、科研和工業(yè)界得到廣泛應(yīng)用。 LINGO主要用于求解線性規(guī)劃、非線性規(guī)劃、二次規(guī)劃和

2、整數(shù)規(guī)劃等問(wèn)題,也可以用于求解一些線性和非線性方程組及代數(shù)方程求根等。整理課件4使用入門(mén)使用入門(mén)界面界面整理課件5使用入門(mén)使用入門(mén)菜單命令菜單命令“File”“Edit”:match parenthesis:括號(hào)匹配,選定某括號(hào)的一邊,然后點(diǎn)擊此選項(xiàng),程序會(huì)自動(dòng)尋找與之相匹配的括號(hào),如果未找到,會(huì)有彈窗提示。paste function:用來(lái)進(jìn)行函數(shù)的插入。“l(fā)ingo”:solution:主要是考察結(jié)果,可以指定某一行或者某一個(gè)項(xiàng)目來(lái)考察結(jié)果,有文字形式也有圖表形式。range:主要是用于靈敏度分析,在這里要先更改默認(rèn)設(shè)置,將price改為price and range,然后才能運(yùn)行rang

3、e。generate:可以產(chǎn)生相對(duì)應(yīng)的程序。debug:用于調(diào)試程序,只能在程序出錯(cuò)時(shí)才能用。示例:model:sets: number/1.6/:x;endsetsdata: x = 5 1 3 4 6 10;enddata endwindows:command window:生成命令窗口,用于在非windows系統(tǒng)下以命令的方式編寫(xiě)和運(yùn)行程序。tile:排列窗口的方式/橫排或豎排cascade:以瀑布的方式排列窗口arrange icons:當(dāng)窗口最小化之后用來(lái)排列圖標(biāo)。整理課件6程序結(jié)構(gòu)程序結(jié)構(gòu)集集 LINGO的程序一般是一“MODEL:”開(kāi)頭,以“end”結(jié)束,內(nèi)容包括四部分:集部分,

4、數(shù)據(jù)部分,初始部分,目標(biāo)函數(shù)、約束函數(shù)部分。 集部分集部分是LINGO模型的一個(gè)可選部分。在LINGO模型中使用集之前,必須在集部分事先定義。集部分以關(guān)鍵字“sets:”開(kāi)始,以“endsets”結(jié)束。一個(gè)模型可以沒(méi)有集部分,或有一個(gè)簡(jiǎn)單的集部分,或有多個(gè)集部分。一個(gè)集部分可以放置于模型的任何地方,但是一個(gè)集及其屬性在模型約束中被引用之前必須被定義。 整理課件7程序結(jié)構(gòu)程序結(jié)構(gòu)原始集原始集 集包括原始集和派生集兩集包括原始集和派生集兩種。種。 定義原始集定義原始集為了定義一個(gè)原始集,必須詳細(xì)聲明:集的名字可選,集的成員可選,集成員的屬性 定義一個(gè)原始集,用下面的語(yǔ)法: setname/memb

5、er_list/:attribute_list;注意:用“ ”表示該部分內(nèi)容可選。示例1:model:sets:students/John,Linda,Tom/:age,gender;endsetsEnd示例2:Model:Sets:Month/Jan.Dec/:temperature;Endsetsend整理課件8程序結(jié)構(gòu)程序結(jié)構(gòu)原始集原始集集成員列表的羅列可以有顯式羅列和隱式羅列兩種,顯示羅列如上頁(yè)所示,即將集成員全部羅列出來(lái)。隱式羅列不必羅列出每個(gè)集成員。可采用如下語(yǔ)法:setname/member1.memberN/: attribute_list;這里的member1是集的第一個(gè)成員

6、名,memberN是集的最末一個(gè)成員名。LINGO將自動(dòng)產(chǎn)生中間的所有成員名。LINGO也接受一些特定的首成員名和末成員名,用于創(chuàng)建一些特殊的集。列表如下:隱式成員列表格式示例所產(chǎn)生集成員隱式成員列表格式示例所產(chǎn)生的集成員1.n1.51,2,3,4,5StringM.stringNCard2.Card10Card2,Card3,Card4Card10DayM.DayNMon.FriMon,Tue,Wen,Thu,FriMonthM.MonthNOct.JanOct,Nov,Dec,JanMonthYearM.MonthYearNOct2001.Jan2002Oct2001,Nov2001,De

7、c2001,Jan2002 整理課件9程序結(jié)構(gòu)程序結(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注意:開(kāi)頭用感嘆號(hào)(!),末尾用分號(hào)(;)表示注釋?zhuān)煽缍嘈小U?qǐng)注意:數(shù)據(jù)部分的數(shù)據(jù)之間可以用空格隔開(kāi),也可以用逗號(hào)隔開(kāi)。程序默認(rèn)的數(shù)據(jù)是從索引1開(kāi)始分配,即將“students,sex,age”的第一個(gè)數(shù)據(jù)分配完了之后再分配其第二個(gè)數(shù)據(jù)。再如下例:model:sets:s

8、tudents/John,Linda,Tom/:age,gender;EndsetsData:Age,gender=10,1,11,0,12,1;enddataEnd運(yùn)行之后便可看出數(shù)據(jù)分配的結(jié)果。整理課件10程序結(jié)構(gòu)程序結(jié)構(gòu)派生集派生集定義派生集定義派生集為了定義一個(gè)派生集,必須詳細(xì)聲明:集的名字父集父集的名字可選,集成員可選,集成員的屬性可用下面的語(yǔ)法定義一個(gè)派生集:setname(parent_set_list)/member_list/:attribute_list;setname是集的名字。parent_set_list是已定義的集的列表,多個(gè)時(shí)必須用逗號(hào)隔開(kāi)。如果沒(méi)有指定成員列表,

9、那么LINGO會(huì)自動(dòng)創(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運(yùn)行結(jié)果如下圖:整理課件11程序結(jié)構(gòu)程序結(jié)構(gòu)派生集派生集稀疏集可以用顯式表示也可以用成員資格

10、過(guò)濾器表示。顯式表示可如下示例:Links(students,friends)/John,Harry,Linda,Green/:relationship;(1)成員資格過(guò)濾器表示可如下示例:Links(students,friends)|&1 #eq# 1 #and# &2 #eq# 2:relationship;(2)將分別插入程序中,并修改數(shù)據(jù),可得到如下結(jié)果:(1)RELATIONSHIP( JOHN, HARRY) 8.000000 RELATIONSHIP( LINDA, GREEN) 6.000000(2)RELATIONSHIP( JOHN, GREEN) 8.0

11、00000整理課件12程序結(jié)構(gòu)程序結(jié)構(gòu)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)部分以關(guān)鍵字“data:”開(kāi)始,以關(guān)鍵字“enddata”結(jié)束。在這里,可以指定集成員、集的屬性。其語(yǔ)法如下:object_list = value_list;對(duì)象列對(duì)象列(object_list)包含要指定值的屬性名、要設(shè)置集成員的集名,用逗號(hào)或空格隔開(kāi)。一個(gè)對(duì)象列中至多有一個(gè)集名,一個(gè)對(duì)象列中至多有一個(gè)集名,而屬性名可以有任意多。而屬性名可以有任意多。如果對(duì)象列中有多個(gè)屬性名,那么它們的類(lèi)型必須一致。如果對(duì)象列中有一個(gè)集名,那么對(duì)象列中所有的屬性的類(lèi)型就是這個(gè)集。數(shù)值列數(shù)值列(value_list)包含要分配給對(duì)象列中的對(duì)象的值,用逗號(hào)或空

12、格隔開(kāi)。注意屬性值的個(gè)數(shù)必須等于集成員的個(gè)數(shù)??聪旅娴睦?。示例:sets: set1/A,B,C/: X,Y;endsetsdata: X=1,2,3; Y=4,5,6;Enddata數(shù)據(jù)部分也可以如此表示,其本質(zhì)是一樣的:data: X,Y=1 4 2 5 3 6;enddata整理課件13程序結(jié)構(gòu)程序結(jié)構(gòu)數(shù)據(jù)數(shù)據(jù)Data部分也可以用來(lái)定義標(biāo)量變量,如下所示:data: interest_rate = .085;enddata也可以同時(shí)指定多個(gè)參數(shù)。data: interest_rate,inflation_rate = .085 .03;enddata 在某些情況,對(duì)于模型中的某些數(shù)據(jù)并

13、不是定值。譬如模型中有一個(gè)通貨膨脹率的參數(shù),我們想在2%至6%范圍內(nèi),對(duì)不同的值求解模型,來(lái)觀察模型的結(jié)果對(duì)通貨膨脹的依賴有多么敏感。我們把這種情況稱(chēng)為實(shí)時(shí)數(shù)據(jù)處理實(shí)時(shí)數(shù)據(jù)處理(what if analysis)。LINGO有一個(gè)特征可方便地做到這件事:在本該放數(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è)類(lèi)似右上角所示的對(duì)話框: 直接輸入一個(gè)值再點(diǎn)擊OK按鈕,LINGO就會(huì)把輸

14、入的值指定給inflation_rate,然后繼續(xù)求解模型。整理課件14程序結(jié)構(gòu)程序結(jié)構(gòu)數(shù)據(jù)數(shù)據(jù)指定屬性為一個(gè)值指定屬性為一個(gè)值可以在數(shù)據(jù)聲明的右邊輸入一個(gè)值來(lái)把所有的成員的該屬性指定為一個(gè)值??聪旅娴睦?。數(shù)據(jù)部分的未知數(shù)值數(shù)據(jù)部分的未知數(shù)值有時(shí)只想為一個(gè)集的部分成員的某個(gè)屬性指定值,而讓其余成員的該屬性保持未知,以便讓LINGO去求出它們的最優(yōu)值。在數(shù)據(jù)聲明中輸入兩個(gè)相連的逗號(hào)表示該位置對(duì)應(yīng)的集成員的屬性值未知。兩個(gè)逗號(hào)間可以有空格。屬性capacity的第2個(gè)和第3個(gè)值分別為34和20,其余的未知。 示例示例1:sets: days /MO,TU,WE,TH,FR,SA,SU/:need

15、s,cost;endsetsdata: needs cost = 20 100;Enddata示例示例2:sets: years/1.5/: capacity;endsetsdata: capacity = ,34,20,;Enddata屬性capacity的第2個(gè)和第3個(gè)值分別為34和20,其余的未知。整理課件15程序結(jié)構(gòu)程序結(jié)構(gòu)初始部分初始部分初始部分是LINGO提供的另一個(gè)可選部分。在初始部分中,可以輸入初始聲初始聲明明(initialization statement),和數(shù)據(jù)部分中的數(shù)據(jù)聲明相同。對(duì)實(shí)際問(wèn)題的建模時(shí),初始部分并不起到描述模型的作用,在初始部分輸入的值僅被LINGO求解

16、器當(dāng)作初始點(diǎn)來(lái)用,并且僅僅對(duì)非線性模型有用。僅僅對(duì)非線性模型有用。和數(shù)據(jù)部分指定變量的值不同,LINGO求解器可以自由改變初始部分初始化的變量的值。一個(gè)初始部分以“init:”開(kāi)始,以“endinit”結(jié)束。初始部分的初始聲明規(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, .001;endinit Y=log(X); X+Y=1;注意:好的初始點(diǎn)會(huì)減少模型的求解時(shí)間。如左例中,若將x的初始值改為0.9,則可以明顯減少迭代次數(shù)。整理課

17、件16程序結(jié)構(gòu)程序結(jié)構(gòu)基本運(yùn)算符基本運(yùn)算符一、基本運(yùn)算符一、基本運(yùn)算符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í)高低來(lái)執(zhí)行。運(yùn)算的次序可以用圓括號(hào)“()”來(lái)改變。整理課件17程序結(jié)構(gòu)程序結(jié)構(gòu)邏輯運(yùn)算符邏輯運(yùn)算符2、邏輯運(yùn)算符在LINGO中,邏輯運(yùn)算符主要用于集循環(huán)函數(shù)的條件表達(dá)式中,來(lái)控制在函數(shù)中哪些集成員被包含,哪些被排斥。在創(chuàng)建稀疏集時(shí)用在成員資格過(guò)濾器中。LINGO具有種邏輯運(yùn)算符:#not# 否定該操作數(shù)的邏輯值,n

18、ot是一個(gè)一元運(yùn)算符#eq#若兩個(gè)運(yùn)算數(shù)相等,則為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)算符的

19、優(yōu)先級(jí)由高到低為:高 #not# #eq# #ne# #gt# #ge# #lt# #le#低 #and# #or#整理課件18程序結(jié)構(gòu)程序結(jié)構(gòu)數(shù)學(xué)算符數(shù)學(xué)算符二、數(shù)學(xué)函數(shù)二、數(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=0時(shí),返回不超過(guò)x的最大整數(shù);當(dāng)x0時(shí),返回不低于x的最小整數(shù)。smax(x1,x2,xn) 返回x1,x2,xn中的最大

20、值smin(x1,x2,xn) 返回x1,x2,xn中的最小值整理課件19程序結(jié)構(gòu)程序結(jié)構(gòu)應(yīng)用實(shí)例應(yīng)用實(shí)例應(yīng)用示例:給定一個(gè)直角三角形,求包含該三角形的最小正方形。 解:如圖所示。求最小的正方形就相當(dāng)于求如下的最優(yōu)化問(wèn)題:LINGO代碼如下:model:sets: object/1.3/: f;endsetsdata: a, b = 3, 4; !兩個(gè)直角邊長(zhǎng),修改很方便;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

21、,1.57);endABCDEabx,sincos,cos,sinxbxaDExbADxaCE整理課件20程序結(jié)構(gòu)程序結(jié)構(gòu)概率函數(shù)概率函數(shù)三、概率函數(shù)三、概率函數(shù)1pbn(p,n,x):二項(xiàng)分布的累積分布函數(shù)。當(dāng)n和(或)x不是整數(shù)時(shí),用線性插值法進(jìn)行計(jì)算。2pcx(n,x) :自由度為n的2分布的累積分布函數(shù)。3peb(a,x) :當(dāng)?shù)竭_(dá)負(fù)荷為a,服務(wù)系統(tǒng)有x個(gè)服務(wù)器且允許無(wú)窮排隊(duì)時(shí)的Erlang繁忙概率。4pel(a,x) :當(dāng)?shù)竭_(dá)負(fù)荷為a,服務(wù)系統(tǒng)有x個(gè)服務(wù)器且不允許排隊(duì)時(shí)的Erlang繁忙概率。5pfd(n,d,x) :自由度為n和d的F分布的累積分布函數(shù)。6pfs(a,x,c) :當(dāng)

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

23、isson分布的累積分布函數(shù)。當(dāng)x不是整數(shù)時(shí),采用線性插值進(jìn)行計(jì)算。10psl(x) :?jiǎn)挝徽龖B(tài)線性損失函數(shù),即返回max(0,z-x)的期望值,其中隨機(jī)變量z服從標(biāo)準(zhǔn)正態(tài)分布。11psn(x) :標(biāo)準(zhǔn)正態(tài)分布的累積分布函數(shù)12ptd(n,x) :自由度為n的t分布的累積分布函數(shù)。整理課件21程序結(jié)構(gòu)程序結(jié)構(gòu)qrandqrand13qrand(seed):產(chǎn)生服從(0,1)區(qū)間的擬隨機(jī)數(shù)。qrand只允許在模型的數(shù)據(jù)部分使用,它將用擬隨機(jī)數(shù)填滿集屬性。通常,聲明一個(gè)mn的二維表,m表示運(yùn)行實(shí)驗(yàn)的次數(shù),n表示每次實(shí)驗(yàn)所需的隨機(jī)數(shù)的個(gè)數(shù)。在行內(nèi),隨機(jī)數(shù)是獨(dú)立分布的;在行間,隨機(jī)數(shù)是非常均勻的。這些

24、隨機(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如果沒(méi)有為函數(shù)指定種子,那么LINGO將用系統(tǒng)時(shí)間構(gòu)造種子。整理課件22程序結(jié)構(gòu)程序結(jié)構(gòu)randrand14rand(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ù)和

25、自由度為2的t分布的隨機(jī)數(shù)。model:!產(chǎn)生一列正態(tài)分布和t分布的隨機(jī)數(shù);sets: 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

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

27、+2*x20。(4)若將程序修改為:max=x1+x2;x1-x2=2;x1+2*x2= required(J);end整理課件30程序結(jié)構(gòu)程序結(jié)構(gòu)應(yīng)用實(shí)例應(yīng)用實(shí)例計(jì)算的部分結(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.000000 REQUIRED( T

28、HU) 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.000000 0.00000

29、0 START( SUN) 0.000000 0.000000從而解決方案是:每周最少需要22個(gè)職員,周一安排8人,周二安排2人,周三無(wú)需安排人,周四安排6人,周五和周六都安排3人,周日無(wú)需安排人。整理課件31程序結(jié)構(gòu)程序結(jié)構(gòu)集循環(huán)函數(shù)集循環(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表示的是一個(gè)串聯(lián)系統(tǒng)失效的概率。整理課件32程序結(jié)構(gòu)程序結(jié)構(gòu)輔助函數(shù)輔助函

30、數(shù)七、輔助函數(shù)七、輔助函數(shù)1if(logical_condition,true_result,false_result)if函數(shù)將評(píng)價(jià)一個(gè)邏輯表達(dá)式logical_condition,如果為真,返回true_ result,否則返回false_result。示例1:求解最優(yōu)化問(wèn)題其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_condition)如果邏輯條件logical_condition為真,則產(chǎn)生一個(gè)內(nèi)容為tex

31、t的信息框。示例2:model: x=1; warn(x是正數(shù),x #gt# 0); end整理課件33簡(jiǎn)單的命令行命令及應(yīng)用簡(jiǎn)單的命令行命令及應(yīng)用命令行命令一般用于非windows系統(tǒng)的計(jì)算機(jī)中,我們可以通過(guò)菜單行中找到“command window”或者按組合鍵“CTRL+1” 來(lái)啟動(dòng)命令窗口。在這里僅僅對(duì)簡(jiǎn)單的命令作一下介紹。cat顯示所有命令類(lèi)型;com按類(lèi)型顯示所有命令;model開(kāi)始以命令行方式輸入一個(gè)模型;go求解當(dāng)前模型;solu顯示當(dāng)前模型的求解結(jié)果;quit退出lingo系統(tǒng)。整理課件34LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)線性規(guī)劃線性規(guī)劃某家具公司制造書(shū)桌、餐桌和椅子,所用的資源

32、有三種:木料、木工和漆工。生產(chǎn)數(shù)據(jù)如下表所示:若要求桌子的生產(chǎn)量不超過(guò)5件,如何安排三種產(chǎn)品的生產(chǎn)可使利潤(rùn)最大?每個(gè)書(shū)桌每個(gè)餐桌每個(gè)椅子現(xiàn)有資源總數(shù)木料8單位6單位1單位48單位漆工4單位2單位1.5單位20單位木工2單位1.5單位0.5單位8單位成本單價(jià)60單位30單位20單位整理課件35LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)線性規(guī)劃線性規(guī)劃分析:這是一個(gè)典型的線性規(guī)劃問(wèn)題。我們用DESKS、TABLES和CHAIRS分別表示三種產(chǎn)品的生產(chǎn)量,建立LP模型。程序如下所示:max=60*desks+30*tables+20*chairs; 8*desks+6*tables+chairs=48;4*des

33、ks+2*tables+1.5*chairs=20;2*desks+1.5*tables+.5*chairs=8;tables=5;在變量較少的情況下,用這種格式是比較方便的,但是當(dāng)變量增多時(shí),這樣的寫(xiě)法就會(huì)耗時(shí)耗力了。因此,我們提倡用lingo提供的函數(shù)來(lái)簡(jiǎn)化模型的結(jié)構(gòu),使之更加易寫(xiě)與易讀。首先,我們要定義集合:sets:products/desks,tables,chairs/:interest,volume;materials/a.c/:capacity;links(products,materials):x;endsets整理課件36LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)線性規(guī)劃線性規(guī)劃現(xiàn)在我們

34、來(lái)定義數(shù)據(jù)部分:data:interest=60,30,20;capacity=48,20,8;x=8,4,26,2,1.51,1.5,0.5;enddata然后我們寫(xiě)出目標(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;最后,我們只需要將這幾部分組合起來(lái)即可。整理課件37LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)線性規(guī)劃線性規(guī)劃model:sets:products/desks,tables,chairs/:

35、interest,volume;materials/a.c/:capacity;links(products,materials):x;endsetsdata:interest=60,30,20;capacity=48,20,8;x=8,4,26,2,1.51,1.5,0.5;enddatamax=sum(products(i):interest(i)*volume(i);for(materials(j):sum(products(i):x(i,j)*volume(i)=capacity(j);volume(2)=5;end整理課件38LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)線性規(guī)劃線性規(guī)劃Objecti

36、ve value: 280.0000Total solver iterations: 2Variable Value Reduced CostVOLUME( 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 24.00000 0.000000 3 0.000000 10.00000 4 0.000000 10.00000 5 5.000000 0.000

37、000“Global optimal solution found at iteration: 2”表示2次迭代后得到全局最優(yōu)解。 “Objective value:280.0000”表示最優(yōu)目標(biāo)值為280。 整理課件39LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)線性規(guī)劃線性規(guī)劃“Reduced Cost”列出最優(yōu)單純形表中判別數(shù)所在行的變量的系數(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型問(wèn)題)。本例中:變量tables對(duì)應(yīng)的reduced

38、 cost值為5,表示當(dāng)非基變量tables的值從0變?yōu)?1時(shí)(此時(shí)假定其他非基變量保持不變,但為了滿足約束條件,基變量顯然會(huì)發(fā)生變化),最優(yōu)的目標(biāo)函數(shù)值 = 280 - 5 = 275?!癉UAL PRICE”(對(duì)偶價(jià)格)表示當(dāng)對(duì)應(yīng)約束有微小變動(dòng)時(shí), 目標(biāo)函數(shù)的變化率。輸出結(jié)果中對(duì)應(yīng)于每一個(gè)約束有一個(gè)對(duì)偶價(jià)格。 若其數(shù)值為p, 表示對(duì)應(yīng)約束中不等式右端項(xiàng)若增加1 個(gè)單位,目標(biāo)函數(shù)將增加p個(gè)單位(max型問(wèn)題)。顯然,如果在最優(yōu)解處約束正好取等號(hào)(也就是“緊約束”,也稱(chēng)為有效約束或起作用約束),對(duì)偶價(jià)格值才可能不是0。本例中:第3、4行是緊約束,對(duì)應(yīng)的對(duì)偶價(jià)格值為10,表示當(dāng)緊約束 3) 4

39、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行也類(lèi)似。 對(duì)于非緊約束(如本例中第2、5行是非緊約束),DUAL PRICE 的值為0, 表示對(duì)應(yīng)約束中不等式右端項(xiàng)的微小擾動(dòng)不影響目標(biāo)函數(shù)。有時(shí), 通過(guò)分析DUAL PRICE, 也可對(duì)產(chǎn)生不可行問(wèn)題的原因有所了解。整理課件40LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)靈敏度分析靈敏度分析下面我們來(lái)做靈敏度分析:首先,我們要啟動(dòng)靈敏度分析,即將“General Solver”選項(xiàng)卡中的“Dual

40、Computation”下拉項(xiàng)修改為“Prices & Ranges”。然后,我們點(diǎn)“Solve”運(yùn)行程序,運(yùn)行完之后,回到模型界面,點(diǎn)擊“l(fā)ingo”菜單下的“range”選項(xiàng)即可得到結(jié)果。結(jié)果顯示如下: Ranges in which the basis is unchanged: Objective Coefficient Ranges Current Allowable Allowable Variable Coefficient Increase Decrease VOLUME( DESKS) 60.00000 20.00000 4.000000 VOLUME( TABLES

41、) 30.00000 5.000000 INFINITY VOLUME( CHAIRS) 20.00000 2.500000 5.000000整理課件41LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)靈敏度分析靈敏度分析 Righthand Side Ranges Row Current Allowable Allowable RHS Increase Decrease 2 48.00000 INFINITY 24.00000 3 20.00000 4.000000 4.000000 4 8.000000 2.000000 1.333333 5 5.000000 INFINITY 5.000000整理課件42L

42、INGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)靈敏度分析靈敏度分析目標(biāo)函數(shù)中DESKS變量原來(lái)的費(fèi)用系數(shù)為60,允許增加(Allowable Increase)=4、允許減少(Allowable Decrease)=2,說(shuō)明當(dāng)它在60-4,60+20 = 56,80范圍變化時(shí),最優(yōu)基保持不變。對(duì)TABLES、CHAIRS變量,可以類(lèi)似解釋。由于此時(shí)約束沒(méi)有變化(只是目標(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)寫(xiě)為RHS)原來(lái)為48,當(dāng)它在48-24,48+ = 24,

43、范圍變化時(shí),最優(yōu)基保持不變。第3、4、5行可以類(lèi)似解釋。不過(guò)由于此時(shí)約束發(fā)生變化,最優(yōu)基即使不變,最優(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)值如何變化。下面我們通過(guò)求解一個(gè)實(shí)際問(wèn)題來(lái)進(jìn)行說(shuō)明。整理課件43LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)靈敏度分析靈敏度分析一奶制品加工廠用牛奶生產(chǎn)A1,A2兩種奶制品,1桶牛奶可以在甲車(chē)間用12小時(shí)加工成3公斤A1,或者在乙車(chē)間用8小時(shí)加工成4公斤A2。根據(jù)市場(chǎng)需求,生產(chǎn)的A1,A2全部能售出,且每公斤A1獲利24元,每公斤A2獲利16元?,F(xiàn)在

44、加工廠每天能得到50桶牛奶的供應(yīng),每天正式工人總的勞動(dòng)時(shí)間480小時(shí),并且甲車(chē)間每天至多能加工100公斤A1,乙車(chē)間的加工能力沒(méi)有限制。試為該廠制訂一個(gè)生產(chǎn)計(jì)劃,使每天獲利最大,并進(jìn)一步討論以下3個(gè)附加問(wèn)題: 1) 若用35元可以買(mǎi)到1桶牛奶,應(yīng)否作這項(xiàng)投資?若投資,每天最多購(gòu)買(mǎi)多少桶牛奶? 2) 若可以聘用臨時(shí)工人以增加勞動(dòng)時(shí)間,付給臨時(shí)工人的工資最多是每小時(shí)幾元? 3) 由于市場(chǎng)需求變化,每公斤A1的獲利增加到30元,應(yīng)否改變生產(chǎn)計(jì)劃?模型很簡(jiǎ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

45、=100;整理課件44LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)靈敏度分析靈敏度分析求解這個(gè)模型并做靈敏性分析,結(jié)果如下。 Global optimal solution found at iteration: 0 Objective value: 3360.000 Variable 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

46、0.000000整理課件45LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)靈敏度分析靈敏度分析Ranges in which the basis is unchanged: Objective Coefficient Ranges Current Allowable AllowableVariable 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

47、Decrease 2 50.00000 10.00000 6.666667 3 480.0000 53.33333 80.00000 4 100.0000 INFINITY 40.00000整理課件46LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)靈敏度分析靈敏度分析目標(biāo)函數(shù)可以看作“效益”,成為緊約束的“資源”一旦增加,“效益”必然跟著增長(zhǎng)。輸出中DUAL PRICES 給出這3種資源在最優(yōu)解下“資源”增加1個(gè)單位時(shí)“效益”的增量:原料增加1個(gè)單位(1桶牛奶)時(shí)利潤(rùn)增長(zhǎng)48(元),勞動(dòng)時(shí)間增加1個(gè)單位(1小時(shí))時(shí)利潤(rùn)增長(zhǎng)2(元),而增加非緊約束車(chē)間甲的能力顯然不會(huì)使利潤(rùn)增長(zhǎng)。這里,“效益”的增量可以看作“資源

48、”的潛在價(jià)值,經(jīng)濟(jì)學(xué)上稱(chēng)為影子價(jià)格,即1桶牛奶的影子價(jià)格為48元,1小時(shí)勞動(dòng)的影子價(jià)格為2元,車(chē)間甲的影子價(jià)格為零。讀者可以用直接求解的辦法驗(yàn)證上面的結(jié)論,即將輸入文件中原料約束milk)右端的50改為51,看看得到的最優(yōu)值(利潤(rùn))是否恰好增長(zhǎng)48(元)。用影子價(jià)格的概念很容易回答附加問(wèn)題1):用35元可以買(mǎi)到1桶牛奶,低于1桶牛奶的影子價(jià)格48,當(dāng)然應(yīng)該作這項(xiàng)投資?;卮鸶郊訂?wèn)題2):聘用臨時(shí)工人以增加勞動(dòng)時(shí)間,付給的工資低于勞動(dòng)時(shí)間的影子價(jià)格才可以增加利潤(rùn),所以工資最多是每小時(shí)2元。 目標(biāo)函數(shù)的系數(shù)發(fā)生變化時(shí)(假定約束條件不變),最優(yōu)解和最優(yōu)值會(huì)改變嗎?這個(gè)問(wèn)題不能簡(jiǎn)單地回答。上面輸出給出了

49、最優(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ù)的費(fèi)用系數(shù)變化并不影響約束條件,因此此時(shí)最優(yōu)基不變可以保證最優(yōu)解也不變,但最優(yōu)值變化。用這個(gè)結(jié)果很容易回答附加問(wèn)題3):若每公斤A1的獲利增加到30元,則x1系數(shù)變?yōu)?03=90,在允許范圍內(nèi),所以不應(yīng)改變生產(chǎn)計(jì)劃,但最優(yōu)值變?yōu)?020+6430=3720。 整理課件47LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)靈敏度分析靈敏度分析下面對(duì)“資源”的影子價(jià)格作進(jìn)一步的分析。影子價(jià)格的作用(即在

50、最優(yōu)解下“資源”增加1個(gè)單位時(shí)“效益”的增量)是有限制的。每增加1桶牛奶利潤(rùn)增長(zhǎng)48元(影子價(jià)格),但是,上 面輸出的CURRENT RHS 的ALLOWABLE INCREASE 和 ALLOWABLE DECREASE 給出了影子價(jià)格有意義條件下約束右端的限制范圍: milk)原料最多增加10(桶牛奶),time)勞動(dòng)時(shí)間最多增加53(小時(shí))?,F(xiàn)在可以回答附加問(wèn)題1)的第2問(wèn):雖然應(yīng)該批準(zhǔn)用35元買(mǎi)1桶牛奶的投資,但每天最多購(gòu)買(mǎi)10桶牛奶。順便地說(shuō),可以用低于每小時(shí)2元的工資聘用臨時(shí)工人以增加勞動(dòng)時(shí)間,但最多增加53.3333小時(shí)。 需要注意的是:靈敏性分析給出的只是最優(yōu)基保持不變的充分條

51、件,而不一定是必要條件。比如對(duì)于上面的問(wèn)題,“原料最多增加10(桶牛奶)”的含義只能是“原料增加10(桶牛奶)”時(shí)最優(yōu)基保持不變,所以影子價(jià)格有意義,即利潤(rùn)的增加大于牛奶的投資。反過(guò)來(lái),原料增加超過(guò)10(桶牛奶),影子價(jià)格是否一定沒(méi)有意義?最優(yōu)基是否一定改變?一般來(lái)說(shuō),這是不能從靈敏性分析報(bào)告中直接得到的。此時(shí),應(yīng)該重新用新數(shù)據(jù)求解規(guī)劃模型,才能做出判斷。所以,從正常理解的角度來(lái)看,我們上面回答“原料最多增加10(桶牛奶)”并不是完全科學(xué)的。整理課件48LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)整數(shù)規(guī)劃整數(shù)規(guī)劃有四種資源被用于生產(chǎn)三種產(chǎn)品,資源量、產(chǎn)品單件可變費(fèi)用、單件售價(jià)、資源單耗量及組織三種商品生產(chǎn)的固

52、定費(fèi)用見(jiàn)下表?,F(xiàn)要求制定一個(gè)生產(chǎn)計(jì)劃,使總收益最大。產(chǎn)品IIIIII資源量A248500B234300C123100D357700單件可變費(fèi)用4612固定費(fèi)用100150200單件售價(jià)71020單耗量資源整理課件49LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)整數(shù)規(guī)劃整數(shù)規(guī)劃整理課件50LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)整數(shù)規(guī)劃整數(shù)規(guī)劃整理課件51LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)整數(shù)規(guī)劃整數(shù)規(guī)劃整理課件52LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)整數(shù)規(guī)劃整數(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+

53、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元。整理課件53LINGOLINGO整數(shù)規(guī)劃整數(shù)規(guī)劃公司在各地有4項(xiàng)業(yè)務(wù),選定了4位業(yè)務(wù)員去處理。由于業(yè)務(wù)能力、經(jīng)驗(yàn)和其它情況不同,4業(yè)務(wù)員去處理4項(xiàng)業(yè)務(wù)的費(fèi)用(單位:元)各不

54、相同,見(jiàn)下表:業(yè)務(wù)業(yè)務(wù)業(yè)務(wù)員業(yè)務(wù)員1234111008001000700260050030080034008001000900411001000500700應(yīng)當(dāng)怎樣分派任務(wù),才能使總的費(fèi)用最???整理課件54LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)整數(shù)規(guī)劃整數(shù)規(guī)劃整理課件55LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)整數(shù)規(guī)劃整數(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,

55、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);END整理課件56LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)整數(shù)規(guī)劃整數(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

56、)=1,x(4,4)=0;最小費(fèi)用為2100元。即第1個(gè)業(yè)余員做第4項(xiàng)業(yè)務(wù),第2個(gè)業(yè)余員做第2項(xiàng)業(yè)務(wù),即第3個(gè)業(yè)余員做第1項(xiàng)業(yè)務(wù),第4業(yè)余員做第3項(xiàng)業(yè)務(wù)??傎M(fèi)用達(dá)到最小,為2100元。整理課件57LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)TSPTSP問(wèn)題問(wèn)題設(shè)有一個(gè)售貨員從10個(gè)城市中的某一個(gè)城市出發(fā),去其它9個(gè)城市推銷(xiāo)產(chǎn)品。10個(gè)城市相互距離如下表。要求每個(gè)城市到達(dá)一次僅一次后,回到原出發(fā)城市。問(wèn)他應(yīng)如何選擇旅行路線,使總路程最短。城市城市123456789101074586121311182703109145141717343059102182712451050149109231658991407872

57、0196614109701352513712521108130232118813148975230181291117272320252118016101817121619131812160整理課件58LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)TSPTSP問(wèn)題問(wèn)題整理課件59LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)TSPTSP問(wèn)題問(wèn)題LINGO程序如下:!TSP quesion;MODEL:SETS:city/1.10/;link(city,city)|&1#GT#&2:d,s;ENDSETSDATA:d= 7 4 3 5 10 5 8 9 9 14 6 14 10 9 7 12 5 21 10 8 13

58、 13 14 8 9 7 5 23 11 17 27 23 20 25 21 18 18 17 12 16 19 13 18 12 16; 整理課件60LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)TSPTSP問(wèn)題問(wèn)題ENDDATA MIN=SUM(link:d*s); SUM(city(j)|j#GT#1:S(j,1)=2; !與第1個(gè)城市相連的有兩個(gè)城市; !與第i個(gè)城市相連有兩個(gè)城市; 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(

59、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。 其最短路線為143275681091,最短距離為77公里。整理課件61LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)非線性規(guī)劃非線性規(guī)劃 使用LINGO軟件計(jì)算6個(gè)發(fā)點(diǎn)8個(gè)收點(diǎn)的最小費(fèi)用運(yùn)輸問(wèn)題。產(chǎn)銷(xiāo)單位運(yùn)價(jià)如下表。 單單 銷(xiāo)地銷(xiāo)地位運(yùn)位運(yùn)價(jià)價(jià)產(chǎn)產(chǎn)地地B B1 1B B2 2B B3 3B B4 4B B5 5B B6 6B B7 7B B8 8產(chǎn)產(chǎn)量量A A1 16 62 26 67 74 42 25 59 96060A A2 24 4

60、9 95 53 38 85 58 82 25555A A3 35 52 21 19 97 74 43 33 35151A A4 47 76 67 73 39 92 27 71 14343A A5 52 23 39 95 57 72 26 65 54141A A6 65 55 52 22 28 81 14 43 35252銷(xiāo)量銷(xiāo)量35353737222232324141323243433838 整理課件62LINGOLINGO實(shí)戰(zhàn)實(shí)戰(zhàn)非線性規(guī)劃非線性規(guī)劃Sets部分:SETS: WAREHOUSES/WH1.WH6/: CAPACITY; VENDORS/V1.V8/: DEMAND; LINKS( WAREHOUSES, VEN

溫馨提示

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