船舶频繁模式模型
本模型结合频繁模式常用算法FP-tree 算法进行频繁线路预测,同时对频繁线路进行相关属性聚类,采用DBSCAN,进行线段聚类(相关的FP-tree和DBSCAN会后续总结)
一、需求分析
主要针对①每艘船舶经常走的起止港口及经停港口;②每类船舶(分不同吨位等级、分不同长度等级、分不同宽度等级、分不同吃水等级)经常走的真实航迹线。数据统计周期为每个季度和每年。
统计数据内容如下:
1、每艘船舶
(1) 常走起止港口、经停港口
(2) 常走航迹线
(3) 港口平均停留时间
(4) 经停港口间的平均行驶时间
(5) 从某个泊位出来经常到某个港口(主要用于船舶在运送不同类型的货物的时候,可能目的港口不同,这个作为后续优化方向)
2、港口间真实航迹线
(1) 港口与港口间的真实航迹线
(2) 航迹线的属性:①可以航行哪些类型的船舶;②分类型的船舶的最大吨位;③可以航行船舶的最大长度;④可以航行船舶的最大宽度;⑤可以航行船舶的最大吃水深度。
二、输入输出输出
2.1 输入数据
1)船舶的OD数据;
2)船舶的AIS数据;
3)船舶的类型数据;
三、模型
3.1 模型主要思路
1. 通过OD数据统计船只在一个季度/年内的所有抵达港口,并统计其在该港口的平均时间、到港的次数、以及该船只在所有港口停留的平均时间。按照到港的次数进行排序,得到到港次数大于等于2次(若数量少于3个,则取前三个;次数出现一次的港口排序按照在港时间,时间长的排在前边)的港口为标记港口;
2. 统计船只的航线的起始港口,并记录途中经停港口。
3. 通过统计的起始航线,运用FP-tree频繁统计方式来计算船只的频繁线路。
4. 通过船只OD数据和AIS数据来确定港口间的真实航迹线;
5. 通过相同港口间的航迹线聚类,生成该港口间的航道信息,根据航道内的航迹线数据来进行属性统计,并关联相应的航迹线属性表上。
3.2 模型流程框图
3.3 模型的流程详细说明
流程说明:
(一)输入OD数据
(二)OD数据输入后先进行OD数据统计,基于OD数据统计结果,再分别对OD数据进行完整航线统计(三)和真实航迹线生成处理(四)。
(三)完整航线统计——1)根据OD数据和OD节点数据信息判断船只航行过程中起始、经停、终止港口,起始港口到终止港口为完整一条航线,统计该条船所有的航线;2)根据FP-tree方法对该条船的航线进行频繁统计(具体统计过程见下文);3)根据2)中统计结果,确定该船只的频繁线路,输出该船的频繁线路数据。
(四)真实航迹线生成——1)输入处理港口间的所有船只OD数据和对应的船只AIS数据;2)以船只的original_out_utc 时间对应的时间点开始,到destination_in_utc时间点结束,对该船只AIS数据进行稀疏化——每隔两海里保留一个AIS点。该段内的稀疏点迹作为该船在这两个港口间航行的真实航迹线,保存该航迹线。
(五)航道属性统计:1)基于(四)的真实航迹线数据,统计该条航迹线数据的特征点,根据特征点对OD数据进行分段处理,且特征点的连线作为该段的特征直线;2)对所有OD的特征直线根据DBSCAN方法进行聚类;3)统计每类航道的属性(船只最大吨位、船只最大宽度、船只最大长度、船只最大吃水深度),保存相应航道信息;4)相同类别内航迹线段共享该类内的属性,填充航迹线对应的属性信息。
(六)对(一)~(五)进行循环处理,直到所有船只频繁模式和所有港口真实航迹线处理完毕。
流程中具体操作解释说明:
1. OD数据统计:
1)统计该船只一年的OD数据,记录所有的抵达港口、抵达港口的次数、抵达港口的平均停留时间 ,以及其在所有港口的平均停留时间 ;
2)对统计的结果,按照港口抵达次数进行排序,将到港次数大于等于2次(若数量少于3个,则取前三个)的港口作为标记港口。
2. 船只完整航线统计:1)根据OD数据和OD节点数据来判断船只航行起始港口、经停港口、终止港口;2)起始到终止港口为一个完整的航线。
起始港口判断:
①OD数据的起始点港口(original_port);
②之前的OD已经标记为终止,则线路重新开始时的original_port为起始港口;
经停港口判断:
①OD中的destination_port港口对应的node_type为泊位,且在港停留时间T满足 ;
终止港口判断:
①OD中的destination_port港口对应的node_type为泊位,且在港停留时间T满足 ;
②若起始港或之前的经停港出现过该港口,则对该条线路拆分为两条;第一条为起始港到该港之前的经停港,第二条为该港之前的经停港转为起始港,该港作为终止港保存。
根据上述的起始港口、经停港口、终止港口来判断船只的起止港口,。
3. FP-tree统计港口(泊位)到港口的频繁线路:
1)统计港口到港口:
2中统计的船只航线,按照1中的标记港口对起止港口进行排序,出现次数多的排在前边;统计相同线路数据。
2)泊位出发统计:
根据1)获取的港口到港口频繁数据,增加泊位数据进行划分,统计相同泊位出发到达的港口的次数,出现次数大于等于2次则记录。
4. 根据OD数据和AIS数据生成港口间的真实航迹线:
根据港口间OD数据和AIS数据进行稀疏化表示,以original_out_utc对应点为起始点,每隔2海里记录一个新的点,直到destination_out_utc。
5. 基于DBSCAN线段聚类方法,对所有在此港口间航行的航迹线进行聚类,获取两个港口间真实航道信息,统计航道属性,并关联相应的航迹线。
注:
DBSCAN线段聚类算法:
1)轨迹特征点提取:
两点P1(x1,y1),P2(x2,y2)的正向直线方程F12的表达式为
F12(x,y) = (y2 - y1)(x –x1)+(x2 – x1)(y – y1);
P1(x1,y1),P2(x2,y2), P3(x3,y3),P4(x4,y4)是连续的四个点。连接P1,P2的直线方程F12(x,y),计算F12(x3,y3);连接P2,P3的直线方程F23(x,y),计算F23(x4,y4)。若F23(x,y)* F23(x4,y4)< 0 ,则P3(x3,y3)为特征点。
轨迹线的起止点为特征点,起止点之间的点则通过上述方法生成。
2)计算两段特征直线间的距离
轨迹线中两特征点P1,P2;另一条轨迹线中两特征点A,B。θ为两特征线段的夹角,A点到P1P2的距离为L1,B点到P1P2的距离为L2.
条件处理:
①AB与P1P2相交则,两线段间距离为0;
②若A,B两点的x坐标在P1P2内,则分别计算L1和L2,AB到P1P2的距离为 ;
③若A,B两点的x坐标与P1P2所在x范围有交集,则需要计算L1和L2,以及P1,P2到AB的距离L3和L4,此时AB到P1P2的距离为L1、L2、L3、L4中最小的一个;
④若A,B两点x坐标与P1P2所在的x范围没有交集,则分别计算P1,A;P1,B;P2,A;P2,B的距离,取最小的距离作为两线段的最小距离。
3)轨迹间聚类
①以某条轨迹为标准计算该轨迹所在的航道数据。
②起始线段为起始,开始计算:该线段与其它轨迹线线段的距离,若轨迹线段间的距离小于5海里,则将其归为一类。统计所有与该轨迹线段距离小于5海里的线段,并将其归为一类。
③依次循环所有未分类的轨迹线,统计其轨迹线内的分类。
如果该轨迹内部分线段属于A类,部分线段属于B类,则该轨迹需要记录两类的分界点和属性值。
④统计各个分类内,船只的类型、船舶的最大吨位、船舶的最大长度船舶的最大宽度、船舶的最大吃水深度。
⑤对于该类内的线段就行属性与轨迹线进行关联。