![深度强化学习实践(原书第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=1738780931-DUPXyFXplvPEOczkZ4pPajNKwf7sda44-0-834e175b26e25b16c89f633cfcc6124d)
我们先创建了环境并初始化了步数计数器和奖励累积器。最后一行,重置了环境,并获得第一个观察(我们不会用到它,因为智能体是随机的)。
![047-02](https://epubservercos.yuewen.com/10FB3F/20903674308617306/epubprivate/OEBPS/Images/047-02.jpg?sign=1738780931-z17Z9QSrpJkJ10JrHIbl50OFDtrK3pIi-0-ff61a3091f9676dd6d2bfadb3f3c707a)
在该循环中,我们从动作空间中随机采样一个动作,然后让环境执行并返回下一个观察(obs
)、reward
和done
标记。如果片段结束,停止循环并展示执行了多少步以及累积获取了多少奖励。如果启动这个例子,你将会看到类似下面的结果(因为智能体存在随机性,所以不会完全相同):
![047-03](https://epubservercos.yuewen.com/10FB3F/20903674308617306/epubprivate/OEBPS/Images/047-03.jpg?sign=1738780931-pifq39rBewLrC1PNzFx3o3d6Cm9egDhD-0-6136a3a2204b025fd65448b4875fa778)
与交互会话一样,该警告与代码无关,是Gym内部给出的。随机智能体在木棒落地、片段结束之前,平均会执行12~15步。大部分Gym环境有一个“奖励边界”,它是智能体在100个连续片段中,为“解决”环境而应该得到的平均奖励。对于CartPole来说,这个边界是195,这意味着,平均而言,智能体必须将木棒保持195个时间步长或更多。从这个角度来看,随机智能体貌似表现得很差。但是,不要失望,我们才刚刚起步,很快你就能解决CartPole以及其他许多有趣且富有挑战的环境了。