" I5 f: N" c1 R 2021五一杯数学建模B题消防救援问题
( f, ], H a% \, t7 ^% Y, a 消防救援问题 - T% B1 O3 u) G- `; |
随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。
9 e' Z$ Y4 l2 R6 j4 T2 y$ w 某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。
$ U* ~% r( S- O! t; P0 { N 请依据该地的消防出警数据,建立数学模型,完成以下问题: ( ?) W, o; p& e; s
问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。
+ v" o3 L7 Q$ K& d- g 问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。
- c: c4 U0 N. A& _ 问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。 8 s1 h0 I3 K6 Z/ W& n' \
问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。 6 ^1 n, R, z: W1 ?8 t
问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。 2 G7 ?% L% H3 z0 j! y8 m
问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域?
' a4 ^0 e6 f4 I; [ : M2 c0 j {" k+ m6 ]
问题分析:
5 _ E9 V, `* t8 D) V/ d& ? 针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、 4 \# f3 z, f. l; B7 z
2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个 1 b5 V5 v7 E, ?' o
月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。 ! l2 z/ h/ H1 Z, B% T3 } c9 x5 K
针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。 1 b$ u% p# W D4 X
针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。 - M: d6 g2 p4 [; h2 X
针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。
l" v/ `; b% f0 {, [ 针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。 % `( N9 {- B, u: x% k
针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。
V" I `1 }; T 9 @3 J7 p5 K& m3 D+ Y2 a+ r
load 'xx.mat' n=length(y); yy=ones(n,1); 7 r% k4 n3 C7 |, R
yy(1)=y(1);
$ u: t. Z- f+ f6 J% F- e for i=2:n
5 e5 @7 [ P5 q) R$ J4 C yy(i)=yy(i-1)+y(i)
, }% d- a) R" ]1 ]: S B end % O0 D6 X# ]! S$ f/ g' e
B=ones(n-1,2); " ]$ K7 l e4 S, Z2 D; m
for i=1n-1) 9 K2 O4 y. s6 Q& f G* U. S- y3 a
B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1;
5 e% W( @1 F X6 e2 t end BT=B'; for j=1n-1)
6 K8 K* O* p) S0 X0 y8 R YN(j)=y(j+1);
; w8 u0 s( K) R6 t0 Y+ Q# i0 N6 S end YN=YN'; / k# s6 {+ c* i3 V) H7 P5 V
A=inv(BT*B)*BT*YN; a=A(1); * o) T6 U3 A$ a1 |
u=A(2);
# F/ S7 [2 b, D% s! v t=u/a;
8 j0 w9 e6 a2 b8 o t_test=input('输入需要预测的个数'); i=1:t_test+n; 4 S6 r- q4 L/ h
yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1);
6 L+ y! X! v5 J( p" p0 X! G for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1); & u N# z. [/ `! Q
end x=1:n;
+ O5 a2 ]! O5 i4 p& V: r' Y xs=2:n+t_test; yn=ys(2:n+t_test); . p5 n) T9 F8 ^, g% y" i( A
plot(x,y,'^r',xs,yn,'*-b'); det=0;
( N( K( `" F! V- E4 n" E3 J- L for i=2:n 2 F+ y: ~3 z6 V8 K. x
det=det+abs(yn(i)-y(i)); ( l& M, Q. S: O' H: A2 d
end det=det/(n-1);
1 c5 }+ k- S/ N# S5 n disp(['百分绝对误差为:',num2str(det),'%']);
& n) t& a$ |' Y- e' _+ z disp(['预测值为:',num2str(ys(n+1:n+t_test))]);
4 o$ X7 _& m* _' q( S e
, t# q7 M3 i v. S c+ P
5 F5 j" R$ V0 \- B: t- g6 h5 ~0 {5 z! b, A4 T$ I, s g7 W
$ Y2 @0 a0 n7 m2 n2 y
|