强化学习路径优化:基于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算法求解机器人路径优化

部分代码:提供参考地图,地图数值可以修改(地图中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代码

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

综合实验---基于卷积神经网络的目标分类案例

文章目录 配置环境猫狗数据分类建模猫狗分类的实例基准模型猫狗分类的实例基准模型之数据增强问题回答 配置环境 ①首先打开 cmd,创建虚拟环境。 conda create -n tf1 python3.6如果报错:‘conda’ 不是内部或外部命令,也不是可运行的程序 或批处理文件…

C语言学习(三十五)---动态内存练习题与柔性数组

经过前面的内容,我们已经对动态内存的知识已经有了相当多了了解,今天我们再做几道有关动态内存的练习题,然后再介绍一下柔性数组,好了,话不多说,开整!!! 动态内存练习题…

【真题解析】系统集成项目管理工程师 2021 年上半年真题卷(案例分析)

本文为系统集成项目管理工程师考试(软考) 2021 年上半年真题(全国卷),包含答案与详细解析。考试共分为两科,成绩均 ≥45 即可通过考试: 综合知识(选择题 75 道,75分)案例分析&#x…

Pycharm使用Anoconda配置虚拟环境

目录 1.Anoconda的介绍 2.Anaconda的作用 3.Anaconda的安装 4.Anaconda的配置 4.1添加镜像源 4.2创建、使用并切换虚拟环境 5.pycharm的集成 1.Anoconda的介绍 Anaconda是一个可用于科学计算的 Python 发行版,可以便捷获取和管理包,同时对环境进行…

Docker 常用指令集合,更换镜像(Ubantu)

1.更换镜像 先进入root用户 cat /etc/docker/daemon.json 查看有没有镜像创建目录,创建并编辑damon,json文件 mkdir -p /etc/docker vim /etc/docker/daemon.json# 填写内容 {"registry-mirrors": ["https://h5rurp1p.mirror.aliyuncs.com"] } 重新启…

postgresql(一):使用psql导入数据库

使用psql导入数据库 1、概述2、具体问题3、总结 1、概述 大家好,我是欧阳方超。 听说postgresql越来越流行了?psql是一个功能强大的命令行工具,用于管理和操作PostgreSQL数据库。它提供了一个交互式环境,允许用户执行SQL查询、创…

PyTorch示例——ResNet34模型和Fruits图像数据

PyTorch示例——ResNet34模型和Fruits图像数据 前言导包数据探索查看数据集构建构建模型 ResNet34模型训练绘制训练曲线 前言 ResNet34模型,做图像分类数据使用水果图片数据集,下载见Kaggle Fruits Dataset (Images)Kaggle的Notebook示例见 PyTorch——…

部署 CNI网络组件

部署 flannel K8S 中 Pod 网络通信: ●Pod 内容器与容器之间的通信 在同一个 Pod 内的容器(Pod 内的容器是不会跨宿主机的)共享同一个网络命令空间, 相当于它们在同一台机器上一样,可以用 localhost 地址访问彼此的端…

requests---jsonpath在接口自动化中的应用

目录 前言 jsonpath 通过下标提取 通过jsonpath提取 jsonpath的其他用法 通过$获取属性值内容 通过【*】获取对应值 通过切片获取对应值 总结 前言 我们在做接口测试时,大多数返回的都是json属性,我们需要通过接口返回的json提取出来对应的值&am…

浏览器种输入一个url到显示页面全过程

原文合集地址如下,有需要的朋友可以关注 本文地址 合集地址 所谓的‘三颗树’ 在浏览器中,当解析和加载网页时,会形成三个重要的树结构:DOM树、CSSOM树和渲染树(Render Tree)。这些树结构在网页的渲染和…

基于SQLI的SQL字符型报错注入

基于SQLI的SQL字符型报错注入 一. 实验目的 理解数字型报错SQL注入漏洞点的定位方法,掌握利用手工方式完成一次完整SQL注入的过程,熟悉常见SQL注入命令的操作。 二. 实验环境 渗透主机:KALI平台 用户名: college 密码: 360College 目标网…

web安全php基础_php数据类型

PHP 数据类型 PHP 支持以下几种数据类型: String(字符串)Integer(整型)Float(浮点型)Boolean(布尔型)Array(数组)Object(对象)NULL&…

算法----Nim 游戏

题目 你和你的朋友,两个人一起玩 Nim 游戏: 桌子上有一堆石头。 你们轮流进行自己的回合, 你作为先手 。 每一回合,轮到的人拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。 假设你们每一步都是最优解。请编写一个函数&a…

Kubernetes 启动Pod的方法-Pod的调度算法-Pod间的通信-k8s的控制器-Pod资源控制-发布Service服务

目录 Pod 参考文档:Pod | Kubernetes Pod配置文件:simple-pod.yaml 对master进行如下操作 Pod的状态有: 参考文档:(70条消息) Pod生命周期中的状态解释_pod状态_闹玩儿扣眼珠子的博客-CSDN博客 进入Pod内的nginx容器&#…

Linux快速搭建Java环境

1. 安装JDK运行与调试 搭建Java环境 1. 安装JDK 打开命令行执行 sudo apt install default-jdk 有确定的选项直接y就行 安装拓展: 1 . 有时候vscode会自动弹出消息叫你安装拓展,直接点击全部安装就行了 2 . 未弹出或安装失败解决: 打开拓展搜索,把下面的,全部安装就行 这样就可…

Nginx(6)nginx的缓存集成

缓存集成 Nginx缓存集成缓存的概念Nginx的web缓存服务 缓存设置的相关指令Nginx缓存设置案例 Nginx缓存的清除Nginx设置资源不缓存 Nginx缓存集成 缓存的概念 缓存就是数据交换的缓冲区(称作Cache),当用户要获取数据的时候,会先从缓存中去查询获取数据…

TikTok将在10月份之前免除佣金并提供补贴!

TikTok 因其便捷的结账方式越来越吸引美容品牌,Elf Beauty Laura Mercier、BareMinerals KimChi Chic Beauty 和 Skin Gym 等美容品牌已经接受了社交网络的结账功能。在这种情况下,该工具允许消费者将多个品牌的产品添加到应用内购物车中。 在巴西&…

动态路由,微信小程序绑定

■登录成功之后添加动态路由 ●登录的时候会获取到它的菜单配置■动态路由 | Vue Router <view wx:for"{{list}}">{{index}}--- {{item.name}} </view><view wx:for"{{list}}" wx:for-item "ttt" wx:for-index"num"&…

(02)Cartographer源码无死角解析-(79) ROS服务→子图压缩与服务发送

讲解关于slam一系列文章汇总链接:史上最全slam从零开始&#xff0c;针对于本栏目讲解(02)Cartographer源码无死角解析-链接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解&#xff1a;https://blog.csdn.net/weixin_43013761/article/details/127350885 文…

机器学习——掌握决策树ID3算法的原理,通过增益熵实现手工推导的过程。

文章目录 决策树介绍优缺点ID3算法原理举例 决策树的构建1、特征选择&#xff08;1&#xff09;香农熵&#xff08;2&#xff09;信息增益 2、决策树的生成3、决策树的修剪 总结&#xff1a;参考文献 决策树 介绍 决策树(decision tree)是一种基本的分类与回归方法。ID3是其中…