7 ~0 l" H. `4 e$ U/ K) T; i& ]! [# i
2021五一杯数学建模B题消防救援问题 ) @9 N- D3 P+ V/ Y+ Z# b) e
消防救援问题
4 O* y/ d! ?* F: \ 随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。 0 p& N+ `" G( x9 ]% r
某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。
3 X# \8 G2 w7 _# S8 T' k+ U 请依据该地的消防出警数据,建立数学模型,完成以下问题: 6 p0 H) m& j; z7 a, V% }
问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。 % |- g* e. {* t5 L7 K# B8 Q0 Q1 N
问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。
! A/ p, D! Z( @ O' q+ P 问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。 " E( ?: T* ^ b8 Y, e% ]0 O6 B0 E
问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。
* o; d D# Q) P' g* d9 i4 z 问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。 ) y% y7 z9 P% n9 `( g7 V
问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域?
5 S8 x3 [- V: ^! b+ U8 ?
0 n& R6 j6 F; } 问题分析:
) l1 f8 @9 G: p 针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、 ; B) `" @ ]3 y
2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个
! p; j4 K9 e* y0 H; o1 { 月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。
" p3 H9 x+ o I/ ~! ^! u& A 针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。 0 V8 k2 q0 { x0 ?% Q4 ]
针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。 % a. V/ \4 S }5 U5 w; w+ |3 o" i5 U
针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。
+ ^+ |) J( _% a( g1 h2 R6 a 针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。
, o1 |( T% e5 E s; z4 { 针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。 7 f. M; {% ?! y: L8 a
6 |0 R( O* [$ x! z2 A load 'xx.mat' n=length(y); yy=ones(n,1); . M' E. j" E' A, ^5 c. C0 C( \
yy(1)=y(1);
9 s, Q3 z, K/ [& N% W& F7 J& m for i=2:n J0 _3 y3 d/ L4 v
yy(i)=yy(i-1)+y(i) $ A- L" b6 p4 Z) o. U( @
end
1 A% T6 ^0 O3 j6 b B=ones(n-1,2);
! t6 |) t! s! i" J) D. u for i=1n-1) 5 M" K' V9 s% p
B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1;
/ {& D, r4 u8 ] end BT=B'; for j=1n-1) 7 l- k$ e1 [- a6 g+ K
YN(j)=y(j+1); # X+ v$ u# Q' j
end YN=YN'; 3 Z# F$ H4 n- R1 y
A=inv(BT*B)*BT*YN; a=A(1); 0 r. @( V: H$ J9 z% y
u=A(2); ! U) v3 }* K( p0 {. ~
t=u/a;
) k4 T" V9 B( V0 e t_test=input('输入需要预测的个数'); i=1:t_test+n;
4 h* z( m' V w yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1); ! u$ q" [$ T6 F. h: m/ X) P
for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1);
1 U; v# N( Z, R& B% K# {( g end x=1:n; D/ d1 _9 i8 h. j9 t) S
xs=2:n+t_test; yn=ys(2:n+t_test);
, K# a' p; z8 g/ r; V/ @( E h' v plot(x,y,'^r',xs,yn,'*-b'); det=0;
+ W/ L# A9 U6 f% N9 Q7 G" t* F5 J for i=2:n % o8 F" V: ]) J$ u
det=det+abs(yn(i)-y(i)); : `1 ]& ]3 m2 D8 _
end det=det/(n-1); E* c) Q9 A5 T& f) H8 r: I
disp(['百分绝对误差为:',num2str(det),'%']); 6 c2 E7 p3 c& g+ {+ f% Z0 u2 u
disp(['预测值为:',num2str(ys(n+1:n+t_test))]);
9 Q& P& C7 P, n. U2 n5 u% J M' \/ u2 V+ T/ ^0 k3 z' m! [3 r5 w
' I5 {. g" S; _9 w7 e# F& [) P- g8 Z8 i4 t9 a" ?
3 u+ j# j7 v, g( q |