|
5 a; `: _$ m+ }6 x* F 2021五一杯数学建模B题消防救援问题 $ N% m" h) _- X& I
消防救援问题 ; ]3 c% X9 C9 F! W, d
随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。 / q% }: w5 K J4 P, a
某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。 2 J5 d6 N6 a: l& o" ]
请依据该地的消防出警数据,建立数学模型,完成以下问题: * E4 H2 u2 L6 w3 _. k
问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。
- b5 K- m4 |0 l, G' t9 l 问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。 0 d0 Z2 l7 T) [' H
问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。 1 u4 e$ m! w8 A* }( d) f
问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。 # e3 O% A0 I# t- Z
问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。 4 O9 \3 f0 _9 S% B! f
问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域? ; ~0 ]: A8 c% K2 E! R4 U8 t' w. Q, y
- D. a. k8 r+ E" G- i 问题分析:
9 F( d& @* p2 c1 {7 O' l2 Z 针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、
: t+ j* Y) }9 C3 N 2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个
; f8 z/ y" n8 d/ s) U0 ^ 月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。 9 W, B9 k% |* f
针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。
2 P0 n, Y1 v. c6 Y! _ 针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。 # r% W% B5 Y, o" Y
针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。
! Z6 Z3 ]+ n/ O; z* l$ N8 o) G# W( U 针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。
, C4 B3 y; K; J 针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。 $ `& E' z8 v. V/ k
( F1 B' s) ^4 q/ ]( J# }4 H0 ^& I
load 'xx.mat' n=length(y); yy=ones(n,1); 7 F7 ]' E$ G7 F& l0 r! Q% e
yy(1)=y(1); , G ?" ^7 N. v: i2 Z; x* N
for i=2:n # C% \% Q. q4 G, H) X0 |: f' B
yy(i)=yy(i-1)+y(i)
+ Y5 j6 s, x# E6 x$ E end 9 K P: y, E& t2 C+ ^- ?
B=ones(n-1,2);
, ]. h a" Y. I4 B: l" u" }2 E for i=1 n-1)
) D; {5 |0 x: a, P& i B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1; ( @; N5 R3 ]3 O4 l* E
end BT=B'; for j=1 n-1)
! G( D: F4 k: `# q) [! ]1 ` YN(j)=y(j+1); ; E+ s" w* g" d5 U) e
end YN=YN'; # o# s0 ^; h+ n; u+ G& Q6 d, _
A=inv(BT*B)*BT*YN; a=A(1);
* e6 t [8 F* P u=A(2); $ o' W5 t1 r, ~3 h* x. z
t=u/a; ( d, s: J8 L: V" Q; i C. s9 X+ A
t_test=input('输入需要预测的个数'); i=1:t_test+n; : A1 R' o6 ]7 O8 n
yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1);
( X9 |! F( [- Y for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1); 7 _+ B5 }% {; S0 o
end x=1:n;
! T, A# S1 x* B- ^% j xs=2:n+t_test; yn=ys(2:n+t_test); 4 a H" t1 ^ R7 P: K! ^6 X
plot(x,y,'^r',xs,yn,'*-b'); det=0;
. z# n$ ~2 S# l8 R7 K1 { for i=2:n
T- j0 p4 X( p: M: d/ n0 P [; { det=det+abs(yn(i)-y(i)); ' @9 T' |5 K0 R7 Y& f4 L7 E
end det=det/(n-1);
* e' n1 V$ |% I0 f disp(['百分绝对误差为:',num2str(det),'%']); , ]% y$ J! V; ~7 J) K' e
disp(['预测值为:',num2str(ys(n+1:n+t_test))]); ) z6 {: E. ~; E2 x, R8 y1 \
+ X8 Z+ ?8 O: W6 Z$ [$ P3 E
( \. n( \6 H5 q7 G% T( b
7 j4 ?5 P1 p2 b( W4 \% q+ o; K6 ~! F C! l5 z4 L9 j: [ _/ ]
|