• 机器人路径规划:基于Q-learning算法的移动机器人路径规划,可以自定义地图,修改起始点,提供MATLAB代码


    一、Q-learning算法

    Q-learning算法是强化学习算法中的一种,该算法主要包含:Agent、状态、动作、环境、回报和惩罚。Q-learning算法通过机器人与环境不断地交换信息,来实现自我学习。Q-learning算法中的Q表是机器人与环境交互后的结果,因此在Q-learning算法中更新Q表就是机器人与环境的交互过程。机器人在当前状态s(t)下,选择动作a,通过环境的作用,形成新的状态s(t+1),并产生回报或惩罚r(t+1),通过式(1)更新Q表后,若Q(s,a)值变小,则表明机器人处于当前位置时选择该动作不是最优的,当下次机器人再次处于该位置或状态时,机器人能够避免再次选择该动作action. 重复相同的步骤,机器人与环境之间不停地交互,就会获得到大量的数据,直至Q表收敛。QL算法使用得到的数据去修正自己的动作策略,然后继续同环境进行交互,进而获得新的数据并且使用该数据再次改良它的策略,在多次迭代后,Agent最终会获得最优动作。在一个时间步结束后,根据上个时间步的信息和产生的新信息更新Q表格,Q(s,a)更新方式如式(1):

    式中:st为当前状态;r(t+1)为状态st的及时回报;a为状态st的动作空间;α为学习速率,α∈[0,1];γ为折扣速率,γ∈[0,1]。当α=0时,表明机器人只向过去状态学习,当α=1时,表明机器人只能学习接收到的信息。当γ=1时,机器人可以学习未来所有的奖励,当γ=0时,机器人只能接受当前的及时回报。

    每个状态的最优动作通过式(2)产生:

    Q-learning算法的搜索方向为上下左右四个方向,如下图所示:

    Q-learning的训练过程如下:

    1. 初始化Q值函数,将所有状态-动作对的Q值初始化为0。

    2. 在每个时间步,根据当前状态选择一个动作。可以使用ε-greedy策略来平衡探索和利用。

    3. 执行选择的动作,并观察环境返回的奖励和下一个状态。

    4. 根据Q值函数的更新规则更新Q值。Q值的更新公式为:Q(s, a) = Q(s, a) + α * (r + γ * max(Q(s', a')) - Q(s, a)),其中α是学习率,γ是折扣因子,r是奖励,s是当前状态,a是选择的动作,s'是下一个状态,a'是在下一个状态下选择的动作。

    5. 重复步骤2-4,直到达到停止条件。

    Q-learning算法基本原理参考文献:

    [1]王付宇,张康,谢昊轩等.基于改进Q-learning算法的移动机器人路径优化[J].系统工程,2022,40(04):100-109.

    二、部分代码

    1. close all
    2. clear
    3. clc
    4. global maze2D;
    5. global tempMaze2D;
    6. NUM_ITERATIONS =500; % 最大训练次数(可以修改)
    7. DISPLAY_FLAG = 0; % 是否显示(1 显示; 0 不显示)注意:设置为0运行速度更快
    8. CurrentDirection = 4; % 当前机器人的朝向(1-4具体指向如下) 机器人只能上下左右移动,且每次只能移动一格,移动前需要判断是否转向
    9. % 1 - means robot facing up
    10. % 2 - means robot facing left
    11. % 3 - means robot facing right
    12. % 4 - means robot facing down
    13. %% 起始点 坐标
    14. startX=20;startY=1;
    15. goalX=1;goalY=20;
    16. %% 导入地图
    17. data1=load('data.txt');
    18. data1(find(data1==0))=50;
    19. data1(find(data1==1))=0;
    20. data1(startX,startY)=70;
    21. data1(goalX,goalY)=100;
    22. maze2D=data1;
    23. orgMaze2D = maze2D;
    24. tempMaze2D = orgMaze2D;
    25. CorlorStr='gray';

    三、部分结果

    (1)第一次运行结果

    白色栅格表示无障碍物,黑色栅格则表示有障碍物

    机器人最终路径:
        20     1
        19     1
        19     2
        18     2
        17     2
        17     3
        17     4
        17     5
        16     5
        15     5
        14     5
        13     5
        13     6
        12     6
        11     6
        10     6
        10     7
         9     7
         9     8
         9     9
         9    10
         8    10
         7    10
         7    11
         7    12
         6    12
         5    12
         4    12
         3    12
         3    13
         2    13
         1    13
         1    14
         1    15
         1    16
         1    17
         1    18
         1    19
         1    20

    机器人最终路径长度为 38
    机器人在最终路径下的转向及移动次数为 71

    (2)第二次运行结果

    白色栅格表示无障碍物,黑色栅格则表示有障碍物

    机器人最终路径:
        20     1
        19     1
        18     1
        18     2
        17     2
        17     3
        17     4
        17     5
        17     6
        16     6
        15     6
        15     7
        15     8
        15     9
        15    10
        14    10
        14    11
        14    12
        13    12
        12    12
        11    12
        10    12
         9    12
         9    13
         9    14
         9    15
         8    15
         8    16
         8    17
         8    18
         8    19
         7    19
         6    19
         5    19
         4    19
         4    20
         3    20
         2    20
         1    20

    机器人最终路径长度为 38
    机器人在最终路径下的转向及移动次数为 68

    四、完整MATLAB代码

    机器人路径规划:基于Q-learning算法的移动机器人路径规划的,可以自定义地图,修改起始点,提供MATLAB代码

  • 相关阅读:
    函数式编程
    教你复制大量文件,保存到多个文件夹中
    我的十年程序员生涯--考研失利,倒也还好
    嵌入式软件开发笔试面试
    21. 合并两个有序链表
    HTML5期末大作业dreamweaver作业静态HTML网页设计——甜点店(11页) 学生网页设计作品
    深度学习(19):nerf论文公式理解
    Flink使用AsyncDataStream异步处理数据
    ssl证书自动化快速部署和续费经验分享
    Unity探索地块通路设计分析 & 流程+代码具体实现
  • 原文地址:https://blog.csdn.net/2401_82411023/article/details/137740793