APP下载

基于Spark算法的船舶尾气排放实时计算方法研究*

2019-04-30文元桥周春辉张哲源

关键词:船尾插值尾气

张 帆 黄 茜 文元桥 黄 亮 周春辉 张哲源

(武汉理工大学航运学院1) 武汉 430063) (内河航运技术湖北省重点实验室2) 武汉 430063) (国家水运安全工程技术研究中心3) 武汉 430063) (武汉理工大学智能交通系统研究中心4) 武汉 430063)

0 引 言

海上交通的日益繁忙导致船舶尾气排放量迅速上升.我国交通运输部于2015年末设立了珠三角、长三角、环渤海(京津冀)水域船舶大气污染物排放控制区,控制船舶尾气中硫氧化物、氮氧化物和颗粒物的排放[1].为了掌握船舶尾气中各种物质的排放含量,赵海鸥等[2]利用多种有害气体传感器对船舶柴油机尾气排放数据进行实时采集,并通过无线通信技术对将数据传输回地面,但当前针对船舶尾气中硫氧化物、氮氧化物和颗粒物进行检测的传感器发展尚不成熟,且价格高昂,并不适合海港大范围的部署.目前绝大部分船舶都配备了AIS设备[3],且船舶AIS数据蕴含信息量大,包含船舶水上移动通信业务标识码(maritime mobile service identify,MMSI)、航向、对地航速、船位等一系列船舶航行过程中的状态数据和船舶主机功率、始发港、目的港、装载货物信息等一系列船舶及货物属性数据.近年来国内外学者[4-11]多利用船舶AIS数据结合船舶尾气排放计算模型对各自研究水域的船舶尾气排放清单进行离线计算.但传统的船舶尾气排放计算过程复杂,且没有综合考虑计算所需要的环境数据、船舶属性等基础数据,计算结果不能客观反映船舶尾气排放值.同时想通过传统的尾气排放计算模型满足实时的在线监测,需要监测范围所有船舶的AIS数据,这样的计算规模是传统单机计算程序无法承受的.

为了满足监管部门对管辖水域船舶尾气排放实时监管的需求,本文设计了一种基于Spark计算框架的船舶尾气实时计算方法,该方法可以针对计算数据量的大小对排放计算能力进行实时调控,使监管部门能够实时掌握船舶尾气排放动态.相比于Storm、Flink等其他主流的流式数据计算框架,Spark不仅具备强大的实时计算能力,还具有离线数据批处理和机器学习能力,将更加利于今后随着处理数据量的增大对计算功能的扩展和优化.

1 船舶尾气排放计算模型

单船尾气排放模型可以计算出船舶航行中每个轨迹段所产生的各类尾气排放值,然后将计算出来的尾气排放值映射到网格化处理[12]的区域地图上,最后叠加在一起即完成某区域内所有船舶的尾气排放计算,见图1.

图1 船舶区域排放计算示意图

1.1 单船尾气排放计算

基于AIS的单船船舶废气排放量计算式为[13]

Pa×LFa×Ta×EFi,a+Pb×LFb×Tb×EFi,b

(1)

式中:E为船舶尾气排放量.g;P为船舶动力设备功率,kW;i为第i种船舶尾气排放物;j为船舶动力设备类型;下标m为主机、a为辅机、b为锅炉;LF为船舶负荷因子;T为船舶在设备j工况下的运行时间,h;EFi,j为第i种船舶尾气物在第j种动力设备工况下的排放因子,g/(kW·h).

式(1)利用船舶AIS动态轨迹可以推算船舶各个动力设备的运行时间,并基于船舶MMSI标识从船级社数据、劳式数据库等海事基础数据中关联查询船舶动力设备额定功率P、设计航速等关键参数,进而能够估算船舶动力设备的负荷情况,其中负荷因子采用式(2)进行计算,完成上述参数计算后从而实现单船尾气排放量估算.

LF=(Vs/Vmax)3

(2)

式中:Vs为船舶航行时的实际速度,kn,数据来源于船舶AIS信息,对于船舶航行的实际速度,由于AIS信息在时间尺度上不均匀,因此,在进行计算时需对不均匀的速度信息进行插值处理;Vmax为船舶航行时的最大速度,kn,来源于劳氏海事数据库等海事数据库.

1.2 区域船舶尾气排放计算

基于单船尾气排放计算模型,可实现区域性船舶尾气排放量的计算[14],见图2.

图2 区域船舶排放计算流程图

2 基于Spark的船舶尾气排放计算方法

2.1 共享Redis连接池选取

在船舶尾气排放计算过程中需要计算缓存数据,并且需要调用环境数据、船舶属性、排放计算因子等多种类型数据,而排放计算引擎Spark自身的广播变量属性无法满足动态共享数据的设计需求,普通的外部数据库又无法达到Spark高速内存计算的速度,所以平台选用读写性能优异的Redis内存数据库[15]作为尾气计算所设计的高速缓存,并将Redis连接池作为Spark广播变量提供各个计算节点调用,进而提供更高效的数据使用效率.

2.2 基于Spark的船舶轨迹提取

与处理传统的历史AIS离线数据不同,实时计算平台无法预先对所有数据进行组织与排序,所有流程必须在线完成.在Spark Streaming 中,处理数据的单位是一批而不是单条,而数据采集却是逐条进行的,因此,Spark Streaming 需要设置间隔使得数据汇总到一定的量后再一并操作,这个间隔就是批处理间隔.批处理间隔是Spark Streaming 的核心概念和关键参数,它决定了Spark Streaming 提交作业的频率和数据处理的延迟,同时也影响着数据处理的吞吐量和性能.Spark Streaming就是通过依次、快速的批处理指定时间间隔的数据块来实现秒级的准实时计算.图3数据流中的每一个数据块里都包含了区域船舶在该时间区间内的所有AIS数据,因为船舶AIS数据中的MMSI码是唯一的,利用Spark对这些数据进行相应处理后即可以根据MMSI码提取出各条船舶的轨迹段.

图3 AIS船舶轨迹提取流程

在具体实现中,Spark Streaming中将实时数据流中的每一个相同时间间隔数据块读取成弹性分布式数据集(resilient distributed datasets,RDD)对象.图4a)为多条AIS数据.为了能对AIS数据中的MMSI信息进行识别以区分不同的船舶,须将RDD转换为图4b)中Key-Value形式Pair RDD对象,把MMSI信息最为每条数据的Key值,其余信息作为Value.之后对转换得到的Pair RDD对象进行group By Key操作,此操作会将具有相同MMSI的AIS数据聚合在一起,最后对聚合得到的每一个AIS轨迹点集合按时间信息进行排序,就将离散的轨迹点集合成一条条AIS轨迹段,见图4c).

a)RDD b) PairRDD c)List图4 AIS轨迹提取方法示意图

2.3 同船轨迹前后关联

计算得到的各条船AIS轨迹数据并不能直接应用于单船尾气排放计算模型,因为会出现图5中的情况.当前计算中的数据块与前面计算过的某一数据块中都有××轮的AIS轨迹段,如果对这两个轨迹段都单独进行单船尾气排放计算,则前一AIS轨迹段中最后一个轨迹点Pe与当前轨迹段中第一个Ps之间的船舶轨迹没有参与单船排放计算,这种排放计算方式将产生较大的误差,所以设计将Pe添加到Ps点前参加当次的单船排放计算,通过这种方式实现不同数据块中的同船轨迹段的前后关联,经过轨迹前后关联后的轨迹段即可应用于单船连续轨迹的尾气排放计算.

图5 轨迹关联流程

为实现同船轨迹的前后关联,在计算过程中,Spark集群将每条AIS轨迹段的最后一个轨迹点信息存入到Redis数据库中,当计算后面的数据块时,Spark会去数据库中寻找对应船舶的轨迹点,如果存在就添加到轨迹段首位参与计算,见图6.

图6 轨迹前后关联示意图

2.4 区域排放计算

1) 单船尾气排放计算 本文使用第1节中介绍的船舶尾气排放测度模型对单船尾气排放进行计算.计算过程见图7,针对每条船舶的AIS轨迹,依次选取轨迹中相邻两个AIS轨迹点数据,将其带入尾气排放计算模型,得到船舶在每两个轨迹点间所产生的尾气排放量,进而得到单船航行排放量.

图7 单船尾气排放计算流程

2) 排放轨迹插值 通过传统的AIS轨迹单船尾气排放算法计算出的排放值是分摊在轨迹段每两个相邻轨迹点之间,见图8a).而AIS轨迹点在网格地图中的分布是离散的、不连续的,因此,无法将轨迹段上的排放值连续地分配到各个网格上.本文针对该问题对排放轨迹进行插值,插值方法选取王超等[16]提出的考虑航向、航速的插值方法,且选定每1秒进行一次轨迹点插值,最终按各个网格点内插值后轨迹点的数量对两轨迹点间的排放量进行分配,见图8b),进而得到单船尾气排放量网格地图,见图8c).

图8 排放轨迹插值示意图

3) 区域尾气排放计算 在Spark集群中经过排放计算模型运算并插值处理后就得到了单船排放量网格数据,数据形式为Pair RDD,其中Key值为网格索引,Value为各类大气污染物排放量,最后利用Spark提供的reduce By Key方法将具有相同网格索引的各类排放物总量叠加、合并在一起,形成区域排放量网格数据,见图9.

图9 区域尾气排放计算流程示意图

3 实验过程及结果分析

实验选用Inter Core I5处理器单核心、1GB内存的单节点Spark对不同的数据量的AIS进行排放计算,经测试,该配置的Spark单节点每秒钟可以计算150条数据,总计算延时为879 ms,小于1 s,见图10.

图10 单节点Spark计算性能图

为了测试基于Spark的排放计算方法对计算能力的横向扩展效果,对拥有不同节点数的Spark集群进行了计算压力测试,实验证明随着计算节点数的增加,算法每秒钟的计算能力得到了有效的提高,见图11.

图11 Spark集群计算性能图

将2014年深圳港的AIS历史数据以及模拟风、浪、流环境数据放入云端服务器,并模拟真实的AIS数据和环境数据发送方式对云端数据集进行播发,进而提供实时数据源.将云端的数据源接入到基于Spark的排放计算程序后,程序可以实时计算出深圳港水域的排放数据.通过浏览器前端定时去服务端请求实时尾气排放计算数据,实现排放数据的可视化显示,图12为深圳港水域1 h内的船舶主机、辅机CO2累计排放地图.

图12 深圳港船舶尾气排放可视化效果图

4 结 束 语

通过基于Spark的船舶尾气排放模型设计和基于GIS的深圳港船舶尾气排放平台构建,实现了基于AIS数据的船舶尾气排放实时监测,便于海事管理部门等监管机构对管辖水域船舶尾气排放动态的掌控,对我国水域船舶大气污染物的排放管控起到了积极意义.但目前该计算方法还处于测试阶段,计算所需数据源的精确性和实时性上无法保障,计算结果有待于船舶尾气污染物检测仪器监测的数据进行验证,并根据验证结果对模型进行进一步优化.

猜你喜欢

船尾插值尾气
滑动式Lagrange与Chebyshev插值方法对BDS精密星历内插及其精度分析
活性炭生产尾气处理技术
午睡
船尾外形对超声速弹丸减阻特性的影响研究
基于pade逼近的重心有理混合插值新方法
生命之船
中国船尾舵开创航行新时代
混合重叠网格插值方法的改进及应用
建立“尾气治理”项目对汽车维修企业的影响分析
汽车维修企业“尾气治理”项目的建立与运营