REVIVE 简介
REVIVE 是一套用历史数据做决策建模的工具包。它从您已有的运行记录里学出「这个系统被操作之后会怎么变」, 再在学到的模型里训练和检验控制策略——整个过程不需要在真实设备上试错。
如果您的系统已经运行了很久、数据留了下来,但响应关系复杂、靠经验整定容易震荡, 而直接上线试新策略的代价又太高,REVIVE 正是为这类场景设计的。和两种常见做法相比:
- 传统控制依赖人工设计的规则和整定参数。对象存在滞后或强耦合时容易震荡,工况一变就要重新整定。
- 在线强化学习需要与真实环境反复交互试错,在工业现场意味着难以接受的成本与风险。
- REVIVE 只使用您已经采集的运行数据完成建模与策略训练,上线之前先在模型里验证。
REVIVE 能做什么
REVIVE 提供两项能力。您可以只用第一项,也可以把两项串起来用:
| 输入 | 输出 | 功能 | 用来做什么 |
|---|---|---|---|
| 历史运行数据,以及变量含义和依赖关系 | 世界模型 | 学习状态、动作与系统响应之间的关系,进行单步预测和多步推演 | 预测系统变化、比较操作方案、构建离线仿真环境 |
| 已验证的世界模型、可量化目标及动作边界 | 控制策略 | 在世界模型中训练策略,根据当前观测生成动作 | 优化控制操作,平衡跟踪效果、能耗或其他任务目标 |
只需要预测时,训练并使用世界模型即可;需要优化操作时,再继续训练控制策略。 两者有各自的评价指标,需要分别验证,评估范围应覆盖您实际使用的工况。
适合哪些任务
下面这些场景在仓库里都有配套的任务列表,涵盖仿真基准、合成控制对象和真实数据建模:
| 领域 | 任务 | 技术难点 |
|---|---|---|
| 家电 | 冰箱温度控制 | 存在开门等外部扰动,且控制量必须非负 |
| 无人机 | 飞行动力学建模 | 仅构建世界模型,用于飞控方案的离线评估 |
| 机器人 | 仿生机器人运动控制(HalfCheetah 仿真) | 状态与动作维度较高,需要协调多个关节并遵守动作边界 |
| 过程控制 | 三容水箱液位 | 三阶滞后对象,末端响应需经过两级容积传递 |
| 水处理 | 加氯投加量控制 | 加药至出水见效存在长滞后,需要同时考虑水质目标与药剂用量 |
| 建筑暖通 | 单区域供暖节能 | 需要利用当时可获得的天气预报、作息与电价,平衡舒适度与能耗 |
它们的共同特征是:已经有历史数据,并且有需要建模的系统响应或待优化的操作目标。 开始之前,还需要确认变量是否可观测、数据覆盖是否充分,以及接口和运行条件是否具备。
遇到下面三种情况,建议您先补充数据或完善任务定义:
- 数据量不足或过于单一。如果历史操作中控制量几乎没有变化,模型就学不到「改变操作后系统如何响应」。
- 策略目标难以量化。奖励定义不出来时,策略缺少优化方向;但世界模型仍可以按预测指标训练。
- 系统本身发生了变化。设备大修或工艺改造之后,历史数据描述的已经不是当前的系统。
关于案例结果
案例展示的是软件流程和建模方法,其训练或仿真指标不等同于您现场的实际效果,业务收益需要按您自己的验收条件另行评估。
任务流程
一个任务从数据走到部署文件,按顺序分四步。入门教程以倒立摆为例带您完整走一遍。
准备数据 —— 整理运行数据,定义决策流图;需要训练策略时再定义奖励函数。 产出
train.npz、图结构与列定义。编写配置 —— 由数据生成配置骨架,修正占位值,执行训练前预检。 产出
config.yaml。训练模型 —— 训练并验证世界模型,按需继续训练控制策略。 产出
env.pt;需要策略时还有policy.pt。使用模型 —— 在 Python 中加载推理,或导出 ONNX 接入部署系统。 产出通过数值一致性验证的部署文件。
第一步的数据准备和决策流图设计需要结合进行:先根据业务关系选择变量,再检查数据能否支持这些关系。
关于 smoke 模式
教程里的 smoke 只压缩训练预算,不改变流程语义。跑通说明软件流程可用,它的指标不能作为模型效果的结论。
常见概念
下面五个词贯穿全部配置、日志和报错信息。这里给的是定义,以及它在任务里对应什么; 具体写法、取值范围和规则约束在配置与调优各页展开。
世界模型
世界模型回答「做了这个操作之后,系统会变成什么样」。 它根据当前状态和给定动作预测下一时刻的状态, 也可以连续推演一段操作的后果。它学的是系统的动态关系,可以独立用于预测、仿真和方案评估。
例如倒立摆,当前的角度、角速度和施加的力矩共同决定下一时刻如何运动。把这些量交给世界模型, 就能预测下一时刻的角度与角速度;换一个力矩,就能比较不同操作的预测结果。
控制策略
控制策略回答「现在应该执行什么动作」。 它根据当前观测输出动作,训练时通过奖励表达目标, 并结合动作边界评估不同操作。需要策略时,先在已经验证的世界模型中训练,再独立检查它的效果。
例如倒立摆,策略读取当前的角度和角速度,输出施加在转轴上的力矩;世界模型负责预测这一动作的后果。
奖励
奖励把「什么算好」写成一个可计算的数值。 每一步动作都会得到一个奖励值,策略训练的目标 就是让长期累计的奖励尽可能高。它是策略的优化方向,框架推断不出来,需要您按业务目标编写。
例如倒立摆的奖励可以写成:摆杆越接近直立得分越高,同时对晃动和过大的力矩扣分。 如果只训练世界模型,则不需要奖励。
决策流图
决策流图描述一个时间步内的计算:任务里有哪些变量,谁依赖谁。 每个节点对应一个变量, 节点之间的连线表示计算依赖;配置文件 graph.nodes 写的就是这张图,节点名即其输出变量名。 节点分三类:网络节点(参数从数据中训练)、函数节点(一段确定的计算公式)、专家特征节点(注入领域知识)。
例如加氯任务里,「余氯浓度如何响应投加量」只能从数据学,是网络节点; 「投加量 × 流量 = 药耗」是确定的公式,写成函数节点,网络就不必再去拟合它。
写法与完整字段见编写任务配置。
轨迹数据
一条轨迹是一段时间上连续的运行记录,不同轨迹之间没有连续的状态转移关系。数据保存为 一个 .npz:每个变量一个数组(第一维是时间轴),外加一个 index 数组标注各段的结束位置。
例如一台设备三次开停机的数据,应当是三条轨迹而不是一条——否则模型会把「上次停机的最后一刻」 和「这次开机的第一刻」当成一次真实的状态转移来学。
切段依据与从日志抽数的做法见准备数据。
继续配置和部署时,还会用到下面这些概念:
| 概念 | 含义与进一步阅读 |
|---|---|
| 状态转移 | graph.transitions 把本步的预测结果交给下一步使用,例如将 next_states 更新为下一步的 states。见图结构配置。 |
| 原始与处理后空间 | 原始空间保留业务单位和编码;处理后空间按变量声明进行归一化或编码,供网络计算。见数据归一化。 |
| 历史窗口 | 使用多个时间步的观测作为输入,用于表达滞后与动态过程;推理时也需要准备或维护历史。见历史窗口。 |
| 训练阶段 | 按配置组织世界模型与策略的训练顺序,并明确阶段间使用的模型。见阶段依赖。 |
| 验证与选模 | 按固定口径评价候选模型,并依据指定指标选择训练轮次。见评估与选择模型。 |
| 模型与训练检查点 | env.pt、policy.pt 用于加载推理;精确续训需要包含训练状态的检查点。见两类文件的区别。 |
从这里开始
| 章节 | 适合解决的问题 |
|---|---|
| 开始使用 | 了解 REVIVE 能做什么、完成安装与授权、使用命令行或 Skill 开始任务 |
| 入门教程 | 用倒立摆走通五页教程,并替换为自己的业务数据 |
| 任务列表 | 了解九类业务任务的数据、建模、训练与评估方式 |
| 高级功能 | 结合业务使用专家知识、历史信息、多控制节点、可靠性评估与参数搜索 |
| 配置与调优 | 编写任务配置、组织数据与训练、选择模型并改善预测和控制效果 |
| 训练与部署 | 判断训练效果、管理训练任务,并将模型接入业务系统 |
| 参考与帮助 | 查配置项与算法参数、选择调整顺序,并查找命令用法和故障处理 |