|
$ j7 l6 @& u6 V 2021五一杯数学建模B题消防救援问题
, h/ \% A1 r$ I5 n- D 消防救援问题 ' z' n( w0 A( m0 J$ Y
随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。
& |3 h; e( y8 D# Y 某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。
/ T; t( R* T+ t& e+ c) o 请依据该地的消防出警数据,建立数学模型,完成以下问题: $ w6 z& J0 E' t c! F4 D* L
问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。 - j A& U+ s$ @
问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。 ! Q! O3 P5 t- l& U! _/ x+ E; r
问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。 % d9 ]# k# P5 u" y: V
问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。
; T( | D, {$ A% W; x3 [ F 问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。
. Y6 A. e0 f5 j: u' E 问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域?
9 ?+ I0 e: K/ z/ L9 Y% P / R0 q7 E! I& _8 P3 _
问题分析: 5 ?- C. _4 `2 m/ Q/ w3 C
针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、 ; x1 O G# q$ @1 v
2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个
3 b& U: q% ]' P; ]% C( s0 X; ~ 月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。 + b* i& l# r0 D9 L) K1 I' r3 w
针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。
$ ~5 i/ M& `9 v1 c* W 针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。
) ^/ k: w3 _) f/ }9 C( G4 ^+ s 针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。 % ^9 w% C B& L1 j, U' ^' g; V
针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。 4 T- b4 z ~7 E, r; j' \
针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。
$ S/ y% Y5 r& q `. V + Y5 b+ O7 S3 B
load 'xx.mat' n=length(y); yy=ones(n,1);
6 y0 n6 K' K$ X" ?5 } yy(1)=y(1);
8 E; R6 }4 N# w3 G7 J) [1 i for i=2:n 8 q0 T; U9 V3 W' f$ A
yy(i)=yy(i-1)+y(i)
, o4 S. p4 y4 |2 q) \1 n Q2 Q3 U end
! \$ g9 I) Z% G" n% y9 y; F/ V1 ` B=ones(n-1,2); 6 K/ c0 Q1 y( k7 O7 J2 z4 I6 Z* r
for i=1 n-1) 5 a0 O/ ^2 m. F: N. q" {5 u" u8 A9 Q! |
B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1; / l8 D( a2 c" a% F# H
end BT=B'; for j=1 n-1)
0 w) t: R! ]1 K' C5 j0 D2 ~- P YN(j)=y(j+1);
" w! w/ J$ D2 i! Q; x: d5 I# x" \- e end YN=YN'; 8 h% U9 m# }* D" j4 r5 f
A=inv(BT*B)*BT*YN; a=A(1);
' j) Z/ i5 v9 P u=A(2);
7 ?$ P1 g9 F5 I% x& B' V, K, p t=u/a; % M& y! z; s S$ c$ r3 N
t_test=input('输入需要预测的个数'); i=1:t_test+n;
9 W& D' X% x. T d4 B. ~, [ yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1);
+ K7 t6 T0 d% y for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1); % S& Q+ e3 e( R* E. H1 c$ o
end x=1:n;
7 q( {8 x3 U7 a6 _/ X xs=2:n+t_test; yn=ys(2:n+t_test);
1 A/ m2 ^. }/ ?; j5 D plot(x,y,'^r',xs,yn,'*-b'); det=0;
9 f5 n: M7 _' Y6 F5 l( J for i=2:n / Z) S% Z# t/ \* [- a8 F. [
det=det+abs(yn(i)-y(i)); / f: H6 A* o r; q+ S
end det=det/(n-1); , ?/ X! U9 {9 S6 _
disp(['百分绝对误差为:',num2str(det),'%']);
+ g8 [/ O, B0 S" l0 H disp(['预测值为:',num2str(ys(n+1:n+t_test))]);
. `+ T: o6 Z8 n% v9 h: _
& }. k! F8 t5 I$ K% q$ B
0 o* D6 o/ w. U8 `1 K# m
3 r+ z! X, S1 C% ]
6 w9 J$ j( s" s) L6 N. { |