了解健身房环境

Understanding Gym Environment

这不是专门针对代码故障排除,而是帮助我了解 gym 环境。我正在继承 gym.Env 来创建我自己的环境,但我很难理解流程。看了文档,还是有问题和概念不清楚。

  1. 我还是有点懵,代理怎么知道要控制什么动作?我知道当你 __init__ 和 class 时,你必须区分你的动作是离散的还是 Box 的,但是代理如何知道他们控制的参数是什么?

  2. 在确定spaces.Box命令的下限和上限时,告诉代理可以采取多大的步长?例如,如果我的限制是 [-1,1],他们可以在该域内实现任何大小?

  3. 我看到limits可以[a,b], (-oo,a], [b,oo), (-oo,oo)为limits,如果需要我观察space,我就用np.inf命令?

如果有任何文档可以推荐,将不胜感激。

1.

代理不知道这个动作是做什么的;这就是强化学习的用武之地。澄清一下,无论何时使用环境的 step(action) 方法,您都应该验证该动作在环境中是否有效,以及 return 以该动作为条件的奖励和环境状态.

但是,如果您想在环境之外引用这些值,您可以这样做并控制代理可以传入的可用操作,如下所示:

import gym
env = gym.make('CartPole-v0')
actions = env.action_space.n #Number of discrete actions (2 for cartpole)

现在您可以创建一个输出形状为 2 的网络 - 使用 softmax 激活并采用最大概率来确定要采取的代理操作。

2.

空格用于内部环境验证。例如,observation_space = spaces.Box(low=-1.0, high=1.0, shape=(1,), dtype=np.float32) 表示代理将看到的任何变量的最大值为 1,最小值为 -1。因此,您还应该在 step() 方法中使用这些,以确保环境保持在这些范围内。

这一步对于使用您的环境的其他人来说非常重要,因为他们能够一眼就确定他们需要建立什么样的网络才能与您的环境交互。

3.

是的。 np.inf-np.inf