技术领域
[0001] 本发明涉及民航航空运筹优化调度技术领域,尤其涉及一种航班任务串生成方法、装置及存储介质。
相关背景技术
[0002] 由于大型航空公司的机组排班问题规模巨大,难以建模求解,所以大型航空公司的机组排班问题通常分解成搭班(Crew Pairing)和排班(Crew Rostering)两个子问题。搭班负责将一个个独立的航班搭成从基地出发又回到基地的航班任务串(Pairing),排班负责将航班任务串安排给具体机组。
[0003] 飞行机组搭班问题是NP‑hard(Non‑deterministic Polynomial‑time hard,非确定性多项式时间难)问题。对于大型航空公司来说,对单一机型进行一个月的计划性搭班所涉及航班量可达上万个,所可能产生的合法航班任务串数量极其庞大,无法暴力枚举生成,在实际应用中也难以求得最优航班任务串,从而导致飞行机组搭班方案的制定耗时久且效果差。
具体实施方式
[0053] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0054] 在本发明的描述中,需要说明的是,文中的步骤编号,仅为了方便具体实施例的解释,不作为限定步骤执行先后顺序的作用。术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
[0055] 参见图1,图1是本发明实施例提供的航班任务串生成方法的流程图,所述航班任务串生成方法,包括步骤S1至步骤S4,具体如下:
[0056] S1、获取飞行机组的飞行航段数据,生成满足预设业务规则的执勤任务;
[0057] S2、根据所述执勤任务建立节点和边,以所述节点和所述边构建第一网络图;其中,所述节点包括出发节点、到达节点、虚拟起点和虚拟终点,所述边包括执勤任务边、过夜边、虚拟起始边和虚拟终止边;
[0058] S3、设置所述第一网络图中的执勤任务边和过夜边的权重值,并将满足预设合并规则的节点进行合并,得到第二网络图;
[0059] S4、基于带资源约束的最短路径问题标签算法,获取所述第二网络图的最优路径,得到航班任务串。
[0060] 可以理解的是,为了更好地反映航班的实际运行情况和约束条件,需要计算好执勤任务边及过夜边的权重值。以执勤任务边为例,需要对成本、执勤时长、飞行时长、高原航段数等权重的影响因素进行评估,计算得到对应的权重值。这些权重值有助于在后续求解中计算出更优的航班任务串。
[0061] 在本发明实施例中,有效地整合了飞行航段数据,构建包括以执勤任务边为边的第一网络图,通过合理设置权重值、节点合并和带资源约束的最短路径问题标签算法,对构建的第二网络图进行路径优化,从而高效地得到最优航班任务串。
[0062] 在一种可选的实施例中,所述执勤任务通过以下步骤获得:
[0063] 选取间隔超过预设时间单位的所述飞行航段数据,并以所述时间单位进行切割,得到多份切割数据;
[0064] 将每一份所述切割数据的航班按照第一衔接规则进行组合,并枚举得到所有的所述执勤任务;
[0065] 其中,所述第一衔接规则包括通过起飞落地站进行衔接和通过过站时间进行衔接。
[0066] 示例性的,搭班首先将多个首尾相连的飞行航段(Segment,表示没有停顿的飞行)以“一天”为时间单位组合成遵守一定业务规则的执勤任务(Duty)。例如,对某月从1号到10号的航班Segment进行搭班,将其以“一天”为时间单位进行切割,得到10份切割数据,每份切割数据的航班按照起飞落地站衔接和过站时间衔接等规则进行组合,并枚举得到所有合法的Duty。
[0067] 可以理解的是,对于航班任务串的生成而言,需要将所有Duty通过过夜任务(LO)或置位任务(TVL)连接成遵守一定业务规则且以休息任务(RST)收尾的航班任务串(Pairing)。可见搭班的输入是连续若干天的航班集合,输出是对这些航班按照规则组合得到的Pairing集合。因此,可以通过构建网络图模型来解决搭班问题,即将生成Pairing问题转换为生成图路径问题。
[0068] 如图2所示是一个Pairing的结构。所述Pairing从CAN(广州)出发,最后在CAN(广州)落地,然后执行一个休息任务(RST),完成一个Pairing任务。所述Pairing有3个Duty,第一个Duty只有1个航班,从CAN(广州)出发,在PEK(北京)落地,机组人员在执行Duty任务时有固定的签入/签出操作;在执行第一个过夜任务(LO)后,进入第二个Duty,其同样只有1个从PEK(北京)到AMS(阿姆斯特丹)的航班;继续执行第二个过夜任务(LO),进入第三个Duty,其包含2个航班,第一个航班从AMS(阿姆斯特丹)出发,在PEK(北京)落地,经过一个过站等待(Transit time)后,执行第二个航班,从PEK(北京)出发,回到CAN基地。
[0069] 在一种可选的实施例中,所述出发节点,具有所述执勤任务的出发机场、出发时间、机型组、入边节点列表和出边节点列表5个属性;
[0070] 所述到达节点,具有所述执勤任务的到达机场、到达时间、机型组、入边节点列表和出边节点列表5个属性;
[0071] 所述虚拟起点,用于连接所有以同一出发机场为基地的出发节点;
[0072] 所述虚拟终点,用于连接所有以同一到达机场为基地的到达节点。
[0073] 在一种可选的实施例中,所述边通过以下规则建立:
[0074] 一个所述出发节点和一个所述到达节点之间建立一条所述执勤任务边;
[0075] 当两个所述执勤任务之间满足第二衔接规则时,则在第一个所述执勤任务边的到达节点与第二个所述执勤任务边的出发节点之间建立一条所述过夜边;
[0076] 当所述虚拟起点与所述执勤任务边的出发节点均以同一出发机场为基地时,建立一条所述虚拟起始边;
[0077] 当所述虚拟终点与所述执勤任务边的到达节点均以同一到达机场为基地时,建立一条所述虚拟终止边。
[0078] 在一种可选的实施例中,所述第二衔接规则包括:
[0079] 第一个所述执勤任务边的到达节点的到达机场与第二个所述执勤任务边的出发节点的出发机场一致;
[0080] 第一个所述执勤任务边的到达时间与第二个所述执勤任务边的出发时间的时间间隔满足预设的过夜时长;
[0081] 第一个所述执勤任务边的到达节点的机型组与第二个所述执勤任务边的出发节点的机型组一致。
[0082] 在本发明实施例中,基于执勤任务数据构建起节点和边,并构建包括以执勤任务边为边的第一网络图,为后续的优化算法提供了结构基础。
[0083] 示例性的,如图3所示为一个包括以执勤任务边为边的第一网络图。
[0084] 在一种可选的实施例中,所述预设合并规则包括:
[0085] 对于多个所述到达节点,当其到达机场、到达时间、机型组和出边节点列表一致时,将所述多个所述到达节点合并成单个到达节点;
[0086] 对于多个所述出发节点,当其出发机场、出发时间、机型组和入边节点列表一致时,将所述多个所述出发节点合并成单个出发节点。
[0087] 可以理解的是,由于出发节点与到达节点的属性信息简单,容易产生属性完全一样的出发节点或到达节点。而对于这些属性一致的节点,只需保留一个即可,因此可以进行节点。
[0088] 在本发明实施例中,利用节点和边的定义,结合权重值设置和节点合并规则,优化了网络图结构,使得带资源约束的最短路径问题标签算法在处理复杂的机组搭班问题时表现更加优异。
[0089] 示例性的,如图4所示,图4中的(a)是节点合并前的图,图4中的(b)是节点合并后的图。
[0090] 在一种可选的实施例中,所述基于带资源约束的最短路径问题标签算法,获取所述第二网络图的最优路径,包括:
[0091] 选择某个所述节点为源点,当标签在所述源点时,将所述标签上的各项资源和成本进行初始化;
[0092] 每经过一个到达节点时,路径会进行资源扩展,所述标签会根据所述路径上的标签进行资源累加和成本累加;
[0093] 其中,所述路径上的标签是根据所经过边的权重的影响因素和执勤任务数量进行资源累加和成本累加。
[0094] 可以理解的是,一个标签一般包含多项资源,一个节点上的一个标签,代表从源点到该节点的一条合法子路径消耗的各项资源及累加的成本。标签在源点时各项资源被初始化为0,代表未消耗资源;由于核心的业务信息被储存在边结构上,路径扩展时每经过一个到达节点,该路径所代表的标签,会根据所经过边的权重的影响因素和执勤任务数量进行资源累加和成本累加,代表经过该边后,当前路径的总成本及消耗的各资源项情况,该过程也称为资源扩展。
[0095] 在一种可选的实施例中,根据以下步骤进行所述路径的资源扩展:
[0096] 当所述标签在经过一条过夜边和一条执勤任务边后,若某项资源超出上限,则删除所述标签,结束所述路径的资源扩展;若各项资源均未超出上限,则说明所述标签合法;
[0097] 对当前节点的不同标签进行比较,若第一标签的各项资源和成本均优于第二标签,则所述第一标签优超所述第二标签,删除所述第二标签。
[0098] 可以理解的是,在到达节点处,路径进行每一次资源扩展时,都需要进行两个操作,一是检查标签在经过一条过夜边和一条执勤任务边后是否违规(某项资源超出资源上限),若违规则删除,结束扩展;二是对当前节点的不同标签进行比较(节点上的一个标签,保存了到达该节点时一条路径的成本及消耗的各项资源信息),当第一标签的成本及各项资源均优于第二标签,则即便第二标签合法也会被删掉,因为从第二标签往后的所有路径扩展都是一致的,扩展得到的路径都将比第一标签差,第二标签成本必大于第一标签,且消耗的资源项都比第一标签多,只可能比第一标签更容易超上限,故已无必要扩展,可提前删除第二标签,此操作称为第一标签“优超”第二标签。
[0099] 在搭班场景中,一个基本的标签结构包含:总成本、总执勤时长、总飞行时长、总高原航段数和执勤任务数量。容易看出,标签的部分结构与执勤任务边的权重的影响因素是相同的,但标签中除了成本,各项资源保存的累计值都有具体的上限值要求。具体的,第一标签“优超”第二标签,需满足以下条件:第一标签的总成本小于等于第二标签的总成本、第一标签的总执勤时长小于等于第二标签的总执勤时长、第一标签的总飞行时长小于等于第二标签的总飞行时长、第一标签的总高原航段数小于等于第二标签的总高原航段数以及第一标签的执勤任务数量小于等于第二标签的执勤任务数量。
[0100] 其中,执勤任务数量在标签每经过一个节点就自增1,故不需要在节点属性中保存。
[0101] 在本发明实施例中,基于带资源约束的最短路径问题标签算法,通过资源扩展、标签合法性检查、标签比较与优超操作,显著提高了计算航班任务串的效率和准确性。
[0102] 示例性的,如图4中的(b)所示,由于出发节点和到达节点被合并了,过夜边数量显著减少。从第一个到达节点X扩展到下一组到达节点Y1/Y2/Y3,都经过同一条过夜边,资源扩展操作次数为n+n,资源扩展操作的时间复杂度降为O(n),在实际搭班应用中,可实现几十甚至几百个出发节点或到达节点合并为一个节点的效果,使得SPPRC算法的性能得到显著的提升。
[0103] 本发明实施例提供的航班任务串生成方法,通过获取飞行机组的飞行航段数据,生成满足预设业务规则的执勤任务;根据所述执勤任务建立节点和边,以所述节点和所述边构建第一网络图;其中,所述节点包括出发节点、到达节点、虚拟起点和虚拟终点,所述边包括执勤任务边、过夜边、虚拟起始边和虚拟终止边;设置所述第一网络图中的执勤任务边和过夜边的权重值,并将满足预设合并规则的节点进行合并,得到第二网络图;基于带资源约束的最短路径问题标签算法,获取所述第二网络图的最优路径,得到航班任务串,能够优化网络图结构,有助于高效地得到飞行机组搭班的最优方案。
[0104] 参见图5,图5是本发明实施例提供的航班任务串生成装置10的结构框图,所述航班任务串生成装置10,包括:
[0105] 执勤任务生成模块11,用于获取飞行机组的飞行航段数据,生成满足预设业务规则的执勤任务;
[0106] 第一网络图构建模块12,用于根据所述执勤任务建立节点和边,以所述节点和所述边构建第一网络图;其中,所述节点包括出发节点、到达节点、虚拟起点和虚拟终点,所述边包括执勤任务边、过夜边、虚拟起始边和虚拟终止边;
[0107] 第二网络图获取模块13,用于设置所述第一网络图中的执勤任务边和过夜边的权重值,并将满足预设合并规则的节点进行合并,得到第二网络图;
[0108] 最优路径获取模块14,用于基于带资源约束的最短路径问题标签算法,获取所述第二网络图的最优路径,得到航班任务串。
[0109] 可选的,所述执勤任务生成模块11,还用于:
[0110] 选取间隔超过预设时间单位的所述飞行航段数据,并以所述时间单位进行切割,得到多份切割数据;
[0111] 将每一份所述切割数据的航班按照第一衔接规则进行组合,并枚举得到所有的所述执勤任务;
[0112] 其中,所述第一衔接规则包括通过起飞落地站进行衔接和通过过站时间进行衔接。
[0113] 可选的,所述第一网络图构建模块12,还用于:
[0114] 所述出发节点,具有所述执勤任务的出发机场、出发时间、机型组、入边节点列表和出边节点列表5个属性;
[0115] 所述到达节点,具有所述执勤任务的到达机场、到达时间、机型组、入边节点列表和出边节点列表5个属性;
[0116] 所述虚拟起点,用于连接所有以同一出发机场为基地的出发节点;
[0117] 所述虚拟终点,用于连接所有以同一到达机场为基地的到达节点。
[0118] 可选的,所述第一网络图构建模块12,还用于:
[0119] 一个所述出发节点和一个所述到达节点之间建立一条所述执勤任务边;
[0120] 当两个所述执勤任务之间满足第二衔接规则时,则在第一个所述执勤任务边的到达节点与第二个所述执勤任务边的出发节点之间建立一条所述过夜边;
[0121] 当所述虚拟起点与所述执勤任务边的出发节点均以同一出发机场为基地时,建立一条所述虚拟起始边;
[0122] 当所述虚拟终点与所述执勤任务边的到达节点均以同一到达机场为基地时,建立一条所述虚拟终止边。
[0123] 可选的,所述第二衔接规则包括:
[0124] 第一个所述执勤任务边的到达节点的到达机场与第二个所述执勤任务边的出发节点的出发机场一致;
[0125] 第一个所述执勤任务边的到达时间与第二个所述执勤任务边的出发时间的时间间隔满足预设的过夜时长;
[0126] 第一个所述执勤任务边的到达节点的机型组与第二个所述执勤任务边的出发节点的机型组一致。
[0127] 可选的,所述第二网络图获取模块13,还用于:
[0128] 对于多个所述到达节点,当其到达机场、到达时间、机型组和出边节点列表一致时,将所述多个所述到达节点合并成单个到达节点;
[0129] 对于多个所述出发节点,当其出发机场、出发时间、机型组和入边节点列表一致时,将所述多个所述出发节点合并成单个出发节点。
[0130] 可选的,所述最优路径获取模块14,还用于:
[0131] 选择某个所述节点为源点,当标签在所述源点时,将所述标签上的各项资源和成本进行初始化;
[0132] 每经过一个到达节点时,路径会进行资源扩展,所述标签会根据所述路径上的标签进行资源累加和成本累加;
[0133] 其中,所述路径上的标签是根据所经过边的权重的影响因素和执勤任务数量进行资源累加和成本累加。
[0134] 可选的,所述最优路径获取模块14,还用于:
[0135] 当所述标签在经过一条过夜边和一条执勤任务边后,若某项资源超出上限,则删除所述标签,结束所述路径的资源扩展;若各项资源均未超出上限,则说明所述标签合法;
[0136] 对当前节点的不同标签进行比较,若第一标签的各项资源和成本均优于第二标签,则所述第一标签优超所述第二标签,删除所述第二标签。
[0137] 值得说明的是,本发明实施例所述的航班任务串生成装置10中各个模块的工作过程可参考上述实施例所述的航班任务串生成方法的工作过程,在此不再赘述。
[0138] 本发明实施例提供的航班任务串生成装置,通过获取飞行机组的飞行航段数据,生成满足预设业务规则的执勤任务;根据所述执勤任务建立节点和边,以所述节点和所述边构建第一网络图;其中,所述节点包括出发节点、到达节点、虚拟起点和虚拟终点,所述边包括执勤任务边、过夜边、虚拟起始边和虚拟终止边;设置所述第一网络图中的执勤任务边和过夜边的权重值,并将满足预设合并规则的节点进行合并,得到第二网络图;基于带资源约束的最短路径问题标签算法,获取所述第二网络图的最优路径,得到航班任务串,能够优化网络图结构,有助于高效地得到飞行机组搭班的最优方案。
[0139] 此外,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行上述航班任务串生成方法。
[0140] 本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序;其中,所述计算机程序在运行时控制所述计算机程序产品所在的设备执行上述航班任务串生成方法。
[0141] 参见图6,图6是本发明实施例提供的一种航班任务串生成设备20的结构框图,所述航班任务串生成设备20包括:处理器21、存储器22以及存储在所述存储器22中并可在所述处理器21上运行的计算机程序。所述处理器21执行所述计算机程序时实现上述航班任务串生成方法实施例中的步骤。或者,所述处理器21执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能。
[0142] 示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器22中,并由所述处理器21执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述航班任务串生成设备20中的执行过程。
[0143] 所述航班任务串生成设备20可包括,但不仅限于,处理器21、存储器22。本领域技术人员可以理解,所述示意图仅仅是航班任务串生成设备20的示例,并不构成对航班任务串生成设备20的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述航班任务串生成设备20还可以包括输入输出设备、网络接入设备、总线等。
[0144] 所述处理器21可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field‑Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器21是所述航班任务串生成设备20的控制中心,利用各种接口和线路连接整个航班任务串生成设备20的各个部分。
[0145] 所述存储器22可用于存储所述计算机程序和/或模块,所述处理器21通过运行或执行存储在所述存储器22内的计算机程序和/或模块,以及调用存储在存储器22内的数据,实现所述航班任务串生成设备20的各种功能。所述存储器22可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0146] 其中,所述航班任务串生成设备20集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器21执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。
[0147] 以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。