|
; M; X7 J) j- e; }$ N5 E: b! a6 `$ ] 2021五一杯数学建模B题消防救援问题
B* v* |* n; S+ s 消防救援问题 Y) Q+ H0 Z0 _5 [1 b" u, F$ G, [
随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。
: D! ?5 k, \ q: Q$ q 某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。 # k$ X' P2 x7 G3 x# x+ s) p
请依据该地的消防出警数据,建立数学模型,完成以下问题: 8 a8 E6 \6 t, @' {% r
问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。 , l0 a2 L; f% |/ Y9 z+ x
问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。
6 c0 {1 `7 U# u1 Y( } 问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。 5 {7 i- ]3 U& I# l" V
问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。
' w! Z; U5 l. c' {: x 问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。 9 f" H, Z. Z5 }. ]9 ^! E8 j
问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域? - v$ A4 E) g# N! L% E+ G, I
# K8 Z# J$ L [5 a& N% {8 W 问题分析:
! y) Y% B% h7 o( X! H, [ f 针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、 s ^3 _" ]/ n. c' {* z g( d
2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个 ! b6 v7 `: j. v+ q; ?8 H! P( u7 p
月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。 1 r. l/ y7 S) m2 Q4 p" G2 X I
针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。 . A* r k$ V% W1 _
针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。
. P/ B. n3 ?$ c' j, K" d" v# g 针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。 % L1 t0 @, G0 N7 B
针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。
2 }# Z8 u5 x- S6 j 针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。 + C4 L7 s! D Z) H( `* \% M
1 y. X" c/ ]6 e9 w4 r load 'xx.mat' n=length(y); yy=ones(n,1); 2 \* v% |& o- O( O: c" c* V F
yy(1)=y(1);
+ j- |2 ]- ? p1 g0 _" E; Y8 s for i=2:n
6 p5 A+ t& _) P# }! |: o* g yy(i)=yy(i-1)+y(i)
9 i! S J7 O2 w" v end
, c9 |- u* `' y; i# O- \9 k B=ones(n-1,2);
F; t+ u3 f8 [- U for i=1 n-1)
( l9 y" ^: A; z! \ c# U* l! G9 I B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1;
4 h5 ?8 E! c1 d5 \# L end BT=B'; for j=1 n-1)
2 _8 T7 z4 r$ _/ O3 c8 U# W. F YN(j)=y(j+1); 0 y; B* A/ |( o6 o
end YN=YN'; $ _2 e8 T4 g' c! J/ Y. g1 E' ^
A=inv(BT*B)*BT*YN; a=A(1); 4 N+ o' K# J+ z# t, ?$ c+ D6 v' B
u=A(2); 3 h& n) o& |# M" M8 M& {
t=u/a; . W6 P2 Y3 N7 d. n( o
t_test=input('输入需要预测的个数'); i=1:t_test+n;
% @ Q, }# B( `. Y yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1); : l T d5 e. [
for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1); , _7 @& i# X7 A" i) ~7 E
end x=1:n;
- T7 L& V/ z$ K# \# E xs=2:n+t_test; yn=ys(2:n+t_test);
+ D6 ^* J" |9 z+ v3 x' D plot(x,y,'^r',xs,yn,'*-b'); det=0;
' D, W+ b4 [, V; g# q, y9 G; C for i=2:n 0 D1 `- U4 ]7 f4 g4 P3 P
det=det+abs(yn(i)-y(i)); * |7 ~, D7 q$ v$ |
end det=det/(n-1); 6 ] }& k { V2 Z! h9 [
disp(['百分绝对误差为:',num2str(det),'%']); , [' z: t% J, F i
disp(['预测值为:',num2str(ys(n+1:n+t_test))]);
. W1 p% H: U/ A B: o# p/ j, ?* Y1 X$ v
. y* G1 _5 w9 {, v" c4 T6 \
% T, A1 M! a% K3 H* E+ ]+ ~, s! h3 E- \
|