APP下载

基于PSO的SVR波浪预测算法

2018-07-20刘捷刘薇

电脑知识与技术 2018年13期
关键词:粒子群算法

刘捷 刘薇

摘要:为了进行主动波浪补偿,克服大负载大惯量设备的控制滞后性,需要对波浪进行提前预测,又考虑到波浪运动的非线性因素,本文提出了一种基于粒子群(PSO,Particle Swarm Optimization)参数优化的支持向量回归(SVR,Support Vector Regression)的短期波浪预测算法。该算法以均方误差(MSE,Mean Squared Error)为判据,以PSO作为寻优算法对SVR算法参数进行寻优,得到最优预测模型后进行预测。仿真结果表明,相比于传统的时间序列预测算法自回归模型(AR,Auto Regressive),对于实际波浪的预测该方法有更高的预测精度。

关键词:支持向量回归;粒子群算法;主动波浪补偿

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)13-0229-03

1 引言

深海作业船只在海上的运动是一个非稳态过程,其运动不仅受到三维随机波浪的影响,还受到风、流载荷的影响。在这种情况下,作业船只在进行深海作业时处于摇晃状态,导致货物、船体之间发生碰撞,会造成严重的人生和财产安全事故[1]。为了避免这些情况的发生,近年来,越来越多的船只会在工作平台上安装波浪补偿装置来抵消波浪运动,使工作平台保持稳定。

由于海上工作平台的负载和惯量较大,会导致在进行主动波浪补偿时造成补偿运动延时,极大的影响补偿效果。在这种情况下,为了提高补偿精度,需要对波浪运动进行短期预测,提前预测出波浪运动趋势并进行控制补偿。此外,深海作业船只在海上作业时其载况经常发生变化,会引起其固有运动特性的变化,因此补偿系统是一个参数时刻变化的非线性系统。如何将上述多种影响因素综合考虑,建立较为准确和实用的短期波浪预报模型,是本文的研究内容。

目前常用的波浪预测模型有自回归模型(AR,Auto Regressive),自回归滑动平均模型(ARMA,Auto Regressive and Moving Average Model)和滑动平均模型(MA,Moving Average Model)等[2]。这些模型都基于对波浪的过去一段时间运动的观测,运用时间序列分析建立模型来实现预测。但是,这些预测方法只在线性系统中有好的效果,不适用于非线性系统。

国外专家Sidar和Dodin利用卡尔曼滤波来实时预测波浪运动,但是卡尔曼滤波预测法需要知道系统运动的精准状态运动数学式[3]。然而,当液压参数和环境改变了,状态等式是难以精准地给出。因此,尽管卡尔曼滤波能处理干扰并且计算简单,但在实际运用上很难达到理想效果。

近年来越来越多的国内外专家学者采用神经网络的方法探索自适应的平台运动极短期预报模型,实现对不同作业模式下的海洋平台运动的极短期波浪预报。但是,采用神经网络的方法来进行波浪预测时,很容易发生过匹配现象。此外,神经网络算法需要处理大量的采样数据,这样会导致计算复杂度的提高,增加计算时间,从而不能进行实时补偿[4]。

针对上述波浪预测的几个特性,在对比分析了众多国内外波浪预测相关应用文献后,本文采用一种新的方法来进行短期波浪预测,这种新的算法是“基于PSO的SVR波浪预测算法”。

2 PSO算法简介

PSO算法是一种寻优算法,采用速度-位置搜索模型进行寻优。算法中对于每一个参与寻优的粒子视为可主动运动的个体,所有的个体统称为群体;群体中第i个粒子在D维解空间的位置为Xi=(xi1,xi2,…,xiD)T,速度为Vi=(vi1,vi2,…,viD)T。当前时刻的个体极值记为Pibest,全局极值记为gbest。在每次迭代中,粒子跟踪个体极值、全局极值和自己前一时刻的状态来调整当前时刻的位置和速度[5],迭代公式如下:

Vi(k+1) = w*Vi(k) + c1*rand()*(Pibest-xi(k)) + c2*rand()*(gbest-xi(k))

(1)

Xi(k+1) = Xi(k) + Vi(k+1) (2)

其中,V(K),V(k+1),X(k),X(k+1)分别是粒子当前时刻,下一时刻的速度和位置;rand()是[0,1]之間的随机数;c1,c2是学习因子,通常取为2;w是权重因子,为加快收敛速度,其值应随算法迭代的进行而自动减小,一般定义为:

w = wmin + (itermax-iter)*(wmax-wmin)/itermax (3)

其中,wmax,wmin分别为最大、最小权重因子,一般情况下分别取为0.9,0.4;iter为当前迭代次数,itermax为总的迭代次数。

3 SVR算法简介

SVR算法是建立在支持向量机(SVM,Support Vector Machine)思想上的回归算法,具有坚实的理论基础,但是其理论优势得以实现的前提是要选取合适的回归参数。对于SVR算法的ε-SVR模型,其数学表达式为[6]:

[minw,b,ξ,ξ*12wTw+Ci=1lξi+Ci=1lξ*i] (4)

约束条件:[wT?(xi)+b-zi≤ε+ξi,zi-wT?(xi)-b≤ε+ξ*i,ξi,ξ*i≥0,i=1,...,l.] (5)

经过Karush-Kuhn-Tucker(KKT)条件的拉格朗日乘子法解为:

[minα,α*12(α-α*)TQ(α-α*)+εi=1l(αi+α*i)+i=1lzi(αi-α*i)]

(6)

约束条件:[eT(α-α*)=0,0≤αi,α*i≤C,i=1,...l.] (7)

其中,Q为一矩阵,各个元素的值为Qij = K(xi,xj),K为核函数。对于处理非线性的问题,一般选用RBF核函数,该核函数的数学表达为:

[K(x,y)=e-γx-y2] (8)

在约束条件(7)下获得(6)式的最小值时,解得α。再利用式(9)进行拟合回归。

[f(x)=w·?(x)+b=i=1n(α^-αi)k(xi,x)+b] (9)

通过式(6),(7),(8)可知,要进行SVR预测需对参数:不敏感损失系数ε、惩罚系数C以及RBF核函數中的宽度系数γ进行参数选优。其中,不敏感损失系数ε控制着回归函数(9)式对样本数据的不敏感区域的宽度,影响支持向量的数目,其值与样本噪声有密切关系;惩罚系数C反映了算法对超出ε管道的样本数据的惩罚程度,影响模型的复杂性和稳定性;宽度系数γ反映了支持向量之间的相关程度。由此可见:SVR模型的回归能力取决于ε、c、γ这三个参数。因此,如何寻找一种精确、稳定、快速的算法或方法来实现对这些参数的优化选择具有非常重要的意义[7]。

对此,本文提出以均方误差(MSE, Mean Square Error)为判据,如式(10),以PSO为寻优算法对SVR的ε、c、γ这三个参数进行寻优。再通过实地采集到的船舶升沉数据对SVR进行训练得出最优模型,最后利用该模型对未来10个时间点进行预测。

[MSE=1nk=1n[x^(k)-x(k)]2] (10)

式中,[x^(k)]为预测值,x(k)为实际值,n是预测的个数。

4 基于PSO的SVR波浪预测算法描述

步骤1:初始化PSO参数。确定种群个数m,最大迭代次数itermax,自我学习因子C1、C2,最大、最小权重因子Wmax、Wmin;

步骤2:由于ε、c、γ参数以2为底的指数增长可以更好地获取合适的参数[8],以ε、c、γ的幂次作为PSO算法中的位置x1,x2,x3。再分别设置ε、c、γ位置上下限,与速度上下限;

步骤3:对m个粒子在位置上下限内随机分配初始种群位置;

步骤4:对每个粒子通过式(9)和(10)计算适应度,与该粒子历史最佳适应度进行对比取最佳值Pibest,更新粒子历史最佳适应度和最佳位置。

步骤5:取适应度最好的粒子与群体最佳适应度进行对比,取最佳值作为群体极值gbest,更新群体最佳适应度和最佳位置。

步骤6:按照式(1)、(2)、(3)进行计算,更新每个粒子的位置、速度。

步骤7:重复步骤4~步骤6进行迭代,直到迭代次数达到最大迭代次数或所得解不再变化时,则终止迭代。

步骤8:以步骤7所得到的最佳位置即为ε、c、γ的最佳值,对未来10个时间点通过式(9)计算得到。完成整个波浪预测算法。

5 波浪数据采集

波浪作用在船舶上会造成横摇、纵摇、升沉、横荡、纵荡和艏摇六个维度上的运动。升沉运动是船舶在进行深海作业时摇晃最剧烈的运动,是波浪补偿首先要解决的问题,因此,本文以船舶垂直方向上的升沉运动作为单维度的波浪运动进行仿真实验。为了保证预测算法的有效性,我们通过实船实验的方法采集实验所需波浪数据,最后用实际波浪数据与预测数据相对比,检查算法的准确性。

首先,实船实验需要选择合适的船进行试验。由于船体会对波浪起到过滤作用,船体越大,过滤作用越明显。为了获取较为明显的波浪运动,我们采用长度约为20米左右的小船进行实船实验。其次,为了获取较明显的波浪数据,需要在海况较高的情况下进行数据采集。每年的7、8月左右是我国东南沿海常刮台风的季节。为此,我们于8月下旬在福建莆田某海域于台风来临前夕驾船进行实船数据采集。到达指定海域后关闭所有引擎使船在海面上处于自由漂浮状态,这时,船舶的运动能真实反映船舶的波浪运动。在船的重心位置上安装运动参考单元(MRU,motion reference unit)来感知船舶的横摇、纵摇和升沉等姿态信息,最后用计算机对这些数据进行采集。

波浪的运动周期约为0.3Hz,采用采样间隔大于波浪周期10倍的5Hz频率进行采样,保证采用数据有效。图1所示为采集到的升沉数据曲线片段,共有166个采样数据,总时长为32s,共约11.5个波浪周期。由图形看到,采集到的数据平滑周期均匀,故认为该段采集数据为有效数据。

6 仿真结果及分析

对图1中的波浪升沉数据分别进行AR预测和本文介绍的预测算法。算法均以150个点进行训练,预测后10个点。最后用预测点与原始点进行对比,利用(10)式求出均方误差,比较两算法预测效果。

图2为利用本文介绍的算法进行预测。图中蓝色曲线代表原始波浪值,红色曲线代表利用SVR模型进行回归的数据,绿色曲线代表预测的数据点。从图中可以看出,红色曲线与蓝色曲线重合,表明训练出来的SVR模型与波浪数据吻合;绿色曲线与蓝色曲线几乎重合,表明该算法能正确预测出波浪走势。

图3为利用经典的时间序列AR模型进行预测,图中,蓝线为原始数据,绿线为预测数据。从图中可以看出,预测数据只能大致能反映出波浪趋势,预测准确度不高,并且随着时间的推移,预测精度越来越低。

利用(10)式分别计算出两种算法的均方误差,本文算法的MSE=11.4901,AR预测算法的MSE=562.2088。可以看出本文介绍的算法预测准确率远远大于AR算法。

7 结论

为了进行主动波浪补偿,克服大负载大惯量设备的控制滞后性,需要对波浪进行提前预测。为了提高预测的准确性,本文提出了一种基于PSO的SVR预测方法。为了验证算法的有效性,通过实船实验采集波浪数据,利用升沉波浪数据分别验证本文预测算法和AR预测算法的预测准确率。通过对比发现,本文提出的算法准确率远远大于AR预测算法。由于波浪数据为实船实验采集到的波浪数据,新算法预测准确率很高,因此本文提出的算法有很强的实用性。

参考文献:

[1] Jorg Neupert, Tobias Mahl etal, A Heave CompensationApproach for Offshore Cranes, 2008 American ControlConference, 2008,16(1):538-543.

[2] Peng Xiuyan, Zhang Xiaoshuang, Zhao Xiren, DiagonalRecurrent Neural Network Algorithm for Extreme ShortPrediction of Ship Motion, Journal of System Simulation, 2002,14(5):641-643.

[3] Sidar,M. and Doolin,B. F. On the feasibility of real timeprediction of aircraft carrier motion at sea,NASA Tech.Memo,1975(X62):45,95.

[4] Shi Bu-hai, Xian Ling, Active Heave Compensation Prediction Research for Deep Sea Homework Crane based on KPSO-SVR, 33rd Chinese Control Conference, 2014:7637-7642.

[5] 楊梁,徐保国. 基于粒子群算法的基因工程菌发酵分批补料控制[J]. 计算机测量与控制,2005,13(3).

[6] Chih-Chung Chang and Chih-Jen Lin, A Library for Support Vector Machines, 2013:6-7.

[7] 熊伟丽,徐保国. 基于PSO的SVR参数优化选择方法研究[J]. 系统仿真学报,2006,18(9):2442-2445.

[8] Chih-Wei Hsu, Chih-Chung Chang, and Chih-Jen Lin, A Practical Guide to Support Vector Classification, 2016:7-8.

猜你喜欢

粒子群算法
一种基于高维粒子群算法的神经网络结构优化研究
基于PSODE混合算法优化的自抗扰控制器设计
电力市场交易背景下水电站优化调度研究
基于粒子群算法的产业技术创新生态系统运行稳定性组合评价研究
大型风电机组组合式塔架结构优化设计