最优控制与数值优化
1. 连续搅拌釜式反应器(CSTR)的优化设计
1.1 温度与浓度约束
在CSTR的设计中,温度被约束在298 K ≤ T ≤ 360 K的区间内。为了计算稳态浓度,需要对CSTR的动态模型进行积分,直到达到稳态。动态模型的方程如下:
[
\begin{cases}
\frac{dc_A}{dt} = \frac{\upsilon(c_{A0} - c_A)}{V_R} - r_{R1} - r_{R2}\
\frac{dc_B}{dt} = \frac{\upsilon(c_{B0} - c_B)}{V_R} - r_{R1}\
\frac{dc_C}{dt} = -\frac{\upsilon c_C}{V_R} + r_{R1} - r_{R3}\
\frac{dc_{S1}}{dt} = -\frac{\upsilon c_{S1}}{V_R} + r_{R2}\
\frac{dc_{S2}}{dt} = -\frac{\upsilon c_{S2}}{V_R} + r_{R3}
\end{cases}
]
初始时,各物质的浓度等于入口值。通过时间积分,确保设计的是稳定的稳态。
1.2 最大化C的产量
从初始猜测值:
[
\begin{cases}
\upsilon_{guess} = 1\
c_{A0}^{guess} = 0.5\
c_{B0}^{guess} = 0.5\
T_{guess} = 310
\end{cases}
]
开始,通过最小化目标函数来最大化C的产量。优化结果如下:
|参数|初始值|最终值|
| ---- | ---- | ---- |
|$F_1$| -0.182 | -27.148 |
|$\upsilon$| 1 | 360 |
|$c_{A0}$| 0.5 | 1 |
|$c_{B0}$| 0.5 | 1 |
|$T$| 310 | 360 |
|$c_A$| - | 0.913 |
|$c_B$| - | 0.924 |
|$c_C$| - | 0.075 |
|$c_{S1}$| - | 0.011 |
|$c_{S2}$| - | 9.8 × 10⁻⁴ |
最优设计在约束的边界处找到。高流速导致低停留时间,因此出口流中C的浓度较小,但我们最大化的是该浓度与体积流量的乘积。A和B的入口浓度被最大化,以获得第一个反应的最快速率,温度达到上限。由于停留时间短和C浓度低,第三个反应导致的C损失很小。
1.3 最大化经济效益
从上述设计结果开始,通过最小化另一个目标函数来最大化经济效益。优化结果如下:
|参数|初始值|最终值|
| ---- | ---- | ---- |
|$F_2$| -46.37 | -48.36 |
|$\upsilon$| 360 | 360 |
|$c_{A0}$| 1 | 0.832 |
|$c_{B0}$| 1 | 1.168 |
|$T$| 360 | 360 |
|$c_A$| 0.913 | 0.749 |
|$c_B$| 0.924 | 1.094 |
|$c_C$| 0.075 | 0.073 |
|$c_{S1}$| 0.011 | 0.009 |
|$c_{S2}$| 9.8 × 10⁻⁴ | 9.5 × 10⁻⁴ |
在这里,以稍微减少C的产量为代价,通过增加进料流中B的含量,减少副产物的形成和A的消耗,提高了经济效益。
2. 最优控制问题
2.1 动态系统描述
考虑一个动态系统,由状态向量$x(t) \in \mathbb{R}^N$描述,由常微分方程组(ODE)控制:
[
\dot{x} = f(t, x(t), u(t); \theta)
]
其中,$u(t) \in \mathbb{R}^M$是一组可调的控制输入,$\theta$是一组固定的系统参数。为了简单起见,我们省略对$\theta$的显式引用,将ODE系统写为$\dot{x} = f(t, x, u)$。
2.2 成本泛函
在时间$t_0$,从初始状态$x(t_0) = x[0]$开始,我们希望确定在$t \in [t_0, t_H]$内的控制输入轨迹$u(t)$,以最小化成本泛函:
[
F(u(t); x[0]) = \int_{t_0}^{t_H} \sigma(s, x(s), u(s)) ds + \pi(x(t_H))
]
其中,$t_H$是该最优控制问题的时间范围。例如,我们可能希望将系统维持在某个设定点$x_{set}$,此时合适的成本泛函选择为:
[
F(u(t); x[0]) = \int_{t_0}^{t_H} {|x(s) - x_{set}|^2 + C_U |u(s) - u_{set}|^2} ds + C_H |x(t_H) - x_{set}|^2
]
其中,$u_{set}$是将系统维持在设定点所需的输入,$C_U, C_H > 0$。
2.3 直接方法求解开环问题
将$u(t)$参数化为分段常数函数,将$[t_0, t_H]$划分为$N_S$个子区间,时间点为:
[
t_k = t_0 + k(\Delta t), \quad \Delta t = \frac{t_H - t_0}{N_S}
]
在子区间$t_{k - 1} \leq t < t_k$内,$u(t)$保持恒定为$u[k]$。则$u(t)$可以表示为:
[
u(t) = \sum_{k = 1}^{N_S} u[k] \delta_k(t), \quad \delta_k(t) =
\begin{cases}
1, & t_{k - 1} \leq t < t_k\
0, & \text{otherwise}
\end{cases}
]
用向量$U \in \mathbb{R}^{N_S M}$来表征$u(t)$的轨迹:
[
U^T = [u[1]^T, u[2]^T, \cdots, u[N_S]^T]
]
设$x(t; U)$是以下ODE - IVP的解:
[
\begin{cases}
\frac{d}{dt} x(t; U) = f(t, x(t; U), u(t; U))\
x(t_0) = x[0]
\end{cases}
]
其中,$u(t; U)$由上述分段常数函数计算。则成本泛函可以近似为$U$的成本函数:
[
F(U; x[0]) = \sum_{k = 1}^{N_S} \left[\int_{t_{k - 1}}^{t_k} \sigma(s, x(s; U), u[k]) ds\right] + \pi(x(t_H; U))
]
然后使用前面描述的技术来最小化该成本函数。由于$U$的维度可能很高,这个优化问题的计算成本可能较高。
2.4 开环最优控制例程
optimal control.m
实现了上述直接方法求解开环最优控制问题的过程,调用语法如下:
function [TRAJ, iflag] = optimal control(FUN, PARAM, SIM, TRAJ0);
-
FUN:一个结构体,包含用户提供的定义最优控制问题的例程名称。 -
FUN.f:返回$\dot{x} = f(t, x, u)$的时间导数向量的例程。
matlab function f = FUN.f(t, x, u, PARAM); -
FUN.sigma:返回成本泛函的被积函数$\sigma(t, x, u)$的例程。
matlab function sigma = FUN.sigma(t, x, u, PARAM); -
FUN.pi:返回$\pi(x(t_H))$值的例程。
matlab function pi = FUN.pi(xH, PARAM); -
FUN.constraint:一个可选的例程,定义每个子区间内控制输入的约束条件。
matlab function UCON = FUN.constraint();
UCON包含字段UCON.A、UCON.b、UCON.A_eq、UCON.b_eq、UCON.LB和UCON.UB。 -
FUN.u0:返回时间相关控制输入$u(t)$的初始猜测值的例程。
matlab function u0 = FUN.u0(t, PARAM); -
PARAM:一个可选的用户指定的固定系统参数结构体。 -
SIM:一个数据结构体,包含关于优化计算如何进行的信息。 -
SIM.t0:初始时间。 -
SIM.tH:时间范围。 -
SIM.NS:子区间的数量。 -
SIM.x0:初始状态。 -
SIM.isRestart:如果仿真从FUN.u0提供的初始猜测值开始,则为0;如果可选输入参数TRAJ0设置初始输入轨迹,则为非零。 -
SIM.constraint:如果控制输入不受约束,则为0;如果使用FUN.constraint定义一组输入控制约束,则为非零。 -
SIM.verbose:如果不向屏幕打印任何信息,则为0;如果显示计算状态,则为非零。 -
TRAJ:一个数据结构体,包含关于最优轨迹的信息。 -
TRAJ.t:分隔分段常数子区间的时间向量,TRAJ.t(k) = t_k。 -
TRAJ.u:第$k$行包含该子区间的$u[k]$。 -
TRAJ.t_xtraj和TRAJ.x_xtraj:以ODE求解器使用的相同格式返回最优控制输入下的状态轨迹。 -
TRAJ.u_xtraj:返回这些时间点的控制输入。
2.5 示例:简单系统的最优控制
考虑系统:
[
\dot{x} = -(x - 1) + u
]
目标是最小化成本泛函:
[
F(u(t); x[0]) = \int_{t_0}^{t_H} {|x(s) - x_{set}|^2 + C_U |u(s) - u_{set}|^2} ds + C_H |x(t_H) - x_{set}|^2
]
其中,$x_{set} = 2$,$u_{set} = 1$,$t_H = 10$,$C_U = 0.1$,$C_H = 10$,控制输入受约束于$-10 \leq u \leq 10$。使用50个分段常数子区间来参数化$u(t)$。从初始均匀猜测$u(t) = u_{set} = 1$开始,得到的最优状态和控制轨迹如图所示。
2.6 动态规划方法
2.6.1 Bellman函数
引入Bellman函数$V(t, x)$,定义为在时间$t$之后,如果在所有后续时间$s \in [t, t_H]$实施最优输入,所产生的额外成本:
[
V(t, x) = \min_{u(s > t)} \left{\int_{t}^{t_H} \sigma(s, x(s), u(s)) ds + \pi(x(t_H))\right}
]
$V(t_0, x[0])$是$F(u(t); x[0])$的最优值。在时间范围$t_H$,$V(t_H, x) = \pi(x)$。
2.6.2 偏微分方程推导
对$V(t, x)$求导数,得到:
[
\frac{d}{dt} V(t, x) = -\sigma(t, x(t), u(t))
]
将总时间导数与$V(t, x)$的偏导数联系起来:
[
\frac{d}{dt} V(t, x(t)) = \frac{\partial V}{\partial t} + \nabla V \cdot \frac{dx}{dt} = \frac{\partial V}{\partial t} + \nabla V \cdot f(t, x, u)
]
对于最优控制轨迹,得到偏微分方程:
[
\left.\frac{\partial V}{\partial t}\right|
{opt} = -\sigma(t, x, u) - \nabla V \cdot f(t, x, u)
]
定义“反向”时间$\tau = t_H - t$,将Bellman函数重写为$\phi(\tau, x) = V(t, x)$。则上述偏微分方程可以重写为:
[
\left.\frac{\partial \phi}{\partial \tau}\right|
{opt} = \sigma(t_H - \tau, x, u) + \nabla \phi \cdot f(t_H - \tau, x, u)
]
对于非最优轨迹,$\phi(\tau, x)$随$\tau$的增加比最优轨迹更快,因此一般有:
[
\frac{\partial \phi}{\partial \tau} \geq \sigma(t_H - \tau, x, u) + \nabla \phi \cdot f(t_H - \tau, x, u)
]
对于最优轨迹,得到Hamilton - Jacobi - Bellman(HJB)方程:
[
\frac{\partial \phi}{\partial \tau} = \min_{u(\tau, x)} [\sigma(t_H - \tau, x, u) + \nabla \phi \cdot f(t_H - \tau, x, u)]
]
通过反向时间推进,在每个$(\tau, x)$处,使用使方括号内项最小化的输入$u(\tau, x)$。
2.6.3 开环和闭环控制
在开环控制问题中,计算最优控制输入轨迹,然后在整个时间段$t_0 \leq t \leq t_H$内完全实施。对于闭环控制问题,只实施初始输入$u^ (t_0) = u(t_H - t_0, x[0])$一段时间$\Delta t$,之后测量得到的新状态$x_{new}$。由于随机误差或模型不足,$x_{new}$可能不等于$x^ (\Delta t)$。使用反馈来补偿,通过再次最小化泛函,将$t_0$移至$t_0 + \Delta t$,$t_H$移至$t_H + \Delta t$,$x[0]$移至$x_{new}$,计算新的“最佳当前输入”。如果系统的时间导数函数和成本泛函的被积函数都不依赖于绝对时间,则不需要重新进行整个计算,只需将$u(t_H - t_0, x_{new})$作为新的控制输入。这样,从$u(\tau = t_H - t_0, x)$得到系统的最优反馈控制律,这是动态规划方法的主要优点。
2.7 简单一维最优控制问题示例
考虑系统:
[
\dot{x}(t) = f(x, u) = -(x - 1) + u
]
目标是通过求解HJB方程来确定该系统的控制律。要最小化的成本泛函为:
[
F(u(t); x[0]) = \int_{0}^{t_H} \left{\frac{C_U}{2} [u(s) - u_{set}]^2 + [x(s) - x_{set}]^2\right} ds + C_H [x(t_H) - x_{set}]^2
]
其中,$u_{set} = 1$是将系统维持在设定点的稳态值。该泛函对偏离设定点过大和控制输入过大都进行惩罚。该系统的HJB方程为:
[
\frac{\partial \phi}{\partial \tau} = \min_{u(\tau, x)} \left{\frac{C_U}{2} [u - u_{set}]^2 + [x - x_{set}]^2 + \frac{\partial \phi}{\partial x} [-(x - 1) + u]\right}
]
如果$C_U = 0$,极值条件变为$\frac{\partial \phi}{\partial x} = 0$。因此,如果$\frac{\partial \phi}{\partial x} > 0$,$u$应减小到其下限;如果$\frac{\partial \phi}{\partial x} < 0$,$u$应增加到其上限。所以,$C_U > 0$是存在无约束最小值的必要条件。如果满足该条件,最优控制输入为:
[
u(\tau, x) = u_{set} - C_U^{-1} \frac{\partial \phi}{\partial x}
]
因此,得到以下偏微分方程问题:
[
\begin{cases}
\frac{\partial \phi}{\partial \tau} = \frac{C_U}{2} [u(\tau, x) - u_{set}]^2 + [x - x_{set}]^2 + \frac{\partial \phi}{\partial x} [-(x - 1) + u(\tau, x)]\
\phi(0, x) = C_H [x(t_H) - x_{set}]^2
\end{cases}
]
为了数值求解该问题,使用有限差分方法。将$x$域限制在$x_{lo} \leq x \leq x_{hi}$,其中上下限选择为大于实际中可能遇到的任何$x$值。在该域内放置$N$个均匀间隔的点:
[
x_k = x_{lo} + (k - 1)(\Delta x), \quad \Delta x = \frac{x_{hi} - x_{lo}}{N - 1}
]
在每个$x_k$处,使用有限差分近似来估计$\frac{\partial \phi}{\partial x}$:
[
\left.\frac{\partial \phi}{\partial x}\right|
{x_j} = \frac{1}{\Delta x} [A
{lo} \phi_{k - 1} + A_{mid} \phi_k + A_{hi} \phi_{k + 1}], \quad A_{lo} + A_{mid} + A_{hi} = 0
]
根据$f(x, u)$的正负选择不同的差分格式:
[
\begin{cases}
\text{if } f(x, u) \leq 0: & A_{lo} = -1, A_{mid} = +1, A_{hi} = 0\
\text{else}: & A_{lo} = 0, A_{mid} = -1, A_{hi} = +1
\end{cases}
]
通过积分以下常微分方程组来数值求解HJB方程:
[
\begin{cases}
\frac{d\phi_k}{d\tau} = \frac{C_U}{2} [u_k(\tau) - u_{set}]^2 + [x_k - x_{set}]^2 + \left.\frac{\partial \phi}{\partial x}\right|
{x_k} f(x_k, u_k(\tau))\
f(x_k, u_k(\tau)) = -(x_k - 1) + u_k(\tau)\
\phi_k(0) = C_H [x_k(t_H) - x
{set}]^2\
u_k(\tau) = u_{set} - C_U^{-1} \left.\frac{\partial \phi}{\partial x}\right|
{x_k}
\end{cases}
]
反馈控制律$u
{con}(x)$为:
[
u_{con}(x_k) = u_k(\tau = t_H)
]
control 1D HJB.m
可以求解指定$t_H$、$C_U$、$C_H$的HJB方程。对于$t_H = 10$,$C_U = 1$,$C_H = 10$,得到的反馈控制律如图所示。对于这个简单的线性系统和二次成本泛函,最优控制律是一个增益为$K = -0.732$的简单比例控制器。这种方法的优点是可以扩展到非线性系统和涉及输入约束的系统,尽管可能需要较高的数值成本。
2.8 MATLAB优化工具总结
MATLAB的优化工具箱包含一些有用的例程来寻找局部最小值:
-
fminsearch
:使用非线性单纯形法,但对于无约束问题,
fminunc
更受青睐。
-
fminunc
:根据问题的大小和用户提供的梯度和Hessian信息的水平,使用梯度法或信赖域牛顿法。
-
fmincon
:在存在线性和非线性等式和不等式约束的情况下找到局部最小值。
如果优化工具箱不可用,可以使用
gradient minimizer.m
进行无约束最小化。约束条件可以使用前面描述的增广拉格朗日方法显式处理。
optimal control.m
使用直接方法求解开环最优控制问题。
2.9 问题
2.9.1 计算成本函数的最小值
- 计算成本函数$F(x) = (x_1 - 3) + (x_2 - 1) + (x_1 - 1)^2 + (x_2 - 3)^2$($x \in \mathbb{R}^2$)的最小值,手动计算并通过数值求解验证结果。
- 计算成本函数$F(x) = g \cdot x + \frac{1}{2} x \cdot Hx$($g = \begin{bmatrix}-2\1\end{bmatrix}$,$H = \begin{bmatrix}3 & 1\1 & 2\end{bmatrix}$)的最小值,然后计算在约束条件$x_1^2 + x_2^2 = 1$下的约束最小值,再计算在单位圆上且$x_1$和$x_2$均为非负的约束最小值。
2.9.2 酶反应器问题
在固定化酶填充床反应器中,忽略内部传质阻力,通过求解ODE - IVP计算出口底物浓度:
[
\frac{dc_S}{dW} = -\frac{1}{\alpha_c \upsilon} \left(\frac{V_m c_S}{K_m + c_S + K_{si}^{-1} c_S^2}\right), \quad c_S(W = 0) = c_{S0}
]
其中,$c_{S0}$是底物的摩尔浓度,约束在$[10^{-4}, 2]$内,$W$是反应器中酶的质量(毫克),积分到总质量$W_R = 1$克。体积流量$\upsilon$的单位是升/分钟,$\alpha_c = 10^6$µmol/mol是转换因子,动力学常数为$V_m = 200$µmol/(min mgE),$K_m = 0.201$M,$K_{si} = 0.5616$M。绘制使出口产物摩尔流量最大化的入口底物浓度$c_{S0}$随$\upsilon$的变化曲线。
2.9.3 道路路径优化问题
要确定连接丘陵地形中两点的最佳道路路径。设$r \in \mathbb{R}^2$是点的坐标(千米),该点的海拔$z(r)$(千米)表示为多个高斯函数的和:
[
z(r) = \sum_{k = 1}^{N_h} z_{max}[k] \exp\left{-\frac{1}{2} (r - r_c[k])^T \Gamma[k]^{-1} (r - r_c[k])\right}
]
在感兴趣的区域,使用四个山丘的表示:
[
\begin{cases}
z_{max}[1] = 1.2, z_{max}[2] = 0.8, z_{max}[3] = 0.5, z_{max}[4] = 0.5\
r_c[1] = \begin{bmatrix}3\4\end{bmatrix}, r_c[2] = \begin{bmatrix}4\1\end{bmatrix}, r_c[3] = \begin{bmatrix}-1\-2\end{bmatrix}, r_c[4] = \begin{bmatrix}-1\2\end{bmatrix}\
\Gamma[1] = \begin{bmatrix}1.0 & 0.1\0.1 & 1.5\end{bmatrix}, \Gamma[2] = \begin{bmatrix}3.0 & 0.5\0.5 & 1.0\end{bmatrix}, \Gamma[3] = \begin{bmatrix}2.5 & 0.4\0.4 & 0.8\end{bmatrix}, \Gamma[4] = \begin{bmatrix}3.0 & 0.2\0.2 & 1.2\end{bmatrix}
\end{cases}
]
道路的起点为$(4, -2)$,终点为$(2, 7)$。任务是找到两点之间的最短路径,同时满足坡度不大于8%(即斜率的绝对值不大于0.08)的约束。设$0 \leq s \leq 1$是轮廓变量,$r(s)$是道路路径,满足$r(0) = r_{start} = \begin{bmatrix}4\-2\end{bmatrix}^T$,$r(1) = r_{end} = \begin{bmatrix}2\7\end{bmatrix}^T$。将路径离散化,设置$N$个轮廓位置$s_k = \frac{k}{N + 1}$,坐标$r[k] = r(s_k) = \begin{bmatrix}x[k]\y[k]\end{bmatrix}^T$。目标是最小化:
[
F_C = |r[1] - r_{start}|^2 + \sum_{k = 1}^{N - 1} |r[k + 1] - r[k]|^2 + |r_{end} - r[N]|^2
]
同时满足每个道路段的约束条件:
[
\frac{|z(r[k + 1]) - z(r[k])|}{\sqrt{(x[k + 1] - x[k])^2 + (y[k + 1] - y[k])^2}} \leq \epsilon_{max}, \quad \epsilon_{max} = 0.08
]
使用这种方法,提出道路的路径。
2.9.4 化学反应器设计问题
通过反应网络$A + B \rightarrow C + D$,$C + B \rightarrow S_1 + D$,$A + D \rightarrow S_2$,$A + B \rightarrow S_3$,$C + B \rightarrow S_4$从A和B生产C。一个CSTR的输入流速度为1 l/s,包含A和B在载溶剂中,满足$c_{A0} + c_{B0} < 2$M。温度相关的速率常数数据如下:
[
\begin{cases}
k_1(298 K) = 0.01 \frac{l}{mol \cdot s}, k_1(310 K) = 0.02 \frac{l}{mol \cdot s}\
k_2(T) = k_1(T)\
k_3(298 K) = 0.001 \frac{l}{mol \cdot s}, k_3(310 K) = 0.005 \frac{l}{mol \cdot s}\
k_4(298 K) = 0.001 \frac{l}{mol \cdot s}, k_4(310 K) = 0.005 \frac{l}{mol \cdot s}\
k_5(T) = k_4(T)
\end{cases}
]
设计反应器(假设等温操作)以最大化输出流中C的浓度。可变参数包括入口浓度$c_{A0}$和$c_{B0}$、反应器体积$V$($10 l \leq V \leq 10000 l$)和温度$T$($298 K \leq T \leq 335 K$)。提出最优的稳态CSTR设计。
2.9.5 水箱水位控制问题
通过改变圆柱形水箱(直径50 cm)的入口体积流量$\upsilon_0(t)$(升/秒)来控制水箱中水位$h(t)$。水箱底部有一个直径1 cm的出口孔。使用伯努利方程提出$h(t)$的ODE模型。然后,基于最小化成本泛函:
[
F(\upsilon_0(t); h[0]) = \int_{0}^{t_H} \left{\frac{C_U}{2} [\upsilon_0(s) - \upsilon_{0, set}]^2 + [h(s) - h_{set}]^2\right} ds + C_H [h(t_H) - h_{set}]^2
]
计算最优的进料控制律$\upsilon_0(h)$,其中$h_{set} = 1$m是设定点,$\upsilon_{0, set}$是将水位维持在设定点的稳态流量,$t_H = 600$s,$C_U = 0.1(\frac{h_{set}}{\upsilon_{0, set}})^2$,$C_H = 10^3 h_{set}^{-2}$。实施控制输入约束$0 \leq \upsilon_0(t) \leq 10 \upsilon_{0, set}$。
2.9.6 弹道问题
考虑一个炮弹从高度为$h_{gun}$的炮口射出,目标是击中高度为$h_{tar}$、相对坐标为$(x_{tar}, y_{tar})$的静止目标。对于指定的仰角和偏转角$(\theta, \varphi)$,可以积分牛顿运动方程来预测炮弹的撞击位置$(x_{imp}, y_{imp})$。为了瞄准炮弹,最小化成本函数:
[
F_{drag}(\theta, \varphi) = (x_{imp}(\theta, \varphi) - x_{tar})^2 + (y_{imp}(\theta, \varphi) - y_{tar})^2
]
炮弹的运动方程为:
[
m_p \frac{d}{dt} v = m_p g - \frac{1}{2} \rho_{air} A_p C_D U u
]
其中,$\rho_{air}$是空气密度,$A_p$是炮弹的横截面积,$C_D$是经验阻力系数,$u$是炮弹相对于风速$w$的相对速度,$u = v - w$,$U = |u|$。对于炮弹速度小于空气中声速的约三分之一时,可以忽略可压缩性效应,阻力系数仅是雷诺数的函数:
[
Re = \frac{\rho_{air} U (2R_p)}{\mu_{air}}
]
其中,$\mu_{air}$是空气的粘度,$R_p$是炮弹半径。编写一个程序来计算指定目标的方位角$\psi$、距离$D$、炮口高度$h_{gun}$、目标高度$h_{tar}$、炮弹密度$\rho_s$和质量$m_p$、风速$W$和风的方位角$\psi_W$(例如,如果风从北方吹来,$\psi_W = 360^{\circ}$)以及炮弹离开炮口的速度$v_{gun}$时的最优角度。计算炮口和目标在同一高度、炮弹由钢制成且重10 Kg、炮口速度为100 m/s(选择较低的速度以忽略可压缩性效应)、目标在东方500 m处、风从北方以15 mph吹来的情况下的最优角度。如果忽略风和阻力,会产生多大的横向距离误差?
2.9.7 移动目标的弹道问题
修改上述程序以考虑移动目标的情况。
通过以上内容,我们介绍了连续搅拌釜式反应器的优化设计、最优控制问题的直接方法和动态规划方法,以及相关的MATLAB优化工具和一些实际问题的求解。这些方法和技术在化学工程、控制理论等领域有着广泛的应用。
3. 问题求解思路与流程总结
3.1 各类问题的求解步骤
以下是对前面提到的各类问题求解步骤的总结:
|问题类型|求解步骤|
| ---- | ---- |
|成本函数最小值计算|1. 手动计算成本函数的最小值,通过求导等方法找到极值点。
2. 使用数值方法(如MATLAB的优化工具)求解,验证手动计算结果。|
|酶反应器问题|1. 根据给定的ODE - IVP模型,结合底物浓度约束和动力学常数,建立方程。
2. 对不同的体积流量 $\upsilon$ 进行遍历,计算出口底物浓度。
3. 找出使出口产物摩尔流量最大化的入口底物浓度 $c_{S0}$,并绘制其随 $\upsilon$ 的变化曲线。|
|道路路径优化问题|1. 根据地形函数 $z(r)$ 描述地形,确定起点和终点。
2. 将路径离散化,设置轮廓位置和坐标。
3. 定义目标函数 $F_C$ 和坡度约束条件。
4. 使用优化方法求解满足约束条件下的最短路径。|
|化学反应器设计问题|1. 根据反应网络和速率常数数据,建立反应动力学模型。
2. 确定可变参数(入口浓度、反应器体积、温度)的范围。
3. 使用优化方法(如MATLAB的优化工具)在约束范围内最大化输出流中C的浓度。|
|水箱水位控制问题|1. 使用伯努利方程建立水箱水位 $h(t)$ 的ODE模型。
2. 定义成本泛函,结合初始条件和控制输入约束。
3. 通过求解最优控制问题,计算最优的进料控制律 $\upsilon_0(h)$。|
|弹道问题|1. 根据牛顿运动方程和阻力系数模型,建立炮弹运动的ODE模型。
2. 定义成本函数,用于瞄准炮弹。
3. 编写程序,根据给定的参数(目标方位角、距离、炮口高度等)计算最优角度。
4. 计算忽略风和阻力时的横向距离误差。|
|移动目标的弹道问题|在上述弹道问题程序的基础上进行修改,考虑目标的移动情况。|
3.2 最优控制问题求解流程
下面是使用直接方法和动态规划方法求解最优控制问题的流程:
graph LR;
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始]):::startend --> B(定义动态系统和成本泛函):::process;
B --> C{选择求解方法}:::decision;
C -->|直接方法| D(参数化控制输入为分段常数函数):::process;
D --> E(将成本泛函近似为成本函数):::process;
E --> F(使用优化技术最小化成本函数):::process;
F --> G(得到最优控制轨迹):::process;
C -->|动态规划方法| H(定义Bellman函数):::process;
H --> I(推导偏微分方程):::process;
I --> J(得到HJB方程):::process;
J --> K(反向时间推进求解HJB方程):::process;
K --> L(得到最优反馈控制律):::process;
G --> M([结束]):::startend;
L --> M;
4. 实际应用与拓展
4.1 应用领域
最优控制和数值优化在许多领域都有广泛的应用:
-
化学工程
:如连续搅拌釜式反应器的优化设计,通过调整反应条件(温度、浓度、流量等)来提高反应产率和经济效益。
-
控制理论
:用于设计控制系统,使系统能够在满足一定约束条件下,以最优的方式运行,例如水箱水位控制、弹道控制等。
-
机械工程
:在机器人控制、机械系统的运动规划等方面,通过优化控制输入,实现高效、精确的运动。
-
经济学
:用于优化生产计划、资源分配等问题,以最大化经济效益。
4.2 拓展方向
- 非线性系统优化 :实际系统往往是非线性的,将现有的优化方法扩展到非线性系统,需要更复杂的数学工具和算法。
- 多目标优化 :在许多实际问题中,可能存在多个相互冲突的目标,如在化学反应器设计中,既要提高产率,又要降低成本。需要研究多目标优化方法,找到一组最优解(帕累托最优解)。
- 实时优化与控制 :在一些对实时性要求较高的应用中,如飞行器控制、工业自动化生产线,需要能够实时计算最优控制输入,以应对系统的动态变化。
5. 总结
本文介绍了连续搅拌釜式反应器的优化设计、最优控制问题的直接方法和动态规划方法,以及相关的MATLAB优化工具和一些实际问题的求解。通过对这些内容的学习,我们可以掌握以下要点:
- 了解如何对连续搅拌釜式反应器进行优化设计,通过调整温度、浓度和流量等参数,提高反应产率和经济效益。
- 掌握最优控制问题的求解方法,包括直接方法和动态规划方法。直接方法适用于开环控制问题,通过参数化控制输入和最小化成本函数来求解;动态规划方法通过引入Bellman函数和HJB方程,得到最优反馈控制律,适用于闭环控制问题。
- 学会使用MATLAB的优化工具来求解实际问题,如
fminsearch
、
fminunc
、
fmincon
等,以及自定义的
optimal control.m
和
control 1D HJB.m
等例程。
- 能够将所学的优化方法应用到实际问题中,如酶反应器问题、道路路径优化问题、化学反应器设计问题等,并通过编写程序求解这些问题。
同时,我们也看到了最优控制和数值优化在实际应用中的广泛前景和拓展方向。随着科技的不断发展,这些方法将在更多领域发挥重要作用。
84

被折叠的 条评论
为什么被折叠?



