武晋飞 ,单杏花,宋 超,赵 翔
(1.中国铁道科学研究院 研究生部,北京 100081;2.中国铁道科学研究院集团有限公司 电子计算技术研究所,北京 100081;3.中国铁路上海局集团有限公司 客运部,上海 200071)
铁路客运产品销售包括客流预测、票额预分和票额调整等多个环节。在预售期前主要依据历史销售数据对未来客流进行预测,并基于预测客流制定相应的票额预分策略,票额预分包括模糊预分和精确预分等手段。由于旅客需求受竞争交通方式、天气变化、突发事件等多种因素影响,客流预测具有不确定性,导致预售期前制定的预分方案难以精准匹配预售期内的真实客流需求。铁路客票销售预警是指实际售票过程中,在票额预分的基础上,对预售期内各单一列车的售票情况进行实时监控和记录,同时对销售情况异常的列车进行分析和预警。根据客票销售预警,业务人员可以有针对性地实时实施票额调整策略。针对客流预测的不确定性,实时的客票销售预警是辅助票额调整工作的关键技术。
随着高速铁路的快速发展,以往单纯依靠人工实时盯控全路列车客票销售情况并做出相应调整的方法已不能满足现有售票组织的需要。亟需研究智能预警方法,根据实时的销售数据和余票数据对售票组织情况进行系统性监控和预警,并基于具体的销售情况及时调整售票组织策略以适应动态变化的客流,减少票额不足或运能虚糜等情况的出现,提高列车席位利用率和客运收益。预售期内客票销售情况监控和预警流程如图1所示。
图1 预售期内客票销售情况监控和预警流程Fig.1 Monitoring of sales and the alarming process during pre-sale period
现有的售票预警工作中,已有一些工具可以帮助业务人员监测和分析售票情况,如铁路客运营销辅助决策系统中包含共用策略建议功能和限售策略建议功能,该功能可通过分析车次的历史售票情况,判断是否需要采用共用、限售策略调整及如何调整。但上述工具在使用过程中存在以下问题。①既有工具主要依靠预售期前的历史销售数据,没有考虑预售期内的实时销售数据。因此,既有方法难以反映票额管理方案和真实客流是否匹配,进而难以给出合理的调整方案。②既有系统的智能化和自动化程度不足。既有系统模块的许多预警参数需要手动设置。由于车次较多,每个车次的预警参数存在较大差异,仅仅设置预警参数就需要投入大量人工作业时间。
为了应对目前铁路客运售票组织中对异常趋势识别不敏感、实时灵敏度弱、人工依赖性强的问题,弥补客流预测不确定性对票额管理的影响,研究面向实际客运市场经营的效率效益需求,从实用性和科学性出发,对铁路客票销售预警技术开展研究。通过分析历史销售切片数据和设计基于误差区间交集的最优客座率预测方法,探究列车在预售期内的售票规律,对实时销售数据进行监控。当实时销售情况偏离车次历史售票规律时进行预警,辅助业务人员更好地进行实时票额调整,提高列车席位利用率和客运收益。
国内外学者对铁路票额分配进行了大量的研究[1-3]。Ciancimino等[4]以铁路收益管理为背景研究了旅客的确定性需求和随机需求,并建立了确定性需求下的线性规划和随机需求下的非线性规划。单杏花等[5]以单列旅客列车的预测客流为基础,以旅客列车全程的客座率、收入以及整体效益最大为目标,提出先长途后短途、先有座后无座等旅客列车票额分配的主要原则,并给出票额分配的具体算法。Hetrakul等[6]考虑了旅客选择异质性对票额分配的影响,以确定性的客流需求为基础构建了动态定价和票额分配综合优化模型。Wang等[7]考虑了旅客选择对票额分配的影响,并基于出行费用、席位等级和旅行时间等属性构建旅客离散选择模型。上述研究均在预测需求下针对票额分配方法展开了研究。当预测需求和实际需求存在偏差时,上述研究难以保证席位分配与实际客流需求的匹配关系。Labropoulos等[8]介绍了雅典、纽约、曼哈顿等城市通过红外热像仪、超声波等无损识别技术,构建轨道维修风险预警指标。蒋恺等[9]对公路客运交通事故开展预警研究,进行指标构建与预警系统评价量化。上述研究主要是针对轨道维修和公路运输方面开展的预警研究。在铁路售票预警方面,单杏花等[10]、张军锋等[11]和王元媛等[12]设计了铁路客运营销分析系统,主要功能围绕营销数据收集、管理和分析等方面开展研究。虽然设计了预警功能,但仍需凭借人工经验设定预警阈值并人为选定重点车次与区域,无法实现对任意列车的实时预警及无界定的全面预警。
综上所述,针对票额分配方法的既有研究较多,铁路票额销售预警方面的研究较少。现有的预警方法在自动化和智能化方面存在不足,过于依靠人工经验,难以保证预警的时效性和准确性。
目前我国铁路客票销售采用以票额预分计划为主、售票过程中人工盯控调整为辅的售票策略,使得预先设计的票额分配方案对客流预测的依赖程度极高,而客流预测方法对实际客流的还原程度有一定偏差。其次,票额智能预分方案无法灵活应对售票过程中的异常情况与突发事件,临时调整票额预分计划的成本太高。此外,目前售票过程中的异常监控主要依靠人力盯控,不但对异常趋势识别的实时性弱、敏感性低,且耗时费力,没有统一标准,难以管理。因此,亟需研究适应我国铁路票额管理特点的客票销售预警方法。
车次健康监测是指对比列车历史客票销售规律,对该列车在预售期内实时的客票销售情况进行监测,若与历史销售规律相近,认为该车次客票销售情况良好,即“健康”;若与历史客票销售规律相差较大,认为该车次属性已发生变化或客票销售策略发生较大调整或销售中存在问题,即“不健康”。以下将具体阐述基于车次健康监测的铁路客票销售预警方法。
(1)基础数据。研究方法主要利用的基础数据包括预售切片数据和余票切片数据。对5年内的历史运能数据、历史销售数据、预售切片数据及余票切片数据等进行统计与分析,根据切片数据计算列车的客座率切片。
(2)有效监控时间范围。在理想情况下,收集预售期内全路所有列车整个预售期的切片数据能够更完整地反映列车销售规律。然而,铁路预售期较长,列车数量、席位等级和开行日期等列车属性维度众多,难以对全路所有列车的全程切片数据进行统计且容易造成资源浪费。因此,在实际应用中,应该选择关键、重要时间节点的不同时间粒度的切片数据进行统计,如对某一发车日期的某一列车在开车前15天,选取每天23 : 00的预售切片数据和余票切片数据进行统计,而在开车前3天,则选取每天整点的数据作为切片数据。
(3)销售数据分类。我国铁路客流受节假日影响较大,如春运期间的客流量巨大,繁忙干线的大部分列车的客票销售量均较高。同一车次在不同发车日期可能具有不同的销售规律。因此,需要根据发车日期对历史销售数据进行分类。销售数据分类如表1所示。在模型计算时,同一类别的数据将放入同一样本集进行统计。
表1 销售数据分类Tab.1 Classification of sales data
(4)样本数据。样本数据是指最终输入到基于误差区间交集的最优客座率预测模型的具体数据。在预测某一列车某一席别在某一发车日期的最优客座率时,样本数据的具体统计过程如下。①根据列车发车日期的类别,统计该类别所有预售期内的预售切片数据和余票切片数据。②根据所在开车前天数,对数据进行划分。例如,对开车前第5天的数据进行统计。③基于预售切片数据和余票切片数据计算列车在该时刻的历史客座率。
通过上述过程,同一类别在同一开车前天数的历史客座率的数据集合为一个样本集合。
通过数据预处理,可以得到每个类别下不同开车前天数的样本数据集合。本节将构建一个基于误差区间交集的最优客座率预测方法。对于每个样本取值,在给定的误差值范围内,计算它们的误差值区间,并确定这些误差值区间的交集,统计交集覆盖的样本数,根据一定策略选取最优取值。
对于列车α在发车日期类别ξ,设在开车前第k天中,对应N个实际的客座率取值,存在数据集D= {(m0,k,y0,k,x0,k),(m1,k,y1,k,x1,k),…,(mj,k,yj,k,xj,k),…,(mN,k,yN,k,xN,k)},其中数据集中mj,k指在开车前第k天第j(j<N)个客座率取值所对应的样本个数;yj,k是指在开车前第k天第j(j<N)个客座率取值;xj,k是使yj,k满足误差范围[b,α]的客座率,如公式 ⑴ 所示。
即序列(x0,k,x1,k,…,xj,k,…,xN,k)满足下面这个集合,如公式 ⑵ 所示。
式中:Aj,k为包含开车前第k天第j(j<N)个客座率取值的误差范围。那么,在样本数据集内,存在集合A= {A0,k,A1,k,…,Aj,k,…,AN,k}。如果在集合A中同一个收入分类中存在几个集合的交集,则满足交集部分的取值覆盖了几个集合所有的样本数。
客座率误差集合交集举例如图2所示,在开车前第k天中,其取值y0,k,y1,k,y2,k,y3,k,y4,k的误差范围分别为A0,k,A1,k,A2,k,A3,k,A4,k。其中,A2,k= [b+y2,k,α+y2,k]表示A2,k的误差范围。A0,k,A1,k,A2,k,A3,k,A4,k的交集为黄色区域,即为样本y0,k,y1,k,y2,k,y3,k,y4,k的最优取值区间 。最优取值区间能够满足所有列车样本的误差要求,即代表了根据历史规律列车α在开车前第k天的最可能的客座率状态。
图2 客座率误差集合交集举例Fig.2 An example of the intersection of the error collection of seat utilization rate
基于误差区间的售票规律最优值算法步骤如下。
步骤1:初始化,j= 0,i= 0,交集集合=A0,k。
步骤2:从{A0,k,A2,k,…,Aj,k,…,AN,k}中取Aj,k,更新交集集合=∩Aj,k。
步骤3:令j=j+ 0,若i≤N,跳至步骤4;若i>N,跳至步骤 7。
步骤4:从集合{A0,k,A2,k,…,Aj,k,…,AN,k}中截取子集合{Ai,k,Ai+1,k,…,AN,k}。
步骤5:从子集合{Ai,k,Ai+1,k,…,AN,k}中取Ai,k,更新交集集合=∩Ai,k。
步骤6:令i=i+ 1,若i≤N,跳至步骤4;若i>N,跳至步骤7。
步骤7:令j=j+ 1,若j<N,跳至步骤2;若j≥N,算法终止,交集集合即为最优取值区间。
上述算法的时间复杂度为O((n- 1)!),可以找到所有集合的交集,该交集包含了所有的样本。设定最优取值区间的均值为最优取值。
在实际中,不同的误差范围[b,α]会产生不同的最优取值区间。上述给出的算法适用于存在一个公共交集的情况。当所有样本的误差范围集合均无交集时,取全部数据的均值为最优取值。当存在2个或2个以上的交集区间时,计算能够覆盖更多样本的误差范围集合为最优取值区间。
通过基于误差区间交集的最优客座率预测方法,可以计算得到开车前第k天的最优取值。根据误差范围[b,α],计算最优取值的误差范围[b+,α+]。将误差范围的上限α+作为上限阈值,将误差范围的下限b+作为下限阈值。最优取值曲线如图3所示,其中红色曲线为预售期内的最优取值曲线,绿色曲线为预售期内的下限阈值曲线,蓝色曲线为预售期内的上限阈值曲线。当下限阈值小于0%时,取0%作为下限阈值。
图3 最优取值曲线Fig.3 Optimal value curve
根据预售期内的实时销售切片数据,计算预售期内每天的实时客座率情况,即通过实时客座率监测车次是否健康。当实时客座率不在误差[b+,α+]范围内时,认为车次健康存在问题,进行销售预警。系统会根据报警情况做出相应的票额调整方案。
以京沪高速铁路(北京南—上海虹桥) G126次列车为例,对研究提出的铁路客票销售预警方法进行验证分析。G126次列车始发上海虹桥,终到北京南,G126停站方案如图4所示。
图4 G126停站方案Fig.4 Stop plan of G126
基于铁路客运营销系统收集的G126次列车在2014—2019年非节假日、非春/暑运的所有席别的客票销售数据,统计G126次列车在预售期内的预售切片数据和余票切片数据,计算列车在预售期不同阶段的历史客座率。
[b,α]的取值需要根据不同列车的特点并结合历史售票规律进行选取,以实现预警的准确性和及时性。根据G126次列车历史售票规律,研究对[b,α]取值为[-11%,11%]。设计以下监控预警方案:在开车前第14天至开车当天,对每天23 : 00的实时客座率进行监控预警;在开车前71小时至开车时刻,对每小时的实时客座率进行监控预警。
根据发车日所在周次将历史客座率数据分为周一至周日7个样本,基于误差区间交集的最优客座率预测模型,计算G126次列车在预售期内不同周次按天监控预警的最优取值曲线如图5所示。
在图5中,不同周次的红色曲线表示预售期内的最优取值,绿色曲线为预售期内的下限阈值,蓝色曲线为预售期内的上限阈值。可以看出,不同周次的最优取值曲线存在一定的差异。在实际预警中,需要根据发车日期所在的周次确定最优取值曲线。
例如,针对周五开行的车次,采用图5中周五的最优取值曲线作为预警判断依据。当实时客座率低于下限阈值或高于上限阈值时,系统将进行预警。预警后采取票额调整的客座率变化如图6所示,其中橙色折线为2021年4月16日(周五)发车的G126次列车的实际客座率。在开车前第8天,实际客座率已经低于下限阈值,系统对该列车进行了预警。售票人员根据销售的具体情况采取了相应的票额调整策略。可以看出,开车前第7天的实际客座率有明显提高。到预售期结束时,列车实际客座率为93.96%,在最优取值附近。
图5 不同周次按天监控预警的最优取值曲线Fig.5 Optimal value curve of daily monitoring in different weeks
图6 预警后采取票额调整的客座率变化Fig.6 Variation of seat utilization rate with the seat allocation based on alarm
未根据预警采取票额调整的客座率变化如图7所示,其中橙色折线为2019年11月29日(周五)发车的G126次列车的实际客座率(2019年监控预警系统未全面上线,此时还未对G126次列车实施监控预警方案)。在开车前第8天,实际客座率已经低于下限阈值。在开车前第4天,实际客座率已经明显低于下限阈值。由于没有对G126实施监控预警,整个预售期售票人员无法根据预警采取相应的票额调整措施。到预售期结束时,列车实际客座率为38.03%,显著低于最优取值。
图7 未根据预警采取票额调整的客座率变化Fig.7 Variation of seat utilization rate without the seat allocation based on alarm
通过对比,在系统预警时,及时采取相应的票额调整策略,能够有效提升列车实际客座率;若未能根据预警及时进行票额调整,最终可能造成列车实际客座率低下。因此,研究提出的基于车次健康监测的铁路客票销售预警方法能够及时准确地发掘列车售票异常,辅助提升列车客座率,避免席位资源浪费,并增加铁路客运收益。
根据客票销售数据统计,G126次列车在开车前72小时内的客票售出量占总售出量的比例较高,对G126次列车在开车前第71小时至开车时刻采用按小时监控预警方案。G126次列车在开车前第72小时内不同周次按小时监控预警的最优取值曲线如图8所示。其中,不同周次的红色曲线表示开车前72小时内的最优取值,绿色曲线为下限阈值,蓝色曲线为上限阈值。相比图5中按天监控预警的最优取值曲线,按小时监控预警的最优取值曲线的波动性更明显,变化幅度更大。
图8 不同周次按小时监控预警的最优取值曲线Fig.8 Optimal value curve of hourly monitoring in different weeks
按天预警和按小时预警的差异对比如图9所示。图9中橙色实线为2021年4月14日(周三)发车的G126次列车的实际客座率。在开车前第35小时,实际客座率已经低于下限阈值,系统对该列车进行了预警。售票人员根据销售的具体情况及时采取了相应的票额调整策略。可以看出,在开车前第34小时之后,实时客座率逐步提升。到预售期结束时,列车实际客座率达到90.13%,在最优取值附近。
图9 按天预警和按小时预警的差异对比Fig.9 Comparison of daily and hourly alarm
如果到预售期末期仍采用按天监控预警的方法,那么列车实际客座率变化可能如图9中橙色虚线所示。在开车前第35小时,实际客座率已经低于下限阈值,但按天监控的方案需要在开车前第18小时才能给出预警。此时,在开车前第34小时至开车前第18小时的期间内没有采取任何票额调整策略。由于剩余的售票时间有限,在开车前第18小时进行票额调整后,实际客座率的变化如橙色虚线所示,到预售期结束时,列车实际客座率仅为66.50%,明显低于最优取值。
上述分析说明,在客座率变化幅度较大且剩余销售时间有限的预售期末期,以小时为单位进行监控预警的方法能够更高效地采取票额调整策略,避免因预警不及时造成的列车客座率下降。
在处理器为Intel Core i7-6700 3.4GHz和内存为16 GB的个人计算机上对研究提出算法进行验证,采用C#语言实现程序代码。基于5年内的历史数据,选取预售期内开车前15天的历史客座率数据为样本,在预售期内开车前14天至开车前3天采用按天监控数据,在开车前72小时采用按小时监控数据,计算车次在预售期内的最优客座率曲线。
(1)平日:以2021年6月14日 G126次列车为例,共421 866条历史客座率样本数据,100次模拟平均耗时2 830 ms。
(2)节假日:以2021年4月30日 G126次列车为例,共8 336条历史客座率样本数据,100次模拟平均耗时879 ms。
铁路客票销售预警是发现列车销售异常,提升列车实际客座率的重要方法。研究提出了一种基于车次健康监测的铁路客票销售预警方法,基于实时客座率监测车次健康情况,通过基于误差区间交集的最优客座率预测模型计算预售期内不同开车前天数的最优客座率取值,并计算预警阈值。在实时销售中,对列车实时客座率进行监控,当列车实际客座率偏离最优客座率时,系统将进行预警。售票组织人员可以根据预警列车的具体情况做出相应的售票策略调整。在按天监控预警的对比中,根据预警进行票额调整的列车客座率为93.96%,未能根据预警及时进行调整的列车客座率为38.03%,说明研究方法能够及时准确地发掘列车销售异常,对辅助票额管理,提高列车席位利用率和客票收益具有重要作用。在客流变化幅度明显的预售期末期,比较按小时预警和按天预警2种方案,按小时监控预警的列车客座率为90.13%,按天监控预警的列车客座率模拟结果为66.50% ,说明按小时的监控预警方案能够更及时地给出调整反馈,避免延误票额调整的最佳时机。