! r9 Z- a8 y5 \# M: [: w
2021五一杯数学建模B题消防救援问题
# l1 G: z! n7 y$ }- j- ]) u3 e 消防救援问题 - a. @7 X3 G) T% X) Z" v
随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。 0 l A, h! h) H
某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。 # e9 F3 h, ]6 s: ^. a0 y
请依据该地的消防出警数据,建立数学模型,完成以下问题: ) G3 K$ ~( F8 U9 u+ c) P' ?
问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。 9 A( C: K- s$ V% K
问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。
. X! Y) z$ ~5 X' N5 v: Y 问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。
4 Y4 y' [9 b6 T$ o) ? 问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。 - b% W' |0 ~6 w" H9 X8 k H0 x% ?2 o
问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。 ; t; h- E& P/ e: K7 `$ y+ }- {
问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域?
1 e8 ~) E' v' z% [3 n" f " S. f4 w" }" n% h3 F
问题分析: 8 l- z$ s! F6 k$ M7 y
针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、 4 a0 a6 U* B# q
2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个
7 t+ ]- G+ w K4 R/ x G# V 月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。
. H6 Y0 U% q( e2 R" \ 针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。 8 h* A; N& y$ p0 b/ Q
针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。 + w2 b6 [) `2 \; w* a, o" W2 Z# ~7 s, P
针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。
9 o. Z, n: H4 M e# }7 h" j3 X 针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。
1 X' C+ e7 `9 O. a! p: v 针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。 }" z m3 T$ P7 J7 Q0 w
1 M' L' A& P/ e' ~ load 'xx.mat' n=length(y); yy=ones(n,1);
$ ~4 y& }8 _; \6 ?/ H yy(1)=y(1); ! r! \0 c' \7 n
for i=2:n " t2 X; N4 L' d2 k- [
yy(i)=yy(i-1)+y(i)
: M7 h* n, V k- o% k* R end
/ N, T0 c' r ]: i: i! X1 b B=ones(n-1,2);
' M1 }4 \$ I0 q, ]0 Y# j9 F* Z6 C6 | for i=1 n-1)
: A" S9 O+ l2 K% m0 K B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1; ( m) [' F9 ?2 e- C6 q
end BT=B'; for j=1 n-1)
) H( ?8 E5 R) z7 s YN(j)=y(j+1);
4 d/ }+ t: @0 ^' s6 T end YN=YN';
; G2 I I+ h! [. [9 a A=inv(BT*B)*BT*YN; a=A(1); & x0 Y4 `7 _$ w2 M% W0 t j7 z
u=A(2);
; k1 P. \- O/ l t=u/a; $ r: O# u& H# H0 }6 w* i( N
t_test=input('输入需要预测的个数'); i=1:t_test+n; ( G% N: \% H1 Q
yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1);
+ E4 P! C& i5 E l for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1);
- ]3 R% v4 l0 q d; B+ R9 p8 S end x=1:n; * k' L. `( d9 w1 e0 M! J
xs=2:n+t_test; yn=ys(2:n+t_test); * T3 c1 ^. M' J+ k; y
plot(x,y,'^r',xs,yn,'*-b'); det=0;
+ _! L; j1 [8 ]5 R% S- S for i=2:n ; ?" @6 j- M) Z
det=det+abs(yn(i)-y(i));
1 G. K: w1 S$ _; p$ a. d+ M4 r end det=det/(n-1);
( d+ k0 t3 h+ A# t4 s$ S disp(['百分绝对误差为:',num2str(det),'%']);
7 u+ N' R4 C" _7 p- v5 _" Z! K8 _& y4 F disp(['预测值为:',num2str(ys(n+1:n+t_test))]); ( T0 m8 h% _0 n! ?" F
) _* V4 |1 P$ d( u' b0 b: X' N
, w) I3 K! z) y1 q; P
$ g: d$ h9 p* w0 Y
( H# W( L v. E* m* _! W |