消防车的合理调配.docx
《消防车的合理调配.docx》由会员分享,可在线阅读,更多相关《消防车的合理调配.docx(16页珍藏版)》请在冰豆网上搜索。
消防车的合理调配
消防车的合理调度
论文摘要
三个消防站共计七辆消防车分别调度到三个火警地点,要使得损失最小。
研究损失与各个因素之间的关系。
我先将损失与各个站点次序到达的直接关系列出来,再根据题目中的问题将题目中的约束条件列出。
使用Lingo软件对其进行求解。
经过与实际情况的验证得到最小损失为335.
一.问题重述
某市消防中心同时接到三处火警报告,根据当前火势,三处火警地点分别需要2辆、2辆和3辆消防车前往灭火。
三处火警地点的损失将依赖于消防车到达的与时程度:
记tij为第j辆消防车到达火警地点i的时间,则三处火警地点的损失分别为6t11+4t12,7t21+3t22,9t31+8t32+5t33。
目前可供消防中心调度的消防车辆正好有7辆,分别属于三个消防站(可用消防车数量分别为3辆、2辆和2辆)。
消防车从三个消防站到三个火警地点所需的时间如下表所示。
该中心应如何调度消防车,才能使总损失最小?
消防站到三个火警地点所需要的时间
时间
火警地点1
火警地点2
火警地点3
消防站1
6
7
9
消防站2
5
8
11
消防站3
6
9
10
表1
如果三处火警地点的损失分别为4t11+6t12,3t21+7t22,5t31+8t32+9t33,调度方案是否需要改变?
二.问题分析
本题考虑的是为了每个火警地点分配消防车的问题,初步看来与线性规划中经典的运输问题有些类似,本题的问题可以看成是指派问题和运输问题的一种变形,我们下面首先把它变成一个运输问题建模求解。
三.变量假设
为了用运输问题建模求解,我们很自然地把三个消防站看成供应点,如果直接把3个火警地点看成需求点,我们却不能很方便地描述消防车到达的先后次序,因此难以确定损失的大小。
下面我们把7辆车的需求分别看成7个需求点(分别对应于到达时间t11,t12,t21,t22,t31,t32,t33)。
用Xij表示消防站i是否第j个需求点派车(1表示派车,0表示不派车),则共有21个0-1变量。
四.模型建立
题目中给出的损失函数都是消防车到达时间的线性函数,所以由所给数据进行简单的计算可知,如果消防站1向第6个需求点派车(即消防站1向火警地点3派车但消防车是到达火警地点的第二辆车),则由此引起的损失为8*9=72。
同理计算,可以得到损失矩阵如表所示(元素分别记为
)。
火警地点1
火警地点2
火警地点3
j=1
j=2
j=3
j=4
j=5
j=6
j=7
消防站i=1
36
24
49
21
81
72
45
消防站i=2
30
20
56
24
99
88
55
消防站i=3
36
24
63
27
90
80
50
表2.1
于是,使总损失最小的决策目标为
约束条件:
约束条件有两类,一类是消防站拥有的消防车数量限制,另一类是各需求点对消防车的需求两限制。
消防站拥有的消防车的数量限制可以表示为
+
+
+
+
+
+
=3
+
+
+
+
+
+
=2
+
+
+
+
+
+
=2
各需求点对消防车的需求量限制可以表示为
=1,j=1,2,3,4,5,6,7.
五.模型求解
1.未改变系数
对上述模型使用Lingo进行求解得:
火警地点1
火警地点2
火警地点3
j=1
j=2
j=3
j=4
j=5
j=6
j=7
消防站i=1
0
0
1
0
1
1
0
消防站i=2
1
1
0
0
0
0
0
消防站i=3
0
0
0
1
0
0
1
表2.2
根据表2.2,火警地点1的1、2两辆来自站点2,火警地点2的1、2两辆来自站点1、3,火警地点3的1、2、3分别来自站点1、1、3。
而通过和表1数据的对比,恰符合站点到达地点时间的次序。
也就是说,消防站1应向火警点2派1辆车,向火警点3派2辆车;消防站2应向火警点1派2辆车;消防站3应向火警地点2、3各派1辆车。
最小损失为
=329。
2.改变系数后的讨论
(1)这个问题本质上仍然和经典的运输问题类似,可以把每辆车到达火场看做需求点,消防站看做供应点,在上面模型中,我们虽然假设
为0-1变量,但求解时采用线性规划求解的,也就是说没有加上
为0-1变量或整数变量的限制条件,但求解得到的结果中
正好是0-1变量,这一结果不是偶然的,而是运输问题特有的一种性质。
(2)在上面模型中,没有考虑消防车到达各火警地点的先后次序约束,但得到的结果正好满足所有的先后次序约束。
这一结果不是必然的,而只是巧合。
如果对题目后半部分的情形,结果就不是这样了。
显然,此时只需要修改损失矩阵如下表所示(元素仍然分别记为
)。
损失矩阵
火警地点1
火警地点2
火警地点3
j=1
j=2
j=3
j=4
j=5
j=6
j=7
消防站i=1
24
36
21
49
45
72
45
消防站i=2
20
36
24
56
55
88
55
消防站i=3
24
36
27
63
50
80
50
表3.1
使用Lingo程序求解:
model:
min=24*x11+36*x12+21*x13+49*x14+45*x15+72*x16+81*x17+20*x21+30*x22+24*x23+56*x24+55*x25+88*x26+99*x27+24*x31+36*x32+27*x33+63*x34+50*x35+80*x36+90*x37;
x11+x12+x13+x14+x15+x16+x17=3;
x21+x22+x23+x24+x25+x26+x27=2;
x31+x32+x33+x34+x35+x36+x37=2;
x11+x21+x31=1;
x12+x22+x32=1;
x13+x23+x33=1;
x14+x24+x34=1;
x15+x25+x35=1;
x16+x26+x36=1;
x17+x27+x37=1;
end
运行得:
Globaloptimalsolutionfound.
Objectivevalue:
329.0000
Totalsolveriterations:
7
VariableValueReducedCost
X110.0000006.000000
X120.0000008.000000
X130.0000002.000000
X141.0000000.000000
X150.0000003.000000
X161.0000000.000000
X171.0000000.000000
X211.0000000.000000
X221.0000000.000000
X230.0000001.000000
X240.0000005.000000
X250.00000011.00000
X260.00000014.00000
X270.00000016.00000
X310.0000000.000000
X320.0000000.000000
X331.0000000.000000
X340.0000006.000000
X351.0000000.000000
X360.0000000.000000
X370.0000001.000000
RowSlackorSurplusDualPrice
1329.0000-1.000000
20.000000-16.00000
30.000000-18.00000
40.000000-24.00000
50.000000-2.000000
60.000000-12.00000
70.000000-3.000000
80.000000-33.00000
90.000000-26.00000
100.000000-56.00000
110.000000-65.00000
火警地点1
火警地点2
火警地点3
j=1
j=2
j=3
j=4
j=5
j=6
j=7
消防站i=1
0
0
0
1
0
1
1
消防站i=2
1
1
0
0
0
0
0
消防站i=3
0
0
1
0
1
0
0
表3.2
根据表3.2,火警地点1的两辆车全来自消防站2;火警地点2的1、2两辆车分别来自3、1站点。
火警地点3的1、2、3辆车分别来自3、1、1。
然而和表1进行对比,各站到达时间与模型求解后得出的次序矛盾。
例如,x14=x33=1,表明火警地点2的第一辆消防车来自消防站3,第二辆消防车来自消防站1,而火警地点2与消防站3有9分钟距离,大于与消防站1的7分钟距离。
而上一个题目中经过检验是符合题目要求的,而这种符合也是一种巧合。
所以在提设的条件下对于每个变量,如Xij也就是需要增加一些约束条件,以保证以上的不合理问题不再出现。
对火警地点2,如果第2辆消防车来自消防站2,则火警地点2的第1辆消防车一定来自消防站1或2。
因此,必须增加以下约束:
≤
;
≤
+
;
同理,对火警地点1,必须增加以下约束条件:
≤
;
对火警地点3,必须增加一下约束:
≤
;
≤
;
≤
+
;
2
≤
+
+
+
;
将上述约束条件输入Lingo程序,完善后模型如下:
model:
min=24*x11+36*x12+21*x13+49*x14+45*x15+72*x16+81*x17+20*x21+30*x22+24*x23+56*x24+55*x25+88*x26+99*x27+24*x31+36*x32+27*x33+63*x34+50*x35+80*x36+90*x37;
x11+x12+x13+x14+x15+x16+x17=3;
x21+x22+x23+x24+x25+x26+x27=2;
x31+x32+x33+x34+x35+x36+x37=2;
x11+x21+x31=1;
x12+x22+x32=1;
x13+x23+x33=1;
x14+x24+x34=1;
x15+x25+x35=1;
x16+x26+x36=1;
x17+x27+x37=1;
x22-x21<=0;
x14-x13<=0;
x24-x23-x13<=0;
x16-x15<=0;
x17-x16<=0;
x36-x15-x35<=0;
2*x37-x15-x16-x35-x36<=0;
end
Globaloptimalsolutionfound.
Objectivevalue:
332.6667
Totalsolveriterations:
11
VariableValueReducedCost
X110.0000009.000000
X120.00000011.00000
X131.0000000.000000
X141.0000000.000000
X150.33333330.000000
X160.33333330.000000
X170.33333330.000000
X211.0000000.000000
X221.0000000.000000
X230.0000000.000000
X240.0000000.000000
X250.0000007.333333
X260.00000010.33333
X270.00000011.33333
X310.0000001.666667
X320.0000003.666667
X330.0000000.6666667
X340.0000004.666667
X350.66666670.000000
X360.66666670.000000
X370.66666670.000000
RowSlackorSurplusDualPrice
1332.6667-1.000000
20.000000-82.66667
30.000000-87.66667
40.000000-90.00000
50.00000067.66667
60.00000057.66667
70.00000063.66667
80.00000031.66667
90.00000040.00000
100.00000010.00000
110.0000000.000000
120.0000000.000000
130.0000002.000000
141.0000000.000000
150.0000002.333333
160.0000001.666667
170.33333330.000000
180.66666670.000000
但我们发现此时的解中Xij并不都是0-1变量或整数变量,例如X15=0.333。
因此还是不符合题意。
这是因为此时的模型已经不再是“标准”的运输模型,所以得到的解不一定自然地为整数解的缘故。
所以我们还必须显式地加上Xij为0-1变量的约束。
model:
min=24*x11+36*x12+21*x13+49*x14+45*x15+72*x16+81*x17+20*x21+30*x22+24*x23+56*x24+55*x25+88*x26+99*x27+24*x31+36*x32+27*x33+63*x34+50*x35+80*x36+90*x37;
x11+x12+x13+x14+x15+x16+x17=3;
x21+x22+x23+x24+x25+x26+x27=2;
x31+x32+x33+x34+x35+x36+x37=2;
x11+x21+x31=1;
x12+x22+x32=1;
x13+x23+x33=1;
x14+x24+x34=1;
x15+x25+x35=1;
x16+x26+x36=1;
x17+x27+x37=1;
x22-x21<=0;
x14-x13<=0;
x24-x23-x13<=0;
x16-x15<=0;
x17-x16<=0;
x36-x15-x35<=0;
2*x37-x15-x16-x35-x36<=0;
bin(x11);bin(x12);bin(x13);bin(x14);bin(x15);bin(x16);bin(x17);
bin(x21);bin(x22);bin(x23);bin(x24);bin(x25);bin(x26);bin(x27);
bin(x31);bin(x32);bin(x33);bin(x34);bin(x35);bin(x36);bin(x37);
end
运行后结果如下:
Globaloptimalsolutionfound.
Objectivevalue:
335.0000
Extendedsolversteps:
0
Totalsolveriterations:
8
VariableValueReducedCost
X110.00000024.00000
X120.00000036.00000
X131.00000021.00000
X141.00000049.00000
X151.00000045.00000
X160.00000072.00000
X170.00000081.00000
X211.00000020.00000
X221.00000030.00000
X230.00000024.00000
X240.00000056.00000
X250.00000055.00000
X260.00000088.00000
X270.00000099.00000
X310.00000024.00000
X320.00000036.00000
X330.00000027.00000
X340.00000063.00000
X350.00000050.00000
X361.00000080.00000
X371.00000090.00000
RowSlackorSurplusDualPrice
1335.0000-1.000000
20.0000000.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
141.0000000.000000
151.0000000.000000
160.0000000.000000
170.0000000.000000
180.0000000.000000
由运行结果可以得到调配方案如下表:
火警地点1
火警地点2
火警地点3
j=1
j=2
j=3
j=4
j=5
j=6
j=7
消防站i=1
0
0
1
1
1
0
0
消防站i=2
1
1
0
0
0
0
0
消防站i=3
0
0
0
0
0
1
1
表3.3
由表3.3可以看出,消防站1应向火警地点2派2辆车,向火警地点3派1辆车;消防站2应向火警地点1派2辆车;消防站3应向火警地点3派2辆车。
经检验此方案与提设无矛盾。
所以最小损失为335。
六、感想与思考
八、参考文献与资料
一、《数学建模》高等教育金星编著
二、《优化建模与Lindo/Lingo软件》清华大学金星编著