我了解了 Gymnasium(健身房)和 RL,但有一点我不明白,即健身房如何管理动作。
我读到健身房环境中的动作是整数,这意味着健身房上的“step”函数会传递一个整数:
observation_, reward, done, info = env.step(action)
我理解,在离散环境中,每个整数都可以代表一个特定的动作,例如“车杆”或“山地车”。然而,在连续环境中会发生什么?
在连续环境中,例如蚂蚁或人形机器人,有一系列操作可供选择,但这些操作也有一系列值,从我的角度来看,这意味着两个值。
例如,在ant环境中,有8种可能的动作,例如:动作 0,“施加在躯干和右后臀部之间的转子上的扭矩”的范围为 [-1.0, 1.0]。即代表动作的值和代表动作幅度的值。
那么,我的问题是:健身房如何知道某个动作的具体价值?换句话说,它不应该是两个值?一个用于选定的操作,另一个用于操作的大小?
您应该首先检查体育馆中的基本空间是如何制作的:基本空间
Ant的动作空间由Box组成,它“支持连续(和离散)向量或矩阵”。换句话说,Ant 的动作以 8 维向量的形式给出。您可以通过以下代码查看:
import gymnasium as gym
env = gym.make("Ant-v4")
action = env.action_space.sample()
print(action)
>> [-0.92111397 -0.7149495 -0.6188663 0.8434039 0.75418323 0.63292015
0.6150556 -0.3987422 ]
这个action
的“施加在躯干和右后臀部之间的转子上的扭矩”是
-0.92111397
,即
action[0]
。