$ C& y2 [/ q- r. @, N% ?$ O! }
2021五一杯数学建模B题消防救援问题 ! l+ F5 g8 s! L1 R2 r) v9 Y
消防救援问题 - N1 {+ c% O' y% S0 S' z
随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。 0 q9 N% y' I7 b/ ~5 _
某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。
3 S- p, n- t, V w5 z ^ 请依据该地的消防出警数据,建立数学模型,完成以下问题: 4 f: g! j/ H F; n q9 }+ K
问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。
: _2 O" M' P; Y5 p! J/ w7 L$ F 问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。 3 M2 A5 o" U- @
问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。 ; h. E+ l" r. i
问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。 # U1 M$ r( Y1 {* ]! g
问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。 _' A" m P' O& A, ^
问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域? * x$ ^9 [" y o/ ^& E' d/ f- F `" K
' w1 T0 h) K! U- c! X
问题分析: 1 Z+ f0 a: q8 e2 v8 {1 o% Y
针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、 3 ^0 E% C0 a$ W1 l+ V) E4 L
2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个 7 f1 {8 J( r' |, c3 r
月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。
, }0 ]& N- X, {8 Z; h& D" L 针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。 - B0 c0 G G# n$ r2 L# q& V
针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。 , ^" M9 m r" }$ O! a
针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。 % h2 U$ _7 s6 Y C$ c* a
针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。 ! j$ A4 E+ e4 B' @. D
针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。 * _, J t' {8 e, s6 s' _" O$ y
( p* ~2 K# h. P5 s8 d8 h q
load 'xx.mat' n=length(y); yy=ones(n,1);
, r" E& b' V0 ?; R6 _ yy(1)=y(1); + O/ O8 H' C5 @, t0 \5 \: n, P. J) M7 J
for i=2:n
5 ~. v+ C' @$ O+ D9 G: M yy(i)=yy(i-1)+y(i) 4 _: @: m3 k% _% h3 T! P$ g3 M( T6 G7 e
end
3 y, g# i/ w( `- ~8 O7 J. `8 L B=ones(n-1,2);
, y! I0 _& v( C0 X1 P' V/ ` for i=1n-1) ) w. k: P5 m0 r6 Q) v1 o3 j2 v; R$ E& Q
B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1;
6 s1 B1 [0 J# s+ T/ }8 n8 L end BT=B'; for j=1n-1) 3 c0 i) J# [! p4 s
YN(j)=y(j+1); + S8 L( s& j7 o* d# R- S+ ^
end YN=YN'; : o" t9 [( C6 n" w# D1 {+ ~
A=inv(BT*B)*BT*YN; a=A(1);
" p9 t% w$ w3 D+ I u=A(2); . _/ o& E; P$ [. H2 l y
t=u/a; - P! \ G; R! Q" b4 Z+ H
t_test=input('输入需要预测的个数'); i=1:t_test+n;
$ y' T2 [8 I& {6 l+ W yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1); x" o8 R) T& C! p
for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1);
6 z3 W9 f: |% ?3 z7 ]: @, d end x=1:n; 2 w6 E* t+ S% A3 W4 E( B: X/ O
xs=2:n+t_test; yn=ys(2:n+t_test); $ B3 A" z x6 R1 J) K3 K/ v- [* g6 \1 i
plot(x,y,'^r',xs,yn,'*-b'); det=0;
( R, w2 i Y& d" r V4 ^ for i=2:n # d1 ] E# i% g9 [
det=det+abs(yn(i)-y(i)); ( d5 a }2 P9 U" c
end det=det/(n-1);
6 {; m+ B: z7 _ e6 h disp(['百分绝对误差为:',num2str(det),'%']); 8 M: G) W; Z4 I% d" @" e2 P, @
disp(['预测值为:',num2str(ys(n+1:n+t_test))]);
$ [% ^+ d% R O1 z( b6 v
% A* H1 g, M( d5 i3 r
! ^& L! S% d& O6 T' O- r
( [" l: w! w) d# b4 |
$ w4 m" F( {: ?$ t" N* n1 r |