2. 推力分配问题的数学描述
在上一节中我们已经明确:DP控制系统由控制器给出三自由度广义力指令 τ = [Fx, Fy, Mz]ᵀ,而推力分配的任务是把这一组“合力与合力矩”分解到各台推进器上。要让计算机真正求解这个问题,必须先把工程语言翻译成数学语言——也就是建立推力分配的一般优化模型。本节围绕三个问题展开:目标函数怎么写、约束条件怎么列、问题规模与实时性如何权衡。
一、决策变量与推力映射关系
设船上有 n 台推进器,第 i 台推进器的推力(或推力指令)记为 uᵢ。对于全回转推进器,uᵢ 是沿其推力方向的标量;对于定距桨加舵的配置,则需同时考虑推力与舵角。为统一表达,工程上常把每台推进器的输出写成二维分量 (Tᵢx, Tᵢy),再通过推力分配矩阵 B(α) 映射到船体三自由度:
τ = B(α) · u
B(α) = [ b₁(α₁) b₂(α₂) … bₙ(αₙ) ]
bᵢ(αᵢ) = [ cosαᵢ , sinαᵢ , -lᵢy·cosαᵢ + lᵢx·sinαᵢ ]ᵀ
其中 αᵢ 为第 i 台推进器的推力方位角,(lᵢx, lᵢy) 为其作用点相对船体旋转中心的坐标。这里必须约定坐标系:本文取船艏为 x 正方向、左舷为 y 正方向、逆时针力矩为正,全文与图示保持一致。矩阵 B 的每一列就是该推进器单位推力对三自由度的“贡献向量”,它把物理布置信息编码进了数学模型。
二、目标函数:误差、能耗与磨损的加权
推力分配本质是一个带约束的优化问题。最基础的目标是让实际合力尽量逼近指令,即最小化推力误差:
J₁ = ‖ B(α)·u − τ_cmd ‖²_W
但仅追求误差最小会导致“能耗最优解”被忽略:多台推进器可能以互相抵消的方式产生同一合力,虽然误差为零,却白白消耗功率。因此引入能耗项。推进器功率近似与其推力的平方成正比,常用形式为:
J₂ = Σᵢ (uᵢ² / uᵢ,max²) 或 Σᵢ cᵢ·|uᵢ|³
前者是归一化二次型,计算简单、凸性好;后者更贴近螺旋桨功率特性,但非线性更强。此外,频繁调整推力方位角会加剧回转机构磨损,可加入方位角变化惩罚项 J₃ = Σᵢ wᵢ·(αᵢ − αᵢ,prev)²。最终目标函数为加权和:
min J = w₁·J₁ + w₂·J₂ + w₃·J₃
权重的选取直接决定分配“性格”:w₁ 大则精度优先,适合动力定位精度要求高的作业;w₂ 大则节能优先,适合长时间待机保持;w₃ 大则减少方位角摆动,适合对机械寿命敏感的老旧设备。实际工程中这些权重常按作业模式分组预设,而非在线随意调整。
三、约束条件:物理极限与安全边界
优化解必须落在物理可行的范围内,主要约束包括:
- 推力上下限:
uᵢ,min ≤ uᵢ ≤ uᵢ,max,其中下限可能为负(表示可反向推力),也可能为零(如某些定距桨不可反转)。 - 推力变化率:
|uᵢ(k) − uᵢ(k−1)| ≤ Δuᵢ,max·Δt,防止指令突变导致机械冲击或功率过载。 - 禁止角:全回转推进器在某些方位角下推力会冲刷船体或相互干扰,需将
αᵢ排除在禁止区间[αᵢ,forbid1, αᵢ,forbid2]之外。 - 推力禁区/互斥区:部分推进器布置过近,同时大推力会产生干扰,需附加耦合约束。
禁止角约束是非凸的,这是推力分配问题求解难度的重要来源。工程上常把方位角离散为若干候选方向(如每 5° 一个格点),把连续非凸问题转化为组合优化,再用混合整数规划或启发式搜索求解。
四、问题规模与实时性
推力分配问题的规模由推进器数量 n 和方位角离散粒度共同决定。若 n=6、每台推进器方位角离散为 72 个候选方向(5° 一格),则组合空间约为 72⁶ ≈ 1.4×10¹¹,直接穷举不可行。因此实际系统普遍采用“分层求解”:先固定方位角求推力幅值(线性或二次规划),再在候选角中搜索使目标最小的组合,或采用序列二次规划(SQP)在连续空间迭代。
实时性方面,DP 控制周期通常在 100~200 ms 量级,推力分配求解必须留出足够余量给控制律计算与通信。工程经验是:单次分配求解时间控制在控制周期的 30%~50% 以内。对于 4~8 台推进器的典型船舶,采用离散化加二次规划的方案,单次求解可在 10~30 ms 内完成;若推进器更多或约束更复杂,则需引入热启动、上一周期解作为初值等加速手段。
五、建模时的常见取舍
建立模型时有三组典型取舍需要提前想清楚。第一,线性还是非线性:若把方位角固定、只优化推力幅值,模型是线性的,求解快但灵活性差;若方位角也作为变量,模型非线性,精度高但求解慢。第二,硬约束还是软约束:推力上下限通常设为硬约束,而推力误差在极端工况下可设为软约束(允许短时超差),避免优化无解。第三,集中式还是分布式:集中式把全部推进器放在一个优化问题里求解,全局最优但计算量大;分布式按推进器分组求解,实时性好但可能牺牲最优性。