【技术实现步骤摘要】
本专利技术涉及GPS (全球定位系统)、GIS (地理信息系统)和计算机软件新技术,具体为ー种全新的基于时空聚类的出租车载客点推荐方法。
技术介绍
目前大多数出租车司机在未载到客人时,行驶目的都是不明确的。在这种情况下,司机通常是在街上巡游或在某个特定的地点等。然而,在车辆巡游找乘客的过程中,有效里程(有车费的里程)与巡游里程(没有车费的里程)的比例不高,并且司机损失了燃料费用,很明显巡游里程越长司机的利润越低;不仅如此,没载乘客的出租车还会为城市的交通增加负担、增大资源浪费和加重城市污染。如果在某个特定地点等乘客,这要使得司机清楚在哪些地方能较容易的等到乘客。现实生活中,不同的时间段里,乘客相对集中的地点并不相同,比如在早上,住宅区和商业区对出租车的需求量很大,而晚上的时候,娱乐休闲场所周围就有很多需要打车的乘客。如果司机要清楚的知道在哪个时间段里哪里的会有较多的乘客,无疑需要较长的时间来熟悉这些区域人群的流动情况,而且还要能够从中分析出什么时间该去哪里接乘客。这要求出租车司机不仅有经验还要有头脑。基于如此,针对出租车司机的推荐系统先后出现很多,但缺乏分区域、分时段的推荐方式,而且推荐地点精度不够闻。GPS是英文Global Positioning System (全球定位系统)的简称。用户设备部分即GPS接收机可以进行定位计算,计算出用户所在地理位置的经纬度、高度、速度、时间等信息。目前GPS接收机种类越来越多,用途也越来越广。出租车车载GPS设备的使用可记录车辆的轨迹,以每3或5秒的频率保存轨迹点的经纬度、高度、载客状况和时间数据并可导出指定格式的 ...
【技术保护点】
一种基于时空聚类的出租车载客点推荐方法,其特征在于:1)从出租车车载GPS中读取选定时间段的出租车车载GPS数据,其格式是“.plt”,文件包含的坐标点的经度、纬度、出租车载客状态、高程和时间的数据信息;2)对数据进行预处理,删除所选定区域以外的GPS点,依据出租车载客状态的变化,查找载客或卸客的地点;3)用时空聚类的方法获取出租车在各个时段中选定区域经常发生载客事件的地点,作为候选载客点;4)利用ArcGIS提供的ITopologicalOperator接口查找车辆周围区域范围内的候选载客点,并对它们根据规则进行排序,取序列的top?5作为推荐载客点向司机推荐。
【技术特征摘要】
1.一种基于时空聚类的出租车载客点推荐方法,其特征在于 1)从出租车车载GPS中读取选定时间段的出租车车载GPS数据,其格式是pit”,文件包含的坐标点的经度、纬度、出租车载客状态、高程和时间的数据信息; 2)对数据进行预处理,删除所选定区域以外的GPS点,依据出租车载客状态的变化,查找载客或卸客的地点; 3)用时空聚类的方法获取出租车在各个时段中选定区域经常发生载客事件的地点,作为候选载客点; 4)利用ArcGIS提供的ITopologicalOperator接口查找车辆周围区域范围内的候选载客点,并对它们根据规则进行排序,取序列的top-5作为推荐载客点向司机推荐。2.根据权利要求1所述的一种基于时空聚类的出租车载客点推荐方法,其特征在于获取各时段选定区域经常发生载客事件的地点代码为 基于K均值的层次聚类代码为 while(l)//第一次聚类开始 I while(l)//寻找归并到哪个类中 { for(i=0;i<numberl ;i++){ double radLatl = rad(x); double radLat2 = rad(center[i][l]); double c = radLatl - radLat2; double b = rad(y) - rad(center[i]); distance = 2 * asin(sqrt(sin(c/2) * sin(c/2) + cos(radLatl) *cos(radLat2) * sin(b / 2)*sin(b / 2))); distance=distance*R; if(distance<mindis[ I ]) { mindis=i; mindis[ I ]=distance;}}}for(i=0;i<numberl ;i++)//更改聚类中心{center I [i]=count[i]/numl [i];center I [i] [ I ]=count[i][ I ]/num I [i];double radLatl = rad(centerl[i][l]);double radLat2 = rad(center[i][l]);double c = radLatl - radLat2;double b = rad(centerl[i]) - rad(center[i]);d = 2 * asin(sqrt(sin(c/2) * sin(c/2) + cos(radLatl) * cos(radLat2) * sin(b / 2)*sin(b / 2)));d=d*R;if(d=0.0)sign++;center[i]=centerl [i]; center[i] [ I ]=centerl [i] [ I ];}for(i=0;i<clu;i++) //计算每各类应聚类出多少个类 {ele[i]=0;clus[i]=ele[i]/divider1-l; totall+-clus[i];}while(l)//第二次聚类开始{for(m=0;m<clu;m++) {while(l){for(i=0;i<clus[m];1-H-)//分配到哪个类中{double radLatl = rad(x);double radLat2 = rad(center2 [m] [i] [ I ]);double c = radLatl - radLat2;double b = rad(y) - rad(center2[m][i]); distance = 2 * asin(sqrt(sin(c/2)*sin(c/2) + cos(radLatl) * cos(radLat2)*sin(b / 2)*sin(b / 2))); distance=distance*R; if(distance<mindis[ I ]) { mindis=i; mindis[l ]=distance; } } }for(i=0;i<clus[m];i++)//计算新的聚类中心 { if(number[m] [i]!=0) {center3 [m] [i] =count2 [m][i] / number[m] [i];center3 [m] [i] [ I ]=count2[m][i][l ]/number[m] [i];doub...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。