2025年KBS SCI1区TOP,新颖奖励与ε-贪婪衰减Q-learning算法+局部移动机器人路径规划,深度解析+性能实测

目录

    • 1.摘要
    • 2.新颖奖励与ε-贪婪衰减Q-learning算法
    • 3.结果展示
    • 4.参考文献
    • 5.代码获取
    • 6.算法辅导·应用定制·读者交流


1.摘要

路径规划是移动机器人的核心任务,需要在高效导航的同时规避障碍。本文提出了一种改进Q-learning算法——定制化奖励与ε-贪婪衰减Q-learning(TRE-QL),该方法通过对重复访问状态进行惩罚,引导智能体探索新路径;并设计了基于累计奖励动态调整的ε-贪婪衰减策略,实现了从探索到利用的平滑过渡,保证学习过程的稳定性。

2.新颖奖励与ε-贪婪衰减Q-learning算法

Q-learning用于移动机器人路径规划,通过试错学习在未知环境中更新Q表,逐步形成最优策略,该方法能引导机器人以最短无障碍路径到达目标,并在迭代中收敛,实现高效导航与避障。

环境建模

Environment modeling using grid discretization

在Q-learning路径规划中,环境常通过网格离散化建模,将空间划分为空闲单元与障碍单元,机器人在网格中选择动作并判断位置是否合法,从而实现路径搜索。
L(st,at)=lt,lt∈{E,lt=eO,lt=oL(s_t,a_t)=l_t,\quad l_t\in \begin{cases} E, & l_t=e \\ O, & l_t=o & \end{cases} L(st,at)=lt,lt{E,O,lt=elt=o

环境网格化离散化为Q-learning路径规划提供状态–动作框架,简化Q表更新并显著压缩状态空间,从而降低计算复杂度并加快收敛。该方法在室内或结构化环境中尤为适用,能高效支持实时路径规划。网格大小决定精度与效率的平衡:小网格提高路径精度但计算代价大,大网格则降低负荷但精度不足。

动作空间

在网格化环境中,机器人动作空间采用4邻域运动,每次移动一个单元格,该有限离散动作集简化了Q-learning,实现高效路径搜索与Q表更新。

TRE-QL算法通过优化奖励函数与引入动态ε-贪婪衰减机制,有效缓解了传统Q-learning在探索—开发平衡中的局限性。实验表明,当障碍密度超过10%时,固定 ε 值往往导致收敛失败或陷入次优路径。TRE-QL 根据累计奖励自适应调整探索率,实现从探索到利用的平滑过渡,避免过早收敛并稳定智能体行为,从而在复杂环境中提升学习效率和收敛性能,显著增强了Q-learning在受限环境下的鲁棒性。

奖励函数

在强化学习中,奖励函数是智能体学习的核心反馈机制,直接决定其策略能否收敛至最优。传统Q-learning常通过奖励目标、惩罚碰撞的方式定义奖励函数:
r={−r1collisionr2gettarget−r3other statesr= \begin{cases} -r_1 & \mathrm{collision} \\ r_2 & \mathrm{get~target} \\ -r_3 & \text{other states} & \end{cases} r=r1r2r3collisionget targetother states

传统Q-learning奖励函数设定为:到达目标得正奖励 +r2+r_2+r2,碰撞受惩罚 −r1-r_1r1,其他非目标状态为−r3-r_3r3,且满足r2>r3>r1r_2>r_3>r_1r2>r3>r1,以突出先到达目标、再避障优先级。但该设计缺乏对重复访问状态的惩罚,易导致智能体在状态间振荡、学习效率降低。为此,本文提出优化离散奖励函数:在单次回合内若状态被重复访问,则施加动态惩罚鼓励探索新路径、提升收敛速度与学习效率。
P(e)=C×KeP(e)=C\times K^e P(e)=C×Ke

在TRE-QL中,若累计奖励Tcumulative>TthresholdT_\mathrm{cumulative}>T_\mathrm{threshold}Tcumulative>Tthreshold,则引入与成功经验次数 eee 相关的动态惩罚机制,其中常数CCCKKK控制惩罚的初始强度与衰减速率。由此,TRE-QL奖励函数在传统设计基础上引入状态重复访问惩罚与动态调节项,更好地平衡目标达成与探索效率,实现更快、更稳定的收敛。
r={−r1collisionr2gettarget−r4=−P(e)revisit same state more than once−r3other statesr= \begin{cases} -r_1 & \mathrm{collision} \\ r_2 & \mathrm{get~target} \\ -r_4=-P(e) & \text{revisit same state more than once} \\ -r_3 & \text{other states} & \end{cases} r=r1r2r4=P(e)r3collisionget targetrevisit same state more than onceother states

动作选择策略

为避免智能体过早收敛,TRE-QL引入自适应ε-贪婪衰减机制,其核心思想是在学习初期保持足够探索,随后依据累计奖励动态调整探索率,使智能体平滑过渡到利用阶段。若ε下降过快,会导致过早利用并陷入次优;若下降过慢,则会延迟收敛。自适应衰减通过累计奖励与阈值比较来调控ε,若奖励超过阈值,则以衰减因子更新ε:
ϵt+1=ϵt×CdifRcumulative>Tthreshold\epsilon_{t+1}=\epsilon_{t}\times C_{d}\quad\mathrm{if}\quad R_{\text{cumulative}}>T_{\mathrm{threshold}} ϵt+1=ϵt×CdifRcumulative>Tthreshold

3.结果展示

论文仿真

4.参考文献

[1] Ben-Akka M, Tanougast C, Diou C. Novel design of reward and epsilon-greedy decay strategy tailored for Q-learning in optimizing local mobile robot path planning[J]. Knowledge-Based Systems, 2025: 113836.

5.代码获取

xx

6.算法辅导·应用定制·读者交流

xx

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

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

相关文章

运行npm run命令报错“error:0308010C:digital envelope routines::unsupported”

下载的前后端分离架构的开源项目,运行“npm run serve”命令启动前端服务时报错“error:0308010C:digital envelope routines::unsupported”,这个错误通常是由于Node.js版本与项目依赖不兼容导致的,特别是在Node.js v17版本中,百…

AI计算提效关键。自适应弹性加速,基于存算架构做浮点运算

一、自适应弹性加速是提升芯片能效比的有力手段自适应弹性加速技术是现代芯片设计中提升能效比的关键路径之一。它摒弃了传统芯片在设计时采用的静态、固化的资源分配与功能设定模式,通过引入动态调整机制,使得芯片能够根据实时的应用需求和负载变化&…

Spring Boot测试陷阱:失败测试为何“传染”其他用例?

一个测试失败,为何“传染”其他测试?——Spring Boot 单元测试独立性与泛型陷阱实战解析 🚩 问题背景 在日常开发中,我们常会遇到这样的场景: 正在开发新功能 A,写了一个 testFeatureA() 测试方法&#xff…

Web开发中的CGI:通用网关接口详解

一、CGI的设计意图:解决Web的"静态"困境 在CGI出现之前,Web服务器只能做一件事:返回预先写好的静态文件(HTML、图片等)。每个用户看到的内容都是一模一样的。 设计意图很简单但却革命性: 让Web服…

在 SSMS 中查找和打开已保存的查询文件

在 SSMS 中查找和打开已保存的查询文件 在 SQL Server Management Studio (SSMS) 中,您可以轻松地查找并打开已保存的查询文件(通常以 .sql 扩展名保存)。SSMS 提供了直观的界面支持直接打开这些文件,无需额外工具。以下是详细步骤…

Protues使用说明及Protues与Keil联合仿真实现点亮小灯和流水灯

目录 1Protues介绍及新建工程 1.1进入软件 1.2文件创建 1.3默认选项 1.5设计面板 1.6添加元器件 1.7终端模式 1.8激励源模式 1.9探针模式 1.10仪表 1.11二维直线 1.12字符 2 Protues电路原理图仿真 2.1 220V交流电转5V直流电稳压电路仿真原理图 2.1.1 仿真原理图…

Linux PCI 子系统:工作原理与实现机制深度分析

Linux PCI 子系统:工作原理与实现机制深度分析 1. Linux PCI 子系统基础概念 1.1 PCI/PCIe 基础概念回顾 总线拓扑: PCI/PCIe 系统是一个树形结构。CPU 连接到 Root Complex (RC),RC 连接至 PCIe 交换机 (Switch) 和 PCIe 端点设备 (Endpoint…

RabbitMQ 全面指南:架构解析与案例实战

目录一、RabbitMQ 简介1.1 什么是 RabbitMQ1.2 RabbitMQ 的核心组件1.3 RabbitMQ 的应用场景二、环境搭建2.1 安装 RabbitMQ2.2 安装 Erlang2.3 配置 RabbitMQ三、RabbitMQ 核心概念与工作原理3.1 消息模型3.2 交换机类型3.3 队列特性3.4 消息确认机制四、Spring Boot 集成 Rab…

6.2 el-menu

一、 <el-menu>: 菜单组件&#xff0c;定义了侧边栏内部的具体导航项、层级结构和交互行为。<el-container><!-- 侧边栏容器 --><el-aside width"200px"><!-- 菜单内容 --><el-menu default-active"1" class"el-men…

Windows 笔记本实现仅关屏仍工作:一种更便捷的 “伪熄屏” 方案

在使用 Windows 笔记本作为临时服务器或需要后台持续运行程序时&#xff0c;我们常面临一个需求&#xff1a;关闭屏幕以节省电量或减少光污染&#xff0c;同时保持系统正常工作。然而&#xff0c;网络上流传的诸多方法往往存在局限&#xff0c;要么无法兼顾 “熄屏” 与 “工作…

Linux应急响应一般思路(二)

进程排查进程(Process)是计算机中的程序关于某数据集合上的一次运行活动&#xff0c;是系统进行资源分配和调度的基本单位&#xff0c;是操作系统结构的基础无论是在Windows系统还是Linux系统中&#xff0c;主机在感染恶意程序后&#xff0c;恶意程序都会启动相应的进程&#x…

基于 SkyWalking + Elasticsearch + Grafana 的可落地调用链监控方案

这个方案成熟稳定、社区活跃、部署相对简单,非常适合中小型团队作为第一代调用链系统落地。 一、核心组件选型与角色 组件 版本建议 角色 优点 Apache SkyWalking v9.x+ 核心平台 (采集、分析、存储、UI) 国产优秀,Java Agent无侵入接入,功能全面,性能损耗低 Elasticsearc…

APP逆向——某站device-id参数

免责声明本博客所涉及的 爬虫技术、逆向分析方法 仅用于 学习、研究和技术交流。文中所有示例代码、工具和方法&#xff0c;均不得用于以下行为&#xff1a;未经授权的数据采集侵犯他人知识产权干扰或破坏正常业务系统任何违反国家法律法规的行为因读者将本教程内容用于 非法用…

C/C++数据结构之循环链表

概述循环链表本质上也是一个单向或双向链表&#xff0c;但其最后一个节点的指针并不指向NULL&#xff0c;而是指向链表的第一个节点&#xff0c;从而形成一个闭合的环。这种结构使得在遍历链表时&#xff0c;可以从任意一个节点开始&#xff0c;并最终回到起始点。音乐播放软件…

Mongodb的教程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 一、mongodb是什么&#xff1f; 二、mongodb的下载与安装教程 三、mongodb的常见操作 总结 前言 在当今数据驱动的世界中&#xff0c;数据库技术是构建高效…

MySQL视图有什么用?一文读懂虚拟表的六大核心价值

引言 在数据库开发中&#xff0c;你是否遇到过这样的困境&#xff1a;业务人员需要查看复杂关联数据却难以理解多表JOIN&#xff0c;或需要限制某些用户只能访问特定字段&#xff1f;MySQL视图正是为此设计的"数据透视镜"。本文将通过官方定义、典型场景和最佳实践&a…

ubuntu24.04 frps服务器端自动启动设置【2025-08-20】

Ubuntu 24.04采用systemd作为默认的init系统&#xff0c;我们可以通过创建systemd服务单元文件来实现开机自启动。以下是具体实施步骤&#xff1a;创建服务文件使用文本编辑器创建服务配置文件&#xff1a;sudo nano /etc/systemd/system/frps.service编写服务配置内容在文件中…

数据结构与算法-字符串、数组和广义表(String Array List)

3 字符串、数组和广义表&#xff08;String Array List&#xff09; 3.1 字符串&#xff08;String&#xff09; 3.1.1 串的顺序存储 a. 定长顺序&#xff1a; #define MAXLEN 255 // 串的定长顺序存储结构 typedef struct {char ch[MAXLEN 1]; // 字符串数据&#xff0c;…

【网络运维】Shell 脚本编程:if 条件语句

Shell 脚本编程&#xff1a;if 条件语句 if 条件语句概述 if 条件语句是 Linux Shell 脚本编程中最基础且使用频率最高的控制结构之一&#xff0c;其语义类似于自然语言中的“如果…那么…”。熟练掌握 if 语句的用法&#xff0c;是成为一名合格运维工程师的基本要求。 if 语句…

浮点型的位结构和表示的值

位结构float 各部分的含义 符号位&#xff1a; 为 0 表示正数&#xff0c;为 1 表示负数。 指数部分&#xff1a; 指数部分是一个移码。指数部分有 8 位&#xff0c;首先当成无符号整型&#xff0c;则值域是 [0, 255] .因为是移码&#xff0c;所以 移码值 无符号整型值 - 127 …