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