机器人路径规划:基于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-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)第一次运行结果 ![](https://file.jishuzhan.net/article/1779444997074980865/75a560d93076ffe38022d52ab7d1c2d0.webp) ### ![](https://file.jishuzhan.net/article/1779444997074980865/5d3552365fa92e6ce42beb67fd887265.webp) 机器人最终路径: 20 1 19 1 18 1 17 1 17 2 17 3 17 4 17 5 16 5 15 5 14 5 13 5 13 6 13 7 13 8 13 9 13 10 12 10 11 10 10 10 9 10 8 10 7 10 7 11 7 12 7 13 7 14 7 15 7 16 7 17 7 18 6 18 6 19 6 20 5 20 4 20 3 20 2 20 1 20 机器人最终路径长度为 38 机器人在最终路径下的转向及移动次数为 56 (2)第二次运行结果 ![](https://file.jishuzhan.net/article/1779444997074980865/7b490b6ba669c344ece1186993f3c3a1.webp) ### ![](https://file.jishuzhan.net/article/1779444997074980865/fe8c86940d1939920b8b6c1b8248533d.webp) 机器人最终路径: 20 1 19 1 19 2 18 2 17 2 17 3 17 4 17 5 16 5 15 5 15 6 14 6 14 7 13 7 13 8 13 9 13 10 13 11 12 11 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 3 19 2 19 1 19 1 20 机器人最终路径长度为 38 机器人在最终路径下的转向及移动次数为 75 ### 四、完整MATLAB代码 见下方名片 ![](https://file.jishuzhan.net/article/1779444997074980865/300ceedf2c66901db80e189f74d09e18.webp)

相关推荐
烁34713 分钟前
每日一题(小白)动态规划篇2
算法·动态规划
南玖yy44 分钟前
数据结构C语言练习(栈)
c语言·数据结构·算法
神马行空1 小时前
一文解读DeepSeek大模型在政府工作中具体的场景应用
人工智能·大模型·数字化转型·deepseek·政务应用
合合技术团队1 小时前
实测对比|法国 AI 独角兽公司发布的“最强 OCR”,实测效果如何?
大数据·人工智能·图像识别
阿镇吃橙子1 小时前
一些手写及业务场景处理问题汇总
前端·算法·面试
酱酱哥玩AI1 小时前
Trae编译器:实现多目标班翠鸟优化算法(IPKO)无人机路径规划仿真(Python版),完整代码
算法
蒹葭苍苍8731 小时前
LoRA、QLoRA微调与Lama Factory
人工智能·笔记
蹦蹦跳跳真可爱5891 小时前
Python----机器学习(基于PyTorch的线性回归)
人工智能·pytorch·python·机器学习·线性回归
MPCTHU1 小时前
二叉树、排序算法与结构图
数据结构·算法·排序算法
亓才孓1 小时前
[leetcode]树的操作
算法·leetcode·职场和发展