【发布时间】:2018-11-15 05:10:05
【问题描述】:
我对建模一个系统感兴趣,该系统可以使用 openai gym 来制作一个模型,该模型不仅表现良好,而且希望更好,并且不断改进以收敛到最佳动作。 这就是我初始化环境的方式
import gym
env = gym.make("CartPole-v0")
env.reset()
它返回一组信息;观察,奖励,完成和信息,信息总是没什么,所以忽略它。
reward 我希望能表明所采取的行动是好是坏,但它总是返回 1 的奖励,直到游戏结束,它更像是你玩了多长时间的计数器。
动作可以被采样
action = env.action_space.sample()
在本例中为 1 或 0。 为了让不知道这个游戏是什么的人了解一下,这里是link,它的目标是通过向左或向右移动来平衡杆,即提供 0 或 1 的输入。
观察是判断你的举动是好是坏的唯一关键方法。
obs, reward, done, info = env.step(action)
观察看起来像这样
array([-0.02861881, 0.02662095, -0.01234258, 0.03900408])
正如我之前所说的,奖励总是 1,所以不是基于观察和完成的好或坏移动的好指针意味着游戏已经结束,尽管我也无法判断这是否意味着你也输了或赢了.
由于您从页面链接中看到的目标是平衡杆位,从而在 100 场比赛中平均获得 +195 的总奖励,这是成功比赛的决定性指南,因此不确定您是否成功然后完全平衡它或只是持续了很长时间,但我仍然遵循了一些示例和建议来生成许多随机游戏,而那些排名靠前的游戏使用它们来训练模型。
但是这种方式感觉很粗略,并且没有固有地意识到失败的移动是什么,即当您将杆倾斜超过 15 度或推车从中心移动 2.4 个单位时。
我已经能够从运行模拟中收集数据超过 200000 次,并且使用它还发现我有很多游戏持续超过 80 步。 (目标是 195)所以使用这个我绘制了这些games(
我认为我看到的可能是第一次观察到,如果它变为 0,则游戏结束,但我也看到其他一些游戏以负值运行。即使基本上使用图形,我也无法理解数据。
我真正想知道的是,如果可能的话,观察中的每个值意味着什么,以及 0 是指左还是右,但当我能够理解第一个值时,后者会更容易推断。
【问题讨论】:
标签: python openai-gym