数学建模作业实验4.docx
《数学建模作业实验4.docx》由会员分享,可在线阅读,更多相关《数学建模作业实验4.docx(32页珍藏版)》请在冰豆网上搜索。
数学建模作业实验4
数学建模作业——实验4
学院:
软件学院
姓名:
学号:
班级:
邮箱:
电话:
日期:
2016年6月20日
基本实验
1.设备更新问题
某公司需要对一台已经使用了2年的机器确定今后4年(n=4)的最优更新策略。
公司要求,用了6年的机器必须更新,购买一台新机器的价值是100万元,表4.1给出了该问题的数据,请给出设备的更新策略。
答:
设Cij为从第2年开始算,使用i年到j年的购买设备的总消费
C12=100-17.2+1.5-50=34.3
C13=100-15.5+1.7+1.5-30=57.7
C14=100-14+1.5+1.7+1.8-10=81
C15=100-12.2+1.5+1.7+1.8+2.2-5=90
C23=100-15.5+1.7-30=56.2
C24=100-14+1.7+1.8-10=79.5
C25=100-12.2+1.7+1.8+2.2-5=88.5
C34=100-14+1.8-10=77.8
C35=100-12.2+1.8+2.2-5=86.8
C45=100-12.2+2.2-5=85
Lingo语句:
Model:
sets:
nodes/1..5/;
arcs(nodes,nodes)|&1#lt#&2:
C,x;
endsets
data:
C=34.357.7819056.279.588.577.886.885;
enddata
n=@size(nodes);
min=@sum(arcs:
C*x);
@for(nodes(i)|i#ne#1#and#i#ne#n:
@sum(arcs(i,j):
x(i,j))=@sum(arcs(j,i):
x(j,i)));
@sum(arcs(i,j)|i#eq#1:
x(i,j))=1;
end
运算结果:
Globaloptimalsolutionfound.
Objectivevalue:
90.00000
Infeasibilities:
0.000000
Totalsolveriterations:
0
ModelClass:
LP
Totalvariables:
10
Nonlinearvariables:
0
Integervariables:
0
Totalconstraints:
5
Nonlinearconstraints:
0
Totalnonzeros:
26
Nonlinearnonzeros:
0
VariableValueReducedCost
N5.0000000.000000
C(1,2)34.300000.000000
C(1,3)57.700000.000000
C(1,4)81.000000.000000
C(1,5)90.000000.000000
C(2,3)56.200000.000000
C(2,4)79.500000.000000
C(2,5)88.500000.000000
C(3,4)77.800000.000000
C(3,5)86.800000.000000
C(4,5)85.000000.000000
X(1,2)0.00000032.80000
X(1,3)0.00000054.50000
X(1,4)0.00000076.00000
X(1,5)1.0000000.000000
X(2,3)0.00000054.50000
X(2,4)0.00000076.00000
X(2,5)0.0000000.000000
X(3,4)0.00000076.00000
X(3,5)0.0000000.000000
X(4,5)0.0000000.000000
RowSlackorSurplusDualPrice
10.0000000.000000
290.00000-1.000000
30.000000-90.00000
40.000000-88.50000
50.000000-86.80000
60.000000-85.00000
根据计算结果分析可知C15花费最少,即在第3年购买新设备第6年年底卖掉设备,最小花费为90万元。
2.汽车租赁
有一家小型汽车租赁公司,此公司有94辆可供出租的汽车,分布于10个代理点中,每个代理点的位置都以地理坐标x和y的形式给出,单位为千米。
假定两个代理点之间的距离约为它们之间欧氏距离(即最短距离)的1.3倍。
表4.2给出了各个代理点的位置坐标,以及第二天早晨汽车租赁的需求量和前一天晚上各个代理点拥有的汽车数。
假定汽车运转的成本为每辆车每千米5元,请找出如何在各个代理点之间调度分配汽车才能够满足各处的需求,并且使运转成本最低。
答:
问题分析:
拥有量大于需求量的代理点只能出多余的车辆,假如转移出的车辆多了,还要从别的代理点从新转移再转移车辆,这样会使转移的距离变长,运转成本变多,因此,代理点要么转进,要么转出。
各代理点的进与出的车辆数如下图
LINGO语句:
Model:
min=28.28427*X21+35*X51+11.18034*X81+11*X91
+10.19804*X23+19.72308*X53+13*X83+12.20656*X93
+12.80625*X24+13*X54+25.07987*X84+22.47221*X94
+13.92839*X26+25.07987*X56+31.76476*X86+33.30165*X96
+16.55295*X27+40.36087*X57+17*X87+27.65863*X97
+18.68154*X210+36.24914*X510+5.830952*X810+17.49286*X910;X21+X23+X24+X26+X27+X210=7;
X51+X53+X54+X56+X57+X510=3;
X81+X83+X84+X86+X87+X810=4;
X91+X93+X94+X96+X97+X910=6;
X21+X51+X81+X91=2;
X23+X53+X83+X93=4;
X24+X54+X84+X94=3;
X26+X56+X86+X96=5;
X27+X57+X87+X99=1;
X210+X510+X810+X910=5;
End
运算结果:
Globaloptimalsolutionfound.
Objectivevalue:
234.8293
Infeasibilities:
0.000000
Totalsolveriterations:
9
ModelClass:
LP
Totalvariables:
25
Nonlinearvariables:
0
Integervariables:
0
Totalconstraints:
11
Nonlinearconstraints:
0
Totalnonzeros:
72
Nonlinearnonzeros:
0
VariableValueReducedCost
X912.0000000.000000
X231.0000000.000000
X933.0000000.000000
X543.0000000.000000
X265.0000000.000000
X271.0000000.000000
X8104.0000000.000000
X9101.0000000.000000
W=234.829*1.3*5=1526.39
结果分析:
各个代理点之间调度分配汽车的方法是:
代理点9转运出2辆汽车到代理点1;
代理点2转运出1辆汽车到代理点3;
代理点9再转运出3辆汽车带代理点3
代理点5转运出3辆汽车到代理点4;
代理点2转运出5辆汽车到代理点6;
代理点2转运出1辆汽车到代理点7;
代理点8转运出4辆汽车到代理点10;
代理点9再转运出1辆汽车带代理点1。
最低转运成本为1526.39元。
答:
(1)设每周的产量分别为m1,m2,m3,m4,存储量为n1,n2,n3,则有:
min=5.0m1+5.1m2+5.4m3+5.5m4+0.2(n1+n2+n3)
m1-n1=15
m2+n1-n2=25
m3+n2-n3=35
m4+n3=25
m1<=30,m2<=40,m3<=45,m4<=20
LINGO语句:
min=5.0*m1+5.1*m2+5.4*m3+5.5*m4+0.2*(n1+n2+n3);
m1-n1=15;
m2+n1-n2=25;
m3+n2-n3=35;
m4+n3=25;
m1<=30;m2<=40;m3<=45;m4<=20;
运行结果:
Globaloptimalsolutionfound.
Objectivevalue:
528.0000
Infeasibilities:
0.000000
Totalsolveriterations:
2
ModelClass:
LP
Totalvariables:
7
Nonlinearvariables:
0
Integervariables:
0
Totalconstraints:
9
Nonlinearconstraints:
0
Totalnonzeros:
21
Nonlinearnonzeros:
0
VariableValueReducedCost
M115.000000.000000
M240.000000.000000
M325.000000.000000
M420.000000.000000
N215.000000.000000
N35.0000000.000000
RowSlackorSurplusDualPrice
20.000000-5.000000
30.000000-5.200000
40.000000-5.400000
50.000000-5.600000
70.0000000.1000000
90.0000000.1000000
结果分析:
第一周生产15千箱,第二周生产40千箱,第三周生产25千箱,第四周生产20千箱,总费用最低为528千元。
(2)由于检修将占用当周15千箱的生产能力,但会使检修以后每周的生产能力提高5千箱,用w1,w2,w3,w4分别代表四周,模型修改为:
min=5.0m1+5.1m2+5.4m3+5.5m4+0.2(n1+n2+n3)
m1-n1=15
m2+n1-n2=25
m3+n2-n3=35
m4+n3=25
m1<=30,m2<=40,m3<=45,m4<=20
m1+15w1<=30
m2+15w2-5w1<=40
m3+15w3-5w2-5w1<=45
m4+15w4-5w1-5w2-5w3<=20
w1+w2+w3+w4=1
w1,w2,w3,w4为1或者0
Lingo代码如下:
min=5.0*m1+5.1*m2+5.4*m3+5.5*m4+0.2*(n1+n2+n3);
m1-n1=15;
m2+n1-n2=25;
m3+n2-n3=35;
m4+n3=25;
m1+15*w1<30;
m2+15*w2-5*w1<40;
m3+15*w3-5*w1-5*w2<45;
m4+15*w4-5*w1-5*w2-5*w3<20;
w1+w2+w3+w4=1;
@bin(w1);@bin(w2);@bin(w3);@bin(w4);
运算结果:
Globaloptimalsolutionfound.
Objectivevalue:
527.0000
Objectivebound:
527.0000
Infeasibilities:
0.000000
Extendedsolversteps:
0
Totalsolveriterations:
6
ModelClass:
MILP
Totalvariables:
11
Nonlinearvariables:
0
Integervariables:
4
Totalconstraints:
10
Nonlinearconstraints:
0
Totalnonzeros:
35
Nonlinearnonzeros:
0
VariableValueReducedCost
M115.000000.000000
M245.000000.000000
M315.000000.000000
M425.000000.000000
N10.0000000.000000
N220.000000.000000
N30.0000000.1000000
W11.000000-0.5000000
W20.0000001.500000
W30.0000000.000000
W40.0000000.000000
RowSlackorSurplusDualPrice
1527.0000-1.000000
20.000000-5.000000
30.000000-5.200000
40.000000-5.400000
50.000000-5.500000
60.0000000.000000
70.0000000.1000000
835.000000.000000
90.0000000.000000
100.0000000.000000
结果分析:
检修应放在第一周,检修后第一周生产15千箱,第二周生产45千箱,第三周生产15千箱,第四周生产25千箱,总费用为527千元。
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)的某一项优先吗?
解答:
(1)设决策变量为Mij,当第i个人做第j项工作时,决策变量Mij=1;否则决策变量Mij=0。
甲无法完成C工作,可使用一个较大数表示如:
999;丙无法完成D工作,可使用较大数表示如:
999
LINGO语句:
model:
sets:
person/1..4/;
job/1..4/;
arrange(person,job):
time,m;
endsets
data:
time=505099920
70402030
903050999
70206070;
enddata
min=@sum(arrange:
time*m);
@for(person(i):
@sum(job(j):
m(i,j))<=2);
@for(person(i):
@sum(job(j):
m(i,j))>=1);
@for(job(j):
@sum(person(i):
m(i,j))=1);
@for(arrange:
@bin(m));
End
运行结果:
Globaloptimalsolutionfound.
Objectivevalue:
140.0000
Emtendedsolversteps:
0
Totalsolveriterations:
0
VariableValueReducedCost
TIME(1,1)50.000000.000000
TIME(1,2)50.000000.000000
TIME(1,3)999.00000.000000
TIME(1,4)20.000000.000000
TIME(2,1)70.000000.000000
TIME(2,2)40.000000.000000
TIME(2,3)20.000000.000000
TIME(2,4)30.000000.000000
TIME(3,1)90.000000.000000
TIME(3,2)30.000000.000000
TIME(3,3)50.000000.000000
TIME(3,4)999.00000.000000
TIME(4,1)70.000000.000000
TIME(4,2)20.000000.000000
TIME(4,3)60.000000.000000
TIME(4,4)70.000000.000000
M(1,1)0.00000050.00000
M(1,2)0.00000050.00000
M(1,3)0.000000999.0000
M(1,4)1.00000020.00000
M(2,1)0.00000070.00000
M(2,2)0.00000040.00000
M(2,3)1.00000020.00000
M(2,4)0.00000030.00000
M(3,1)0.00000090.00000
M(3,2)1.00000030.00000
M(3,3)0.00000050.00000
M(3,4)0.000000999.0000
M(4,1)1.00000070.00000
M(4,2)0.00000020.00000
M(4,3)0.00000060.00000
M(4,4)0.00000070.00000
RowSlackorSurplusDualPrice
1140.0000-1.000000
21.0000000.000000
31.0000000.000000
41.0000000.000000
51.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
结果分析:
甲完成工作D;乙完成C,D;丙完成B;丁完成A。
此种工作安排费用最低为140元。
(2)假设使用戊替换甲,则有:
LINGO语句:
model:
sets:
person/1..4/;
job/1..4/;
arrange(person,job):
time,m;
endsets
data:
time=60453080
70402030
903050999
70206070;
enddata
min=@sum(arrange:
time*m);
@for(person(i):
@sum(job(j):
m(i,j))<=2);
@for(person(i):
@sum(job(j):
m(i,j))>=1);
@for(job(j):
@sum(person(i):
m(i,j))=1);
@for(arrange:
@bin(m));
End
运算结果:
Globaloptimalsolutionfound.
Objectivevalue:
160.0000
Emtendedsolversteps:
0
Totalsolveriterations:
0
VariableValueReducedCost
TIME(1,1)60.000000.000000
TIME(1,2)45.000000.000000
TIME(1,3)30.000000.000000
TIME(1,4)80.000000.000000
TIME(2,1)70.000000.000000
TIME(2,2)40.000000.000000
TIME(2,3)20.000000.000000
TIME(2,4)30.000000.000000
TIME(3,1)90.000000.000000
TIME(3,2)30.000000.000000
TIME(3,3)50.000000.000000
TIME(3,4)999.00000.000000
TIME(4,1)70.000000.000000
TIME(4,2)20.000000.000000
TIME(4,3)60.000000.000000
TIME(4,4)70.000000.000000
M(1,1)1.00000060.00000
M(1,2)0.00000045.00000
M(1,3)0.00000030.00000
M(1,4)0.00000080.00000
M(2,1)0.00000070.00000
M(2,2)0.00000040.00000
M(2,3)0.00000020.00000
M(2,4)1.00000030.00000
M(3,1)0.00000090.00000
M(3,2)0.00000030.00000
M(3,3)1.00000050.00000
M(3,4)0.000000999.0000
M(4,1)0.00000070.00000
M(4,2)1.00000020.00000
M(4,3)0.00000060.00000
M(4,4)0.00000070.00000
RowSlackorSurplusDualPrice
1160