utils.py

这段代码是一个用于训练和评估强化学习(Reinforcement Learning, RL)代理的完整框架,专门针对温室控制环境(如 GreenLightHeatCO2)。它结合了 Stable-Baselines3Weights and Biases(wandb)OpenAI Gym,提供了从环境创建、模型训练到结果记录和保存的全流程功能。以下是代码的详细解释:


1. 代码概述

  • 目的

    • 训练和评估 RL 代理,用于温室控制任务。

    • 支持多种环境(如 GreenLightEnvGreenLightHeatCO2 等)。

    • 使用 PPO 算法进行训练,并将结果记录到 wandb。

  • 功能

    • 加载环境和模型的超参数。

    • 创建并行化的训练和评估环境。

    • 初始化 PPO 模型并训练。

    • 定期评估模型性能并保存最佳模型。

    • 支持规则控制器的测试和仿真。


2. 主要模块和函数

(1) 环境相关函数

  • make_env

    • 创建单个环境的工厂函数。

    • 支持训练环境和评估环境的初始化。

  • make_vec_env

    • 创建并行化的向量化环境。

    • 使用 SubprocVecEnv 实现多进程并行化。

    • 封装 VecMonitorVecNormalize,支持状态归一化和监控。

(2) 参数加载函数

  • load_model_params

    • 从 YAML 文件中加载模型的超参数。

    • 支持动态设置激活函数、优化器等。

  • load_env_params

    • 从 YAML 文件中加载环境的超参数。

    • 返回基础环境参数、特定环境参数、选项和结果列名。

  • loadParameters

    • 综合加载环境和模型的参数。

  • set_model_params

    • 根据配置字典设置模型参数。

(3) 训练相关函数

  • wandb_init

    • 初始化 wandb 运行,用于记录训练过程中的指标和超参数。

  • create_callbacks

    • 创建训练过程中的回调函数,包括评估回调、保存模型回调等。

  • runExperiment(未在此代码中定义,但在之前的代码中提到):

    • 训练 RL 代理的核心函数。

(4) 规则控制器和仿真函数

  • controlScheme

    • 测试特定控制策略的效果。

  • runRuleBasedController

    • 运行基于规则的控制策略。

  • runSimulationDefinedControls

    • 运行预定义的控制策略并记录结果。


3. 关键数据结构

  • 环境参数

    • env_base_params:基础环境的参数。

    • env_specific_params:特定环境的参数。

    • options:环境选项,如评估环境的起始日期等。

  • 模型参数

    • model_params:模型的超参数,包括网络结构、学习率、优化器等。

  • 回调函数

    • eval_callback:定期评估模型性能。

    • wandbcallback:将训练结果记录到 wandb。


4. 代码流程

  1. 加载参数

    • 从 YAML 文件中加载环境和模型的超参数。

  2. 创建环境

    • 使用 make_vec_env 创建并行化的训练和评估环境。

  3. 初始化模型

    • 使用 PPO 类初始化模型。

  4. 训练模型

    • 使用 model.learn 方法训练模型,并定期调用回调函数进行评估。

  5. 保存模型和环境

    • 训练结束后,保存最终的模型和环境状态。

  6. 清理资源

    • 关闭环境并释放内存。


5. 关键点

  • 并行化训练

    • 使用 SubprocVecEnv 实现多进程并行化,显著提高训练效率。

  • 状态归一化

    • 使用 VecNormalize 对观察值和奖励进行归一化。

  • 定期评估

    • 通过回调函数定期评估模型性能,并保存最佳模型。

  • wandb 集成

    • 训练过程中的指标和超参数会被记录到 wandb,方便跟踪和可视化。

  • 规则控制器

    • 提供了基于规则的控制策略测试功能,用于对比 RL 代理的性能。


6. 示例用法

以下是一个示例命令行,用于运行训练脚本:

bash
复制
python -m greenlight.experiments.train_agent \
    --env_id GreenLightHeatCO2 \
    --project my_project \
    --group my_group \
    --total_timesteps 1000000 \
    --n_eval_episodes 5 \
    --num_cpus 8 \
    --n_evals 20 \
    --save_model \
    --save_env

7. 总结

这段代码是一个完整的 RL 训练框架,适用于温室控制任务。它结合了 Stable-Baselines3 和 wandb,提供了高效的训练、评估和模型保存功能。通过模块化设计和丰富的参数配置,用户可以灵活地定制训练过程。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇