小车控制能量最优问题的解决(Use MMA)
小车控制能量最优问题的解决(Use MMA)

小车控制能量最优问题的解决(Use MMA)

最近看的最优控制一书很有趣, 前几章竟然使用了和其他数学书相反的方法, 先给你描绘一幅全景图,再一步一步深入分析和计算,让人在刚开始的时候感觉有点不知公式所云何物(但总比全书都无法理解来的要好很多)。在第二章,介绍完Euler和Lagrange的变分学想法之后,就遇到了一个小车控制的问题。

问题

小车的状态方程为

\dot x_1(t)=x_2(t)\\
\dot x_2(t)=u(t)\\
t_0=0,t_f=2

要将状态初始时刻的x(t_0)=[-2,1]^T到达终点为原点的x(t_f)=[0,0]^T,
并要最小化控制能量

J(u)=\frac{1}{2}\int_{t_0}^{t_f}u^2(t)\mathrm{d}t

初始解答

第二章的简易解答使用了Lagrange乘子法,具体如下:
引入Lagrange乘子p_1(t),p_2(t),正规化(?)后得到性能指标:

\bar{J}=\int_{t_{0}}^{t_{f}}\left\{\frac{1}{2} u^{2}(t)+p_{1}(t)\left[x_{2}(t)-\dot{x}_{1}(t)\right]+p_{2}(t)\left[u(t)-\dot{x}_{2}(t)\right]\right\} \mathrm{d} t

再令

\bar{g}(x, u, p, \dot{x})=\frac{1}{2} u^{2}+p_{1}\left[x_{2}-\dot{x}_{1}\right]+p_{2}\left[u-\dot{x}_{2}\right]

这样可以知道各变量和控制应满足

\begin{aligned}
\frac{\partial \bar{g}}{\partial x_{i}}(x(t), u(t), p(t), \dot{x}(t))-\frac{\mathrm{d}}{\mathrm{d} t}\left[\frac{\partial \bar{g}}{\partial \dot{x}_{i}}(x(t), u(t), p(t), \dot{x}(t))\right]=0, \quad i=1,2\\
\frac{\partial \bar{g}}{\partial p_{i}}(x(t), u(t), p(t), \dot{x}(t))-\frac{\mathrm{d}}{\mathrm{d} t}\left[\frac{\partial \bar{g}}{\partial \dot{p}_{i}}(x(t), u(t), p(t), \dot{x}(t))\right]=0, \quad i=1,2\\
\frac{\partial \bar{g}}{\partial u}(x(t), u(t), p(t), \dot{x}(t))-\frac{\mathrm{d}}{\mathrm{d} t}\left[\frac{\partial \bar{g}}{\partial \dot{u}}(x(t), u(t), p(t), \dot{x}(t))\right]=0
\end{aligned}

第三排式可得u(t)=-p(t)(?)
再结合初始状态和终端条件, 可得u(t)=-\frac{3}{2}t+1
很显然要阶一个二阶的偏微分方程组并非易事(MMA应该可以), 这种方法还是太艰深了一点。

Hamiltonian方程组解法

引入Hamiltonian函数

\mathcal{H}(x(t),u(t),t)=\frac{1}{2}u^2(t)+p_1(t)x_2(t)+p_2(t)u(t)

其应该满足

\begin{array}{l}
0=\frac{\partial \mathcal{H}}{\partial u}(x(t), u(t), p(t))=u(t)+p_{2}(t) \\
u(t)=-p_{2}(t)
\end{array}

以及状态方程和协态方程

\begin{array}{l}
\dot{x}_{1}(t)=x_{2}(t) \\
\dot{x}_{2}(t)=u(t) \\
\dot{p}_{1}(t)=0 \\
\dot{p}_{2}(t)=-p_{1}(t)
\end{array}

结合边界条件和初值条件

x_{1}(0)=-2, \quad x_{2}(0)=1, \quad x_{1}(2)=0, \quad x_{2}(2)=0

通过MMA的求解
DSolve[{u[t] == -p2[t], x1′[t] == x2[t], x2′[t] == u[t], p1′[t] == 0,
p2′[t] == -p1[t], x1[0] == -2, x2[0] == 1, x1[2] == 0,
x2[2] == 0}, {u[t], x1[t], x2[t], p1[t], p2[t]}, t]
可以得到

\text{p1}(t)\to -\frac{3}{2},\\\text{p2}(t)\to \frac{1}{2} (3 t-2),\\u(t)\to \frac{1}{2} (2-3 t),\\\text{x1}(t)\to \frac{1}{4} \left(-t^3+2 t^2+4 t-8\right),\\\text{x2}(t)\to \frac{1}{4} \left(-3 t^2+4 t+4\right)

这样的话,
针不戳~

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据