美文网首页
基于SARSA算法的自主寻路绕障

基于SARSA算法的自主寻路绕障

作者: 大喵与小喵 | 来源:发表于2017-01-04 01:58 被阅读0次

机器智能实验课自选实验设计说明

选题

在Secondlife上模拟基于SARSA算法的自主寻路绕障

算法介绍

强化学习算法可以分为在策略(on-policy)和离策略(off-policy)两类。sarsa算法属于on-policy算法。Q-learning属于off-policy算法。sarsa估计的是动作值函数(Q函数)而非状态值函数。也就是策略π下,任意状态s上所有可执行的动作a的动作值函数Qπ(s,a)。而Q-learning中,动作值函数更新则不同于选取动作时遵循的策略。最大的不同在于更新Q值的时候,直接使用了最大的Q(st+1,a)值——相当于采用了Q(st+1,a)值最大的动作,并且与当前执行的策略,即选取动作at时采用的策略无关。
sarsa动作值函数更新公式如下

由于动作值函数的每次更新都与



相关,因此算法被命名为sarsa算法。sarsa算法的完整流程图如下

算法最终得到所有状态-动作对的Q函数,并根据Q函数输出最优策略π

实验设计

实验模拟机器人的强化学习过程。在一个方形的房间中,机器人(球)需要绕开障碍物,找到通往目标物的路径。
设置状态函数。输入包括球与物体(感应到的第一个物体)的相对方向、距离,以及是否碰撞障碍物。
设置奖励函数。向目标物前进或成功躲避障碍物则给正值奖励,远离目标物或碰撞障碍物则给负值。
机器人动作包含八种前进方向,分别是相较当前方向转动0°、45°、90°、135°、180°、225°、270°、315°。
Discount factor 设定为0.9,给通过最少步骤到达目标物的动作更高的权重。
每一步的过程是:

  1. 判断当前状态
  2. 判断当前应采取的最优动作
  3. 计算奖励值
  4. 更新Q矩阵
  5. 采取前进动作

参考文献

脚本使用方法

  1. 创造一个球形prim并且设置sarsa脚本
  2. 创造一个离球较远的prim(最远96m),设置名字为"Goal"
  3. 随意摆放一些障碍物prims,且需要摆一个方形围栏,防止球走得太远
  4. 输入start,观察球的运动,当它到达目标物时会说出 I found the goal!
    ( 输入stop可以暂停,可用于球被卡住等情况,拖动球的位置后重新恢复学习; 输入unlearn可以清空学习记忆)

实验截图

相关文章

网友评论

      本文标题:基于SARSA算法的自主寻路绕障

      本文链接:https://www.haomeiwen.com/subject/apqovttx.html