|
4 T* V: Q; G J- q 2021五一杯数学建模B题消防救援问题 " _! w' l) { g! s! O
消防救援问题
: U( {+ C( ?8 ^# ?9 D 随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。
: x2 F6 @& k8 ~9 \9 [2 w 某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。
! u6 @1 U' t' w1 [/ b/ ~ 请依据该地的消防出警数据,建立数学模型,完成以下问题: 2 b$ y g3 a; q. w% ?/ A9 G; _6 v
问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。
" [& G/ }6 p" e 问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。
( x, z7 X3 V' n4 g 问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。
$ X3 ]2 O- s- X+ A' H 问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。
' v- [+ K, g$ Q5 {! j6 f0 M 问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。 9 `) }/ ^0 l& g
问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域? " Z9 z; ?4 x! U# W
( g/ @8 d# ^0 v" D* j3 o2 `& A 问题分析: " M6 X3 a' d9 n+ r+ z
针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、 # d& e: s/ C0 q( s4 D# n
2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个
1 `8 v2 ?9 w+ A+ J/ z8 G7 y4 A2 g* @3 r 月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。 1 G' \+ n# k2 [9 Z) W
针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。
2 Y' M% @- M9 M% @9 @ 针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。
; B5 F8 k0 T# C# c& Y 针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。
6 |4 Z3 r) F/ y, L$ P 针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。 . X! b2 M3 A5 Z' F8 X3 B5 b) j
针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。 . a. Y! m! t( N- a( @9 C2 }
2 v$ g1 O3 H, v# j6 O0 F% I& s/ P+ j
load 'xx.mat' n=length(y); yy=ones(n,1);
7 J- e7 z7 z- P, t \6 S- U yy(1)=y(1); 8 r- }6 j' N, I, T
for i=2:n / L9 {7 @5 f3 w) j, [. I
yy(i)=yy(i-1)+y(i) , r) ^6 C* u3 S( Z/ z) F
end
$ T8 J* w6 g0 V, {+ D B=ones(n-1,2);
$ \6 m1 Q9 N3 [; N for i=1 n-1)
6 ^4 A% o% r1 j B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1; ( F/ R+ {$ F( A) k: f8 c
end BT=B'; for j=1 n-1) * A2 K% y' P6 {
YN(j)=y(j+1);
! w0 T) Z1 L0 q, D! l( J$ P, u. H end YN=YN'; 5 M7 k0 ?( W+ e' l3 |' R% Z+ }
A=inv(BT*B)*BT*YN; a=A(1); 7 ]8 l- l0 Z8 |( Y% n9 `1 j2 q
u=A(2);
; E0 q1 R; G/ t# P- }2 T) @* g t=u/a;
# m8 ] k1 f* `* g2 _ t_test=input('输入需要预测的个数'); i=1:t_test+n;
9 {' x; r# p0 s: d% g yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1);
- b/ x: a' }) [9 y6 m' l3 B2 q' O for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1);
2 ~2 D9 f( l/ G/ Q2 e5 L1 h4 \ end x=1:n; 9 i! j/ D3 }% z0 G2 i* T3 B
xs=2:n+t_test; yn=ys(2:n+t_test);
4 [* K9 M( w" x plot(x,y,'^r',xs,yn,'*-b'); det=0;
$ Z6 V. I7 F) n. v9 O9 C for i=2:n " v8 J7 |. R2 g0 b: I" W$ ~
det=det+abs(yn(i)-y(i)); % E4 W$ _ Z' O. B8 ~/ e$ w
end det=det/(n-1);
9 X* q+ k" J h( q disp(['百分绝对误差为:',num2str(det),'%']); ! R1 `5 l/ T) f% \# G7 k8 ^
disp(['预测值为:',num2str(ys(n+1:n+t_test))]); : d" i$ g* T0 }
! F, e! f' ]# r6 M% t; p. ]- z, Y& k; q, m) C3 q6 e: z3 ^4 q
' t" s0 `" J) t# o0 \' |% v! |6 t& z |& E! w" ]
|