机器人路径规划:基于移动机器人路径规划的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.

二、部分代码

close all
clear
clc
global maze2D;
global tempMaze2D;
NUM_ITERATIONS =500; % 最大训练次数(可以修改)
DISPLAY_FLAG = 0; % 是否显示(1 显示; 0 不显示)注意:设置为0运行速度更快
CurrentDirection = 4; % 当前机器人的朝向(1-4具体指向如下) 机器人只能上下左右移动,且每次只能移动一格,移动前需要判断是否转向
% 1 - means robot facing up
% 2 - means robot facing left
% 3 - means robot facing right
% 4 - means robot facing down

%% 起始点 坐标
startX=20;startY=1;
goalX=1;goalY=20;
%% 导入地图
data1=load('data.txt');
data1(find(data1==0))=50;
data1(find(data1==1))=0;
data1(startX,startY)=70;
data1(goalX,goalY)=100;
maze2D=data1;
orgMaze2D = maze2D;
tempMaze2D = orgMaze2D;
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代码

见下方名片

相关推荐
杰说新技术1 分钟前
Meta AI最新推出的长视频语言理解多模态模型LongVU分享
人工智能·aigc
说私域4 分钟前
基于开源 AI 智能名片、S2B2C 商城小程序的用户获取成本优化分析
人工智能·小程序
东胜物联24 分钟前
探寻5G工业网关市场,5G工业网关品牌解析
人工智能·嵌入式硬件·5g
小刘|31 分钟前
《Java 实现希尔排序:原理剖析与代码详解》
java·算法·排序算法
皓74135 分钟前
服饰电商行业知识管理的创新实践与知识中台的重要性
大数据·人工智能·科技·数据分析·零售
jjyangyou35 分钟前
物联网核心安全系列——物联网安全需求
物联网·算法·安全·嵌入式·产品经理·硬件·产品设计
wangyue41 小时前
c# 深度模型入门
深度学习
van叶~1 小时前
算法妙妙屋-------1.递归的深邃回响:二叉树的奇妙剪枝
c++·算法
简简单单做算法1 小时前
基于Retinex算法的图像去雾matlab仿真
算法·matlab·图像去雾·retinex
川石课堂软件测试1 小时前
性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
运维·javascript·深度学习·jmeter·docker·容器·grafana