Lingo超案例大全_第1頁
Lingo超案例大全_第2頁
Lingo超案例大全_第3頁
Lingo超案例大全_第4頁
Lingo超案例大全_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Lingo超經(jīng)典案例大全LINGO是Linear Interactive and General Optimizer的縮寫,即“交互式的線性和通用優(yōu)化求解器”。Lingo超強(qiáng)的優(yōu)化計算能力在很多方面(線性規(guī)劃、非線性規(guī)劃、線性整數(shù)規(guī)劃、非線性整數(shù)規(guī)劃、非線性混合規(guī)劃、二次規(guī)劃等)比matlab、maple等強(qiáng)得多,Lingo編程簡潔明了,數(shù)學(xué)模型不用做大的改動(或者不用改動)便可以直接采用Lingo語言編程,十分直觀。Lingo模型由4個段構(gòu)成:(1)集合段(sets  endsets);(2)數(shù)據(jù)段(data  enddata); (3)初始

2、段(init endinit);(4)目標(biāo)與約束段。Lingo的五大優(yōu)點:1. 對大規(guī)模數(shù)學(xué)規(guī)劃,LINGO語言所建模型較簡潔,語句不多;2. 模型易于擴(kuò)展,因為FOR、SUM等語句并沒有指定循環(huán)或求和的上下限,如果在集合定義部分增加集合成員的個數(shù),則循環(huán)或求和自然擴(kuò)展,不需要改動目標(biāo)函數(shù)和約束條件;3. 數(shù)據(jù)初始化部分與其它部分語句分開,對同一模型用不同數(shù)據(jù)來計算時,只需改動數(shù)據(jù)部分即可,其它語句不變;4. “集合”是LINGO有特色的概念,它把實際問題中的事物與數(shù)學(xué)變量及常量聯(lián)系起來,是實際問題到數(shù)學(xué)量的抽象,它比C語言中的數(shù)組用途更為廣泛。 5. 使用了集合以及FOR、SUM等

3、集合操作函數(shù)以后可以用簡潔的語句表達(dá)出常見的規(guī)劃模型中的目標(biāo)函數(shù)和約束條件,即使模型有大量決策變量和大量數(shù)據(jù),組成模型的語句并不隨之增加 一、求解線性整數(shù)規(guī)劃、非線性整數(shù)規(guī)劃問題:1.線性整數(shù)規(guī)劃:model:max=x1+x2;x1+9/14*x2<=51/14;-2*x1+x2<=1/3;gin(x1);gin(x2);end求得x1=3,x2=1,最大值為4.運用matlab求時可以發(fā)現(xiàn)有兩組解:x1=3,x2=1和x1=2,x2=2。通過驗證也可知這兩組解均滿足。Lingo的一個缺陷是:每次只能輸出最優(yōu)解中的一個(有時不只一個)。那么,怎樣求得其他解呢?一個辦法是

4、將求得的解作為約束條件,約束x1不等于3,x2不等于1,再求解。如下:model:max=x1+x2;x1+9/14*x2<=51/14;-2*x1+x2<=1/3;gin(x1);gin(x2);abs(x1-3)>0.001;abs(x2-1)>0.001;end求得x1=2,x2=2.若再次排除這組解,發(fā)現(xiàn)Lingo解不出第三組解了,這時我們可以斷定:此優(yōu)化模型有兩組解:x1=3,x2=1和x1=2,x2=2.求解模型時需注意:Lingo中,默認(rèn)變量均為非負(fù);輸出的解可能是最優(yōu)解中的一組,要判斷、檢驗是否還有其他解(根據(jù)具體問題的解的情況或用排除已知最優(yōu)解的約束條

5、件法)。2、非線性整數(shù)規(guī)劃:model:sets:row/1.4/:b;col/1.5/:c1,c2,x;link(row,col):a;endsetsdata:c1=1,1,3,4,2;c2=-8,-2,-3,-1,-2;a=1 1 1 1 11 2 2 1 62 1 6 0 00 0 1 1 5;b=400,800,200,200;enddata     max=sum(col:c1*x2+c2*x);for(row(i):sum(col(j):a(i,j)*x(j)<b(i);for(col:gin(x);for(col:bnd(0

6、,x,99);End求得:x1=50,x2=99,x3=0,x4=99,x5=20.最大值為51568。這里,我們看不出是否還有其他解,需要將已知的最優(yōu)解排除掉。利用1的方法分別可得到其他解:x1=48,x2=98,x3=1,x4=98,x5=19.最大值為50330。x1=45,x2=97,x3=2,x4=97,x5=18.最大值為49037。x1=43,x2=96,x3=3,x4=96,x5=17.最大值為47859。x1=40,x2=95,x3=4,x4=95,x5=16.最大值為46636。.發(fā)現(xiàn)x1,x2,x4,x5均單調(diào)減少,x3單調(diào)增加。最大值越來越小??梢院唵闻袛嗟谝唤M為最優(yōu)的

7、。當(dāng)然,能夠一一檢驗最好。 二、最優(yōu)選擇問題某鉆井隊要從10個可供選擇的井位中確定5個鉆井探油,使總的鉆探費用為最小。若10個井位的代號為s1,s2,.,s10,相應(yīng)的鉆探費用c1,c2,.,c10為5,8,10,6,9,5,7,6,10,8.并且井位選擇上要滿足下列限制條件:(1) 或選擇s1和s7,或選擇鉆探s9;(2) 選擇了s3或s4就不能選s5,或反過來也一樣;(3) 在s5,s6,s7,s8中最多只能選兩個.試建立這個問題的整數(shù)規(guī)劃模型,確定選擇的井位。取0-1變量s_i,若s_i=1,則表示選取第i個井,若s_i=0,則表示不選取第i個井。建立數(shù)學(xué)模型如下:model:

8、sets:variables/1.10/:s,cost;endsetsdata:cost=5 8 10 6 9 5 7 6 10 8;enddatamin=sum(variables:cost*s);(s(1)+s(7)-2)*(s(9)-1)=0;s(3)*s(5)+s(4)*s(5)=0;sum(variables(i)|i#ge#5#and#i#le#8:s(i)<=2;sum(variables:s)=5;for(variables:bin(s);end求得:          &

9、#160;               Total solver iterations:   26                       Variable  

10、60;        Value        Reduced Cost                          S( 1)    

11、;    1.000000           -4.000000                          S( 2)     &

12、#160;  1.000000            0.000000                          S( 3)     

13、0;  0.000000            2.000000                          S( 4)      &

14、#160; 1.000000           -2.000000                          S( 5)       

15、60;0.000000            0.000000                          S( 6)        

16、1.000000           -1.000000                          S( 7)        1.000000

17、            0.000000                          S( 8)        0.000000

18、60;           0.000000                          S( 9)        0.000000 

19、           2.000000                         S( 10)        0.000000  &#

20、160;         0.000000                         Objective value:   31.00000即選擇井S1,S2,S4,S6,S7以達(dá)到最小費用31.  三、

21、路徑和最短問題:設(shè)平面上有N個點,求一點,使得這個點到所有點距離之和最小。這里,取N=8。數(shù)據(jù)點是15的隨機(jī)數(shù)。Lingo:model:sets:position/1.8/:x,y;ab/1/:a,b;endsetsdata:text('E:matlab7.0workdata.txt')=x,y;!讀入到matlab的工作空間中;text('E:matlab7.0workdata1.txt')=a,b;enddatax(1)=1+4*rand(0.12345);y(1)=1+4*rand(0.25);for(position(i)|i#ge#2:x(i)=1+4

22、*rand(x(i-1);!隨機(jī)產(chǎn)生15中的8個點;for(position(i)|i#ge#2:y(i)=1+4*rand(y(i-1);objmin=sum(position(i):sqrt(x(i)-a(1)2+(y(i)-b(1)2);!目標(biāo)函數(shù);bnd(1,a(1),5);bnd(1,b(1),5);endmatlab:clear;clc;close all;load('data.txt');load('data1.txt');hold on;plot(data1(1),data1(2),'o','MarkerSize'

23、,15,'MarkerFaceColor','r');plot(data(:,1),data(:,2),'or','MarkerSize',15,'MarkerFaceColor','b');set(gcf,'Color','w');set(gca,'FontSize',16)grid off;data1=repmat(data1,8,1);P=data1(:,1)'data(:,1)'Q=data1(:,2)'data(:,2

24、)'plot(P,Q,'g','LineWidth',2);xlabel('x');ylabel('y');title('Solving the problem of the minimun distance of tne sum of all the blue points towards the being known red point.');gtext('The minimun distance is ',num2str(10.2685),'.','FontS

25、ize',16,'Color','r');三、運輸+選址問題: 某公司有6個建筑工地,位置坐標(biāo)為(ai, bi) (單位:公里),水泥日用量di (單位:噸)i        1         2          3     

26、     4          5           6a       1.25      8.75       0.5 

27、60;      5.75        3           7.25b       1.25      0.75       4.75 

28、;      5           6.5         7.75d       3          5     

29、     4         7           6            11(1)現(xiàn)有2料場,位于A (5, 1), B (2, 7),記(xj,yj),j=1,2,

30、60;日儲量ej各有20噸。假設(shè)料場和工地之間有直線道路,制定每天的供應(yīng)計劃,即從A, B兩料場分別向各工地運送多少噸水泥,使總的噸公里數(shù)最小。取決策變量c_ij表示i工地從j料場運來的水泥量。模型(線性模型)為:model:sets:demand/1.6/:a,b,d;supply/1.2/:x,y,e;link(demand,supply):c;endsetsdata:a=1.25 8.75 0.5 5.75 3 7.25;b=1.25 0.75 4.75 5 6.5 7.75;d=3 5 4 7 6 11;x=5 2;y=1 7;e=20 20;enddataobjmin=sum(lin

31、k(i,j):c(i,j)*sqrt(a(i)-x(j)2+(b(i)-y(j)2);!目標(biāo)函數(shù);for(demand(i):sum(supply(j):c(i,j)=d(i);for(supply(j):sum(demand(i):c(i,j)<=e(j);end求得:C( 1, 1)        3.000000            C( 1, 2)   

32、;     0.000000            C( 2, 1)        5.000000           C( 2, 2)        0.0

33、00000           C( 3, 1)        0.000000          C( 3, 2)        4.000000       

34、;                           C( 4, 1)        7.000000            &

35、#160;               C( 4, 2)        0.000000                       

36、60;        C( 5, 1)        0.000000                               

37、;  C( 5, 2)        6.000000                                 C( 6, 1)   

38、;     1.000000                             C( 6, 2)        10.00000    

39、;       Objective value:    136.2275(2) 改建兩個新料場,需要確定新料場位置(xj,yj)和運量cij ,在其它條件不變下使總噸公里數(shù)最小。模型一樣,未知量變?yōu)榱蠄鑫恢?xj,yj)和運量cij ,變?yōu)榉蔷€性優(yōu)化問題。model:sets:demand/1.6/:a,b,d;supply/1.2/:x,y,e;link(demand,supply):c;endsetsdata:a=1.25 8.75 0.5 5.75 3 7.2

40、5;b=1.25 0.75 4.75 5 6.5 7.75;d=3 5 4 7 6 11;e=20 20;enddatainit:x=5 2;y=1 7;endinitobjmin=sum(link(i,j):c(i,j)*sqrt(a(i)-x(j)2+(b(i)-y(j)2);!目標(biāo)函數(shù);for(demand(i):sum(supply(j):c(i,j)=d(i);for(supply(j):sum(demand(i):c(i,j)<=e(j);for(supply:free(x);free(y);end求得:C( 1, 1)    

41、0;   3.000000         C( 1, 2)        0.000000                         

42、0;        C( 2, 1)        0.000000                               

43、  C( 2, 2)        5.000000                                  C( 3, 1)  

44、      4.000000                                  C( 3, 2)       &#

45、160;0.000000                                  C( 4, 1)        7.000000   &#

46、160;                             C( 4, 2)        0.000000         

47、0;                         C( 5, 1)        6.000000              

48、                   C( 5, 2)        0.000000                    &#

49、160;             C( 6, 1)        0.000000                         

50、0;        C( 6, 2)        11.00000           (x1,y1)=(3.254884,5.652331) (x2,y2)=(7.250000,7.750000)Objective value:   85.26604四、路徑最短問題:如上圖,求從S到T

51、的最短路徑。設(shè)d(x,y):城市x與城市y之間的直線距離;L(x):城市S到城市x的最優(yōu)行駛路線的路長。模型為:min L(x)+d(x,y)L(S)=0 model:sets:city/S,A1,A2,A3,B1,B2,C1,C2,T/:L;road(city,city)/S,A1 S,A2 S,A3 A1,B1 A1,B2 A2,B1 A2,B2 A3,B1 A3,B2 B1,C1 B1,C2 B2,C1 B2,C2 C1,T C2,T/:d;endsetsdata:d=6 3 36 5 8 6 7 46 7 8 95 6;L=0,6,3,3,;enddatafor(city(j

52、)|j#gt#index(city,S):L(j)=min(road(i,j):L(i)+d(i,j);end求得最短路徑為20. 五、指派問題(0-1規(guī)劃問題):四個人完成4項任務(wù)所用的時間如下,問如何指派任務(wù)使得完成所有任務(wù)的時間最短?     任務(wù)   t1    t2    t3    t4人員m1       

53、;   2     15    13    4 m2          10     4    14    15     m3  

54、        9      14    16    13 m4          7      8     11    

55、; 9 c_ij:表示第i個人完成第j項任務(wù)所用的時間;決策變量x_ij:若第i個人選擇第j項任務(wù)則x_ij=1;否則,x_ij=0;模型為:model:sets:task/1.4/:t;man/1.4/:m;link(man,task):c,x;endsetsdata:c=2 15 13 410 4 14 159 14 16 137 8 11 9;enddataobjmin=sum(link:c*x);for(task(j):sum(man(i):x(i,j)=1);for(man(i):sum(task(j):x(i,j)=1);for(link:bin(x);end求

56、得:最優(yōu)指派為:m1-t4,m2-t2,m3-t1,m4-t3最優(yōu)值為:28。 六、裝配線平衡模型(0-1規(guī)劃問題)11 件任務(wù)(AK)分配到 4 個工作站(14),任務(wù)的優(yōu)先次序如下圖,每件任務(wù)所花費的時間如下表。目標(biāo)是為每個工作站分配加工任務(wù),盡可能使每個工作站執(zhí)行相同的任務(wù)量,其最終裝配線周期最短。任務(wù) A  B  C  D  E  F  G  H  I  J  K時間 

57、45 11 9 50 15 12 12 12 12  8  9 T(i):為完成第i項任務(wù)需要的時間。 SETS:TASK/ A B C D E F G H I J K/: T; !任務(wù)集合,有一個完成時間屬性 T;PRED( TASK, TASK)/ A,B B,C C,F C,G F,

58、J G,JJ,K D,E E,H E,I H,J I,J /; !任務(wù)之間的優(yōu)先關(guān)系集合(A 必須完成才能開始 B,等等);STATION/1.4/; ! 工作站集合;TXS( TASK, STATION): X;! X 是派生集合 TXS 的一個屬性。如果 X(I,K)1,則表示第 I 個任務(wù)指派給第 K 個工作站完成;ENDSETSDATA:T 

59、;= 45 11 9 50 15 12 12 12 12 8 9; !任務(wù) A B C D E F G H I J K 的完成時間;ENDDATAFOR( TASK( I): SUM( STATION( K): X( I, K) = 1); !每一個

60、作業(yè)必須指派到一個工作站;FOR( PRED( I, J): SUM( STATION( K):  X(I, K)-SUM( STATION( K):  X(J, K) )>=0)  !對于每一個存在優(yōu)先關(guān)系的作業(yè)對(I,J)來說,I先J后安排;FOR( STATION( K):SUM( TXS( I, K): T( I) * X(

61、 I, K) <= CYCTIME); !對于每一個工作站來說,其花費時間必須不大于裝配線周期;MIN = CYCTIME; !目標(biāo)函數(shù)是最小化轉(zhuǎn)配線周期;FOR( TXS: BIN( X); !指定 X(I,J) 為 0/1 變量;END 解得最短周期為50.分配情況為:A-1,B-3,C-4,D-2,E-3,F(xiàn)-4,G-4,H-3,I-3,J-4,K-4.七、選址問題某海島上有12個主要的居民點,每個居民點的位置(用

62、平面坐標(biāo)x,y表示,距離單位:km)和居住的人數(shù)(r)如下表所示?,F(xiàn)在準(zhǔn)備在海島上建一個服務(wù)中心為居民提供各種服務(wù),那么服務(wù)中心應(yīng)該建在何處?x 0 8.20 0.50 5.70 0.77 2.87 4.43 2.58 0.72 9.76 3.19 5.55y 0 0.50 4.90 5.00 6.49 8.76 3.26 9.32 9.96 3.16 7.20 7.88r 600 1000 800 1400 1200 700 600 800 1000 1200 1000 1100設(shè)建在(a,b)處最合理。建立模型:MODEL:SETS:VAR/1.12/:X,Y,R;ENDSETSDATA:

63、X=0 8.20 0.50 5.70 0.77 2.87 4.43 2.58 0.72 9.76 3.19 5.55;Y=0 0.50 4.90 5.00 6.49 8.76 3.26 9.32 9.96 3.16 7.20 7.88;R=600 1000 800 1400 1200 700 600 800 1000 1200 1000 1100;ENDDATAMIN=SUM(VAR:SQRT(X-A)2+(Y-B)2)*R);END求得:(a,b)=(3.601028,6.514223),最小值為:44236.04。 八、婚配問題:10對年齡相當(dāng)?shù)那嗄?,任意一對男女青年配對的概率p

64、ij見下表。試給出一個配對方案,使總的配對概率最大。    w1        w2        w3        w4        w5        

65、w6        w7        w8        w9        w10m1 0.5828    0.2091    0.4154    0.21

66、40    0.6833    0.4514    0.6085    0.0841    0.1210  0.2319m2 0.4235    0.3798    0.3050    0.6435    0.2126&

67、#160;   0.0439    0.0158    0.4544    0.4508  0.2393m3 0.5155    0.7833    0.8744    0.3200    0.8392    0.027

68、2    0.0164    0.4418    0.7159  0.0498m4 0.3340    0.6808    0.0150    0.9601    0.6288    0.3127    0.1

69、901    0.3533    0.8928  0.0784m5 0.4329    0.4611    0.7680    0.7266    0.1338    0.0129    0.5869    0

70、.1536    0.2731  0.6408m6 0.2259    0.5678    0.9708    0.4120    0.2071    0.3840    0.0576    0.6756    

71、;0.2548  0.1909m7 0.5798    0.7942    0.9901    0.7446    0.6072    0.6831    0.3676    0.6992    0.8656  0.8439m8&

72、#160;0.7604    0.0592    0.7889    0.2679    0.6299    0.0928    0.6315    0.7275    0.2324  0.1739m9 0.5298   

73、; 0.6029    0.4387    0.4399    0.3705    0.0353    0.7176    0.4784    0.8049  0.1708m10 0.6405    0.0503   &

74、#160;0.4983    0.9334    0.5751    0.6124    0.6927    0.5548    0.9084  0.9943取xx_ij為0-1型決策變量。模型為:model:sets:man/m1.m10/;woman/w1.w10/;link(man,woman):p,x;endsetsdata:p=

75、0.5828    0.2091    0.4154    0.2140    0.6833    0.4514    0.6085    0.0841    0.1210    0.2319  0.4235 

76、   0.3798    0.3050    0.6435    0.2126    0.0439    0.0158    0.4544    0.4508    0.2393  0.5155   

77、 0.7833    0.8744    0.3200    0.8392    0.0272    0.0164    0.4418    0.7159    0.0498  0.3340    0.6808

78、    0.0150    0.9601    0.6288    0.3127    0.1901    0.3533    0.8928    0.0784  0.4329    0.4611  

79、  0.7680    0.7266    0.1338    0.0129    0.5869    0.1536    0.2731    0.6408  0.2259    0.5678    

80、0.9708    0.4120    0.2071    0.3840    0.0576    0.6756    0.2548    0.1909  0.5798    0.7942    0.9901 

81、   0.7446    0.6072    0.6831    0.3676    0.6992    0.8656    0.8439  0.7604    0.0592    0.7889   

82、 0.2679    0.6299    0.0928    0.6315    0.7275    0.2324    0.1739  0.5298    0.6029    0.4387    0.4399

83、    0.3705    0.0353    0.7176    0.4784    0.8049    0.1708  0.6405    0.0503    0.4983    0.9334  

84、  0.5751    0.6124    0.6927    0.5548    0.9084   0.9943;enddatamax=prod(man(i):sum(woman(j):p(i,j)*x(i,j);for(woman(j):sum(link(i,j):x(i,j)=1);for(man(i):sum(link(i,j):x(i,j)=1);for(link:bin(x);end求解結(jié)果:m1-w5,m2-w8,m3-w2,m4-w4,m5-w7,m6-w3,m7-w6,m8-w1,m9-w9,m10-w10.最大值為0.055. 九、護(hù)士

溫馨提示

  • 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

提交評論