数学模型数学建模 第六次作业 图论组合优化实验.docx
《数学模型数学建模 第六次作业 图论组合优化实验.docx》由会员分享,可在线阅读,更多相关《数学模型数学建模 第六次作业 图论组合优化实验.docx(69页珍藏版)》请在冰豆网上搜索。
数学模型数学建模第六次作业图论组合优化实验
数学模型第六次作业图论(组合优化)实验
6.1实验目的与要求
●学会用图论(组合优化)的方法或思想建模
●学会用LINGO软件求解组合优化问题
●简历相应的数学模型,并对计算结果进行分析和讨论。
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,B3A2,B1
B3,C4B3,C1B1,C2B1,C1
C4,D5C4,D1C2,D3C2,D1C1,D2C1,D1
D5,E1D5,E6D3,E4D3,E1D2,E3D2,E1D1,E2D1,E1
E6,FE4,FE3,FE2,FE1,F
/:
c,x;
endsets
data:
c=17.3-20.2
15.7-30.218.4-0.2
13.8-50.217.3-20.218.4-0.2
12.2-70.215.7-30.217.3-20.218.4-0.2
530506080;
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
得到结果如下:
Globaloptimalsolutionfound.
Objectivevalue:
139.0000
Objectivebound:
139.0000
Infeasibilities:
0.000000
Extendedsolversteps:
0
Totalsolveriterations:
0
VariableValueReducedCost
N16.000000.000000
C(A2,B3)17.300000.000000
C(A2,B1)-20.200000.000000
C(B3,C4)15.700000.000000
C(B3,C1)-30.200000.000000
C(B1,C2)18.400000.000000
C(B1,C1)-0.20000000.000000
C(C4,D5)13.800000.000000
C(C4,D1)-50.200000.000000
C(C2,D3)17.300000.000000
C(C2,D1)-20.200000.000000
C(C1,D2)18.400000.000000
C(C1,D1)-0.20000000.000000
C(D5,E1)12.200000.000000
C(D5,E6)-70.200000.000000
C(D3,E4)15.700000.000000
C(D3,E1)-30.200000.000000
C(D2,E3)17.300000.000000
C(D2,E1)-20.200000.000000
C(D1,E2)18.400000.000000
C(D1,E1)-0.20000000.000000
C(E6,F)5.0000000.000000
C(E4,F)30.000000.000000
C(E3,F)50.000000.000000
C(E2,F)60.000000.000000
C(E1,F)80.000000.000000
X(A2,B3)1.000000-17.30000
X(A2,B1)0.00000020.20000
X(B3,C4)1.000000-15.70000
X(B3,C1)0.00000030.20000
X(B1,C2)0.000000-18.40000
X(B1,C1)0.0000000.2000000
X(C4,D5)1.000000-13.80000
X(C4,D1)0.00000050.20000
X(C2,D3)0.000000-17.30000
X(C2,D1)0.00000020.20000
X(C1,D2)0.000000-18.40000
X(C1,D1)0.0000000.2000000
X(D5,E1)1.000000-12.20000
X(D5,E6)0.00000070.20000
X(D3,E4)0.000000-15.70000
X(D3,E1)0.00000030.20000
X(D2,E3)0.000000-17.30000
X(D2,E1)0.00000020.20000
X(D1,E2)0.000000-18.40000
X(D1,E1)0.0000000.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
RowSlackorSurplusDualPrice
10.0000000.000000
2139.00001.000000
30.0000000.000000
40.0000000.000000
50.0000000.000000
60.0000000.000000
70.0000000.000000
80.0000000.000000
90.0000000.000000
100.0000000.000000
110.0000000.000000
120.0000000.000000
130.0000000.000000
140.0000000.000000
150.0000000.000000
160.0000000.000000
170.0000000.000000
180.0000000.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:
!
2Warehouse,3CustomerTransportationProblem;
sets:
Warehouse/A,B/:
Supply;
Customer/1,2,3/:
Gain;
Routes(Warehouse,Customer):
c,x;
Endsets
!
Theobjective;
[OBJ]min=@sum(Routes:
c*x);
!
Thesupplyconstraints;
@for(Warehouse(i):
[SUP]
@sum(Customer(j):
x(i,j))<=Supply(i));
!
Thedemandconstraints;
@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;
!
Herearetheparameters;
data:
Supply=400,450;
Gain=320,250,380;
c=15,18,22,
21,25,16;
Enddata
end
得到如下结果:
Globaloptimalsolutionfound.
Objectivevalue:
14650.00
Infeasibilities:
0.000000
Totalsolveriterations:
4
VariableValueReducedCost
SUPPLY(A)400.00000.000000
SUPPLY(B)450.00000.000000
GAIN
(1)250.00000.000000
GAIN
(2)290.00000.000000
GAIN(3)310.00000.000000
C(A,1)15.000000.000000
C(A,2)18.000000.000000
C(A,3)22.000000.000000
C(B,1)21.000000.000000
C(B,2)25.000000.000000
C(B,3)16.000000.000000
X(A,1)150.00000.000000
X(A,2)250.00000.000000
X(A,3)0.00000012.00000
X(B,1)140.00000.000000
X(B,2)0.0000001.000000
X(B,3)310.00000.000000
因此得到结论:
由A矿向甲乙丙三座城市的送矿量(万吨)为150、250、0;由B矿向甲乙丙三座城市的送矿量(万吨)为140、0、310,此时总运输费最小,为14650万元。
3、生产计划与库存管理
(1)某公司生产一种除臭剂,它在1至4季度的生产成本、生产量及订货量表6.3所示.如果除臭剂在生产当季没有交货,保管在仓库里除臭剂每盒每季度还需1元钱的储存费用。
如果某个季度的货物供应量不足,则允许延期交货,延期交货的罚金是每盒每季度3元。
请公司希望制定一个成本最低(包括储存费用和罚金)的除臭剂的生产计划,问各季度应生产多少?
(2)如果产品不允许延期交货,则公司考虑工人加班,已知加班生产出产品的成本要比原成本高出20%,且每季度加班最多生产2万盒.问:
在这种情况下,将如何安排生产,使总成本最少?
解:
(1)根据题意,将此问题转化为运输问题,将每季度的生产量看作是供方,将每季度的订货量看作是需求方,将不属于本季度供货的量视为其他季度运输过来的,那么具体思路作图如下:
红色字样为第一季度运输每件费用,
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:
!
4Warehouse,4CustomerTransportationProblem;
sets:
Warehouse/1..4/:
a;
Customer/1..4/:
b;
Routes(Warehouse,Customer):
c,x;
Endsets
!
Herearetheparameters;
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
!
Theobjective;
[OBJ]min=@sum(Routes:
c*x);
!
Thesupplyconstraints;
@for(Warehouse(i):
[SUP]
@sum(Customer(j):
x(i,j))<=a(i));
!
Thedemandconstraints;
@for(Customer(j):
[DEM]
@sum(Warehouse(i):
x(i,j))=b(j));
end
得到如下结果:
Globaloptimalsolutionfound.
Objectivevalue:
294.0000
Infeasibilities:
0.000000
Totalsolveriterations:
7
VariableValueReducedCost
A
(1)13.000000.000000
A
(2)15.000000.000000
A(3)15.000000.000000
A(4)13.000000.000000
B
(1)10.000000.000000
B
(2)14.000000.000000
B(3)20.000000.000000
B(4)8.0000000.000000
C(1,1)5.0000000.000000
C(1,2)6.0000000.000000
C(1,3)7.0000000.000000
C(1,4)8.0000000.000000
C(2,1)8.0000000.000000
C(2,2)5.0000000.000000
C(2,3)6.0000000.000000
C(2,4)7.0000000.000000
C(3,1)12.000000.000000
C(3,2)9.0000000.000000
C(3,3)6.0000000.000000
C(3,4)7.0000000.000000
C(4,1)15.000000.000000
C(4,2)12.000000.000000
C(4,3)9.0000000.000000
C(4,4)6.0000000.000000
X(1,1)10.000000.000000
X(1,2)3.0000000.000000
X(1,3)0.0000000.000000
X(1,4)0.0000004.000000
X(2,1)0.0000004.000000
X(2,2)11.000000.000000
X(2,3)4.0000000.000000
X(2,4)0.0000004.000000
X(3,1)0.0000008.000000
X(3,2)0.0000004.000000
X(3,3)15.000000.000000
X(3,4)0.0000004.000000
X(4,1)0.0000008.000000
X(4,2)0.0000004.000000
X(4,3)1.0000000.000000
X(4,4)8.0000000.000000
RowSlackorSurplusDualPrice
OBJ294.0000-1.000000
SUP
(1)0.0000002.000000
SUP
(2)0.0000003.000000
SUP(3)0.0000003.000000
SUP(4)4.0000000.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:
!
4Warehouse,4CustomerTransportationProblem;
sets:
Warehouse/1..4/:
a;
Customer/1..4/:
b;
Routes(Warehouse,Customer):
c,x;
Endsets
!
Herearetheparameters;
data:
a=15,17,17,15;
b=10,14,20,8;
c=5,6,6,6,
100000,5,6,6,
1000000,1000000,6,7.2,
1000000,1000000,1000000,6;
Enddata
!
Theobjective;
[OBJ]min=@sum(Routes:
c*x);
!
Thesupplyconstraints;
@for(Warehouse(i):
[SUP]
@sum(Customer(j):
x(i,j))<=a(i));
!
Thedemandconstraints;
@for(Customer(j):
[DEM]
@sum(Warehouse(i):
x(i,j))=b(j));
end
得到如下结果:
Globaloptimalsolutionfound.
Objectivevalue:
288.0000
Infeasibilities:
0.000000
Totalsolveriterations:
8
VariableValueReducedCost
A
(1)15.000000.000000
A
(2)17.000000.000000
A(3)17.000000.000000
A(4)15.000000.000000
B
(1)10.000000.000000
B
(2)14.000000.000000
B(3)20.000000.000000
B(4)8.0000000.000000
C(1,1)5.0000000.000000
C(1,2)6.0000000.000000
C(1,3)6.0000000.000000
C(1,4)6.0000000.000000
C(2,1)100000.00.000000
C(2,2)5.0000000.000000
C(2,3)6.0000000.000000
C(2,4)6.0000000.000000
C(3,1)1000000.0.000000
C(3,2)1000000.0.000000
C(3,3)6.0000000.000000
C(3,4)7.2000000.000000
C(4,1)1000000.0.000000
C(4,2)1000000.0.000000
C(4,3)1000000.0.000000
C(4,4)6.0000000.000000
X(