一种基于时空聚类的出租车载客点推荐方法

文档序号:6580440阅读:248来源:国知局
专利名称:一种基于时空聚类的出租车载客点推荐方法
技术领域
本发明涉及GPS (全球定位系统)、GIS (地理信息系统)和计算机软件新技术,具体为ー种全新的基于时空聚类的出租车载客点推荐方法。
背景技术
目前大多数出租车司机在未载到客人时,行驶目的都是不明确的。在这种情况下,司机通常是在街上巡游或在某个特定的地点等。然而,在车辆巡游找乘客的过程中,有效里程(有车费的里程)与巡游里程(没有车费的里程)的比例不高,并且司机损失了燃料费用,很明显巡游里程越长司机的利润越低;不仅如此,没载乘客的出租车还会为城市的交通增加负担、增大资源浪费和加重城市污染。如果在某个特定地点等乘客,这要使得司机清楚在哪些地方能较容易的等到乘客。现实生活中,不同的时间段里,乘客相对集中的地点并不相同,比如在早上,住宅区和商业区对出租车的需求量很大,而晚上的时候,娱乐休闲场所周围就有很多需要打车的乘客。如果司机要清楚的知道在哪个时间段里哪里的会有较多的乘客,无疑需要较长的时间来熟悉这些区域人群的流动情况,而且还要能够从中分析出什么时间该去哪里接乘客。这要求出租车司机不仅有经验还要有头脑。基于如此,针对出租车司机的推荐系统先后出现很多,但缺乏分区域、分时段的推荐方式,而且推荐地点精度不够闻。GPS是英文Global Positioning System (全球定位系统)的简称。用户设备部分即GPS接收机可以进行定位计算,计算出用户所在地理位置的经纬度、高度、速度、时间等信息。目前GPS接收机种类越来越多,用途也越来越广。出租车车载GPS设备的使用可记录车辆的轨迹,以每3或5秒的频率保存轨迹点的经纬度、高度、载客状况和时间数据并可导出指定格式的文件保存,这些完备的时空数据可用来做出租车行驶轨迹的分析和挖掘更深层次信息。出租车车载GPS设备的普及程度为从车辆轨迹中提取相应的知识提供了重要的基础条件。GIS是英文Geographic Information System (地理信息系统)的简称,具有空间数据的获取、存储、显示、编辑、处理、分析、输出和应用等功能,是ー个基于数据库管理系统(DBMS)的分析和管理空间对象的信息系统。该技术是读取GPS数据并对其做分析处理显示的关键技术,易于高效直观地生成车辆轨迹地图用以区域聚类分析。时空聚类分析,是地理数据挖掘和知识发现中的前沿的研究热点问题之一,其主要目的就是根据时空数据的本质特征和智能算法,发现隐藏在时空数据集中的游泳的聚类模式,对于分析地理实体的演变规律具有重要意义。通过聚类能够识别对象空间中稠密和稀疏的区域,将数据中的相似性与异常特征提取出来,从而发现全局分布模式和数据属性之间有意义的相关。该系统涉及两项硬件设备车载GPS轨迹记录仪和计算机硬件。计算机硬件的配置包括,处理器Pentium II1-600兆赫兹(MHz)兼容或更快的处理器,内存512兆(MB)内存或更多,硬盘容量大约需要IGB可用硬盘空间,显示器支持1,024x768分辨率或者更高性能的视频显示卡和监视器。软件环境包括两部分(I)开发环境有Microsoft Visual Studio 2008、ESRIArcGIS Engine9.3.1Runtime and Developer Kit for Windows 和 ESRIArcGISDesktop SDK for the Microsoft. NET Framework。(2)运行环境,操作系统Windows 2000/Windows XP简体中文操作系统及以上;支持软件Microsoft. NETFramework 3. 5。

发明内容
本发明的目的是抚今提供ー种向出租车司机推荐载客地点的方法,这种方法是利用历史载客点进行时空聚类分析,其聚类过程分为三步1.先进行空间层次聚类,再将聚类的结果划分到不同时段中;2.先把出租车的历史载客点划分到各个时段中,再对每个时段的数据进行空间层次聚类;3.将前两步的结果进行“求交集”。这种方法可以有效的提高推荐载客点的精度。基于时空聚类的出租车载客点推荐方法实现主要分为如下4个步骤I)从出租车车载GPS中读取选定时间段的出租车车载GPS数据,其格式是pit”,文件包含的坐标点的经度、纬度、出租车载客状态、高程和时间的数据信息;2)对数据进行预处理,删除所针对选定区域以外的GPS点,依据出租车载客状态的变化,查找载客或卸客的地点;识别轨迹文件中发生载客事件的地点代码为int a, j, point,temp;
char name[30]="data.txt",result[12]="result.txt",pas[3],buf[256];
FILE *fp,*fres;//要查找的文件名字为data, txt,输出结果
文件名为result.txt
if((Q)=fopen(name,"r"))==NULL)
{
printf("Open %s fail\n",name); return 0;
}
fres=fopen(result, "w");
fseek(fp,0,2);
j=ftell(fp);
rewind(Q));
while(l)
{
fscanf(fp,"%s",buf);
point=0;
a=0;
for(temp=0; ;temp++)
{
if(buf[temp]=V)
权利要求
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];double radLatl = rad(center3[m][i][I]);double radLat2 = rad(center2 [m] [i] [ I ]);double c = radLatl - radLat2; double b = rad(center3 [m][i]
) - rad(center2[m][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++; }else sign++; center2 [m] [i]
=center3 [m] [i]
; center2 [m] [i] [ I ]=center3 [m] [i] [ I ]; } } o 合并聚类结果的代码为 if(buff[5]=='q|buff[6]==’C’||buff[7]==’C' //判断是否为聚类中心{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<50){min++;com=k;x2+=xl;y2+=yl;}}if(com!=500)//判断是否能够合并{center[clum]
=y2/min; center[clum] [ I ]=x2/min; clum++;}while(l)//对元素重新分配到各个聚类中心中{for(temp=0;;temp++){if(point==2)break;if(point==0){wei [a]=bufttemp];a++;wei[a]='\0';}if(point==l){jing[a]=bufttemp];a++;jing[a]='\0'; }}for(j=O ;j <clum;j ++) { double radLatl = rad(x); double radLat2 = rad(center[j][l]); double c = radLatl - radLat2; double b = rad(y) - rad(center[j]
); 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
=j; mindis[l]=distance; } } o
3.根据权利要求1所述的一种基于时空聚类的出租车载客点推荐方法,其特征在于获取车辆周围推荐载客点算法的代码为 在车辆周围建立缓冲区pBuffer.1n_features = infile ;pBuffer. out_feature_class = outfilename ; pBuffer. buffer—distance—or—field = radius+" " +" Meters"; pBuffer. dissolve_option = !f All";IGPProcess GProcess = pBuffer ;gp.Execute(GProcess, null); axMapControl1. AddShapeFile (bufferoutpath,buffername) ;// 加载缓冲区文件确定缓冲区内的候选载客点pClip.1n_features = inputfeature ;pClip. clip_features = clipfeature ;pClip. out_feature_class = clipoutpath+outpath_file ;gpsr.Execute (pClip,null);axMapControl L AddShapeFile(clipoutpath,outpath_file); 对候选载客点进行排序 for(temp=0;temp<length;temp++) { if(buf[temp]==',')
全文摘要
本发明公开了一种基于时空聚类的出租车载客点推荐方法,1.本发明引入了时空聚类分析的方法,获取了不同时段里有较大可能发生载客事件的地点;2.本发明为出租车司机提供了在短时间能到达的载客地点,计算复杂度较低,并具有很好的实时性。
文档编号G06F17/30GK103020284SQ20121058071
公开日2013年4月3日 申请日期2012年12月28日 优先权日2012年12月28日
发明者刘毅志 申请人:刘建勋, 刘毅志, 张明月
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1