|
. A9 k' i. m: S3 j+ P
2021五一杯数学建模B题消防救援问题
, d) ?0 t# L4 N! n 消防救援问题
) k( D3 y a u Z1 `4 H, v 随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。 4 Q- i4 n3 [4 t0 r
某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。
5 y/ x7 G2 U& v 请依据该地的消防出警数据,建立数学模型,完成以下问题:
9 F: t* ^8 t$ y9 n5 B, b. P& N 问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。 9 @0 h8 v. M' Q5 ~: V
问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。 9 K9 l Z3 ~" f' O( k
问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。 6 R9 ^' j' K: x
问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。 1 x5 y) z g: {9 Z: G3 K @" M
问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。
" t7 e5 t+ Z7 |) {7 {* e+ k/ K: T 问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域? {5 ?) ]! E/ ^6 l
" j: X; g# y, k8 J* k5 y% ]+ _
问题分析: 3 K1 H F/ g1 Z8 J% N
针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、 ( b% L6 N1 @" V# |
2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个 % D/ E9 B4 u- S/ L$ Z, O3 L
月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。
: U3 z/ s+ m9 z7 M4 }- y) \) } 针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。
9 A9 |" J9 g+ h" f 针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。 ( t: ? \* ^8 ^1 ?
针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。 $ G$ @) E# q' _2 R$ l7 e) M
针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。 " ?$ @7 P! L; n2 B- ~0 b
针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。
' X& M w0 `- I Z& X- _
0 A6 n4 p/ _$ _$ j load 'xx.mat' n=length(y); yy=ones(n,1);
- G" i+ X- u1 b3 V' t. {$ [ yy(1)=y(1);
+ f5 C: s( K3 S, I for i=2:n
i2 E) l" c6 {; P, _) B* _( N9 b9 u yy(i)=yy(i-1)+y(i) $ H M/ G: ~! m O/ h( M
end : j' W- R' o+ J) b0 @
B=ones(n-1,2);
. q7 {5 o2 C! D for i=1 n-1)
, k: ~3 v" z3 A- S9 d6 o* c$ J$ F B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1;
( n/ }' R$ V# K. _# D; T5 b end BT=B'; for j=1 n-1) / z0 ~! \- ^" K% c& ?$ ?% M* T
YN(j)=y(j+1); 2 J3 G6 K6 V) K! s
end YN=YN'; ( i+ r! |( h v; q! Y
A=inv(BT*B)*BT*YN; a=A(1); 4 ]" @) c5 [% z/ F, ^) d h. Q
u=A(2);
) k4 p5 |1 e# G0 ?8 Z: W% w t=u/a; 0 `: k9 y# p; F2 Q9 h" t" Q
t_test=input('输入需要预测的个数'); i=1:t_test+n; 9 D" f& a I4 {& D7 _4 R4 C
yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1);
- p( |/ }( C- c/ t" I for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1); % ~# U- q) R1 j Q, p
end x=1:n; , r& J& g7 L/ a
xs=2:n+t_test; yn=ys(2:n+t_test); . ?2 [3 S, ^1 O, O# L+ F: [
plot(x,y,'^r',xs,yn,'*-b'); det=0; ' D8 G5 b- I) G: M% R
for i=2:n
! }0 V4 l8 D! S7 S& _5 s det=det+abs(yn(i)-y(i)); X+ z0 @+ }* g# [! ?
end det=det/(n-1);
# [0 a+ j. U( y5 E disp(['百分绝对误差为:',num2str(det),'%']);
& n( r, w- T8 s6 L* | disp(['预测值为:',num2str(ys(n+1:n+t_test))]); , m3 S6 B5 h0 ~( N" @
4 B* ]* s; R U: J$ H% C/ E5 [
: x0 F7 {4 E# d" V7 q" i/ {5 r; N/ n* K3 u/ {0 ~$ ?
* q; q& z" p2 `" T9 H# A1 D P$ Q
|