跳转到内容

REVIVE 简介 ​

REVIVE 是一套用历史数据做决策建模的工具包。它从您已有的运行记录里学出「这个系统被操作之后会怎么变」, 再在学到的模型里训练和检验控制策略——整个过程不需要在真实设备上试错。

如果您的系统已经运行了很久、数据留了下来,但响应关系复杂、靠经验整定容易震荡, 而直接上线试新策略的代价又太高,REVIVE 正是为这类场景设计的。和两种常见做法相比:

  • 传统控制依赖人工设计的规则和整定参数。对象存在滞后或强耦合时容易震荡,工况一变就要重新整定。
  • 在线强化学习需要与真实环境反复交互试错,在工业现场意味着难以接受的成本与风险。
  • REVIVE 只使用您已经采集的运行数据完成建模与策略训练,上线之前先在模型里验证。

REVIVE 能做什么 ​

REVIVE 提供两项能力。您可以只用第一项,也可以把两项串起来用:

输入输出功能用来做什么
历史运行数据,以及变量含义和依赖关系世界模型学习状态、动作与系统响应之间的关系,进行单步预测和多步推演预测系统变化、比较操作方案、构建离线仿真环境
已验证的世界模型、可量化目标及动作边界控制策略在世界模型中训练策略,根据当前观测生成动作优化控制操作,平衡跟踪效果、能耗或其他任务目标
真实系统留下历史数据,历史数据训练出世界模型,在世界模型中训练出控制策略,策略通过验收后接入真实系统;REVIVE 只接触数据、世界模型和控制策略

只需要预测时,训练并使用世界模型即可;需要优化操作时,再继续训练控制策略。 两者有各自的评价指标,需要分别验证,评估范围应覆盖您实际使用的工况。

适合哪些任务 ​

下面这些场景在仓库里都有配套的任务列表,涵盖仿真基准、合成控制对象和真实数据建模:

领域任务技术难点
家电冰箱温度控制存在开门等外部扰动,且控制量必须非负
无人机飞行动力学建模仅构建世界模型,用于飞控方案的离线评估
机器人仿生机器人运动控制(HalfCheetah 仿真)状态与动作维度较高,需要协调多个关节并遵守动作边界
过程控制三容水箱液位三阶滞后对象,末端响应需经过两级容积传递
水处理加氯投加量控制加药至出水见效存在长滞后,需要同时考虑水质目标与药剂用量
建筑暖通单区域供暖节能需要利用当时可获得的天气预报、作息与电价,平衡舒适度与能耗

它们的共同特征是:已经有历史数据,并且有需要建模的系统响应或待优化的操作目标。 开始之前,还需要确认变量是否可观测、数据覆盖是否充分,以及接口和运行条件是否具备。

遇到下面三种情况,建议您先补充数据或完善任务定义:

  • 数据量不足或过于单一。如果历史操作中控制量几乎没有变化,模型就学不到「改变操作后系统如何响应」。
  • 策略目标难以量化。奖励定义不出来时,策略缺少优化方向;但世界模型仍可以按预测指标训练。
  • 系统本身发生了变化。设备大修或工艺改造之后,历史数据描述的已经不是当前的系统。

关于案例结果

案例展示的是软件流程和建模方法,其训练或仿真指标不等同于您现场的实际效果,业务收益需要按您自己的验收条件另行评估。

任务流程 ​

一个任务从数据走到部署文件,按顺序分四步。入门教程以倒立摆为例带您完整走一遍。

  1. 准备数据 —— 整理运行数据,定义决策流图;需要训练策略时再定义奖励函数。 产出 train.npz、图结构与列定义。

  2. 编写配置 —— 由数据生成配置骨架,修正占位值,执行训练前预检。 产出 config.yaml。

  3. 训练模型 —— 训练并验证世界模型,按需继续训练控制策略。 产出 env.pt;需要策略时还有 policy.pt。

  4. 使用模型 —— 在 Python 中加载推理,或导出 ONNX 接入部署系统。 产出通过数值一致性验证的部署文件。

第一步的数据准备和决策流图设计需要结合进行:先根据业务关系选择变量,再检查数据能否支持这些关系。

关于 smoke 模式

教程里的 smoke 只压缩训练预算,不改变流程语义。跑通说明软件流程可用,它的指标不能作为模型效果的结论。

常见概念 ​

下面五个词贯穿全部配置、日志和报错信息。这里给的是定义,以及它在任务里对应什么; 具体写法、取值范围和规则约束在配置与调优各页展开。

世界模型 ​

世界模型回答「做了这个操作之后,系统会变成什么样」。 它根据当前状态和给定动作预测下一时刻的状态, 也可以连续推演一段操作的后果。它学的是系统的动态关系,可以独立用于预测、仿真和方案评估。

例如倒立摆,当前的角度、角速度和施加的力矩共同决定下一时刻如何运动。把这些量交给世界模型, 就能预测下一时刻的角度与角速度;换一个力矩,就能比较不同操作的预测结果。

控制策略 ​

控制策略回答「现在应该执行什么动作」。 它根据当前观测输出动作,训练时通过奖励表达目标, 并结合动作边界评估不同操作。需要策略时,先在已经验证的世界模型中训练,再独立检查它的效果。

例如倒立摆,策略读取当前的角度和角速度,输出施加在转轴上的力矩;世界模型负责预测这一动作的后果。

奖励 ​

奖励把「什么算好」写成一个可计算的数值。 每一步动作都会得到一个奖励值,策略训练的目标 就是让长期累计的奖励尽可能高。它是策略的优化方向,框架推断不出来,需要您按业务目标编写。

例如倒立摆的奖励可以写成:摆杆越接近直立得分越高,同时对晃动和过大的力矩扣分。 如果只训练世界模型,则不需要奖励。

决策流图 ​

决策流图描述一个时间步内的计算:任务里有哪些变量,谁依赖谁。 每个节点对应一个变量, 节点之间的连线表示计算依赖;配置文件 graph.nodes 写的就是这张图,节点名即其输出变量名。 节点分三类:网络节点(参数从数据中训练)、函数节点(一段确定的计算公式)、专家特征节点(注入领域知识)。

例如加氯任务里,「余氯浓度如何响应投加量」只能从数据学,是网络节点; 「投加量 × 流量 = 药耗」是确定的公式,写成函数节点,网络就不必再去拟合它。

写法与完整字段见编写任务配置。

轨迹数据 ​

一条轨迹是一段时间上连续的运行记录,不同轨迹之间没有连续的状态转移关系。数据保存为 一个 .npz:每个变量一个数组(第一维是时间轴),外加一个 index 数组标注各段的结束位置。

例如一台设备三次开停机的数据,应当是三条轨迹而不是一条——否则模型会把「上次停机的最后一刻」 和「这次开机的第一刻」当成一次真实的状态转移来学。

切段依据与从日志抽数的做法见准备数据。

继续配置和部署时,还会用到下面这些概念:

概念含义与进一步阅读
状态转移graph.transitions 把本步的预测结果交给下一步使用,例如将 next_states 更新为下一步的 states。见图结构配置。
原始与处理后空间原始空间保留业务单位和编码;处理后空间按变量声明进行归一化或编码,供网络计算。见数据归一化。
历史窗口使用多个时间步的观测作为输入,用于表达滞后与动态过程;推理时也需要准备或维护历史。见历史窗口。
训练阶段按配置组织世界模型与策略的训练顺序,并明确阶段间使用的模型。见阶段依赖。
验证与选模按固定口径评价候选模型,并依据指定指标选择训练轮次。见评估与选择模型。
模型与训练检查点env.pt、policy.pt 用于加载推理;精确续训需要包含训练状态的检查点。见两类文件的区别。

从这里开始 ​

章节适合解决的问题
开始使用了解 REVIVE 能做什么、完成安装与授权、使用命令行或 Skill 开始任务
入门教程用倒立摆走通五页教程,并替换为自己的业务数据
任务列表了解九类业务任务的数据、建模、训练与评估方式
高级功能结合业务使用专家知识、历史信息、多控制节点、可靠性评估与参数搜索
配置与调优编写任务配置、组织数据与训练、选择模型并改善预测和控制效果
训练与部署判断训练效果、管理训练任务,并将模型接入业务系统
参考与帮助查配置项与算法参数、选择调整顺序,并查找命令用法和故障处理