4图论组合优化实验解读.docx
《4图论组合优化实验解读.docx》由会员分享,可在线阅读,更多相关《4图论组合优化实验解读.docx(31页珍藏版)》请在冰豆网上搜索。
4图论组合优化实验解读
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
工程数学
Gxxxxxxxxxxxxxxx
E-mail:
xxxxxxxxxxxxxxxTel:
xxxxxxxxxx
4数学建模基础:
4.1.实验目的与要求
学会用图论(组合优化)的方法或思想建模
学会LINGO软件求解组合优化问题
成立相应的数学模型,并对计算结果进行剖析议论
4.2.基本实验
4.2.1.设施更新问题
某企业需要对一台已经使用了2年的机器确立此后4年(n=4)的最优更新策略。
企业要求,用了6
年的机器一定更新,购置一台新机器的价钱是100万元,表4.1给出了该问题的数据,请给出设施的更新
策略。
解:
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
用图论知识来理解本题。
设用A,B表示决议年度,用数字表示机龄,所以,第1年决议的节点就
是A2,第2年只有两种可能,就是B3(第1年不更新)或B1(第1年更新),以此类推。
则得出Lingo的程序:
sets:
nodes/A2,B3,B1,C4,C2,C1,D5,D3,D2,D1,E6,
arcs(nodes,nodes)/
A2,B3
A2,B1
B3,C4
B3,C1
B1,C2
B1,C1
C4,D5
C4,D1
C2,D3
C2,D1
C1,D2
C1,D1
D5,E1
D5,E6
D3,E4
D3,E1
D2,E3
D2,E1
D1,E2D1,E1
E6,F
E4,F
E3,F
E2,F
E1,F
/:
c,x;
endsets
data
:
–
17.3–
5
30
50
60
80;
enddata
n=
@size(nodes);
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
max=@sum(arcs:
c*x);
@sum(arcs(i,j)|i#eq#1:
x(i,j))=1;
@for(nodes(i)|i#ne#1#and#i#ne#n:
@sum(arcs(i,j):
x(i,j))-@sum(arcs(j,i):
x(j,i))=0
);
@sum(arcs(j,i)|i#eq#n:
x(j,i))=1;
@for(arcs:
@bin(x));
则得出程序运转结果:
(取非零的x结果)
剖析结果:
A2-B3-C4-D5-E1-F,得悉设施应当是使用5年后再更新设施,为最优更新策略。
4.2.2.运输问题
有甲、乙和丙三个城市,每年分别需要煤炭320万吨、250万吨和350万吨,由A,B两个煤矿负责
供给。
已知煤矿年产量A为400万吨,B为450万吨,从两煤矿至各城市煤炭运价如表4.2所示。
因为需
求大于供给,经磋商均衡,甲城市在必需时可少供给0-30万吨,乙城市需求量须所有知足,丙城市需求量
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
许多于270万吨。
试求将甲、乙两矿煤炭所有分派出去,知足上述条件又使总运费最低的调运方案。
解:
sets:
From/A,B/:
Capacity;
To/C1,C2,C3/:
Demand;
Routes(From,To):
D,x;
endsets
!
Theobjective;
[OBJ]min=@sum(Routes:
D*x);
!
Thesupplyconstraints;@for(From(i):
[SUP]
@sum(To(j):
x(i,j))<=Capacity(i));
!
Thedemandconstraints;
@for(To(j):
[DEM]
@sum(From(i):
x(i,j))>=Demand(j));
!
Herearetheparameters;data:
Capacity=400,450;
Demand=320,250,380;
D=15,18,22,21,25,16;
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
Enddata
程序运转结果以下:
(1)
甲
甲’
乙
丙
丙’
销量
A
15
15
19
22
22
400
B
21
21
25
16
16
450
C
M
0
M
M
0
70
运量
290
30
250
270
80
(2)
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
甲
甲’
乙
丙
丙’
销量
A
15
15
18
22
22
400
-6
B
21
21
25
16
16
450
0
C
M
0
M
M
0
70
-16
产量
290
30
250
270
80
21
21
24
16
16
(3)
甲
甲’
乙
丙
丙’
销量
A
15
15
19
22
22
400
B
21
21
25
16
16
450
C
M
0
M
M
0
70
运量
290
30
250
270
80
(4)
甲
甲’
乙
丙
丙’
销量
A
15
15
18
22
22
400
-6
B
21
21
25
16
16
450
0
C
M
30
M
M
0
70
-16
产量
290
30
250
270
80
21
16
24
16
16
结论:
调整后最优方案的最低花费:
150*15+250*18+140*21+270*16+40*16+30*0+40*0=14650万元
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
4.2.3.生产计划与库存管理
(1)某企业生产一种除臭剂,它在1至4季度的生产成本、生产量及订货量表4.3所示。
假如除臭剂在
生产当季没有交货,保存在库房里除臭剂每盒每季度还需1元钱的储藏花费。
假如某个季度的货物供给量
不足,则同意缓期交货,缓期交货的罚金是每盒每季度3元。
请企业希望拟订一个成本最低(包含储藏花费
和罚金)的除臭剂的生产计划,问各季度应生产多少?
(2)假如产品不同意缓期交货,则企业考虑工人加班,已知加班生产出产品的成本要比原成本超出
20%,
且每季度加班最多生产
2万盒。
问:
在这类状况下,将怎样安排生产,使总成本最少
?
解:
(1)设第一季度、第二季度、第三季度、第四时度生产量分别为a、b、c、d,a1为第一季度后
节余量,b1为第二季度后节余量,c1为第三季度后节余量,d1为第四时度后的节余量。
每季度的生产的除臭剂应当小于等于最大产量,大于等于订货量,第一个季度认为的季度中
实质货物量应当等于上月的节余量加该月的产量,以此类推,能够得出;
LINGO的程序:
model:
min=5*a+5*b+6*c+6*d+ya1+b1+c1+d1;
a>=10;
a<=14;
a1=a-10;
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
b+a1>=14;
b<=15;
b1=b+a1-14;
c+b1>=20;
c<=15;
c1=c+b1-20;
d+c1>=8;
d<=13;
d1=d+c1-8;
end
程序运转结果以下:
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
第一个季度应生产14万盒,第二季度应当生产15万盒,第三季度应当生产15万盒,第
四时度应当生产8万盒除臭剂。
最低花费为288万元。
(2)第1季度加班生产的产品为y1盒,
第2季度加班生产的产品为y2盒,
第3季度加班生产的产品为y3盒,
第4季度加班生产的产品为y3盒,
LINGO的程序:
Model:
min=8*a+9*y1+7*b+8*y2+7*c+8.2*y3+6*d+7.2*y4-78;
a+y1+b+y2+c+y3+d+y4=52;
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
a<=13;
a+y1>=10;
b<=15;
a+b+y1+y2>=24;
c<=15;
a+b+c+y1+y2+y3>=44;
d<=13;
End
Lingo程序运转结果:
Lingo运转结果可得:
安排生产:
第一季度正常生产13万盒,不加班生产;第二季度正常生产15万,加班生产1万
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
盒;第三季度正常生产15万,不加班生产;第四时度生产8万盒,不加班生产。
总成本最少为
292万元。
4.2.4.指派问题
某企业需要把4项工作派给4名工人,每名工人达成每项工作的花费如表4.4所示,此中甲不可以达成
工作C,丙不可以达成工作D。
(1)确立每名工人达成工作的最优方案;
(2)假定有此外一名工人(戊)能达成这4项工作,达成每项工作相应花费分别为60、45、30和80元。
能否用这名新工人(戊)替代本来的某位工人?
(3)假定企业有了第5项工作(E),4名工人(甲、乙、丙、丁)达成工作E的花费分别为20、10、20
和80元。
这项新工作E比原有的四项工作(A,B,C,D)的某一项优先吗?
解:
依据题意剖析方案。
利用lingo的程序(不行能任务设成999,求min)
sets:
Flight/1..4/;
Assign(Flight,Flight):
c,x;
endsets
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
data:
c=50
50
999
20
70
40
20
30
90
30
50
999
70
20
60
70
;
enddata
min=@sum(Assign:
c*x);
@for(Flight(i):
@sum(Flight(j):
x(i,j))=1;
@sum(Flight(j):
x(j,i))=1;
);
Lingo程序运转得:
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
最优方案:
甲达成工作D,乙达成C,丙达成B,丁达成A。
总花费为140元
(2)依据题意增添一个工人(戊),设替代丙方案(且丁达成B任务)。
Lingo的程序:
sets:
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
Flight/1..5/;
Assign(Flight,Flight):
c,x;
endsets
data:
c=50
50
999
20999
70
40
20
30999
90
30
50
999999
70
20
60
70
999
60
45
30
80
999;
enddata
min=@sum(Assign:
c*x);
@for(Flight(i):
@sum(Flight(j):
x(i,j))=1;
@sum(Flight(j):
x(j,i))=1;
);
Lingo程序运转得:
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
结论:
1119-999=120,花费减少120元。
甲达成D,乙达成C,丙达成5(去掉),丁达成
B,戊达成A。
(3)Lingo的程序:
sets:
Flight/1..5/;
Assign(Flight,Flight):
c,x;
endsets
data:
c=50
50
99920
20
70
40
20
30
10
90
30
50
999
20
70
20
60
70
80
999999999999
999
;
enddata
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
min=@sum(Assign:
c*x);
@for(Flight(i):
@sum(Flight(j):
x(i,j))=1;
@sum(Flight(j):
x(j,i))=1;
);
Lingo程序运转得:
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
结论:
1079-999=80,甲达成D,乙达成C,丙达成E,丁达成B,即E比A优先
4.2.5.旅游商问题
张三住在A市,他在A,B,C,D,E和F市都有保险代理业务.因为业务关系,他每个月都需要接见这些城
市作一次。
表4.5给出了每个城市之间的距离,试剖析他依据什么的次序接见这些城市使得总旅游的距离
最短?
(1)用启迪式算法求解;
(2)用LINGO软件求解。
解:
(1)用启迪式算法求解
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
由题意得悉,以下几条最为便利的路径:
A-〉B-〉C-〉D-〉E-〉F-〉A
行程
=588+129+483+1288+440+825=3753
公里;
A-〉B-〉C-〉D-〉F-〉E-〉A
行程
=588+129+483+1100+440+1096=3836
公里;
A-〉B-〉C-〉E-〉F-〉D-〉A
行程
=588+129+1638+440+1100+334=4229
公里;
A-〉B-〉C-〉E-〉D-〉F-〉A
行程
=588+129+1638+1288+1100+825=5568
公里;
A-〉B-〉D-〉C-〉E-〉F-〉A
行程
=588+448+483+1638+440+825=4422
公里;
A-〉B-〉D-〉C-〉F-〉E-〉A
行程
=588+448+483+1346+440+1096=4401
公里;
A-〉B-〉D-〉E-〉C-〉F-〉A
行程
=588+448+1288+1638+1364+825=6151
公里;
A-〉B-〉D-〉E-〉F-〉C-〉A
行程
=588+448+1288+440+1364+542=4670
公里;
A-〉B-〉D-〉F-〉C-〉E-〉A
行程
=588+448+1100+1346+1638+1096=6234
公里;
A-〉B-〉D-〉F-〉E-〉C-〉A
行程
=588+448+1100+440+1638+542=4756
公里;
A-〉C-〉B-〉D-〉E-〉F-〉A
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
行程=542+129+448+1288+440+825=3672公里;
A-〉C-〉B-〉D-〉F-〉E-〉A
行程=542+129+448+1100+440+1096=3755公里;
A-〉C-〉B-〉E-〉D-〉F-〉A
行程=542+129+1675+1288+1100+825=5559公里;
A-〉C-〉B-〉E-〉F-〉D-〉A
行程=542+129+1675+440+1100+825=4711公里;
A-〉C-〉B-〉F-〉D-〉E-〉A
行程=542+129+1410+1100+1288+1096=5565公里;
A-〉C-〉B-〉F-〉E-〉D-〉A
行程=542+129+1410+440+1288+334=4143公里;
A-〉C-〉D-〉B-〉E-〉F-〉A
行程=542+483+448+1675+440+825=4413公里;
A-〉C-〉D-〉B-〉F-〉E-〉A
行程=542+483+448+1410+440+1096=4419公里;
A-〉C-〉D-〉E-〉B-〉F-〉A
行程=542+483+1288+1675+1410+825=6223公里;
(2)用LINGO软件求解
LINGO的程序:
sets:
city/A,B,C,D,E,F/:
u;
link(city,city):
w,x;
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
endsets
data:
w=0,588,542,334,1096,825
588,0,129,448,1675,1410
542,129,0,483,1638,1346
334,448,483,0,1288,1100
1096,1675,1638,1288,0,440
825,1410,1346,1100,440,0;
enddata
n=@size(city);
min=@sum(link:
w*x);
@for(city(k):
@sum(city(i)|i#ne#k:
x(i,k))=1;
@sum(city(j)|j#ne#k:
x(k,j))=1;
);
@for(link(i,j)|
i#gt#1#and#j#gt#1#and#i#ne#j:
u(i)-u(j)+n*x(i,j)<=n-1;
);
@for(link:
@bin(x));
程序运转结果以下:
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
从答案可知:
最短距离为A→C→B→D→E→F→A最短距离3672。
4.2.6.最优连线问题
求5题中6个城市(A,B,C,D,E,F)的最优连线,城市之间的距离如表4.5所示。
解:
sets:
city/A
B
C
DE
F/:
u;
link(city,city):
w,x;
endsets
data:
!
to:
A
B
C
D
E
F;
w=
0
588
542
334
1096
825
!
fromA;
588
0
129
448
1675
1410
!
fromB;
542
129
0
483
1638
1346
!
fromC;
334
448
483
0
1288
1100
!
fromD;
工程数学4.图论(组合优化)实验Gxxxxxxxxxxxxxxxxxxxxx
10961675
1638
12880
440!
fromE;
8251