python中使用马尔可夫决策过程(MDP)动态编程来解决最短路径强化学习问题

本文介绍了如何在马尔可夫决策过程中使用动态编程方法解决强化学习问题,特别是在Gridworld环境下。文章详细阐述了MDP的关键术语,如策略、动作值函数、转移概率和奖励函数,并展示了策略评估、策略迭代和价值迭代三种算法的实现。通过策略迭代和价值迭代,可以在Gridworld中找到最短路径的最优策略。
摘要由CSDN通过智能技术生成

在强化学习中,我们有兴趣确定一种最大化获取奖励的策略。最近我们被客户要求撰写关于MDP的研究报告,包括一些图形和统计输出。假设环境是马尔可夫决策过程  (MDP)的理想模型  ,我们可以应用动态编程方法来解决强化学习问题。

在这篇文章中,我介绍了可以在MDP上下文中使用的三种动态编程算法。为了使这些概念更容易理解,我在网格世界的上下文中实现了算法,这是演示强化学习的流行示例。

 

 相关视频:马尔可夫链原理可视化解释与R语言区制转换Markov regime switching实例

马尔可夫链原理可视化解释与R语言区制转换Markov regime switching实例

,时长07:25

相关视频

马尔可夫链蒙特卡罗方法MCMC原理与R语言实现

,时长08:47

在开始使用该应用程序之前,我想快速提供网格世界上后续工作所需的理论背景。

MDP的关键强化学习术语

以下各节解释了强化学习的关键术语,即:

  • 策略:  代理应在哪种状态下执行哪些操作
  • 状态值函数:  每个州关于未来奖励的期望值
  • 行动价值函数:  在特定状态下针对未来奖励执行特定行动的预期价值
  • 过渡概率:  从一种状态过渡到另一种状态的概率
  • 奖励功能:  代理在状态之间转换时获得的奖励

状态值函数

给定策略ππ,状态值函数Vπ(s)Vπ(s)将每个状态ss映射到代理在此状态下可获得的预期收益:

式中,stst表示时刻tt的状态。参数γ∈[0,1]γ∈[0,1]称为  折扣因子。它决定了未来奖励的影响。 

动作值函数

给定策略ππ,动作值函数Qπ(s,a)Qπ(s,a)确定在状态ss中执行动作aa时的预期奖励:

转移概率

在状态ss中执行动作aa可以将代理转换为状态s's'。通过Pass'Pss'a描述发生此过渡的可能性。

奖励函数

奖励函数Rass'Rss'a指定当代理通过动作aa从状态ss过渡到状态s's'时获得的奖励。

Gridworld中的三种基本MDP算法的演示

在本文中,您将学习如何在网格世界中为MDP应用三种算法:

  1. 策略评估:  给定策略ππ,与ππ相关的价值函数是什么?
  2. 策略迭代:  给定策略ππ,我们如何找到最佳策略π∗π∗?
  3. 值迭代:  如何从头开始找到最佳策略π∗π∗?

在gridworld中,代理的目标是到达网格中的指定位置。该代理可以向北,向东,向南或向西移动。这些动作由集合{N,E,S,W} {N,E,S,W}表示。请注意,代理始终知道状态(即其在网格中的位置)。

 网格中存在一些壁,代理无法通过这些壁。 

基本的Gridworld实施

我已经以面向对象的方式实现了gridworld。以下各节描述了我如何设计地图和策略实体的代码。

 Gridworld地图

为了实现gridworld,我首先要做的是代表地图的类。我定义了以下格式来表示各个网格单元:

  • # 指示墙壁
  • X 表明目标
  • 空白表示空块

依靠这些符号, 构造  了下面的map :

#################
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值