|
2 C3 [9 V% X# `/ ], s$ W
2021五一杯数学建模B题消防救援问题 ; j) p- q* ?6 ? P! N* y
消防救援问题 8 P3 d' e# B$ H6 q9 h6 N% `" A* U
随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。
$ [5 Z( U7 F. }! H4 s7 v, d 某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。 # T! P; R3 W% w" U% L1 [
请依据该地的消防出警数据,建立数学模型,完成以下问题: 0 S9 _& K1 F; }+ H4 L! s" G% g
问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。 1 Y6 G9 S% v3 U# {* e
问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。
5 J* Z/ S/ ~0 v9 b* j5 _# p5 I 问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。 8 g K& x4 d2 d: G0 H. g
问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。
9 T" a7 Z6 W p- l/ ?; N( L( y% i 问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。
$ h' \6 X4 j, b; [0 t+ M3 y 问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域?
* L6 y. S* W* v* P5 o' O$ F) ?
; X* ]0 y; e. Y; K& L8 K7 \# F 问题分析:
/ |+ X: _" |$ H+ X9 o 针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、
$ f# [( k8 \' g 2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个 - w1 O/ x! Z9 {* `# r& Y/ O
月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。
8 Q/ ^& V- m- T8 h1 n8 ?" W0 g2 s 针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。 2 F2 v$ _0 [7 X( J0 j2 r, Q
针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。 6 C& k# g/ E0 D7 y
针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。
1 q4 f4 K: P& ?2 o0 _ 针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。 1 T* T- i0 N1 ]" `. {! u! g, X
针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。 : \6 W4 [. z- {3 o8 s: L
" k# }& d0 b$ q! U+ V. h9 T load 'xx.mat' n=length(y); yy=ones(n,1); " j& u7 w x( Y/ [' l4 s
yy(1)=y(1); 3 O; M; h; P F6 w, q
for i=2:n $ f1 p' ~/ }5 Y. m4 l9 v
yy(i)=yy(i-1)+y(i)
) l( n# L9 O+ j# U6 h, ~- q% R5 O end ( V6 ?4 V8 X9 \* y* _& m! c
B=ones(n-1,2);
j/ v1 K. u7 U: Z; b6 h. v for i=1 n-1)
7 C0 y: Z) A$ w8 w! n$ T% R B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1;
+ X* M4 ^ ~% |1 k3 l9 B end BT=B'; for j=1 n-1)
$ y& R: ?, l# {2 U# Y* W5 p8 Q YN(j)=y(j+1); " M5 w! |: \4 P$ a9 x/ _) L
end YN=YN';
" M8 M) ^ B `% X$ Y A=inv(BT*B)*BT*YN; a=A(1); 4 r7 k, Q5 u7 V5 \; }2 r- d' U
u=A(2);
" `8 t8 a- Y5 ~6 Z, h$ V t=u/a; * U7 F" [/ N, V1 ~- O( F
t_test=input('输入需要预测的个数'); i=1:t_test+n; # p7 Q1 p/ D0 a3 H+ o
yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1); 9 Z( X( z( o' S9 v+ i& G
for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1);
. _. ]% m; r, W- ~$ E end x=1:n;
% J* {/ V- l* V4 V. `7 y! F xs=2:n+t_test; yn=ys(2:n+t_test);
5 k* o5 M6 X" ~6 O+ P plot(x,y,'^r',xs,yn,'*-b'); det=0; ( r9 u6 p8 e! z7 j9 d: v/ p8 g
for i=2:n
. }2 \8 |5 T/ H7 k& \0 g. w. Q det=det+abs(yn(i)-y(i));
- u u3 m$ @& ]9 X- j, y7 y end det=det/(n-1); * Z3 J( N( A% c) H! b0 i1 ]
disp(['百分绝对误差为:',num2str(det),'%']); 2 |+ F" H8 Z- S* K" M& @. t
disp(['预测值为:',num2str(ys(n+1:n+t_test))]); , e, r9 ~" y7 ?4 h) j$ D1 c+ e
# k5 A, `6 V" h" L6 r3 p+ t
1 p8 }# k+ w) P |+ ?5 m
# L+ G- a' c) b) J+ S) v
8 A. H' `) {# Y' ^) y |