|
) v* K$ w: p# N! H# Y2 d5 U
2021五一杯数学建模B题消防救援问题 8 j7 V* r% O% g# h) [
消防救援问题 . \8 b3 l' K) \. K+ A1 p& I
随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。 # P& J$ w+ A) J/ T7 [; J
某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。
8 R5 i# z, k+ a0 o0 T 请依据该地的消防出警数据,建立数学模型,完成以下问题:
% H6 a/ v+ ?. O1 @* `+ G4 |( N) N 问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。
3 {5 B' o- Z6 B3 q. ?$ ?; I 问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。
3 x+ A% F+ \ Z 问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。 ' t; L* w9 ?4 O; x, f" N8 K; v4 k. j* R
问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。
1 S" d% L" d- s: e. q9 m 问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。 - N% M" a1 v/ K9 ^1 T& H
问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域?
# ^7 R2 n8 E6 ^! R" x/ r 1 ~7 L; R# y. Z: S/ W" u3 z0 R: x
问题分析:
% `! A( P7 \- b9 m( r 针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、
& C/ Q- t/ o% z" y, Y) O# I 2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个 }, ?3 n+ l$ p! W$ _: G' J( s$ I
月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。 6 g9 B) T+ ~- C$ J+ b& J
针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。
- c2 i& o/ m$ F) C% s W 针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。 $ B% f0 x9 k! b& B4 b$ ~4 c, K
针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。 ' b* J4 O; u' Y8 _6 B3 d
针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。 L0 F- l1 l9 C. v
针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。 ; C8 s8 N# I, `* I- T8 g+ V
$ r6 I- \; ^4 F7 t+ z load 'xx.mat' n=length(y); yy=ones(n,1); ; [+ G9 L, e0 f0 U$ P) M
yy(1)=y(1); + Z9 F+ G3 U, [/ L
for i=2:n
* B' @ [! T" X) r4 g' [6 _ yy(i)=yy(i-1)+y(i)
; s" ^" Y& c5 G, e+ Q) _ end ( |; |+ b2 \7 t
B=ones(n-1,2); 9 E1 u {! v0 f( S) ]: y1 B
for i=1 n-1) $ q4 r6 u% t4 e% P
B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1;
. j8 u+ [8 [4 A L! S$ k( j7 h end BT=B'; for j=1 n-1)
. \( {1 ^+ c" q- k6 } YN(j)=y(j+1);
5 N! z& p: R# A' h" e3 c8 X. |) } end YN=YN'; 6 e# K2 j4 f& ~! `# O( d4 l" e1 ^
A=inv(BT*B)*BT*YN; a=A(1); ) r, Z) w2 n4 E6 A" {2 u
u=A(2);
3 C: e, `2 @7 d; o1 U& \- m ?! y t=u/a; ( j+ h. c* X8 ^( d
t_test=input('输入需要预测的个数'); i=1:t_test+n; % d% C- d4 |5 V# ?- Q
yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1);
+ T) `& T- r' b3 m for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1);
" M; C& [2 G3 }4 |2 Y end x=1:n; . d" `6 E2 J; e, b4 o
xs=2:n+t_test; yn=ys(2:n+t_test);
: S. y1 o( X( w+ U& H plot(x,y,'^r',xs,yn,'*-b'); det=0; : G, {) o; G2 \$ |$ t
for i=2:n * @0 ^' y+ r% w' _# A; o
det=det+abs(yn(i)-y(i));
3 L, v1 l& q7 n3 d4 q, i& j- E end det=det/(n-1); ; O$ r0 S% H2 r
disp(['百分绝对误差为:',num2str(det),'%']); . j$ X g# ]+ W- |
disp(['预测值为:',num2str(ys(n+1:n+t_test))]);
1 Z9 K( ]) V# T$ D/ F$ z3 s5 k% b
. g) P1 \, I' s! ?# @+ w7 P1 [, e% `/ Z2 D/ T
8 H- S9 V. T- R& _
: r0 J" |1 k& ?4 o! j
|