|
$ o7 z' ~1 B( C2 J
2021五一杯数学建模B题消防救援问题
0 e8 R0 r6 k: a# R$ j3 Y 消防救援问题 0 [0 M; Q$ Q4 u' _3 g
随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。
. _# M/ P6 ?/ C- [ 某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。 # A ]& c& R. B) Z- E0 O4 h E2 i
请依据该地的消防出警数据,建立数学模型,完成以下问题:
# J' s/ }) z9 f1 ]" x8 y+ i$ D8 ^ 问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。 ( I' U& |) P( L; F9 T. L
问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。
+ g+ @3 L# ~ w# c. i. Z 问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。 ( K' l8 Z" ^) u4 X
问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。 % I1 }/ e# C" M
问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。 & }- k* B* I2 d+ S
问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域?
. ]$ h* a' p+ D4 `: b' G7 L& U/ Y' U
; k! | _# {# U) H 问题分析: 8 j5 t4 U# A5 U% @
针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、
: l1 m: G+ i) f( b& d* H 2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个
: f9 ?- Y3 l4 j! J0 R3 { y$ Y 月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。
/ t* |4 W# w( t5 Z( N: H3 x 针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。
. \$ `3 O, N; n5 s8 o6 a! L 针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。 , z/ X$ N5 J7 Q- o
针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。
- e. O5 M7 {& O; ` 针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。 ! a0 ]4 u- V: f+ [
针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。 + t2 _' z) s0 p6 h P
% s1 a* m8 P1 C- b0 _' r load 'xx.mat' n=length(y); yy=ones(n,1);
5 ~( `' s) p# O8 g! q yy(1)=y(1); 8 Q" |& g0 p5 X: k% r8 G* s9 i
for i=2:n
: b" d# B. E6 [ o6 R5 N yy(i)=yy(i-1)+y(i) " w" J3 W& l+ w) |
end
* G' a0 @: _9 F4 ^8 e2 _' o# { B=ones(n-1,2); 6 j( _& M) G3 z' q O7 J- w7 p* Y
for i=1 n-1) - T( s5 m9 w v4 x N8 a
B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1; $ c: j+ a9 k! E6 m
end BT=B'; for j=1 n-1)
4 t1 M" L$ c. M5 f YN(j)=y(j+1);
) ^- B& a3 v4 C9 O/ J4 c end YN=YN';
+ K) R D6 |& L6 r A=inv(BT*B)*BT*YN; a=A(1);
! E( f- [ U' o' ]$ V u=A(2);
6 C# b; r, c) L1 H t=u/a; - A) Y3 z0 |2 v2 d
t_test=input('输入需要预测的个数'); i=1:t_test+n; 8 r% R- v A8 g3 d }! P
yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1);
0 Q4 H$ @6 f; D: O for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1);
9 S/ t3 t: x1 |8 @5 B4 W end x=1:n;
1 e. V6 C1 Q2 T2 ]" b' |3 x8 o" r5 P xs=2:n+t_test; yn=ys(2:n+t_test);
$ @4 e, U) C X' k- `# n" h+ d7 u plot(x,y,'^r',xs,yn,'*-b'); det=0;
# ]" \6 B' l# M5 |# u) { for i=2:n 8 z0 q( j- P8 C2 i
det=det+abs(yn(i)-y(i)); * n- Z" u- d1 t) o( e! c( l: c$ Y
end det=det/(n-1); 3 r9 C7 X! P! L/ c0 @
disp(['百分绝对误差为:',num2str(det),'%']); 3 p; }$ @0 E+ d- h. i
disp(['预测值为:',num2str(ys(n+1:n+t_test))]); R: @# c) t% J' R
: g% _$ u* y, @6 ]; {
' j% t' }! c/ P, m0 v) q x! `$ k
& Z1 f8 p; P# R5 N
1 E- s- i; ]. B |