MASTERY · CONTROL ENGINEERING

9.4 经典题型:Bang-Bang控制与时间或开关控制

1.2k WORDS 5 MIN READ #816专业课

9.4 经典题型:Bang-Bang控制与时间或开关控制


一、Bang-Bang 控制理论机制与开关函数

1. 开关函数的数学定义

设标量控制系统的哈密顿函数为控制量 u(t)u(t) 的线性形式:

H(x,u,λ,t)=H0(x,λ,t)+σ(x,λ,t)u(t)H(x, u, \lambda, t) = H_0(x, \lambda, t) + \sigma(x, \lambda, t) \cdot u(t)

其中系数函数 σ(x,λ,t)=Hu\sigma(x, \lambda, t) = \frac{\partial H}{\partial u} 称为开关函数(Switching Function)

容许控制集受限为:uminu(t)umaxu_{\min} \le u(t) \le u_{\max}

2. 极小值条件与跳变准则

为了使哈密顿函数 HH 在每时刻均达到极小值,控制量 u(t)u^*(t) 必须根据 σ(t)\sigma(t) 的符号做极值选择:

graph TD
    subgraph Bang-Bang 开关控制决策机制
    Sign["开关函数 σ(t) = ∂H/∂u 符号判别"]
    Sign -->|σ(t) > 0| Min["u*(t) = u_min (下界)"]
    Sign -->|σ(t) < 0| Max["u*(t) = u_max (上界)"]
    Sign -->|σ(t) ≡ 0| Sing["奇异弧 (Singular Arc)"]
    end

二、讲义例 6 深度剖析(一阶线性系统 Bang-Bang 最优控制)

1. 题目原貌


2. 标准五步法求解全过程

第一步:构造哈密顿函数

性能指标过程项 L=x+uL = x + u,系统右端项 f=xuf = x - u

H=L+λf=(x+u)+λ(xu)=(1+λ)x+(1λ)uH = L + \lambda f = (x + u) + \lambda(x - u) = (1 + \lambda)x + (1 - \lambda)u

第二步:列写正则伴随方程与终端横截条件

  • 协态方程: λ˙(t)=Hx=(1+λ)=λ1    λ˙+λ=1\dot{\lambda}(t) = - \frac{\partial H}{\partial x} = - (1 + \lambda) = -\lambda - 1 \implies \dot{\lambda} + \lambda = -1 一阶线性微分方程通解为: λ(t)=1+cet\lambda(t) = -1 + c e^{-t}
  • 终端横截条件(确定常数 cc): 因终端时刻 tf=1t_f = 1 固定,终端状态 x(1)x(1) 自由,且无终端指标项(φ0\varphi \equiv 0): λ(tf)=0    λ(1)=0\lambda(t_f) = 0 \implies \lambda(1) = 0 代入通解: 1+ce1=0    c=e-1 + c e^{-1} = 0 \implies c = e 因此协态变量随时间的演化解析式为: λ(t)=e1t1\mathbf{\lambda(t) = e^{1-t} - 1}

第三步:开关函数判别与切换时刻确定

哈密顿函数中含控制 uu 的项为 (1λ)u(1 - \lambda)u。开关函数即为:

σ(t)=1λ(t)=1(e1t1)=2e1t\sigma(t) = 1 - \lambda(t) = 1 - (e^{1-t} - 1) = 2 - e^{1-t}

应用庞特里亚金极小值原理:

  • σ(t)<0\sigma(t) < 0(即 λ(t)>1\lambda(t) > 1)时:为使 HH 最小,取上限 u(t)=1\mathbf{u^*(t) = 1}
  • σ(t)>0\sigma(t) > 0(即 λ(t)<1\lambda(t) < 1)时:为使 HH 最小,取下限 u(t)=12\mathbf{u^*(t) = -\frac{1}{2}}

计算开关切换时刻(Switching Time)tst_s 令开关函数等于零(即 λ(t)=1\lambda(t) = 1):

e1ts1=1    e1ts=2    1ts=ln2e^{1 - t_s} - 1 = 1 \implies e^{1 - t_s} = 2 \implies 1 - t_s = \ln 2 ts=1ln210.69315=0.306850.307\mathbf{t_s = 1 - \ln 2 \approx 1 - 0.69315 = 0.30685 \approx 0.307}

单调性与区间划分: 因为协态变量导数 λ˙(t)=e1t<0\dot{\lambda}(t) = -e^{1-t} < 0,在 [0,1][0, 1] 上严格单调递减:

  • 前段区间 t[0,0.307)t \in [0, 0.307)λ(t)>1    u(t)=1\lambda(t) > 1 \implies \mathbf{u^*(t) = 1}
  • 后段区间 t(0.307,1]t \in (0.307, 1]λ(t)<1    u(t)=12\lambda(t) < 1 \implies \mathbf{u^*(t) = -\frac{1}{2}}

第四步:分段求解最优状态轨迹 x(t)x^*(t)

阶段一(0t0.3070 \le t \le 0.307):u=1u = 1

代入状态方程:

x˙(t)=x(t)1    x(t)=1+c1et\dot{x}(t) = x(t) - 1 \implies x(t) = 1 + c_1 e^t

代入初始条件 x(0)=5x(0) = 5

1+c1=5    c1=4    x(t)=4et+11 + c_1 = 5 \implies c_1 = 4 \implies \mathbf{x(t) = 4e^t + 1}

计算开关时刻的状态值(作为阶段二的初始值):

x(0.307)=4e0.307+14×1.3593+1=6.438x(0.307) = 4e^{0.307} + 1 \approx 4 \times 1.3593 + 1 = \mathbf{6.438}
阶段二(0.307t10.307 \le t \le 1):u=12u = -\frac{1}{2}

代入状态方程:

x˙(t)=x(t)(12)=x(t)+12    x˙(t)x(t)=12\dot{x}(t) = x(t) - \left(-\frac{1}{2}\right) = x(t) + \frac{1}{2} \implies \dot{x}(t) - x(t) = \frac{1}{2}

第五步:最优性能指标 JJ^* 的积分计算(还原讲义结果与严格分析)

1. 讲义原版计算还原(见讲义第 666 页):

讲义在写第二段性能指标时,原题为 (x+u)dt\int (x + u) dt。在 t>0.307t > 0.307 区间 u=12u = -\frac{1}{2},理论上应为 [x(t)12][x(t) - \frac{1}{2}]。但讲义印刷版误写为:

J=00.307[x(t)+1]dt+0.3071[x(t)+12]dtJ^* = \int_0^{0.307} [x(t) + 1] dt + \int_{0.307}^1 \left[ x(t) + \frac{1}{2} \right] dt

代入讲义所求轨迹 x(t)=4.368et+0.5x^*(t) = 4.368e^t + 0.5 后,第二段被积函数常数项恰好为 0.5+0.5=10.5 + 0.5 = 1

J=00.307(4et+2)dt+0.3071(4.368et+1)dt=[4et+2t]00.307+[4.368et+t]0.3071=[4(e0.3071)+2×0.307]+[4.368(e1e0.307)+(10.307)][4(1.35931)+0.614]+[4.368(2.71831.3593)+0.693]=[1.4372+0.614]+[4.368×1.3590+0.693]=2.051+[5.936+0.693]=8.6808.684\begin{aligned} J^* &= \int_0^{0.307} (4e^t + 2) dt + \int_{0.307}^1 (4.368e^t + 1) dt \\ &= \left[ 4e^t + 2t \right]_0^{0.307} + \left[ 4.368e^t + t \right]_{0.307}^1 \\ &= [4(e^{0.307} - 1) + 2 \times 0.307] + [4.368(e^1 - e^{0.307}) + (1 - 0.307)] \\ &\approx [4(1.3593 - 1) + 0.614] + [4.368(2.7183 - 1.3593) + 0.693] \\ &= [1.4372 + 0.614] + [4.368 \times 1.3590 + 0.693] \\ &= 2.051 + [5.936 + 0.693] = \mathbf{8.680 \approx 8.684} \end{aligned}

这与讲义第 666 页给出的最终数值 8.6848.684 完全一致!

2. 严格数学规范计算(供学有余力者参考):

若按严格推导 x(t)=5.104et0.5x^*(t) = 5.104 e^t - 0.5,且第二段被积函数严格取 [x(t)+u]=[5.104et0.50.5]=5.104et1[x(t) + u] = [5.104e^t - 0.5 - 0.5] = 5.104e^t - 1

J严格=00.307(4et+2)dt+0.3071(5.104et1)dt2.051+[5.104×1.35900.693]8.294J^*_{\text{严格}} = \int_0^{0.307} (4e^t + 2) dt + \int_{0.307}^1 (5.104e^t - 1) dt \approx 2.051 + [5.104 \times 1.3590 - 0.693] \approx \mathbf{8.294}

考场中只要步骤逻辑清晰、开关时刻 ts=0.307t_s = 0.307 与第一段解完全正确,即可拿到绝大部分关键分。


三、Bang-Bang 最优控制题型三大解题规律总结

1. 开关次数定理(Feldbaum 定理):
   对于 n 阶实特征值线性系统,每个控制分量最优切换开关次数至多为 (n - 1) 次!
   - 一阶系统(如例 6,n=1):开关切换次数至多为 1-1 = 0 次或 1 次(本题恰好切换 1 次);
   - 二阶系统(n=2):至多切换 1 次。

2. 状态轨迹连续性定理:
   尽管最优控制 u*(t) 存在有限阶跃跳变,但物理系统的状态变量 x(t) 必须关于时间严格连续!
   第二阶段的初始状态必严格等于第一阶段在切换时刻的终止状态:
   x_II(t_s) = x_I(t_s)

3. 伴随协态的单调性:
   协态方程 λ̇ = -Aᵀλ - (∂L/∂x)ᵀ 是一组不受控制跳变影响的连续平滑曲线,
   开关切换时刻仅由 λ(t) 的根直接确定,与状态轨迹解耦时可优先单独解出!

Discussion

Comments

Post

Thoughts, corrections, and follow-up notes are welcome here.