工人

MuZeroCollector

class lzero.worker.muzero_collector.MuZeroCollector(collect_print_freq: int = 100, env: BaseEnvManager = None, policy: namedtuple = None, tb_logger: SummaryWriter = None, exp_name: str | None = 'default_experiment', instance_name: str | None = 'collector', policy_config: policy_config = None)[源代码]

基类:ISerialCollector

概述:

MCTS+RL 算法的剧集收集器,包括 MuZero、EfficientZero、Sampled EfficientZero、Gumbel MuZero。它使用串行机制管理这些算法的训练数据收集过程。

接口:

__init__resetreset_envreset_policy_reset_statenvstep__del___compute_prioritiespad_and_save_last_trajectorycollect_output_logclose

属性:

envstep

__init__(collect_print_freq: int = 100, env: BaseEnvManager = None, policy: namedtuple = None, tb_logger: SummaryWriter = None, exp_name: str | None = 'default_experiment', instance_name: str | None = 'collector', policy_config: policy_config = None) None[源代码]
概述:

使用给定的参数初始化 MuZeroCollector。

参数:
  • collect_print_freq (-) – 打印收集信息的频率(以训练步数为单位)。

  • env (-) – 向量化环境管理器的子类实例。

  • policy (-) – 集合模式策略API的namedtuple。

  • tb_logger (-) – TensorBoard 日志记录器实例。

  • exp_name (-) – 实验名称,用于记录和保存目的。

  • instance_name (-) – 此收集器实例的唯一标识符。

  • policy_config (-) – 策略的配置对象。

_abc_impl = <_abc._abc_data object>
_compute_priorities(i: int, pred_values_lst: List[float], search_values_lst: List[float]) ndarray[源代码]
概述:

根据预测和搜索值的差异计算转换的优先级。

参数:
  • i (-) – 计算优先级时列表中值的索引。

  • pred_values_lst (-) – 预测值列表。

  • search_values_lst (-) – 从MCTS获得的搜索值列表。

返回:

计算优先级的数组。

返回类型:

  • priorities (np.ndarray)

_output_log(train_iter: int) None[源代码]
概述:

记录收集器的数据并输出日志信息。

参数:

train_iter (-) – 当前训练迭代的次数,用于日志记录的上下文。

_reset_stat(env_id: int) None[源代码]
概述:

重置收集器的状态。包括重置 traj_buffer、obs_pool、policy_output_pool 和 env_info。根据 env_id 重置这些状态。你可以参考 base_serial_collector 以获取更多信息。

参数:

env_id (-) – 我们需要重置收集器状态的id

close() None[源代码]
概述:

关闭收集器。如果 end_flag 为 False,关闭环境,刷新 tb_logger 并关闭 tb_logger。

collect(n_episode: int | None = None, train_iter: int = 0, policy_kwargs: dict | None = None, collect_with_pure_policy: bool = False) List[Any][源代码]
概述:

使用 policy_kwargs 收集 n_episode 个数据集,并进行 train_iter 次迭代训练。

参数:
  • n_episode (-) – 要收集的集数。

  • train_iter (-) – 到目前为止完成的训练迭代次数。

  • policy_kwargs (-) – 策略的附加关键字参数。

  • collect_with_pure_policy (-) – 是否在不使用MCTS的情况下,仅通过纯策略收集数据。

返回:

以列表形式收集的数据。

返回类型:

  • return_data (List[Any])

config = {}
classmethod default_config() EasyDict
概述:

获取收集器的默认配置。我们将收集器的默认配置与其他默认配置以及用户的配置合并,以获得最终配置。

返回:

(EasyDict): collector’s default config

返回类型:

cfg

property envstep: int
概述:

获取收集的环境步数总数。

返回:

收集的环境步骤总数。

返回类型:

  • envstep (int)

pad_and_save_last_trajectory(i: int, last_game_segments: List[GameSegment], last_game_priorities: List[ndarray], game_segments: List[GameSegment], done: ndarray) None[源代码]
概述:

如果当前游戏结束,将游戏段保存到池中,必要时进行填充。

参数:
  • i (-) – 当前游戏段的索引。

  • last_game_segments (-) – 需要填充和保存的最后游戏段落列表。

  • last_game_priorities (-) – 最后游戏段落的优先级列表。

  • game_segments (-) – 当前游戏段落的列表。

  • done (-) – 指示每个游戏是否完成的数组。

备注

(last_game_segments[i].obs_segment[-4:][j] == game_segments[i].obs_segment[:4][j]).all() 为 True

reset(_policy: namedtuple | None = None, _env: BaseEnvManager | None = None) None[源代码]
概述:

使用给定的策略和/或环境重置收集器。如果 _env 为 None,则重置旧环境。如果 _env 不为 None,则用传入的新环境替换收集器中的旧环境并启动。如果 _policy 为 None,则重置旧策略。如果 _policy 不为 None,则用传入的新策略替换收集器中的旧策略。

参数:
  • policy (-) – 收集模式策略的api namedtuple

  • env (-) – 向量化子类的实例 env_manager(BaseEnvManager)

reset_env(_env: BaseEnvManager | None = None) None[源代码]
概述:

重置或替换此收集器管理的环境。如果 _env 为 None,则重置旧环境。如果 _env 不为 None,则用传入的新环境替换收集器中的旧环境并启动。

参数:

env (-) – 如果提供,则需要管理的新环境。

reset_policy(_policy: namedtuple | None = None) None[源代码]
概述:

重置或替换此收集器使用的策略。如果 _policy 为 None,则重置旧策略。如果 _policy 不为 None,则用传入的新策略替换收集器中的旧策略。

参数:

policy (-) – 收集模式策略的api namedtuple

MuZeroEvaluator

class lzero.worker.muzero_evaluator.MuZeroEvaluator(eval_freq: int = 1000, n_evaluator_episode: int = 3, stop_value: int = 1000000.0, env: BaseEnvManager = None, policy: namedtuple = None, tb_logger: SummaryWriter = None, exp_name: str | None = 'default_experiment', instance_name: str | None = 'evaluator', policy_config: policy_config = None)[源代码]

基类:ISerialEvaluator

概述:

用于 MCTS+RL 算法的 Evaluator 类,例如 MuZero、EfficientZero 和 Sampled EfficientZero。

接口:

__init__, reset, reset_policy, reset_env, close, should_eval, eval

属性:

环境, 策略

__init__(eval_freq: int = 1000, n_evaluator_episode: int = 3, stop_value: int = 1000000.0, env: BaseEnvManager = None, policy: namedtuple = None, tb_logger: SummaryWriter = None, exp_name: str | None = 'default_experiment', instance_name: str | None = 'evaluator', policy_config: policy_config = None) None[源代码]
概述:

使用配置设置初始化评估器,这些设置适用于各种组件,如日志助手和计时器。

参数:
  • eval_freq (-) – 评估频率,以训练步数为单位。

  • n_evaluator_episode (-) – 总共评估的集数。

  • stop_value (-) – 一个奖励阈值,超过该阈值则认为训练已收敛。

  • env (-) – 一个可选的 BaseEnvManager 子类的实例。

  • policy (-) – 一个可选的 API namedtuple,用于定义评估策略。

  • tb_logger (-) – 可选的 TensorBoard 记录器实例。

  • exp_name (-) – 实验名称,用于确定输出目录。

  • instance_name (-) – 此评估器实例的名称。

  • policy_config (-) – 游戏策略的可选配置。

_abc_impl = <_abc._abc_data object>
close() None[源代码]
概述:

关闭评估器、环境,如果适用的话,刷新并关闭 TensorBoard 记录器。

config = {'eval_freq': 50}
classmethod default_config() EasyDict[源代码]
概述:

通过将评估器特定的默认值与其他默认值以及任何用户提供的配置合并,检索评估器的默认配置。

返回:

评估器的默认配置。

返回类型:

  • cfg (EasyDict)

eval(save_ckpt_fn: Callable = None, train_iter: int = -1, envstep: int = -1, n_episode: int | None = None, return_trajectory: bool = False) Tuple[bool, float][源代码]
概述:

评估当前策略,如果达到历史最高奖励,则存储最佳策略。

参数:
  • save_ckpt_fn (-) – 当达到新的最佳奖励时,保存检查点的可选功能。

  • train_iter (-) – 当前的训练迭代次数。

  • envstep (-) – 当前环境步骤计数。

  • n_episode (-) – 可选的评估回合数;默认为评估器的设置。

  • return_trajectory (-) – 如果为True,返回在`episode_info`中评估的轨迹`game_segments`。

返回:

Indicates whether the training can be stopped based on the stop value. - episode_info (Dict[str, Any]): A dictionary containing information about the evaluation episodes.

返回类型:

  • stop_flag (bool)

reset(_policy: namedtuple | None = None, _env: BaseEnvManager | None = None) None[源代码]
概述:

重置评估器的策略和环境,可选择性地替换它们。如果 _env 为 None,则重置旧环境。如果 _env 不为 None,则用传入的新环境替换评估器中的旧环境并启动。如果 _policy 为 None,则重置旧策略。如果 _policy 不为 None,则用传入的新策略替换评估器中的旧策略。

参数:
  • _policy (-) – 一个可选的新策略 namedtuple 来替换现有的。

  • _env (-) – 一个可选的新环境实例,用于替换现有的实例。

reset_env(_env: BaseEnvManager | None = None) None[源代码]
概述:

重置评估器的环境,可以选择性地用新环境替换它。如果 _env 为 None,则重置旧环境。如果 _env 不为 None,则用传入的新环境替换评估器中的旧环境并启动。

参数:

_env (-) – 一个可选的新环境实例,用于替换现有的实例。

reset_policy(_policy: namedtuple | None = None) None[源代码]
概述:

重置评估器的策略,可以选择性地用新策略替换它。如果 _policy 为 None,则重置旧策略。如果 _policy 不为 None,则用传入的新策略替换评估器中的旧策略。

参数:

_policy (-) – 一个可选的新策略 namedtuple 来替换现有的。

should_eval(train_iter: int) bool[源代码]
概述:

根据训练迭代次数和评估频率,确定是否启动评估。

参数:

train_iter (-) – 当前的训练迭代次数。

返回:

True 如果应该启动评估,否则 False

返回类型:

  • (bool)