航班座位控制模型实现与分析

2022-03-09 01:22王洪建
软件工程 2022年2期

文章编号:2096-1472(2022)-02-26-03

DOI:10.19644/j.cnki.issn2096-1472.2022.002.007

摘  要:收益管理是航空公司在航班销售期间合理分配有限的航班座位,以期在竞争环境下获得最大收益的有效经营策略。本文首先介绍了座位分配常用的两种算法;然后给出了算法的实现方法,并特别强调了在不同应用环境下开发算法动态链接库的方法;最后对两种算法的计算结果和计算时间进行了细致的比较分析。结果表明,两种算法在座位分配效果上无明显差异,但第二种算法有明显的计算时间优势,可为航空公司业务实践提供指导。

关键词:收益管理;座位分配;期望边际座位收益;动态链接库

中图分类号:TP311.1     文献标识码:A

Implementation and Analysis of Flight Seat Control Model

WANG Hongjian

(Xiamen Airlines, Xiamen 361006)

wanghongjian@xiamenair.com

Abstract: Revenue management is an effective business strategy for airlines to reasonably allocate limited flight seats during flight sales in order to obtain maximum revenue in a competitive environment. Firstly, two commonly used algorithms for seat allocation are introduced. Then this paper proposes to realize an algorithm implementation method, and particularly emphasize the method of developing algorithm dynamic link library in different application environments. Finally, the calculation results and calculation time of the two algorithms are compared in detail. Results showed that there is no obvious difference between the two algorithms in seat allocation effect, but the second algorithm has obvious advantages in computing time and provides guidance for airline business practices.

Keywords: revenue management; inventory control; expected marginal seat revenue; dynamic link library

1   引言(Introduction)

中国民航运输业务随着国家经济规模的持续增长而迅速增长,但也带来各航空公司之间持续不断的激烈竞争。航空公司之间竞争的焦点是服务与价格的组合竞争,而解决这一竞争的重要技术之一是已被世界上超过80%的航空公司采用的收益管理理论与方法[1]。收益管理的主要目标是在航班销售周期内,针对固定数量的航班物理座位,动态划分和控制不同价格的不同舱位的实际可利用座位数,以使这种易逝类商品能分别以较高的价格出售,达到航班收入最大化的目标[2]。多年来,这一方法为世界范围内的大中型航空公司每年增加数亿元的额外收入,是航空公司经营过程中普遍采用的重要方法。在大数据及人工智能蓬勃发展的今日,这一方法已经扩展到酒店、出租车、高铁等多个行业[3],产生了巨大的社会经济效益。

国内有关收益管理方法的研究,早期更关注国外相关概念的全盘引入[4],或基于基础概念在多航段应用场景下的扩展[5]。由于座位分配的基础算法[6-7]需要大量的积分运算,在实际工程应用中有一定的实现难度,且对运行时间要求很高,因此国内航空公司主要采用国外的软件系统,在核心算法的实现上缺少自主研发且实际投入使用的类似系统。

为此,本文给出了两种主流座位分配算法的软件设计与实现方法,并分析比较了这两种算法的适应场景,为国产化同类软件系统的研究与开发进行了有益尝试。

2   航班座位控制算法(Flight seat control algorithm)

航班销售过程统计数据表明,一般高价舱位旅客会晚于低价舱位旅客购票,因此,航班座位控制的关键是在已知剩余座位数和各舱位预测需求的情况下,针对各舱位的可销售座位数的设定,可销售座位数称为AU(Available Unit, AU)。假设航班目前共有100 个剩余座位,有Y、P、E共3 个价格从高到低的舱位可供销售,设定AU数依次为100、80、50。该设定允许低价舱位旅客购买高价舱位机票,反之,则受到限制。当E舱位销售数超过50时,就要关闭该舱,仅容許销售Y和P两个更高价舱位,当P舱和E舱的销售数之和大于80(30+50)时,就要关闭P舱和E舱,仅保留Y舱销售。由此可见,AU的设置首先需要计算高价舱位对低价舱位的座位保护数[6],此例中,Y舱对P舱和E舱的保护座位数为20,P舱对E舱的保护座位数为30。这样的座位控制策略可以保证预期高价舱位旅客的订座需求,从而达到航班销售收入最大化的目的。实际使用中,一般假定各舱位旅客的需求服从正态分布,先得到各舱位的订座需求预测结果,然后采用期望边际座位收益(Expected Marginal Seat Revenue, EMSR)模型进行各舱位的保护数计算。EMSR的方法最早由麻省理工学院的PETER提出,称为EMSRa模型[6],后又经改进,称为EMSRb模型[7]。这两种模型,特别是后期提出的EMSRb模型,已经成为收益管理的基准座位分配模型,在学术界得到长期关注,在产业界得到广泛应用。

2.1   EMSRa模型

显然,EMSRb模型和EMSRa模型相比,可明显减少积分运算次数。

3   算法实现(The implementation of the algorithm)

3.1   算法实现流程

依据前面介绍的算法模型,假设给定Y、Q、E、P共4 个从高价到低价的舱位。本文设计了EMSRa和EMSRb的模型计算流程图,分别如图1和图2所示。在图1的公式(1)计算和图2的公式(6)计算步骤,需要依据输入得到的各舱位需求预测的均值和标准差按照正态分布进行积分运算,以获得相应公式中的概率。

3.2   动态链接库

由于上述EMSR算法实现较为复杂,且在航空公司的实际应用中往往需要在多个相关应用系统调用,满足不同编程语言环境使用的需求,因此,借鉴其他研究者在类似应用环境下的编程经验[8-9],本文采用动态链接库实现两个算法,并用C++编程实现。

动态链接库有宏定义和模块定义两种实现方法,宏定义在函数调用时,需在宿主语言进行预声明,使用起来较为麻烦;模块定义方式在宿主语言中的使用较为简洁,因此本文选择模块定义的方式实现。

动态链接库的编写过程如下:

(1)创建一个源文件作为定义的dll应用程序的入口,并在该源文件中依次用非托管的方法编写EMSR算法,然后将得到的座位分配数作为返回值依次输出;

(2)宏定义extern "C" __declspec(dllexport),以便于在编写应用程序时通过DllImport调用非托管的C++编写的dll文件;

(3)编写def模块,并编译项目,在Debug目录生成dll文件;

(4)将生成的dll文件放到应用程序项目文件夹下bin目录中的Debug目录下;

(5)在应用程序中添加对“System.Runtime.InteropServices”的引用,以调用DllImport;

(6)用DllImport作为C#中对C++编写的dll文件的导入入口特征,并通过static extern与dll文件中宏定义的extern "C"进行对应,完成对动态链接库的调用。

4   算法分析与比较(Algorithm analysis and comparison)

为了比较算法的有效性,本文选取三种典型情况进行计算结果分析。取价格从高到低Y、Q、E、P共4 个舱位,总需求在下面说明范围内较小浮动,AU数(AUY、AUQ、AUE、AUP)为分别采用EMSRa和EMSRb算法得到的决策结果,即在航班剩余座位数已知的情况下,如何给上述4 个舱位合理分配可销售座位数。座位分配遵从高价包含低价的原则,分配给低价舱的座位可同时被高价舱销售,因此,AUY、AUQ、AUE、AUP逐次变小。航班剩余的所有座位数都可供最高票价的Y舱销售,所以AUY等于航班当前剩余座位数。总收益指在AU数确定的情况下,航班上所有剩余座位能获得的期望座位收益总和,该值越大,说明AU数的分配越理想。

(1)情形1:在各舱价格差异较大、需求均匀增长的情况下,如Y舱价格高于2,000且其余各舱位价格差距大于500,各舱位需求从高到低在10、20、30、30左右,标准差在10%左右时,计算结果如表1所示。可见,两种算法的总收益无明显差异,EMSRa稍高。

(2)情形2:在各舱价格差异较大、高价舱与低价舱需求皆旺盛的情况下,如各舱价格同情形1,但舱位需求都在45左右变化时,计算结果如表2所示。此时可见EMSRa的P舱的分配数较EMSRb低,其E舱分配数比EMSRb稍高,但EMSRb的总收益稍高。

(3)情形3:价格同上情况下,高价舱需求较少,低价舱需求旺盛时,EMSRa总收益稍高,如表3所示。各舱位需求从高到低在3、4、10、80左右变动。

从上述分析可见,两种模型在各种情况下总收益相距甚微,但计算时间相差较大。上述情形2和3,是航空公司实际运行中经常面临的场景,且情形2对最低价舱位预留座位数较少,次低价舱位则保留了较多的座位数,这不利于需求整体旺盛时,和其他航空公司的低价竞争,因此应用场景下建议航空公司采用EMSRb算法。

5   结论(Conclusion)

针对航空公司收益管理中航班剩余座位分配的两种算法EMSRa和EMSRb,本文首先介绍了两种算法的计算原理;然后,分别给出了两种算法的实现流程,并特别强调了用C++语言将算法编写为动态链接库的方法,以期在不同应用开发环境下得到软件复用。本文在不同应用场景下仿真比较了两种算法的座位分配结果和计算实践,结果表明,两种算法的座位分配结果并无明显差异,但后者的计算效率明显优于前者。本文的研究结果可直接为航空公司相关业务实践提供指导。

参考文献(References)

[1] 李豪,彭庆,谭美容.面向乘客策略行为的航空公司舱位控制与动态定价模型[J].控制与决策,2018,33(07):1295-1302.

[2] 秦瑛,霍佳震,陈军,等.基于需求转移的航空公司座位分配博弈模型[J].统计与决策,2016,32(02):56-60.

[3] 闫振英,韩宝明,李晓娟,等.考虑旅客选择行为的高铁席位动态控制策略[J].交通运输系统工程与信息,2019,19(01):118-124.

[4] 衡红军,黄小荣,王治宝.EMSR在航空收益管理系统中的应用[J].计算机工程,2003(12):139-141.

[5] 樊玮,苏秋波.基于分布估计算法的多航段座位分配模型[J].信息与控制,2012,41(06):774-778,785.

[6] PETER P B. Application of a probabilistic decision model to airline seat inventory control[J]. Operation Research, 1989, 37(02):183-197.

[7] GUILLERMO G, HUSEYIN T. Revenue management and pricing analytics[M]. New York: Springer, 2019:23-47.

[8] 張正,贾小林.面向NB-IOT智能设备动态链接库的远程技术研究及应用[J].计算机应用与软件,2021,38(06):170-175.

[9] 刘琴.大数据分析下分布式数据流处理技术研究[J].软件工程,2019,22(12):44-46.

作者简介:

王洪建(1966-),男,硕士,高级工程师.研究领域:计算机应用,智能优化.

1276500520206