发明名称 基于NSGA-II算法的船舶推力分配方法
摘要 本发明提供一种基于NSGA‑II算法的船舶推力分配方法,确定推力分配输入量即动力定位系统控制器发出的推力指令:纵向合力、横向合力和艏摇力矩并设定为已知变量;分析目标船所受合力;建立推力分配数学模型,运用NSGA‑II算法进行推力分配得到最优推力分配解等一系列步骤。本发明采用NSGA‑II算法在进行推力分配的过程中不需要人为的设定各个目标函数权重值,从而能够更精确的寻找到使得推进系统能耗最小、推力误差最小和推进器磨损最小时每个推进器的最优转速和方向角。
申请公布号 CN105911867A 申请公布日期 2016.08.31
申请号 CN201610429104.3 申请日期 2016.06.16
申请人 哈尔滨工程大学 发明人 夏国清;刘彩云;陈兴华;薛晶晶
分类号 G05B13/04(2006.01)I 主分类号 G05B13/04(2006.01)I
代理机构 代理人
主权项 基于NSGA‑II算法的船舶推力分配方法,其特征在于:包括如下步骤:步骤1:确定推进器配置,建立推力分配模型,确定输入指令即控制器输出的推力指令τ=[F<sub>x</sub> F<sub>y</sub> F<sub>z</sub>],其中:F<sub>x</sub>、F<sub>y</sub>、M<sub>z</sub>分别表示平台所需的纵向、横向力和回转力矩,且有:<img file="FDA0001020058650000011.GIF" wi="665" he="197" />其中:l<sub>xi</sub>、l<sub>yi</sub>分别是第i个推进器安装位置与船舶重心之间的距离;u是表示由每个推进器产生的输出推力的向量;α<sub>i</sub>表示每个推进器输出力的方向;步骤2:初始化算法参数:NSGA‑II算法的初始化参数包括种群规模M和迭代次数N,M代表有多少个初始的推进器分配方案,N表示在分配方案空间中搜索的次数;步骤3:将步骤1和步骤2所述的参数信息读入NSGA‑II算法中;步骤4:根据推进器的配置进行编码:编码采用十进制编码方式,其中染色体的长度为染色体上基因的个数,染色体上基因的个数等于推进器的数目,每个基因包含推力幅值和方向两个参数;步骤5:计算种群个体的目标函数值并进行快速非支配集排序:目标函数的要求是能量消耗、推力误差和推进器磨损最小化,建立推力分配优化问题的数学模型为:<maths num="0001" id="cmaths0001"><math><![CDATA[<mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><mi>min</mi><mi> </mi><msub><mi>f</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>T</mi><mo>,</mo><mi>s</mi><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><msubsup><mi>T</mi><mi>i</mi><mn>2</mn></msubsup><mo>+</mo><msup><mi>s</mi><mi>T</mi></msup><mi>Q</mi><mi>s</mi></mrow></mtd></mtr><mtr><mtd><mrow><mi>min</mi><mi> </mi><msub><mi>f</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>T</mi><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><msup><mrow><mo>(</mo><mrow><msub><mi>T</mi><mi>i</mi></msub><mo>-</mo><msub><mi>T</mi><mrow><mi>i</mi><mo>,</mo><mn>0</mn></mrow></msub></mrow><mo>)</mo></mrow><mn>2</mn></msup></mrow></mtd></mtr><mtr><mtd><mrow><mi>min</mi><mi> </mi><msub><mi>f</mi><mn>3</mn></msub><mrow><mo>(</mo><mi>&alpha;</mi><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><msup><mrow><mo>(</mo><msub><mi>&alpha;</mi><mi>i</mi></msub><mo>-</mo><msub><mi>&alpha;</mi><mrow><mi>i</mi><mo>,</mo><mn>0</mn></mrow></msub><mo>)</mo></mrow><mn>2</mn></msup></mrow></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0001020058650000012.GIF" wi="574" he="430" /></maths><maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>s</mi><mo>.</mo><mi>t</mi><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><mi>s</mi><mo>=</mo><mi>B</mi><mi>T</mi><mo>-</mo><msub><mi>&tau;</mi><mi>c</mi></msub></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>T</mi><mrow><mi>m</mi><mi>i</mi><mi>n</mi></mrow></msub><mo>&le;</mo><msub><mi>T</mi><mi>i</mi></msub><mo>&le;</mo><msub><mi>T</mi><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow></msub></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>&Delta;T</mi><mrow><mi>m</mi><mi>i</mi><mi>n</mi></mrow></msub><mo>&le;</mo><msub><mi>T</mi><mi>i</mi></msub><mo>-</mo><msub><mi>T</mi><mrow><mi>i</mi><mo>,</mo><mn>0</mn></mrow></msub><mo>&le;</mo><msub><mi>&Delta;T</mi><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow></msub></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>&alpha;</mi><mi>min</mi></msub><mo>&le;</mo><msub><mi>&alpha;</mi><mi>i</mi></msub><mo>&le;</mo><msub><mi>&alpha;</mi><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow></msub></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>&Delta;&alpha;</mi><mrow><mi>m</mi><mi>i</mi><mi>n</mi></mrow></msub><mo>&le;</mo><msub><mi>&alpha;</mi><mi>i</mi></msub><mo>-</mo><msub><mi>&alpha;</mi><mrow><mi>i</mi><mo>,</mo><mn>0</mn></mrow></msub><mo>&le;</mo><msub><mi>&Delta;&alpha;</mi><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow></msub></mrow></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0001020058650000013.GIF" wi="574" he="374" /></maths>其中:T是推进器输出推力;s是松弛变量;Q是对角线正定矩阵;α是推进器方向角;T<sub>i,0</sub>表示前一个时刻的推力值,T<sub>i</sub>表示的是当前时刻的推力值;α<sub>i,0</sub>表示的是前一个时刻的推进器的角度,α<sub>i</sub>表示的是当前时刻的推进器的角度;f<sub>1</sub>表示的是推进器的功率;f<sub>2</sub>表示的是推力变化率;f<sub>3</sub>表示的是推进器角度变化率;s.t中的第二个约束方程为推进器推力T<sub>i</sub>的上下限、第三个约束方程为推进器推力的变化率、第四个约束方程为禁止角α<sub>i</sub>的上下限、第五个约束方程为推进器方位角的变化率,且T<sub>min</sub>为最小推力,T<sub>max</sub>为最大推力;α<sub>min</sub>为最小方位角,α<sub>max</sub>为最大方位角,ΔT<sub>min</sub>为推力最小变化值,ΔT<sub>max</sub>为推力最大变化值;Δα<sub>min</sub>为方位角变化的最小速度,Δα<sub>max</sub>为方位角变化的最大速度;τ<sub>c</sub>为控制器输出的推力指令;步骤6:对种群进行选择、交叉、变异遗传操作,产生子种群:选择操作采用锦标赛法来对个体进行选择;交叉操作采用模拟二进制交叉法;变异操作采用多项式变异方法;步骤7:合并初始种群和子种群产生新种群,对新种群进行快速非支配集排序,计算拥挤距离并排序:对于每个目标函数,先根据该目标函数的大小对非支配解集中的个体进行排序,然后再对每个解i计算由解i+1和i‑1构成的超立方体的平均边长即为解i的拥挤距离进行排序;步骤8:保留精英,选前N个个体作为新的初始种群;步骤9:重复步骤5到步骤7的过程,判断迭代次数是否达到最大迭代次数N,达到则结束算法,否则重复上述过程;步骤10:输出NSGA‑II算法寻找到的最优分配方案,即每个推进器产生的推力和方向角。
地址 150001 黑龙江省哈尔滨市南岗区南通大街145号哈尔滨工程大学科技处知识产权办公室