版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
/Lingo超經(jīng)典案例大全LINGO是LinearInteractiveandGeneralOptimizer的縮寫,即“交互式的線性和通用優(yōu)化求解器”。Lingo超強的優(yōu)化計算能力在很多方面(線性規(guī)劃、非線性規(guī)劃、線性整數(shù)規(guī)劃、非線性整數(shù)規(guī)劃、非線性混合規(guī)劃、二次規(guī)劃等)比matlab、maple等強得多,Lingo編程簡潔明了,數(shù)學模型不用做大的改動(或者不用改動)便可以直接采用Lingo語言編程,十分直觀。Lingo模型由4個段構成:(1)集合段(sets
endsets);(2)數(shù)據(jù)段(data
enddata);
(3)初始段(initendinit);(4)目標與約束段。Lingo的五大優(yōu)點:1.對大規(guī)模數(shù)學規(guī)劃,LINGO語言所建模型較簡潔,語句不多;2.模型易于擴展,因為@FOR、@SUM等語句并沒有指定循環(huán)或求和的上下限,如果在集合定義部分增加集合成員的個數(shù),則循環(huán)或求和自然擴展,不需要改動目標函數(shù)和約束條件;3.數(shù)據(jù)初始化部分與其它部分語句分開,對同一模型用不同數(shù)據(jù)來計算時,只需改動數(shù)據(jù)部分即可,其它語句不變;4.“集合”是LINGO有特色的概念,它把實際問題中的事物與數(shù)學變量與常量聯(lián)系起來,是實際問題到數(shù)學量的抽象,它比C語言中的數(shù)組用途更為廣泛。
5.使用了集合以與@FOR、@SUM等集合操作函數(shù)以后可以用簡潔的語句表達出常見的規(guī)劃模型中的目標函數(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)解中的一個(有時不只一個)。那么,怎樣求得其他解呢?一個辦法是將求得的解作為約束條件,約束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中,默認變量均為非負;輸出的解可能是最優(yōu)解中的一組,要判斷、檢驗是否還有其他解(根據(jù)具體問題的解的情況或用排除已知最優(yōu)解的約束條件法)。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=11111122162160000115;b=400,800,200,200;enddata
max=@sum(col:c1*x^2+c2*x);@for(row(i):@sum(col(j):a(i,j)*x(j))<b(i));@for(col:@gin(x));@for(col:@bnd(0,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均單調減少,x3單調增加。最大值越來越小??梢院唵闻袛嗟谝唤M為最優(yōu)的。當然,能夠一一檢驗最好。
二、最優(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中最多只能選兩個.試建立這個問題的整數(shù)規(guī)劃模型,確定選擇的井位。取0-1變量s_i,若s_i=1,則表示選取第i個井,若s_i=0,則表示不選取第i個井。建立數(shù)學模型如下:
model:
sets:
variables/1..10/:s,cost;
endsets
data:
cost=581069576108;
enddata
min=@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求得:
Totalsolveriterations:
26
Variable
Value
ReducedCost
S(1)
1.000000
-4.000000
S(2)
1.000000
0.000000
S(3)
0.000000
2.000000
S(4)
1.000000
-2.000000
S(5)
0.000000
0.000000
S(6)
1.000000
-1.000000
S(7)
1.000000
0.000000
S(8)
0.000000
0.000000
S(9)
0.000000
2.000000
S(10)
0.000000
0.000000
Objectivevalue:
31.00000即選擇井S1,S2,S4,S6,S7以達到最小費用31.
三、路徑和最短問題:設平面上有N個點,求一點,使得這個點到所有點距離之和最小。這里,取N=8。數(shù)據(jù)點是1~5的隨機數(shù)。Lingo:model:
sets:
position/1..8/:x,y;
ab/1/:a,b;
endsets
data:
@text('E:\matlab7.0\work\data.txt')=x,y;!讀入到matlab的工作空間中;
@text('E:\matlab7.0\work\data1.txt')=a,b;
enddata
x(1)=1+4*@rand(0.12345);
y(1)=1+4*@rand(0.25);
@for(position(i)|i#ge#2:x(i)=1+4*@rand(x(i-1)));!隨機產(chǎn)生1~5中的8個點;
@for(position(i)|i#ge#2:y(i)=1+4*@rand(y(i-1)));
[obj]min=@sum(position(i):@sqrt((x(i)-a(1))^2+(y(i)-b(1))^2));!目標函數(shù);
@bnd(1,a(1),5);
@bnd(1,b(1),5);
endmatlab:clear;
clc;
closeall;
load('data.txt');
load('data1.txt');
holdon;
plot(data1(1),data1(2),'o','MarkerSize',15,'MarkerFaceColor','r');
plot(data(:,1),data(:,2),'or','MarkerSize',15,'MarkerFaceColor','b');
set(gcf,'Color','w');
set(gca,'FontSize',16)
gridoff;
data1=repmat(data1,8,1);
P=[data1(:,1)';data(:,1)'];
Q=[data1(:,2)';data(:,2)'];
plot(P,Q,'g','LineWidth',2);
xlabel('x');
ylabel('y');
title('Solvingtheproblemoftheminimundistanceoftnesumofallthebluepointstowardsthebeingknownredpoint.');
gtext(['Theminimundistanceis',num2str(10.2685),'.'],'FontSize',16,'Color','r');
三、運輸+選址問題:
某公司有6個建筑工地,位置坐標為(ai,bi)(單位:公里),水泥日用量di(單位:噸)i
1
2
3
4
5
6a
1.25
8.75
0.5
5.75
3
7.25b
1.25
0.75
4.75
5
6.5
7.75d
3
5
4
7
6
11(1)現(xiàn)有2料場,位于A
(5,
1),
B
(2,
7),記(xj,yj),j=1,2,
日儲量ej各有20噸。假設料場和工地之間有直線道路,制定每天的供應計劃,即從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;
endsets
data:
a=1.258.750.55.7537.25;
b=1.250.754.7556.57.75;
d=3547611;
x=52;
y=17;
e=2020;
enddata
[obj]min=@sum(link(i,j):c(i,j)*@sqrt((a(i)-x(j))^2+(b(i)-y(j))^2));!目標函數(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)
0.000000
C(2,1)
5.000000
C(2,2)
0.000000
C(3,1)
0.000000
C(3,2)
4.000000
C(4,1)
7.000000
C(4,2)
0.000000
C(5,1)
0.000000
C(5,2)
6.000000
C(6,1)
1.000000
C(6,2)
10.00000
Objectivevalue:
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;
endsets
data:
a=1.258.750.55.7537.25;
b=1.250.754.7556.57.75;
d=3547611;
e=2020;
enddata
init:
x=52;
y=17;
endinit
[obj]min=@sum(link(i,j):c(i,j)*@sqrt((a(i)-x(j))^2+(b(i)-y(j))^2));!目標函數(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)
3.000000
C(1,2)
0.000000
C(2,1)
0.000000
C(2,2)
5.000000
C(3,1)
4.000000
C(3,2)
0.000000
C(4,1)
7.000000
C(4,2)
0.000000
C(5,1)
6.000000
C(5,2)
0.000000
C(6,1)
0.000000
C(6,2)
11.00000
(x1,y1)=(3.254884,5.652331)
(x2,y2)=(7.250000,7.750000)Objectivevalue:
85.26604
四、路徑最短問題:
如上圖,求從S到T的最短路徑。設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,A1S,A2S,A3A1,B1A1,B2A2,B1A2,B2A3,B1A3,B2B1,C1B1,C2B2,C1B2,C2C1,TC2,T/:d;
endsets
data:
d=633
658674
6789
56;
L=0,6,3,3,,,,,;
enddata
@for(city(j)|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
2
15
13
4
m2
10
4
14
15
m3
9
14
16
13
m4
7
8
11
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;
endsets
data:
c=215134
1041415
9141613
78119;
enddata
[obj]min=@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
求得:最優(yōu)指派為:m1--t4,m2--t2,m3--t1,m4--t3最優(yōu)值為:28。
六、裝配線平衡模型(0-1規(guī)劃問題)11件任務(A—K)分配到4個工作站(1—4),任務的優(yōu)先次序如下圖,每件任務所花費的時間如下表。目標是為每個工作站分配加工任務,盡可能使每個工作站執(zhí)行相同的任務量,其最終裝配線周期最短。任務A
B
C
D
E
F
G
H
I
J
K時間
45
11
9
5015121212
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,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
=
45
11
9
50
15
12
12
12
12
8
9;
!任務
A
B
C
D
E
F
G
H
I
J
K
的完成時間;ENDDATA@FOR(
TASK(
I):
@SUM(
STATION(
K):
X(
I,
K))
=
1);
!每一個作業(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(
I,
K))
<=
CYCTIME);
!對于每一個工作站來說,其花費時間必須不大于裝配線周期;MIN
=
CYCTIME;
!目標函數(shù)是最小化轉配線周期;@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個主要的居民點,每個居民點的位置(用平面坐標x,y表示,距離單位:km)和居住的人數(shù)(r)如下表所示?,F(xiàn)在準備在海島上建一個服務中心為居民提供各種服務,那么服務中心應該建在何處?
x08.200.505.700.772.874.432.580.729.763.195.55y00.504.905.006.498.763.269.329.963.167.207.88r6001000800140012007006008001000120010001100設建在(a,b)處最合理。建立模型:MODEL:
SETS:
VAR/1..12/:X,Y,R;
ENDSETS
DATA:
X=08.200.505.700.772.874.432.580.729.763.195.55;
Y=00.504.905.006.498.763.269.329.963.167.207.88;
R=6001000800140012007006008001000120010001100;
ENDDATA
MIN=@SUM(VAR:@SQRT((X-A)^2+(Y-B)^2)*R);
END求得:(a,b)=(3.601028,6.514223),最小值為:44236.04。
八、婚配問題:10對年齡相當?shù)那嗄?,任意一對男女青年配對的概率pij見下表。試給出一個配對方案,使總的配對概率最大。
w1
w2
w3
w4
w5
w6
w7
w8
w9
w10
m10.5828
0.2091
0.4154
0.2140
0.6833
0.4514
0.6085
0.0841
0.1210
0.2319
m20.4235
0.3798
0.3050
0.6435
0.2126
0.0439
0.0158
0.4544
0.4508
0.2393
m3
0.5155
0.7833
0.8744
0.3200
0.8392
0.0272
0.0164
0.4418
0.7159
0.0498
m4
0.3340
0.6808
0.0150
0.9601
0.6288
0.3127
0.1901
0.3533
0.8928
0.0784
m5
0.4329
0.4611
0.7680
0.7266
0.1338
0.0129
0.5869
0.1536
0.2731
0.6408
m6
0.2259
0.5678
0.9708
0.4120
0.2071
0.3840
0.0576
0.6756
0.2548
0.1909
m7
0.5798
0.7942
0.9901
0.7446
0.6072
0.6831
0.3676
0.6992
0.8656
0.8439
m8
0.7604
0.0592
0.7889
0.2679
0.6299
0.0928
0.6315
0.7275
0.2324
0.1739
m9
0.5298
0.6029
0.4387
0.4399
0.3705
0.0353
0.7176
0.4784
0.8049
0.1708m100.6405
0.0503
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;
endsets
data:
p=0.5828
0.2091
0.4154
0.2140
0.6833
0.4514
0.6085
0.0841
0.1210
0.2319
0.4235
0.3798
0.3050
0.6435
0.2126
0.0439
0.0158
0.4544
0.4508
0.2393
0.5155
0.7833
0.8744
0.3200
0.8392
0.0272
0.0164
0.4418
0.7159
0.0498
0.3340
0.6808
0.0150
0.9601
0.6288
0.3127
0.1901
0.3533
0.8928
0.0784
0.4329
0.4611
0.7680
0.7266
0.1338
0.0129
0.5869
0.1536
0.2731
0.6408
0.2259
0.5678
0.9708
0.4120
0.2071
0.3840
0.0576
0.6756
0.2548
0.1909
0.5798
0.7942
0.9901
0.7446
0.6072
0.6831
0.3676
0.6992
0.8656
0.8439
0.7604
0.0592
0.7889
0.2679
0.6299
0.0928
0.6315
0.7275
0.2324
0.1739
0.5298
0.6029
0.4387
0.4399
0.3705
0.0353
0.7176
0.4784
0.8049
0.1708
0.6405
0.0503
0.4983
0.9334
0.5751
0.6124
0.6927
0.5548
0.9084
0.9943;
enddata
max=@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.
九、護士值班安排問題
某醫(yī)院,從周一到周日都要有人值班,每天至少需要的護士如表。要求每個護士每周連續(xù)上班5天,試問該醫(yī)院至少需要多少護士?并給出上班安排計劃。周
1
2
3
4
5
6
7人
20
16
13
16
19
14
12
取決策變量star(i):周i開始值班的人數(shù);目標函數(shù):min
sum[star(i)](i=1,2,3,...,7)約束條件:連續(xù)工作五天,周j值班的人數(shù)>=required(j)(j=1,2,3,...,7)
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+2+I,7)))>=required(J));end解得:
總共需要22人,周一8人開始值班,周二2人,周三0人,周四6人,周五3人,周六3人,周日0人。十、填數(shù)問題
分別把1,2,…,16填到圖示的16個圈內,使得每個三角形上的所有圈內的數(shù)的和為81(共4個三角形)。
決策變量:e_ij=1,第i個圈填數(shù)a_j;e_ij=0,第i個圈不填數(shù)a_j。a_j=j,j=1,2,3,...,16。模型:model:sets:number/1..16/:a;link(number,number):e;tri1(number)/123456789/;tri2(number)/12341615121110/;tri3(number)/45671413121516/;tri4(number)/78911011121314/;endsetsdata:a=12345678910111213141516;enddata[obj]max=@sum(link(i,j):e(i,j)*a(j));@for(number(i):@sum(link(i,j):e(i,j))=1);@for(number(j):@sum(link(i,j):e(i,j))=1);@for(link(i,j):@bin(e(i,j)));@sum(number(j):@sum(tri1(i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025中國郵政集團公司江蘇省常熟市分公司招聘快包投遞員高頻重點提升(共500題)附帶答案詳解
- 2025中國聯(lián)通福建省分公司招聘(414人+)高頻重點提升(共500題)附帶答案詳解
- 2025中國移動黑龍江公司校園招聘224人高頻重點提升(共500題)附帶答案詳解
- 2025中國電建(德國)限公司招聘1人高頻重點提升(共500題)附帶答案詳解
- 2025中國電信湖北潛江分公司招聘4人高頻重點提升(共500題)附帶答案詳解
- 2025下半年浙江麗水市青田縣招聘國企業(yè)工作人員擬聘用(三)閱讀模式高頻重點提升(共500題)附帶答案詳解
- 2025下半年廣西桂林市事業(yè)單位招聘應征入伍大學畢業(yè)生153人高頻重點提升(共500題)附帶答案詳解
- 2025下半年山東通匯資本投資集團限公司社會招聘7人高頻重點提升(共500題)附帶答案詳解
- 2025下半年四川省江油市事業(yè)單位招聘95人歷年高頻重點提升(共500題)附帶答案詳解
- 2025下半年四川南充市高坪區(qū)事業(yè)單位招聘47人高頻重點提升(共500題)附帶答案詳解
- 膠囊內鏡定位導航技術研究
- 社區(qū)開展反詐工作方案
- 城市露營項目商業(yè)計劃書
- 建筑垃圾清運重點分析報告
- 11396-國家開放大學2023年春期末統(tǒng)一考試《藥事管理與法規(guī)(本)》答案
- NB-T 47013.7-2012(JB-T 4730.7) 4730.7 承壓設備無損檢測 第7部分:目視檢測
- 網(wǎng)絡安全與信息保密培訓
- 天津市四校2022-2023學年高二上學期期末聯(lián)考數(shù)學試題(原卷版)
- 2023年建筑工程管理經(jīng)理年終總結及年后展望
- 小學數(shù)學問題解決能力的培養(yǎng)策略
- 京歌《故鄉(xiāng)是北京》的藝術特征及演唱分析
評論
0/150
提交評論