史永胜,王文琪
(中国民航大学 航空工程学院,天津 300300)
需求预测的方法有很多,目前针对于航材需求预测使用较多的预测算法有灰色预测算法GM(1,1)、神经网络算法(BP)、支持向量机算法(SVM)。这些方法对提高航材需求预测的精度具有很大的帮助,但也存在一定的弊端[4]。其中GM(1,1)模型要求时间序列必须呈现单调上升或单调下降的趋势,而且该方法对于那些随机波动性较大的数据序列拟合效果不理想;SVM算法对较大规模的数据计算不可行[5];神经网络算法需要的数据量较大,且容易陷入局部最小值从而使得训练没完成就已经结束[6]。考虑到航材需求具有较强的季节性和趋势性要求,本文采用时间序列预测算法中的三次指数平滑法对航材进行需求预测,并且采用粒子群算法对平滑系数进行优化选取。针对于粒子群算法局部搜索效率较低的缺点,采用动态领域搜索策略对其进行改进,以此设计出可自动调整平滑系数的三次指数平滑模型,为民航业提供了一种可提高航材需求预测精度的方法。
指数平滑法ES[7,8](exponential smoothing)是布朗所提出的,它是一种时间序列分析预测方法,通过计算指数平滑值,配合一定的时间序列预测模型对未来时间的数值进行预测。其本质是每一期的指数平滑值都是该期实际观察值与前一期指数平滑值的加权。其数学表达式定义为
yt=αxt-1+(1-α)yt-1
(1)
其中,xt-1是时间t-1时的实际观察值,yt-1是时间t-1时的预测值,yt是时间t时的预测值,α和1-α为权数 (0<α<1)。α也叫作平滑系数,α值主要反映原始值以及近期值对预测数据的影响程度。α值越大,近期值对本次预测值的影响程度越大;反之越小。根据所要预测的数据序列的类型,指数平滑法可分为3种类型,如图1所示。
图1 指数平滑法类型
一次指数平滑法适用于无明显的数值波动的序列;对于线性趋势的数值序列但无季节性要求时,可用二次指数平滑法;而对于具有明显的趋势性变化以及季节性要求的数据序列,则用三次指数平滑法。本文是针对于航材为对象而进行的研究,因其具有明显的趋势变化以及季节性要求,所以采用三次指数平滑法来对航材建立需求预测模型。
三次指数平滑法[9-11](Holt-Winters)实质是在二次指数平滑值的基础上进行的第三次指数平滑。它主要目的是为了求解出最合适的平滑系数,建立出更好的预测模型,它适用于所有的关于时间序列的求解问题。三次指数平滑法的公式如下
St(1)=αyt+(1-α)St-1(1)
St(2)=αSt(1)+(1-α)St-1(2)
St(3)=αSt(2)+(1-α)St-1(3)
(2)
其中,St(1)、St(2)、St(3)表示t时刻的一、二、三次平滑值,yt是所取得的时序数据。其预测未来m期数值的模型公式为
该研究结果显示:感染产超广谱β-内酰胺酶大肠埃希菌患者有26例,所占比30.23%感染大肠埃希菌的患者有60例,所占比69.77%。感染大肠埃希菌的患者多于感染产超广谱β-内酰胺酶大肠埃希菌患者。糖尿病患者的免疫力低下,肠道内的菌群环境会失去平衡,且菌群堆积没时间一长就会导致尿路感染。
Ft+m=at+btm+ctm2(m=1,2,3,…)
(3)
其中,at、bt、ct为第t期的预测参数
(4)
粒子群算法PSO[12](particle swarm optimization)是一种对集群寻优的智能计算技术,通过群体中个体之间的协作和信息共享来寻找最优解。算法实现起来比较简单,而且不需要对太多的参数进行设置。它的基本思想是算法中的单个粒子找到离自己最近的解,共享给整个群体逐渐改变自己的方向从而使它们向某个确定的解进行聚集[13]。其中位置p和速度v是每个粒子特有的两个属性。使用pbest记录单个粒子搜索到的最优值,使用gbest记录粒子群到目前为止搜寻到的最优值。根据找到的最优值,按照下面公式来更新粒子的速度和位置
vk+1=wvk+c1rand()(pbestk-pk)+
c2rand()(gbestk-pk)
pk+1=pk+vk+1
(5)
其中,c1、c2指学习因子,w表示加权系数,rand() 为 [0,1] 范围内的随机数。
PSO算法在初步搜索时,要在一个较大的空间范围内进行搜索,但是随着迭代次数的增加,全局最优的位置可能接近于或者存在于当前最优解的领域内。如果此时仍在大范围内进行搜索,可能会降低搜索的效率。因此针对于PSO算法的不足,提出一种可动态调整的领域搜索策略,其含义可以解释为跳出当前最优解对原解进行该位置的领域搜索。使用pd表示当前最优的搜索位置,使用pl表示领域位置,则
pd=pl±op
(6)
op代表误差绝对值,op的大小与迭代次数有一定的关系,随着迭代次数的增加,局部最优逐渐向全局最优进行靠拢,使得op变得越来越小,最后逐渐接近于0
(7)
式中:nNum′代表到目前为止的迭代次数,S表示目前搜索的最优值,S′代表当前所有粒子的平均最优值,a为取定常数。
下面将改进PSO的算法流程描述如图2所示。
图2 改进PSO算法流程
对于平滑初始值的确定一般采用以下两种方式:
(1)如果数据项较多时 (t>15),就会忽略初始值对预测值的影响,此时平滑值的初始取值采用下式表述
S1(1)=S1(2)=S1(3)=y1
(8)
(2)如果数据项较少时 (t≤15),初始值的确定对预测的结果产生较大的影响,为了使影响的效果降到最小,就采用下面另种形式表述
(9)
α的取值范围是0~1,一般情况下,为了不造成对前后数据的偏向态势,使其取值一般不超过0.8。将不同取值范围的α适用的序列列举见表1。
表1 不同取值范围的α适用的序列
对于α的选取,按照以往的传统模型来说,通常是根据近几年的走势,依据专家经验判断确定,没有本质的参考依据,这样就会很难找到最符合要求的参数。α一旦确定,它就是一个定值,当数据发生较大变化的时候,传统的选取方法就无法顺应环境的变化,导致预测结果的误差太大,以此满足不了实际的需求。因而,为了弥补此不足,本文借助于PSO算法动态调整α来改进Holt-Winters方法进而对航材进行预测。
根据航材需求的趋势变化,α取值范围,即粒子的空间搜索范围设定为0.2~0.8。通过设置一定的迭代次数间断地引用领域搜索策略对搜索位置进行更新,计算每次迭代出的预测值与实际值之间的最小的误差平方和对应的动态系数作为本次运算的最好值。重复进行,迭代调整,直到达到最大的迭代次数nNum或者终止条件,输出此时的最优平滑系数以及对应的预测值。
将其整个预测模型的流程描述如下:
步骤1 从已有的数据中选取k个数据,并根据式(8)、式(9)进行S1(1)、S1(2)、S1(3)初始化;
步骤2 初始化粒子的相关参数,根据式(2)、式(3)、式(4)进行需求更新,确定当前粒子的个体最优值pbest以及群体最优值gbest;
步骤3 更新个体粒子的p与v,评估最优的适应度函数值,即最小的误差平方和。接着按照以上改进的PSO流程算法求解出搜索范围内最小的适应度函数值对应的最优的平滑系数α;
步骤4 根据求出的最优平滑系数α进行下一期航材需求量的预测;
步骤5 接着去掉所取数据的第一个数据,加入第k+1 个实测数据及步骤4中所取得的预测值,重复执步骤2~步骤5,直到获取所有预测结果。
为了验证本文所建立的基于改进PSO优化Holt-Winters预测模型方法的可靠性以及优势,取某单位某航材2005~2014年的需求数据进行分析。将航材需求数据列举见表2。
表2 2005~2014年航材需求实际值
根据建立好的数学模型,将2005~2014年度消耗的航材数据代入模型进行计算验证,并将此方法与采用静态系数的传统算法以及GM(1,1)方法进行对比。为了提高静态系数取值的合理性,进行了多次实验推理,发现当α取值范围在0.33~0.48时预测精度较高。因此取静态系数为0.35、0.4、0.45进行对比验证,如图3所示。
图3 静态系数求值与实际值的对比
由图3可以看出,对于α,当它取0.45时,预测精度较取0.35与0.40时较高。因此取定值α=0.45与改进方法及GM(1,1)方法进行比较,其拟合曲线如图4所示。
图4 改进方法与其它方法对比结果
通过以上拟合曲线可以很好地看出动态平滑系数在进行航材预测时的拟合程度要好于其它两个模型。为了进一步展现本文建立的预测模型的优势,对它做进一步的验证。下面再根据以上得到的最优动态系数对2015~2017年的航材进行需求预测,将预测对比结果显示到表3,然后计算出这几种算法产生的相对误差以及平均相对误差,对比结果见表4。
表3 3种模型方法预测结果对比
表4 相对误差及其平均相对误差
通过以上实例数据验证能够得出,本文所提出的动态平滑系数模型:通过改进粒子群算法反复迭代寻找最小误差对应的最优系数来对航材进行预测,其预测的准确度较取定的静态平滑系数以及GM(1,1)模型要高,更贴近真实值。通过计算得出的平均相对误差较其它两种形式得到的误差结果要小。以此可以看出本文所构建的模型方法在对航材需求量进行预测时具有一定的优势。
根据本文建立的需求预测模型,编写算法进行程序设计,并对航材数据进行整理。结合航材具有季节性以及趋势性变化的性质,将Holt-Winters方法运用到航材需求预测中,并打破传统的采用定值系数来建立Holt-Winters模型的方法,借助于改进PSO方法对平滑系数进行动态调整,以此来优化所建模型。该优化模型在一定程度上提高了航材需求预测的精度,得出更符合实际情况的航材需求预测量,对于航材部门的管理具有更好的实用性。