CN111325379A - 航路计算方法及系统 - Google Patents
航路计算方法及系统 Download PDFInfo
- Publication number
- CN111325379A CN111325379A CN201811543329.7A CN201811543329A CN111325379A CN 111325379 A CN111325379 A CN 111325379A CN 201811543329 A CN201811543329 A CN 201811543329A CN 111325379 A CN111325379 A CN 111325379A
- Authority
- CN
- China
- Prior art keywords
- route
- mileage
- data
- airway
- flight combination
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 68
- 238000012795 verification Methods 0.000 claims abstract description 57
- 238000000034 method Methods 0.000 claims abstract description 23
- 238000010200 validation analysis Methods 0.000 claims abstract description 18
- 230000004044 response Effects 0.000 abstract description 4
- 238000001914 filtration Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 102100028247 Abl interactor 1 Human genes 0.000 description 1
- 108050004693 Abl interactor 1 Proteins 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/04—Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
- G06Q10/047—Optimisation of routes or paths, e.g. travelling salesman problem
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/08—Logistics, e.g. warehousing, loading or distribution; Inventory or stock management
- G06Q10/083—Shipping
- G06Q10/0834—Choice of carriers
- G06Q10/08345—Pricing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/08—Logistics, e.g. warehousing, loading or distribution; Inventory or stock management
- G06Q10/083—Shipping
- G06Q10/0835—Relationships between shipper or supplier and carriers
- G06Q10/08355—Routing methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
- G06Q50/14—Travel agencies
-
- G06Q50/40—
Abstract
本发明公开了一种航路计算方法及系统,所述航路计算方法包括以下步骤:获取行程查询请求;所述行程查询请求包括行程端点;根据所述行程端点和全量航线数据确定航班组合和可用运价;根据所述可用运价的属性值确定所述航班组合的验证规则;输出符合所述验证规则的航班组合。本发明根据ATPCO数据中的行程运价和航路数据,准确、高效的实现航路计算,且优化了航班组合与航路数据匹配算法,逐步减枝,降低了算法时间复杂度,耗时和计算次数占比都较低,航路计算平均响应时间控制在纳秒级,效率大大提高。
Description
技术领域
本发明涉及机票的航路计算技术领域,特别涉及一种基于ATPCO(Airline TariffPublishing Company,是全球航线运价数据供应商)数据的国际机票的航路计算方法及系统。
背景技术
航路计算是国际机票运价搜索引擎中重要的模块之一,作用是判断用户行程是否符合运价对航路相关的限制,包含里程制和航路制两部分计算。依据运价类型(指定运价和拼接运价)及运价信息不同,会进行里程制、航路制或两者组合验证。
航路计算问题的难点之一是搜索空间大,对于一个从起点到终点的行程查询请求,现有技术中采用穷举的方式,既要在数以百万计的航班计划数据中找到满足行程要求的航班组合,又要在数以亿计的运价数据中找出相应的运价组合,而航班组合和运价组合之间又可以是多对多的关系,导致运算量非常庞大。例如,用户输入一个行程,经过拆点后,可用的平均航班组合100个,每个航班组合可用的运价平均组合数有4000,每个运价平均有3个航路,那么一次行程查询请求的航路计算就是100*4000*3次,可见计算量之大。
发明内容
本发明要解决的技术问题是为了克服现有技术中航路计算的计算量非常庞大的缺陷,提供一种航路计算方法及系统。
本发明是通过下述技术方案来解决上述技术问题:
一种航路计算方法,所述航路计算方法包括以下步骤:
获取行程查询请求;所述行程查询请求包括行程端点;
根据所述行程端点和全量航线数据确定航班组合和可用运价;
根据所述可用运价的属性值确定所述航班组合的验证规则;
输出符合所述验证规则的航班组合。
较佳地,所述航路计算方法还包括:
获取所述全量航线数据;
基于树广度遍历算法并通过多个线程并行将所述全量航路数据加载至内存中。
较佳地,所述验证规则包括:里程制验证规则;
所述全量航线数据包括:里程制配置数据和优惠里程规则;
输出符合所述验证规则的航班组合的步骤,具体包括:
根据所述优惠里程规则计算所述航班组合的优惠里程;
从所述里程制配置数据中查找所述航班组合的最大允许里程和实际里程总和;
将所述实际里程总和、所述最大允许里程和所述优惠里程代入里程制计算公式,验证计算结果,并输出验证通过的航班组合。
较佳地,所述验证规则包括:航路制制验证规则;
所述全量航线数据包括:航路明细数据;
输出符合所述验证规则的航班组合的步骤,具体包括:
根据所述行程端点和所述航路明细数据确定所述航班组合的航路经过点,并进行航路拼接,获得航路图;
根据所述航路图匹配所述航班组合,并输出匹配成功的航班组合。
较佳地,所述可用运价包括指定运价和可用运价;
根据所述行程端点和所述航路明细数据确定所述航班组合的航路经过点的步骤之前,还包括:
判断与所述航班组合对应的指定运价的属性值与拼接运价的属性值是否相同;
并在判断为否时,执行确定所述航路经过点的步骤;
在判断为是时,根据所述属性值获取所述航路图。
一种航路计算系统,所述航路计算系统包括以下步骤:
请求获取模块,用于获取行程查询请求;所述行程查询请求包括行程端点;
规则获取模块,用于根据所述行程端点和全量航线数据确定航班组合和可用运价,并根据所述可用运价的属性值确定所述航班组合的验证规则;
验证模块,用于根据所述验证规则验证所述航班组合,并输出符合所述验证规则的航班组合。
较佳地,所述航路计算系统还包括:
数据获取模块,用于获取所述全量航线数据;
数据加载模块,用于基于树广度遍历算法并通过多个线程并行将所述全量航路数据加载至内存中。
较佳地,所述验证规则包括:里程制验证规则;
所述全量航线数据包括:里程制配置数据和优惠里程规则;
所述验证模块具体包括:
计算单元,用于根据所述优惠里程规则计算所述航班组合的优惠里程;
查找单元,用于从所述里程制配置数据中查找所述航班组合的最大允许里程和实际里程总和;
验证单元,用于将所述实际里程总和、所述最大允许里程和所述优惠里程代入里程制计算公式,验证计算结果,并输出验证通过的航班组合。
较佳地,所述验证规则包括:航路制制验证规则;
所述全量航线数据包括:航路明细数据;
所述验证模块具体包括:
航路拼接单元,用于根据所述行程端点和所述航路明细数据确定所述航班组合的航路经过点,并进行航路拼接,获得航路图;
匹配单元,用于根据所述航路图匹配所述航班组合,并输出匹配成功的航班组合。
较佳地,所述可用运价包括指定运价和可用运价;
所述验证模块还包括:判断单元和航图获取单元;
所述判断单元用于判断与所述航班组合对应的指定运价的属性值与拼接运价的属性值是否相同,并在判断为否时,调用所述航路拼接单元;在判断为是时,调用所述航图获取单元;
所述航图获取单元用于根据所述属性值获取所述航路图。
本发明的积极进步效果在于:本发明根据ATPCO数据中的行程运价和航路数据,准确、高效的实现航路计算,且优化了航班组合与航路数据匹配算法,逐步减枝,降低了算法时间复杂度,耗时和计算次数占比都较低,航路计算平均响应时间控制在纳秒级,效率大大提高。
附图说明
图1为本发明实施例1的航路计算方法的第一流程图。
图2为本发明实施例1的航路计算方法的第二流程图。
图3为本发明实施例1的航路计算方法的第三流程图。
图4为本发明实施例2的航路计算方法的第三流程图系统的模块示意图。
具体实施方式
下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
实施例1
本实施例提供一种航路计算方法,作用是判断用户的行程查询请求中的行程是否符合运价对航路相关的限制,如图1所示,本实施例的航路计算方法包括以下步骤:
步骤101、获取全量航线数据。
其中,全量航线数据从ATPCO获取。
数据获取过程中,通过多个线程(例如8个线程)并行、同步的使用树广度遍历算法,将全量航路数据加载至内存中,全量航路数据可按照数据类型以表的形式存储于内存中,例如,将里程配置表(参见表1)数据加载至内存Map结构(一种数据结构),里程配置表包括以下参数:出发城市三字码、到达城市三字码、TPM(实际里程)和MPM(最大允许里程);EMA(优惠里程)配置表(参见表2)数据加载至内存Set结构(一种数据结构);全球航司发布的运价数据;路由头(AtpcoRoutingHeader)表(参见表3);航路明细(AtpcoRoutingDetail)表(参见表4);航路限制(AtpcoRoutingRestriction)表(参见表5);航班计划表。
本实施中,将全量航线数据存储于内存中,整个航路计算过程从内存获取所需的数据,无IO读操作,充分利用了内存,提升了计算效率。还可对存储在内存的航路数据中字符串类型的数据进行编码压缩。
表1
出发城市三字码 | 到达城市三字码 | 实际里程 | 最大允许里程 |
OKC | SIC | 6502 | 7803 |
SIC | TSR | 858 | 1030 |
SIC | TTT | 6425 | 7711 |
KRS | SIC | 1825 | 2191 |
IFO | SIC | 1262 | 1515 |
MEM | SIC | 6237 | 7485 |
LPQ | SIC | 6000 | 7200 |
表2
表2中,A=Area(地区);Z=Zone(地带);S=State(州);N=Country(国家);C=City(城市);P=Airport(机场);如果Note(枚举值)中存在不好格式化的数据,则用枚举定义,然后在程序中处理,Note的值为3表示整个行程有一个点在AF,BD,BT,MV,PK,IN,NP,LK之外。
表3
表3中,LinkNo(关联号码)用于通过该字段关联路由明细数据。TarNo用于运价通过此字段查找关联航路。AirlineCode用于运价通过此字段查找关联航路。RtgNo用于运价通过此字段查找关联航路;Direction为限制路由图的访问方向:当值为0时,不限方向访问路由图;当值为1时,只能从左至右依次访问路由图。CommonPoint表示指定运价和拼接运价都是航路制时,分别用每个运价对应的航路图时验证行程是否满足要求,均不满足的情况下,需要将两张航路图进行拼接,该字段说明两张航路图拼接的规则:值为0时,两张图的任意点相同,即可拼接;值为1时,只有当两张图的起点或终点相同时才可拼接。IntermediatePoint表示限制行程起点终点与路由图的匹配规则:值为0时,运价起点和终点必须匹配路由图中的起点和终点;值为1时,匹配路由图中的任意点。
表4
LinkNo | CityNo | CityType | CityName | CityTag | NextCity | AltCity |
1 | 1 | C | ABI | 1 | 201 | 0 |
1 | 2 | C | ABQ | 1 | 201 | 0 |
1 | 184 | A | YY | 201 | 0 | |
1 | 193 | C | CHI | 201 | 194 | |
1 | 194 | C | DFW | 201 | 0 | |
1 | 197 | C | CHI | 201 | 0 | |
1 | 198 | C | SJU | 201 | 0 | |
1 | 199 | C | DFW | 201 | 0 | |
1 | 200 | C | MIA | 202 | 0 | |
1 | 201 | C | NYC | 203 | 200 | |
1 | 202 | C | MAD | 204 | 0 | |
1 | 203 | C | BCN | X | 0 | 0 |
1 | 204 | A | YY | 205 | 0 | |
1 | 205 | C | BCN | X | 0 | 206 |
1 | 206 | C | LPA | X | 0 | 207 |
表4中,LinkNo用于通过该字段关联查找路由明细数据。CityNo为当前节点(航路经过点)编号,被NextCity或者AltCity指定。CityType为当前节点类型C表示城市或机场代码,A表示航司代码。CityName为城市或机场代码。CityTag用于描述节点在航线中节点的类型,值为1表示路线的起点,值为X表示路线的终点,空白表示路线的中间点(中转点)。NextCity表示当前节点的下一个连接点。AltCity表示与当前点平级的连接点。
表5
步骤102、获取行程查询请求。
其中,行程查询请求包括:行程要求和行程端点。行程端点包括行程起点(也即出发城市)和行程终点(也即到达城市)。行程要求例如出行时间、舱位类型等。
步骤103、根据行程查询请求生成航班组合。
步骤103也即根据行程起点和行程终点进行拆点,并搜索航班计划表获取满足行程要求的所有航班组合,可能是直达也可能是联程。航班组合包括航路经过点和相应的航空公司。当是直达时,航路经过点包括行程起点和行程终点。当是联程时,航路经过点包括行程起点、行程终点和中转点。
以用户输入的行程起点、行程终点分别为重庆和纽约为例,可得到航班组合例如:CKG-CA-BJS-CX-HKG-CX-NYC(重庆-国航-北京-港龙-香港-港龙-纽约);CKG-CA-BJS-CX-HKG-CX-NYC(重庆-港龙-香港-港龙-纽约)等。
步骤104、根据航班组合搜索运价数据表,获得可用运价。
其中,可用运价也即航司发布的运价。步骤104也即根据行程起点、行程终点和相应的航空公司在运价数据表中进行搜索,获得可用运价。可用运价包括属性值。属性值通过RtgNo值表征,用来标识该运价可以使用在哪些航路上,分为两种,0000(里程制运价,航司限制里程但是不限制具体的航路)和非0000(航司通过具体的RtgNo关联到具体的航路,规定运价只是适用于指定的航路)。
其中,可用运价包括指定运价和拼接运价。
步骤105、根据可用运价的属性值确定航班组合的验证规则。
其中,验证规则包括但不限于里程制验证规则和航路制验证规则。
本实施例中,当RtgNo值为0000时,采用里程制验证规则;当RtgNo值不为0000时,采用航路制验证规则。
步骤106、输出符合验证规则的航班组合。
以下对采用里程制验证规则对航班组合进行验证的过程进行说明,如图2所示,步骤106具体包括:
步骤106-1、从里程配置表获取航班组合的最大允许里程和每个航路经过点之间的实际里程。
还是以行程起点、行程终点分别为重庆和纽约为例,查表1得到CKG-NYC之间MPM值11235,CKG-BJS、BJS-HKG和HKG-NYC的TPM值分别:927、1239和10035,TPM总和为12201。
步骤106-2、根据优惠里程规则计算航班组合的优惠里程。
步骤106-2中,将航班组合CKG-CA-BJS-CX-HKG-CX-NYC作为参数传入EMA算法,根据表2示出的优惠里程规则,获取CKG-NYC之间里程优惠为1500。如果存在多条匹配记录,优先使用ValidatingCxr和出票航空公司一致的记录,也即表2中航司字段有具体航司代码和空值情况,当一个航司不为空的规则和一个航司为空的规则同时匹配,优选使用航司不为空的规则。
本实施例中,无需采用穷举的方式下载大部分的行程路线及以获得优惠里程,而是通过优惠里程规则实时计算优惠里程,不仅可以覆盖全球所有的超里程运价,还可减少计算耗时和计算次数占比。
步骤106-3、将实际里程总和、最大允许里程和优惠里程代入里程制计算公式,验证计算结果,并输出验证通过的航班组合。
其中,里程制计算公式如下:
(TPM-EMA)/MPM;
若(TPM-EMA)/MPM小于等于1,说明验证结果通过,则输出对应的航班组合;若(TPM-EMA)/MPM大于1,说明验证结果未通过,则不输出该航班组合。
本实施例中,(TPM-EMA)/MPM=(12201-1500)/11235<1,验证通过,说明CKG-CA-BJS-CX-HKG-CX-NYC可用,则输出。
以下对采用航路制验证规则对航班组合进行验证的过程进行说明,如图3所示,步骤106具体包括:
步骤106-1’、判断与航班组合对应的可用运价的指定运价的RtgNo值与拼接运价的RtgNo值是否相同。
步骤106-1’中,若判断为是,说明不需要做航路图拼接,则执行步骤106-2’;若判断为否,说明需要做航路图拼接,找出三个RtgNo对应的所有航路,执行步骤106-3’。
步骤106-2’、用该RtgNo值获取对应的航路图。然后执行步骤106-6’,对航班组合进行验证。
步骤106-3’、根据运价数据表中的字段CxrCode、G16RtgTarNumber、RtgNo到路由头表中获取LinkNo号码。
步骤106-4’、根据关联号码从航路限制表中获取航路限制数据。
其中,航路限制数据可以但不限于:
限制1:行程必须在城市1和城市2之间,并且必须经过或必须不能经过城市3,表5中的MktInfoCity1和MktInfoCity2字段一定会出现两个不同的城市,经过地理点位是经过,不能是起点和终点;
限制2:行程必须经过或必须不经过城市3,ViaCxr是城市代码,经过地理点位是经过,不能是起点和终点;
限制3:行程必须是或必须不是无停留/直飞/无停留或直飞;
限制4:行程必须在城市1和城市2之间,并且是无停留/直飞/无停留或直飞的;
限制5:行程必须是从城市1出发或到达城市1,并且必须经过或必须不能经过城市3;只有MktInfoCity1会指定,MktInfoCity1必须匹配行程起点或者终点,否则失败;MktInfoCity1、ViaCxr都是城市,不会出现机场多条记录出现同样的MktInfoCity1,之间是“或”的关系;
限制6:行程必须是从城市1出发或到达城市1,并且必须是或必须不是无停留/直飞/无停留或直飞;
限制7:行程在城市1和之间时城市2,必须在城市3停留/不允许在城市3停留;Stopover(中途停留):美加运价,出发和到达间隔超过4小时;国际运价,出发和到达间隔超过24小时;
限制11:行程在城市1和城市2之间的区域(空气/地面)必须停留/不允许停留;
限制12:在城市1和城市2之间只允许有一次直达(单券)旅行;
限制16:检查MPM;
限制17:承运人必须是票价组成部分所有部门的营销承运人。
需要说明的是,若无航路限制数据,则不需验证,默认为通过,直接进行航路图拼接。
步骤106-5’、根据航路限制数据从航路明细表中确定航路经过点,并进行航路拼接,得到航路图。
航路图的数据结构参见表6。
表6
本实施例中,无需采用穷举的方式预先评估所有的热门航线,而是对可能的行程路线,实时校验即可,不仅可以提高航线的覆盖率,还可减少计算耗时和计算次数占比,另外当ATPCO对航路有调整的时候,可以立刻反馈给用户,提高航路计算的准确率。
本实施例中,航路拼接具体采用树广度遍历算法,通过运价(该运价是航司在ATPCO系统中录入的一条数据,其中包括CxrCode、G16RtgTarNumber、RtgNo三个字段,通过这三字段的值到路由头表中获取)找到对应的AtpcoRoutingHeader的LinkNo,进一步找到AtpcoRoutingDetail数据,从字段CityTag=1的记录开始递归遍历路径,AltCity字段不为空时,将AltCity对应的节点添加到当前节点同级位置,到记录字段CityTag=X的终止止,得到所有路径绘制成航路图。其中,航路约束限制通过AtpcoRoutingHeader的LinkNo进一步找到AtpcoRoutingRestriction不存在记录或者全部不匹配时默认通过,当存在多条匹配记录时,按照SeqNo从低到高依次验证。
步骤106-6’、根据航路图匹配航班组合,并输出匹配成功的航班组合。
步骤106-6’也即基于航班组合和上述航路限制数据中的约束条件,判断航班组合中的每个城市节点(航路经过点)及航司是否与航路图中的一条路径完全匹配。匹配则通过,并输出该航班组合;否则失败,不输出航班组合。
以下举个具体实例说明航班组合与航路图的匹配验证过程:
首先,用航班组合的行程起点SIA(城市三字码)和行程终点MIL(城市三字码)过滤路径,将rootNos和endNos符合条件的节点筛选出来;进一步,对符合条件的SIA节点通过depArrMap过滤,以SIA为KEY,将Value中没有BJS(城市三字码)的节点过滤掉;进一步,对符合条件的SIA节点通过inOutAirLines过滤,以SIA为KEY,将Value中没有CA出发的节点过滤掉;进一步,对符合条件的MIL节点通过depArrMap过滤,以DXB为KEY,将Value中没有MIL的节点过滤掉;进一步,对符合条件的MIL节点通过inOutAirLines过滤,以SIA为KEY,将Value中没有EK到达的节点过滤掉;如果存在符合条件的SIA和MIL节点,通过获取最短路径算法,获取这条最短路径,36)SIA-1->549)CA->554)BJS-M->0)EK->731)DXB-M->0)EK->201)MIL-X,如果存在与航班组合匹配的航路图路径,则验证通过,输出该航班组合;不存在与航班组合匹配的航路图路径,则验证失败。
本实施例中,步骤106之后,还包括对航路计算结果进行缓存的步骤。
本实施例中,以ATPCO的全量航线数据为基础,获取用户行程运价和航路数据,准确、高效的实现航路计算,且优化了用户行程与航路数据匹配算法,逐步减枝,降低了算法时间复杂度,使航路计算平均响应时间控制在纳秒级。同时对航路计算结果进行LRU(内存管理的一种页面置换算法)缓存,避免重复计算,对航路数据中字符串类型的数据进行编码压缩,减少内存空间占用,使航路数据支持增量更新,减少GC(JAVA虚拟机垃圾回收机制)对程序性能的影响。
实施例2
如图4所示,本实施例的航路计算系统,其特征在于,航路计算系统包括:数据获取模块1、数据加载模块2、请求获取模块3、规则获取模块4和验证模块5。
数据获取模块1用于获取全量航线数据。其中,全量航线数据从ATPCO获取。
数据加载模块2用于基于树广度遍历算法并通过多个线程并行将全量航路数据加载至内存中。数据加载过程中,通过多个线程(例如8个线程)并行、同步的使用树广度遍历算法,将全量航路数据加载至内存中,全量航路数据可按照数据类型以表的形式存储于内存中,例如,将里程配置表数据加载至内存Map结构(一种数据结构),里程配置表包括以下参数:出发城市三字码、到达城市三字码、TPM(实际里程)和MPM(最大允许里程);EMA(优惠里程)配置表数据加载至内存et结构(一种数据结构);全球航司发布的运价数据;路由头(AtpcoRoutingHeader)表;航路明细(AtpcoRoutingDetail)表;航路限制(AtpcoRoutingRestriction)表;航班计划表等。
本实施中,将全量航线数据存储于内存中,整个航路计算过程从内存获取所需的数据,无IO读操作,充分利用了内存,提升了计算效率。还可对存储在内存的航路数据中字符串类型的数据进行编码压缩。
请求获取模块3用于获取行程查询请求。其中,行程查询请求包括:行程要求和行程端点。行程端点包括行程起点(也即出发城市)和行程终点(也即到达城市)。行程要求例如出行时间、舱位类型等。
规则获取模块4用于根据行程端点和全量航线数据确定航班组合和可用运价,并根据可用运价的属性值确定航班组合的验证规则。其中,可用运价包括指定运价和拼接运价。验证规则包括但不限于里程制验证规则和航路制验证规则。可用运价的属性值通过RtgNo值表征,用来标识该运价可以使用在哪些航路上,分为两种,0000(里程制运价,航司限制里程但是不限制具体的航路)和非0000(航司通过具体的RtgNo关联到具体的航路,规定运价只是适用于指定的航路)。
验证模块5用于根据验证规则验证航班组合,并输出符合验证规则的航班组合。
本实施例中,验证模块具体包括:计算单元、查找单元、验证单元、航路拼接单元、匹配单元、判断单元和航图获取单元。
以下对航班组合与航路数据匹配验证过程进行说明:
当RtgNo值为0000时,采用里程制验证规则,规则获取模块调用计算单元和查找单元。计算单元用于根据优惠里程规则计算航班组合的优惠里程;查找单元用于从里程制配置数据中查找航班组合的最大允许里程和实际里程总和;验证单元用于将实际里程总和、最大允许里程和优惠里程代入里程制计算公式,验证计算结果,并输出验证通过的航班组合。
其中,里程制计算公式如下:(TPM-EMA)/MPM。
当RtgNo值不为0000时,采用航路制验证规则,规则获取模块调用判断单元。判断单元用于判断与航班组合对应的指定运价的属性值与拼接运价的属性值是否相同。
若判断单元判断为否,则调用航路拼接单元。航路拼接单元用于根据行程端点和航路明细数据确定航班组合的航路经过点,并进行航路拼接,获得航路图。然后调用匹配单元,以根据拼接得到的航路图匹配航班组合,并输出匹配成功的航班组合。
若判断单元判断为是,则航图获取单元,以根据属性值查询获取航路图。然后调用匹配单元,以根据查询得到的航路图匹配航班组合,并输出匹配成功的航班组合。
本实施例中,航路计算系统还包括:缓存模块,用于对航路计算结果进行LRU缓存,以避免重复计算。
本实施例中,以ATPCO的全量航线数据为基础,获取用户行程运价和航路数据,准确、高效的实现航路计算,且优化了用户行程与航路数据匹配算法,逐步减枝,降低了算法时间复杂度,使航路计算平均响应时间控制在纳秒级。同时对航路计算结果进行LRU(内存管理的一种页面置换算法)缓存,避免重复计算,对航路数据中字符串类型的数据进行编码压缩,减少内存空间占用,使航路数据支持增量更新,减少GC对程序性能的影响。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
Claims (10)
1.一种航路计算方法,其特征在于,所述航路计算方法包括以下步骤:
获取行程查询请求;所述行程查询请求包括行程端点;
根据所述行程端点和全量航线数据确定航班组合和可用运价;
根据所述可用运价的属性值确定所述航班组合的验证规则;
输出符合所述验证规则的航班组合。
2.如权利要求1所述的航路计算方法,其特征在于,所述航路计算方法还包括:
获取所述全量航线数据;
基于树广度遍历算法并通过多个线程并行将所述全量航路数据加载至内存中。
3.如权利要求1所述的航路计算方法,其特征在于,所述验证规则包括:里程制验证规则;
所述全量航线数据包括:里程制配置数据和优惠里程规则;
输出符合所述验证规则的航班组合的步骤,具体包括:
根据所述优惠里程规则计算所述航班组合的优惠里程;
从所述里程制配置数据中查找所述航班组合的最大允许里程和实际里程总和;
将所述实际里程总和、所述最大允许里程和所述优惠里程代入里程制计算公式,验证计算结果,并输出验证通过的航班组合。
4.如权利要求1所述的航路计算方法,其特征在于,所述验证规则包括:航路制制验证规则;
所述全量航线数据包括:航路明细数据;
输出符合所述验证规则的航班组合的步骤,具体包括:
根据所述行程端点和所述航路明细数据确定所述航班组合的航路经过点,并进行航路拼接,获得航路图;
根据所述航路图匹配所述航班组合,并输出匹配成功的航班组合。
5.如权利要求4所述的航路计算方法,其特征在于,所述可用运价包括指定运价和可用运价;
根据所述行程端点和所述航路明细数据确定所述航班组合的航路经过点的步骤之前,还包括:
判断与所述航班组合对应的指定运价的属性值与拼接运价的属性值是否相同;
并在判断为否时,执行确定所述航路经过点的步骤;
在判断为是时,根据所述属性值获取所述航路图。
6.一种航路计算系统,其特征在于,所述航路计算系统包括以下步骤:
请求获取模块,用于获取行程查询请求;所述行程查询请求包括行程端点;
规则获取模块,用于根据所述行程端点和全量航线数据确定航班组合和可用运价,并根据所述可用运价的属性值确定所述航班组合的验证规则;
验证模块,用于根据所述验证规则验证所述航班组合,并输出符合所述验证规则的航班组合。
7.如权利要求6所述的航路计算系统,其特征在于,所述航路计算系统还包括:
数据获取模块,用于获取所述全量航线数据;
数据加载模块,用于基于树广度遍历算法并通过多个线程并行将所述全量航路数据加载至内存中。
8.如权利要求6所述的航路计算系统,其特征在于,所述验证规则包括:里程制验证规则;
所述全量航线数据包括:里程制配置数据和优惠里程规则;
所述验证模块具体包括:
计算单元,用于根据所述优惠里程规则计算所述航班组合的优惠里程;
查找单元,用于从所述里程制配置数据中查找所述航班组合的最大允许里程和实际里程总和;
验证单元,用于将所述实际里程总和、所述最大允许里程和所述优惠里程代入里程制计算公式,验证计算结果,并输出验证通过的航班组合。
9.如权利要求6所述的航路计算系统,其特征在于,所述验证规则包括:航路制制验证规则;
所述全量航线数据包括:航路明细数据;
所述验证模块具体包括:
航路拼接单元,用于根据所述行程端点和所述航路明细数据确定所述航班组合的航路经过点,并进行航路拼接,获得航路图;
匹配单元,用于根据所述航路图匹配所述航班组合,并输出匹配成功的航班组合。
10.如权利要求9所述的航路计算系统,其特征在于,所述可用运价包括指定运价和可用运价;
所述验证模块还包括:判断单元和航图获取单元;
所述判断单元用于判断与所述航班组合对应的指定运价的属性值与拼接运价的属性值是否相同,并在判断为否时,调用所述航路拼接单元;在判断为是时,调用所述航图获取单元;
所述航图获取单元用于根据所述属性值获取所述航路图。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811543329.7A CN111325379B (zh) | 2018-12-17 | 2018-12-17 | 航路计算方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811543329.7A CN111325379B (zh) | 2018-12-17 | 2018-12-17 | 航路计算方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111325379A true CN111325379A (zh) | 2020-06-23 |
CN111325379B CN111325379B (zh) | 2024-03-26 |
Family
ID=71170853
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811543329.7A Active CN111325379B (zh) | 2018-12-17 | 2018-12-17 | 航路计算方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111325379B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160093219A1 (en) * | 2014-09-30 | 2016-03-31 | The Boeing Company | Flight object communications system |
CN106777312A (zh) * | 2016-12-30 | 2017-05-31 | 中国民航信息网络股份有限公司 | 一种低成本航班搜索系统和方法 |
US20180003516A1 (en) * | 2016-03-11 | 2018-01-04 | Route4Me, Inc. | Methods and systems for detecting and verifying route deviations |
CN107563576A (zh) * | 2017-10-14 | 2018-01-09 | 连云港杰瑞深软科技有限公司 | 一种船舶智能能效管理系统 |
-
2018
- 2018-12-17 CN CN201811543329.7A patent/CN111325379B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160093219A1 (en) * | 2014-09-30 | 2016-03-31 | The Boeing Company | Flight object communications system |
US20180003516A1 (en) * | 2016-03-11 | 2018-01-04 | Route4Me, Inc. | Methods and systems for detecting and verifying route deviations |
CN106777312A (zh) * | 2016-12-30 | 2017-05-31 | 中国民航信息网络股份有限公司 | 一种低成本航班搜索系统和方法 |
CN107563576A (zh) * | 2017-10-14 | 2018-01-09 | 连云港杰瑞深软科技有限公司 | 一种船舶智能能效管理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111325379B (zh) | 2024-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10520326B2 (en) | Driving route matching method and apparatus, and storage medium | |
US8494771B2 (en) | Journey planning in public transportation networks | |
US9097535B2 (en) | Public transportation journey planning | |
CN101218486A (zh) | 用于对道路网图进行建模的方法、装置及系统 | |
CN107958302B (zh) | 基于虚拟拓扑交通网络的经验路径规划方法 | |
CN104616188A (zh) | 基于网络购买车票的方法和系统 | |
CN110309962B (zh) | 基于时间扩展模型的铁路行程路线规划方法及装置 | |
CN107944611B (zh) | 面向个性化出行需求的跨模式组合出行规划方法 | |
US8682583B2 (en) | Route search system | |
CN110222912B (zh) | 基于时间依赖模型的铁路行程路线规划方法及装置 | |
CN112344947B (zh) | 地图匹配方法、装置、电子设备和计算机可读存储介质 | |
CN116128172A (zh) | 一种空铁联运路线生成方法、系统及设备和存储介质 | |
CN111831766A (zh) | 兴趣点搜索方法、可读存储介质和电子设备 | |
CN111024079B (zh) | 一种根据多个位置点与路线进行匹配的方法和系统 | |
CN101807348A (zh) | 一种动态网络导航系统及方法 | |
CN115164922A (zh) | 一种路径规划方法、系统、设备及存储介质 | |
CN109614406B (zh) | 班次搜索方法、装置、电子设备及可读存储介质 | |
Gui et al. | Taxi efficiency measurements based on motorcade-sharing model: evidence from GPS-equipped taxi data in Sanya | |
CN108665723B (zh) | 一种信息获取方法及装置 | |
CN114234991A (zh) | 导航路径规划方法、装置、计算机设备和存储介质 | |
CN106777310B (zh) | 信息的校验方法及装置 | |
JP2021190094A (ja) | 配送計画作成方法、装置、システムおよびコンピュータ読み取り可能な記憶媒体 | |
CN111325379A (zh) | 航路计算方法及系统 | |
CN110766187B (zh) | 路径规划方法、装置、服务器及存储介质 | |
CN110796060A (zh) | 高速行车路线确定方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |