|
: L# H$ q+ q1 S/ ^% w* U2 U6 H 2021五一杯数学建模B题消防救援问题 ! V$ A0 Q& E1 |
消防救援问题
/ r ^& S0 C1 P, }9 X( p 随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。
/ r- X/ j& J3 a+ e0 C5 Y 某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。
. N: }' E& N3 W% u7 y 请依据该地的消防出警数据,建立数学模型,完成以下问题: " ?# Z7 t7 O6 f( l. b
问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。 : h/ G4 ]7 k. R! q: \, C" O
问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。
! Z7 u7 ~6 F1 ?4 v4 S | 问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。
( z8 W( ~; _# R' `7 Y) t" X, b 问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。
% c0 h$ _' B+ y) E 问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。 - y4 ?3 y0 v( N+ z% H2 u
问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域? 8 M- s2 }1 v! D5 i
: b H* o; Q. G4 j7 C
问题分析:
5 |5 w, K& Q& H$ W) J4 P7 y6 g- _ 针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、
: ^5 W5 F+ W' r/ d, l. Z 2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个
; c' p' M+ `4 K4 e, c 月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。 : Y: ^) ~% ~, [! M9 l$ ?, k2 Q7 H
针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。 " W8 f l& |3 m) g$ P9 _2 y* K
针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。 / Y/ z# k1 g) e9 j
针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。 7 P6 V, \) z8 u- [9 Y& L
针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。 7 I% r5 F/ y& Y/ s! e( z
针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。 U) j/ H; n! A( D# ^$ W: _+ F4 B0 x% U
3 L( a% ] @8 Q V) s3 | load 'xx.mat' n=length(y); yy=ones(n,1); - p% I) y/ `6 W5 _! {
yy(1)=y(1); " Y' s# {3 @) B2 i- m
for i=2:n
; X; J/ X( `4 t0 Q2 ^4 a$ b, s yy(i)=yy(i-1)+y(i)
: F. D4 g# a( S/ F7 X/ F/ W, [! f end
) ]$ y/ A* J% [) ? X" [6 } B=ones(n-1,2);
8 m& s5 R. t6 w/ @3 J# ~ for i=1 n-1) 8 _0 W7 D; ?8 `! h0 y8 ?+ m
B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1;
4 h- n* ]2 G3 `3 Q+ m/ P end BT=B'; for j=1 n-1)
. ^" g3 T/ E" X( z1 C7 \* _ YN(j)=y(j+1);
& }8 X7 Y( t) @( y. L end YN=YN'; ! X$ }, d' y+ v" a( X7 V4 g
A=inv(BT*B)*BT*YN; a=A(1); ( B6 \4 X4 P1 q# z
u=A(2); 6 `% v3 }( _6 z. e# [6 W
t=u/a; & i/ p7 o+ @- [# K
t_test=input('输入需要预测的个数'); i=1:t_test+n; : F& G- b# v% b% e" o6 l
yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1);
) d3 F0 d2 r7 i5 f% a8 C for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1); - [* G; y* B% d; e
end x=1:n; : L* h5 t7 s2 F* h( R- i
xs=2:n+t_test; yn=ys(2:n+t_test);
4 W6 q. t5 b+ n+ T A! k; s plot(x,y,'^r',xs,yn,'*-b'); det=0; " Z7 X7 G6 c3 |, p
for i=2:n . ^4 T* G4 Q9 p: C: }' P6 {
det=det+abs(yn(i)-y(i)); + |) i; H! h$ K$ I; ~. f0 W% L
end det=det/(n-1);
/ W/ Q$ \5 u r: H% u$ V disp(['百分绝对误差为:',num2str(det),'%']); + o& f+ A! _" Y: S! v9 w' z
disp(['预测值为:',num2str(ys(n+1:n+t_test))]);
5 ?+ l# L; b d& j
0 F% {9 V3 X" m* R, y/ Q0 \3 p: v
. W- j* M# F( r, N; |
& e+ P* r/ _, M0 Q' e) v9 m
# a9 \4 K( @% d9 g |