蔡延光,乐 冰,蔡 颢,李旭阳
(1.广东工业大学 自动化学院,广州 510006; 2.奥尔堡大学 健康科学与工程系,丹麦 奥尔堡 9220)
不良天气会给高速公路交通安全和高速公路网的正常运行带来较大影响。据统计,全国高速公路发生的交通阻断事件大约有三分之一是由于不良天气原因所致,大雾、暴雨和降雪等天气环境还会导致交通拥堵和事故率显著上升[1]。由于传统的径向基函数(RBF)神经网络不能对不良天气下的交通流进行有效预测,为了能够准确预测交通流状态信息,文献[2]使用布谷鸟搜索(Cuckoo Search,CS)算法对小波神经网络的网络参数进行寻优,通过与其他算法的仿真对比验证了其能取得较好的预测效果。CS算法模拟布谷鸟寻找最优鸟巢位置而进行不断迭代的过程,其具有较强的全局寻优能力,能够很好地应用于工程问题优化任务。但是,CS算法在迭代过程中由于搜索能力的限制导致其不能跳出当前最优解,从而降低了算法性能。为提高CS算法的搜索能力,文献[3]利用混沌序列来确定CS算法的初始解,通过混沌初始化种群以加快种群的收敛速度。文献[4]提出一种自适应步长调整CS算法,其能够有效避免算法陷入局部最优。文献[5]在CS算法中引入高斯扰动对鸟巢位置更新进行优化,扩大了每个解的搜索范围并能够得到较好的全局解。上述算法虽然能避免CS算法陷入局部最优,但在求解一些复杂度较高的问题时会导致算法训练时间过长以及算法发散等问题。为此,本文提出一种基于猴爬山过程的自适应CS算法,将改进后的CS算法与RBF神经网络相结合[6-8],建立改进的CS-RBFNN模型,以对暴雨天气下的高速公路短时交通流进行预测。
CS算法[9]是一种模仿布谷鸟寻觅窝巢产蛋行为的启发式智能优化算法。布谷鸟不同于一般的鸟类,其繁衍后代时只产蛋,不亲自进行孵化。鸟蛋的孵化是靠其他种群的鸟类来实现,即布谷鸟在一定空间内搜索所有的鸟巢,将自己产的蛋与其他鸟类的蛋混杂在一起,其他鸟类无法辨认蛋是否为自己所生产,因此会对鸟巢中所有的蛋进行孵化。但其中某些鸟类比较聪明,很容易识别出外来的鸟蛋,然后损坏布谷鸟鸟蛋或抛弃自己的整个鸟巢,最后重新寻找位置以修建新的鸟巢[10]。CS算法在迭代过程中需要遵循以下原则:
1)布谷鸟将自己的鸟蛋随机打乱,并将鸟蛋放在其他鸟类的鸟巢中。
2)算法保留每次计算的最优解。
3)假设其他鸟类的鸟巢数不变,其他鸟类识别出某蛋是外来鸟蛋的概率为Pa,Pa值在0~1之间。
CS算法中的鸟巢相当于解向量,在迭代过程中,首先初始化n个解向量,通过适应度函数f评价各个解向量,最优解被保留,其他解根据莱维飞行策略寻找新的鸟巢,通过适应度函数计算并保留较优的解,当其他鸟类以Pa识别出布谷鸟鸟蛋时,则抛弃该鸟巢,抛弃的同时随机产生新的鸟巢位置,评价并保留较好的解,至此一次迭代完成。算法经过多次迭代,在达到一定条件时就得到最终解。布谷鸟寻窝路径的位置更新过程如式(1)所示:
(1)
(2)
依照布谷鸟寻找最优鸟巢位置的过程,CS算法的具体步骤如下:
步骤1CS算法初始化。其他种类鸟的鸟巢数为n,适应度函数为f(X),X=(x1,x2…,xi)T,i=1,2,…,n,其他种类鸟识别出鸟蛋的概率为Pa,允许的误差为ε,算法的最大迭代次数为tmax。
步骤2按照适应度函数f(X)求出所有鸟巢位置的值,并找出当前最优解。
步骤3鸟巢位置更新。其他鸟巢位置按式(1)进行更新。
步骤4计算更新后鸟巢位置的f(X),并与更新前最优鸟巢位置进行比较。
步骤5如果更新后的鸟巢位置优于更新前的位置,则更新后的鸟巢位置与更新前位置进行交换,其成为当前最优解;否则保持原始最优鸟巢位置。
步骤6产生一个0~1之间的数,将其与其他种类鸟识别出鸟蛋的概率Pa进行比较,若该数比Pa大,则随机改变鸟巢位置。
步骤7保留当前最优鸟巢位置。
步骤8若达到最大迭代次数或满足允许的误差,则转步骤7;否则,转步骤2。
步骤9输出算法所求解。
CS算法的搜索结果很大程度上受步长因子的影响,当步长设置太大时,会导致搜索精度较低;当步长设置太小时,会增加算法的训练时间,降低寻优速度。CS算法对鸟巢位置的更新也与Pa有关,Pa概率选择过大或过小,都会影响CS算法的性能,因此,对于CS算法中步长α和概率Pa的选择非常重要。在一般情况下,CS算法中的步长α和概率Pa都不变,由于α和Pa不会随着算法寻优过程进行变化,从而导致算法搜寻时间过长或者出现发散的情况。本文拟在CS算法的基础上引入猴爬山过程策略,利用猴群算法中的爬山过程对CS算法进行优化[11]。
1.3.1 猴爬山过程策略改进
猴群算法是模拟猴子爬山最终达到山顶过程中的一些行为特性的优化算法。猴群算法通过猴子的爬、望、跳3种行为进行迭代,按照算法特定的路线逐渐地接近整个群体最优解。猴群算法中的爬行为在每次迭代过程中都需要运行多次,在每次爬的过程中,产生的新位置都是局部最优解,因此,爬过程对算法性能的影响极大,爬过程中的步长设置更为重要,步长设置过大,虽然能减少迭代次数,但会降低求解精度;当步长设置过小,情况则相反。本文采用自适应改变步长的策略来更新爬过程,再对CS算法鸟巢位置的更新进行优化[12]。猴群爬过程改进策略的具体过程如下:
步骤1对于猴子i,其当前位置为xi=(xi1,xi2,…,xin),i=1,2,…,M,其中,M为猴子的数量,n为所求解的维数,引入一个增加爬过程的系数Δxi,Δxi=(Δxi1,Δxi2,…,Δxin),其满足:
a>0,j=1,2,…,n
(3)
其中,a为爬山步长,本文采用自适应改变步长的策略,具体如式(4)所示:
(4)
其中,amin为最小步长,amax为最大步长,at为第t代的爬山步长。当算法的更替次数较小时,步长at的值较大,能够快速地移动到最优解附近;当算法的更替次数较大时,步长慢慢变小,能够避免步长太大而错过最优鸟巢位置,使得CS算法在迭代后期的全局寻优能力开始减弱,局部寻优的能力逐渐增强[13]。
步骤2计算伪梯度向量:
(5)
其中,向量f′i(xi)=(f′i1(xi),f′i2(xi),…,f′in(xi))为f(x)的伪梯度。
步骤3计算猴子i更新后的位置yi=(yi1,yi2,…,yin),其中,yi=xij+a·sign(f′ij(xi)),j=1,2,…,n,sign为符号函数。
步骤4若yi在合理范围内,且满足f(yi)≥f(xi),则用新鸟巢位置替换旧位置;否则,位置保持不变。
步骤5若达到最大迭代次数或满足允许的误差,则退出操作;否则,重复步骤1~步骤4。
1.3.2 识别概率自适应更新策略
在寻优过程中,由于搜索能力的限制,CS算法容易快速聚集到局部最优解附近,导致算法提早收敛到局部最优解而出现早熟状态,从而很难出现更好的适应度值,即难以搜索到全局最优。识别概率Pa设置过大或过小都会直接影响算法的收敛速度与求解精度。为此,本文采用改进的识别概率来提高算法性能,具体如下:
(6)
其中,pmin为最小识别概率,pmax为最大识别概率。当算法的更替次数较小时,识别概率接近于pmax,随着更替次数的增加,识别概率逐渐降低,当迭代次数接近tmax时,识别概率接近pmin。当种群的最佳个体接近全局最优解时,识别概率自适应更新策略会缩小对种群的搜索范围,并将当前较好的解保留到下一代,使得算法在较短时间内获取最优解。
本文基于改进CS-RBFNN的交通流预测[14-16]步骤具体如下:
步骤1交通流数据的预处理。利用指数平滑法对历史高速公路交通流数据进行降噪,再按照如下公式对数据作最小-最大规范化处理:
将xik的值映射到[xnewmin,xnewmax]的区域中,其中,xnewmax与xnewmin分别为处理后数据的最大值和最小值,本文取xnewmax=0.8,xnewmin=0.1。
步骤2利用改进CS算法对RBF神经网络参数进行编码。初始化算法参数:其他种类鸟的鸟巢数为n,适应度函数为f(X),X=(x1,x2,…,xi)T,其中i=1,2,…,n,猴爬山最小步长为amin,最大步长为amax,其他种类鸟最大识别概率为Pmax,最小识别概率为Pmin,允许的误差为ε,算法的最大迭代次数为tmax。
步骤3按照适应度函数f(X)求出所有鸟巢位置的值,并找出当前最优鸟巢位置。
步骤4改进猴爬山过程策略:
1)对于鸟巢i,其当前位置为xi=(xi1,xi2,…,xip),i=1,2,…,n,其中,n为鸟巢的数量,p为所求解的维数,引入一个增加爬过程的系数Δxi。
2)采用自适应改变步长的策略,具体如式(4)所示。
3)计算伪梯度向量。
4)计算新的鸟巢位置yi。若yi在合理范围内,且满足f(yi)≥f(xi),则用新鸟巢位置替换旧位置;否则,位置保持不变。
5)若达到最大迭代次数或满足允许的误差,则退出操作;否则,重复步骤1)~步骤4)。
步骤5计算更新后鸟巢位置的f(X),并与更新前最优鸟巢位置进行比较。
步骤6如果更新后的鸟巢位置优于更新前的位置,则更新后的鸟巢位置成为当前最优解;否则,保持原始最优鸟巢位置。
步骤7产生一个0~1之间的数,将其与其他种类鸟识别概率Pa进行比较,若该数比Pa大,则随机改变鸟巢位置。
步骤8保留当前最优鸟巢位置。
步骤9若达到最大迭代次数或满足允许的误差,则转步骤10;否则,转步骤3。
步骤10输出算法所求解并解码。
步骤11训练RBF神经网络。
步骤12利用训练好的RBF神经网络对暴雨天气下的高速公路交通流进行预测。
步骤13算法结束。
基于改进CS-RBFNN的暴雨天气下高速公路短时交通流预测流程如图1所示。
图1 基于改进CS-RBFNN的暴雨天气下高速公路 短时交通流预测流程
本文实验的交通流数据由某高速公路控制中心提供,采用2015年3月—7月共153天的数据作为训练数据,每隔15 min统计一次车流量信息,单日样本长度为96,共获取记录14 688条,以2017年8月发生暴雨天气的数据作为测试数据[17-19]。为了验证本文改进CS-RBFNN交通流预测模型的性能,采用MATLAB实现仿真验证。设置算法参数为:M=18,n=150,amin=0.05,amax=0.2,pmin=0.1,pmax=0.4,学习率η=0.01,tmax=800,ε=10-5。
为显示改进CS-RBFNN的优越性,本文分别基于改进GSO-RBFNN和基本CS-RBFNN预测模型[20]设计2个对比实验。首先分析3种模型在预测-真实值和预测误差上的差异性,其中,预测误差采用带符号的相对误差。基于改进GSO-RBFNN模型的暴雨天气下高速公路交通流预测结果如图2所示,基于基本CS-RBFNN和改进CS-RBFNN模型的暴雨天气下高速公路交通流预测结果分别如图3、图4所示。从图2~图4可以看出,改进CS-RBFNN预测结果与实际交通流曲线基本吻合,其能够很好地预测该路段车流量的走势,而改进GSO-RBFNN和基本CS-RBFNN的预测结果与实际交通流曲线存在较大偏差,两者不能有效地预测暴雨条件下的高速公路车流量。改进CS-RBFNN、改进GSO-RBFNN和基本CS-RBFNN 3种模型的预测误差对比如图5所示。
图2 基于改进GSO-RBFNN模型的暴雨天气下高速 公路交通流预测结果
图3 基于基本CS-RBFNN模型的暴雨天气下高速 公路交通流预测结果
图4 基于改进CS-RBFNN模型的暴雨天气下高速 公路交通流预测结果
图5 3种模型的预测误差对比结果
从图5可以看出,基本CS-RBFNN模型的预测误差较大,超过了0.3,改进GSO-RBFNN模型的预测误差在0.2以内,而改进CS-RBFNN模型的预测误差在0.1以内,其对暴雨条件下的高速公路车流量有很好的预测效果。
仅依据交通流预测曲线和误差曲线并不能直观反映交通流预测的各项评价指标,本文进一步对3种模型预测效果的平均绝对百分比误差(MAPE)、平均绝对误差(MAE)、均方根误差(RMSE)3个指标进行对比分析,结果如表1所示。
表1 3种模型的交通流预测性能对比
从表1可以看出,相比于其他2种预测模型,改进CS-RBFNN模型的预测性能最优,其MAPE为8.2%,MAE为20.14,RMSE为19.2,改进GSO-RBFNN模型预测性能次之,而基本CS-RBFNN模型预测性能最差。
本文针对暴雨天气下高速公路交通流预测问题进行分析,将改进的CS算法与RBF神经网络相结合,建立一种改进的CS-RBFNN模型。在CS算法的基础上引入猴爬山过程策略,利用猴群算法中的爬过程来优化鸟巢位置的更新,再通过自适应策略对识别概率进行改进,以提高CS算法的全局搜索性并减少训练时间。将改进的CS-RBFNN模型、基本CS-RBFNN模型和改进的GSO-RBFNN模型进行对比,结果表明,改进的CS-RBFNN模型能够较好地预测暴雨天气下的高速公路交通流。下一步将考虑更多影响交通流量的实际因素,如节假日、交通事故等,以建立更精确的预测模型。此外,结合初始化策略以及邻域搜索策略等对算法进行改进并提高短时交通流量预测的精度,也是今后的研究重点。