一种运价搜索系统的制作方法_2

文档序号:9865708阅读:来源:国知局
的值乘以适当的系数计入到行程的价格中,得到行程的综合估计价格,用来在不同行程间选择综合价格最低的结果。
【附图说明】
[0037]为了更清楚地说明本发明实施例或现有技术中的方案,下面将对实施例中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0038]图1给出了本发明提供的一种运价搜索系统的结构示意图;
[0039]图2给出了图1的运价搜索系统的模块关系图;
[0040]图3给出了运价搜索树的示意图
[0041]图4给出了图1的运价搜索系统中的路径选择模块的工作流程示意图;
[0042]图5给出了图1的运价搜索系统中的运价组合校验模块的工作流程示意图。
【具体实施方式】
[0043]为使本发明实施例的目的、技术方案和优点更加清楚,下面对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0044]本发明所使用的缩略语和关键术语的定义如下:
[0045]a)ATPC0:航空运价出版公司,是运价数据的来源;
[0046]b)0AG:航班数据公司,是航班数据的来源;
[0047]c)ATP⑶运价数据:由ATPCO发布的统一标准的运价数据,是一套复杂的数据结构,其中包含价格和使用这一价格需要满足的一系列规则;
[0048]d)fare component(FC):运价元素,是运价的发布单位,如CA发布BJS-LAX的运价,BJS-LAX 就是一个 FC;
[0049]e)pricing unit(PU):价格单元,对FC组合的几何限制;
[0050]f) journey (JR):运价行程,对PU组合的限制,是出票单位,对应一张机票;
[0051]g)FC PU JR的关系是:
[0052]h)FC组成PU,PU组成JR。即运价元素组合成为价格单元,价格单元再组合成为运价行程。因此即使是相同的运价元素组合也可以组成不同的价格单元和运价行程。上述受到IATA的运价组合规则限制。
[0053]i)运价路径:由FC组成的路径;
[0054]j)舱位类型:头等、商务还是经济舱;
[0055]k)运价类型:0W(one way)单程,RT(round trip)往返程;
[0056]I)综合价格:是由当前运价价格和与舒适度有关的信息折算为价格后得到的估计价格;
[0057]m)运价组合:指不同运价元素(FC)间的组合;
[0058]η)元组:具有相同或部分相同校验规则的运价聚合成元组。
[0059]ο)运价组:元组的集合,由元组聚合而成
[0060]本发明目标解决价格为导向的航班搜索问题,采用启发式搜索方式,利用旅行经验数据对潜在行程的价格和舒适度进行估计,剔除不合理结果,筛选出满足旅客需求的最终结果。
[0061]如图1和图2所示,本发明的航班运价搜索系统包括:旅行经验信息模块,运价索引模块,运价路径选择模块,运价拆分模块和运价组合校验模块。
[0062]旅行经验信息模块用来生成旅行经验信息数据库。我们从ATPCO发布的运价数据和OAG发布的航班计划数据中计算得到旅行经验数据,包括从运价数据中提取出的价格信息和从航班数据中提取的舒适度信息。旅行经验数据作为运价搜索过程中重要的启发式信息,用来估计运价组合的综合价格,并且可以帮助我们过滤不合理的运价组合。另一方面,经验数据会按照信息的精确度有层次的索引和存储。随着搜索的深入,当我们获得的信息越来越完备,我们可以利用更完备的信息索引出更精确的旅行经验信息。例如,在开始的路径选择中,我们可能只关心O-A-D和O-B-D这两条路径哪个更低价。但随着搜索的深入我们会关注O-A-D这条路径上,不同舱位等级、不同航空公司和不同运价类型对应的最低运价是多少。在旅行经验数据的更新方面,对于不同精确度的经验数据,当其产生的原始数据发生变化后,我们会评估经验数据是否还有效,对于精确度不同的经验数据,我们会选择不同的频率更新相应的经验数据库。
[0063]运价索引模块用来建立运价索引以便快速查找运价。面对数以亿计的运价数据,如何快速遍历和查找运价成为系统性能的关键。恰当建立索引不仅可以用来快速提取运价数据还能够有效压缩运价的数据规模。我们并不为每一个运价数据建立索引,而是首先将具有相同或部分相同校验规则的运价聚合成元组,并在元组的基础上根据起点终点、航空公司、舱位类型、运价类型和旅行方向等信息将元组组织为一个具有层次关系的集合,形成运价数据的搜索树。如图3所示,运价搜索树中的每个节点都对应一个运价组,而它的子节点是具有更多信息的运价组。例如上海到北京的运价组节点下,包含着不同舱位类型的子节点,而每个舱位类型子节点下又包含了对应不同航空公司的子节点。我们归纳每一个节点内运价数据的最低价格,并将这些价格信息存储在旅行经验数据库中。通过这种方式组织运价数据,运价搜索就变为按层次逐级深入每一层节点进行搜索的过程,并且我们还可以根据每个节点的价格和依据旅行经验信息修正后的综合价格对运价路径进行有效的排序和筛选。
[0064]如图4所示,运价路径选择模块用来生成潜在的低价路径,我们根据旅客输入的旅行信息提取相应精确度的运价组最低价格。以运价组对应的O和D为节点、最低价格为边权构造运价路径图。在图中用最短路径算法搜索满足旅客输入OD的前N条最低价格运价路径,并且我们还利用旅行经验数据库中的旅行经验数据计算路径的综合价格,筛除不合理的运价路径。这是对搜索结果最粗粒度的筛选,对每个旅客查询请求我们会找出至少一条满足请求的运价路径。
[0065]运价拆分模块用来生成IATA标准的价格单元(PU)和运价行程(JR)。我们枚举所有可能的价格单元组合成为不同的运价行程,这样初始的一条运价路径在这里分化成为不同航空公司、不同舱位类型和不同运价类型的运价行程。
[0066]如图5所示,运价组合校验模块用来产生最终的最优运价组合。在明确了航空公司、舱位类型等信息后,我们可以利用更精确的旅行经验信息估计每一种运价行程的综合价格,按价格对其排序,并且剔除不合理的运价行程。我们选择当前综合价格最优的运价行程,如果该行程中包含未展开的运价组则我们会展开这个运价组,重新组合为新的运价行程,并重复上述过程计算综合价格,排序筛选。直到当前的运价行程全部为元组组成。下面我们根据同一元组中运价对航班的约束要求生成满足要求的航班。在获得航班信息后,下一步我们根据航班信息校验元组中的运价规则。根据ATPCO标准,校验由下到上分为三个层次,即FC层、PU层和JR层。直到我们得到通过全部校验且价格最优的运价组合。如果这个运价组合的价格高于已知的运价行程价格,则我们从已知价格最低的运价行程开始继续处理,展开这个运价行程中的运价组,生成新的运价行程,评估价格,排序筛选,校验规则等。直到我们不再有运价行程价格低于已知的运价组合。我们将得到的运价组合结果返回给用户。
[0067]目前运价数据大约有10亿条,因此如何索引和筛选运价数据是运价搜索面对的重要挑战之一。确定一个运价fare是否可用需要知道一系列信息fare (0D,Dep/Arr date,cabin,Off/RT,PU, JR,FC, carrier, tariff,routing,rule,...)。例如fare(OD)可以索引到一组运价,而€&^(00,06。/Arr date)则是fare(OD)的一个子集,依此类推我们知道的信息越完备,我们索引到的运价数量越少,价格越确定,需要校验的规则也越少。这也就是为什么传统的航班搜索要首先生成航班组合,因为有了航班组合我们才能获得确定运价的完备信息,从而可以开始校验某个运价是否可用于这个航班组合。但是这种方式的缺点也十分明显,确定完备的信息后,运价的搜索范围也被限制在非常小的一个区域内,我们很容易错过潜在的低价结果。
[0068]从上面对运价数据的描述我们可以发现运价数据很适合用一个搜索树来描述。各个信息对应树的各级。我们知道的信息越多相当于可以定位到越深的分支上。而我们的搜索过程正是获得信息由少到多的过程,相当于一级级打开这棵搜索树的过程。因此在本发明中我们以搜索树的形式存储和建立运价的多级索引,并且计算各级分支中运价的最低价格和索引一起存储下来。那么在搜索过程中,随着已知信息的增加,我们逐级打开搜索树,并根据最低价格进行“剪枝”,筛选出价格较低的分支,沿着这些分支继续深入搜索。
[0069]另一方面,在运价数据的校验过程中,我们发现运价数据之间会共用一些规则(稍微研究下运价数据就会发现这点是显然的,为了复用
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1