这段代码实现了一个基于 惩罚系数(Penalty Coefficients)扫描 的实验,用于测试不同惩罚系数对强化学习算法(如 PPO)在 GreenLight 温室环境 中性能的影响。以下是代码的详细解释:
1. 代码结构
代码主要由以下几个部分组成:
-
参数解析:
-
使用
ArgumentParser
解析命令行参数(如环境 ID、配置名称、惩罚系数范围等)。
-
-
参数加载:
-
加载环境参数(
env_base_params
、env_specific_params
、options
)和模型参数(model_params
)。
-
-
惩罚系数扫描:
-
在指定的惩罚系数范围内生成一组值。
-
对每个惩罚系数运行强化学习实验。
-
-
实验运行:
-
使用
runExperiment
函数运行强化学习实验,并记录结果。
-
2. 核心功能
2.1 参数解析
-
ArgumentParser
:-
解析命令行参数,包括环境 ID、配置名称、惩罚系数范围、实验设置等。
-
2.2 参数加载
-
load_env_params
:-
加载温室环境的基本参数、特定参数和选项。
-
返回
env_base_params
、env_specific_params
、options
和result_columns
。
-
-
load_model_params
:-
加载强化学习算法的参数。
-
返回
model_params
。
-
2.3 惩罚系数扫描
-
np.linspace
:-
在指定的惩罚系数范围内生成一组均匀分布的值。
-
例如,惩罚系数在
[start_range, end_range]
范围内生成n_values
个值。
-
2.4 实验运行
-
runExperiment
:-
运行强化学习实验。
-
支持多 CPU 并行训练、定期评估、结果记录和模型保存。
-
3. 代码的应用场景
-
惩罚系数调优:
-
用于测试不同惩罚系数对强化学习算法性能的影响。
-
通过惩罚系数扫描,找到最优的惩罚系数配置。
-
-
实验记录:
-
使用 W&B(Weights & Biases)记录实验过程和结果。
-
-
模型训练:
-
训练强化学习模型,并保存训练好的模型和归一化环境。
-
4. 关键参数
4.1 命令行参数
-
env_id
:-
温室环境的 ID(如
GreenLightHeatCO2
)。
-
-
env_config_name
:-
环境配置文件的名称(如
5min_four_controls
)。
-
-
project
:-
W&B 项目名称。
-
-
group
:-
W&B 运行分组。
-
-
algorithm
:-
强化学习算法(如
ppo
)。
-
-
start_range
和end_range
:-
惩罚系数扫描的起始值和结束值。
-
-
n_values
:-
惩罚系数扫描的取值数量。
-
-
n_evals
:-
训练过程中评估的次数。
-
-
num_cpus
:-
并行训练的 CPU 数量。
-
-
n_eval_episodes
:-
每次评估的 episode 数量。
-
-
total_timesteps
:-
总训练时间步长。
-
-
SEED
:-
随机种子,用于确保实验的可重复性。
-
4.2 环境参数
-
env_base_params
:-
温室环境的基本参数(如时间步长、状态数量、控制输入数量等)。
-
-
env_specific_params
:-
温室环境的特定参数(如作物状态、价格参数等)。
-
-
options
:-
温室环境的选项(如生长年份、起始日期等)。
-
4.3 模型参数
-
model_params
:-
强化学习算法的参数(如学习率、折扣因子等)。
-
4.4 惩罚系数
-
coefficients
:-
从
start_range
到end_range
生成的均匀分布的惩罚系数值。
-
5. 示例
运行实验
python penalty_coefficients_sweep.py --env_id GreenLightHeatCO2 --env_config_name 5min_four_controls --project penalty-coeffs --group co2 --algorithm ppo --start_range 0 --end_range 1e-3 --n_values 11 --n_evals 1 --num_cpus 12 --n_eval_episodes 60 --total_timesteps 2_000_000 --SEED 666
输出结果
-
W&B 实验跟踪:
-
在 W&B 平台上查看惩罚系数扫描实验的过程和结果。
-
-
模型保存:
-
保存训练好的模型和归一化环境。
-
-
实验结果:
-
记录每个惩罚系数的实验结果(如奖励、利润、违规次数等)。
-
6. 总结
这段代码实现了一个基于惩罚系数扫描的实验,用于测试不同惩罚系数对强化学习算法在 GreenLight 温室环境中性能的影响。通过加载环境参数、生成惩罚系数值、运行强化学习实验并记录结果,可以高效地进行惩罚系数调优和实验分析。代码支持 W&B 实验跟踪和多 CPU 并行训练,适用于温室控制策略优化和强化学习研究。