一种基于Dijsktra算法和协同过滤算法的旅客行程推荐方法

文档序号:27490111发布日期:2021-11-22 14:11阅读:204来源:国知局
一种基于Dijsktra算法和协同过滤算法的旅客行程推荐方法
一种基于dijsktra算法和协同过滤算法的旅客行程推荐方法
技术领域
1.本发明涉及路线规划技术领域,具体为一种基于dijsktra算法和协同过滤算法的旅客行程推荐方法。


背景技术:

2.目前市场上各类行程规划的软件应用尽管在多种路线方案上做的较为完善,但是都没有将不同的交通方式组合在一起,综合规划出行方案,用户要是想在一次行程中体验多种不同的交通方式或进行换乘,仍然需要自己进行手动搭配,降低了用户体验。因此迫切需要一种统一不同交通工具特征和贴近用户使用习惯的路径推荐方法。


技术实现要素:

3.本发明的目的是统一不同交通工具的路径特征,将每条路径的权值与路径特征关联起来,通过dijsktra算法保证结果的最优性与正确性,同时通过协同过滤算法保证路径推荐符合方法使用者选择路径的习惯。
4.一种基于dijsktra算法和协同过滤算法的旅客行程推荐方法,用户在旅客行程推荐终端,如旅客行程推荐app上输入起点、终点并选择该次行程的要求如时间最短、花费最少;系统会根据不同的行程要求动态调整影响因子,根据每条路径的特征生成路径的权值;再利用dijsktra算法求出若干条起点到终点的路径作为协同过滤算法的物品;最后利用协同过滤算法根据特征形成路径推荐返回。
5.具体包括如下步骤:
6.(1)确定路径影响因子,动态确定路径权值
7.(2)利用dijsktra算法,为每组路径权值计算出其最优的路径,得到路径组;
8.(3)利用协同过滤算法对路径组进行路径推荐,并形成相应的路径推荐结果
9.所述步骤(1)包括:
10.(11)输入一次行程的起始点st、终点ed、时间花费要求x1、金钱花费要求x2、舒适度相关要求x3、换乘次数要求x4,x1越大代表需要的时间减少,x2越大代表金钱花费减少,x3越大代表舒适度提升,x4越大代表换乘次数减少;
11.(12)记一条路径的两端城市关键点为a和b,起始关键点城市的各类公共交通工具种类数量x5、终点关键点城市的各类公共交通工具种类数量x6,x1、x2、x3、x4、x5和x6一起作为影响路径预测的影响因子;
12.(13)根据每个影响因子确定其所影响的时间、金钱和舒适度权值系数;令权值系数为α
i
,其中i∈[1,3],具体公式如下:
[0013]
[0014][0015][0016]
其中,α1为时间权值系数,α2为金钱权值系数,α3为舒适度权值系数。
[0017]
(14)令实际时间花费为a1,实际金钱花费为a2,则关键点a到关键点b的路径的权值公式如下,计算出来的值越小越优秀:
[0018]
β
ab
=((α1+α3)a1+(α2+α3)a2)
×
(1
±
0.05k)
[0019]
其中,k∈[0,3];当k=0时可以算出一组权值,当k∈[1,3]时根据(1+0.05k)和(1

0.05k),可以分别确定出对应的三组权值,共计可以生成七组权值;
[0020]
(15)算出七组不同的路径权值,为后续算法提供数据支撑。
[0021]
所述步骤(2)包括:利用dijsktra算法为每组路径权值计算出其最优的路径;
[0022]
(21)令s是已计算出最优路径的关键点集合,u是未计算除最优路径的顶点的集合,将起始点st放入集合s中。此时,s={st(0)},u={ed(β
st_ed
),t},其中t={a(β
st_a
)};
[0023]
其中,形如ed(β
st_ed
)的含义为起始点st到终点ed的权值为β
st_ed
;t集合的具体含义为起始点st到某一关键点a的权值为β
st_a
的集合;s集合的具体含义为起始点st到s集合里的关键点的最优路径权值的集合;
[0024]
(22)在数据库中遍历所有存在的交通工具路径信息,找到其中出发点包含在s中的点,且权值最小的一条,计其不在s中的另一关键点为u,权值为β
st_u

[0025]
其中β
st_u
的含义为起始点st到关键点u的权值为β
st_u

[0026]
(23)将u加入到s中。此时,s={st(0),u(β
st_u
)},u={ed(β
st_ed
),t},a为数据库中存有的关键点;其中β
st_u
的含义为起始点st到关键点u的权值为β
st_u

[0027]
(24)更新所有的s和u中的关键点权值,更新公式如下:
[0028]
β
st_a
=min(β
st_a

st_u

u_a
)
[0029]
其中,β
st_a
为起始点st到关键点a的最优权值,β
st_u
为起始点st到步骤(23)找到的关键点u的权值,β
u_a
为步骤(23)找到的关键点u到步骤(23)中所述的集合t中的所有存有的关键点a的权值;
[0030]
(25)重复步骤(22)至步骤(24),直到ed加入到s中为止;
[0031]
(26)记录每一次步骤(23)这个过程中出现的关键点之间的交通工具信息,存储该交通工具的起始点,终点,起始时间,结束时间,金钱花费和所用交通工具,并将其依次拼接起来,可以得到答案路径γ0;
[0032]
γ0表示在该路径权值下,st到ed的答案路径为γ0;
[0033]
(27)检查γ0是否和答案路径组γ
j
中的所有答案路径完全相同,如果存在一条答案路径完全相同则不将γ0添加到γ
j
中,反之则将γ0添加到γ
j
中;
[0034]
(28)回到步骤(21),计算另外一组权值所对应的最优答案路径,重复上述步骤,直到所有的权值组的答案路径计算完毕,得到最后的答案路径组γ
j

[0035]
将dijsktra算法应用到跨交通工具的路径形成之中,同时通过步骤(1)的数据要
求对路径权值作出动态约束,由于计算路径权值的过程屏蔽了不同交通工具的差异,将权值系数的影响仅限定在了时间、金钱等影响因素上,因此dijsktra算法可以专注在权值和关键点上,通过起始点和终点即可计算出答案路径组,从而达到最优路径推荐的效果。
[0036]
所述步骤(3)包括:
[0037]
(31)记录系统历史使用记录,将每一条选定过的路径记为θ
i
,通过公式计算答案路径组γ与选定过的路径θ之间的皮尔逊相关系数,公式如下:
[0038][0039]
其中,s(i,j)表示选定过的路径θ
i
和答案路径组γ
j
的皮尔逊相关系数,r
i,p
代表路径θ
i
对特征因子p的值,代表路径θ
i
对所有特征的平均值,r
j,p
代表答案路径γ
j
对特征因子p的值,代表答案路径γ
j
对所有特征的平均值,p代表所有特征因子的集合,p代表某一个特征因子;
[0040]
(32)根据皮尔逊相关系数,计算答案路径组γ
j
中每条路径的最终评分δ
i
;最终评分的计算公式如下:
[0041][0042]
其中,s
i,t
代表物品i和物品t的皮尔逊相关系数,r
t,i
代表路径γ
t
对特征因子i的值,代表路径γ
t
对所有特征的平均值;
[0043]
(33)将计算得出的δ
i
按从小到大进行排序;
[0044]
(34)依次输出评分最高的3条路径作为推荐。
[0045]
与现有技术相比,本发明的有益效果在于:
[0046]
本发明运用dijsktra算法保证了路径之间的最优性与正确性,通过对路径特征进行约束计算出独特的路径权值,由于计算路径权值的过程屏蔽了不同交通工具的差异,将权值系数的影响仅限定在了时间、金钱等影响因素上,因此dijsktra算法可以专注在权值和关键点上,通过起始点和终点即可计算出答案路径组;通过使用基于物品的协同过滤算法,将路径当作物品,计算答案路径组和用户选定使用过的路径之间的皮尔逊相关系数并计算相应的评分,并选择评分最高的3条答案路径进行推荐,这满足了使用者的使用习惯。
具体实施方式
[0047]
下面结合具体实施例,进一步阐明本发明,应理解这些实例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本技术所附权利要求所限定的范围。
[0048]
在本发明中,将dijsktra算法和协同过滤算法引入到旅客行程推荐中,该方法主要包括以下三个步骤:
[0049]
一是对路径的特征做出一定的约束,并通过约束确定路径权值;二是利用dijsktra算法针对路径权值计算出相对应的最优路径;三是利用协同过滤算法对dijsktra算法计算出来的最优路径进行推荐。
[0050]
以下详细描述各步骤的具体实现过程:
[0051]
步骤一、确定路径影响因子,动态确定路径权值,具体包括如下步骤:
[0052]
(11)输入一次行程的起始点st、终点ed、时间花费要求x1、金钱花费要求x2、舒适度相关要求x3、换乘次数要求x4,x1越大代表需要的时间减少,x2越大代表金钱花费减少,x3越大代表舒适度提升,x4越大代表换乘次数减少;
[0053]
(12)记一条路径的两端城市关键点为a和b,起始关键点城市的各类公共交通工具种类数量x5、终点关键点城市的各类公共交通工具种类数量x6,x1、x2、x3、x4、x5和x6一起作为影响路径预测的影响因子;
[0054]
(13)根据每个影响因子确定其所影响的时间、金钱和舒适度权值系数;令权值系数为α
i
,其中i∈[1,3],具体公式如下:
[0055][0056][0057][0058]
其中,α1为时间权值系数,α2为金钱权值系数,α3为舒适度权值系数。
[0059]
(14)令实际时间花费为a1,实际金钱花费为a2,则关键点a到关键点b的路径的权值公式如下,计算出来的值越小越优秀:
[0060]
β
ab
=((α1+α3)a1+(α2+α3)a2)
×
(1
±
0.05k)
[0061]
其中,k∈[0,3];当k=0时可以算出一组权值,当k∈[1,3]时根据(1+0.05k)和(1

0.05k),可以分别确定出对应的三组权值,共计可以生成七组权值;
[0062]
(15)算出七组不同的路径权值,为后续算法提供数据支撑。
[0063]
步骤二、利用dijsktra算法为每组路径权值计算出其最优的路径
[0064]
具体包括如下步骤:
[0065]
(21)令s是已计算出最优路径的关键点集合,u是未计算除最优路径的顶点的集合,将起始点st放入集合s中。此时,s={st(0)},u={ed(β
st_ed
),t},其中t={a(β
st_a
)};
[0066]
其中,形如ed(β
st_ed
)的含义为起始点st到终点ed的权值为β
st_ed
;t集合的具体含义为起始点st到某一关键点a的权值为β
st_a
的集合;s集合的具体含义为起始点st到s集合里的关键点的最优路径权值的集合;
[0067]
(22)在数据库中遍历所有存在的交通工具路径信息,找到其中出发点包含在s中的点,且权值最小的一条,计其不在s中的另一关键点为u,权值为β
st_u
;其中β
st_u
的含义为起始点st到关键点u的权值为β
st_u

[0068]
(23)将u加入到s中。此时,s={st(0),u(β
st_u
)},u={ed(β
st_ed
),t},a为数据库中存有的关键点;其中β
st_u
的含义为起始点st到关键点u的权值为β
st_u

[0069]
(24)更新所有的s和u中的关键点权值,更新公式如下:
[0070]
β
st_a
=min(β
st_a

st_u

u_a
)
[0071]
其中,β
st_a
为起始点st到关键点a的最优权值,β
st_u
为起始点st到步骤(23)找到的关键点u的权值,β
u_a
为步骤(23)找到的关键点u到步骤(23)中所述的集合t中的所有存有的关键点a的权值;
[0072]
(25)重复步骤(22)至步骤(24),直到ed加入到s中为止;
[0073]
(26)记录每一次步骤(23)这个过程中出现的关键点之间的交通工具信息,存储该交通工具的起始点,终点,起始时间,结束时间,金钱花费和所用交通工具,并将其依次拼接起来,可以得到答案路径γ0;
[0074]
γ0表示在该路径权值下,st到ed的答案路径为γ0;
[0075]
(27)检查γ0是否和答案路径组γ
j
中的所有答案路径完全相同,如果存在一条答案路径完全相同则不将γ0添加到γ
j
中,反之则将γ0添加到γ
j
中;
[0076]
(28)回到步骤(21),计算另外一组权值所对应的最优答案路径,重复上述步骤,直到所有的权值组的答案路径计算完毕,得到最后的答案路径组γ
j

[0077]
步骤三、利用协同过滤算法对路径组进行路径推荐,并形成相应的路径推荐结果,具体包括如下步骤:
[0078]
(31)记录系统历史使用记录,将每一条选定过的路径记为θ
i
,通过公式计算答案路径组γ与选定过的路径θ之间的皮尔逊相关系数,公式如下:
[0079][0080]
其中,s(i,j)表示选定过的路径θ
i
和答案路径组γ
j
的皮尔逊相关系数,r
i,p
代表路径θ
i
对特征因子p的值,代表路径θ
i
对所有特征的平均值,r
j,p
代表答案路径γ
j
对特征因子p的值,代表答案路径γ
j
对所有特征的平均值,p代表所有特征因子的集合,p代表某一个特征因子;
[0081]
(32)根据皮尔逊相关系数,计算答案路径组γ
j
中每条路径的最终评分δ
i
;最终评分的计算公式如下:
[0082][0083]
其中,s
i,t
代表物品i和物品t的皮尔逊相关系数,r
t,i
代表路径γ
t
对特征因子i的值,代表路径γ
t
对所有特征的平均值;
[0084]
(33)将计算得出的δ
i
按从小到大进行排序;
[0085]
(34)依次输出评分最高的3条路径作为推荐。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1