燃料最优月面软着陆问题

本文直接搬运了我的有关课程报告,如有用词生硬等问题请多见谅。

让我们开始吧。

燃料最优月面软着陆问题求解

数学模型建立

以月面为原点、竖直向上为正方向,设登月舱高度 h(t)h(t)、速度 v(t)v(t)(向上为正)、质量 m(t)m(t),发动机推力 u(t)u(t) 满足:

0u(t)a0\le u(t)\le a

月球表面重力加速度 gg 为常数,燃料消耗率 m˙=ku\dot m = -k uk>0k>0。状态方程为:

h˙(t)=v(t),v˙(t)=u(t)m(t)g,m˙(t)=ku(t).\begin{align} \dot h(t) &= v(t), \\ \dot v(t) &= \frac{u(t)}{m(t)} - g, \\ \dot m(t) &= -k u(t). \end{align}

初始状态 h(0)=h0h(0)=h_0, v(0)=v0v(0)=v_0, m(0)=M+F(0)m(0)=M+F(0)(其中 MM 为不含燃料的舱体质量,F(0)F(0) 为初始燃料质量)。要求实现月球表面软着陆,即目标集:

Ψ1=h(tf)=0,Ψ2=v(tf)=0\Psi_1 = h(t_f)=0,\qquad \Psi_2 = v(t_f)=0

性能指标为燃料消耗最小,等价于最大化终端质量,故取

J=m(tf)J = -m(t_f)

极小值原理与最优控制形式

引入协态变量 λ1,λ2,λ3\lambda_1,\lambda_2,\lambda_3,构造哈密顿函数:

H=λ1v+λ2(umg)λ3ku.H = \lambda_1 v + \lambda_2\Bigl(\frac{u}{m} - g\Bigr) - \lambda_3 k u .

最优协态方程为:

λ˙1=Hh=0,λ˙2=Hv=λ1,λ˙3=Hm=λ2um2.\begin{align} \dot\lambda_1 &= -\frac{\partial H}{\partial h} = 0, \\ \dot\lambda_2 &= -\frac{\partial H}{\partial v} = -\lambda_1, \\ \dot\lambda_3 &= -\frac{\partial H}{\partial m} = \frac{\lambda_2 u}{m^2}. \end{align}

由终端约束及性能指标可得横截条件:

λ1(tf)=γ1,λ2(tf)=γ2,λ3(tf)=1,\lambda_1(t_f)=\gamma_1,\quad \lambda_2(t_f)=\gamma_2,\quad \lambda_3(t_f)=-1,

其中 γ1,γ2\gamma_1,\gamma_2 为目标集引入的两个拉格朗日乘子。

HH 中含有控制 uu 的项分离:

H=(λ1vλ2g)+(λ2mkλ3)s(t)u.H = (\lambda_1 v - \lambda_2 g) + \underbrace{\Bigl(\frac{\lambda_2}{m} - k\lambda_3\Bigr)}_{\displaystyle s(t)} u .

根据极小值原理,uu 需极小化 HH,由线性项系数 s(t)s(t) 的符号可得最优控制为 Bang‑Bang 形式:

u(t)={a,s(t)<0,0,s(t)>0.u^*(t) = \begin{cases} a, & s(t) < 0,\\ 0, & s(t) > 0 . \end{cases}

式中 s(t)=λ2mkλ3s(t)=\dfrac{\lambda_2}{m} - k\lambda_3 称为开关函数。

控制序列分析与切换结构

由协态方程可知 λ1\lambda_1 为常数,故 s(t)s(t) 的导数为:

s˙(t)=ddt ⁣(λ2mkλ3)=λ˙2mλ2m˙m2kλ˙3=λ1m.\dot s(t) = \frac{\mathrm{d}}{\mathrm{d}t}\!\left(\frac{\lambda_2}{m} - k\lambda_3\right) = \frac{\dot\lambda_2 m - \lambda_2\dot m}{m^2} - k\dot\lambda_3 = -\frac{\lambda_1}{m} .

s(t)s(t) 在某区间恒为零,则 λ10\lambda_1\equiv0,进而 λ20\lambda_2\equiv0λ30\lambda_3\equiv0,与 λ3(tf)=1\lambda_3(t_f)=-1 矛盾。故 s(t)s(t) 不恒为零且严格单调,至多一次过零。因此可能的控制序列为:

  • 全程 u=au^*=a(消耗大,甚至可能反推离开);

  • 全程 u=0u^*=0(自由落体,硬着陆);

  • {0,a}\{0,\,a\}:先零推力,后最大推力;

  • {a,0}\{a,\,0\}:先最大推力,后零推力(后期无制动,硬着陆);

  • 多次切换。(可自行证明,非最优)

排除不可能及非最优序列后,唯一可行的最优控制序列为 {0,a}\{0,\,a\},即存在切换时刻 τ\tau,使得:

u(t)={0,0t<τ,a,τttf.u^*(t) = \begin{cases} 0, & 0\le t < \tau,\\ a, & \tau \le t \le t_f . \end{cases}

相轨迹与开关曲线

[0,τ)[0,\tau) 上,u=0u^*=0,由状态方程积分得自由落体相轨迹:

h=h012gv2,h = h_0 - \frac{1}{2g}\,v^2,

(v,h)(v,h) 相平面上为一组开口向下的抛物线,运动方向自右向左。

[τ,tf][\tau,t_f] 上,u=au^*=a,软着陆条件 h(tf)=v(tf)=0h(t_f)=v(t_f)=0 决定了一条从切换点 (τ)(\tau) 到原点的相轨迹。利用 v˙=a/mg\dot v = a/m - gm˙=ka\dot m = -k a 可得:

v(τ)=1kln ⁣(1katdm(τ))+gtd,h(τ)=m(τ)k2aln ⁣(1katdm(τ))g2td2tdk,\begin{align} v(\tau) &= \frac{1}{k}\ln\!\left(1 - \frac{k a t_d}{m(\tau)}\right) + g t_d, \\ h(\tau) &= -\frac{m(\tau)}{k^2 a}\ln\!\left(1 - \frac{k a t_d}{m(\tau)}\right) - \frac{g}{2}t_d^2 - \frac{t_d}{k}, \end{align}

其中 td=tfτt_d = t_f-\tau。消去 tdt_d 可得到 f[v(τ),h(τ)]=0f[v(\tau),h(\tau)]=0,表示从该曲线上任一点出发,以 u=au=a 制动均可实现软着陆。采用对数展开:

ln ⁣(1katdm(τ))katdm(τ)k2a2td22m2(τ),\ln\!\left(1 - \frac{k a t_d}{m(\tau)}\right) \approx -\frac{k a t_d}{m(\tau)} - \frac{k^2 a^2 t_d^2}{2m^2(\tau)},

可得近似开关曲线:

f(h,v)=b2b1h+2b1h+v=0,f(h,v) = \frac{b_2}{b_1}h + 2\sqrt{b_1 h} + v = 0,

其中 b1=12 ⁣[am(τ)g]>0b_1 = \frac12\!\bigl[\frac{a}{m(\tau)}-g\bigr] > 0b2=12ka2m2(τ)b_2 = \frac12\frac{k a^2}{m^2(\tau)}

仿真实验与分析

理想开关曲线

尝试使用MATLAB绘制最优相轨迹如图所示。

phaseportrait

各相关参数如下表。

参数 数值 单位(均取国际单位制)
着陆时间 tft_f 10.21 s
消耗燃料 Δm\Delta m 13.09 kg
切换时刻 tst_s 3.66 s
最大推力使用时间 6.56 s

下面按顺序展示了航天器高度、速度、质量和协态变量、控制量、切换函数。

height

velocity

mass

costate

thrust

switchingFunction

可清晰观察到推力呈现 Bang-Bang 特性,且s(t)s(t) 在切换时刻过零,验证了极小值原理的最优性条件。

闭环反馈控制律

根据前面的分析最优控制可通过判断当前状态 (h,v)(h,v) 是否已经到达开关曲线 f(h,v)=0f(h,v)=0 来实现反馈:

u(t)={0,f(h,v)>0,a,f(h,v)=0.u^*(t) = \begin{cases} 0, & f(h,v) > 0,\\ a, & f(h,v) = 0 . \end{cases}

其中:

f(h,v)=b2b1h+2b1h+v=0,f(h,v) = \frac{b_2}{b_1}h + 2\sqrt{b_1 h} + v = 0,

该控制律将开环控制改为闭环控制,既便于工程实现,又增强了系统的鲁棒性。下面展示Simulink仿真模型:

landing

landingsub

其中f(u)f(u)即接收状态变量计算开关值的函数。

经过仿真发现,若严格判断f(h,v)f(h,v)与0的关系(即采用ε=0\varepsilon = 0),则航天器最后将发生硬着陆。这是因为近似开关曲线f(h,v)=0f(h,v)=0相对于真实的最优开关曲线存在系统偏差。

f(h,v)f(h,v)的推导过程可知,该近似表达式忽略了对数展开中的高阶项k3a3td33m3(τ)+\frac{k^3 a^3 t_d^3}{3m^3(\tau)} + \cdots,导致近似曲线在(h,v)(h,v)相平面中左偏。对于同一高度hh,近似曲线给出的临界速度vapprox|v_{approx}|大于真实临界速度vexact|v_{exact}|。这意味着当检测到f(h,v)=0f(h,v)=0时,航天器的实际高度已经过低(或速度过大),剩余制动距离不足以将速度减至零,从而以非零速度撞击月面。下图验证了本段讨论。

controlphaseportrait

若考虑加入充分小的ε>0\varepsilon > 0,判断f(h,v)f(h,v)ε\varepsilon的关系(即f(h,v)εf(h,v) \le \varepsilon时开启制动),这相当于在近似曲线右侧引入了一个边界层:

Γε={(h,v)f(h,v)=ε}.\Gamma_{\varepsilon} = \left\{ (h,v) \mid f(h,v) = \varepsilon \right\}.

该边界层的物理意义是提前触发制动,用以补偿近似曲线对制动时机的高估。然而,ε\varepsilon的选取需要权衡:若ε\varepsilon过小,则补偿不足,仍可能硬着陆; ε\varepsilon过大制动过早,此时补偿后的近似曲线成为系统的一个滑动模态,相轨迹将反复穿越开关曲线,产生抖振现象。

抖振的机理可从开关函数f(h,v)f(h,v)的动态行为解释。当系统状态进入边界层后,推力在00aa之间高频切换:

u(t)={a,f(h,v)ε,0,f(h,v)>ε.u(t) = \begin{cases} a, & f(h,v) \le \varepsilon,\\ 0, & f(h,v) > \varepsilon. \end{cases}

由于f(h,v)f(h,v)vvhh均敏感,且vv的变化率v˙=u/mg\dot v = u/m - g在推力切换时发生跳变,导致ff的符号在零点附近振荡。尤其在hh较小时,2b1h2\sqrt{b_1 h}项对hh的微小变化非常敏感,即使高度略有波动,也会引起ff的快速变号,从而产生高频颤振。下图是这一现象的示意图。

chattertingpotraid

引入ε=0.25\varepsilon = 0.25进行仿真,其状态变量见下,可以观察到在接近着陆点时,发生了抖振。为了抑制这一现象,可以考虑引入饱和控制,也可以增加高度hh的容忍,即提前终止控制。将对高度hh的容忍设置为0.010.01,即当h0.01h \le 0.01时认为已到终点。可见抖振现象已基本得到缓解。

epsH

epsV

epsM

epsU

增加高度容忍后:

height

velocity

mass

thrust


燃料最优月面软着陆问题
http://costannt.icu/2026/05/19/燃料最优月面软着陆问题/
作者
Costannt
发布于
2026年5月19日
许可协议