ray.rllib.algorithms.algorithm.Algorithm.add_policy#

Algorithm.add_policy(policy_id: str, policy_cls: Type[Policy] | None = None, policy: Policy | None = None, *, observation_space: gymnasium.spaces.Space | None = None, action_space: gymnasium.spaces.Space | None = None, config: AlgorithmConfig | dict | None = None, policy_state: Dict[str, numpy.array | jnp.ndarray | tf.Tensor | torch.Tensor | dict | tuple] | None = None, policy_mapping_fn: Callable[[Any, int | str], str] | None = None, policies_to_train: Collection[str] | Callable[[str, SampleBatch | MultiAgentBatch | Dict[str, Any] | None], bool] | None = None, add_to_learners: bool = True, add_to_env_runners: bool = True, add_to_eval_env_runners: bool = True, module_spec: RLModuleSpec | None = None, evaluation_workers=-1) Policy | None[源代码]#

向此算法添加新策略。

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

  • policy_cls – 用于构建新策略的 Policy 类。注意:必须提供 policy_clspolicy 中的一个。

  • policy – 要添加到此算法中的策略实例。如果不是 None,给定的策略对象将直接插入到算法的本地工作器中,并且该策略的克隆将在所有远程工作器以及所有评估工作器上创建。注意:只能提供 policy_clspolicy 中的一个。

  • observation_space – 要添加的策略的观察空间。如果为 None,则尝试从环境中推断此空间。

  • action_space – 要添加的策略的动作空间。如果为 None,则尝试从环境中推断此空间。

  • config – 要添加的策略的配置对象或覆盖。

  • policy_state – 可选的状态字典,用于在新的策略实例创建后立即应用。

  • policy_mapping_fn – 一个可选的(更新后的)策略映射函数,从此处开始使用。请注意,已经进行中的情节不会更改其映射,而是会继续使用旧的映射,直到该情节结束。

  • policies_to_train – 一个可选的策略ID列表,用于指定要训练的策略,或者是一个可调用的函数,该函数接受PolicyID和SampleBatchType并返回一个布尔值(是否可训练?)。如果为None,将保持现有的设置不变。不在列表中的策略ID(或可调用函数返回False的策略)将不会被更新。

  • add_to_learners – 是否将新的 RLModule 添加到 LearnerGroup(带有其 n 个 Learners)。此设置仅在混合 API 栈(带有 Learners,但没有 EnvRunners)上有效。

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

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

  • module_spec – 在新的 RLModule API 中,我们需要为要添加的新模块传入 module_spec。仅知道策略规范是不够的。

返回:

新添加的政策(添加到本地工作者的副本)。如果提供了 workers,则返回 None。