ray.rllib.algorithms.algorithm.Algorithm.add_module#

Algorithm.add_module(module_id: str, module_spec: RLModuleSpec, *, config_overrides: Dict | None = None, new_agent_to_module_mapping_fn: Callable[[Any, SingleAgentEpisode | MultiAgentEpisode], str] | None = None, new_should_module_be_updated: Sequence[str] | Callable[[str, MultiAgentBatch | None], bool] | None = None, add_to_learners: bool = True, add_to_env_runners: bool = True, add_to_eval_env_runners: bool = True) MultiRLModuleSpec[源代码]#

将一个新的(单智能体)RLModule 添加到此算法的 MARLModule 中。

请注意,一个算法最多有3个不同的组件可以添加新模块:学习者组(包含n个学习者)、环境运行者组(包含m个环境运行者加上一个本地运行者),以及(如果适用)评估环境运行者组(包含o个环境运行者加上一个本地运行者)。

参数:
  • module_id – 要添加到 MARLModule 的 RLModule 的 ID。重要提示:不得包含 Unix/Win 文件系统中也不允许的字符,例如:<>:"/|?*,或者 ID 末尾的点、空格或反斜杠。

  • module_spec – 用于构建新 RLModule 的 SingleAgentRLModuleSpec。

  • config_overridesAlgorithmConfig 应应用于新模块的覆盖,如果有的话。

  • new_agent_to_module_mapping_fn – 一个可选的(更新的)AgentID 到 ModuleID 的映射函数,从这里开始使用。请注意,已经进行中的剧集不会更改其映射,而是会继续使用旧的映射,直到剧集结束。

  • new_should_module_be_updated – 一个可选的 ModuleID 序列或一个接受 ModuleID 和 SampleBatchType 并返回 ModuleID 是否应更新的可调用对象。如果为 None,将保留现有的设置。不在列表中(或可调用对象返回 False)的 RLModule 将不会更新。

  • add_to_learners – 是否将新的 RLModule 添加到 LearnerGroup(及其 n 个 Learners)中。

  • add_to_env_runners – 是否将新的 RLModule 添加到 EnvRunnerGroup(包含其 m 个 EnvRunners 加上本地的那个)。

  • add_to_eval_env_runners – 是否将新的 RLModule 添加到 eval EnvRunnerGroup(包含其 o EnvRunners 加上本地的那个)。

返回:

新的 MultiAgentRLModuleSpec(在添加了 RLModule 之后)。