|
7 Z3 F" ?3 j+ T" L- a! J 2021五一杯数学建模B题消防救援问题 " |; I+ ~6 f1 e+ b/ i* D
消防救援问题
; u( u+ |: b% e9 J, \; L0 I 随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。 , B) g9 t! ?" N4 M P4 d3 H3 ]+ [8 Z
某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。
% x& z) J) }: l8 @ 请依据该地的消防出警数据,建立数学模型,完成以下问题: " u- N% X8 Q& L9 I2 E) R
问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。
% z# q/ w0 n" s! r/ I- H. W8 ^+ Q 问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。
5 ?% o/ G' z- ?4 D2 r0 \ 问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。 ' m" ^. z2 y# I5 p+ V6 _
问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。 $ G2 \4 i1 ^2 T
问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。
& m1 J& i: ~ I. [ 问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域?
6 z1 D* _* y# E9 b6 Z + |1 `8 d/ r' }1 n9 A( }
问题分析:
" u( N$ a1 i" b7 K6 L 针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、
( N3 o# O* {. Y0 C+ l4 n, q 2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个 & L, Q# i) t) u7 _
月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。 ; W# j6 u# i1 O9 e
针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。
9 _ Z( r+ J2 ~' Z5 X x+ ^. R- [ 针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。
9 t: N: q& A5 G 针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。
2 U" i; {6 F p6 H3 z" I, G5 k 针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。 & b# F1 I M5 K- N8 {+ X
针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。 / [* n' l$ z8 l# U U/ l" F
0 a1 b& Z \1 N1 T$ | load 'xx.mat' n=length(y); yy=ones(n,1); 5 y9 R3 V& Y+ x, s
yy(1)=y(1); ) U5 {. x# p$ ?6 W
for i=2:n / b" G; H/ v! v7 y: }+ ?/ r
yy(i)=yy(i-1)+y(i) ! L1 T' z" Z- @. C( s2 b
end : i, J2 [- P/ n, G6 e3 r3 M
B=ones(n-1,2);
9 g$ L+ D( a/ W) }+ { u+ B for i=1 n-1)
+ H/ K' M/ E7 R B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1; - N4 v" U4 ^( N$ M+ h7 F7 Y. O
end BT=B'; for j=1 n-1)
2 T1 w( |, J- P/ c* D YN(j)=y(j+1); + S7 [. t) ~2 z; p. _' ^3 N: M
end YN=YN'; 0 Y o4 ^4 r `" b" j
A=inv(BT*B)*BT*YN; a=A(1); : T( z& K) s6 \
u=A(2);
5 c# E: Y j& J# I3 W; q$ F t=u/a; 9 ?: b1 L5 [ F% u" Q# e
t_test=input('输入需要预测的个数'); i=1:t_test+n; $ N: y1 W a0 i6 O/ ?) U7 h4 R
yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1);
7 K `% m. K! x8 N+ U" M9 ^# e* d for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1);
: l$ d$ Q+ G" i. H( P3 Q end x=1:n;
. T/ U' w- _6 o9 c4 n xs=2:n+t_test; yn=ys(2:n+t_test); $ ~. V8 G% r- r+ V) d2 I2 m
plot(x,y,'^r',xs,yn,'*-b'); det=0; 8 S" a, n' ?9 N& p# N- F* i
for i=2:n / H- q0 v# o* O& K2 c4 D% U
det=det+abs(yn(i)-y(i));
7 @4 s( l; r* B& p8 F: ` end det=det/(n-1);
! j1 C# H4 x' c! ~( ~ disp(['百分绝对误差为:',num2str(det),'%']);
. R t$ r# i1 u* _ J9 S disp(['预测值为:',num2str(ys(n+1:n+t_test))]); + S, h+ O/ b; x, I
! B) w! `; h2 p. ?2 X8 E
/ ~ X/ m: B% }+ _) q) ~$ [/ F6 E5 p8 M/ g: H: u: V) r
* C5 s# W, {1 c2 e g9 N0 d. m1 L; r
|