发明名称 基于单链序贯回溯Q学的移动机器人路径规划算法
摘要 本发明提出了一种基于单链序贯回溯Q学的移动机器人路径规划算法,是使用栅格法表示二维环境,每块环境区域都对应一个离散的位置表示,移动机器人在某一时刻的状态就表示为机器人所在环境位置,移动机器人的每一步搜索,都以非确定性马尔科夫决策过程的Q-学迭代公式为基础,从单链的末端即当前状态的Q值开始逐步序贯回溯到单链的首端的Q值,直到到达目标状态,移动机器人循环往复地从初始状态开始寻找到达目标状态的路径,在搜索的每一步按照上述步骤,不断迭代和优化状态的Q值,直到收敛为止。本发明搜索最优路径需要的步数远少于经典Q-学算法和Q(λ)算法,学时间较短,学效率较高,特别是对于大环境,优势更加明显。
申请公布号 CN102799179B 申请公布日期 2014.12.31
申请号 CN201210234510.6 申请日期 2012.07.06
申请人 山东大学 发明人 马昕;孙国强;许亚;宋锐;荣学文;李贻斌
分类号 G05D1/02(2006.01)I 主分类号 G05D1/02(2006.01)I
代理机构 济南金迪知识产权代理有限公司 37219 代理人 宁钦亮
主权项 一种基于单链序贯回溯Q学习的移动机器人路径规划算法,其特征是:使用栅格法表示二维环境,每块环境区域都对应一个离散的位置表示,移动机器人在某一时刻的状态就表示为机器人所在环境位置,按照移动机器人顺序通过的环境位置依次排列,形成移动机器人的状态单链,移动机器人的每一步搜索,都以非确定性马尔科夫决策过程的Q‑学习迭代公式为基础,从单链的末端即当前状态的Q值开始逐步序贯回溯到单链的首端即初始位置的Q值,直到到达目标位置,移动机器人循环往复地从初始位置开始寻找到达目标位置的路径,在搜索的每一步按照上述步骤,不断迭代和优化状态的Q值,直到收敛为止;具体步骤如下:(1)建立状态单链:在每一t时刻,为移动机器人记忆矩阵M(t)增加一行M(t)←[s<sub>t</sub>,a<sub>t</sub>,r<sub>t</sub>,λ<sub>t</sub>],其中s<sub>t</sub>表示机器人的当前状态,当前状态就是机器人所在位置的坐标,s<sub>t</sub>=[x<sub>t</sub>,y<sub>t</sub>],a<sub>t</sub>表示在当前状态下执行的动作,包括向上、向下、向左、向右、静止五个动作,分别表示为[0,1],[0,‑1],[‑1,0],[1,0],[0,0],动作集合表示为A,当前状态s<sub>t</sub>与五个动作构成五个状态‑动作对,每一个状态‑动作对对应一个Q值Q(s,a),所有的Q(s,a)初始化为零,并根据步骤(2)中的迭代更新公式进行更新,根据贪婪策略选择动作a<sub>t</sub>,即选择满足<img file="FDA0000601599420000011.GIF" wi="569" he="133" />也就是选择与当前状态s<sub>t</sub>构成的五个状态‑动作对的Q值最大的动作作为a<sub>t</sub>,s<sub>t+1</sub>表示执行动作a<sub>t</sub>后下一时刻状态值,r<sub>t</sub>表示对动作a<sub>t</sub>奖励值,如果执行a<sub>t</sub>后的下一个坐标上有障碍物,则机器人下一时刻状态s<sub>t+1</sub>仍为s<sub>t</sub>的坐标值,奖励值r<sub>t</sub>=‑0.2;如果执行a<sub>t</sub>后的下一个坐标上没有障碍物,则s<sub>t+1</sub>为该坐标,奖励值r<sub>t</sub>=‑0.1;如果执行a<sub>t</sub>后的下一个坐标是目标位置即终点,则奖励值r<sub>t</sub>=1;λ<sub>t</sub>∈(0,1)表示学习率,只要λ<sub>t</sub>∈(0,1),经过有限次迭代,Q‑学习算法一定能够收敛于最优解;从初始时刻t=0到当前时刻t=n,所有的状态依序构成一个状态单链;(2)序贯回溯迭代:在t+1时刻,记忆矩阵M(t)增加一行新内容[s<sub>t+1</sub>,a<sub>t+1</sub>,r<sub>t+1</sub>,λ<sub>t+1</sub>],并根据记忆矩阵中存储的状态链,用Q‑学习迭代公式进行序贯回溯迭代更新:对于k=t,t‑1,t‑2,…,1,0,执行:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msub><mi>Q</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><msub><mi>s</mi><mi>k</mi></msub><mo>,</mo><msub><mi>a</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>&LeftArrow;</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msub><mi>&lambda;</mi><mi>k</mi></msub><mo>)</mo></mrow><msub><mi>Q</mi><mi>t</mi></msub><mrow><mo>(</mo><msub><mi>s</mi><mi>k</mi></msub><mo>,</mo><msub><mi>a</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>+</mo><msub><mi>&lambda;</mi><mi>k</mi></msub><mo>[</mo><msub><mi>r</mi><mi>k</mi></msub><mo>+</mo><mi>&gamma;</mi><munder><mi>max</mi><mrow><msub><mi>a</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>&Element;</mo><mi>A</mi></mrow></munder><msub><mi>Q</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><msub><mi>s</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>,</mo><msub><mi>a</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>]</mo><mo>,</mo></mrow>]]></math><img file="FDA0000601599420000012.GIF" wi="1357" he="203" /></maths>其中,γ是折扣因子,反映了后续状态‑动作对对应的Q值对状态单链中前面状态动作对Q值的影响,使得某一状态的动作决策能够直接受到其后续状态的影响,γ∈(0,1),值越大,后续状态对状态单链中前面的状态动作选择影响越大;通过序贯回溯迭代,在t+1时刻不仅更新了状态s<sub>t</sub>的Q值,也顺序地更新了状态单链中s<sub>t</sub>前面的状态s<sub>t‑1</sub>,s<sub>t‑2</sub>,……,s<sub>2</sub>,s<sub>1</sub>,s<sub>0</sub>的Q值,迭代过程如下:t=1时刻s<sub>0</sub>←s<sub>1</sub>t=2时刻s<sub>0</sub>←s<sub>1</sub>←s<sub>2</sub>t=3时刻s<sub>0</sub>←s<sub>1</sub>←s<sub>2</sub>←s<sub>3</sub>……t=n时刻s<sub>0</sub>←s<sub>1</sub>←s<sub>2</sub>←……s<sub>n‑1</sub>←s<sub>n</sub>,其中s<sub>0</sub>表示机器人的初始状态,s<sub>1</sub>表示t=1时机器人状态,……,s<sub>n</sub>表示t=n时机器人状态,箭头表示数据传递方向,所传递的数据包括奖励值r<sub>k</sub>和状态‑动作对的Q值;这样,t+n时刻的状态‑动作对(s<sub>t+n</sub>,a<sub>t+n</sub>)的Q值通过单链序贯回溯迭代更新t时刻机器人状态‑动作对的Q值,<maths num="0002" id="cmaths0002"><math><![CDATA[<mfenced open='' close=''><mtable><mtr><mtd><msub><mi>Q</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi></mrow></msub><mrow><mo>(</mo><msub><mi>s</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>,</mo><msub><mi>a</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>&LeftArrow;</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msub><mi>&lambda;</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><msub><mi>Q</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><msub><mi>s</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>,</mo><msub><mi>a</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>+</mo><msub><mi>&lambda;</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>{</mo><msub><mi>r</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>+</mo><mi>&gamma;</mi><munder><mi>max</mi><mrow><msub><mi>a</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi></mrow></msub><mo>&Element;</mo><mi>A</mi></mrow></munder><msub><mi>Q</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi></mrow></msub><mrow><mo>(</mo><msub><mi>s</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi></mrow></msub><mo>,</mo><msub><mi>a</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi></mrow></msub><mo>)</mo></mrow><mo>}</mo><mo>,</mo></mtd></mtr><mtr><mtd><msub><mi>Q</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi></mrow></msub><mrow><mo>(</mo><msub><mi>s</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi><mo>-</mo><mn>2</mn></mrow></msub><mo>,</mo><msub><mi>a</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi><mo>-</mo><mn>2</mn></mrow></msub><mo>)</mo></mrow><mo>&LeftArrow;</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msub><mi>&lambda;</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi><mo>-</mo><mn>2</mn></mrow></msub><mo>)</mo></mrow><msub><mi>Q</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><msub><mi>s</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi><mo>-</mo><mn>2</mn></mrow></msub><mo>,</mo><msub><mi>a</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi><mo>-</mo><mn>2</mn></mrow></msub><mo>)</mo></mrow><mo>+</mo><msub><mi>&lambda;</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi><mo>-</mo><mn>2</mn></mrow></msub><mo>{</mo><msub><mi>r</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi><mo>-</mo><mn>2</mn></mrow></msub><mo>+</mo><mi>&gamma;</mi><munder><mi>max</mi><mrow><msub><mi>a</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>&Element;</mo><mi>A</mi></mrow></munder><msub><mi>Q</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi></mrow></msub><mrow><mo>(</mo><msub><mi>s</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>,</mo><msub><mi>a</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>}</mo><mo>.</mo><mo>.</mo><mo>.</mo></mtd></mtr><mtr><mtd><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><msub><mi>Q</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi></mrow></msub><mrow><mo>(</mo><msub><mi>s</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>,</mo><msub><mi>a</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>&LeftArrow;</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msub><mi>&lambda;</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><msub><mi>Q</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><msub><mi>s</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>,</mo><msub><mi>a</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>+</mo><msub><mi>&lambda;</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>{</mo><msub><mi>r</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>+</mo><mi>&gamma;</mi><munder><mi>max</mi><mrow><msub><mi>a</mi><mrow><mi>t</mi><mo>+</mo><mn>2</mn></mrow></msub><mo>&Element;</mo><mi>A</mi></mrow></munder><msub><mi>Q</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi></mrow></msub><mrow><mo>(</mo><msub><mi>s</mi><mrow><mi>t</mi><mo>+</mo><mn>2</mn></mrow></msub><mo>,</mo><msub><mi>a</mi><mrow><mi>t</mi><mo>+</mo><mn>2</mn></mrow></msub><mo>)</mo></mrow><mo>}</mo><mo>,</mo></mtd></mtr><mtr><mtd><msub><mi>Q</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi></mrow></msub><mrow><mo>(</mo><msub><mi>s</mi><mi>t</mi></msub><mo>,</mo><msub><mi>a</mi><mi>t</mi></msub><mo>)</mo></mrow><mo>&LeftArrow;</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msub><mi>&lambda;</mi><mi>t</mi></msub><mo>)</mo></mrow><msub><mi>Q</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><msub><mi>s</mi><mi>t</mi></msub><mo>,</mo><msub><mi>a</mi><mi>t</mi></msub><mo>)</mo></mrow><mo>+</mo><msub><mi>&lambda;</mi><mi>t</mi></msub><mo>{</mo><msub><mi>r</mi><mi>t</mi></msub><mo>+</mo><mi>&gamma;</mi><munder><mi>max</mi><mrow><msub><mi>a</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>&Element;</mo><mi>A</mi></mrow></munder><msub><mi>Q</mi><mrow><mi>t</mi><mo>+</mo><mi>n</mi></mrow></msub><mrow><mo>(</mo><msub><mi>s</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>,</mo><msub><mi>a</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>}</mo><mo>;</mo></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0000601599420000021.GIF" wi="2021" he="751" /></maths>(3)寻找目标点:移动机器人在环境中每走一步,就会在记忆矩阵M(t)增加一行,并按照记忆矩阵,依次序贯迭代修正单链中前面所有状态‑动作对所对应的Q值,直到到达目标位置,并更新完单链中所有状态‑动作对对应的Q值,才会停止本次路径搜索;(4)机器人回到初始状态,在先前建立的Q值表基础上继续搜索,直到收敛,找到最优路径。
地址 250100 山东省济南市历城区山大南路27号
您可能感兴趣的专利