移动机器人路径优化:基于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.

二、Q-learning算法求解移动机器人路径优化

基于Q-Learning算法机器人路径规划MATLAB

部分代码:提供5个参考地图,地图数值可以修改,最大训练次数等次数即可自己修改。

close all
clear
clc
global maze2D;
global tempMaze2D;
NUM_ITERATIONS =30; % 最大训练次数(可以修改)
DISPLAY_FLAG = 0; % 是否显示(1 显示; 0 不显示)注意:设置为0运行速度更快
CurrentDirection = 1; % 当前机器人的朝向(1-4具体指向如下)
% 1 - means robot facing up
% 2 - means robot facing left
% 3 - means robot facing right
% 4 - means robot facing down
maze2D=xlsread('10x10.xlsx');%%导入地图(提供5个地图,可以修改) maze2D中 0代表障碍物 50代表通道 70代表起点 100代表终点
[startX,startY]=find(maze2D==70);%获取起点
[goalX,goalY] = find(maze2D==100);%获取终点

部分结果:

(1)6*6的地图结果:地图中绿色为通道,蓝色为障碍物,黑线为得到的路径,起始点均标注。

机器人最终路径:

   1   1

   2   1

   2   2

   2   3

   2   4

   3   4

   4   4

   4   3

   5   3

   6   3

   6   4

   6   5

   6   6

机器人最终路径长度为 12

机器人在最终路径下的转向及移动次数为 23

(2)7*7的地图结果:地图中绿色为通道,蓝色为障碍物,黑线为得到的路径,起始点均标注。

机器人最终路径:

   3   2

   2   2

   2   3

   2   4

   3   4

   4   4

   5   4

   6   4

   6   5

   6   6

   7   6

机器人最终路径长度为 10

机器人在最终路径下的转向及移动次数为 20

(3)8*8的地图结果:地图中绿色为通道,蓝色为障碍物,黑线为得到的路径,起始点均标注。

机器人最终路径:

   2   1

   2   2

   2   3

   2   4

   3   4

   4   4

   5   4

   6   4

   7   4

   8   4

   8   5

   8   6

   8   7

   8   8

机器人最终路径长度为 13

机器人在最终路径下的转向及移动次数为 20

(4)9*9的地图结果:地图中绿色为通道,蓝色为障碍物,黑线为得到的路径,起始点均标注。

机器人最终路径:

   2   2

   2   3

   2   4

   3   4

   4   4

   4   5

   4   6

   4   7

   4   8

   5   8

   6   8

   6   7

   6   6

   7   6

   8   6

   8   7

   9   7

   9   8

   9   9

   8   9

机器人最终路径长度为 19

机器人在最终路径下的转向及移动次数为 39

(5)10*10的地图结果:地图中绿色为可行通道,蓝色为障碍物,黑线为得到的路径,起始点均标注。

机器人最终路径:

   1   1

   2   1

   2   2

   2   3

   2   4

   2   5

   2   6

   2   7

   2   8

   3   8

   4   8

   4   9

   4  10

   5  10

   6  10

   7  10

   8  10

   9  10

  10  10

机器人最终路径长度为 18

机器人在最终路径下的转向及移动次数为 28

三、参考代码


http://www.niftyadmin.cn/n/456209.html

相关文章

优秀的测试用例是如何设计的?

这篇文章我们主要聊一下测试工程师最通用的也是最根本的技能,测试用例的设计能力。 测试用例 测试用例是通过使用在测试计划中确定的测试技术,对于已确定的测试条件进行逐步推敲,精炼而设计出来的重点说明如何具体操作产生何种结果的文档。…

正确的认识泥石流以及做好泥石流的防范

泥石流是山区沟谷中由暴雨、冰雪融水或地下含水层的渗入所形成的携带大量泥沙、石块等固体物质的特殊洪流,具有流量大、历时短、破坏力强等特征,泥石流携带的泥沙、石块等可高达数十米,并从山坡上倾泻而下,往往会形成一个“堰塞湖…

E. Tracking Segments - 二分+前缀和

分析&#xff1a; 记录所有区间和给定的每一次的询问&#xff0c;二分询问的最小满足条件&#xff0c;可以通过前缀和来计算区间内有几个1。 代码&#xff1a; #include <bits/stdc.h>#define x first #define y secondusing namespace std;typedef long long ll; type…

Python学习—装饰器的力量

Python学习—装饰器的力量 作为许多语言都存在的高级语法之一&#xff0c;装饰器是你必须掌握的知识点。 Python的装饰器&#xff08;Decorator&#xff09;允许你扩展和修改可调用对象&#xff08;函数、方法和类&#xff09;的行为&#xff0c;而无需永久修改可调用的对象本身…

手机app测试杂谈

手机上的 app 分为基于 HTML5 的 app(类似于 pc 上的 b/S 应用)和本地 app(类似于 C/S 结构)。 所以测试上我们也可以充分吸收 web 的 b/s 和 c/s 测试经验。但是不同于 pc 上的应用 测试&#xff0c;手机上的测试有其独特性 测试前的思考:我们这个产品主要是做什么的?为什么我…

【C++篇】初识C++

友情链接&#xff1a;C/C系列系统学习目录 知识点内容正确性以C Primer&#xff08;中文版第五版&#xff09;、C Primer Plus&#xff08;中文版第六版&#xff09;为标准&#xff0c;同时参考其它各类书籍、优质文章等&#xff0c;总结归纳出个人认为较有逻辑的整体框架&…

Hadoop3的高可用搭建

1. 准备工作 前期准备工作包括了 CenOS 7虚拟化安装与配置&#xff0c; Java虚拟机的安装&#xff0c; Hadoop相关部署包的下载&#xff0c; Hadoop集群所需基础环境的配置。 第一点CenOS 7虚拟化安装与配置和第二点Java虚拟机的安装&#xff1a; 需要我们参考第一章&…

知道了,去卷后端 →「Nest.js 入门及实践」:)

为什么学习 Nest &#xff1f; 前端已 &#x1f648;&#xff0c;去卷后端 &#x1f412; → 广度和深度的问题&#xff0c;不可代替性仅前端开发的应用没有记忆&#xff0c;不能互联 &#x1f914; → 学习后端&#xff0c;为应用赋能同为 JS 语言&#xff0c;学习成本较小&a…