|
, Y6 S7 Q# Q( |' Z
2021五一杯数学建模B题消防救援问题 - b. y- U8 T' R% n
消防救援问题
+ \2 @( l( F, j E4 Z: T 随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。 & I/ s% ^- d9 n: n7 c
某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。 + M" l+ R$ k! R. ?) G) C" |
请依据该地的消防出警数据,建立数学模型,完成以下问题: : G2 Y' }% j% r% O
问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。 4 Q; Y7 c z L" t' {" y$ b* z
问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。
4 ~$ }) G2 s: }) d) P$ h- F 问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。
7 I. n& j4 c$ F 问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。 % u8 Q0 r8 d. y" d' m
问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。 9 l2 {" u! ~8 g- M
问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域? ' r9 x5 w2 E4 q$ J8 k' M9 }
4 Q+ c7 K1 ~# [0 Y0 ]* d) X! ?2 G
问题分析: 0 e% q2 @7 M$ o% c
针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、
$ c; O9 }' a5 D+ J, f 2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个
; I0 q3 s) S! L. G- ] 月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。 ( M6 V5 d0 v9 |* ?0 H
针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。
/ q1 ~& G/ C% V+ B; C 针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。 & S# q6 V8 T( l' P2 h4 p
针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。
# [6 `! _9 j1 r+ f" M 针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。
7 a- [( W: [# O' i6 @ 针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。
7 {; h8 z. s9 P9 g) _
/ Z: [+ T5 [: x load 'xx.mat' n=length(y); yy=ones(n,1);
7 c: Z% r6 i6 H8 `- a yy(1)=y(1);
% y/ U8 T: I. E7 S% g$ X for i=2:n 6 V9 j8 u W+ C }/ u; @6 t
yy(i)=yy(i-1)+y(i) ' O- y. n, s# `! m1 {/ C U
end ; {9 P3 }: J* H0 F5 ]* O
B=ones(n-1,2); 9 a0 l9 H' R5 |2 q; g3 _; e1 H
for i=1 n-1) 6 o+ T$ \8 o4 a g+ `6 x. z. k
B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1; : Y: ]8 A" i1 G* K* S
end BT=B'; for j=1 n-1)
1 h" | N" r; Y' b$ l8 a: A& C YN(j)=y(j+1); ! E$ \* q3 @/ v4 b3 g- T
end YN=YN'; 5 z2 x& |+ G5 N1 m: p
A=inv(BT*B)*BT*YN; a=A(1); # C2 {8 C/ o: m9 D
u=A(2); 5 r1 c2 ` L2 h1 T
t=u/a; & {# C Z" ~2 M, Q5 m
t_test=input('输入需要预测的个数'); i=1:t_test+n;
* T% |% ?/ G" b; j5 o# ~ yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1); 3 K# M3 q) d/ v% F
for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1); , h' H. y) x" j! {# t6 N7 f* q a: H
end x=1:n;
2 O8 q- R( z# s( g7 V8 K# U xs=2:n+t_test; yn=ys(2:n+t_test);
6 u9 R/ f, G) u# m- N! B plot(x,y,'^r',xs,yn,'*-b'); det=0;
3 { {+ W8 u$ L9 Y q5 a0 d for i=2:n / w% W) ^( E; K
det=det+abs(yn(i)-y(i));
0 C% D% b4 z; f+ W end det=det/(n-1); ; F A& {1 d# K k5 h
disp(['百分绝对误差为:',num2str(det),'%']);
" h6 e. H4 V4 T1 S/ ^ disp(['预测值为:',num2str(ys(n+1:n+t_test))]);
7 ? O7 [; K# U" e+ f m2 C
: ?( l+ F3 ?: W! F, r1 R- x ~, G2 E* _
2 J3 I- u. D1 v, U$ z8 P7 ^1 V4 n3 n3 j$ j9 C. ^/ u" d
|