上QQ阅读APP看书,第一时间看更新
2.4 随机CartPole智能体
尽管这个环境比2.1节那个例子的环境复杂很多,但是智能体的代码却更短了。这就是重用性、抽象性以及第三方库的强大力量!
代码(见Chapter02/02_cartpole_random.py
文件)如下:
我们先创建了环境并初始化了步数计数器和奖励累积器。最后一行,重置了环境,并获得第一个观察(我们不会用到它,因为智能体是随机的)。
在该循环中,我们从动作空间中随机采样一个动作,然后让环境执行并返回下一个观察(obs
)、reward
和done
标记。如果片段结束,停止循环并展示执行了多少步以及累积获取了多少奖励。如果启动这个例子,你将会看到类似下面的结果(因为智能体存在随机性,所以不会完全相同):
与交互会话一样,该警告与代码无关,是Gym内部给出的。随机智能体在木棒落地、片段结束之前,平均会执行12~15步。大部分Gym环境有一个“奖励边界”,它是智能体在100个连续片段中,为“解决”环境而应该得到的平均奖励。对于CartPole来说,这个边界是195,这意味着,平均而言,智能体必须将木棒保持195个时间步长或更多。从这个角度来看,随机智能体貌似表现得很差。但是,不要失望,我们才刚刚起步,很快你就能解决CartPole以及其他许多有趣且富有挑战的环境了。