消防队建设规划.docx
《消防队建设规划.docx》由会员分享,可在线阅读,更多相关《消防队建设规划.docx(25页珍藏版)》请在冰豆网上搜索。
消防队建设规划
消防队建设规划
摘要
火灾安全问题始终是我们所有人关心的一个重点,很多地方因为没有采取合适的预防措施而酿成人财两失的惨祸也屡屡发生,因此,如何设置消防站是一个很重要的项目。
本文主要讨论了不同火势和着火点情况下的消防站设置问题以及消防队的调用问题,实质上是一个最短路径的求取问题。
本文主要用了编程软件matlab,以“就近原则”为标准,利用其强大的编程实现能力,解决了任意两点之间的最短路径问题以及消防站规划问题。
根据题目中所给的条件和问题提取出相关的约束条件和目标函数、建立模型。
问题1.是关于消防站点的选择,首先我们把临近点与点之间的距离存储于邻接矩阵
中,然后,根据得到的邻接矩阵U,我们在matlab环境下用floyd算法得到了点与点之间最短路程
矩阵,然后假定一个消防点,编程实现每个着火点距就近消防站的最短路程之和,最后得到的结果是最短路程为1165.8,对应乡镇点为J点。
其时间复杂度为0.088370s(数据见表二)
问题2.如果县、乡(镇)府所在地的大火和小火的比例为1:
5,村里的比例1:
10,县、乡(镇)和村的火警比为5:
5:
1,并且大火时需要两个消防队,小火时只需要一个消防队。
处理这个问题的时候,我们把各地发生大火小火的比例以及火警比作为权重存储于矩阵
中,把权重赋于乡镇点的距离中,然后类似于题1的做法,假定一个消防站所在点,编程实现每个着火点距就近消防站的最短距离期望之和,最后得到的结果是最短距离期望为630.4484,对应乡镇依然为J点。
其时间复杂度为0.031999s(数据见表四)
问题3.题目要求在问题2的条件基础上,把新建消防站数量改为2个,因为约束条件的改变,我们也改变了最短路径期望c的算法,找到大火时着火点距就近两个消防站最小距离以及小火时着火点距就近消防站的最小距离两个距离期望之和的总和最小值。
根据以上信息我们得到了最终结果为500.09,对应的两个消防站地点为G、M点。
其时间复杂度为7.062374s(数据见表五)
问题4.本题要求接到火警报警后30分钟内赶到着火点,求出满足要求的最少消防站及建设点。
对于这个问题我们采用了0-1规划模型,以所用消防站数量最少为目标,以时间最小为约束目标引入0-1规划模型,并借助数学软件LINGO进行求解,得到在三十分钟之内最少时间达到救援目的且数量最小的解。
【关键字】floyd最短路径邻接矩阵MATLAB时间复杂度0-1规划
一问题重述
最近,某县的火灾事故有增多的趋势,某县已有一个消防队(在县府),最
近上级拨款可再新建一个消防队,各个乡镇积极打报告都要求建消防队,建在什
么地方好呢?
县政府请你帮助作一个规划。
1.如果仅一处着火时(各地火警等概率),只就近动用一个消防队即可,你
如何规划?
2.如果县、乡(镇)府所在地的大火和小火的比例为1:
5,村里的比例为1:
10,县、乡(镇)和村的火警比为5:
5:
1,并且大火时需要两个消防队,小火
时只需要一个消防队,你又如何进行规划?
3.对于问题2,若可新建两个消防队又如何规划?
4.若要求接到火警报警后30分钟之内赶到现场,请问最少需增加几个消防
队,建在哪几个乡镇?
图一某县交通
二基本假设
1.假设每个路段道路畅通,可以双向行驶,没有堵车现象;
2.假定火警不会同时发生;
3.假设消防队的主要运载工具为消防车,它的平均时速为60公里;
4.假设消防队接到消息至出队的时间间隔忽略不计;
5.假设一处乡镇着火不会蔓延至另一处乡镇;
6.假设没有外界原因影响消防队的建立和灭火能力;
7.假设大火时两个消防队都能顺利赶到着火点且两个队赶到时间差对灭火行动没有影响;
8.假设消防队只建在乡(镇)府,不建在村里;
9.假设着火点只在乡(镇)村中心,不发生在两点中间。
三问题分析
1.如果仅一处着火且各地火警等概率发生、而且消防车速度恒定,题目要求只就近动用一个消防队,由于路程是所花时间的主要因素,我们只需要考虑路线问题,只需要找到最短路径即可。
在matlab环境下采用floyd算法求出每两个乡镇点之间的最短距离,假定一个乡镇点,用MATLAB编程求出每一个乡镇点到这个乡镇点或第一个消防队最短距离之和。
比较得出的数据的最短路径即可确定对应的乡镇点为新建消防队的最佳位置。
2.如果县、乡(镇)府所在地的大火和小火的比例为1:
5,村里的比例1:
10,县、乡(镇)和村的火警比为5:
5:
1,并且大火时需要两个消防队,小火时只需要一个消防队。
把不同火势及火警率所需要的消防队数作为权重赋在距离上,然后仅考虑路线问题,寻找最短路径期望。
类似于1题的做法,在matlab环境下采用floyd算法求出每两个乡镇点之间的最短距离期望,设定一个乡镇点,用MATLAB编程求出每一个乡镇点到这个乡镇点或第一个消防队最短距离之和。
比较得出的数据的最短路径即可确定对应的乡镇点为新建消防队的最佳位置。
3.在问题2的的基础上,只改变条件为可组建两个消防队,首先假定两个消防站,这样一共就有三个消防队,大火时需要两个消防队,我们只需要找出着火点与三个消防站最近的两个并且附上权重,小火时只需要找出三个消防站中最近的一个消防站,其余做法同于问题2,仅考虑路线问题,寻找最短路径。
找出53*53=2809种中最短的路径即可确定对应乡镇点为新建消防队的最佳位置。
4.此问题要求要在30分钟内实施对任意着火点的救援行动,我们引入了0-1规划模型,首先需要满足消防站点最少,再满足时间最少。
四符号说明
全县第i个乡(镇、村)点
全县第j个着火点
第i个乡镇点到第j个着火点最短距离
第一个消防队(县府)到第j个着火点的最短距离
第i个乡镇点到第j个着火点距离系数
最短距离函数
第j个着火点的权重
新建的第二个消防站点值
五模型的建立与求解
为了方便后续程序的编写,遂将字母代码A~R暂用数字代替,如下表:
表一字母-数字对应
原代号
A
B
C
D
E
F
G
H
I
新代号
36
37
38
39
40
41
42
43
44
原代号
J
K
L
M
N
O
P
Q
R
新代号
45
46
47
48
49
50
51
52
53
问题一:
1、模型的建立
a.该题要求为寻找位置新建一个消防队,由于各地火警等概率,不考虑任务量的均衡度,因为路程为所花时间的主要因素,要达到以最短路程到达某着火点的目的,所以我们主要考虑路线问题,选择最优路线
,因此,我们建立了以最短路程为目标,以第一个消防队已经确定的位置以及最多新建一个消防队为限制条件的模型来确定新建消防队的位置。
b.首先,我们要求出每个乡镇点到其他乡镇点的最短距离
。
然后求每个乡镇点到可以到某个消防队的最短距离之和
。
目标函数:
约束条件:
2、模型的求解:
我们要建立一个53*53的邻接矩阵,在matlab环境下采用floyd算法求出每两个乡镇点之间的最短距离,
本文选用floyd算法确定此县任意两个乡镇点之间的最短路径矩阵
。
Floyd算法为:
任意两点(i,j)之间的最短路径(记为
)等于从i出发到达j点的以任一点为中转点所有可能方案中,距离最短的一个。
即:
,n为节点总数。
Ifd[i,j]>d[i,k]+d[k,j]Then
d[i,j]:
=d[i,k]+d[k,j];
算法结束:
d即为所有点对的最短路径矩阵.
设定一个乡镇点,用MATLAB编程求出每一个乡镇点到这个乡镇点或第一个消防队最短距离之和。
比较得出的53个数据的最短路径即可确定对应的乡镇点为新建消防队的最佳位置。
表二到各个乡镇的最短路径之和
A
B
C
D
E
F
G
H
I
1833
1890.6
1796.8
1528.7
1265.8
1309.5
1248.3
1379.8
1296.5
J
K
L
M
N
O
P
Q
R
1165.8
1254
1200.9
1349.4
1441.8
1930.4
1768.6
1794.5
1825.8
结果:
最短路程为1165.8,对应乡镇点为J点(程序见附录一)
J点、O点各自救援区域:
问题二:
1、模型的建立
a.该题要求我们在已知县、乡所在地的大火和小火的比例为1:
5,村里的比例为1:
10,县、乡(镇)和村的火警比为5:
5:
1,并且大火时需要两个消防队,小火时只需要一个消防队的情况下找到一个最佳位置新建消防队。
我们采取的方法同1题中的做法相似,在MATLAB环境下采用floyd算法求出每个乡镇点到其它乡镇点的最短距离,然后再把大火小火比例以及火警比转化为权重赋在距离中,然后假定一个乡镇点为消防站,用MATLAB编程实现每个着火点到就近消防站的最短总路程之和,比较52组数据,找出最短总路程期望,其对应点即为最佳消防站建设点。
由题目知:
表三火势与火警比
县
乡(镇)
村
火警比
5
5
1
大火
1
1
1
小火
5
5
10
消防队
1
1
0
b.首先,我们要求出每个乡镇点到其他乡镇点的最短距离
。
然后把权重乘入距离中,然后求大火时每个乡镇点到两个消防队的最短距离期望之和
以及小火时每个乡镇点到就近某个消防站的最短距离期望之和
。
目标函数:
约束条件:
2.模型的求解:
首先利用MATLAB环境下的floyd算法求出最短距离,然后对每个乡镇距离赋予权重,其中权重储存于
矩阵中.(因为县乡府大火小火比例相同可以合在一起考虑)
利用MATLAB编程实现:
当发生大火时着火点到两消防站的最短距离期望与当发生小火时着火点到就近一消防站的最短距离期望两者总和。
表四最短距离期望
A
B
C
D
E
F
G
H
I
901.7756
915.2796
874.476
762.0735
663.0611
710.148
669.8258
754.8575
704.1938
J
K
L
M
N
O
P
Q
R
630.4484
671.4796
641.0105
687.2905
744.3451
914.9204
872.5505
907.4462
902.2847
结果:
最短路程期望为630.4484,对应乡镇点为J点(程序见附录二)
发生小火时各自救援区域图
问题三:
1.模型的建立
a.该题要求我们在已知县、乡所在地的大火和小火的比例为1:
5,村里的比例为1:
10,县、乡(镇)和村的火警比为5:
5:
1,并且大火时需要两个消防队,小火时只需要一个消防队的情况下找到两个最佳位置新建两个消防队。
我们采取了类似2题的做法,但是在大火时选择最佳的两个消防站需要比较着火点到三个消防站的距离,选择其中最短的两条路径,在MATLAB环境下采用floyd算法求出每个乡镇点到其它乡镇点的最短距离,然后假定两个乡镇点为消防站,然后再把大火小火比例以及火警比转化为权重赋在距离中,用MATLAB编程实现不同火势时,每个着火点到就近选择的消防站的最短总路程之和,比较2809组数据,找出最小值,其对应的i,m值即为两个最佳消防站建设点。
b.首先,我们要求出每个乡镇点到其他乡镇点的最短距离
。
然后把权重乘入距离中,然后求大火时每个乡镇点到三个消防站中就近的两个消防站的最短距离期望之和
以及小火时每个乡镇点到就近某个消防站的最短距离期望之和
。
目标函数:
约束条件:
2.模型的求解:
延用问题1中的最短距离数据,然后对每个乡镇距离赋予权重,其中权重储存于
矩阵中,利用MATLAB编程实现:
求当发生大火时着火点到三个消防站中距离最短的两个消防站的距离与发生小火时就近消防站的最短距离。
根据求出的2809个最短距离找出最小的一个距离,其对应的i、m值即为两个消防站的最佳新建位置。
表五新建位置的最短距离
A
B
C
D
E
F
G
H
I
896.72
883.54
827.88
704.01
587.96
601.54
572.47
633.20
603.35
883.54
912.11
850.94
724.37
606.95
619.54
590.55
651.17
621.14
827.88
850.94
865.43
730.03
608.20
613.75
585.15
641.65
605.46
704.01
724.37
730.03
738.15
599.61
578.41
559.32
598.01
565.08
587.96
606.95
608.20
599.61
622.98
567.43
554.90
578.35
539.69
601.54
619.54
613.75
578.41
567.43
670.36
615.90
663.17
570.97
572.47
590.55
585.15
559.32
554.90
615.90
626.22
620.00
560.02
633.20
651.17
641.65
598.01
578.35
663.17
620.00
719.19
603.15
603.35
621.14
605.46
565.08
539.69
570.97
560.02
603.15
665.75
543.07
561.08
554.60
532.43
524.62
541.10
536.04
556.89
571.63
593.53
611.46
596.75
558.66
511.03
513.58
505.79
541.67
584.38
571.05
589.99
584.24
572.79
527.91
510.12
504.56
526.24
543.33
632.51
651.39
651.25
620.72
540.66
514.97
500.09
533.61
535.07
685.06
701.30
680.51
607.96
531.52
524.27
507.63
551.94
564.12
875.68
893.74
851.24
738.69
621.03
629.44
601.79
659.99
633.63
829.91
836.67
793.31
685.75
576.01
584.10
558.07
614.98
597.46
853.22
856.78
809.80
694.93
581.89
598.54
568.76
631.77
605.63
877.62
874.10
821.29
699.68
584.73
598.82
569.03
630.63
601.45
J
K
L
M
N
O
P
Q
R
543.07
593.53
571.05
632.51
685.06
875.68
829.91
853.22
877.62
561.08
611.46
589.99
651.39
701.30
893.74
836.67
856.78
874.10
554.60
596.75
584.24
651.25
680.51
851.24
793.31
809.80
821.29
532.43
558.66
572.79
620.72
607.96
738.69
685.75
694.93
699.68
524.62
511.03
527.91
540.66
531.52
621.03
576.01
581.89
584.73
541.10
513.58
510.12
514.97
524.27
629.44
584.10
598.54
598.82
536.04
505.79
504.56
500.09
507.63
601.79
558.07
568.76
569.03
556.89
541.67
526.24
533.61
551.94
659.99
614.98
631.77
630.63
571.63
584.38
543.33
535.07
564.12
633.63
597.46
605.63
601.45
583.82
535.08
523.88
509.67
517.42
574.42
537.97
542.19
541.06
535.08
633.04
559.48
557.23
591.16
626.75
600.17
596.99
591.81
523.88
559.48
599.99
564.41
563.13
606.16
575.63
572.13
568.23
509.67
557.23
564.41
654.40
623.85
667.98
643.35
632.92
629.63
517.42
591.16
563.13
623.85
719.30
719.42
703.03
693.29
683.05
574.42
626.75
606.16
667.98
719.42
914.92
850.39
862.66
871.46
537.97
600.17
575.63
643.35
703.03
850.39
864.30
840.87
833.57
542.19
596.99
572.13
632.92
693.29
862.66
840.87
900.93
864.49
541.06
591.81
568.23
629.63
683.05
871.46
833.57
864.49
896.58
结果:
最短路程期望为z=500.0949,对应乡镇点为G点和M点(程序见附录三)
大火小火各自覆盖区域图
红线:
小火负责区域蓝色:
大火负责区域
问题四:
1.模型的建立:
a.本题要求接到火警报警后30分钟内赶到着火点,求出满足要求的最少消防站及建设点。
对于这个问题我们采用了0-1规划模型,以所用消防站数量最少为目标,以时间最小为约束目标引入0-1规划模型,并借助数学软件LINGO进行求解,在三十分钟之内达到救援目的且数量最少
b.建立0-1规划模型,借助lingo求解
目标函数:
约束条件:
模型求解:
运行结果得:
需要新建4个站点才能满足接到火警30分钟内赶到着火点,四个消防站分别建在:
六模型的评价及改进
模型的优点
1.对大多数着火点,消防站都能以最短时间赶到救援。
2.本文所用算法,效率好,精度高,解决实际问题方便快捷。
3.本文把实际问题抽象成集合模型、规划模型和图论模型,完整准确的描述了实际问题。
模型的缺点
1.本文使用期望就会使小部分较远的点不利于救援。
2.本文没有考虑消防队任务量的均衡度。
3.本文没有考虑到实际情况的复杂度,例如消防队接到某地火警时间距出警时间,还有两个消防队接到大火火警时消防队赶到着火点的时间差。
模型的推广
本模型不仅对消防站适用,而且可以广泛运用于交巡警平台、医院等应急服务设施的布局。
七参考文献
[1]王沫然,MATLAB与科学,北京:
电子工业出版社,2008年。
[2]朱旭、李换琴、籍万新,《MATLAB软件不基础数学实验》,西安交通大学出版社,2010年7月。
[3]方世昌,离散数学,西安:
西安电子科技大学出版社,2009年
[4]吴军,消防站优化布局方法与技术研究,消防科学与技术2006年1月第25卷第1期
八附录
附录一1.MATLAB环境下利用floyd算法求解的程序:
function[D,path]=floyd(a)
clc
a=[0.0InfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInf6.66.611.2InfInfInfInfInfInfInfInfInfInfInf6.2InfInfInf
Inf0.08.2Inf9.5InfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInf10.0InfInfInf
Inf8.20.0InfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInf7.38.2InfInfInfInfInfInfInfInfInfInfInfInfInfInf
InfInfInf0.0InfInfInf12.1InfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInf9.0InfInfInfInfInfInfInfInfInfInfInfInfInfInf
Inf9.5InfInf0.