强化学习路径优化:基于Q-learning算法的机器人路径优化(MATLAB)

news2024/9/22 11:39:02

一、强化学习之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算法求解机器人路径优化

部分代码:提供参考地图,地图数值可以修改(地图中0代表障碍物,50代表通道 ,70代表起点 ,100代表终点),最大训练次数等参数可根据自己需要修改。

close all
clear
clc
global maze2D;
global tempMaze2D;
NUM_ITERATIONS =700; % 最大训练次数(可以修改)
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
maze2D=xlsread('10x10.xlsx');%%导入地图(提供5个地图,可以修改) maze2D中 0代表障碍物 50代表通道 70代表起点 100代表终点
[startX,startY]=find(maze2D==70);%获取起点
[goalX,goalY] = find(maze2D==100);%获取终点
orgMaze2D = maze2D;
tempMaze2D = orgMaze2D;
CorlorStr='jet';

地图中绿色为通道,蓝色为障碍物,红线为得到的路径,起始点均标注。

(1)第一次结果

机器人最终路径:

  49   1

  48   1

  47   1

  47   2

  47   3

  48   3

  48   4

  48   5

  48   6

  48   7

  48   8

  47   8

  47   9

  47  10

  46  10

  45  10

  45  11

  45  12

  44  12

  43  12

  42  12

  42  13

  42  14

  42  15

  42  16

  42  17

  42  18

  42  19

  41  19

  41  20

  41  21

  41  22

  40  22

  40  23

  40  24

  40  25

  39  25

  38  25

  37  25

  36  25

  35  25

  34  25

  34  24

  33  24

  32  24

  31  24

  30  24

  30  25

  29  25

  28  25

  28  24

  27  24

  26  24

  25  24

  24  24

  24  25

  24  26

  24  27

  23  27

  22  27

  21  27

  21  28

  21  29

  21  30

  22  30

  22  31

  22  32

  22  33

  22  34

  21  34

  21  35

  21  36

  20  36

  19  36

  18  36

  17  36

  16  36

  15  36

  15  37

  15  38

  14  38

  14  39

  14  40

  14  41

  13  41

  12  41

  11  41

  10  41

   9  41

   8  41

   8  40

   7  40

   6  40

   5  40

   4  40

   4  41

   4  42

   4  43

   3  43

   2  43

   1  43

   1  44

   1  45

   1  46

   1  47

   2  47

   2  48

   1  48

机器人最终路径长度为 107

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

(2)第二次结果

机器人最终路径:

  49   1

  48   1

  47   1

  47   2

  46   2

  45   2

  44   2

  44   3

  44   4

  43   4

  42   4

  42   5

  42   6

  42   7

  42   8

  42   9

  42  10

  41  10

  41  11

  41  12

  42  12

  42  13

  42  14

  42  15

  42  16

  42  17

  42  18

  42  19

  41  19

  41  20

  41  21

  41  22

  40  22

  40  23

  40  24

  40  25

  39  25

  38  25

  37  25

  36  25

  35  25

  34  25

  34  24

  33  24

  32  24

  31  24

  30  24

  30  25

  29  25

  28  25

  28  24

  27  24

  26  24

  25  24

  24  24

  24  25

  24  26

  24  27

  23  27

  22  27

  21  27

  21  28

  21  29

  21  30

  22  30

  22  31

  22  32

  22  33

  22  34

  21  34

  21  35

  21  36

  20  36

  19  36

  19  37

  18  37

  18  38

  17  38

  16  38

  15  38

  14  38

  14  39

  14  40

  14  41

  13  41

  12  41

  11  41

  10  41

   9  41

   8  41

   8  40

   7  40

   6  40

   5  40

   4  40

   4  41

   4  42

   4  43

   3  43

   2  43

   1  43

   1  44

   1  45

   1  46

   1  47

   1  48

机器人最终路径长度为 105

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

(3)第三次结果

机器人最终路径:

  49   1

  48   1

  47   1

  47   2

  47   3

  48   3

  48   4

  48   5

  48   6

  48   7

  48   8

  47   8

  47   9

  47  10

  46  10

  45  10

  45  11

  44  11

  44  12

  43  12

  42  12

  42  13

  42  14

  42  15

  42  16

  42  17

  42  18

  42  19

  41  19

  41  20

  41  21

  41  22

  40  22

  40  23

  40  24

  40  25

  39  25

  38  25

  37  25

  36  25

  35  25

  34  25

  34  24

  33  24

  32  24

  31  24

  30  24

  30  25

  29  25

  28  25

  28  24

  27  24

  26  24

  25  24

  24  24

  24  25

  24  26

  24  27

  23  27

  22  27

  21  27

  21  28

  21  29

  21  30

  22  30

  22  31

  22  32

  22  33

  22  34

  21  34

  21  35

  21  36

  20  36

  19  36

  19  37

  18  37

  18  38

  17  38

  16  38

  15  38

  14  38

  14  39

  14  40

  14  41

  13  41

  12  41

  11  41

  10  41

   9  41

   8  41

   8  40

   7  40

   6  40

   5  40

   4  40

   4  41

   4  42

   4  43

   3  43

   2  43

   1  43

   1  44

   1  45

   1  46

   2  46

   2  47

   1  47

   1  48

机器人最终路径长度为 107

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

三、完整MATLAB代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/713989.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

打造自己的分布式MinIO对象存储

MinIO是一个对象存储解决方案,它提供了一个与Amazon Web Services S3兼容的API,并支持所有核心S3特性。MinIO旨在部署在任何地方——公共云或私有云、裸机基础架构、协调环境和边缘基础架构。 分布式MinIO如何工作 Server Pool由多个Minio服务节点与其附…

OPNET Modeler 怎么修改背景颜色

OPNET Modeler 软件中除了顶层的网络模型,节点模型和进程模型中的默认背景色都是灰色的。 节点模型背景颜色如下图所示。 进程模型背景颜色如下图所示。 使用时间长了发现这个灰色背景对眼睛保护还真不错,而且在这种灰色背景下,你添加包流线…

高压线路零序电流方向保护程序逻辑原理(四)

2.全相循环程序逻辑框图 全相循环程序逻辑简图如图3-18所示。程序入口首先检测标志位UQDB1,在采样中断服务程序中采用3U。突变量来区分接地故障和TA断线,接地故障时Δ3U。大于定值,置标志位UQDB1,这是11型…

web标签的使用

一、iframe标签的使用 iframe参数说明 实例&#xff1a; <body><iframe width"400" height"400" name"abc"></iframe><br /><ul><a href"01.table.html" target"abc">01.table.html&l…

使用docker安装mysql主从集群

1.安装MySQL主容器 1.1首先&#xff0c;使用以下命令创建MySQL主容器&#xff1a; sudo docker run --name mysql-master -p 3306:3306 -e MYSQL_ROOT_PASSWORD123456 -d mysql:latest 在这里&#xff0c;使用了Docker官方提供的MySQL镜像&#xff0c;并且使用了MySQL的默认3…

浅谈自动化测试框架开发,有你们不会知道的吗?

在自动化测试项目中&#xff0c;为了实现更多功能&#xff0c;我们需要引入不同的库、框架。 首先&#xff0c;你需要将常用的这些库、框架都装上。 pip install requests pip install selenium pip install appium pip install pytest pip install pytest-rerunfailures pip …

以中非经贸连线,看星沙如何练就一流营商环境

不知不觉&#xff0c;“一带一路”倡议提出已有十年&#xff0c;回望过去十年间&#xff0c;在“一带一路”倡议推动下&#xff0c;中国与各国合作共识不断凝聚&#xff0c;国际感召力持续增强&#xff0c;共建“一带一路”的朋友圈持续扩大&#xff0c;遍布亚、欧、非等五大洲…

往数据库插入数据时出现了多条重复数据

业务场景 钉钉端发起审批流程后&#xff0c;会回调开发者后台的callback接口&#xff0c;然后callback接口逻辑处理时会对一些数据做入库处理&#xff0c;但是突然发现数据库中出现了很多重复的数据 问题发现 业务代码进行断点&#xff0c;发现并无异常&#xff0c;就是一条…

探索思维导图:提升思维能力与效率的利器

思维导图作为一种强大的思考工具&#xff0c;已经被广泛应用于各个领域&#xff0c;从学习、工作到创意思维和项目管理。 本文将为您介绍思维导图的基本概念、使用方法以及它对思维能力和效率提升的价值。通过学习和掌握思维导图&#xff0c;您将能够更系统地组织和表达您的思…

scss中写3元运算

为真选第1个参数&#xff0c;为假选第2个参数 前端基础——sass的使用_sass 三元运算_ccopcx的博客-CSDN博客

LabVIEW进行临床肝透析试验

LabVIEW进行临床肝透析试验 慢性肾衰竭患者可以在透析或肾移植的帮助下大大延长其预期寿命。肝病患者需要与透析相当的治疗作为肝移植的替代方案。肾透析可清除患者血液中的水基毒素&#xff0c;肝脏透析需要消除与蛋白质相关的毒素。 为了降低肝病患者的高死亡率&#xff0c…

JNPF可视化平台的搭建及使用

目录 一、前言 二、可视化平台介绍 三、搭建可视化平台 【表单设计】 【报表设计】 【流程设计】 【代码生成器】 四、使用可视化平台 前后端分离&#xff1a; 多数据源&#xff1a; 预置功能&#xff1a; 私有化部署&#xff1a; 五、总结 一、前言 可视化低代码平台是一种快速…

项目打包exe文件

1。先准备exe4j VM Parameters后面要写上 -Dfile.encodingutf-8 不是很重要 因为是springboot项目在打包成exe的时候会出现不能运行的问题 所以在Main class from Class Path这里填&#xff08;org.springframework.boot.loader.JarLauncher&#xff09; 这样打包就好了

Android View 事件派发流程

原文链接 Android View 事件派发流程 自从乔帮主横空出世推出了iPhone以来&#xff0c;触控式的操作便成了21世纪智能设备的标准输入方式。对于同是智能操作系统的Android来说&#xff0c;也不例外。事件&#xff0c;特别是触控事件对于移动应用程序开发来说是一个非常重要的&…

Docker容器中应用部署

Docker应用部署 在Docker容器中部署MySQL&#xff0c;并通过外部的mysql客户端操作MySQL Server 一、Mysql部署 端口映射 容器内的网络服务和外部机器不能直接通信外部机器和宿主机可以通信宿主机和容器可以直接通信当容器中的网络服务需要被外部访问的时候&#xff0c;可以把…

语音识别模型whisper的参数说明

一、whisper简介&#xff1a; Whisper是一种通用的语音识别模型。它是在各种音频的大型数据集上训练的&#xff0c;也是一个多任务模型&#xff0c;可以执行多语言语音识别、语音翻译和语言识别。 二、whisper的参数 1、-h, --help 查看whisper的参数 2、--model {tiny.en…

分布式锁及实现方式

一、背景 什么是锁&#xff1f; 在单进程的系统中&#xff0c;当存在多个线程可以同时改变某个变量&#xff08;可变共享变量&#xff09;时&#xff0c;就需要对变量或代码块做同步&#xff0c;使其在修改这种变量时能够线性执行消除并发修改变量。而同步的本质是通过锁来实…

cobaltstrike使用

./teamserver 192.168.137.4 # 启动服务端 ./cobaltstrike # 启动客户端先创建一个监听Listener 1. exe 生成exe文件后&#xff0c;传给靶机&#xff0c;让其执行 2. powershell 在靶机中执行下面这段代码即可&#xff0c;就是远程恶意文件加载 powershell.exe -nop -w hi…

flask +vue3 cas 单点登录(sso)

最近在研究前端vue3ts 后端使用flask 搭建的系统涉及到单点登录问题&#xff0c;这里进行一次总结。 关于cas 单点登录的逻辑&#xff0c;网上介绍的很详细&#xff0c;我这里就说说&#xff0c;我所理解的单点登录&#xff1a; 主要是2种情形: 1.通过平台登录之后 调用子系…

[Qt 教程之Widgets模块] —— QFontComboBox 字体选择器

Qt系列教程总目录 文章目录 3.2.1 创建 QFontComboBox3.2.2 成员函数1. 书写系统2. 字体过滤器3. 当前字体4. 信号 该控件用于选择字体&#xff0c;在一些软件中经常有类似控件&#xff0c;如下&#xff1a; Microsoft Office&#xff1a; Photoshop&#xff1a; QFontComboB…