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,以及可能自定义的当前环境轨迹视图。注意,
obs
或input_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
。