动力定位系统的定位能力不仅能为动力定位系统的设计提供依据,也可作为在使用过程中的重要参考标准,对其研究的重要性不言而喻。依据IMAC规范,动力定位能力是船舶动力定位系统能够抵抗的极限海况,一般以定位能力曲线表示[1]。定位能力计算过程中考虑的是推进器系统与环境外力是否平衡,其数学模型实质是求解带非线性约束的推力优化问题。传统上使用序列二次规划法、牛顿法等适用于单极值问题的算法来求解优化[2,3]。但现代船舶一般都布置多个推进器且常含有回转推进器,增加了推力优化的复杂度,导致在定位能力计算中的优化问题很有可能出现多极值解,即有多个局部最优值。加上传统优化算法对初始值很敏感,如果初始值设置得不恰当就无法得出最优解,陷入局部最优[4]。现代智能算法突破了传统算法的局限性,并因其快速有效而被广泛应用[5]。文献[4]利用模拟退火算法进行了动力定位能力的优化计算,文献[6]以神经网络进行了训练并优化计算了动力定位能力,都得到了较好的结果。粒子群(PSO)是源于鸟群活动的全局优化算法,能够用来求解具有多极值的问题。综合学习粒子群(CLPSO)算法是PSO算法的一个变种,在多峰问题上有较好的应用,但由于CLPSO算法利用当前搜索速度和个体最优值来更新搜索速度,使得算法在迭代后期搜索速度值很小,从而导致收敛速度很慢,降低了计算效率[7]。为改善CLPSO算法,研究者做了一些有益的工作。文献[8]提出了一种依据种群进化过程中的信息动态调整粒子的变异概率的自适应CLPSO算法,文献[9]引入克隆选择机制,提出了免疫综合学习粒子群算法。这些改进算法在解决复杂多峰问题上都发挥了较好的效果。基于多种群的改进也是优化算法的改进方向之一,可以得到良好的效果[10-11]。本文基于CLPSO算法和多种群思想提出了多种群综合学习粒子群算法(MCLPSO),并利用所提算法计算了实际船舶的动力定位能力。
1 环境载荷的计算要计算船舶的定位能力,首先要计算其所受的环境载荷。船舶所受的环境载荷主要是风力、流力、波浪力,本文只计算水平面上的力及力矩。假设风、浪、流同向,方向角都设为
风力与风速、风向、船舶构件的形状及高度等有密切相关,将这些因素整合成一个风力系数,风力计算公式为:
$\left\{ \begin{array}{l} {F_{wdx}}(\alpha ) = {C_{wdx}}(\alpha )V_{wd}^2, \\[5pt] {F_{wdy}}(\alpha ) = {C_{wdy}}(\alpha )V_{wd}^2, \\[5pt] {M_{wd}}(\alpha ) = {C_{wdM}}(\alpha )V_{wd}^2{\text{。}} \end{array} \right.$ | (1) |
式中,
流力的计算与风力相似,流力计算公式为:
$\left\{ \begin{array}{l} {F_{cx}}(\alpha ) = {C_{cx}}(\alpha )V_c^2, \\[5pt] {F_{cy}}(\alpha ) = {C_{cy}}(\alpha )V_c^2, \\[5pt] {M_c}(\alpha ) = {C_{cM}}(\alpha )V_c^2{\text{。}} \end{array} \right.$ | (2) |
式中,
波浪力中的一阶成分不会使船舶移动,对船舶动力定位的影响主要由二阶波浪力引起,二阶波浪力计算公式为:
$\left\{ \begin{array}{l} {F_{wvx}}(\alpha ) = \int_0^\infty {S(\omega ){C_{wvx}}(\omega ){\rm d}\omega }, \\[5pt] {F_{wvy}}(\alpha ) = \int_0^\infty {S(\omega ){C_{wvy}}(\omega ){\rm d}\omega }, \\[5pt] {M_{wv}}(\alpha ) = \int_0^\infty {S(\omega ){C_{wvM}}(\omega ){\rm d}\omega } {\text{。}}\end{array} \right.$ | (3) |
式中:
动力定位系统定位能力是衡量动力定位系统性能的重要指标,可以采用可抵抗最大风速来表示。可抵抗最大风速是指动力定位系统满足控制精度范围之内时,船舶各个方向上可以抵抗的最大风速。在分析定位能力的过程中,一般假设风、浪、流等环境力同方向,并可以叠加,且流速一定,进而考虑推进器的推力与外界环境力在水平面上的静态平衡。所以需要利用优化算法求解各推进器的推力大小及其方向以满足此静态平衡。本文以总推力最小为优化目标,建立推力求解的数学模型,如式(4)所示。
$\left\{ {\begin{array}{*{20}{l}} {\min g(T) = \sum\limits_{i = 1}^{num} {{T_i}} }, \\ {s.t. } \\ {\sum\limits_{i = 1}^{num} {{T_i}} \cos ({\theta _i}) = {F_{wdx}} + {F_{cx}} + {F_{wvx}} }, \\ {\sum\limits_{i = 1}^{num} {{T_i}} \sin ({\theta _i}) = {F_{wdy}} + {F_{cy}} + {F_{wvy}}}, \\ {\sum\limits_{i = 1}^{num} {{T_i}} ({x_i}\sin ({\theta _i}) - {y_i}\cos ({\theta _i})) = {M_{wd}} + {M_c} + {M_{wv}}} {\text{。}}\end{array}} \right.$ | (4) |
式中:
在实际求解过程中,需要对上述优化问题的约束条件进行处理。这里采用外点惩罚函数的方法将问题转化为无约束问题[12]。惩罚函数可表述为:
$\begin{split} &\min {\text{ G}}(T) = \sum\limits_{i = 1}^{num} {{T_i}} {\text{ + }} \\& {\lambda _1}(\sum\limits_{i = 1}^{num} {{T_i}} \cos ({\theta _i}) - {F_{wdx}} - {F_{cx}} - {F_{wvx}})+ \\ &{\lambda _2}(\sum\limits_{i = 1}^{num} {{T_i}} \sin ({\theta _i}) - {F_{wdy}} - {F_{cy}} - {F_{wvy}}) + \\& {\lambda _3}(\sum\limits_{i = 1}^{num} {{T_i}} ({x_i}\sin ({\theta _i}) - {y_i}\cos ({\theta _i})) - {M_{wd}} - {M_c} - {M_{wv}})\text{。} \end{split} $ | (5) |
式中,
计算船舶在不同角度下所能承受的最大风速过程中,设流速为固定值,首先风向角设为0°,采用二分法计算此风向下可抵抗的最大风速,接着方向角以一定的间隔(如10°)增加,继续计算最大风速,直至360°。最后为了直观表现,以各个角度上计算得到的最大风速在极坐标系上绘制出一条包络曲线,即定位能力曲线。在计算某个风向下的可抗最大风速时,需要设置一个合理风速上限和下限,以便求解。动力定位能力计算流程如图1所示。
动力定位能力计算关键在于推进器推力与环境力的平衡判定。平衡判定就是依据推力数学模型,采用优化算法对推力进行优化求解,有解则为能够平衡,反之,则不能。所以优化算法的性能十分重要。
![]() |
图 1 动力定位能力计算流程图 Fig. 1 Flow chart of DP capability calculation |
粒子群算法结构简单,参数少,收敛速度快,被广泛应用于各种领域中。对于某个优化问题,种群中的每个粒子的位置代表一个潜在解,并根据目标函数选择出各粒子个体最优值pb以及种群全局最优值pg,粒子通过速度V更新位置X,进而更新pb和pg。传统PSO在处理复杂多峰问题中易于陷入局部最优,为此Liang等提出了一种新的更新策略,并基于该策略提出了综合学习粒子群(Comprehensive Learning PSO,CLPSO)算法[7]。传统PSO是以粒子自身的最优值和全局最优值来更新速度和位置,而新的更新策略的主要思路是利用种群中任意粒子的最优信息来更新某一粒子的速度,进而更新位置:每个粒子的每一维都以大小为
$\left\{ \begin{array}{l} V_{jd}^{t + 1} = \omega V_{jd}^t + cr_{jd}^t(pb_{{f_j}(d)}^t - X_{jd}^t), \\ V_{jd}^{t + 1}{\text{ = }}\min ({V_{jd\max }},\max ({V_{jd\min }},V_{jd}^{t + 1})), \\ X_{jd}^{t + 1} = X_{jd}^t + V_{jd}^{t + 1}, \\ X_{jd}^{t + 1}{\text{ = }}\min ({X_{jd\max }},\max ({X_{jd\min }},X_{jd}^{t + 1})){\text{。}} \\ \end{array} \right.$ | (6) |
式中:
由于CLPSO算法仅使用粒子的个体最优信息来指导整个迭代过程,因此种群具有较高的多样性,扩大了搜索范围。这种变化使得算法更偏重于全局搜索能力而削弱了局部搜索能力。CLPSO算法的缺陷具体表现为:1)由于全局最优值未参与到粒子的速度和位置更新中,使得粒子速度在迭代后期过小,以致收敛速度较慢。2)由于缺乏跳出局部最优的措施,一旦大部分粒子的个体最优值陷入局部最优时,将导致算法开始收敛,无法搜寻到全局最优值。
3.2 多种群综合学习粒子群算法多种群思想是借鉴同一物种在不同地域进化所呈现的自然现象而来的。多种群算法是将多个小种群组成一个种群,通过小种群各自搜索最优值的方式提高全局算法搜索能力,并以整个种群最优值间接交流、动态重组种群等方式来增加种群多样性,同时加快算法的收敛速度。本文提出的多种群综合学习粒子群算法(MCLPSO)主要思路是:首先将整个种群分成N个小种群,然后分别进行迭代进化,并且在适当的条件下进行种群粒子交换和粒子变异,MCLPSO算法计算框架如图2所示。
![]() |
图 2 多种群综合学习粒子群算法计算结构 Fig. 2 MCLPSO computing framework |
MCLPSO算法主要步骤如下:
步骤1 将种群分成N个小种群,并初始化各个参数。
步骤2 各个小种群进行CLPSO算法迭代,并通过目标函数找出粒子个体最优值、小种群的最优值以及整个种群的全局最优值。为了保证算法在前期具有较高的全局搜索能力,在算法前期(可设为第
$\left\{\!\!\!\! \begin{array}{l} V_{jd}^{t + 1} = \omega V_{jd}^t + {c_1}r_{1jd}^t(pb_{{f_j}(d)}^t - X_{id}^t) + {c_2}r_{2jd}^t(pg_d^t - X_{jd}^t), \\ V_{id}^{t + 1}{\text{ = }}\min ({V_{id\max }},\max ({V_{id\min }},V_{id}^{t + 1})), \\ X_{jd}^{t + 1} = X_{jd}^t + V_{jd}^{t + 1}, \\ X_{jd}^{t + 1}{\text{ = }}\min ({X_{jd\max }},\max ({X_{jd\min }},X_{jd}^{t + 1})) {\text{。}}\end{array} \right.$ | (7) |
式中:
步骤3 若某个小种群连续
$X_{jd}^t = X_{jd}^t + randn({X_{jd\max }} - {X_{jd\min }})(G - g)/G\text{。} $ | (8) |
式中,randn为(–1,1)间的随机数,G为总的迭代代数,g为当前代数。
步骤4 在第
综上,MCLPSO算法的流程如图3所示。
![]() |
图 3 多种群综合学习粒子群算法流程 Fig. 3 MCLPSO flow chart |
为了验证本文提出的多种群综合学习粒子群算法的有效性,采用该算法对一艘1 000 t起重船的动力定位系统的定位能力进行优化分析。
4.1 船舶相关参数所研究的船舶为长江航道局三峡库区1 000 t应急抢险打捞起重船,该船的相关参数如表1所示。该船共布置有4个推进器,具体信息如表2所示,计算过程中所用坐标系及推进器布置位置如图4所示。
![]() |
图 4 坐标系及推进器布置 Fig. 4 Coordinate system and thrusters’ configuration |
![]() |
表 1 起重船主要参数 Tab.1 Main parameters of crane ship |
![]() |
表 2 推进器主要参数 Tab.2 Main parameters of thrusters |
为了验证MCLPSO算法的有效性,设计了3种推进器工作模式。1)所有推进器正常工作;2)单推进器失效最好模式:推进器2失效;3)单推进器失效最坏模式:推进器4失效(推进器3和4对称布置)。分别利用CLPSO算法和MCLPSO算法来优化计算定位能力,并与Kongsberg公司计算结果比较。
算法参数设置:MCLPSO算法和CLPSO算法总种群规模都为75,最大迭代次数G都为300,
在计算过程中,流速大小设为1.5 kn,且当水平面3个自由度上的环境载荷与推进力的误差的绝对值之和小于0.1时,则认为推力有解。编写Matlab程序,计算结果如图5~图7所示。
从图5~图7可以看出利用本文提出的MCLPSO算法进行优化的定位能力曲线与Kongsberg公司的计算结果很吻合,说明MCLPSO算法有效。而利用CLPSO算法计算出的结果与之相差甚远,其主要原因是CLPSO算法在后期的收敛速度变慢以及陷入局部最优的概率较大,导致算法在总迭代次数较小的情况下难以收敛到最优值,以至于程序认为推力不能平衡环境载荷,无法得出正确结果。
另一方面可以看出,模式1的定位能力最好,模式2次之,模式3的定位能力最差。同时结果也表明该起重船的定位能力在风浪向角为
![]() |
图 5 模式1—所有推进器正常 Fig. 5 Case 1 - All thrusters normal |
![]() |
图 6 模式2—推进器2失效 Fig. 6 Case 2 – Thruster 2 failure |
![]() |
图 7 模式3—推进器4失效 Fig. 7 Case 3 – Thruster 4 failure |
本文针对动力定位能力分析问题,给出了定位能力计算流程,并针对性地提出了一种适用于动力定位能力优化计算的多种群综合学习粒子群算法。在算法中多个种群并行进化,为了提高算法的各项性能,在前后期采用了2种不同的更新策略,同时增加了粒子变异机制和种群重组机制。最后将算法应用到实际船舶的动力定位能力计算中,计算结果表明所提算法是一种有效的动力定位能力优化计算的方法。
[1] | Specification for DP capability plots[S]. IMCA M140 Rev. I, 2000, 6. |
[2] | 徐胜文, 汪学锋, 王磊. 半潜平台推力器失效模式下的动力定位能力分析[J]. 船舶力学, 2016, 5:558–565. |
[3] | 苗科,邵凯,杨虎. 苏伊士型穿梭油船动力定位能力分析[J]. 船海工程,2015,03:100–104, 113. http://www.wanfangdata.com.cn/details/detail.do?_type=perio&id=whzc201503024 |
[4] | 刘正锋, 刘长德, 匡晓峰, 等. 模拟退火算法在动力定位能力评估中的应用[J]. 船舶力学, 2013, 17(4): 375–381. http://mall.cnki.net/magazine/Article/GXKZ201305017.htm |
[5] | 杨劲秋. 智能优化算法评价模型研究[D]. 杭州: 浙江大学, 2011. |
[6] | A.B. MAHFOUZ. Predicting the capability polar plots for dynamic positioning systems for offshore platforms using artificial neural networks[J]. Ocean Engineering, 2007, 34:1151–1163. |
[7] | LIANG J J, QIN A K, SUGANTHAN P N, et al. Comprehensive learning particle swarm optimizer for global optimization of multimodal functions [J]. IEEE Transactions on Evolutionary Computation, 2006,10(3):281–295. |
[8] | 林国汉, 章兢, 刘朝华. 免疫综合学习粒子群优化算法[J]. 计算机应用研究, 2014, 11: 3229–3233. |
[9] | 蔡昭权,黄翰. 自适应变异综合学习粒子群优化算法[J]. 计算机工程,2009,07: 170–171, 202. http://www.cqvip.com/QK/95200X/200907/30045982.html |
[10] | 张涛, 徐雪琴, 史苏怡, 等. 基于改进多种群量子粒子群算法的STATCOM选址及容量优化[J]. 中国电机工程学报,2015,S1: 75–81. http://www.oalib.com/paper/4400943 |
[11] | 高云龙, 闫鹏. 基于多种群粒子群算法和布谷鸟搜索的联合寻优算法[J]. 控制与决策, 2016, 4: 601–608. http://www.cnki.com.cn/Article/CJFDTotal-KZYC201604004.htm |
[12] | 蔡海鸾. 惩罚函数法在约束最优化问题中的研究与应用[D]. 上海: 华东师范大学, 2015. |