跳转到内容

选择建模与控制算法 ​

选择算法前,先确定需要交付什么:预测设备响应、模仿历史操作、按业务奖励优化动作,还是保留现有控制律。世界模型描述系统如何变化,策略或控制器决定采取什么动作,两者可以分开比较。

按任务选择方案 ​

您的任务可以从哪里开始业务例子
用新数据建立预测模型BC根据当前温度、加热功率和室外温度预测下一步温度
单步预测可用,希望改善连续推演BC 多步训练或 REVIVE-P持续预测开门后的冰箱温度恢复过程
希望同一动力学模型学习多个预测步长ADM2比较设备短期与较长时间响应,先检查结构适配
学习已有操作记录Policy BC模仿历史加药或阀门操作,建立控制比较基线
按目标跟踪和能耗优化动作PPO 或 SAC在温控世界模型中学习加热与节能的权衡
利用已知未来信息规划动作MPC依据负荷计划提前调节暖通设备
保留明确的反馈控制形式FFPID用设定温度与实测温度整定控制参数
只允许修正现有控制方案Residual PID在既有加药方案上加入有限幅度的补偿

首次接入可以先用 BC 验证数据和图,再按任务决定控制方案。多步误差变大可能与数据覆盖、输入缺失或模型结构有关,应结合改善预测与控制效果定位原因。

以下 YAML 都是 training.stages 的条目,需加入已定义图、数据和物理边界的任务配置。控制示例用 env 代表已有世界模型阶段,action 代表动作节点;请替换为当前任务的名称。阶段继承见设置训练流程。

世界模型算法 ​

BC:学习状态变化 ​

算法键:venv.bc。

BC 对图中的可训练节点进行监督学习,适合建立预测基线。比如水箱模型根据当前液位与流量学习下一周期的液位变化,可以直接检查各节点误差与数据覆盖。

yaml
- name: env
  algorithm: venv.bc
  hyperparameters:
    epochs: 200
    optimizer: {lr: 0.0003}

从单步训练开始,确认预测目标、量纲与趋势。需要学习连续推演时,启用 sequence_train:train_mode: tf 使用真实历史条件,train_mode: rollout 将模型预测反馈到后续步骤。具体长度按业务响应时间选择,再用固定的多步验证比较。

BC 的优势是便于定位监督误差,连续预测仍可能累积偏差。完整例子见编写任务配置,调参见降低预测误差,参数见BC 参考。

REVIVE-P:改善多步推演 ​

算法键:venv.revive_p。

REVIVE-P 在监督学习之外加入生成式推演与判别信号,可用于比较长时间推演表现。例如机器人运动模型单步预测已经可用,但连续推演逐渐偏离轨迹时,可以在相同验证窗口下与 BC 比较。

yaml
- name: env
  algorithm: venv.revive_p
  hyperparameters:
    epochs: 200
    bc:
      optimizer: {lr: 0.0001}
    adversarial:
      enabled: true
      start_epoch: 50
      rollout: {horizon: 20, batch_size: 256}

bc 放监督参数,adversarial 放对抗参数,epochs 放在 hyperparameters 下。start_epoch 为监督学习留出预热时间;rollout.horizon 设置对抗推演长度。需要对照时,在同样预算和验证条件下设置 adversarial.enabled: false,比较启用前后的多步误差。

该算法增加训练开销,需要同时检查监督指标和目标工况;判别器分数不能替代模型精度。OOD 权重调度需要正的 zero_epoch,默认由显式的正数 epochs 提供。调整方法见对抗训练,完整任务见机器人控制,参数见REVIVE-P 参考。

ADM2:学习多步预测 ​

算法键:venv.adm2。

ADM2 使用专门的递归动力学网络,适合需要在同一模型中学习多个步长预测的任务。采用前应确认目标状态、驱动变量与增量图满足该算法结构,不能直接沿用任意图结构。

yaml
- name: env
  algorithm: venv.adm2
  hyperparameters:
    target: auto
    drivers: auto
    max_adm_step: 2
    n_starts: 2
    patience: 25

target、drivers 可以自动推导,也可按业务显式设置;应先核对推导结果。max_adm_step 调整预测步长范围,n_starts 增加初始化候选,patience 控制早停等待。它们都需要结合多步误差与计算开销比较。

整个运行使用统一训练/验证划分,修改比例请设置 data.train_ratio;阶段内 holdout_ratio 不会重新划分数据。产出的环境模型可以被后续策略和控制器阶段继承。完整字段见ADM2 参考。

策略学习算法 ​

三类策略均需要通过 inherit_from 或 env_record_id 指定世界模型。Policy BC 学习历史动作,PPO 与 SAC 根据奖励在世界模型中优化动作。比较时保持相同环境模型、初始条件与评价指标。

Policy BC:模仿历史动作 ​

算法键:policy.bc。

历史操作质量可接受,或者奖励函数还在确定时,可以先学习已有动作,形成一个可部署的行为拟合模型。它也适合作为其他策略的比较基线。

yaml
- name: policy_bc
  algorithm: policy.bc
  inherit_from: env
  hyperparameters:
    policy_nodes: [action]
    epochs: 100
    optimizer: {lr: 0.001}

该算法需要离线动作标签,无需奖励函数。评估时同时检查监督损失、确定性动作误差、动作饱和率与闭环表现。模型具有拟合误差,因此还应保留现有控制器和历史操作本身的评估结果。参数见Policy BC 参考。

PPO:优化控制动作 ​

算法键:policy.ppo。

业务目标已经明确、希望从世界模型中学习控制动作时,可以用 PPO 建立策略优化方案。例如温控任务中,奖励同时表达温度偏差与能耗,策略在可用动作范围内学习两者的权衡。

yaml
- name: policy
  algorithm: policy.ppo
  inherit_from: env
  hyperparameters:
    policy_nodes: [action]
    reward: {path: reward.py, function: get_reward}
    rollout_horizon: 20
    num_rollout_trajs: 128
    bpc_type: bc
    bpc_weight: 0.01
    optimizer: {lr: 0.00004}

rollout_horizon 应结合世界模型可用的推演范围选择,num_rollout_trajs 控制采样量。行为约束 bpc_weight 可限制相对历史动作的偏移,但过强也可能限制收益;应结合动作分布和独立评估调整。

奖励方向、尺度和动作边界先于学习率确定。完整任务见倒立摆,更新强度的调整见PPO 调参,参数见PPO 参考。

SAC:复用轨迹训练 ​

算法键:policy.sac。

SAC 使用经验回放复用世界模型中采集的轨迹,并以熵目标调节探索。连续动作任务可以将它与 PPO 对照,比较同一计算预算下的回报、动作分布与结果波动。

yaml
- name: policy
  algorithm: policy.sac
  inherit_from: env
  hyperparameters:
    policy_nodes: [action]
    reward: {path: reward.py, function: get_reward}
    rollout_length: 20
    buffer_size: 100000
    batch_size: 256
    actor_lr: 0.0003
    critic_lr: 0.0003
    auto_alpha: true
    bpc_type: bc
    bpc_weight: 0.01

SAC 的推演长度叫 rollout_length,PPO 则使用 rollout_horizon。auto_alpha: true 自动调节熵系数,alpha 作为初值。调整时结合 Q 值、奖励尺度和动作覆盖,避免只按模型内奖励判断改进。方法见SAC 调参,参数见SAC 参考。

模型控制器 ​

控制器使用世界模型评估控制律或规划动作,需要奖励函数及明确的动作边界。与直接策略相比,控制器的规划长度、增益、残差限制和会话状态也会影响实际运行。

MPC:规划未来动作 ​

算法键:controller.mpc。

MPC 每个控制周期搜索一段未来动作,执行第一个动作,再根据最新观测重新规划。适合可获得天气预报、负荷计划等信息,且控制周期允许在线计算的任务。

yaml
- name: mpc
  algorithm: controller.mpc
  inherit_from: env
  hyperparameters:
    policy_nodes: [action]
    reward: {path: reward.py, function: get_reward}
    action_bounds: {action: [-2.0, 2.0]}
    method: cem
    horizon: 15
    num_samples: 256
    num_elites: 32
    num_iterations: 5
    warm_start: true

horizon 应覆盖动作响应所需的时间,同时处于模型能够可靠预测的范围。计算量随规划长度、候选数和迭代数增加,需在目标设备测量每步延迟。未来外生输入通过 future_exogenous_keys 声明,并按规划步数在推理时提供。

MPC 导出使用 output.onnx.validate: runtime,再验证部署端闭环效果;候选精英筛选对细小数值差异敏感,不能只依靠放宽 parity 容差。参数见MPC 参考。

FFPID:整定控制参数 ​

算法键:controller.ffpid。

有明确设定值、测量量和控制方向的单回路任务,可用 FFPID 组合前馈与 PID 反馈。例如已知目标温度与当前温度时,先从比例控制开始,逐步处理稳态偏差、超调与可测扰动。

yaml
- name: pid
  algorithm: controller.ffpid
  inherit_from: env
  hyperparameters:
    policy_nodes: [action]
    reward: {path: reward.py, function: get_reward}
    setpoint_key: target
    measurement_key: observation
    action_bounds: {action: [0.0, 1.0]}
    kp: 1.0
    ki: 0.0
    kd: 0.0
    kff: 0.0
    anti_windup: clamp
    integral_limit: 100.0

先核对误差方向、增益单位和采样周期,再调整增益。可用 tune 在固定验证片段上搜索:two_stage 先粗筛后复评,validate_only 只评估给定参数,export_only 只导出。tune.search 的各项为候选值列表,例如 kp: [1.0, 2.0, 4.0]。

整定顺序见改善控制效果,候选搜索字段见FFPID 参考。

Residual PID:修正基线 ​

算法键:controller.residual_pid。

已有基线控制器,希望在限定范围内补偿误差时,Residual PID 将基线动作与受约束的残差组合。例如水处理可以保留现有加药方案,再按出水指标偏差增加有限补偿。

yaml
- name: residual_pid
  algorithm: controller.residual_pid
  inherit_from: env
  hyperparameters:
    policy_nodes: [action]
    reward: {path: reward.py, function: get_reward}
    measurement_key: observation
    target: 0.9
    baseline: {path: baseline.py, function: baseline_action}
    action_bounds: {action: [0.0, 1.0]}
    delta_max: 0.2
    rate_limit: 0.05
    i_max: 0.1
    sample_dt_h: 1.0
    kp: 0.5
    ki: 0.02
    kd: 0.0

delta_max、rate_limit、i_max 分别限制修正幅度、变化率与积分量,必须根据业务单位和工艺要求填写。sample_dt_h 表示控制时间步的尺度;单位时间步配置下,增益需按每控制步理解。

未声明 baseline 时使用零基线,输出由残差提供,修正范围需能够覆盖计划采用的动作。搜索某个增益时,应移除同一增益的显式固定值,避免同时在 hyperparameters 和 tune.search 中声明。完整业务见水处理,字段见Residual PID 参考。

比较候选方案 ​

先选一组能够解释且通过预检的方案,再固定数据划分、验证窗口和业务指标比较:

比较什么需要保持一致主要看什么
世界模型算法数据、预测目标与验证输入单步和多步误差、关键工况、训练开销
策略算法世界模型、奖励、初始状态与评估长度回报、动作偏移、约束和重复试验的波动
策略与控制器工况、设备范围和业务评价标准控制质量、推理延迟、部署输入与状态管理

模型内得分需要结合真实业务条件解释。选定算法后,进入改善预测与控制效果定位问题;参数范围已明确时,可使用高级功能中的自动搜索参数。