ray.rllib.algorithms.algorithm.Algorithm.compute_single_action#

Algorithm.compute_single_action(observation: numpy.array | jnp.ndarray | tf.Tensor | torch.Tensor | dict | tuple | None = None, state: List[numpy.array | jnp.ndarray | tf.Tensor | torch.Tensor | dict | tuple] | None = None, *, prev_action: numpy.array | jnp.ndarray | tf.Tensor | torch.Tensor | dict | tuple | None = None, prev_reward: float | None = None, info: dict | None = None, input_dict: SampleBatch | None = None, policy_id: str = 'default_policy', full_fetch: bool = False, explore: bool | None = None, timestep: int | None = None, episode: Episode | None = None, unsquash_action: bool | None = None, clip_action: bool | None = None, **kwargs) numpy.array | jnp.ndarray | tf.Tensor | torch.Tensor | dict | tuple | Tuple[numpy.array | jnp.ndarray | tf.Tensor | torch.Tensor | dict | tuple, List[numpy.array | jnp.ndarray | tf.Tensor | torch.Tensor], Dict[str, numpy.array | jnp.ndarray | tf.Tensor | torch.Tensor]][源代码]#

在本地工作者上为指定策略计算一个动作。

请注意,您也可以通过 self.get_policy(policy_id) 访问策略对象,并直接在其上调用 compute_single_action()。

参数:
  • observation – 来自环境的单个(非批处理)观察结果。

  • state – 所有 RNN 隐藏(单个,未批处理)状态张量的列表。

  • prev_action – 单个(非批处理)的前一个动作值。

  • prev_reward – 单个(非批处理)的先前奖励值。

  • info – 环境信息字典,如果有的话。

  • input_dict – 一个可选的 SampleBatch,它包含所有以下值:obs、state、prev_action 和 prev_reward,以及可能自定义的当前环境轨迹视图。注意,obsinput_dict 中必须有一个是非空的。

  • policy_id – 查询策略(仅适用于多代理)。默认值:”default_policy”。

  • full_fetch – 是否返回额外的动作获取结果。如果指定了 state,则此项始终设置为 True。

  • explore – 是否对动作应用探索。默认值:None -> 使用 self.config.explore。

  • timestep – 当前(采样)时间步。

  • episode – 这提供了访问所有内部事件状态的权限,这对于基于模型的算法或多智能体算法可能非常有用。

  • unsquash_action – 是否应根据环境/策略的动作空间对动作进行非扁平化处理?如果为 None,则使用 self.config.normalize_actions 的值。

  • clip_action – 动作是否应根据环境/策略的动作空间进行裁剪?如果为 None,则使用 self.config.clip_actions 的值。

关键字参数:

kwargs – 向前兼容占位符

返回:

如果 full_fetch=False,则计算的动作;或者如果 full_fetch=True 或我们有一个基于 RNN 的策略,则返回一个元组,包含 policy.compute_actions() 的完整输出。

抛出:

KeyError – 如果在此算法的本地工作器中找不到 policy_id