|
0 D* w% P, Q- z$ t& O1 F
2021五一杯数学建模B题消防救援问题 ) f) U3 k6 p1 O( _) A
消防救援问题
3 u" n4 h. D4 U5 U) w 随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。
/ K8 |5 o( t p 某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。
! [0 k% u$ h! ?7 y e 请依据该地的消防出警数据,建立数学模型,完成以下问题: + h) h$ \' x& t. M6 t
问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。 " o9 }1 v( {' K% _8 F' c4 V
问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。 5 L/ g' U8 d3 R0 q+ ]" |0 B- v7 I
问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。 ! B& D$ ^5 z3 w/ _6 V) c
问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。 9 ]) C- W" f: N# y; H* h& _
问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。 . [- t8 Z G$ D# I
问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域? " N& K$ |. i9 s2 x
; @1 n6 j! l% j" J Q$ ` 问题分析:
8 e, N! W3 Z: S# m5 \* o 针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、
! q+ v7 O0 E4 q! t$ v" T& l 2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个
* a* Z" s5 j: T 月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。
4 ?9 F/ k+ U2 z& ?, e: b2 g3 b 针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。
7 W! Z. H( g( p4 _ [1 o 针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。 , p. s6 ~8 \% P3 O
针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。 # \" W) K1 A8 T+ {0 i
针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。 , y- h) N: ]9 Z/ ?3 p) d. V
针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。
" l+ w# H9 `2 L+ h$ Z
: \# x" k" h$ ]2 R* h load 'xx.mat' n=length(y); yy=ones(n,1); \* c7 _( \6 u
yy(1)=y(1);
9 H1 f' N/ }' e5 M for i=2:n
) I ?% b5 e, v) C9 k2 B, v yy(i)=yy(i-1)+y(i) 5 X6 y- Y- g3 [+ } {! J& S$ a
end
# E/ K- D+ }2 I$ l! \+ s- H: n B=ones(n-1,2); 8 g( `0 Y6 V) _, {: J7 e3 d
for i=1 n-1) : @" f% R: w& ` j1 s
B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1; 2 P( u8 }" [$ b$ ?
end BT=B'; for j=1 n-1) % ~# D' w$ @8 w7 I, n$ w
YN(j)=y(j+1);
* q& t- G% [. x end YN=YN'; + s$ X3 \3 I+ i' @8 G+ P0 n
A=inv(BT*B)*BT*YN; a=A(1);
- K4 x' |: X) \% j; Z, K& V: I u=A(2); 1 ~* O$ h! e# `- Q/ Y% N$ ]! G
t=u/a; ; Q2 `4 m. {' k
t_test=input('输入需要预测的个数'); i=1:t_test+n; : Y5 t! y, E% K0 D2 Q0 {( j( z0 ]
yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1); 5 y9 X# _+ B& u# q m. J
for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1); 2 K, m- ]4 z0 P( u% ]
end x=1:n; , Z: w7 L: C. u3 |
xs=2:n+t_test; yn=ys(2:n+t_test);
% h( @: E' g: t* }* y7 K+ C plot(x,y,'^r',xs,yn,'*-b'); det=0; / r4 W& j/ p5 _# H7 J# h
for i=2:n 1 L3 {; h+ h) B4 U8 I, w& A
det=det+abs(yn(i)-y(i)); 1 X$ _0 b0 \6 s( h
end det=det/(n-1); " h5 v5 @! Q ^- S \
disp(['百分绝对误差为:',num2str(det),'%']); & v2 K |( ~" Z5 f$ [( P( m- O5 q
disp(['预测值为:',num2str(ys(n+1:n+t_test))]); / M# @' |4 m; O/ E4 v5 l" n
9 i/ v5 ?. r) C$ I% J& W/ x, {* p( j
6 o3 T7 g4 b& O, R- x1 x' Y( Z# |* Y3 ?* Y; ?
|