|
5 \% n8 a% J ?+ J* t 2021五一杯数学建模B题消防救援问题
4 p2 p4 k# R8 Y 消防救援问题 5 [( w6 ?" a Z& c# C/ X. Z. X! i& G
随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。
& D9 M9 n$ u, F* e) A# l; d d 某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。 2 q$ F2 p$ N: z
请依据该地的消防出警数据,建立数学模型,完成以下问题: + w9 u( f' r1 `9 I5 j; _; c
问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。
; V, I# D! d% ~/ b& t0 I3 ]/ s 问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。
$ n- ]+ T' f8 n- g5 t 问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。
& ?" A% K% S* u 问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。 2 Y- p8 n, v8 b) l1 C0 @1 c5 N
问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。 8 A2 M; h* \% t" y- c1 u
问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域?
3 t# e" y$ q' x! s1 D & R+ v# j, ^2 k3 D) _ e* f
问题分析: . M' @' G3 E: w7 _0 _
针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、
( p; x: Q/ l3 U9 P# a# B& u 2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个 ! H7 D! ]! x( X6 y7 m$ Q9 y9 ^, K1 v
月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。
7 n* {3 ~2 h+ [ S 针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。 # F9 R2 `7 T E) i9 X) l9 N- v
针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。
4 y3 w( L8 Z$ B6 R 针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。
5 g" t3 j, H* {- l, U, p 针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。
8 ?3 a. K) m( I: w 针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。
* }9 \, e. u8 g {: S
7 l' c0 F {6 b1 G load 'xx.mat' n=length(y); yy=ones(n,1); 3 c& y# g6 Y; U- M( H
yy(1)=y(1);
& o7 l3 _+ r) u4 [5 G/ F for i=2:n - }2 h4 p1 i/ g8 R, E' x
yy(i)=yy(i-1)+y(i) 4 B0 U3 z R, Q4 R& z! D
end
6 s; t+ I% {% m+ o5 P+ B/ { B=ones(n-1,2);
1 v4 J- R2 O1 ]9 A; c. n- ? for i=1 n-1) / b; A, C& s9 E
B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1; $ r) |; H9 y4 g( e$ r
end BT=B'; for j=1 n-1)
6 ~$ O% n3 D) {. a YN(j)=y(j+1); 9 B8 R, T( [. O
end YN=YN';
8 |# [- ]% ~; k- @ A=inv(BT*B)*BT*YN; a=A(1);
% b E" }/ I; `3 N5 A8 b# X u=A(2); . Y, B' N6 C( D
t=u/a; ! n/ _+ ~! l7 r; G
t_test=input('输入需要预测的个数'); i=1:t_test+n; & V6 I v& Q* G7 x4 v/ Z# |
yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1);
( H3 u9 G# F# z7 N for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1);
5 K- @0 m' B7 a) U end x=1:n; ' K8 T$ G) M3 Z: d
xs=2:n+t_test; yn=ys(2:n+t_test); , Z7 w8 b9 X; ?& I; a+ {, R
plot(x,y,'^r',xs,yn,'*-b'); det=0;
8 W$ N, m9 `# c' ?7 {4 B& Q: m for i=2:n 8 f+ R" g/ D0 d, ~, o! O
det=det+abs(yn(i)-y(i));
. v3 _. w& N) o/ O* o- z, i end det=det/(n-1); o, w+ y* W0 [$ v
disp(['百分绝对误差为:',num2str(det),'%']); 8 f" [0 f& I7 Y% k; Z
disp(['预测值为:',num2str(ys(n+1:n+t_test))]);
$ ?2 I( k& X- M3 N' y" Z1 G. _0 n+ N! B, A- Q
" t! s3 d4 Y. y5 u5 n8 w% O% C
0 J$ ]. B$ [& `/ T5 \
9 k7 j5 K# c) D& ?9 W
|