周志刚,黄建伟,董根金
(武汉第二船舶设计研究所,湖北武汉 430064)
潜艇在应急上浮过程中,容易出现大攻角运动状态。特别是当舱室进水和舵卡事故,原重力与浮力平衡、纵倾力矩平衡都受到破坏时,潜艇垂向速度与前进速度相比并非小量,艇体运动相对水流形成大攻角。大攻角情况下的潜艇水动力非常复杂,表现出强烈的非线性特征。考虑到垂直面的运动参数是造成潜艇大机动水动力非线性的主要原因,因此可以将大攻角所产生的非线性水动力看作是潜艇垂向速度w和纵倾角速度q的函数。当前国内相关研究[1]的思路是采用低阶多项式或样条函数对潜艇大攻角机动运动水动力进行拟合,但其拟合精度或实用性等方面往往并不能让人满意。采用合适的方法准确表达潜艇大攻角机动运动的水动力,建立用于预报其大攻角机动运动状态变化的数学模型,对潜艇的动力抗沉等有重大的指导意义。
本文根据已有的潜艇大攻角机动运动试验资料,结合多项式和样条函数的方法拟合其水动力的结果,指出了各自的局限性,设计了以攻角α(w'=sinα)和纵倾角速度q'作为输入量,纵向力X'、垂向力Z'、纵倾力矩M'分别作为输出量的3层BP神经网络,应用MATLAB 7.1神经网络工具箱对这一系列试验数据的水动力进行了有效的拟合。
潜艇大攻角状态的水动力是通过约束模拟试验获得的无因次量,包括2个运动状态参数α和q',水动力则为X',Z'和M',其中攻角α的范围达到了±90°。将X',Z'和M'的试验点在空间展开,得到的是各力(矩)随攻角和纵倾角速度变化的曲面,发现大攻角情况下的水动力随α的变化表现出非常强烈的非线性,而随q'的变化则近似为线性关系。如图1所示,(a)图为某一q'值下的纵倾力矩M'随攻角α变化的曲线;(b)图为某一攻角α值下的纵倾力矩M'随q'变化的曲线。由图还可以看到,试验数据并非是均匀分布的,在水动力变化较大的一些攻角区间内试验数据相对很少;而水动力在随q'变化的曲线上,由于受到试验条件的限制,有一大段区间内的水动力值无法通过试验获得。
图1 纵倾力矩M'试验数据特点Fig.1Characteristic of M'testing data
根据相关资料的研究分析,在潜艇大攻角机动范围内,宜采用二阶多项式表达其水动力,以避免由于项数增加导致参数估计时的较大协方差,以及高阶水动力导数的求取;而且这种表达形式与潜艇标准空间运动方程中水动力的表达形式保持一致,能从本质上反映潜艇水动力的物理特性。图2给出了在攻角±90°范围内,经这种方法处理后在某一纵倾角速度下纵倾力矩随攻角变化的拟合曲线。
图2 纵倾力矩M'的多项式表达拟合曲线Fig.2Fitted curf of M'by polynomial
如图2所示,多项式表达的水动力只能大致反映其在整个攻角范围内的变化趋势,但是其拟合精度显然不足以建立准确的数学仿真模型,从而满足实艇操纵性预报的要求。如果采取分段低阶多项式的形式表达水动力,虽然拟合精度可以提高一些,但在各区间段的端点不能保持光滑过渡,处理试验数据时也会带来相当的麻烦。由此可见,低阶多项式形式不适用于在整个攻角范围内表达潜艇大机动水动力。
利用样条函数建立非线性水动力数学模型的优点是,可以用低阶多项式很好地逼近各种非线性。样条函数模型也是基于Bryan准定常假设的飞机大攻角气动力常用代数模型之一。在大攻角下,飞机的纵向气动力系数主要是攻角α的非线性函数,只需采用单变量的样条函数模型;横向气动系数对攻角α和侧滑角β都是非线性的,必须采用双变量的样条函数模型[4]。从前面试验数据的分析知道,潜艇垂直面大攻角机动运动水动力的非线性只是体现在攻角α上,实践证明采用3次样条函数插值即可满足工程应用要求,保证了拟合出来的水动力在试验点处二阶连续。在区间[α1,αn]上关于变量α的3次样条函数[5]可以表示为:
样条节点α1,α2,…,αn满足α1<α2<…<αn的顺序。Ch为样条的常数项。图3给出的是基于该函数形式拟合的某一纵倾角速度下纵倾力矩随攻角变化的拟合曲线。
如图3所示,样条函数拟合的水动力严格地经过了每1个试验点,因而具有较高的精度。但这种高精度是建立在水动力试验数据的高准确度上,样条函数形式并不利于消除试验数据本身的误差,且表达完整的水动力情况需要大量的试验数据,一旦数据偏少或分布极其不均,拟合的曲线可能会出现不必要的“振荡”,表现在空间上就是一些凸凹不平的坑,因而采用样条函数形式表达潜艇大机动水动力也有局限性。
图3 纵倾力矩M'的样条函数表达拟合曲线Fig.3Fitted curf of M'by spline interpolation
综上所述,如何应用合理的表达方式在样本数据较少的情况下准确预报潜艇大机动水动力,以及保证其在没有试验数据的区间具有较好的泛化能力,并且能推广到大机动运动整个攻角区间,具有非常重要的工程应用价值,值得进一步研究。
BP网络是1种单向传播的多层前向网络,本文采用的3层BP网络结构如图4所示。输入层为2个神经元,输出层为1个神经元,设隐层神经元数为N,隐层传递函数采用f1(·),输出层传递函数采用f2(·),误差函数采用E(·),则网络的学习过程可用下列函数描述:
图43 层BP网络结构图Fig.4Frame of BP neural net with three layers
学习过程中将误差反向传播计算,对网络各相邻节点的连接权值w和偏置θ进行调整,使误差函数E(·)沿负梯度方向下降,然后再转入正向传播过程,反复迭代,直到误差达到稳态或小于给定的值为止。
当输入、输出变量以及隐层层数明确的情况下,构建BP神经网络的一般步骤如下:
1)对样本的归一化处理,以消除各变量的量纲影响,MATLAB中命令premnmx可将样本数据处理到区间(-1,1)上。
2)根据神经网络的用途选择相应的输出层传递函数,根据数据的特点选择合适的隐层传递函数。
3)设计隐层最佳单元数,一般是在经验公式范围内采用试凑法寻找[5]。隐层神经元的个数是神经网络训练成败的关键,不合理的单元个数容易出现“欠拟合”或“过拟合”的现象。
4)选择合适的训练函数,MATLAB提供的BP神经网络的训练函数有数十种。
1)样本预处理与传递函数选择本文采用更一般的转换公式
隐层传递函数取反对称形式的双曲正切函数,输出层传递函数取纯线性函数。
2)隐层神经元数的确定
对于本组潜艇大机动的试验数据,采用经验公式设计的隐层单元数,其建立的BP神经网络模型并不能获得满意的效果。最佳神经元个数的取值范围必将扩大,盲目摸索非常耗费人力和时间。本文采用近似于穷举法来选择隐层神经元的个数,即先确定1个较大的隐层神经元数目的范围,再从较少神经元开始训练,然后逐渐增加神经元的个数,重复学习训练。这个过程非常类似于人脑对事物认知从简单到复杂的情况,每一步的训练过程都以上一步的训练结果为初值,相当于对上次学习有所“记忆”,整个确定最佳隐层神经元个数的过程也可以看作是循环强化学习的过程,这样不仅能完全自适应地找到最佳隐层单元数,而且还获得了非常高的训练精度。这一点可以对比应用最佳隐层只进行1次训练的拟合曲线和循环训练后的拟合曲线来验证,如图5所示。
图5 不同训练次数拟合曲线对比Fig.5Compare of fitted curf by different train time
考虑到潜艇在整个大攻角范围内机动运动时的实际应用情形,为了保证网络在正常机动和大攻角机动状态下均具有良好的适用性,本文还设计了2个均方差性能参数mse±30°和mse±90°,以及拟合水动力随攻角变化曲线的拐点个数来控制循环次数,一旦同时达到这3个参数设定的值即认为网络已经训练成熟,其中,mse±30°和mse±90°分别用于表征(-30°,30°)和(-90°,90°)区间内的网络预报值与试验值的均方差。
3)训练函数的确定及其预测误差
BP神经网络训练函数实质上基于最速下降反向传播算法经过改进衍化而成。例如,在误差反向传播的基础上,将每1个权值的变化加上1项正比于前次权值变化量的值,并自适应学习速率的训练函数traingdx;基于数值优化方法的算法,结合了梯度下降法和牛顿法在误差下降搜索方向的优点,由Levenberg和Marquardt提出的训练函数trainlm;同样以L-M优化理论为基础对网络权值和偏置进行调整,而将误差性能函数mse修改为包含有网络权值和偏置均方值的误差性能函数msereg的Bayesian正则化训练函数trainbr,其中:
实验结果显示,网络选择这3种训练函数相对于其他训练函数在收敛精度上具有绝对的优势,本文将相应的训练后最佳隐层神经元个数N和设定的均方差性能参数mse±30°和mse±90°列于表1中。
从表1可见,在网络规模相差不大的情况下,Bayesian正则化方法训练的BP神经网络相对于其他2种方法在拟合精度上几乎提高了1个数量级,而且分析其误差性能函数msereg可知,这种方法本身能使网络获得较小的权值和偏置,使得网络的响应趋于平滑,减小了过度拟合的可能性。图6给出了采用函数trainbr训练后纵向力、垂向力和纵倾力矩随攻角和纵倾角速度变化的曲面。
图6 Bayesian正则化法训练的BP神经网络拟合曲面Fig.6Fitted curf of hydrodynamics based on Bayesian-BP neural network
可以看到,所建立的网络在整个潜艇大机动范围内显示了良好的推广性,没有出现类似样条函数表达形式获得曲面的凸凹不平的坑,而且神经网络模型计算值与数据样本的相关系数分别达到了RX=0.995 8,RZ=0.999 6,RM=0.998 9。
图7所示从上到下依次为样条函数、Bayesian正则化法BP神经网络和多项式拟合的纵向力随攻角和纵倾角速度变化曲面。这里3个曲面在垂直方向的距离是为了便于比较图形而设置的,并不代表任意两者之间存在这样一个差值。由图示效果可以直观得出如下结论:Bayesian正则化法BP神经网络对数据样本集较小的潜艇大机动水动力函数逼近能力优异,是一种优于多项式和样条函数形式表达潜艇大机动运动水动力的方法。
图7 3种表达方式对纵向力的拟合曲面对比图Fig.7Compare of X'fitted curf by three means
1)潜艇的大攻角机动运动表现出强烈的非线性特征,采用多项式、样条函数形式表达其水动力具有各自明显的局限性或不足,本文应用BP神经网络模型拟合了整个大攻角范围内的水动力试验值,展示了其作为一种函数逼近工具的优越性;
2)本文建立的BP神经网络采取了循环强化训练的方法,以及通过近似穷举法设计神经网络隐层单元数,实践表明这些处理方法的方便、可行性;在确定训练函数过程中,发现Bayesian正则化方法具有较高的网络预报精度和网络泛化能力,适合于样本数据集较小的潜艇大机动水动力拟合;
3)本文采用BP神经网络技术表达潜艇大攻角机动运动水动力的研究工作,为合理应用水动力试验数据并建立其数学仿真模型提供了一种新的思路,具有广阔的工程应用前景。
[1]张华,吴宝山.扁平型潜水器空间大机动数学模型研究[A].2004年船舶水动力学学术会议论文集[C].2004.122-129.
[2]田雨波.混合神经网络技术[M].北京:科学出版社,2009.38-48.
[3]从爽.面向MATLAB工具箱的神经网络理论与研究[M].合肥:中国科学技术大学出版社,2009.63-100.
[4]汪清,蔡金狮.飞机大攻角气动力建模研究进展[J].气动实验与测量控制,1994,(9):7-16.
[5]李红.数值分析[M].武汉:华中科技大学出版社,2006.40-49.
[6]飞思科技产品研发中心.神经网络理论与MATLAB7实现[M].北京:电子工业出版社,2005.99-104.