用于查找最佳费用的最优化系统和方法

文档序号:6438790阅读:316来源:国知局
专利名称:用于查找最佳费用的最优化系统和方法
技术领域
本发明一般涉及在线运输预定处理,特别涉及用来提供针对在线预定或者费用查询自动确定最佳费用的系统、设备和方法。
背景技术
通信网络在计算机通信领域中为大家所熟知。根据定义,网络是通过通信设施成者链路相连接的一组计算机和相关设备。网络通信可以是永久的,例如通过电缆,或者可以是临时的,例知由电话或者无线链路形成的连接。网络可以大小不同,从包括少量计算机或者工作站和相关设备的局域网(“LAN”),到互连在地理上广泛分布的计算机和局域网的广域网(“WAN”),到通过临时通信链路与远程计算机五连的远程存取服务(“RAS”,Remote Access Service) 0接下来,互联网络(INTERNETWORK)是借助便于各种网络的数据传输和转换的网关或者路由器实现的多个相同或者不同的计算机网络的联合。术语互联网络的著名的缩写是“internet”。根据当前的理解,大写字母开头的术语“Internet”指的是这样的网络和路由器的集合,它们使用互联网协议(“IP”)以及例如像传输控制协议/网际协议(“TCP/IP”)或者统一数据报包/网际协议(“UDP/IP”)这样的高级协议,以便彼此通 目。借助其连接遍及整个世界的计算积的能力,因特网近来已经迅速发展。随着因特网的发展,万维网(“WWW”,或者“Web”)也已经得到发展。万维网是互相连接的或者在遍布因特网的“网站”上电子服务的超文本标记语言的超文本文件的大量集合。在很大程度上由于其简单性和其输送多种格式信息的能力,万维网已经迅速地成为传播信息的流行方法。为了使得信息在万维网上可利用,用户通常编辑由因特网服务提供高(“ISP”)张贴在网站上的一组网页。网站位于与因特网连接的服务器上,服务器具有大量的存储设备用于存储也叫做网页的超文本文件,并且运行管理软件用于处理对被存储的超文本文件的请求。超文本文件通常包括大量超文本链接,也就是该文本中的突出显示部分,用来将文件连接到可能存储在因特网上任何地方的网站上的另一个超文本文件。每个超链接与一个统一资源定位符(“URL”)相关联,所述统一资源定位符提供链接文件在连接到因特网服务器上的服务器上的精确位置并且描述该文件.因此,无论何时从任意的万维网服务器检出超文本文件的时候,就认为是从万维网上检出该文件.允许用户从万维网上检索超文本文件,也就是,允许用户通过万维网浏览器在网上冲浪·万维网浏览器,例如 netscape Navifatorb. Microsoft intemerExpiorer 或者
phone, com的UP. Link微浏览器等,是由万维网客户机也就是用户的计算机、蜂窝式便携无线电话或者其他客户设备等执行的软件程序,以便于将图形用户界面(“GUI”)提供给万维网.通过万维网浏览器接受到用户的请求时,万维网客户机利用用于文件的URL和被称为超文本传输协议(“HTTP”)的协议从适当的万维网服务器上存取和检索想要的超文本文件.HTTP是比TCP/IP更高级的协议,并且特别为万维网的需求所设计.它被用在TCP/IP 的顶部以便于在服务器和客户机之间传输超文本文件.随着万维网的出现,存储在因特网上的信息本质上通常是静态的并且如果有人想要改变在万维网上提供的信息,必须通过重写其HTML代码来手动配置网站.然而,在万维网当前的发展阶段,许多网站提供了依据在用户的客户设备上的万维网浏览器和网站之间用户的交互作用来改变的动态内容.这些动态超文本文件在技术上为大家所熟知并且可以用无数种不同的方法生成,例如通过利用由万维网服务器处理的公共网关接口( “CGI”) 脚本或者由万维网浏览器处理的正如JAVA Script这样的本地脚本.本发明涉及基于网络和基于因特网的旅行服务,例如提供运输票的旅行服务,包括通过因特网将机票、火车票、汽车票、渡船票等提供给旅客.对于这样的服务,利用通过因特网连接到旅行服务的计算机,用户可以从包括机票、火车票、汽车票、渡船票或者它们组合的动态变化的产品目录中购买产品.通常,旅行服务与集中式计算机预订系统 (“CRS”)合作.CRS是与旅行代理运输提供者或者服务机构通信的系统或者服务机构,目的是提供最新的运费(旅行或者包括旅行的线路组合的价格)、时间表(旅程或者航班的到达和离开的日期和时问),规则(在什么样的情况下什么样的运费是有效的)和可用性 (以特定价格提供食宿的特定旅行或者航班的容量)来响应查询.这种信息由运输公司提供给CRS,通常是通过第三方;然而,旅行服务也能够与其他数据库合作,例如反映运输公司和旅行服务之间像折扣合同或者促销项目这样的具体关系的本地数据库。因此,基于因特网的服务能够访问许多运输公司的产品目录和价格资源。旅行服务的商业环境具有多种方式以不同的价格将相同或者类似的最终产品提供给消费者.由于受运输公司驱动的偏好的缘故,对类似的产品目录定不同的价在成本方面可能是有效的.例如,在航空定票的情况中,当考虑航空运输公司的数目、不同的旅行路线、枢纽位置和其他细节的时候,消费者从点A旅行到点B的方式的数目是巨大的.为了这个原因,从点A到点B的特定类段的价格可能随时间、航空运输公司等而显著不同。此外, 组合价格变动是价格敏感性,它能够反映例如对于最接近离开时间的所预定票的需求的增加.此外,与各个运输公司商谈的促销和打折计划可以进一步影响由旅行服务提供的价格.另外,特定种类的产品目录可以具有相关的高或者低的需求,或者高或者低的销售数量。另外,还有许多消费者驱动的偏爱也能够影响定价.一些消费者对产品目录中给定项目各自的特性有不同的评价.例如,在机票的情况中,一个消费者可以不介意航班(从一个地方飞到下一个地方)什么时候起飞,而另一个消费者可能在所有运输公司中更偏爱一个特定运输公司。当消费者指定他的偏爱时,这些偏爱能被考虑到提供的航班中.由于这些原因及其他原因,存在着许多能够影响相同或者类似的最终产品的价格的因素。而且,在常规的基于因特网的旅行服务中,消费者输入关于所需的提供者产品目录的非常特定的信息,基于因特网的旅行服务查询CRS,寻找符合物定查询的产品目录.CRS执行其数据库的搜索来查找该查询的匹配,并且将结果集返回到基于因特网的旅行服务由消费者浏览.然而,响应查询的传统的CRS搜索是有限的。由存在着多种方法将相同的最终产品提供给消费者这样的事实产生了一个局限性。例如,当考虑不同的提供者、旅行线路和其他细节的时候,从点A旅行到点B有数不清的方法。因此,由于经济原因,CRS通常花费固定的时间量检索它的数据库来查找满足该查询的信息.因此,当CRS将结果返回到旅行服务以响应查询的时候,CRS返回非常有限并且通常不是最优化的结果用于特定的查询,这仅仅是因为不能够搜索可能的产品目录元素的每种排列或者组合。结果,在通过CRS返回的结果集合中没有显示符合查询的一些产品目录.因此,提供一种能够更彻底的查询而不用导致在CRS搜索时间和计算功率方面大幅度不可接受的增长的服务是非常有益的。这种益处的提供能够丰富消费者的体验,并且因此能够吸引更多消费者和回头客.另外,只通过检查经过起点和终点之间的一小组中转点的路线的费用来搜索运费在技术中是大家所熟知的。然后,通过明确地列举在起点、中转点和终点之间路线的全部可能的组合,有可能找到最低费用(时间和价格)的路线。然而,这种方法仍然很昂贵而且还不准确和不灵活.当新路线被运输公司排定或者取消时,全部的预定中转点集合需要重新计算.即使只提供了有限数目个中转点,明确地列举即使有限组的路线/费用的组合在计算方面也是令人却步的.另外,如果只检查有限数目个连接,如果最优解经过不在预定中转点中的一个中转点,则有可能错过最优解。对于熟悉本技术领域的人还知道其他探索式方法来不精确地确定从起点到终点的最佳费用,然而,这些试探性方法仍然不是精确解,因为试探性算法它们本身就是不精确的。因此,需要一种在计算能力方面要求不是过高的来找到最佳费用的方法,这种方式还是精确的并且不会忽略可能的路线/费用组合,除非已经知道它们不是最佳费用。

发明内容
本发明解决了以可接受的方式找到最佳费用的问题,此方式利用具有基于分支和约束的技术的查询服务器来隐性列举可能的旅行解决方案从而达到最佳费用方案.在为旅行查找最佳费用的一个举例的方法中,确定一组用于旅行的部分费用解, 将旅行信息添加到部分费用解以便确定一组完全的费用解,并且随着旅行信息添加到部分费用解,删除是非最优化部分解的部分费用解,通过这样来查找费用。然后,返回上述完全费用解的一个子集(或者是预定数目或者是完备集)作为旅行的最佳费用。在一个举例的实施方式中,增加旅行信息可以包括给解法树中的根节点提供费用查询,将对应于上述根节点的费用分量指定到第一级节点,指定用于费用分量的运输公司到二级节点,指定具有指定的运输公司的费用分量的航班到三级节点,将航班集合成可定价的单元分组到第四节点,并且在叶节点中将费用分配到可定价的(priceable)单元.可以用递归或者迭代的方式来增加旅行信息和删除部分费用解,只要至少隐含地检查可能的解.实际上,可以从终点和起点向后或者向前执行增加旅行信息和删除部分费用解以便于进一步分解用于最佳费用的搜索.在本发明的另一个举例的实施方案中,根据任意的阈值费用删除部分费用解,而在另一个方案中,根据精确的下界来删除部分费用解.在本发明的再一个实施例中,在优先级队列中存储部分费用解和完全费用解。附图简述
结合附图,参考下列详细的描述,本发明的上述方面以及许多伴随的优点将变得更容易理解,附图中

图1(现有技术)是像因特网这样的互联网络的典型部分的图解;图2是依据本发明的连接到互联网络的许多设备的示意图,该互联网络响应费用查询向连接到它的客户设备提供最佳费用;图3是图解说明依据本发明用于优化费用记录的如在图2中所示的预处理服务器的几个部件的方框图;图4是图解说明依据本发明响应费用查询用于确定最硅费用的如图2中所示的查询服务器的几个部件的方框图;图5是图解说明由预处理服务器完成的用来优化费用记录的预处理程序的概要流程图;图6是图解说明依据本发明由客户设备、万维网服务器、旅行服务器、查询服务器、文件服务器和计算机预订系统响应费用查询执行的用于确定最佳费用的操作的图;图7是图解说明依据本发明由查询服务器完成的用来确定最佳费用的最佳费用搜索程序的概要流程图;图8是图解说明由查询服务器完成的费用限制点确定子程序的概要流程图;图9是图解说明由查询服务器完成的运输公司分配子程序的概要流程图;图10是图解说明由查询服务器完成的航班分配子程序的概要流程图;图11是图解说明由查询服务器完成的定价单位确定子程序的概要流程图;图12是图解说明由查询服务器完成的费用分配子程序的概要流程图;图13A-C显不线路和限制点图来帮助理解如图7_12中所不的流程图;图14(现有技术)显示完整的解法树图来帮助理解由当前发明提供的益处;图15显示完整的解法树图来帮助理解由当前发明提供的益处;图16显示用于接收来自消费者的费用查询的网页举例;图17A-C显示用于将接收的对费用查询的响应进行显示的网页举例.
具体实施例方式如先前所解释,大写字母开头的术语“Internet”指的是使用网际协议(“IP”)来彼此通信的网络和路由器的集合.因特网100的典型部分如在图I(现有技术)中所示,其中多个局域网120和广域网130通过路由器110互相连接。路由器110通常是用于将一个局域网或者广域网连接到另一个的专用计算机。在局域网内的通信链路可以是双绞线或者同轴电缆,而网络之间的通信链路可以利用56Kbps的模拟电话线或者IMbps的数字T-I线和/或者45Mbps的T-3线.此外计算机和其他相关电子设备能够通过调制解调器和临时电话链路远程连接到局域网120或者广域网130.这样的计算机和电子设备140在图I中表示为通过虚线连接到局域网120上。应该理解因特网由大量的这种网络、计算机和路由器互联组成,如图I中所示的只是因特网100的很小的典型的一部分.另一方面,万维网是位于通过因特网100连接的服务器上的互相连接的电子存储的信息或者内容的大量的集合.许多公司现在使用万维网通过因特网100提供服务和访问他们的内容.例如,一些公司通过因特网100提供旅行服务,使得消费者能够进行运输和住
7宿的在线预定.依据本发明,提供一种最优化系统和方法来确定最佳的可能费用来响应由考虑进行在线预定或者购买运输票的用户进行的费用查询.虽然为了讨论本发明的目的在这里将航空运输公司和航班用作图解说明的实例,但是对于熟悉本技术领域一般技能的人来说,应该理解本发明也同等地应用于其他形式的运输,例如接受预定或者费用查询的铁路、公路、水运或者其他形式的运输。而且,本发明能被应用于将旅行与例如旅馆留宿或者车辆租用等相关产品相结合的定价产品;因为在这个市场上从大量可能的组合中选择低价产品是很重要的.而且,本发明也能够应用于非乘客的旅行,因为包裹的选定路线和递送可以从最佳费用搜索中获益从而以最低成本来增加包裹的有效递送.图2图解说明响应由客户设备210的用户进行的查询用于确定最佳费用的系统 200的功能框图。系统200通常运行在包括在网络上(例如因特网100)相互连接的个人计算机的分布式计算环境中。然而,熟悉本技术领域一般技能的人应该理解,系统200能够同样可以作为单独的一个计算机系统作用。在所描述的实施例中,预处理服务器300、文件服务器240和查询服务器400在像因特网100这样的互联网络或者内联网上与一个或者多个客户设备210、万维网服务器220和旅行服务器230互相连接.预处理服务器300和查询服务器400分别参考图3和4将在下面进一步描述.系统200还包括一个或者多个到CRS 250的连接,如上述所提到的,它是用于提供运输服务的最新费用、时间表和可用信息的系统/服务.熟悉本技术领域一般技能的人应该理解,在举例的系统200中可以使用更多或者更少的设备。例如,如果查询服务器400直接从CRS 250接收信息的话,则文件服务器 240就不是必须的.还比如另一个实例,如果装备查询服务器400或者文件服务器240来局部地预处理费用信息,则预处理服务器300可以不是必须的。图3描述了预处理服务器300的一些关键组成部分.熟悉本技术领域一般技能的人应该理解,预处理服务器300可以包括比在图3中所示的处理器更多的组成部分。然而, 为了公开用于实行本发明的说明性实施例,不需更全部显示这些常规的组成部分.如图3 中所示,预处理服务器300包括用于连接因特网100的网络接口 330.熟悉本技术领域一般技能的人应该理解,网络接口 330包括用于这种连接的必要的电路,并且还被构造成用于使用TCP/IP协议或者像因特网Inter-ORB协议(“ΙΙ0Ρ”)这样的下一代协议。预处理服务器300还包括通过总线320连同网络接口 330全部相互连接的处理装置310,显示器340和存储器350.存储器350 —般包括随机存取存储器(“RAM”)、只读存储器(“ROM”)和像磁盘驱动器这样的永久性大容量存储设备。存储器350存储依据本发明使用费用记录最优化例程500预处理费用记录所必需的程序代码。另外,存储器350还存储被称作费用索引360的可选择临时费用记录和操作系统355。应该理解,这些软件组成部分可以使用与例如软盘、磁带或者DVD/CD-R0M这样的计算机可读介质相关联的驱动机构(没有显示)或者通过网络接口 330从计算机可读介质中加载到预处理服务器300的存储器350中·尽管举例的预处理服务器300已经被描述为通常是常规的通用计算设备,但是, 熟悉本技术领域一般技能的人应该理解,预处理服务器300可以是能够与因特网100或者查询服务器400相通信的众多设备中的任何一个.图4描述查询服务器400的一些关键组成部分。熟悉本技术领域一般技能的人应该理解,查询服务器400包括比在图4中所示的那些更多的组成部分.然而,为了公开用于实行本发明的说明性实施例,不需要显示全部这些常规的组成部分.如图4中所示,查询服务器400通过网络接口 430被连接到因特网100。熟悉本技术领域一般技能的人应该理解, 网络接口 430包括用于将查询服务器400连接到因特网100所必须的电路,而且还被构造成用于使用TCP/IP协议或者像IIOP这样的下一代协议,将其包含在内的操作环境的特定网络配置和特定类型的耦合媒介。查询服务器400还包括通过总线420连同网络接口 430全部互相连接的处理装置410、显示器440和大容量存储器450。存储器450通常包括RAM、ROM和一个或者多个永久性大容量存储设备,例如硬盘驱动器、磁带驱动器、光驱动器、硬盘驱动器或者它们的组合.大容量存储器450存储为接收、处理、格式化和发送信息以及依据本发明将处理结果提供给发送器所必需的程序代码和数据。更具体说,存储器450存储最小成本矩阵 (“MCM”) 465,它被用于以可更容易存取的矩阵格式来存储在旅行点(起点和终点)之间预先计算好的最小成本费用以便于在给定起点和终点的情况下能在它们之间找到最小的旅行成本.另外,存储器450存储费用、时间表和规则数据库(“FSR”)470,优先级队列475 和操作系统455. FSR是如下面结合图5所描述的已经被预处理的优化的费用、时间表和规则记录的集合。费用记录提供例如各种旅行的起点、终点、日期、时间和价格等详细的旅行信息,但不局限于这些信息.规则记录提供可能与特殊费用相关联的不同规则(比如费用必须预先14天支付,如果旅行通过Denver (丹佛)则费用不适用等)以便于更加具体地规定费用何时有效和如何使用该费用。时间表记录是更一般的记录,它规定由运输公司提供的定期旅行路线。另一方面,优先级队列475专用于存储关于可能的最佳费用的信息,使得从优先级队列475中删除(出队)的下一条信息是最低成本项目.应该理解,前述的软件组成部分可以使用与像软盘、磁带或者DVD/CD-R0M驱动器这样的计算机可读介质相关联的驱动机构(没有显示)或者通过网络接口 430从计算机可读介质中加载到查询服务器400的大容量存储器450中.尽管举例的查询服务器300已经被描述为通常是常规的通用计算设备,但是,熟悉本技术领域一般技能的人应该理解,查询服务器300可以是能够通过因特网100通信的众多设备中的任何一个.如下面将详细描述的,查询服务器400定期接收来自预处理服务器300的最优化费用、时间表和规则记录.然后查询服务器400利用最优化费用、时间表和规则记录来确定可用的最佳费用从而响应为了运输预定或者买票所进行的查询.用于优化费用、时间表和记录规则的预处理例行程序500在图5中详细显示.预处理例行程序500逻辑在方框 501中开始并且进行到方框505,在那里从CRS 250或者文件服务器240接收原始费用、时间表和规则记录.原始费用、时间表和规则记录通常是由CRS 250以用于费用和规则记录的航空价目公布公司(“ATPCO,Airline Tarift Publishing Company”)格式和用于时间表记录的标准时间表信息手册(“SSIM, Standard Schedules Information Manual”)格式发送的,两者都是基于文本的。通过使得记录更有效地被处理来增强这些格式是很有用的.例如,在方框510中,分别检查记录并且从记录中删除任何不必要的信息或者字段.当 CRS 250将记录提供给许多不同类型的服务器的时候,它可能在记录中提供了对于确定最佳费用所不需要的信息,例如飞行中膳食数据、费用价格的来源,或者提供确定费用所不需要的其他信息.在记录被剥去了不必要的信息后,如在方框515中所示,在处理服务器300 中的费用索引360中存储中间记录。然后在方框520中,例行程序500检查被剥离过的中间记录,寻找对存储在费用索引360中的任意其他中间记录的链接引用.例如,在一个举例的实施例中,从CRS 250接收的费用记录具有一个或者多个可以应用于费用的规则记录的描述。在后面的处理中如果每个费用记录不必搜索包含着可以应用于该费用记录的被描述的规则记录,则这将是非常快并且更有效的.通过生成到被链接记录的明确链接(指针、引用或者其他的对被链接记录的位置的直接映射),在后面的处理中就没必要搜索被链接的记录。因此方框520找出并标识这些关联(链接),并通过更新费用索引360指示他们是在哪里被发现的。重复方框510、515和520,直到从CRS 250接收的每个记录都被处理并且在判定块525中确定已经达到最后记录。因此,检查、剥离每个从CRS 250接收的原始费用记录并且存储其链接作为在费用索引360中的中间记录.在从CRS 250接收的全部原始费用记录如上所述被处理以后,在从费用索引360 中检索中间记录的方框530中继续优化.然后,在方框535中,通过首先将已经被识为具有链接的记录链接到至少一个其他记录,分别处理每一个中间记录.然后存储这些新链接的记录作为中间记录,形成进一步优化的具有到相关记录的明确链接的费用记录。接着在方框540中,为当前中间记录预先计算一些值。例如,费用记录将增加一个它们所能链接的全部规则记录的列表。这样就消除去一些与费用可能从不会与之链接的记录相关的运行时间的链接处理,另外,也预先计算好每个旅行方向的美元成本(也就是往返行程费用的一半的费用水平)以便使得单程和往返行程更直接地相比较。在方框540中预先计算好对应于机场代码的城市代码(三字母缩写或者“TLA,Three Letter Acronyms”)也是很有用的。然后方框545对记录中的值进行重编码,以便将来更容易地处理该记录.例如,日期记录被重编码为由始于某固定基期的天数而不是年月日格式(YYDDMM)来表示.这样做是考虑到,作为整数,而不是在其上进行计算以前首先必须被转换的字符串,日期更容易进行比较。然后在方框550中该记录被存储为FSR 470中的一个优化的费用记录,用于后来作为费用记录、 规则记录或者时间表记录被查询.通过方框535、540、545和550重复这个处理,直到判定块555确定已经处理了来自费用索引360的最后一个中间记录。然后在方框560中,检查存储在FSR 470中的被优化的费用记录,寻找在任意起点和终点之间最低的成本费用.然后在MCM 465中存储这些最低成本费用,以供以后由查询服务器400确定最佳费用使用.然后在方框599中终止处理。预处理例行程序500当有新费用、规则和时间记录可用时定期运行。一般,可以通过文件服务器240从CRS 250中检索费用、规则和时间记录,以便预处理服务器300更容易访问.或者按预定时间间隔,或者在从文件服务器240或者CRS 250接收到一些新纪录可用的指示以后,预处理服务器将从文件服务器240或者CRS 250检索记录并且运行预处理例行程序500。一旦FSR 470包含了被优化的记录并且已经建立了 MCM465,就有可能利用由查询服务器400执行的最佳费用例行程序700(如图6-12中所图解说明的)来查找最佳费用。 查找最佳费用的问题是不容易进行这种类型问题的比较.为了保证给定的最佳费用,必须将该费用与全部其他可能的费用解相比较.这样做将明确地需要全部可能的替代解的全部列举,这将使计算能力不能承受.因此,本发明隐性比较可能的费用解和全部其他可能的解,导致只是部分列举全部可能的替代方案,因此避免了 NP时间问题.在现有的在线航班预订系统中,如图14中所示,使用显性列举可能的解来确定最佳的可用费用.所有可能的解都组织在具有一个表示用户的费用查询的根节点1405的解法树1400中.然而,在这一点,没有其他的节点被增加到解法树1400上.然后生成随后的节点并且将其增加到表示“部分解”的解法树1400上,在部分解中已经增加了一些旅行信息(例如在本发明中所用的旅行信息类型限制点、运输公司、航班和费用,或者描述飞行的任何其他信息),同时剩余的旅行信息还需被指定.一旦确定费用所需的全部旅行信息已经被指定,则解被认为完成了。在树的每一级上,新增一种类型的旅行信息增加到新的唯一部分解上来生成中间节点,直到已经增加了足够的信息而形成完整的解(叶节点).例如,在第I级,指定一个限制点1410(沿着行程的任意停止点,用于计算费用),限制点将费用组成部分确定为两个限制点之间的旅行段.在第2级,指定运输公司1415给在限制点之间的费用组成部分.然后,在第3级,指定航班1400给已被指定运输公司的费用组成部分.轮到第4级,将航班分配到定价单位1425中。定价单位可以包括一组一个或者多个费用组成部分,运输公司给该组指定单一价格.最后在第5级,将费用(包括税和某些改变) 指定给定价单位.只有被称作树“叶”的最终节点(第5级)表示“完整的”解1430,这也意味着已经将全部旅行信息增加到解上。在如图14中所示的小解法树1400中,只有32个可能的叶节点,显性列举全部解是不会使计算能力不堪负荷。然而,在具有多于600个机场(如果包括国际,是10000个)、 多于40个运输公司的现实生活实例中,其中的每一个运输公司在任意两个机场之间可能有多于一个的航班,多航班有多种定价单位组合,更不用提无数的规则、附加费用和需要被考虑的其他因素,如果使用明确的列举技术,则部分解的数目迅速使计算能力不能承受。在理解本发明是如何在例如航空运输环境这样的举例的环境中只利用可能解的隐式列举而不是显性列举就能够找到最佳费用的时候,理解用于描述和划分可能的解的旅行信息是很有帮助的.图13A表示从点A 1310的起点到点B 1330的终点的单程旅行.这个飞行的限制点(例如沿着路线的任意点,包括起点和终点的)位于点A 1310、C 1320和 B 1330.点D 1315也许会感兴趣,因为它也可能是机场,但不被当作用于确定运输公司、航班或者费用的限制点.它只是中途停留的点.图13A中的旅行行程由两个费用组成,在具确航班号“MA#100” 1335的在起点A和限制点C之间并在点D 1315中途停留的第一个航班;和在限制点C和终点B之间具有航班号“HA#200” 1340的第二个直飞航班.对于本发明,这次行程的成本由其间的航班费用的总和加上从点A 1310到点B1330需要的实际时间组成.组合可以被加权以便使价格或者总旅行时间更为重要.熟悉本技术领域一般技能的人应该理解,可以使用任意数目的加权或者排序方案来用价格和旅行时间(可能包括或者不包括停留时间)确定成本.还可以利用替代价格和旅行时间或附加于价格和旅行时间的其他信息.例如,还可以考虑运输公司的可靠性和/或者信誉。当确定用于行程的费用的时候,通常要确定对费用应用什么类型的定价单位.大多数定价单位属于三类范畴中的一个单程旅行、往返旅行或者开放式(open jaw)。图13C 提供了用于图解说明所述区别的简单示例.从13J通过13K到13L并且返回到13J的行程能够被组合成许多可能的定价单位组合.例如,在其最简单的形式中,它是一个从13J到 13L的往返旅行,其中在往返旅行的出境旅程中在13K中途停留.它还可以是一组三个单程行程,其中每一个费用组成部分1380、1385和1390是单程定价单位。另一组是所谓的开放式(open jaw)飞行,其中出境旅程的起点和行程的任意随后的旅程不需要是相同的(但也可以是相同的)·在一个这样的示例中,费用组成部分1380和1385可以是开放式定价单位的一部分,费用组成部分1390将是单程定价单位.单程飞行能够包括一个或者多个费用组成部分.一般,往返飞行和开放式飞行比单程飞行便宜,因此当设法减小旅行成本的时候将飞行组合为这些类型的定价单位是非常有益的。即使从如图13C中图解说明的简单示例中,也能够看出,使用许多限制点和只有三种类型的定价单位,将被增加到解法树1400上的可能的排列也将很快使显性列举解变得不实际.本发明不显性列举例如解法树1400这样的解法树中的每个节点.相反的,在任意节点处,判断有无子节点可能包含最佳解.这样做的一种方式是通过阈值来实现的。如果部分解的成本已经被确定为超过该阈值则具有该部分解的节点和其全部子节点在解法树 1500中被推迟考虑。如果阈值被改变,则可能在以后的时间点重新访问该节点,但最初并不考虑它.可以结合本发明的分支定界(branch-and-bound)技术来使用这个处理方法.依据本发明,利用分支定界技术通过解出由查询产生的部分解序列来搜索最佳费用。例如,生成第一级的新的部分解作为解法树1500的节点,使得部分解只受旅行必须通过哪些限制点所约束,这样形成了能够用较少的计算更容易解决的简单问题.分支将程序分成两个子问题而定界计算用于每个子问题的下界(当前最佳情况)。如果用于子问题的下界不好于阈值成本,则推迟整个子问题(可能解)直到阈值增加(如果有的话).这里将分支定界处理作为一棵树来讨论,其中树中的每个节点表示一个子问题(部分解)。最初, 用表示松弛问题(relaxed problem)的单个根节点来初始化树,在松弛问题中树的非根节点中的全部变量被松弛并且被根节点中的松弛变量所替代.在分支定界搜索的每个阶段, 选择一个活动节点并且解决相关的松弛问题.依靠这些解,进行下列三个操作之一□延迟如果松弛问题具有比当前最佳可行目标值更差的解,则延迟处理该节点·□改进如果解是这样的以至于对于每个节点其成本将低于先前的下界,则更新下界.□分支如果松弛解不完全并且如果它的估计值优于当前最佳可行解,则在一些节点上分支。能够忽略被延迟节点以下的部分解直到阈值成本改变的原因是,在通过预处理服务器300优化费用、时间表和规则记录的期间已经确定了许多可行的解并且被放置在 MCM465中。如果在MCM465中的可行解是有效的并且比在该节点中的部分解有更低的成本(基于任何所用的成本标准,例如,价格、时间等),则当MCM465具有比来自那个节点的任意解更好的解的时候不用考虑那个节点或者其子节点。因此,这不是逼近最优解的探试法.而是一个找到最优解的精确的优化过程。换句话说,在上述的描述中,目的是找到具有最小成本的一组解。依据本发明,如先前所述在预处理阶段期间通过生成MCM 465首先找到可行解.利用MCM 465中的信息,树上的任何不能得到比最佳的先前解更好的解的节点被安全地延迟处理.因此,接下来所需的是当完成中间节点处部分解的时候计算费用值“下界”的方式.下界的这一查找是一个重复(也许是迭代或者递归)过程,其中当比较并且接收或者拒绝潜在提供最佳费用的可能解的时候连续改进下界.如果删除了一个以前的最便宜的解(例如,是无效费用,那天没有可用的航班,或者因为没有足够的连接时间运输公司不将一个费用组成部分与另一个费用组成部分相结合),则下一个最便宜的费用将变成下界。以这样的方式能够系统地忽略只提供更高费用解的可能解,除非(直到)下界再次改变.如前述所讨论的,部分解是解法树1500中中间节点1510、1515、1520和1525(在第1-4级)的另一个名称.与没有增加旅行信息的初始部分解(根节点)1505相比较,在解法树1500的第5级中找到的完全解(叶节点)1530具有包括费用信息在内的全部必须的旅行信息.在一个最佳费用处理(结合图6-12在下面更详细地描述)的举例操作中,依据随机的阈值来划分(如在图15中分支节点中所能够看到的)部分解(解法树节点).在一个举例的实施方式中阈值成本在$100和一小时开始,但是可以使用任何其他的数额,只要它与可能由MCM 465确定的预期旅行费用有关.利用MCM 465来评估每个部分解以便于确定它是否能够可行地提供低于阈值成本的完全解.如果能,则增加其他信息(例如,划分当前节点并且在新的级别上增加节点)并且依次评估那些新的部分解.如果不能,则不处理部分解(例如,在节点1590中被延迟),并且继续处理直到找到足够多的完全解或者处理超时.如果没有找到足够多的完全解,还有时间,且有一些部分解未被评估,则增加阈值成本,用较高的阈值重新访问未评估的节点.在一个举例的实施方式中阈值成本增加到半个小时$50,但也可以使用任何其他的数额,只要它与可能由MCM465确定的预期的旅行费用有关.继续这样的方式直到已经找到了足够多的完全解(例如,足够多的叶节点,可以是任意预先指定的数目,图17A-C的举例的网页提供了给出总共9个可能的完全解的两组三条行程),解被取尽,或者处理时间超时。在该点,将任意完全解(直到任意数目)提供给用户 (最优解通常首先出现)。为了更好的图解说明查找最佳费用的操作,图6图解说明了一个通过用于查找最佳费用的系统所完成的操作的示范性实施例。尽管下面使用航空运输来描述本发明的说明性应用,但是熟悉本技术领域一般技能的人应该理解,本发明可以同等地应用到其他形式的运输上.图6的系统包括客户设备210,万维网服务器220,旅行服务器230,查询服务器 400和CRS 250。后面将参考图7-13图解说明并且详细描述各种设备的相互作用和由其完成的例行程序.回到图6中,当客户设备210通过网页1600(例如在图16中图解说明的网页1600)查询用于一个特定旅行的费用605的时候,由查询服务器400启动最佳费用处理.费用查询通过万维网服务器220和旅行服务器330到达查询服务器400. —旦查询服务器接收到费用查询,则查询服务器400实质上建立一个用于该查询的解法树1500(例如图 15中所示)。更具体说,确定用于可能解的费用限制点并且指定610给部分解.然后,查询服务器400将可能的运输公司615指定给由限制点确定的费用组成部分(费用组成部分是两个限制点之间的部分).接着,航班被指定620给已指定了运输公司的费用组成部分.同时,查询服务器400还检查来自CRS 250的航班可行性625. CRS 250以航班可行性数据630 作出响应,此后查询服务器检查重复的航班.这样防止以更高的价格列出相同的行程然后查询服务器400取已分配了航班的费用组成部分并将它们组合为635定价单位.然后为这些定价单位指定费用640及规则、税和/或者附加费用.然后删除645任何重复的解(同样的飞行,但是具有相同或更高的价格).然后审查剩余解来选择最佳解650,将费用通过
13旅行服务器230和万维网服务器220转送到客户设备210.在图17A-C中图解说明了示范性费用显示网页1710、1720和1730.下面结合图7详细描述在查询服务器400上处理的细节·熟悉本技术领域一般技能的人应该理解,图6的组成部分可以被替换而实质上不会影响本发明的操作.例如,查询服务器400和旅行服务器230和/或万维网服务器220 可以同时存在于相同的计算设备上而不会损害本发明.如图2、4和6中所图解说明的,本发明包括用于确定由客户设备210要求的最佳费用的查询服务器400.在图7中显示了依据一个本发明的实际实施例图解说明通过查询服务器400完成的最佳费用例行程序700来确定最佳可用费用的流程图。最佳费用例行程序700在方框701中开始并且进行到接收费用查询的方框705。查询能够来自许多来源,例如第三方旅行服务器或者运输公司,但为了举例的目的,本发明的一个实施例的查询是从使用客户设备210的消费者转送来的。接下来在子程序方框800中使用查询中的信息(下面将结合图8详细的描述)来将费用限制点增加到部分解中并且将低于阈值成本的部分解增加到存储在优先级队列475中的解法树1500上.逻辑继续到子程序方框900 (下面将结合图9详细描述),其中如果它们形成低于阈值成本的部分解,则为在方框800中找到的限制点所确定的费用组成部分指定运输公司.将这些运输公司指定增加到优先级队列475中的部分解上.一旦已经指定了运输公司,则处理进行到子程序方框1000(下面用图10来详细描述),其中将航班指定到已分配了运输公司且会形成低于阈值成本的部分解的费用组成部分。这些航班指定更新了存储在优先级队列475中的解法树1500的部分解.接着,在子程序方框1100(结合图11来详细描述)中如果所得结果的部分解低于阈值成本,则将已指定了航班的费用组成部分组合为定价单位.然后利用这些定价单位来更新优先级队列 475中的部分解.因此在子程序方框1200(下面将结合图12来描述)中可以将费用指定给在所得部分解将低于阈值成本的定价单位.还将用这些指定来更新在优先级队列475中的部分解.处理将进行到在其中删除具有相同旅行信息(费用信息除外)的部分解的方框 710.提供相同行程但是具有相同或者更高费用的费用数据是不必要的.然后在判定块715 中判断是否已经到达结束情况(例如,一组预定的完全解、已穷举全部可能性或者处理已经超出预定的时间限制).如果在判定块715中确定没有达到结束情况,则处理进行到在其中将阈值成本增加任意选择的预定数量并且处理过程返回到子程序方框800的方框725。 如果在判定块715中确定已经达到了结束情况,则处理过程进行到方框720,其中最低成本解(每一个都包括具有一个或者多个定价单位和相关费用的完整的旅行描述)从优先级队列中出队并且随同用于最低成本解的旅行描述一起,通过检索(和总计)来自每个最低成本解的总费用价格来生成对于费用查询的响应。然后格式化最终的价格和旅行描述(例如在图17A-C的网页1710、1720和1730中)并且发送到请求设备。例行程序700在方框799
T 彡口 ·如上所述,在图8-12中描述了许多子程序.每个子程序划分并且增加更多的信息到可能解的解法树1500上。在详细讨论子程序以前,分别考虑在图14和15中图解说明的两个解法树1400和1500是有帮助的.在图14中,随着在每一级将每条附加的旅行信息增加在解法树1400上,部分解的数目按指数规律增加.在这个现有技术实例中的每个附加层将先前的部分解划分成两个更多的部分解.然而,如将在下列子程序中所显示的,通过在建立树的时候延迟考虑节点的处理,生成了一个更易管理的解树1500.只有低于某些成本的解才被考虑而具有太高成本的那些解在阈值成本增加前不考虑(亦即“推达”)进一步处理.如图15中所示,处理过程以表示费用查询的根节点1505开始.这里,没有在解法树1500的任何其他节点上增加详细资料.在第I级,将具有费用限制点1510的部分解增加 (见图8)到解法树1500上,在举例的解法树1500中两个限制点都有低于阈值成本的部分解.在第2级,指定运输公司1515(见图9),但是四个部分解中只有三个满足阈值成本.接着,在第3级,将航班指定1520到已指定了运输公司的费用组成部分(见图10),六个部分解中只有三个满足阈值成本接下来,在第4级,将费用组成部分指定给定价单位1525 (见图 11),六个部分解中只有五个满足阈值成本.最后在第5级,将费用(包括税和一些改变) 指定到定价单位(见图12),十个部分解中只有七个满足阈值成本.只有第5级的节点表示一组完全解1530,所以不是如图14中有三十二个可能解,只有十个.从解法树1500中选择最低成本的完全解(叶节点)是个简单得多的任务。在本发明的一个实施例中通过将完全解存储在允许最低成本解最先出队的优先级队列475中来帮助选择。既然已经提供了通过图8-12和子程序800-1200建立延迟解法树1500的一般概述,下面将详细描述每个子程序800-1200和图8-12.以图8开始,子程序800在方框801开始并且进行到方框805,其中从MCM465检索新的限制点(数据中存在的任意机场可以被增加为限制点)并且被增加到解法树1500的第I级中新的唯一部分解上,使得新的部分解将不会超过阈值成本(在一个示范性实施例中,在调用例行程序中使用相同的阈值),限制点不与已经存在于另一个部分解中的限制点重复,一些运输公司公布自前一限制点的费用,提供自前一限制点的运输.为了本发明的讨论,将使用举例的解法树1500,然而,熟悉本技术领域一般技能的人应该理解,由本发明的实际实施例使用的解法树可以是相当复杂并且有可能包括比图15中图解说明的解法树 1500更多的级和/或节点.从优先级队列475检索在其中要增加限制点的任意先前部分解。使用在预处理的MCM465中的成本来确定潜在的新的唯一部分解的成本以便于确定最小的可行费用将是什么.更具体说,利用全部已知的旅行信息来计算部分解的成本,然后利用MCM 465来用最小成本的可行的旅行信息补足任何未知旅行信息.在方框805中这意味着只有用户查询和任意先前确定的限制点是已知旅行信息,所以MCM465将最小成本可行运输公司、航班、定价单位和费用信息提供给新的唯一可能解.随着将每条新的旅行信息增加到部分解上,部分解的成本将被细化,并且将有可能增加,因此如果增加的成本超出了阈值则不用考虑它.如果在判定块810中没有找到限制点,则处理过程继续到方框899,其中已经增加了限制点的任何部分解将被返回到调用程序.否则,如果找到了限制点,则在方框815中, 通过将限制点增加到在先前解中已存在的限制点上,甚至有可能增加终点作为最终限制点来生成新的唯一部分解,并将新的唯一限制点加到优先级队列475中。然后处理过程返回到方框805来搜索更多的可以增加限制点的部分解.利用子程序800来繁殖解法树1500的第I级。子程序800的重复调用(如果可能)将提供可能解(也就是一级节点),然后将利用它来建立解法树1500的下一级(也就是二级节点等).并不通过子程序800 —次建立全部的第I级,相反的,通过迭代和递归重复调用子程序800并且逐一增加低于当前阈值成本的可能解。然而,一旦已经完成了子程序800,则有可能已经增加了提供最佳费用的部分解,这样例行程序700将调用用于建立解法树1500的第2级的下一个子程序900。在图9中,通过增加从MCM 465检索的运输公司信息来在下一级上继续建立解法树1500。子程序900在方框901处开始并且进行到方框905,试图也用MCM 465找到一个要添加到一个费用组成部分上的、公布费用并在该费用组成部分上提供运输的运输公司, 以形成不超过阈值成本的部分解(在一个示范性实施例中,在调用程序中使用相同的阈值).从优先级队列475中检索已指定了限制点的部分解.利用预处理MCM 465中的成本确定潜在的新的唯一部分解的成本以便确定最小可行成本将是多少.更具体说,利用全部已知旅行信息计算新的部分解的成本,然后利用MCM465来用最小成本可行旅行信息补足未知旅行信息。在方框905中这意味着只有用户查询、限制点和先前指定的运输公司是已知旅行信息,所以MCM 465将最小成本可行航班、定价单位和费用信息提供给新的唯一部分解。随着每条新的旅行信息增加到部分解上,部分解的成本将被细化,并且将有可能增加, 因此如果增加的成本超过了阈值则不予以考虑.如果在方框905中没有找到这样的运输公司,处理过程继续到方框999,其中向调用程序(在这个实例中,是最佳费用例行程序700) 返回已经增加了运输公司的任何部分解。否则,如果找到了运输公司,则在方框915中通过将运输公司增加到从先前解中检索的费用组成部分上来生成新的唯一部分解并且将该部分解增加到存储在优先级队列475中的解法树1500上.然后处理过程返回到方框905来搜索更多的可以增加运输公司的部分解.类似于子程序800,利用子程序900来繁殖解法树1500的第2级.子程序900的重复调用(如果可用)将运输公司提供给可能解(也就是二级节点),然后将利用可能解来建立解法树1500的下一级(也就是三级节点等).子程序900被重复调用并且逐渐增加低于当前阈值成本的解.然而,一旦已经完成了子程序900,则有可能已经增加了提供最佳费用的部分解,然后例行程序700将调用用于建立解法树1500的第3级的下一个子程序 1000.图10继续通过将航班增加到指定的运输公司上来建立解法树1500.子程序1000 在方框1001处开始并且进行到方框1005,其中试图从FSR 470找到航班来增加到已被指定了运输公司的费用组成部分上以便形成将不超过阈值成本的部分解(在一个示范性实施例中,在调用程序中使用相同的阈值)。方框1005利用MCM465和FSR 470的时间表记录来确定哪个航班是最低成本的并且可以用于分配。从优先级队列475中检索已指定了运输公司的部分解.利用预处理MCM 465中的成本来确定潜在的新的唯一部分解的成本以便确定最小可行成本是多少.更具体说,利用全部已知的旅行信息计算新的部分解的成本并且通过利用MCM 465来用最小成本可行旅行信息补足任意未知旅行信息.在方框1005中,这意味着只有用户查询、限制点、运输公司和先前指定的航班是已知旅行信息,所以MCM 465将最小成本可行定价单位和费用信息提供给新的唯一部分解.随着每条新的旅行信息增加到部分解上,部分解的成本将被细化,并且将有可能增加,因此如果增加的成本超过了阈值则不予以考虑.如果在方框1005中没有找到航班,处理过程继续到方框1099,其中,任何已经增加了航班的部分解被返回到调用程序.否则,如果找到了航班,则在方框1015中通过将一个航班(从CRS 250中检索)增加到已指定了运输公司的费用组成部分上来生成新的唯一部分解并且将它增加到存储在优先级队列475中的解法树1500上.然后处理过程返回到方框1005来搜索更多的可以增加航班的部分解。类似于子程序800和900,利用子程序1000来繁殖解法树1500的第3级.子程序 1000的重复调用(如果可能)将航班提供到可能解(也就是3级节点),然后将利用它来建立解法树1500的下一级(也就是4级节点等).子程序1000被重复调用并且逐渐增加低于当前阈值成本的解.然而,一旦已经完成了子程序1000,则有可能已经增加了将提供最佳费用的部分解,然后例行程序700将调用用于建立解法树1500的第4级的下一个子程序 1100.图11继续通过将费用组成部分组合成定价单位来建立解法树1500.子程序1100 在方框1101处开始并且进行到方框1105,其中试图找到已经指定了航班但是仍然没有确定定价单位(从FSR 470中检索)的不超过阈值成本的部分解(在一个示范性实施例中, 在调用程序中使用相同的阈值)。方框1105利用FSR 470来确定哪个定价单位可用于确定.从优先级队列475中检索已指定了航班的部分解。利用预处理MCM465中的成本来确定潜在的新的唯一部分解的成本以便确定最小可行成本是多少.更具体说,利用全部已知的旅行信息计算新的部分解的成本并且通过利用MCM465来以最小成本可行旅行信息补足任意未知旅行信息。在方框1105中,这意味着用户查询、限制点、运输公司和航班是已知旅行信息,所以MCM 465将最小成本可行费用信息提供给新的唯一部分解,而FSR 470将实际的定价单位信息提供给新的唯一部分解.随着每条新的旅行信息增加到部分解上,部分解的成本将被细化,并且将有可能增加,因此如果增加的成本超过了阈值则不予以考虑.如果在方框1105中没有找到尚需定义定价单位的低于阈值成本的部分解,则处理过程继续到方框1199,其中,已经确定了定价单位的部分解被返回到调用程序。否则,如果找到了满足标准的部分解,则通过将费用组成部分组合成部分解仍然低于阈值成本的定价单位的全部可能组合,来生成新的唯一部分解。然后增加这些新的部分解并且将其增加到优选队列 475中。然后处理过程返回到方框1105来搜索更多的仍然没有确定定价单位的部分解。类似于子程序800、900和1000,利用子程序1100来繁殖解法树1500的第4级。 子程序1100的重复调用(如果可能)将为可能解(也就是4级节点)提供定价单位,然后将利用可能解来建立解法树1500的下一级(也就是第5级节点)。子程序1100被重复调用并且逐渐增加低于当前阈值成本的可能解.然而,一旦已经完成了子程序1100,则有可能已经增加了将提供最佳费用的部分解,所以例行程序700然后将调用用于建立解法树 1500的第5级的下一个子程序1200.图12通过将费用指定到部分解上来将最终旅行信息增加到解法树1500的符合条件的部分解上,由此生成完全解(解法树1500中的叶节点)。子程序1200在方框1201处开始并且进行到方框1205,其中试图找到要添加到已确定了定价单位并会形成不超过阈值成本的完全解的部分解上的费用(在一个示范性实施例中,在调用程序中使用相同的阈值)。 方框1205利用MCM465和FSR 470来确定哪个费用是最低成本并且可供指定。从优先级队列475中检索已指定了定价单位的部分解。更具体说,利用全部已知的旅行信息计算新的部分解的成本并且通过利用MCM465和FSR 470来分别用定价单位的可行或者实际费用补足任何未知旅行信息.在方框1205中,这意味着用户查询、限制点、运输公司、航班和定价单位是已知旅行信息,所以FSR 470将最小实际费用信息提供给新的唯一部分解,但是如果不得不将全部费用都指定给一个旅行,则MCM 465同样将提供可行的费用.随着每条新的旅行信息增加到部分解上,部分解的成本将被细化,并且将有可能增加,因此如果增加的成本超过了阈值则不予以考虑.接着,判定块确定是否找到了费用。如果在判定块1210中没有找到费用,则处理过程继续到方框1299,其中,已经添加了费用的完全解被返回到调用程序。在这一点,最佳费用例行程序700必须确定是否已经达到结束条件(足够多的完全解,穷尽全部可能解或者超时)。否则,如果在判定块1210中找到了费用,则通过在方框1215中增加还没有为其指定费用的费用(从FSR 470中检索)来生成新的部分解并且将其增加到优先级队列475 中.接着在方框1220中应用从FSR 470中检索的费用规则来确定是否价格变动需要应用或者费用是否是无效的。处理过程继续到判定块1225,其中判断在方框1215中指定给新的部分解的费用是否是无效费用.如果在判定块1225中已经确定了新的部分解包含无效费用,则放弃这个新的部分解并且从优先级队列475中删除。然后处理过程返回到方框1205 来搜索更多的可以添加费用的任何更多的部分解.如果在判定块1225中已经确定它不包含无效费用,则处理返回到方框1205来搜索更多的可以添加费用的部分解。类似于子程序800、900、1000和1100,利用子程序1200来繁殖解法树1500的第 5级。然而,不像子程序800、900、1000和1100,子程序1200的重复调用(如果可能)将提供用于建立解法树1500的最后级别的完全解。子程序1200被重复调用并且逐渐增加低于当前阈值成本的完全解.一旦已经完成了子程序1200,则可以确定在例行程序700中是否已经满足了结束条件.理想的是在例行程序700中将会确定已经找到了足够多的完全解, 在这样的情况下不再需要调用子程序800、900、1000、1100或者1200,并且已经找到最佳费用(或者在很少有的情况下,由于超时而没有找到费用或者只有有限个费用).从对图7-12中子程序的上述讨论中能够看出,以相同的方式来处理每次旅行信息的增加。每个子程序生成新的部分解(在子程序1200的情况中生成完全解),随着它们的生成,部分解被增加到优先级队列475中的解法树1500上.通过在优先级队列475中放置这些解,当后来为了作为包含的可能最低成本解而检查它们的时候,首先只检查最有可能的最佳费用的候选解,因为优先级队列475被设计成最低成本首先出队的方式来提供可能解.此外,假设没有中断最佳费用例行程序700,将不会从优先级队列中去掉部分解.具体说,如果尝试了旅行信息的全部可能的组合,则全部节点将是完全解.另一方面,如果在判定块715中找到了足够数量的完全解,则通过从优先级队列中去除这些数目的完全解, 应当没有被除去的部分解,因为完全解必须有更低成本(已经达到阈值,而部分解没有), 并且有足够数目的完全解。重要的是注意到最佳费用例行程序700是本发明的一个可能的最佳费用例行程序,在本发明的另一个示范性实施例中,可以向前或者向后考查解法树中的可能解。图 13B图解说明在旅行的假想的“中间” 1355两侧的一些“向前限制点” 13A-E和“向后限制点”13V-Z。在这个实施例中,通过考查来自起点(向前)的航班和来自终点(向后)的航班来建立解法树1500,并且一旦确定了分别用于向前部分和向后部分的可能的部分解,则将其组合成部分解1360和1370。能够在最佳费用例行程序的每一级上应用这样的向前和向后划分,使得当划分并且增加部分解的时候图7-12将包括向前检查和向后检查.这种 “向前和向后”处理的一个好处是将查找解的问题进一步分解成了更小的问题,以便于更加适合递归和/或并行处理.特别是,在本发明的一个实际实施例中,这样的分解允许在个人计算机上而不是在更加昂贵的大型计算机上来运行最佳费用例行程序。尽管已经图解说明和描述了本发明的优选实施例,但是应该理解,在其中能够进行各种改变而不会与本发明的精神和范围相分离。
权利要求
1.在包括与数据库通信的客户计算机和查询服务器计算机的通信网络中,响应从客户计算机接收到的费用查询,由查询服务器计算机执行的用于为一次旅行查找至少一个最佳费用的方法,该方法包括从数据库检索一个或者多个旅行的记录;确定从数据库检索出的记录中选择的起点和终点之间的最低成本费用;确定该旅行的一组部分费用解;将旅行信息增加到部分费用解上以便确定该旅行的一组完全费用解;随着将旅行信息添加到部分费用解上,延迟非最佳部分解的部分费用解,其中至少部分地使用所确定的最低成本费用来确定非最佳部分费用解;和返回所述完全费用解的一个子集作为该旅行的最佳费用。
2.权利要求I的方法,其中旅行信息的添加包括将费用查询提供给解法树中的根节点;将对应于所述根节点的费用组成部分指定给多个一级节点;将对应于所述一级节点的至少一个运输公司指定给多个二级节点;将对应于所述二级节点的至少一个航班指定给多个三级节点;将对应于上述三级节点的至少一个定价单位指定给多个四级节点;和将对应于上述四级节点的至少一个费用指定给多个叶节点。
3.权利要求I的方法,其中上述完全费用解的子集是预定数目的最低成本费用解。
4.权利要求I的方法,其中上述完全费用解的子集是上述完全费用解的完备集。
5.权利要求I的方法,其中以递归的方式执行旅行信息的添加和部分费用解的延迟。
6.权利要求I的方法,其中以迭代的方式执行旅行信息的添加和部分费用解的延迟。
7.权利要求I的方法,其中根据阈值成本来延迟所述部分费用解。
8.权利要求I的方法,其中根据细化的下界来延迟所述部分费用解。
9.权利要求I的方法,其中所述部分费用解被存储在优先级队列中。
10.权利要求I的方法,其中从优先级队列中检索所述部分费用解。
11.权利要求I的方法,其中,作为分支定界最佳费用搜索例行程序的一部分执行旅行信息的添加和部分费用解的延迟。
12.权利要求I的方法,其中从终点和起点向后和向前执行旅行信息的添加和部分费用解的延迟。
13.一种用于在通信网络中响应来自客户设备的费用查询请求而为一次旅行查找至少一个最佳费用的查询服务器设备,该设备包括从数据库检索一个或者多个旅行的记录的装置;确定从数据库检索出的记录中选择的起点和终点之间的最低成本费用的装置;确定该旅行的一组部分费用解的装置;将旅行信息增加到部分费用解以便确定该旅行的一组完全费用解的装置;随着将旅行信息添加到部分费用解,延迟作为非最佳部分解的部分费用解,其中至少部分地使用所确定的最低成本费用来确定非最佳部分费用解的装置;和返回所述完全费用解的子集作为用于旅行的最佳费用的装置。
14.权利要求13的设备,其中旅行信息的添加的装置包括将费用查询提供给解法树中的根节点的装置;将对应于所述根节点的费用组成部分指定给多个一级节点的装置;将对应于所述一级节点的至少一个运输公司指定给多个二级节点的装置;将对应于所述二级节点的至少一个航班指定给多个三级节点的装置;将对应于所述三级节点的至少一个定价单位指定给多个四级节点的装置;和将对应于所述四级节点的至少一个费用指定给多个叶节点的装置。
15.权利要求13的设备,其中所述完全费用解的子集是预定数目的最低成本费用解。的设备,其中所述完全费用解的子集是最低成本费用解的完备数。 的设备,其中进一步包括以递归的方式执行旅行信息的添加和部分费
16.权利要求13
17.权利更求13 用解的延迟的装置。
18.权利要求13 用解的延迟的装置。
19.权利要求13的设备,其中进一步包括以迭代的方式执行旅行信息的添加和部分费的设备,其中进一步包括根据阈值成本来延迟所述部分费用解的装
20.权利要求13的设备,其中进一步包括根据细化的下界来延迟所述部分费用解的装
21.权利要求13
22.权利要求13
23.权利要求13的设备,其中所述部分费用解被存储在优先级队列中。的设备,其中从优先级队列中检索所述部分费用解。的设备,其中,进一步包括作为分支定界最佳费用搜索例行程序的一部分,执行旅行信息的添加和部分费用解的延迟的装置。
24.权利要求13的设备,其中进一步包括从终点和起点向后和向前执行旅行信息的添加和部分费用解的延迟的装置。
全文摘要
本发明提供一种方法、装置和系统,用于处理费用查询来找出最佳费用。在本发明的一个实施例中,查询服务器使用一种基于分支和定界的技术来隐性列举可能的解以达到最佳费用解。
文档编号G06Q50/00GK102592179SQ201110368759
公开日2012年7月18日 申请日期2002年3月27日 优先权日2001年4月2日
发明者阿瑟·F·钱伯瑙恩 申请人:艾克斯佩迪亚公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1