|
* J( d/ o' B+ G9 j, u
2021五一杯数学建模B题消防救援问题
3 [4 o8 L4 H/ d( x 消防救援问题
4 e0 g# c+ I+ D- l3 `9 f% F 随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。
6 r% q$ V; \. L( q! ~ 某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。 " O+ ~. b" c: _7 d: \! E' @
请依据该地的消防出警数据,建立数学模型,完成以下问题:
# v3 a9 c. |# {/ \) F 问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。 8 T' z# w+ y* n5 Y9 g
问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。 * q% B6 q) F7 g/ X) a7 R
问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。
I- i! m) ~, m+ O# l3 x( A 问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。
5 C5 X( b4 M+ N& Y. D1 u 问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。
5 Y/ ` ]: B, {4 U X 问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域? ( _& I7 n7 J2 ?9 p8 g+ j6 [
4 ~; L! p6 }2 |% }1 V2 Y# H5 q
问题分析:
7 j/ d M6 L% l9 H' ~% b; o 针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、
7 {" _! ?3 A* `+ K6 I 2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个 0 P+ t3 q4 y- _) q" b1 ~% R0 [5 s4 _
月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。
6 G6 x D( o, |( G 针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。
1 B6 M& j6 s0 F2 F3 `& | V 针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。 ; n9 @' c( a5 l# c. ?* O
针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。 + S4 b. E8 u2 P4 ~6 t1 C6 a
针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。
# G/ i, s6 ^' y 针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。 ! k# X# q9 t2 ?4 }; u0 u
/ S8 |9 a( p* {& v: i8 @$ g
load 'xx.mat' n=length(y); yy=ones(n,1);
% N( M+ p& N6 K& Z- N5 [5 g yy(1)=y(1);
; c% ` A( [ M9 O8 S for i=2:n - _) X- `& g. K# i! y
yy(i)=yy(i-1)+y(i) 3 d, k7 x' N) v" ]: b% u
end
+ W2 A! Y: r* R B=ones(n-1,2); 8 K1 N! G' U4 U0 I
for i=1 n-1)
+ G4 i$ g! g6 s3 o1 ` B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1;
u' h# z8 h0 R7 D; K- _* ~& w end BT=B'; for j=1 n-1) 5 \( m' P8 C k2 T- O* T+ G+ A
YN(j)=y(j+1); . X( Q- y/ j; a; C
end YN=YN'; 3 W7 ?' F7 O# p
A=inv(BT*B)*BT*YN; a=A(1);
2 R& H5 W0 }0 H+ O u=A(2); . d7 _# M) ]/ s3 A# s
t=u/a; 7 T5 q y" H* \
t_test=input('输入需要预测的个数'); i=1:t_test+n;
! X! l; W7 ~4 r yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1); 8 t6 h, Y% A: f! c
for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1);
4 d% k' ?5 m3 W end x=1:n; ( G, Y5 f$ x4 ?. n3 \ x4 u. |
xs=2:n+t_test; yn=ys(2:n+t_test);
) W" R# q* k* a- U- Q plot(x,y,'^r',xs,yn,'*-b'); det=0;
$ [% ]0 c6 D' r0 t8 L for i=2:n
' A- U2 Z+ l: v. \* n9 y det=det+abs(yn(i)-y(i)); - |- `. F2 G: G8 n0 y2 `6 D
end det=det/(n-1); ( Y9 F: b% C8 Y* B+ s! \+ J$ p, x
disp(['百分绝对误差为:',num2str(det),'%']); 8 a' k# x+ Y9 u9 R" B, I" R
disp(['预测值为:',num2str(ys(n+1:n+t_test))]); % m5 y/ P( B0 r6 r, Z0 M) |3 ]
! t6 I/ V( `$ h
V( l3 _ A6 A4 @% X. j
3 K1 s! m6 k3 |# D( j& q: G! |+ w! _8 d
|