MPC控制与强化学习控制的区别

控制问题的求解思路

1、问题建模(自动驾驶、机器控制、工业过程控制、电力系统优化、医疗健康等),明确控制约束(控制动作本身约束、内部外部状态安全约束、控制目标约束等),控制变量(在离散or连续or混合时间间隙中执行离散or连续or混合动作等)等等等
2、系统模拟,对于实际问题一般不直接上真机进行试验,因此要尽可能真实的模拟系统模型(构建系统动力学模型,可能会存在高阶非线性问题,甚至没有明确的物理模型,只有一些运行历史数据)
3、找控制策略求解,(可以是模型预测控制、经典PID控制、鲁棒控制、最优控制、伺服控制等,也可以是启发式算法机器学习算法等)

MPC控制

模型预测控制(Model Predictive Control)控制技术由两部分组成:系统模型用于预测未来状态,优化器用于基于未来状态求解最优控制。
需要程序内在的动态模型、过去的控制讯号、以及正对滚动预测域最佳目标函数,来计算最佳控制信号

强化学习控制

首先学习虚拟环境模型(即系统模型),并基于虚拟环境求解最优控制策略。

二者差异

1、 系统建模方法不同

MPC控制劣势:
(1) MPC控制主要基于人工动力学建模、严重依赖专家经验、建模耗时长、成本高
ps:是啥系统动力学模型?

系统动力学 System Dynamics,SD是利用存量、流量、内部反馈回路、表函数和时滞等信息来理解复杂系统随时间变化的非线性行为的一种方法。
是构建、理解和讨论复杂问题的一种方法论和数学建模技术,一般在工业过程中使用较多,
比如这张图:
在这里插入图片描述
https://wiki.swarma.org/index.php/%E6%96%87%E4%BB%B6:Adoption_SFD_ANI_s.gif

(2) 系统模型误差的大小直接决定了最终控制的性能,且难以自动更新减小误差

强化学习控制优势:
(1)主要基于数据驱动,无需动力学建模,可选择性的注入专家经验,建模耗时短、成本低
(2)虚拟环境模型可自然的随数据的积累而更新,贴近真实系统

2、 系统模拟能力不同

MPC控制劣势:
(1)大量采用了近似技术,不可避免的建模误差导致系统模型只能进行短期预测
(2)受限于凸优化技术,难以对多环节的复杂系统进行建模
强化学习控制优势:
(1)基于虚拟环境学习的数学理论突破,可进行数千步以上的长期预测
(2)基于深度神经网络模块的流程建模方式,可以对大至城市级的系统进行建模

3、控制策略能力不同

MPC控制劣势:
(1)基于系统模型和优化器进行实时求解,在线计算开销(滚动优化
(2)受限于凸优化技术,控制策略的代价函数不可随意设置
强化学习控制优势:
(1)得益于深度学习与强化学习的长足发展,具备高度的非线性和自适应能力,且神经网络推理计算开销小
(2)在虚拟环境中接收对应业务需求设计的奖励,可面向全局目标求解有全局约束的问题

ps1:近几年有提到强化学习中的模型预测控制概念,理解为model-based 的RL,在一些问题的性能上相对于model-free有所提升

《2022强化学习控制白皮书》 https://revive-algorithm.hk.ufileos.com/polixir-web/files/%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0%E6%8E%A7%E5%88%B6%E7%99%BD%E7%9A%AE%E4%B9%A6.pdf

### 基于强化学习MPC在Simulink中的实现 #### 使用强化学习工具箱构建MPC控制器 MATLAB 提供了一个强大的 **强化学习工具箱**,支持多种强化学习算法(如 DQN、A2C DDPG),可用于训练策略以解决复杂控制系统的问题[^1]。通过 Simulink 的集成,用户可以轻松定义环境模型并之交互,从而完成 MPC 控制器的设计。 以下是具体实现方法: #### 定义环境模型 在 Simulink 中创建动态系统模型作为强化学习的环境。此模型应描述被控对象的行为及其动力学特性。例如,在汽车变道场景中,可以通过 Simulink 构建车辆的动力学方程,并将其配置为强化学习环境的一部分[^4]。 #### 设计奖励函数 奖励函数是强化学习的关键组成部分之一,决定了代理如何评估其行为的好坏。对于基于强化学习MPC 应用,通常需要考虑以下几个方面: - 跟踪误差最小化; - 输入变化平滑性; - 避免超出物理约束条件。 根据上述原则设定合适的奖励值,引导策略向期望的方向发展[^3]。 #### 实施策略表示形式 可以选择不同的方式来表达策略,比如利用深度神经网络或者查找表等形式。如果采用深度学习架构,则需借助 Deep Learning Toolbox 导入预训练好的 ONNX 模型文件。 #### 并行加速训练过程 为了缩短收敛时间并提升效率,可启用多核处理器甚至云端资源来进行大规模仿真运算。这一步骤可通过 Parallel Computing Toolbox 来达成。 #### 示例代码展示 下面给出一段简化版 Python 风格伪代码用于说明逻辑流程 (实际操作应在 MATLAB/Simulink 下执行): ```python import rl_agent as agent # 假设这是调用RL Agent库的方式 def setup_environment(): """ 设置Simulink环境 """ env = create_simulink_env('VehicleDynamicsModel') # 创建车体动力学模型实例 return env def define_reward(state, action): """ 自定义奖励函数 """ error = calculate_tracking_error(state) # 计算轨迹偏差 smoothness_penalty = penalize_input_change(action) # 对剧烈动作加罚分项 reward = -(error + smoothness_penalty) return reward if __name__ == "__main__": environment = setup_environment() actor_network = build_actor_nn() # 构造Actor NN结构 critic_network = build_critic_nn() # 构造Critic NN结构 trainer_config = { 'max_episodes': 500, 'batch_size': 64, 'learning_rate': 0.001 } trained_policy = train_rl_algorithm(environment, actor_network, critic_network, define_reward, trainer_config) ``` 注意以上仅为概念示意而非确切可用语法! --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值