|
& y; w5 c ?+ I 2021五一杯数学建模B题消防救援问题
3 o7 G9 R* Q$ @% O# B: E 消防救援问题 9 Q. H1 T) [1 G, j
随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。
2 `9 h/ r/ U1 I) P( j F 某地有15个区域,分别用A、B、C…表示,各区域位置关系及距离如图1所示,各区域的人口及面积见附件1,该地消防救援队出警数据见附件2。
+ _ Z% ^" w1 P5 Q9 V 请依据该地的消防出警数据,建立数学模型,完成以下问题: 0 r8 }" J, G0 j! w. w4 M% o" y3 a
问题1:将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。 ! ~3 _6 E j# v+ {
问题2:以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型;以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测,完成表1。
$ p2 O4 _1 o! F" Z 问题3:依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。
6 ~" y! ]1 `; w* a! s, N) S" ~9 { 问题4:根据图1,请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。 % r. ?# `& v# b
问题5:依据附件2,请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。
# q2 F9 `1 D5 Z1 U1 ^. ` 问题6:目前该地有两个消防站,分别位于区域J和区域N,请依据附件1和附件2,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域? 0 t+ V% {2 ^% A H- H2 [. a
- M" }, C' a1 \# h 问题分析: ) g, U/ Y& X- `, E3 Z$ f0 ?. y
针对问题 1,关于确定人数值班问题,首先筛选并统计出 2020 年、2019 年、
5 n/ j+ O X7 o s' ?- w! { 2018 年、2017 年、2016 年的 2 月、5 月、8 月、11 月的第一天的三个时间段的出警次数,通过灰色预测方法得到每年的这 2 月、5 月、8 月、11 月这四个月第一天的三个时间段出警次数的预测数据。在对三个时间段各分配 5 人的基础上,根据每个
8 {4 O+ E; T3 C4 u8 L3 B2 P- | 月第一天的三个时间段对应的权重比例对剩余 15 人进行合理分配,计算出人员分配的人数。 5 r( B% _1 _: {# R
针对问题 2,我们引入 ARIMA 预测模型,利用差分法对数据进行平稳性处理, 使得模型更加稳定和准确,对模型的检验我们采用平稳性 R 方与显著性检验。
: \$ o4 w; x# E3 P8 I 针对问题 3,我们选用了插值拟合和 ARIMA 两种模型,以此来建立各类事件发生次数与月份的关系。
3 Y& F# A/ m' B: a! R9 |% u$ z& s6 X 针对问题 4,我们首先绘制散点图判断出各类事件在空间上具有相关性,为了直观表示各指标在不同区域之间的相关性,采用皮尔逊系数进行直观展示。
$ H0 @+ a0 ~$ ~; q4 @2 D 针对问题 5,我们首先绘制散点图判断出人口密度与事件具有线性关系,由此可以采用灰色关联模型进行分析。 % S b; G3 y$ ?$ R
针对问题 6,选择消防站需要考虑的因素最多的就是平均出警距离,所以在本问题中我们选择出警距离作为建立消防站的唯一评判因素。利用 Dijkstra 算法计算各区域之间的最短距离,计算在区域 J 和区域 N 以外的 13 个区域新增一个消防站后的平均出警距离,取新增后平均出警距离最小的区域作为建消防站的区域。 9 @ ^& _- T- c
& `) `+ \9 K7 m. a7 W9 G load 'xx.mat' n=length(y); yy=ones(n,1);
1 X& r& ~ T( k- g5 k9 t yy(1)=y(1);
9 W# v0 H: N, R# O& W: K9 F/ Q% P for i=2:n
3 Z- O7 f, i8 {5 h! T6 R9 |( t0 L( u% X yy(i)=yy(i-1)+y(i)
6 r7 @& I( ?4 U* b end : ?. a. i4 C4 c* e8 U
B=ones(n-1,2); 1 V; \/ O( {) d
for i=1 n-1) % B1 w$ i$ l- m1 z
B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1;
2 H5 i4 A/ i4 k& F$ ]2 C' M _ end BT=B'; for j=1 n-1)
1 t8 a/ B1 d5 e YN(j)=y(j+1);
9 S5 ^' n" p5 t end YN=YN';
" i# b8 y9 E2 r7 Z; ^% l- f A=inv(BT*B)*BT*YN; a=A(1);
/ M6 u) y$ E" u0 q$ a& B, I u=A(2); . D0 |+ x/ l+ M9 U/ @. Y
t=u/a; . o& r! I8 L; l6 s& x5 i
t_test=input('输入需要预测的个数'); i=1:t_test+n;
* Q- n5 W5 }: _, T/ r4 A, v yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1); 3 m0 i$ Q/ G9 v! V2 W
for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1); , j% x: [9 j3 K
end x=1:n; ' s& y" P5 w1 V% H1 s4 R
xs=2:n+t_test; yn=ys(2:n+t_test);
3 v4 m) k2 |( T8 B plot(x,y,'^r',xs,yn,'*-b'); det=0;
: q0 S, Z1 D% |$ R5 |/ Y3 f) I for i=2:n k$ s9 G! p* D! ]: L
det=det+abs(yn(i)-y(i)); : S# T/ B- a! q, T
end det=det/(n-1);
3 h" `$ `, w" ^3 a8 ` disp(['百分绝对误差为:',num2str(det),'%']);
/ w/ m5 k+ v7 S B$ w" A" L3 H disp(['预测值为:',num2str(ys(n+1:n+t_test))]); 0 w5 @0 O) q# m" o+ _+ _! O' L
' \1 N) L& d( B& ~. c6 q
3 n0 P1 K c1 b* q. K4 G
! o& X9 A) E- p( c
4 ^3 m: a2 ^+ `- E1 ?% z& \% {! \ |