《强化学习:原理与Python实现 》 —2.4 案例:悬崖寻路

举报
华章计算机 发表于 2019/11/12 21:29:57 2019/11/12
【摘要】 本节书摘来自华章计算机《强化学习:原理与Python实现》 一书中第二章,第2.4.1节,作者肖智清。

2.4 案例:悬崖寻路

本节考虑Gym库中的悬崖寻路问题(CliffWalking-v0)。悬崖寻路问题是这样一种回合制问题:在一个的网格中,智能体最开始在左下角的网格,希望移动到右下角的网格,见图2-6。智能体每次可以在上、下、左、右这4个方向中移动一步,每移动一步会惩罚一个单位的奖励。但是,移动有以下限制。

智能体不能移出网格。如果智能体想执行某个动作移出网格,那么就让本步智能体不移动。但是这个操作依然会惩罚一个单位的奖励。

如果智能体将要到达最下一排网格(即开始网格和目标网格之间的10个网格),智能体会立即回到开始网格,并惩罚100个单位的奖励。这10个网格可被视为“悬崖”。

当智能体移动到终点时,回合结束,回合总奖励为各步奖励之。

image.png

图2-6 悬崖寻路问题示意图(其中36是起点,37~46是悬崖,47是终点)

2.4.1 实验环境使用

Gym库中的环境'CliffWalking-v0'实现了悬崖寻路的环境。代码清单2-3演示了如何导入这个环境并查看这个环境的基本信息。

代码清单2-3 导入'CliffWalking-v0'环境

image.png

这个环境是一个离散的Markov决策过程。在这个Markov决策过程中,每个状态是取自的int型数值(加上终止状态则为),表示当前智能体在图2-6中对应的位置上。动作是取自的int型数值:0表示向上,1表示向右,2表示向下,3表示向左。奖励取自,遇到悬崖为,否则为。

代码清单2-4给出了用给出的策略运行一个回合的代码。函数play_once() 有两个参数,一个是环境对象,另外一个是策略policy,它是np.array类型的实例。

代码清单2-4 运行一个回合

image.png

代码清单2-5给出了一个最优策略optimal_policy。最优策略是在开始处向上,接着一路向右,然后到最右边时向下。

代码清单2-5 最优策略

image.png

下面的代码用最优策略运行一个回合。采用最优策略,从开始网格到目标网格一共要移动13步,回合总奖励为。

total_reward = play_once(env, optimal_policy)

print('总奖励 = {}'.format(total_reward))


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。