针对由多种资源构成的产品的数量型收益管理方法,通常也称为“网络收益管理”。网络收益管理问题来自于航空、铁路、游轮和酒店业的收益管理,类似的场景为:客户在某些条款限制下购买由多种资源打包成的产品。在航空业中问题可描述为管理航线网络上一组联程航班的库存,这里的航班可以是联程的,也可以是甩飞的。此时称问题为“OD行程的运价舱位组合”,或ODIF。
资源打包成产品后销售和单一资源的销售不同:如构成产品的任一资源不足,则产品不能销售。构成产品的资源之间存在关联,所以如要最大化整体收益,需要协同对所有资源的库存控制。为了简单,我们假设在数量型收益管理中,所有产品的价格是固定的(在现实中亦是如此;这里所说的“价格固定”是指产品价格的上限固定,可以有折扣),我们需要优化的是对不同产品分配资源库存的问题。在航空业中这类问题称为“旅客混合问题”或“O&D控制”。以下我们都使用标准的术语:网络收益管理——虽然这有点用词不当,因为不是所有的场景中都有“网络”。
虚拟嵌套和bid-price控制
最常用的网络收益管理方法是“虚拟嵌套控制”和“Bid-Price控制”。在航空业中,网络收益管理通常只用于联程航班的库存数量分配,航班座位和附加服务的打包销售由复杂规则引擎管理,但即使是最复杂的规则引擎,因为还是由“人”设置规则,其效果也不如收益管理系统。
虚拟嵌套控制实际是混合了网络和单一资源控制方法。普遍认为是AA发明了这一方法(论文见:Circa1983),基于当时AA的单资源预订系统,在一定程度上实现了网络控制和原嵌套分配结构(舱位Nesting)的整合。
虚拟嵌套控制通常使用给定的资源用虚拟舱位来对产品分组,通过“indexing”过程将产品分配到虚拟舱位上,“indexing”过程根据产品的“网络价值”对其聚类,并随着“网络需求模式”变化而定期改变,然后针对这些虚拟舱位来计算每种资源的嵌套预订限制(或保护等级)。判断是否接受对网络产品的需求时,系统根据虚拟舱位检查每一类构成资源是否可利用,如所有资源都可用,则虚拟舱位开放,如任一资源不可用,则虚拟舱位关闭——舱位开放则接受,否则拒绝,这一点没变。
由于虚拟嵌套控制是单资源和多资源收益管理方法的混合,它最大优势在于可在legacy系统上逐步实现过渡。同时混合的方式也带来一些问题,如要求更多的数据,模型和计算步骤复杂,可能引入“噪音”和收益管理人员不易理解等。
对于那些没有legacy包袱的行业或企业,bid-price控制是更好的选择。该方法简单,直观,是目前最强大的网络收益控制方式。bid-price控制对构成网络的每种资源都设置阈值(即bidprice,或底价),bidprice通常是指在网络中消费下一个资源的估计边际成本。当对产品的需求到达系统时,用请求价格(收入)和构成产品的资源的bidprice之和相比,如果请求价格高则可接受请求,否则拒绝。
当然bid-price控制也有问题,一些反对者认为bid-price的计算过程“不安全”,同时在legacy系统上应用bid-price控制需要巨大的改动,特别是实时seamlessAV改造对ICS的影响较大.再者这种控制方法颠覆了企业内部的收益管理人员的观念,有较高的学习曲线和培训成本。
最近国内航空公司逐步在国际线上试用bid-price,效果尚未显现。国外bid-price控制在航空业和酒店业中基本已占到统治地位。
以某甩飞航班为例介绍简单的OD分析方法
通常OD收益分析和控制都是由大型软件系统来完成的,作者将以青岛天津呼和浩特的甩飞航线为例,尝试解释OD收益管理的内部流程,结合上面的介绍剖析OD的基本原理。
本文中数据来自互联网,因作者水平所限难免有错漏之出,请读者指正。
案例说明
使用TAO→TSN→HET航线为例,TAOTSN津航程477公里,某日经济舱全价970元,最低价380元;TSNHET航程612公里,同日经济舱全价710元,最低价420元;TAOHET航程1089公里,同日经济舱全价1030元,最低价590元。下表是每个航段的实际乘机旅客数、最高、最低票价,以及旅客数、最高、最低座公里收入。
按正常收益管理的老套路,分为预测和优化两个步骤。
需求预测
优化过程
最大,其中R是该航段上所有舱位的收入总和;r是舱位j在bookinglimit=
在我们的甩飞航班例子中,还多一个维度“航段”,所以上述最优化问题需要求三个航段收入之和的最优解或局部最优解。此处不再赘述。
将需求预测和优化过程分离的好处在于,可以分开验证预测和优化的效果。需求预测结果可以很容易的用当下真实的销售数据进行校正,优化效果则即可容易的用来衡量整套方法的绩效,也能为航空公司用户展示未来的收入预期情况。这也是“监督机器学习”概念的应用。
实践进展
上述方法从虚拟嵌套和bid-price控制中都汲取了很多想法,为了能在实践中逐步落地,做了大量简化与假设,具体效果则仍然有待观察和验证。
作者所在的企业目前正根据上述方法对某航的甩飞航班进行实验性分析,使用了自2015年12月至今近6个月的全行业及某航自身数据,并使用Scala语言在Spark平台上基于Spark提供的现成算法进行改进和研发。目前最新Spark版本1.6.1的MLlib模块中提供了大量的分类/聚类、预测和优化的算法,相信随着Spark及MLlib和pipeline快速发展,这些机器学习算法会越来越多,越来越好用。
上面提到的功能预计今年6月可为某航试用,同时作者认为,将最新的IT技术(如Spark分布式内存计算框架和机器学习算法)与航空公司传统的收益管理应用结合起来,在计算效率、精度、准确性、实效性方面获得巨大提升,是一个非常有前景的领域,作者及其团队已经积累了相当的经验,并已应用于产品的研发。也希望航旅IT圈中对这个领域感兴趣、想致力于此的读者加入我们的行列,共同在民航数据分析的路上越走越好:)