|
' u- w* J" x. b4 G8 |; k' `+ `
2021五一杯数学建模B题消防救援问题
. o/ L: r% i _( E$ z4 o9 X8 f 消防救援问题
9 P' T, I5 S M! U$ l l! z( b 随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。 3 {4 ?9 k8 X+ [6 P
某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。
) \8 Y/ p/ T9 P9 M3 A. _& ]8 t4 X/ n 请依据该地的消防出警数据,建立数学模型,完成以下问题: / d9 l/ F) R l4 |
问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。 9 y8 m. C# |( V9 T8 C) w
问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。 * z6 L* N; ?' m
问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。 1 N* I3 j# k; y0 b& o% H( q
问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。
6 B4 G, F' h, N* ]/ B& d N$ Y2 ?& o 问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。
" _* p4 K( B' ~5 O 问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域?
. C) o) g$ b5 y8 z* E: z 6 I) {9 E% @, o- ^
问题分析: " v( [- i: u* U4 Q8 k
针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、
# h" R+ d9 L$ H, a$ n7 q. c 2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个
' `- I9 L) W& M k X 月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。 ; C$ A2 [& @2 d6 E
针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。 . Q% k5 N0 K8 \# \ Y2 p$ @
针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。
1 U' J5 [3 h) Z) C+ R2 {/ Q 针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。 f) k+ C: n/ V/ [6 b
针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。
, ~3 y* w$ w8 m) H! u 针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。 % l' l, d0 q' @/ c C# V1 a
" P6 |7 @. N7 g2 M2 t9 V }
load 'xx.mat' n=length(y); yy=ones(n,1);
) A0 O2 E: p$ W yy(1)=y(1);
$ w2 f- @* b' A4 D, Q: ~) l for i=2:n
; ^$ E. ?4 }- V. e, K0 ] yy(i)=yy(i-1)+y(i)
0 Y1 Y* {2 h, c! s ]* i end
" Z) v+ B7 Y1 J: _5 _' d B=ones(n-1,2); - G d( l0 D; R0 |$ r
for i=1 n-1) , N- U- B: n) V& ^5 Y
B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1; . ]2 q) A+ m; E4 g, B' _
end BT=B'; for j=1 n-1)
' L$ d. H( i6 L H" d m YN(j)=y(j+1); ! \4 O( h3 [: d- i) ]; }( z1 a
end YN=YN';
- `2 g! B9 A/ E) @; w A=inv(BT*B)*BT*YN; a=A(1);
* e a: U% f7 B/ M+ ?+ q* _4 X u=A(2); ! _% Y3 A3 V5 i- M4 `- l
t=u/a; - ?7 h5 V" F# f8 C
t_test=input('输入需要预测的个数'); i=1:t_test+n; 5 O: h. k1 I( M! {( g
yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1); . C' v- x+ \% `4 S+ t
for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1); E M& X7 q. J* w$ y
end x=1:n;
* C4 d$ @; h# m6 i! y4 b xs=2:n+t_test; yn=ys(2:n+t_test);
# x. \! J" k; Q6 }, c plot(x,y,'^r',xs,yn,'*-b'); det=0; 7 a4 @3 y6 x2 ?- O0 O
for i=2:n
8 @& `3 [: x. x$ [0 ?- N det=det+abs(yn(i)-y(i));
1 M! E* y# P1 S0 u0 n end det=det/(n-1);
' D0 P! s- y/ q5 ^& j* W* h+ k9 b! i disp(['百分绝对误差为:',num2str(det),'%']);
9 F1 v, Z K' S% I& h* g' Y( f: h disp(['预测值为:',num2str(ys(n+1:n+t_test))]); 2 x( C6 b5 ~" C/ P4 U; z
0 l! S) h N+ ^& j5 N3 d
' h4 u& I2 ~$ e- q5 F6 T
* l8 D5 v& X; C! P1 \2 _
$ g; L3 i6 f3 K' D T* a) v t |