资源描述
数学模型第六次作业 图论(组合优化)实验
6.1 实验目的与要求
l 学会用图论(组合优化)的方法或思想建模
l 学会用LINGO软件求解组合优化问题
l 简历相应的数学模型,并对计算结果进行分析和讨论。
6.2 基本实验
1.设备更新问题
某公司需要对一台已经使用了2年的机器确定今后4年(n=4)的最优更新策略.公司要求,用了6年的机器必须更新,购买一台新机器的价格是100万元,表6.1给出了该问题的数据,请给出设备的更新策略。
解:
根据题意可以设A, B, C, D…为判断年度,用数字表示机器已经使用的时间,则有
第1年:机器使用的情况可以表示为A2;
第2年:若第1年机器不更新则情况表示成B3,若第一年机器更新则第二年应表示成B1;
……
使用Lingo软件进行计算并取最优解,编程如下:
model:
sets:
nodes/A2, B3, B1, C4, C2, C1, D5, D3, D2, D1,E6,
E4, E3, E2, E1, F/;
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,E2 D1,E1
E6,F E4,F E3,F E2,F E1,F
/: c, x;
endsets
data:
c = 17.3 -20.2
15.7 -30.2 18.4 -0.2
13.8 -50.2 17.3 -20.2 18.4 -0.2
12.2 -70.2 15.7 -30.2 17.3 -20.2 18.4 -0.2
5 30 50 60 80;
enddata
n = @size(nodes);
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));
End
得到结果如下:
Global optimal solution found.
Objective value: 139.0000
Objective bound: 139.0000
Infeasibilities: 0.000000
Extended solver steps: 0
Total solver iterations: 0
Variable Value Reduced Cost
N 16.00000 0.000000
C( A2, B3) 17.30000 0.000000
C( A2, B1) -20.20000 0.000000
C( B3, C4) 15.70000 0.000000
C( B3, C1) -30.20000 0.000000
C( B1, C2) 18.40000 0.000000
C( B1, C1) -0.2000000 0.000000
C( C4, D5) 13.80000 0.000000
C( C4, D1) -50.20000 0.000000
C( C2, D3) 17.30000 0.000000
C( C2, D1) -20.20000 0.000000
C( C1, D2) 18.40000 0.000000
C( C1, D1) -0.2000000 0.000000
C( D5, E1) 12.20000 0.000000
C( D5, E6) -70.20000 0.000000
C( D3, E4) 15.70000 0.000000
C( D3, E1) -30.20000 0.000000
C( D2, E3) 17.30000 0.000000
C( D2, E1) -20.20000 0.000000
C( D1, E2) 18.40000 0.000000
C( D1, E1) -0.2000000 0.000000
C( E6, F) 5.000000 0.000000
C( E4, F) 30.00000 0.000000
C( E3, F) 50.00000 0.000000
C( E2, F) 60.00000 0.000000
C( E1, F) 80.00000 0.000000
X( A2, B3) 1.000000 -17.30000
X( A2, B1) 0.000000 20.20000
X( B3, C4) 1.000000 -15.70000
X( B3, C1) 0.000000 30.20000
X( B1, C2) 0.000000 -18.40000
X( B1, C1) 0.000000 0.2000000
X( C4, D5) 1.000000 -13.80000
X( C4, D1) 0.000000 50.20000
X( C2, D3) 0.000000 -17.30000
X( C2, D1) 0.000000 20.20000
X( C1, D2) 0.000000 -18.40000
X( C1, D1) 0.000000 0.2000000
X( D5, E1) 1.000000 -12.20000
X( D5, E6) 0.000000 70.20000
X( D3, E4) 0.000000 -15.70000
X( D3, E1) 0.000000 30.20000
X( D2, E3) 0.000000 -17.30000
X( D2, E1) 0.000000 20.20000
X( D1, E2) 0.000000 -18.40000
X( D1, E1) 0.000000 0.2000000
X( E6, F) 0.000000 -5.000000
X( E4, F) 0.000000 -30.00000
X( E3, F) 0.000000 -50.00000
X( E2, F) 0.000000 -60.00000
X( E1, F) 1.000000 -80.00000
Row Slack or Surplus Dual Price
1 0.000000 0.000000
2 139.0000 1.000000
3 0.000000 0.000000
4 0.000000 0.000000
5 0.000000 0.000000
6 0.000000 0.000000
7 0.000000 0.000000
8 0.000000 0.000000
9 0.000000 0.000000
10 0.000000 0.000000
11 0.000000 0.000000
12 0.000000 0.000000
13 0.000000 0.000000
14 0.000000 0.000000
15 0.000000 0.000000
16 0.000000 0.000000
17 0.000000 0.000000
18 0.000000 0.000000
分析结果容易得出最佳的路径为A2-B3-C4-D5-E1-F,因此得出结论,设备的最优更新策略应该是使用5年。
2. 运输问题
有甲、乙和丙三个城市,每年分别需要煤炭320万吨、250万吨和350万吨,由A, B两个煤矿负责供应.已知煤矿年产量A为400万吨,B为450万吨,从两煤矿至各城市煤炭运价如表6.2所示.由于需求大于供应,经协商平衡,甲城市在必要时可少供应0-30万吨,乙城市需求量须全部满足,丙城市需求量不少于270万吨。试求将甲、乙两矿煤炭全部分配出去,满足上述条件又使总运费最低的调运方案。
解:
根据题意认为该问题是一个运输线性规划的典型问题。设甲、乙、丙三个城市的的煤炭获取量(Customer)1, 2, 3;A、B两个煤矿的煤炭贮存(Warehouse)表达为A, B;煤矿与各城市之间的煤炭运价为P,用x表示决策点。使用Lingo软件进行计算并取最优解,编程如下:
Model:
!2 Warehouse, 3 Customer Transportation Problem;
sets:
Warehouse / A, B/: Supply;
Customer / 1, 2, 3/: Gain;
Routes(Warehouse, Customer): c, x;
Endsets
! The objective;
[OBJ] min = @sum(Routes: c * x);
! The supply constraints;
@for(Warehouse(i): [SUP]
@sum(Customer(j): x(i,j)) <= Supply(i));
! The demand constraints;
@sum(warehouse(i): x(i,1)) >290;
@sum(warehouse(i): x(i,1)) <320;
@sum(warehouse(i): x(i,2)) =250;
@sum(warehouse(i): x(i,3)) >270;
@sum(warehouse(i): x(i,3)) >350;
! Here are the parameters;
data:
Supply = 400, 450 ;
Gain = 320, 250, 380 ;
c = 15, 18, 22,
21, 25, 16;
Enddata
end
得到如下结果:
Global optimal solution found.
Objective value: 14650.00
Infeasibilities: 0.000000
Total solver iterations: 4
Variable Value Reduced Cost
SUPPLY( A) 400.0000 0.000000
SUPPLY( B) 450.0000 0.000000
GAIN( 1) 250.0000 0.000000
GAIN( 2) 290.0000 0.000000
GAIN( 3) 310.0000 0.000000
C( A, 1) 15.00000 0.000000
C( A, 2) 18.00000 0.000000
C( A, 3) 22.00000 0.000000
C( B, 1) 21.00000 0.000000
C( B, 2) 25.00000 0.000000
C( B, 3) 16.00000 0.000000
X( A, 1) 150.0000 0.000000
X( A, 2) 250.0000 0.000000
X( A, 3) 0.000000 12.00000
X( B, 1) 140.0000 0.000000
X( B, 2) 0.000000 1.000000
X( B, 3) 310.0000 0.000000
因此得到结论:由A矿向甲乙丙三座城市的送矿量(万吨)为150、250、0;由B矿向甲乙丙三座城市的送矿量(万吨)为140、0、310,此时总运输费最小,为14650万元。
3、生产计划与库存管理
(1)某公司生产一种除臭剂,它在1至4季度的生产成本、生产量及订货量表6.3所示.如果除臭剂在生产当季没有交货,保管在仓库里除臭剂每盒每季度还需1元钱的储存费用。如果某个季度的货物供应量不足,则允许延期交货,延期交货的罚金是每盒每季度3元。请公司希望制定一个成本最低(包括储存费用和罚金)的除臭剂的生产计划,问各季度应生产多少?
(2)如果产品不允许延期交货,则公司考虑工人加班,已知加班生产出产品的成本要比原成本高出20%,且每季度加班最多生产2万盒.问:在这种情况下,将如何安排生产,使总成本最少?
解:
(1) 根据题意,将此问题转化为运输问题,将每季度的生产量看作是供方,将每季度的订货量看作是需求方,将不属于本季度供货的量视为其他季度运输过来的,那么具体思路作图如下:
红色字样为第一季度运输每件费用,
5+1
6
6+3
6+3×2
5+1×2
5
5+3
5+1×3
5+1×2
5+1
5
季度2订货量
季度3订货量
季度4订货量
季度1生产量
季度2生产量
季度3生产量
季度4生产量
季度1订货量
6+3×3
6+3×2
6+3×1
6
6+1
红色字样为季度1生产向4个季度的运送量;
绿色字样为季度2生产向4个季度的运送量;
蓝色字样为季度2生产向4个季度的运送量;
黑色字样为季度2生产向4个季度的运送量。
列出配送供需表格:
季度1需求
季度2需求
季度3需求
季度4需求
季度1配送单价
(万元/万盒)
5
6
6
6
季度2配送单价
(万元/万盒)
8
5
6
7
季度3配送单价
(万元/万盒)
12
9
6
7
季度4配送单价
(万元/万盒)
15
12
9
6
设cij为从季度生产Ai到季度需求Bj的配送单价,xij为从季度生产Ai到季度需求Bj的运输量,因此总的费用为:
第i个季度的运出量应该小于或等于该季度的生产量:
第j个季度的运入量应该等于该季度的需求量:
根据此模型写出Lingo程序并求出最优解:
Model:
!4 Warehouse, 4 Customer Transportation Problem;
sets:
Warehouse /1..4/: a;
Customer /1..4/: b;
Routes(Warehouse, Customer): c, x;
Endsets
! Here are the parameters;
data:
a= 13, 15, 15, 13 ;
b= 10, 14, 20, 8 ;
c = 5, 6, 7, 8,
8, 5, 6, 7,
12, 9, 6, 7,
15, 12, 9, 6;
Enddata
! The objective;
[OBJ] min = @sum(Routes: c * x);
! The supply constraints;
@for(Warehouse(i): [SUP]
@sum(Customer(j): x(i,j))<= a(i));
! The demand constraints;
@for(Customer(j): [DEM]
@sum(Warehouse(i): x(i,j))= b(j));
end
得到如下结果:
Global optimal solution found.
Objective value: 294.0000
Infeasibilities: 0.000000
Total solver iterations: 7
Variable Value Reduced Cost
A( 1) 13.00000 0.000000
A( 2) 15.00000 0.000000
A( 3) 15.00000 0.000000
A( 4) 13.00000 0.000000
B( 1) 10.00000 0.000000
B( 2) 14.00000 0.000000
B( 3) 20.00000 0.000000
B( 4) 8.000000 0.000000
C( 1, 1) 5.000000 0.000000
C( 1, 2) 6.000000 0.000000
C( 1, 3) 7.000000 0.000000
C( 1, 4) 8.000000 0.000000
C( 2, 1) 8.000000 0.000000
C( 2, 2) 5.000000 0.000000
C( 2, 3) 6.000000 0.000000
C( 2, 4) 7.000000 0.000000
C( 3, 1) 12.00000 0.000000
C( 3, 2) 9.000000 0.000000
C( 3, 3) 6.000000 0.000000
C( 3, 4) 7.000000 0.000000
C( 4, 1) 15.00000 0.000000
C( 4, 2) 12.00000 0.000000
C( 4, 3) 9.000000 0.000000
C( 4, 4) 6.000000 0.000000
X( 1, 1) 10.00000 0.000000
X( 1, 2) 3.000000 0.000000
X( 1, 3) 0.000000 0.000000
X( 1, 4) 0.000000 4.000000
X( 2, 1) 0.000000 4.000000
X( 2, 2) 11.00000 0.000000
X( 2, 3) 4.000000 0.000000
X( 2, 4) 0.000000 4.000000
X( 3, 1) 0.000000 8.000000
X( 3, 2) 0.000000 4.000000
X( 3, 3) 15.00000 0.000000
X( 3, 4) 0.000000 4.000000
X( 4, 1) 0.000000 8.000000
X( 4, 2) 0.000000 4.000000
X( 4, 3) 1.000000 0.000000
X( 4, 4) 8.000000 0.000000
Row Slack or Surplus Dual Price
OBJ 294.0000 -1.000000
SUP( 1) 0.000000 2.000000
SUP( 2) 0.000000 3.000000
SUP( 3) 0.000000 3.000000
SUP( 4) 4.000000 0.000000
DEM( 1) 0.000000 -7.000000
DEM( 2) 0.000000 -8.000000
DEM( 3) 0.000000 -9.000000
DEM( 4) 0.000000 -6.000000
分析结果易知,最佳的方案为:第一季度生产14万盒,给出10万盒满足第一季度要求,库存3万盒,不拖欠;第二季度生产15万盒,给出11万盒,连同第一季度库存3万盒加起来为14万盒满足第二季度要求,库存4万盒,不拖欠;第三季度生产15万盒,全部给出,连同第二季度库存4万盒加起来19万盒,拖欠1万盒;第四季度生产9万盒,还清第三季度拖欠1万盒,剩下8万盒满足第四季度需求。此方案下总成本最小,为294万元。
(2) 分析题目,可以将工人加班的费用视为除本季生产外为接下来其他季度供应货物的费用。参考如下配送供需表格:
季度1需求
季度2需求
季度3需求
季度4需求
季度1配送单价
(万元/万盒)
5
6
6
6
季度2配送单价
(万元/万盒)
-
5
6
6
季度3配送单价
(万元/万盒)
-
-
6
7.2
季度4配送单价
(万元/万盒)
-
-
-
6
对于Lingo程序的改变,只需将每季度生产量扩充为+2万盒即可,对于表格中午单价的位置,使用极大数10^5来表示无穷大,
根据此模型写出Lingo程序并求出最优解:
Model:
!4 Warehouse, 4 Customer Transportation Problem;
sets:
Warehouse /1..4/: a;
Customer /1..4/: b;
Routes(Warehouse
展开阅读全文