我对建模系统感兴趣,该系统可以使用openai健身房制作一个不仅性能出色,而且希望更好,而且不断改进以收敛于最佳动作的模型。 这就是我初始化环境的方式
import gym
env = gym.make("CartPole-v0")
env.reset()
它返回一组信息;观察,奖励,完成和信息,信息总是一无所有,因此请忽略它。
我希望奖励能表明所采取的行动是好是坏,但是在游戏结束之前,它总是返回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,所以根据观察结果和完成情况,好的或不好的指示并不是很好的指针,尽管我也无法判断这是否意味着你输了还是赢了,但游戏已经结束了
由于您要从页面链接中看到的目标是平衡两极,平均获得超过195场游戏的总奖励+195,这是成功游戏的决定性指南,因此不确定您是否成功然后完全平衡或持续很长时间,但仍然遵循,但我还是参考了一些示例并建议生成大量随机游戏,那些排名靠前的游戏可以使用它们来训练模型。
但是这种方法很粗略,并且本质上不知道什么是失败的举动,例如,当您将杆子倾斜超过15度或手推车从中心移出2.4个单位时。
我已经通过运行200000次模拟来收集数据,并且使用它还发现我有很多游戏可以持续80多个步骤。 (目标是195),因此我使用了这些games( 我认为我看到的也许是第一次观察到,如果它变为0,则游戏结束,但是我也看到其他一些游戏以负值运行。即使使用基本图形,我也无法理解数据。 我真正想知道的是,如果可能的话,观察值中的每个值表示什么,以及0表示左还是右,但是当我能理解第一个时,则更容易推断出后者。
答案 0 :(得分:1)
似乎您早已问过这个问题。但是,答案是,观察是通过手推车的位置,杆的角度及其导数给出的。中间位置为0。因此,负数在左边,正数在右边。