|
0 U( K& r6 F, c( w3 f% F 2021五一杯数学建模B题消防救援问题 5 |% H2 o, F' j3 T% x
消防救援问题 * ~& l( \. I9 h5 J1 }
随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。 4 q$ c" |1 h$ R7 V+ o
某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。 2 E- _. e) T% z! q. T1 ^3 ?
请依据该地的消防出警数据,建立数学模型,完成以下问题:
& B5 e( W$ T5 e9 l f9 u" S 问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。
4 n- \. p% Y1 `, S8 U, E! V; a6 ` 问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。
( R0 }- j7 `( P. o3 }9 c# p$ U 问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。 + l1 Z k4 _2 d8 V+ l. J, k7 c
问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。
' t3 I- `1 v/ I 问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。
# a, i+ Z* W6 i: w$ f 问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域? % Q, H# A5 B) Z) }- M+ J' r
( m, c7 }) R- R# w# |' C3 ?
问题分析: # d( \3 p4 O- J( X
针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、
+ S4 e$ v/ p5 R8 ^! H 2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个 , [5 I) i1 x* e! `
月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。 6 D' N- z( p* `6 D3 d: v
针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。 + L. F( A) K; ^. l0 N7 N- N! a
针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。
, @# A1 g/ x+ F 针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。
" b& U, G! s* i$ i* V% q2 d# z. t 针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。 $ e% I& I: D2 ~. v
针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。 0 w8 c/ r& N: Y
( R. E7 K& o: h3 Q+ z load 'xx.mat' n=length(y); yy=ones(n,1); 5 |2 }( C' w$ |
yy(1)=y(1);
6 v( |( d9 ?1 @3 w' ]9 Y, Y for i=2:n
; w$ D' R4 \9 a0 y8 W yy(i)=yy(i-1)+y(i)
6 B6 Q8 q ]0 n2 E: b end
6 ^2 K0 T4 j. F" G) B. C B=ones(n-1,2);
* }/ K5 d* ^4 P' ^, @/ _ for i=1 n-1) 5 \9 O4 L' l' p6 [
B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1; / {5 F8 ]4 Z8 s, f j/ p
end BT=B'; for j=1 n-1)
( H7 q1 W- R6 r: C9 O YN(j)=y(j+1); * W) b( q6 S+ _* V
end YN=YN';
6 `8 H. I7 a" A9 S& [, l/ _ A=inv(BT*B)*BT*YN; a=A(1); + j" a% O! [8 `5 x) q7 \
u=A(2); $ w: W+ o K' S1 @6 K
t=u/a;
6 m: |6 l5 O3 S C3 L t_test=input('输入需要预测的个数'); i=1:t_test+n;
" O ]2 r# T+ e% x6 \ yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1);
/ j0 r2 f! n, L3 U/ d0 Q& A- r for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1);
# K. V% s! e2 c* W, N# y end x=1:n;
& D0 R( m4 k& G xs=2:n+t_test; yn=ys(2:n+t_test); C) _7 `& B" c4 {: e; X: l
plot(x,y,'^r',xs,yn,'*-b'); det=0; # v; [% `* C0 i, U9 |1 `6 x7 \
for i=2:n 1 C7 N8 b- H" w% P3 G, R
det=det+abs(yn(i)-y(i)); : |2 L# t! J: E" n( O& ~
end det=det/(n-1);
7 h- L& N- E. q; Z& _ disp(['百分绝对误差为:',num2str(det),'%']);
' U2 M y6 i5 i disp(['预测值为:',num2str(ys(n+1:n+t_test))]); 7 j+ p* G8 ?3 O( X
7 i& D! v9 E$ `; e9 M% |- ^
: K6 |5 t8 T/ N) O( ]: L% O
5 Z' i7 Y7 Q/ J
# O) j; Q" i: N3 X0 y5 ] |