OpenAI gym cartpole-v0 理解观察和动作关系
OpenAI gym cartpole-v0 understanding observation and action relationship
我对建模一个系统感兴趣,该系统可以使用 openai gym 来制作一个不仅表现良好而且希望更好但不断改进以收敛于最佳动作的模型。
这就是我初始化 env
的方式
import gym
env = gym.make("CartPole-v0")
env.reset()
它returns一组信息; observation, reward, done and info, info always nothing so ignore that.
reward 我希望能表示所采取的行动是好是坏,但它总是 returns 奖励 1 直到游戏结束,它更像是你玩了多长时间的计数器.
动作可以被
采样
action = env.action_space.sample()
在本例中为 1 或 0。
对于那些不知道这个游戏是什么的人来说,这里的 link 和 objective 是通过向左或向右移动来平衡杆子,即提供 0 或 1 的输入。
观察是判断您的举动是好是坏的唯一关键方法。
obs, reward, done, info = env.step(action)
观察看起来像这样
array([-0.02861881, 0.02662095, -0.01234258, 0.03900408])
正如我之前所说,奖励始终为 1,因此根据观察结果,这不是一个好或坏动作的好指针,完成意味着游戏已经结束,但我也不知道这是否意味着你输了或也赢了
因为 objective 正如您从页面 link 看到的那样,平衡极点以获得平均超过 100 场比赛的 +195 的总奖励,这是成功的决定性指南游戏,不确定你是否已经成功然后完全平衡它或者只是持续了很长时间但是仍然,我已经遵循了一些例子和建议来生成很多随机游戏并且那些排名很好的人使用它们来训练模型。
但是这种方式感觉很粗略,并且无法从本质上意识到什么是失败的移动,即当您将杆倾斜超过 15 度或推车从中心移动 2.4 个单位时。
我已经能够从 运行 模拟中收集数据超过 200000 次,并且使用它还发现我有很多持续超过 80 步的游戏。 (目标是 195)所以使用这个我绘制了这些 games(< ipython 笔记本)有很多图表,因为我在每场比赛中单独绘制每个观察结果,所以图表太多无法放在这里希望然后可能会在最终观察和游戏结束之间看到 link,因为这些是随机采样的动作,所以它是随机移动。
我认为我看到的可能是第一次观察到如果它达到 0,游戏就会结束,但我也看到其他一些游戏以负值运行。即使基本上用图表我也无法理解数据。
我真正想知道的是,如果可能的话,观察中的每个值意味着什么,以及 0 表示左还是右,但当我能理解第一个时,后者会更容易推断出来。
你好像很久以前就问过这个问题了。然而,答案是观察是由小车的位置、杆子的角度及其导数给出的。中间的位置是0。所以负数在左,正数在右。
我对建模一个系统感兴趣,该系统可以使用 openai gym 来制作一个不仅表现良好而且希望更好但不断改进以收敛于最佳动作的模型。 这就是我初始化 env
的方式import gym
env = gym.make("CartPole-v0")
env.reset()
它returns一组信息; observation, reward, done and info, info always nothing so ignore that.
reward 我希望能表示所采取的行动是好是坏,但它总是 returns 奖励 1 直到游戏结束,它更像是你玩了多长时间的计数器.
动作可以被
采样action = env.action_space.sample()
在本例中为 1 或 0。 对于那些不知道这个游戏是什么的人来说,这里的 link 和 objective 是通过向左或向右移动来平衡杆子,即提供 0 或 1 的输入。
观察是判断您的举动是好是坏的唯一关键方法。
obs, reward, done, info = env.step(action)
观察看起来像这样
array([-0.02861881, 0.02662095, -0.01234258, 0.03900408])
正如我之前所说,奖励始终为 1,因此根据观察结果,这不是一个好或坏动作的好指针,完成意味着游戏已经结束,但我也不知道这是否意味着你输了或也赢了
因为 objective 正如您从页面 link 看到的那样,平衡极点以获得平均超过 100 场比赛的 +195 的总奖励,这是成功的决定性指南游戏,不确定你是否已经成功然后完全平衡它或者只是持续了很长时间但是仍然,我已经遵循了一些例子和建议来生成很多随机游戏并且那些排名很好的人使用它们来训练模型。
但是这种方式感觉很粗略,并且无法从本质上意识到什么是失败的移动,即当您将杆倾斜超过 15 度或推车从中心移动 2.4 个单位时。
我已经能够从 运行 模拟中收集数据超过 200000 次,并且使用它还发现我有很多持续超过 80 步的游戏。 (目标是 195)所以使用这个我绘制了这些 games(< ipython 笔记本)有很多图表,因为我在每场比赛中单独绘制每个观察结果,所以图表太多无法放在这里希望然后可能会在最终观察和游戏结束之间看到 link,因为这些是随机采样的动作,所以它是随机移动。
我认为我看到的可能是第一次观察到如果它达到 0,游戏就会结束,但我也看到其他一些游戏以负值运行。即使基本上用图表我也无法理解数据。
我真正想知道的是,如果可能的话,观察中的每个值意味着什么,以及 0 表示左还是右,但当我能理解第一个时,后者会更容易推断出来。
你好像很久以前就问过这个问题了。然而,答案是观察是由小车的位置、杆子的角度及其导数给出的。中间的位置是0。所以负数在左,正数在右。