ray.rllib.algorithms.algorithm_config.AlgorithmConfig.多智能体#
- AlgorithmConfig.multi_agent(*, policies: ~typing.Dict[str, PolicySpec] | ~typing.Collection[str] | None = <ray.rllib.utils.from_config._NotProvided object>, policy_map_capacity: int | None = <ray.rllib.utils.from_config._NotProvided object>, policy_mapping_fn: ~typing.Callable[[~typing.Any, OldEpisode], str] | None = <ray.rllib.utils.from_config._NotProvided object>, policies_to_train: ~typing.Collection[str] | ~typing.Callable[[str, SampleBatch | MultiAgentBatch | ~typing.Dict[str, ~typing.Any]], bool] | None = <ray.rllib.utils.from_config._NotProvided object>, policy_states_are_swappable: bool | None = <ray.rllib.utils.from_config._NotProvided object>, observation_fn: ~typing.Callable | None = <ray.rllib.utils.from_config._NotProvided object>, count_steps_by: str | None = <ray.rllib.utils.from_config._NotProvided object>, algorithm_config_overrides_per_module=-1, replay_mode=-1, policy_map_cache=-1) AlgorithmConfig [源代码]#
设置配置的多代理设置。
验证新的多智能体设置,并将所有内容转换为统一的多智能体设置格式。例如,
policies
列表或 ID 集合被正确转换为将这些 ID 映射到 PolicySpecs 的字典。- 参数:
policies – 从策略ID映射到4元组(policy_cls, obs_space, act_space, config)或PolicySpecs的MultiAgentPolicyConfigDict类型映射。这些元组或PolicySpecs定义了策略的类、策略的观察和动作空间,以及任何额外的配置。
policy_map_capacity – 在将最近最少使用的策略写入磁盘/S3之前,在“policy_map”中保留这些策略。
policy_mapping_fn – 函数映射代理ID到策略ID。签名是:
(agent_id, episode, worker, **kwargs) -> PolicyID
。policies_to_train – 确定应更新的策略。选项包括:- 无,用于训练所有策略。- 应训练的PolicyIDs的可迭代对象。- 一个可调用对象,接受PolicyID和一个SampleBatch或MultiAgentBatch,并返回一个布尔值(指示在给定特定批次的情况下,给定策略是否可训练)。这允许你仅在特定数据上训练策略(例如,在与特定对手对战时)。
policy_states_are_swappable – 此映射中的所有策略对象是否可以通过简单的
state = A.get_state(); B.set_state(state)
进行“交换”,其中A
和B
是此映射中的策略实例。如果你的所有策略都共享相同的神经网络架构和优化器类型,你应该将此设置为 True,以显著加快 PolicyMap 的缓存查找时间。如果为 True,PolicyMap 将不需要垃圾回收旧的、最近最少使用的策略,而是将它们保留在内存中,并简单地用最近访问的策略的状态覆盖它们的状态。例如,在基于联盟的训练设置中,你的映射中可能有数百个相同的策略(以各种组合相互对战),但它们都共享相同的状态结构(可以“交换”)。observation_fn – 可选函数,可用于增强本地代理的观察结果以包含更多状态。更多信息请参见 rllib/evaluation/observation_function.py。
count_steps_by – 在构建 MultiAgentBatch 时,使用哪个指标作为“批量大小”。支持的两个值是:“env_steps”:每次环境“步进”时计数(无论传递了多少多智能体动作/在前一步中返回了多少多智能体观察结果)。“agent_steps”:将每个单独的智能体步进计为一步。
- 返回:
这个更新的 AlgorithmConfig 对象。