基于神经网络的船舶自动舵控制算法研究与分析
2018-11-20李少伟王胜正
李少伟,王胜正
(1.江汉大学数学与计算机科学学院, 湖北 武汉 430056;2.上海海事大学商船学院,上海 201306)
1 引言
随着智能化控制算法的不断涌现,船舶自动舵控制系统已经由传统的PID控制算法逐渐向人工智能控制领域不断发展。特别是随着人工神经网络(Neural Networks,NN)技术的不断突破,为船舶自动控制方法提供了坚实的理论基础。
来自大连海事大学的Xingxing Huo等人[1][2]在基于PID的自动舵控制算法中加入BP神经网络,在一定程度上实现了智能化参数调整,提高了自动舵的环境适应性;澳洲海事大学的Yuanyuan Wang等人[3][4]在Xingxing Huo等人的基础上,提出了基于径向基函数(Radial Basis Function,RBF)神经网络的PID控制算法,从而进一步加快了算法的训练以及学习速度,同时可以高速处理接收到的并行数据;Wang Minghui以及Yanxiang Wu等人[5][6]在其论文中提出了基于模糊神经网络(Fuzzy NN)的船舶自动舵控制方法。该方法中可以融入人类已知的经验和知识,从而可以进一步提高控制算法的智能水平。同时具备在线学习以及自动参数调整等优势,使得自动舵实用性大为提高;此外,科研人员还针对船舶运动模型进行过自动舵的研究,但由于船舶运动受到环境因素影响较大,因此其实用性大大受限[7]。
现阶段,虽然采用人工神经网络方法来实现船舶自动舵控制系统已取得了一定的成效。但受限于传统神经网络中存在的收敛于局部最小值、梯度扩散以及不适合无标签数据的处理等问题,导致基于神经网络的自动舵算法存在着控制精度不高、环境适应性不强等问题。
深度神经网络(Deep Neural Networks,DNN)模型是对于传统神经网络模型的一种很好的改进与取代,该模型更接近人脑的工作过程,同时更适用于处理类似船舶自动舵控制这样的无标签大数据。2006年,Hinton[8]等人提出一种训练DNN的方法,称为逐层贪婪算法,开启了学术界和工业界对DNN研究新热潮;文献[9]对深度学习进行了较为全面的综述,提出了贪婪逐层预训练学习过程用于初始化深度学习模型的参数,从底层开始训练每层神经网络形成输入的表示,在此之后,堆栈各层神经网络转换为深度监督前馈神经网络,用梯度下降进行微调。至此,基于DNN的自动舵控制模型理论基础得以建立。
通过对相关文献及专利查找可知,现阶段尚未有国内外相关学者进行基于DNN的船舶自动舵控制方法研究。基于以上原因,本文选取ELAN神经网络以及深度置信网络(Deep Belief Networks,DBN)作为传统神经网络及深度神经网络的代表,分别实现了基于以上模型的船舶自动舵控制算法自动舵控制算法。通过实验,分析比较了不同神经网络模型对自动舵控制系统精度的影响。
2 神经网络模型结构
如图1所示的神经元是组成人工神经网络的基本单元,这种单元一般具有多输入单输出的特性。其中,向量X为来自上一层的输入wij表示连接两层神经元i,j之间的权重;bj为第j个神经元的偏置量;yj则表示神经元j的输出。
图 1 神经元结构
相应地,输入与输出之间有如(1)式所示的关系。
其中f表示激励函数,通常选取sigmoid、tanh以及径向基函数等。
上述神经元可以按照一定的规则,组成如图2所示的人工神经网络结构。
图 2 神经网络结构
2.1 ELAN神经网络结构
如图3所示为ELAN神经网络结构,从图中可以看出,相比普通前馈网络,ELAN神经网络在输入层多出了承接层,并且其输入与隐藏层神经元的输出相关。这种结构起到了一步延时算子的作用,从而以达到记忆的目的,使系统具有适应时变特性的能力,能直接反映动态过程系统的特性[10]。
图 3 ELAN神经网络结构
ELAN神经网络的运算规则由以下四个等式组成。
其中X(k)为网络的输入为,Y(k)为网络输出,Wi,i+1为连接第i层与第i+1层神经元的权值矩阵,Bi为第i层神经元的偏置输入为,C(k)为承接层的输入,Hi(k)、Ho(k)分别为隐藏层的输入输出。等式(1)中的[C(k), X(k)]表示连接向量C(k)与向量X(k)。
2.2 DBN神经网络结构
DBN由若干结构单元堆栈组成,如图4所示,其结构单元通常为RBM[11]。
图 4 DBN结构
对于图4中的任何一个RBM,其结构均是一个两层结构模型,底层是由可见节点v={v1,v2,v3,…vi}组成的可见层,顶层是由隐藏节点h={h1,h2,h3,…hj}组成的隐藏层,两层之间的节点全连接,每一个连接都有一个权值wij,但处于同一层的节点之间互不连接。同时,可见层与隐藏层均有自己的偏置量,记为a,b。每个神经元的输出有两种,分别为0或者1。如图5所示为RBM模型示意图。
图 5 RBM模型
3 建模与仿真
基于神经网络的自动舵控制系统包含输入与输出两个部分,因此需要建立自动舵输入变量与神经网络输入之间的关系。另外,还要考虑隐藏层数量与节点数量的相关因素,优化网络输出。
3.1 网络输入参数
影响船舶运动状态的因素很多,在此,根据航海操舵模拟器的设计原理,我们选取如表1所示的、具有较大权重的影响因子,使其作为神经网络的训练输入。
表1 影响船舶航向的主要因素
影响船舶运动状态的因素很多,在此,根据航海操舵模拟器的设计原理,选取具有较大权重的影响因子,使其作为神经网络的训练输入,例如风向、风力、流向、流速等。所以数据在输入前全部转换为二进制数值,即取值为0、1。
3.2 网络输出参数
自动舵控制系统的功能和作用就是实现舵角的改变,使船舶尽可能稳定地航行在目标航线上,因此,神经网络的输出参数仅有一个,就是目标舵角。对于普通商船而言,舵角的取值一般在-35°~+35°之间,因此,网络的输出取值定位0~71,采用7位二进制表示。
3.3 数据采集
如前文所述,本系统所需的所有样本数据均来源于上海海事大学高级船员考试培训系统,具体的数据记录设备为SMU V型航海操纵模拟器。如图6所示为操纵模拟器数据传输框架示意图。
图 6 模拟器数据传输框架
从图6可知,ship主机程序通过RS232接口接收船舶操纵人员的指令,并记录操舵信息;通过网络接收来自电子海图的航线信息以及偏航误差;通过网络接口接收来自教练员程序的航行环境数据(风速、流速等)。上述信息根据表1中的方式,转换为NN能够识别的形式。
3.4 模型实现方法
本文所涉及到的ELAN神经网络为浅层网络,在MATLAB中已有现成的实现;而DBN为深度神经网络,因此,本文引入DeepLearnToolbox实现其模型[16]。
以Matlab作为模型仿真平台,引入了开源库函数Deep-LearnToolbox,根据不同的模型参数,建立了适用于自动舵控制的DBN模型,节省了开发时间。表2所述为DeepLearnToolbox中关于建立DBN模型所涉及到的相关方法与参数。
表2 函数说明
3.5 仿真数据分析与比较
仿真实验中的船舶编号为3号,长度179.7米,船宽27.6米,最大吃水9.5米,船型为集装箱船。操船场景为长江口外锚地进港,数据记录时间为500s,船艏向初值为0。如图7所示,本船位于锚地。
图 7 实验场景
其中人工操舵与自动舵操舵已经分别予以记录,如图8、9所示。
图 8 船艏向曲线
图 9 舵角曲线(左为人工操舵/右为DBN控制系统操舵)
图8中,(1)图表示人工操舵曲线;(2)图表示DBN操舵曲线;(3)图表示ELAN操舵曲线。我们选取图8中精度较高的DBN操舵曲线,生成图9所示的舵角曲线。从图8及图9可知,基于ELAN神经网络模型的控制算法与人工操船相比,误差较大。而深度神经网络模型在操船精度上已经非常接近人工操船。为了进一步对误差进行分析,我们选择每秒进行一次误差记录,记为ei,单位米,并采用下式(6)(7)得到误差指标。
其中E表示误差均值,D表示误差的方差。经过计算可得到如表3所示误差数据。
表3 模型误差
由表3可知,人工操船的误差为22.5,方差为4.6;DBN模型控制系统的操船误差为23.7,方差为5.3。以上数据也进一步说明了,基于DNN模型的自动舵具有较高的精度。
反观现有的相关控制算法,大部分文章的作者仅仅提出了相关的理论,并没有针对相关理论进行验证或仿真验证。例如参考文献[3][4]所涉及的内容;有的文章虽然进行了仿真实验,但实验环境采用固定参数的形式,并且没有相关船舶运动模型作为支撑,例如参考文献[5-8]中的内容,因此其结果并不具备一定的实用价值。
4 结语
本文实现了基于浅层和深度神经网络的自动舵控制系统,其代表模型分别为ELAN神经网络和DBN模型,同时以上海海事大学高级船员培训系统所记录的考试培训数据作为训练样本,引入MATLAB以及DeepLearnToolbox开发工具,实现了对模型的仿真验证。
通过实验数据可知,虽然浅层神经网络在自动舵控制算法中有一定的使用价值,但是深度神经网络具有更好的控制精度,在最理想的情况下,其平均误差仅有5.2%,已具备了实船测验的基本条件。
另外,本算法同时也具有一定的不足之处,例如对于下图10所示的会遇场景,本算法暂无法处理,留待后续研究。
图 10 会遇避让