|
8 [0 S3 G) s7 v% w0 o
2021五一杯数学建模B题消防救援问题 + K! ?& S7 u& E+ E. r- X
消防救援问题
# @! Q" s4 U b2 B 随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。
# k% J9 P( e) O& y) C 某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。
1 ^7 r+ u' }6 |# C+ A% _8 H( O 请依据该地的消防出警数据,建立数学模型,完成以下问题:
# s. N8 T% x1 n5 \8 X 问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。
3 \1 w' e+ h) B1 x$ f% U 问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。 : g4 I6 w/ {+ F2 ~
问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。
' y* ?, f9 ^' l! w& }! f W) i 问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。 " M4 {( }- a) @+ a0 @* |. S+ Y5 B
问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。
) M+ i8 {. {$ F' a4 `% l 问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域? " j+ F$ O$ B6 M! }9 X0 i
/ M) w, `; P: C: Y& l 问题分析: ; R+ Q; u6 F4 \' C9 h h* |/ ]4 ?
针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、
/ }+ ~/ n K+ M7 ]) m% k8 W 2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个
0 d# W$ F. `0 A0 \$ U 月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。 t# i5 r# P' N( r* Z
针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。
6 p- l: T$ Y; J- i 针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。 ) _! e2 }$ k+ Z9 ^4 d7 e
针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。 1 N- j8 ^) ^. `
针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。
( T3 z! s, D3 N5 ` 针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。
_$ Q6 X% W/ v7 p * F u5 A1 } l0 i2 T1 b( m, w& f$ t5 M
load 'xx.mat' n=length(y); yy=ones(n,1); 2 \/ ` C; A! s" K
yy(1)=y(1); 6 g3 i d* |& y. ^
for i=2:n
) F" o: ^% W% ]+ x yy(i)=yy(i-1)+y(i) # H: A% P% B/ j; W( n' O4 O" l( O
end
# s: Z4 J" D+ j# d$ g5 W' }. q B=ones(n-1,2);
- `6 ]) u6 r. y/ S3 S! W for i=1 n-1)
% U* b" p$ l) v N v B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1; " k/ b4 f% M5 s9 i/ K( ?3 O, S0 S
end BT=B'; for j=1 n-1)
) M8 R! A) P# P( S4 M YN(j)=y(j+1); # q! g- q6 \3 i' J/ ?: G% j
end YN=YN';
5 I- \1 P! l4 z7 E9 M M0 C A=inv(BT*B)*BT*YN; a=A(1);
: g+ T& }$ B2 S u=A(2);
3 s( a: u# v4 b+ f t=u/a;
4 z3 n. j: ?" J, Y# i0 y2 J3 Y t_test=input('输入需要预测的个数'); i=1:t_test+n; 3 @/ ?) Y/ V Z1 P6 u* P
yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1);
% K$ }& t9 K2 O" i0 f* p. j for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1);
4 J6 H1 m' ]8 i: D+ `) v% @$ Z0 I end x=1:n;
( N: ~$ z. T( N9 O6 S xs=2:n+t_test; yn=ys(2:n+t_test);
) ?' ?5 g& [9 N plot(x,y,'^r',xs,yn,'*-b'); det=0; / O7 z u& S; B& P% y V' r/ z, F
for i=2:n 5 e2 n! L4 p- {* h* B, K5 P
det=det+abs(yn(i)-y(i));
- K3 W5 [: m- ]1 _5 B& }: b end det=det/(n-1); 8 @; d6 h/ Q% V5 V) n
disp(['百分绝对误差为:',num2str(det),'%']);
1 _! j/ l9 ?0 r, u9 {4 H, ^ disp(['预测值为:',num2str(ys(n+1:n+t_test))]); / ~/ S: c( I; x! e
( c7 R$ v$ E5 M0 \- W, n7 F4 D
+ e1 D0 O; k( } h3 J9 ]
% D' f1 C# s/ w/ `: h. o
- b d" {( T8 t1 P+ |2 X3 z3 g |