消防队建设规划.docx
《消防队建设规划.docx》由会员分享,可在线阅读,更多相关《消防队建设规划.docx(31页珍藏版)》请在冰豆网上搜索。
消防队建设规划
消防队建设规划
摘要随着我国工业化、城镇化、现代化建设步伐的加快和人流物流的加大,非传统安全问题和因素增多,火灾等各类灾害事故上升的压力不断增大。
火灾事故也有增多的趋势,因此如何合理的设置消防队站点显得尤为重要。
若可合理的设置消防队的站点,可以极大的减少火灾带来损失。
本文主要研究某县城增设消防选址的决策和规划问题,建立如下数学模型,求出如何选址:
α=(|Si1-Si2|)|Max(Si1,Si2)
关键字Floyd最短路径均衡度最远最小距离
一问题重述
最近,某县的火灾事故有增多的趋势,某县已有一个消防队(在县府),最近上级拨款可再新建一个消防队,各个乡镇积极打报告都要求建消防队,建在什么地方好呢?
县政府请你帮助作一个规划。
1.如果仅一处着火时(各地火警等概率),只就近动用一个消防队即可,你如何规划?
2.如果县、乡(镇)府所在地的大火和小火的比例为1:
5,村里的比例为1:
10,县、乡(镇)和村的火警比为5:
5:
1,并且大火时需要两个消防队,小火时只需要一个消防队,你又如何进行规划?
3.对于问题2,若可新建两个消防队又如何规划?
4.若要求接到火警报警后30分钟之内赶到现场,请问最少需增加几个消防队,建在哪几个乡镇?
二问题分析
2.1、问题一的分析:
在假设该县城各地发生火警的概率相等和已有一个消防站在县城的前提下,在在某乡镇建立一个消防站,使得若某一处着火能够动用最近的一个消防队,从而减低灾难带来的损失。
即该消防站和县镇府的消防站两个之间至少有一个尽可能的离该县的各个乡村和县镇的距离最短。
为了使分配均衡、合理和各乡村、乡镇尽可能的离两个消防站中的某一个的距离尽可能短,首先利用Floyd算法找出了各乡镇到其他乡镇、乡村的最短距离,根据均衡度、最短距离之和、最远最短距离三个指标进行选择,找出一个比较合理的消防队建设点。
2.2、问题二的分析:
考虑到该县的县城、各乡镇、各乡村发生大火和小火的比例的不同,则出动的消防队的数目不同,以及县城、乡镇、乡村发生火警的概率的不同,来重新规划另一个消防队的建设,我们根据各项的比率,更改了最小距离的权值,再将该问题转化为问题一进行求解,还是通过均衡度、最短总路径两个指标来对乡镇的建设点进行选取。
2.3、问题三的分析:
问题三在第二问的基础上,增加了一个建设消防队的数目,仍然利用乡镇到各点的最短路径,增加了每两个点之间的比较次数,再利用问题二上的的模型进行求解。
2.4、问题四的分析:
对于问题四增加了约束条件接到火警报警后需在30分钟内赶到现场,在增加约束条件后,仍然利用乡镇到各点的最短路径,采用逐步试探的方法,从而寻找能够满足约束条件且所建的消防队站点最少。
三模型假设
3.1、假设火警不会同时发生。
3.2、消防队的主要运载工具为消防车,它的平均时速为60公里。
3.3、假设消防车在去救火的途中不发生堵车,消防车抛锚,等突发事件。
3.4、假设接到报警电话,消防车马上就能出发,不耽误时间。
四符号说明和变量的说明
4.1、I,j代表该县城的县城、乡镇、乡村的所在地,当1<=i<36、1<=j<36时代表乡村,当36<=i<54、36<=j<54时,代表乡镇,其中i、j=50代表县城;
4.2、A----邻接矩阵,如i到j有直连道路时,则将之间的路程赋值给A(i,j),如无直接道路则赋值A(i,j)为无穷大;
4.3、B----最短距离矩阵,将i到j的最短路径赋值给B(I,j);
4.4、α----均衡度;
4.5、So----代表两个消防队的最远最短距离之和;
4.6、V-----代表消防车的平均时速,V=60km/h;
4.7、S----最短距离和矩阵
五模型的建立和求解
5.1、问题一:
增建一个消防队的选址问题
首先,将该县的交通图中的相关数据和关系转化为邻接矩阵,即用邻接矩阵A表示出来,若i到j有直接通路,则将i、j之间的距离赋值给A(i,j);若i到j没有直接通路,则将A(i,j)赋值为无穷大。
其次,采用求最短路径的Floyd算法,将每个乡镇到其他乡镇和乡村的最短距离分别求出存入最短路径矩阵B中。
在最短路径矩阵B中找出乡镇A点与县政府O点到各个点的最短路径的数组,如A到该点的距离小于O到该点的距离则将O点对应坐标的值改为0,即如A为新建的消防队点,将该点划分给A点,当该点发生火灾A为最近的消防点;反之,如O到该点的距离小于A到该点的距离则将A点对应坐标的值改为0,即将该点划分给O点,当该点发生火灾O为最近的消防点;再将乡镇A点和县镇府的最短距离数组分别求和存于最短距离和矩阵S中记为S11、S12中。
再利用循环分别对其他的16各乡镇重复上述操作得到矩阵S。
操作的具体流程图如下:
最后,先利用已建的消防队和假定增建的消防队之间的均衡度这个指标选择新建消防队的具体位置。
均衡度的表达式如下:
α=(|Si1-Si2|)|Max(Si1,Si2)
若α的值越接近于0则说明效果越好,则说明在该点建设消防队可以使得两个消防队的分布比较均匀。
再利用已建的消防队和假定增建的消防队之间的最短路径之
和这个指标选择新建消防队的具体位置。
Min(Si1+Si2)
找出已建的消防队和假定增建的消防队之间的最短路径之和最小的
点,即为要建设消防队的乡村。
通过matlab编程得到如下表格-表一(详细程序见附录一):
A
B
C
D
E
F
G
H
I
最短总距离
1845.1
1908.6
1815.2
1783.6
1273.0
1309.9
1241
1381.9
1284.8
均衡度
0.9034
0.9554
0.4322
0.2187
0.0285
0.4195
0.1696
0.4766
0.0872
最远距离最小之和
105.3
102.3
137.4
125.2
98.9
98.9
89.8
100.4
93.7
J
K
L
M
N
P
Q
R
最短总距离
1156.7
1246.7
1211
1361.5
1485
1764.9
1805.6
1837.9
均衡度
0.1549
0.2198
0.5094
0.6631
0.6567
0.4756
0.7427
0.9159
最远距离最小之和
80.8
98.8
84.0
95.5
112.8
140.9
134.4
104.1
(表一)
从上述表格可看出:
(1)以均衡度为标准来权衡新建消防点的位置,则新增消防点应该建在乡镇E;
(2)以最短距离和为标准来权衡新建消防点的位置,则新增消防点应该建在乡镇J;
5.2、问题二对于考虑大火和小伙概率与乡镇和乡村火警概率增建一个消防队的选址问题。
对于问题二在问题一的基础之上增加了一些大火和小伙概率与乡镇和乡村火警概率等因素,我们将这些因素转化为改变最短距离权值,从而将问题二转化为问题一的模型进行解。
改变权值的公式如下:
若为乡村:
5*((Si1+Si2)/11+10*min(Si1,Si2)/11)/6
若为乡镇:
((Si1+Si2)/6+5*min(Si1,Si2)/6)/6
于是由matlab写程序的到下表数据—表二(详细程序见附录二):
A
B
C
D
E
F
G
H
I
最短总距离
773.7045
787.8833
745.803
732.8833
542.7045
567.0439
531.7379
604.3697
567.5394
均衡度
0.9107
0.9590
0.3382
0.3325
0.1734
0.3883
0.1671
0.5119
0.0461
最小的最远距离
91.8333
78.6742
118.0682
91.0152
66.9848
72.4318
64.0606
72.0303
65.7045
j
K
L
M
N
P
Q
R
最短总距离
503.4606
553.3939
532.5273
579.1121
642.1697
746.4545
775.0803
771.9485
均衡度
0.0318
0.2940
0.5578
0.6715
0.6935
0.6001
0.8654
0.9348
最小的最远距离
58.8636
72.3561
70.7197
81.1818
83.0455
120.7955
95.7197
84.9394
(表二)
由上表可以看出:
(1)以均衡度为标准来权衡新建消防点的位置,则新增消防点应该建在乡镇J;
(2)以最短距离和为标准来权衡新建消防点的位置,则新增消防点应该建在乡镇J;
5.4问题四对于在约束条件接到火警后需在30分钟之内赶到,建立最少满足条件的消防队的选址问题。
问题四在约束条件接到火警后需在30分钟之内赶到之下,需增建消防队的数目最少。
首先将该约束条件转化为该县的每一个点到最近的消防站的距离需要小于30公里,对于该模型的的建立我们仍然利用在问题一中采用Floyd算法求出的最短距离矩阵B,采用的模型是逐步试探法,逐步增加将建设消防队的个数,并进行验证,直到找到第一个满足约束条件的需建设消防队的个数,即为最少需建设的消防队的个数。
通过matlab编写程序求出最少所需建设的消防队的数目(详细程序见附录三)。
下表列出了满足条件的所需增加的消防队的地点的部分情况---表三
1
2
3
4
5
6
7
消防站点
E,J
K,Q
E,J
M,Q
E,J,
N,Q
G,J
M,Q
G,J
M,Q
E,J
N,Q
E,J
K,Q
(表三)
六模型的评价、改进与推广
从总体上来讲,模型是比较正确的,根据不同的约束条件和需求,找出来的新增消防队的地点是比较合理的,较好的解决了消防队的选址问题,但在考虑模型时只考虑到均衡度、最远距离之和来进行选址,没有考虑到最远最小距离问题,于是我们在原模型的基础上,进行了模型的改进,在进行选址的时候将最远最短距离列入考虑的因素之一,相关数据已经存入表一,表二。
改进之后第一问将最远最短距离作为判断条件,则新增的消防队应该建在乡镇J.
同时该模型还存在的不足有,在第四问就找出至少需建设的消防队的数目之后,没有在建立相关的模型找出一个最佳的方案。
对消防队的建设选址,进行建模分析,所建的模型同样适用于巡逻警点、急救站等公共设施的建设规划问题。
七参考文献
【1】《数学模型》姜启源谢金星编著(高等教育出版社)
【2】《算法设计技巧与分析》(电子工业出版社)
【3】《数学建模与数学实验》宣明编著(浙江大学出版社)
【4】《数学建模》章朝晖编著(科学出版社)
【5】《数学建模算法与应用》司守奎编著(国防工业出版社)
附录:
附录一:
function[d,path]=floyd(a,sp,ep)%floyd%%Syntax:
[d,path]=floyd(a,sp,ep)%%Inputs:
%%%%%Outputs:
%%%d-最短路的距离aspep-距离矩阵是指i到j之间的距离,可以是有向的-起点的标号-终点的标号-最短路问题
%path-最短路的路径
zeros(53,53);
a=zeros(53,53);
i=1:
53;
j=1:
53;
a(i,j)=inf;
a(1,1)=0;a(1,36)=6.6;a(1,37)=6.6;a(1,38)=11.2;a(1,50)=6.2;
a(2,2)=0;a(2,3)=8.2;a(2,5)=9.5;a(2,50)=10;
a(3,3)=0;a(3,2)=8.2;a(3,39)=8.2;a(3,38)=7.3;
a(4,4)=0;a(4,39)=9.0;a(4,8)=12.1;
a(5,5)=0;a(5,2)=9.5;a(5,6)=9.7;a(5,39)=9.3;a(5,48)=9.7;
a(6,6)=0;a(6,5)=9.7;a(6,7)=6;a(6,47)=7.3;a(6,48)=10.8;
a(7,7)=0;a(7,6)=6.0;a(7,39)=12.3;a(7,40)=6.3;a(7,47)=14.4;
a(8,8)=0;a(8,4)=12.1;a(8,40)=10.2;
a(9,9)=0;a(9,40)=7.2;a(9,10)=7.8;
a(10,10)=0;a(10,9)=7.8;a(10,41)=8.5;
a(11,11)=0;a(11,40)=10.0;a(11,42)=6.8;a(11,45)=13.2;
a(12,12)=0;a(12,41)=4.6;
a(13,13)=0;a(13,14)=8.6;a(13,42)=8.6;a(13,45)=9.6;a(13,44)=16.4;
a(14,14)=0;a(14,13)=8.6;a(14,15)=15;a(14,43)=9.9;
a(15,15)=0;a(15,14)=15;a(15,44)=8.8;
a(16,16)=0;a(16,17)=6.8;a(16,44)=11.8;
a(17,17)=0;a(17,16)=6.8;a(17,22)=6.7;a(17,46)=9.8;
a(18,18)=0;a(18,44)=8.2;a(18,45)=8.2;a(18,46)=9.2;
a(19,19)=0;a(19,20)=9.2;a(19,45)=8.1;a(19,47)=7.2;
a(20,20)=0;a(20,21)=7.1;a(20,19)=9.2;a(20,25)=7.0;a(20,47)=5.5;
a(21,21)=0;a(21,20)=7.1;a(21,25)=7.0;a(21,23)=9.7;a(21,46)=6.1;
a(22,22)=0;a(22,17)=6.7;a(22,23)=11.0;a(22,46)=10.1;
a(23,23)=0;a(23,21)=9.7;a(23,22)=11.0;a(23,24)=8.9;a(23,49)=6.2;
a(24,24)=0;a(24,23)=8.9;a(24,27)=18.8;a(24,49)=13.2;
a(25,25)=0;a(25,20)=7.0;a(25,21)=7.0;a(25,48)=11.0;a(25,49)=11.0;
a(26,26)=0;a(26,27)=5.7;a(26,49)=6.0;a(26,51)=11.5;
a(27,27)=0;a(27,26)=5.7;a(27,24)=18.8;a(27,28)=7.0;
a(28,28)=0;a(28,27)=7.0;a(28,51)=10.4;a(28,52)=9.8;
a(29,29)=0;a(29,51)=14.4;a(29,52)=8.5;a(29,53)=7.4;
a(30,30)=0;a(30,32)=8.5;a(30,52)=8.8;
a(31,31)=0;a(31,32)=8.9;a(31,33)=5.3;a(31,53)=7.6;
a(32,32)=0;a(32,31)=8.9;a(32,30)=8.5;a(32,33)=17;a(32,35)=12.4;
a(33,33)=0;a(33,31)=5.3;a(33,32)=17;a(33,35)=16.4;a(33,36)=7.4;
a(34,34)=0;a(34,35)=9.5;a(34,36)=11.5;a(34,37)=17.6;
a(35,35)=0;a(35,32)=12.4;a(35,33)=16.4;a(35,34)=9.5;
a(36,36)=0;a(36,33)=7.4;a(36,34)=11.5;a(36,53)=8.6;a(36,37)=9.2;a(36,1)=6.6;
a(37,37)=0;a(37,34)=17.6;a(37,1)=6.6;a(37,36)=9.2;a(37,38)=11.0;
a(38,38)=0;a(38,37)=11.0;a(38,1)=11.2;a(38,3)=7.3;a(38,50)=11.5;
a(39,39)=0;a(39,4)=9.0;a(39,3)=8.2;a(39,5)=9.3;a(39,7)=12.3;
a(40,40)=0;a(40,7)=6.3;a(40,8)=10.2;a(40,9)=7.2;a(40,11)=10.0;
a(41,41)=0;a(41,10)=8.5;a(41,12)=4.6;a(41,42)=7.2;a(41,43)=10.2;
a(42,42)=0;a(42,11)=6.8;a(42,13)=8.6;a(42,41)=7.2;
a(43,43)=0;a(43,14)=9.9;a(43,41)=10.2;
a(44,44)=0;a(44,13)=16.4;a(44,45)=15.8;a(44,15)=8.8;a(44,16)=11.8;a(44,18)=8.2;
a(45,45)=0;a(45,44)=15.8;a(45,11)=13.2;a(45,13)=9.6;a(45,18)=8.2;a(45,19)=8.1;
a(46,46)=0;a(46,17)=9.8;a(46,18)=9.2;a(46,21)=6.1;a(46,22)=10.1;
a(47,47)=0;a(47,6)=7.3;a(47,7)=14.4;a(47,19)=7.2;a(47,20)=5.5;
a(48,48)=0;a(48,5)=9.7;a(48,6)=10.8;a(48,25)=11.0;a(48,49)=14.2;a(48,50)=19.0;
a(49,49)=0;a(49,23)=6.2;a(49,24)=13.2;a(49,25)=11.0;a(49,26)=6.0;a(49,48)=14.2;
a(50,50)=0;a(50,1)=6.2;a(50,38)=11.5;a(50,2)=10.0;a(50,48)=19.0;a(50,51)=13.4;a(50,53)=14.0;
a(51,51)=0;a(51,26)=11.5;a(51,28)=10.4;a(51,29)=14.4;a(51,50)=13.4;
a(52,52)=0;a(52,28)=9.8;a(52,29)=8.5;a(52,30)=8.8;
a(53,53)=0;a(53,29)=7.4;a(53,31)=7.6;a(53,36)=8.6;a(53,50)=14.0;
%a(i,j),从节点i到j之间的距离
%[d,path]=floyd(a,2,5)
zeros(18,53);
b=zeros(18,53);
i=1:
18;
j=1:
53;
b(i,j)=inf;
forx=36:
53
fory=1:
53
sp=x;
ep=y;
n=size(a,1);
D=a;
path=zeros(n,n);
fori=1:
n
forj=1:
n
ifD(i,j)~=inf
path(i,j)=j;%j是i的后续点
end
end
end
fork=1:
n
fori=1:
n
forj=1:
n
ifD(i,j)>D(i,k)+D(k,j)
D(i,j)=D(i,k)+D(k,j);
path(i,j)=path(i,k);
end
end
end
end
p=[sp];
mp=sp;
fork=1:
n
ifmp~=ep
d=path(mp,ep);
p=[p,d];
mp=d;
end
end
d=D(sp,ep)
b(x-35,y)=d;
path=p
end
end
disp(b)
%sum_r=0;
%sum_x=0;
jun=zeros(1,18);
g=1:
18;
jun(g)=inf;
bao=zeros(53,2);
forn=1:
53
form=1:
2
bao(n)=0;
end
end
zhang=zeros(1,18);
o=1:
18;
zhang(o)=inf;
temp=1;
fori=1:
18
ifi==15
continue;
end
forj=1:
53
ifb(i,j)>b(50-35,j)
%sum_r=sum_r+b(50-35,j);
bao(j,1)=b(15,j);
end;
ifb(i,j)
%sum_x=sum_x+b(50-35,j);
bao(j,2)=b(i,j);
end
ifb(i,j)==b(50-35,j)
%sum_x=sum_x+b(50-35,j);
%sum_r=sum_r+b(50-35,j);
bao(j,1)=b(15,j);
bao(j,2)=b(i,j);
end
end
%disp((bao))
disp(temp)
temp=temp+1;
sum1=sum(bao());
disp(sum1);
sum2=sum(bao(:
));
disp(sum2);
disp('kkkkkkkk')
zhang(1,i)=max(bao(1:
end,1))+max(bao(1:
end,2));
%jun(1,i)=abs(sum_r-sum_x)/max(sum_r,sum_x);
%jun(1,i)=abs(sum_r-sum_x)/(sum_x+sum_r);
jun(1,i)=abs(sum(bao(:
1))-sum(bao(:
2)))/max(sum(bao(:
1)),sum(bao(:
2)));
%disp(sum_r);
%disp(sum_x);
%disp(jun(1,i));
%sum_r=0;
%sum_x=0;
forn=1:
53
form=1:
2
bao(n,m)=0;
end
end
end
disp(jun);
min1=min(jun);
forq=1:
18;
ifjun(1,q)==min1
disp(min1);
disp(q);
end
end
disp(zhang)
disp(min(zhang))
forl=1:
18
ifzhang(1,l)==min(zhang)
disp(l)
end
end
附录二:
function[d,path]=floyd1(a,sp,ep)%floyd%%Syntax: