




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Lingo超經典案例大全LINGO是Linear Interactive and General Optimizer的縮寫,即“交互式的線性和通用優(yōu)化求解器”。Lingo超強的優(yōu)化計算能力在很多方面(線性規(guī)劃、非線性規(guī)劃、線性整數規(guī)劃、非線性整數規(guī)劃、非線性混合規(guī)劃、二次規(guī)劃等)比matlab、maple等強得多,Lingo編程簡潔明了,數學模型不用做大的改動(或者不用改動)便可以直接采用Lingo語言編程,十分直觀。Lingo模型由4個段構成:(1)集合段(sets endsets);(2)數據段(data enddata); (3)初始
2、段(init endinit);(4)目標與約束段。Lingo的五大優(yōu)點:1. 對大規(guī)模數學規(guī)劃,LINGO語言所建模型較簡潔,語句不多;2. 模型易于擴展,因為FOR、SUM等語句并沒有指定循環(huán)或求和的上下限,如果在集合定義部分增加集合成員的個數,則循環(huán)或求和自然擴展,不需要改動目標函數和約束條件;3. 數據初始化部分與其它部分語句分開,對同一模型用不同數據來計算時,只需改動數據部分即可,其它語句不變;4. “集合”是LINGO有特色的概念,它把實際問題中的事物與數學變量及常量聯系起來,是實際問題到數學量的抽象,它比C語言中的數組用途更為廣泛。 5. 使用了集合以及FOR、SUM等
3、集合操作函數以后可以用簡潔的語句表達出常見的規(guī)劃模型中的目標函數和約束條件,即使模型有大量決策變量和大量數據,組成模型的語句并不隨之增加 一、求解線性整數規(guī)劃、非線性整數規(guī)劃問題:1.線性整數規(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ā)現有兩組解: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ā)現Lingo解不出第三組解了,這時我們可以斷定:此優(yōu)化模型有兩組解:x1=3,x2=1和x1=2,x2=2.求解模型時需注意:Lingo中,默認變量均為非負;輸出的解可能是最優(yōu)解中的一組,要判斷、檢驗是否還有其他解(根據具體問題的解的情況或用排除已知最優(yōu)解的約束條
5、件法)。2、非線性整數規(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ā)現x1,x2,x4,x5均單調減少,x3單調增加。最大值越來越小??梢院唵闻袛嗟谝唤M為最優(yōu)的
7、。當然,能夠一一檢驗最好。 二、最優(yōu)選擇問題某鉆井隊要從10個可供選擇的井位中確定5個鉆井探油,使總的鉆探費用為最小。若10個井位的代號為s1,s2,.,s10,相應的鉆探費用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中最多只能選兩個.試建立這個問題的整數規(guī)劃模型,確定選擇的井位。取0-1變量s_i,若s_i=1,則表示選取第i個井,若s_i=0,則表示不選取第i個井。建立數學模型如下: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以達到最小費用31. 三、
21、路徑和最短問題:設平面上有N個點,求一點,使得這個點到所有點距離之和最小。這里,取N=8。數據點是15的隨機數。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);!隨機產生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);!目標函數;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個建筑工地,位置坐標為(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)現有2料場,位于A (5, 1), B (2, 7),記(xj,yj),j=1,2,
30、60;日儲量ej各有20噸。假設料場和工地之間有直線道路,制定每天的供應計劃,即從A, B兩料場分別向各工地運送多少噸水泥,使總的噸公里數最小。取決策變量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);!目標函數;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 ,在其它條件不變下使總噸公里數最小。模型一樣,未知量變?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);!目標函數;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、的最短路徑。設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項任務所用的時間如下,問如何指派任務使得完成所有任務的時間最短? 任務 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項任務所用的時間;決策變量x_ij:若第i個人選擇第j項任務則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 件任務(AK)分配到 4 個工作站(14),任務的優(yōu)先次序如下圖,每件任務所花費的時間如下表。目標是為每個工作站分配加工任務,盡可能使每個工作站執(zhí)行相同的任務量,其最終裝配線周期最短。任務 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項任務需要的時間。 SETS:TASK/ A B C D E F G H I J K/: T; !任務集合,有一個完成時間屬性 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 /; !任務之間的優(yōu)先關系集合(A 必須完成才能開始 B,等等);STATION/1.4/; ! 工作站集合;TXS( TASK, STATION): X;! X 是派生集合 TXS 的一個屬性。如果 X(I,K)1,則表示第 I 個任務指派給第 K 個工作站完成;ENDSETSDATA:T
59、;= 45 11 9 50 15 12 12 12 12 8 9; !任務 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)先關系的作業(yè)對(I,J)來說,I先J后安排;FOR( STATION( K):SUM( TXS( I, K): T( I) * X(
61、 I, K) <= CYCTIME); !對于每一個工作站來說,其花費時間必須不大于裝配線周期;MIN = CYCTIME; !目標函數是最小化轉配線周期;FOR( TXS: BIN( X); !指定 X(I,J) 為 0/1 變量;END 解得最短周期為50.分配情況為:A-1,B-3,C-4,D-2,E-3,F-4,G-4,H-3,I-3,J-4,K-4.七、選址問題某海島上有12個主要的居民點,每個居民點的位置(用
62、平面坐標x,y表示,距離單位:km)和居住的人數(r)如下表所示?,F在準備在海島上建一個服務中心為居民提供各種服務,那么服務中心應該建在何處?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設建在(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對年齡相當的青年,任意一對男女青年配對的概率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求解結果:m1-w5,m2-w8,m3-w2,m4-w4,m5-w7,m6-w3,m7-w6,m8-w1,m9-w9,m10-w10.最大值為0.055. 九、護士
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45133-2025氣體分析混合氣體組成的測定基于單點和兩點校準的比較法
- 信訪合同范本
- 單位采購柜子合同范本
- 出售餐飲椅子合同范本
- 單位同意入職合同范本
- 出租轉讓吊車合同范本
- 個人購買黃金合同范本
- 信息咨詢合作合同范本
- 農資商店用工合同范本
- 單位用人聘用合同范本
- 學校垃圾處理運輸服務合同
- 廣西2025年01月南寧市良慶區(qū)公開考試招考專職化城市社區(qū)工作者筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 統(tǒng)編版(2025)七年級下冊道德與法治教學計劃
- 七年級數學下冊 第11章 單元測試卷(蘇科版 2025年春)
- 2024年天津市建筑安全員A證考試題庫及答案
- 《恒瑞醫(yī)藥股權激勵實施方案探析綜述》6200字
- 2021年江蘇省公務員考試行測+申論真題及答案解析(A類卷)
- 2024年皖西衛(wèi)生職業(yè)學院單招職業(yè)適應性測試題庫及答案解析
- 《病理學》課程標準
- 中國肥胖及代謝疾病外科治療指南(2024版)
- 《人力資源管理》全套教學課件
評論
0/150
提交評論