|
1 h+ P. l6 O+ j/ d$ E" h6 K+ e9 R 2021五一杯数学建模B题消防救援问题 ' j; l, |7 @6 W, C
消防救援问题 : I3 M' [8 j& i B) n a5 A z+ `
随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。
; `8 S, W0 N8 X, Q; Z- @6 s& ? 某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。 ]; j _) v, y, ^% h. _$ Z7 ]; @) U5 f
请依据该地的消防出警数据,建立数学模型,完成以下问题: 1 `1 _& r. z: x+ j4 A* y
问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。 * p, l% y* E) Q, Y) {" b5 o
问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。 1 T5 a$ M `- k# |8 D" j
问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。
- Q6 p1 R- j W% H6 J% c5 i 问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。 . U( f9 g* L6 K g+ `
问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。 2 S3 J# f+ z8 v, i; S
问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域? 9 d2 `! ?4 d2 K7 u9 t3 n. c
* o8 I1 }* E6 |) I- R( A7 | 问题分析: " M( n4 x, G* U- I' W! p
针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、
% r4 U$ S# n. l" [0 x 2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个 $ R) I `6 R$ A8 h$ v
月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。 1 W9 a9 e' i5 G5 u0 a! a
针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。
" j. \& n7 t: A4 q3 Y! ^3 [2 g8 T4 q 针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。
5 M7 u2 _- f, z1 j: \! n1 q 针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。 , @8 S( e; r T r
针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。
& U. m |8 }/ X% q) R7 w( ?' i2 Q 针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。
+ b0 r% C$ t" d0 \ k. s2 L8 w& g( Z0 ]5 c, I
load 'xx.mat' n=length(y); yy=ones(n,1);
3 W. {( o, ^ ^2 B4 b yy(1)=y(1);
2 D6 M. p) B+ W: x# v# X for i=2:n $ F0 r% x$ d, d& ^' g
yy(i)=yy(i-1)+y(i) 8 J4 v! G H4 y! Z# H- Z" I5 ^ ~3 \
end , H- K o$ t3 P+ G
B=ones(n-1,2);
) t& L S. {6 y. D for i=1 n-1) ! T" O2 B6 u+ N! U% Z; i( f$ p
B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1;
: h. g- m f$ y0 S) X$ w end BT=B'; for j=1 n-1)
2 s7 G- ~+ Y6 {& X YN(j)=y(j+1);
5 ~. V" |& k5 L; N end YN=YN'; 7 N' r2 H: f9 }# b p5 X
A=inv(BT*B)*BT*YN; a=A(1); * ?2 o2 C7 A; }9 I% w2 c
u=A(2);
6 l2 g* o+ I& ^& n$ Z t=u/a; ! |) f& \: j8 V$ R- N# `) ^
t_test=input('输入需要预测的个数'); i=1:t_test+n;
+ g, g6 H: \! F& `" U yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1); ! h. J+ V4 A, L, G) e9 ~% m
for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1); . ~5 `+ ?+ V8 H
end x=1:n; + L+ B* {7 p9 d
xs=2:n+t_test; yn=ys(2:n+t_test); % ?% W9 V5 }2 m6 {! x4 x
plot(x,y,'^r',xs,yn,'*-b'); det=0;
" V8 I" R0 q0 t- m" b for i=2:n 7 _3 b) n$ t1 D% S
det=det+abs(yn(i)-y(i)); ' l) s( y i8 f. ]
end det=det/(n-1); * Y1 }2 O! Y$ u, v1 _ a! p
disp(['百分绝对误差为:',num2str(det),'%']); # x& S1 H. O/ A* `
disp(['预测值为:',num2str(ys(n+1:n+t_test))]);
7 ?9 h: P6 v: z$ c# H0 w- p3 N* P) x S6 V; a
& q4 Z: i' P* |* L- p8 Y. N9 b }9 Q* j
" c3 L2 h2 L0 J6 e |