为何收录

mpcrl 面向基于学习的控制研究:控制器的结构来自已有的预测模型和约束,参数则从闭环数据中学习。它把 Gros、Zanon 等人发展的 MPC 型强化学习方法整理成可复用的代码,研究者不必自己推导 MPC 解对参数的灵敏度,也不必从头搭建 Q-learning 或 DPG 的更新流程,可以把精力放在问题建模和对比实验上。

官方示例库覆盖离线和在线 Q-learning、在线 DPG,以及用贝叶斯优化免梯度地调整 MPC 参数;README 说明这些主线示例都是小规模学术问题,例如一个小型线性时不变系统。示例库另收有凸多面体采样、带输入约束控制屏障函数的自适应巡航控制等例子,官方注明它们与 MPC 型强化学习并不直接相关。比较适合的读者,是已经熟悉 MPC 建模、想在仿真中让控制器参数随数据更新的控制方向研究生和研究人员。

1.4 系列的两项改动都落在实验工程上。V(s) 和 Q(s,a) 可以使用分别构造的 MPC,研究者能单独定制两个控制器,同时省去内部复制的开销。不过两者并不完全由用户决定:按 1.4.1 的源码,无论传入一个还是两个 MPC,智能体都会在 Q 的控制器上添加“首个动作等于给定动作”的约束,采用梯度型探索时还会在 V 的目标函数中加入扰动项。改进后的 deepcopy 与 pickle 支持,则方便复制智能体做多组重复实验,或把智能体对象保存到磁盘。

局限与注意事项

截至核验日,最新正式版本 1.4.1 发布已满一年。main 分支此后的提交包括依赖升级、代码检查配置更新和最低 Python 版本调整,还没有形成新的发布。打算在课题中长期使用的团队,宜锁定版本号,并留意后续发布说明。

这类方法每给出一个动作都要在线求解一次优化问题,非线性、非凸问题还可能求解失败。智能体为此提供了 use_last_action_on_fail 选项,以及基于多起点非线性规划的热启动策略,但它们只是工程上的应对,不能保证训练收敛或闭环稳定。若研究需要稳定性与安全性保证,应回到 README 所列 Gros、Zanon 等人的理论文献核对前提条件,不能默认库的实现已经提供这些保证。

环境须遵循 Gymnasium 接口,README 入门示例还注明状态和动作须为连续量。从旧版本升级时,除了检查 LearnableParameter 的 sym 参数,还要留意热启动行为:1.4.0 修复相关问题后,过去在关闭热启动的设置下实际仍使用了热启动的实验,重跑结果可能与原记录不同。

MIT 许可允许使用、修改和再分发,条件是在副本中保留版权声明和许可声明;软件按“原样”提供,不附任何担保。csnlp、CasADi 和 IPOPT 等依赖各有许可条款,本文没有逐一核对。

一个小规模的验收办法是:在独立虚拟环境中安装 1.4.1,运行官方的在线 Q-learning 示例,分别用单个 MPC 和 (V, Q) 元组初始化智能体,比较两次训练的代价曲线,再把训练后的智能体用 pickle 保存并重新读取。这是建议的检查步骤,本文没有执行。仓库名为 FilippoAiraldi/mpc-reinforcement-learning,项目入口:GitHub 仓库、1.4.1 发布页、官方文档、PyPI。

参考文献

参考文献

  1. mpcrl.diagram.light.png 与 mpcrl.diagram.tex(1.4.1 标签 docs/_static)

  2. 信息由 Scholay 学术一站式平台 整理并发表,如有侵权请反馈下架。

  3. 信息同步发表于恩特学术,智能时代的学者社区