基于差分进化算法的智能配载技术
2022-03-30林辰儒秦尧姚望李思佳
林辰儒,秦尧,姚望,李思佳
(上海船舶研究设计院,上海 201203)
0 前 言
随着装载计算机的普及, 对配载方案的强度、稳性校验已经可以通过计算机得出结果,但是在船舶营运过程中,依旧需要依靠大副的经验来决定船舶浮态, 并通过人工调整计算出相应的配载方案,选择少,费时费力,精准度欠缺,也没有明确的优化目标。
近年来随着智能船舶技术的快速发展,通过人工智能算法或者大数据分析等技术手段,能够对海量实船营运的数据进行分析和挖掘,找到能效最佳的航行姿态并推荐给船长,即数字化营运中的纵倾优化服务。 与传统船舶航行相比,数字化营运会根据海况、 气候等条件更加频繁地改变船舶姿态,以此提高船舶推进效率,而能够自动生成优化配载方案的智能配载算法则可以降低船长和大副的工作强度,提升配载效率。
船舶的智能配载是指通过计算机手段,将目标吃水、纵倾、横倾等作为输入参数,结合船舶完整稳性、总纵强度等校核要求,并满足一定的优化目标,自动生成配载方案的过程, 旨在减少人工介入,节省配载时间并且提升船舶航行的安全性。 杨军[1]首先提出了一种基于专家系统的散货船自动配载仪的设计,其本质还是基于经验和推理的方式,考虑范围有限,并且需要大量预先设计的规则。 同年,杜嘉立等[2]也开发了基于公用数据库以及知识库的自动配载程序,与专家系统类似。 2016 年,吴海波[3]提出了一种基于差分进化算法的自动配载仪,通过调整首尾货舱的装载量调整吃水差,但是只从可行解中挑选剪力弯矩相对较优的解,没有有针对性的优化。 2017 年,刘春雷[4]设计了一种通过离散差分进化算法优化散货船装卸货过程的智能配载算法,并对剪力弯矩有相应优化,但是其并没有将含有自由液面的压载舱数量这一因素考虑在内,而自由液面会对船舶的稳性、操纵性和安全性产生影响,在应用过程中船员也会因为含有自由液面的舱室过多而对配载方案提出质疑, 即使配载方案通过了稳性、强度校核,船员依旧难以接受。 因此,基于差分进化算法,结合已有的装载计算机工具,实现自由液面舱室的数量最少和全船最大许用剪力、弯矩百分比最小为协同优化目标的智能配载的算法,可以根据船舶当前的装载状态, 结合纵倾优化功能,在分析得到船舶营运能效最佳的姿态后,自动生成达到最优姿态所需的配载方案。
1 智能配载数学建模
1.1 智能配载计算模型
在静水条件下, 不考虑船舶的中拱/中垂变形,当需要对船舶浮态调整时, 如何通过智能算法,结合装载计算机的辅助计算,将压载水合理分配到指定的压载水舱室,即指定目标浮态(吃水,横倾,纵倾),以及可用的压载水舱后,针对满足目标浮态的压载水配载方案进行自由液面舱室数量和全船最大弯矩、剪力的协同优化后,输出各压载水舱室的目标装载量。 其本质为解决满足一定约束条件的多目标优化问题。
设计约束优化对象X=[X1,X2,…,XD]对应各目标舱室的压载水量, 其维度D 为选取舱室的个数。调整装载水量X, 使其满足如下的约束条件来限制船舶的浮态。
1.2 约束条件
在满足完整稳性、总纵强度、视线盲区、螺旋桨浸没等由装载计算机计算得出的稳性及浮态校核要求前提下,对于指定舱室Ci的舱容约束如下:
式中:Ci,min为舱室容量下限,通常为0;Ci,max为舱室Ci的最大装载量。
对目标吃水、横倾角θ、纵倾角φ 的浮态约束方程组如下:
式中:△target为通过静水力表根据目标吃水、 纵横倾角度θ 和φ 计算得出的目标总排水量;△current、xG、yG、zG、xB、yB、zB分别为装载计算机根据装载情况X 计算得出的总排水量,重心的纵向、横向、垂向坐标,以及浮心的纵向、横向、垂向坐标;原本通过表示装载情况X 所对应的纵倾角、横倾角的正切值tanφ′,tanθ′,约束目的是使其与目标纵倾角、横倾角的正切值tanφ,tanθ 尽可能相等, 但是为了避免除0 情况采用相乘的运算。
1.3 优化目标
满足上述约束条件的配载方案可能会有很多,按照以下优化目标, 结合装载计算机运行数据,从中寻找最优的结果。
1)含有自由液面的舱室数量最少。设定装载量在2%到98%之间为自由液面。 舱室的装载容量从装载计算机中获取。
2)最大剪力许用百分比SFmax的值最小,SFmax为所有计算剖面实际剪力占许用剪力百分比值中的最大值,由装载计算机计算得出。
3) 最大弯矩许用百分比BMmax的值最小,BMmax为所有计算剖面实际弯矩占许用弯矩百分比值中的最大值,由装载计算机计算得出。
4) 考虑到稳性最优和强度最优的矛盾点,对以上3点做加权求和后的总体协同优化,而非单项最优。
2 差分进化求解自动配载
遗传算法是模拟生物进化过程,通过用数学建模的方式模拟染色体杂交、变异以及优胜劣汰的方式,在解空间内随机搜索最优解的过程,在处理复杂优化问题或是难以直接用数学模型找到最优解的场景有良好的表现[5]。 差分进化算法(Differential Evolution,DE 算 法)是Storn 等[6]于1997 年 发表的基于遗传算法针对非线性不可导的连续空间寻求整体最优解的启发式优化方法。与传统遗传算法一样,DE 算法对种群执行初始化、变异和交叉,使种群随着迭代次数进化。 DE 算法与遗传算法的主要区别在于:在进化的每一代中,遍历种群中每一个目标个体,在变异步骤对随机多个不同父代进行矢量差分,在选择步骤将变异结果与随机父代进行矢量交叉生成子代,最后在选择步骤将子代与目标个体进行择优竞争。 与传统遗传算法相比,DE 算法在优化后期对局部最优陷阱有更好的回避能力,更容易找到整体最优解。 同时,DE 算法还有变量少、鲁棒性强、收敛速度快,并且便于实现和使用的优点[7]。 DE算法在求解智能配载时的过程如下。
2.1 种群初始化
在问题可行解空间内,指定种群内的个体数量NP,随机生成初始种群P0=[X1,X2,…,Xnp],初始种群尽可能分布在整个解空间内以降低陷入局部最优的可能。种群中的每一个个体Xj都是一个配载方案,Xj中第i 个元素Xj,i为指定舱室列表中第i 个舱室对应的装载量,且每个元素Xj,i满足等式(1):
2.2 变异操作
遗传算法中通过变异来生成新的基因信息,即生成新的备选装载量。 差分进化中有多种变异策略,本项目采用最常见的DE/rand/1 策略,即对于父代配载方案Xj,随机选取一个目标个体Xa以及一组随机个体(Xb,Xc),对(Xb,Xc)进行矢量差分,即将Xb和Xc两个配载方案中各对应舱室装载量相减,将结果乘以缩放因子F 后加给目标个体Xa产生变异个体Xm,且选取目标满足j≠a≠b≠c。 通过矢量差分的方式,保证变异个体在解空间内与选取个体都保持一定的距离,以此强化全局搜索的能力。 其矢量公式如下:
2.3 交叉操作
DE 算法通过离散的交换目标个体与变异个体的信息来得到新的个体。 常用的交叉方式有二项式交叉与指数交叉。 指数交叉通常为了应对个体中相邻纬度存在相关性的问题。 本项目采用二项式交叉的方式,即试验子代(配载方案)的每个舱室的装载量都随机、离散地来自父代或变异个体对应舱室的装载量。
对于父代配载方案Xj的第i 个舱室装载量Xj,i,比较随机概率ri与指定的交叉率CR 的大小来决定子代配载方案Xnewj中的对应舱室的装载量Xnewj,i,并且为了防止交叉产生的子代与父代个体相同,要保证子代至少有一个纬度来自变异个体:
对每一迭代中的每个父代个体都会随机生成整数R=rand(0,D)来指定一个随机舱室以及一个同纬度的随机概率向量用于产生新的试验子代。
式中:D 为总舱室个数,ri为该舱室对应的随机概率。
2.4 选择操作
DE 算法采用贪婪的方式,通过比较子代Xnewj与当前迭代的目标父代Xj的适应度值,择优选择出下一个迭代中的父代个体X′j,在最小化问题中:
式中:G(x)为适应值计算函数,在下文中详细介绍。
2.5 适应度值计算
在DE 算法中, 用适应度的值来对个体的好坏进行评判。 适应度值的计算方式决定了种群进化的方向,本算法结合第一节中介绍的约束条件和优化目标设计适应度值计算的方式。 根据适应度值进化的本质是单目标约束优化问题,因此,通过适应度值综合量化描述船舶的当前浮态与目标浮态的差异,含有自由液面的舱室数量,稳性、强度校核是否通过,以及最大剪力、最大弯矩的值。 由于量化目标中有多个最小化问题,因此将适应度值设计为针对约束条件和优化目标的惩罚函数。 进化目标为适应度(总惩罚函数)的值最小。
约束条件的误差函数设计为
浮态惩罚函数为Gf(X)=af1(X)+bf2(X)+cf3(X)+f4(X),a、b、c 为惩罚系数。 为了防止问题无法收敛,采用设定宽松值的方式,即各项惩罚函数只在大于宽松值时才被计算进浮态惩罚函数,否则取0。
优化条件的惩罚函数设计为:
f6(X)为含有自由液面的舱室个数,由于舱顶空气和底部残液的影响,对自由液面的判断为该舱室中压载水量在舱室容量的2%~98%。
总惩罚函数为
只有当约束条件满足时才计算优化条件,保证在进化过程中约束条件的优先级,同时也通过避免对无意义的结果进行优化来提升计算效率。 由于0<SFmax+BMmax<2,设计f4为0 或2 是为了提高状态检测惩罚项的优先级,以此保证最优解必定是优先满足各项检测,再考虑全船最大剪力弯矩最小化(如果问题收敛)。
2.6 终止条件
DE 算法通过循环迭代进化, 算法在每一个迭代中都会生成新变异体并逐一评价,采用优胜劣汰的方式选出新的个体,并判断终止条件是否满足,如果不满足则进入下一个迭代,满足则退出循环并输出结果。 本项目采用将适应度值在一定连续迭代不变作为终止条件,相比固定迭代次数,此方法更加灵活,针对简单问题能更快输出结果,针对复杂问题则可以通过增加计算时间输出更精确的结果。
2.7 算法总体流程
外部输入目标浮态,可调整的压载水舱室列表,以及种群规模和迭代数量后,算法通过装载计算机接口获取船舶当前浮态和舱室信息,同时初始化差分进化参数。 随后以目标浮态和营运要求为约束条件,以含有自由液面舱室数量和剪力、弯矩许用百分比的加权求和值为协同优化目标,执行差分进化算法。 当判断种群收敛或者达到最大迭代次数后,退出并返回结果。 具体流程图如图1 所示。
图1 智能配载算法流程图
3 验证与分析
选取某矿砂船为对象进行验证,输入参数如表1 所示。
表1 智能配载输入(压载)
因舱室较多, 舱室编号均采用缩写形式,其中,R2 表示压载水舱,小数点后数字表示舱室号,后缀 中A 表 示AFT,F 表 示Fore,P 表 示Port,S 表 示Starboard。 例如R2.03AP 表示No.3 A.W.B.TK.P,即3 号后压载水舱(左)。 R2.AF1 和R2.AF2 均为艉尖舱。 其舱室对应位置如图2 所示。
图2 舱室布置图
智能配载输出结果如表2 所示:在不考虑自由液面优化时, 自动配载结果是16 个舱均含有自由液面;在考虑自由液面优化计算后,仅有3 个舱含有自由液面, 大幅度减少含有自由液面的舱室数量。 最大弯矩和剪力的许用百分比也基本持平,甚至有所降低,但是最大弯矩和剪力值的降低也可能是由于遗传算法本身随机性带来的影响。
表2 某矿砂船智能配载输出结果对比
4 结 语
针对船舶营运期间纵倾优化的应用场景,结合已有的装载计算机工具,基于差分进化算法实现了一套智能配载算法。 该算法收敛性好,准确性高,在满足船舶稳性、强度、视线盲区等要求的同时,针对含有自由液面的舱室数量和船舶总纵弯矩、剪力做多目标协同优化, 如果与船舶智能系统相结合,可以有效提高船舶的营运能效。