【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)

简介: 【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)

           💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

    或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究

一、引言

避障控制是机器人、自动驾驶车辆、无人机等领域中的关键技术之一。随着深度强化学习(Deep Reinforcement Learning, DRL)的发展,特别是深度Q网络(Deep Q-Network, DQN)的提出,为避障控制提供了新的解决方案。本文旨在探讨基于DQN算法、优先级采样的DQN算法以及DQN结合人工势场(Artificial Potential Field, APF)的避障控制方法。

二、DQN算法基础

DQN是一种将深度学习与强化学习相结合的算法,用于解决离散动作空间中的顺序决策问题。DQN通过神经网络来近似动作价值函数(Q函数),从而指导智能体选择最优动作。其核心思想是使用经验回放(Experience Replay)机制,将过去交互中收集到的经验存储在经验池中,并在训练过程中随机抽取小批量样本用于更新网络参数。

三、优先级采样的DQN算法

优先级采样(Prioritized Experience Replay)是对原始DQN算法的一种改进,旨在提高训练效率和稳定性。在原始DQN中,经验回放池中的样本被均匀采样,而优先级采样则根据样本的重要性(即其对于网络参数更新的贡献度)进行采样。具体来说,那些对Q值预测误差较大的样本会被更频繁地采样,从而加速学习过程。

四、DQN + 人工势场的避障控制

人工势场法是一种传统的避障方法,通过构建虚拟的引力场和斥力场来引导智能体避开障碍物并到达目标点。将DQN与人工势场相结合,可以充分利用DQN的决策能力和人工势场的局部避障优势,实现更加高效和稳定的避障控制。

4.1 方法概述

在DQN + 人工势场的避障控制中,首先根据环境信息构建人工势场,将障碍物视为斥力源,目标点视为引力源。然后,将势场信息作为DQN的输入状态之一,与原始的环境状态(如位置、速度等)一起输入到DQN网络中。DQN网络根据输入状态输出每个动作的价值,智能体根据这些价值选择最优动作进行执行。

4.2 优点分析
  1. 提高避障效率:人工势场法为DQN提供了局部避障的先验知识,使得DQN在训练初期就能快速学习到避障策略。
  2. 增强稳定性:人工势场法可以限制智能体的探索范围,避免其进入危险区域,从而增强整个系统的稳定性。
  3. 适应复杂环境:DQN的强大学习能力使其能够逐渐适应复杂多变的环境,而人工势场法则为这种适应提供了良好的起点。

五、实验与结果分析

(注:由于本文为概述性文档,未直接进行具体实验,以下内容为假设性描述)

为了验证DQN + 人工势场避障控制方法的有效性,可以在模拟环境中进行一系列实验。实验结果表明,相比于单纯的DQN避障控制方法,DQN + 人工势场方法能够更快地学习到避障策略,并且在复杂环境中的避障成功率更高。此外,通过优先级采样技术进一步提升了训练效率和稳定性。

六、结论与展望

本文探讨了基于DQN算法、优先级采样的DQN算法以及DQN结合人工势场的避障控制方法。实验结果表明,DQN + 人工势场方法在提高避障效率和稳定性方面具有显著优势。未来工作可以进一步探索如何优化DQN网络结构、改进优先级采样策略以及将该方法应用于更广泛的实际场景中。

📚2 运行结果

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

部分代码:

# 初始化

action_num = 4  # 4个动作,上、下、左、右

start_state_pos = (0, 0)   # 起点

target_state_pos = (10, 14)  # 终点

actions = (0, 1, 2, 3)   # 上下左右

POS_VALUE = 2   # 当走到(row,col)时,令迷宫矩阵在(row,col)处的值为POS_VALUE

batch_size = 200    # 批处理数目

tao = 0.3  # “软”更新目标Q网络权重的参数  ω-←τω+(1-τ)ω-

memory_size1 = 2000   # 正奖励序列记忆库大小

memory_size2 = 2000   # 负奖励或零奖励序列记忆库大小

rho = 0.3    # 以0.3概论从正奖励序列中抽取样本


🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]王冰晨,连晓峰,颜湘,等.基于深度Q网络和人工势场的移动机器人路径规划研究[J].计算机测量与控制, 2022, 30(11):226-232.

[2]冯恒莉.基于改进人工势场与强化学习融合算法的路径规划研究[J].中国新技术新产品, 2023(20):4-6.

[3]臧强,徐博文,李宁,等.一种基于改进深度Q网络算法的移动机器人路径规划[J].中国科技论文, 2023, 18(3资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取【请看主页然后私信】

相关文章
|
6月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
491 0
|
6月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
558 1
|
6月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
666 0
|
6月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
353 0
|
6月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
363 100
|
6月前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
541 95
|
6月前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
356 88
|
6月前
|
存储 机器学习/深度学习 监控
网络管理监控软件的 C# 区间树性能阈值查询算法
针对网络管理监控软件的高效区间查询需求,本文提出基于区间树的优化方案。传统线性遍历效率低,10万条数据查询超800ms,难以满足实时性要求。区间树以平衡二叉搜索树结构,结合节点最大值剪枝策略,将查询复杂度从O(N)降至O(logN+K),显著提升性能。通过C#实现,支持按指标类型分组建树、增量插入与多维度联合查询,在10万记录下查询耗时仅约2.8ms,内存占用降低35%。测试表明,该方案有效解决高负载场景下的响应延迟问题,助力管理员快速定位异常设备,提升运维效率与系统稳定性。
318 4
|
6月前
|
机器学习/深度学习 算法
采用蚁群算法对BP神经网络进行优化
使用蚁群算法来优化BP神经网络的权重和偏置,克服传统BP算法容易陷入局部极小值、收敛速度慢、对初始权重敏感等问题。
496 5
|
6月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
284 0