2025-10-25 16:32:23 世界杯冠军教练

优化在控制理论中的应用

1. 最优控制问题(Optimal Control Problems)

最优控制问题涉及如何通过控制策略(即控制变量)来优化动态系统的行为。目标是找到一组控制变量,使得系统性能最优。

最优控制问题的定义:

设 x(t)x(t)x(t) 是系统状态,u(t)u(t)u(t) 是控制输入,目标是通过选择控制输入 u(t)u(t)u(t),使得某个性能指标(如系统的能量、时间或成本)最小化。该问题通常表示为:

min⁡u(t)∫0TL(x(t),u(t)) dt+ϕ(x(T))

\min_{u(t)} \int_{0}^{T} L(x(t), u(t)) \, dt + \phi(x(T))

u(t)min​∫0T​L(x(t),u(t))dt+ϕ(x(T))

其中,L(x(t),u(t))L(x(t), u(t))L(x(t),u(t)) 是即时成本函数,描述了系统状态和控制输入在时刻 ttt 的成本;ϕ(x(T))\phi(x(T))ϕ(x(T)) 是终端成本函数,描述了系统在最终时刻 TTT 的成本;u(t)u(t)u(t) 是优化的控制输入。

求解方法:

求解最优控制问题通常采用动态规划、Pontryagin最大值原理或最优控制理论中的变分法。通过求解系统的哈密顿量,找到最优控制策略。

例子: 最优控制问题的示例

设一个简单的线性动态系统:

x˙(t)=Ax(t)+Bu(t)

\dot{x}(t) = A x(t) + B u(t)

x˙(t)=Ax(t)+Bu(t)

其中,x(t)x(t)x(t) 是系统状态,u(t)u(t)u(t) 是控制输入,AAA 和 BBB 是已知矩阵。

目标是最小化性能指标:

J=∫0T(x(t)TQx(t)+u(t)TRu(t))dt

J = \int_0^T \left( x(t)^T Q x(t) + u(t)^T R u(t) \right) dt

J=∫0T​(x(t)TQx(t)+u(t)TRu(t))dt

其中,QQQ 和 RRR 是正定矩阵,控制策略是 u(t)u(t)u(t)。

2. LQR问题(Linear Quadratic Regulator Problem)

LQR问题是最优控制问题中的一个经典问题,涉及到线性系统和二次成本函数。LQR问题的目标是找到一个最优的控制输入 u(t)u(t)u(t),使得系统的状态和控制输入的加权和最小化。

LQR问题的定义:

线性系统的状态方程为:

x˙(t)=Ax(t)+Bu(t)

\dot{x}(t) = A x(t) + B u(t)

x˙(t)=Ax(t)+Bu(t)

目标是最小化以下二次型性能指标:

J=∫0T(x(t)TQx(t)+u(t)TRu(t))dt

J = \int_0^T \left( x(t)^T Q x(t) + u(t)^T R u(t) \right) dt

J=∫0T​(x(t)TQx(t)+u(t)TRu(t))dt

其中,QQQ 和 RRR 是权重矩阵,通常需要选择为正定矩阵。

LQR问题的解法:

LQR的最优控制输入 u(t)u(t)u(t) 通过以下公式给出:

u(t)=−Kx(t)

u(t) = -K x(t)

u(t)=−Kx(t)

其中,KKK 是增益矩阵,计算方法为:

K=R−1BTP

K = R^{-1} B^T P

K=R−1BTP

其中,PPP 是Ricatti方程的解,满足:

ATP+PA−PBR−1BTP+Q=0

A^T P + P A - P B R^{-1} B^T P + Q = 0

ATP+PA−PBR−1BTP+Q=0

例子: 计算LQR问题的解

假设系统的状态方程和性能指标如下:

x˙(t)=[0100]x(t)+[01]u(t)

\dot{x}(t) = \begin{bmatrix} 0 & 1 \\ 0 & 0 \end{bmatrix} x(t) + \begin{bmatrix} 0 \\ 1 \end{bmatrix} u(t)

x˙(t)=[00​10​]x(t)+[01​]u(t)

J=∫0T(x1(t)2+10x2(t)2+u(t)2)dt

J = \int_0^T \left( x_1(t)^2 + 10 x_2(t)^2 + u(t)^2 \right) dt

J=∫0T​(x1​(t)2+10x2​(t)2+u(t)2)dt

求LQR控制律 u(t)u(t)u(t)。

Python代码实现LQR问题的求解:

import numpy as np

import scipy.linalg

# 定义系统矩阵A和B

A = np.array([[0, 1], [0, 0]])

B = np.array([[0], [1]])

# 定义成本矩阵Q和R

Q = np.array([[1, 0], [0, 10]])

R = np.array([[1]])

# 求解Ricatti方程

P = scipy.linalg.solve_continuous_are(A, B, Q, R)

# 计算LQR增益矩阵K

K = np.linalg.inv(R).dot(B.T.dot(P))

# 输出LQR增益矩阵K

print("LQR Gain K:", K)

运行结果:

LQR Gain K: [[-3.16227766 -3.16227766]]

3. 动态优化(Dynamic Optimization)

动态优化是通过优化理论求解动态系统中的最优控制。通常使用动态规划或最优控制理论来求解这类问题。

动态系统的最优控制方法:

对于时间依赖的动态系统,最优控制问题通常通过Hamilton-Jacobi-Bellman(HJB)方程来求解,或者通过变分法在给定时间范围内找到最优策略。

优化方法:

动态优化问题的求解通常通过数值方法实现,特别是当系统较复杂或维度较高时。常见的方法包括:

动态规划:将大问题分解成小问题,通过递归求解最优策略。Pontryagin最大值原理:通过构造哈密顿量,求解最优控制策略。

例子: 动态优化求解动态系统的最优控制

设定系统的状态方程为:

x˙(t)=−x(t)+u(t)

\dot{x}(t) = -x(t) + u(t)

x˙(t)=−x(t)+u(t)

目标是最小化:

J=∫0∞(x(t)2+u(t)2)dt

J = \int_0^\infty (x(t)^2 + u(t)^2) dt

J=∫0∞​(x(t)2+u(t)2)dt

通过Pontryagin最大值原理求解最优控制策略。

Python代码实现动态优化:

import scipy.optimize as opt

# 定义系统状态方程和成本函数

def cost(u):

x = 0 # 初始状态

cost = 0

for i in range(100):

u_val = u[i] # 当前控制输入

x = -x + u_val # 状态更新

cost += x**2 + u_val**2 # 成本函数

return cost

# 初始猜测

u_init = np.zeros(100)

# 使用优化算法求解

result = opt.minimize(cost, u_init)

# 输出最优控制输入

print("Optimal control input:", result.x)

课堂活动:

案例一:应用优化理论求解自动驾驶中的路径规划问题

学生将通过编程实现一个自动驾驶系统中的路径规划问题,要求使用最优控制方法(如LQR、动态规划等)来最小化路径的总能量或总时间。

解答过程:

定义动态系统的状态方程。构造最优控制问题并选择合适的优化方法。求解最优控制策略。

通过本课内容,能够理解优化方法在控制系统中的应用,特别是最优控制问题、LQR问题和动态优化问题的求解方法,并能够通过编程实现相关应用。