|
+ P* R" F# C% e6 j
2021五一杯数学建模B题消防救援问题 B5 `) T) N+ [/ B# o/ p+ A8 j$ l$ D
消防救援问题 ) `& P) _: M/ O$ ]
随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。
7 g4 v( a/ J& {; D& {/ m 某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。 7 U5 `0 J/ O/ Z
请依据该地的消防出警数据,建立数学模型,完成以下问题: * x" n) ]4 |' `& C
问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。
& _) t p7 X" b n 问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。 - r) g. s: F' p( ~! k, Q% E& r4 r8 u
问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。
; G& w; W0 t+ B, s f3 f" ` 问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。 - ]! _/ {" ^2 U6 H$ o7 v ?
问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。
! x- o, b' c2 v9 ^ 问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域?
/ u4 D* y( H0 {6 R" F; `+ W ( c1 E3 E: Q" U* V& ?
问题分析:
/ W; a7 g7 C* C6 z5 r 针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、
6 S6 ], I1 s. T, W 2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个 9 R- R3 f# J' D6 x
月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。
& f" @4 W& O0 x# W/ G8 Z; | 针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。
5 Q9 N( j) p, j 针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。 5 A+ ]) E1 Z* `3 R6 r. f
针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。
1 F2 [; [, U7 t1 t' P# I5 G 针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。 . k4 \9 Y% m& T
针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。 $ W% a9 y: F& Q. }& v
! S' ?5 j: n% U3 H
load 'xx.mat' n=length(y); yy=ones(n,1);
1 ]! m( N. j: j6 T! \! u8 K5 L8 n+ B6 P yy(1)=y(1);
) \7 ?9 M( _& d1 G; i( l for i=2:n
2 c2 G2 K8 t: k" K' p0 l yy(i)=yy(i-1)+y(i)
$ `$ p# Q# Q! g6 }' n end
; _' w8 Y9 I, V; E! H2 i- K0 o B=ones(n-1,2);
9 `! N) D3 i- e0 k for i=1 n-1)
& S9 n$ S- ?2 [% T9 E: L B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1;
/ t2 S9 i( b5 N6 B2 V end BT=B'; for j=1 n-1) # ^8 @9 u, q. y$ Y+ C( ]
YN(j)=y(j+1);
3 W- k t: \( I6 s: {0 i! A2 h end YN=YN'; * f9 {8 L) a/ K' z2 U
A=inv(BT*B)*BT*YN; a=A(1); / J( ^) B# ?7 \5 Y1 Z6 J
u=A(2);
( b+ P. T! N/ T* u3 K" v4 }% } t=u/a; / z' y6 K7 _ z1 I7 B
t_test=input('输入需要预测的个数'); i=1:t_test+n;
, p: k# {. \3 i3 c& s yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1);
( [7 J l( V0 h6 k+ A for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1);
m2 w4 L- `) N, G% }' T end x=1:n; 7 I+ E: x% e" m
xs=2:n+t_test; yn=ys(2:n+t_test); 9 _ H! P7 B8 L' z
plot(x,y,'^r',xs,yn,'*-b'); det=0; 5 [% C# H- i6 |: E+ W! e
for i=2:n 6 G5 ], i/ r# z2 {- ]" d$ p8 p$ l+ e
det=det+abs(yn(i)-y(i)); 8 `4 S% j _! m0 G
end det=det/(n-1); ; K1 n+ t ^! L8 s0 }
disp(['百分绝对误差为:',num2str(det),'%']);
* ~) V W2 U! j0 |. x' N' A) C9 r disp(['预测值为:',num2str(ys(n+1:n+t_test))]);
) D4 h: S Y8 W
( ?: i/ T. i1 Z% B. B9 u) F* P4 M9 V: Y2 D3 J7 ^" \
( h5 D4 \! o) m5 v# b. d F5 b
|