基于CNN-BiLSTM的深度Q网络(Deep Q-Network,DQN)求解移动机器人路径规划,MATLAB代码

路径规划是移动机器人领域主要研究内容之一,移动机器人路径规划即机器人在所处环境下选择一条从起点到终点的无碰撞路径。传统路径规划方法过分依赖环境地图,随着深度学习(Deep Learning,DL)和强化学习(Reinforcement Learning,RL)的快速发展,深度强化学习(Deep Reinforcement Learning,DRL)算法广泛应用于移动机器人路径规划和避障。

一、网络建立

1. 输入层 (input)

  • 输入尺寸:10×10×1 图像,表示输入是一个 10×10 的灰度图像。
  • 归一化:使用 "zerocenter" 归一化,即将输入数据的均值调整为零,通常用于加速训练和提高模型性能。

2. 卷积层 (con1)

  • 卷积核:16 个 3×3 的卷积核,步幅为 [1, 1],填充为 [0, 0, 0, 0]。
  • 输出尺寸:8×8×16。
  • 可学习参数
    • 权重:3×3×1×16(每个卷积核有 3×3×1 个参数,共 16 个卷积核)。
    • 偏置:1×1×16(每个卷积核有一个偏置)。
  • 作用:提取图像的局部特征,如边缘、纹理等。

3. ReLU 激活函数 (relu1)

  • 激活函数:ReLU(Rectified Linear Unit),将负值置零,保留正值。
  • 输出尺寸:8×8×16。
  • 作用:引入非线性特性,避免梯度消失问题。

4. 全连接层 (fc1)

  • 输出尺寸:1×1×64。
  • 可学习参数
    • 权重:64×1024(将 8×8×16 的特征映射到 64 个神经元)。
    • 偏置:64×1。
  • 作用:将卷积层提取的特征映射到更高维度的空间,用于更复杂的特征表示。

5. ReLU 激活函数 (relu3)

  • 激活函数:ReLU。
  • 输出尺寸:1×1×64。
  • 作用:引入非线性特性。

6. 扁平化层 (flatten)

  • 输出尺寸:64×1。
  • 作用:将多维数据展平为一维,以便输入到后续的 BiLSTM 层。

7. 双向 LSTM 层 (BiLSTM)

  • 隐藏单元:20 个隐藏单元。
  • 输出尺寸:40×1。
  • 可学习参数
    • 输入权重:160×...(具体取决于输入和隐藏单元的维度)。
    • 循环权重:160×...(用于处理时间序列的循环连接)。
    • 偏置:160×...。
  • 作用:处理序列数据,捕捉时间序列的前后依赖关系。双向 LSTM 可以同时利用过去和未来的上下文信息。

8. ReLU 激活函数 (relu)

  • 激活函数:ReLU。
  • 输出尺寸:40×1。
  • 作用:引入非线性特性。

9. 全连接层 (fc2)

  • 输出尺寸:8×1。
  • 可学习参数
    • 权重:8×40(将 40 个特征映射到 8 个输出)。
    • 偏置:8×1。
  • 作用:将 BiLSTM 的输出映射到最终的预测结果。

10. 输出层 (output)

  • 输出类型:回归输出。
  • 损失函数:均方误差(Mean Squared Error, MSE),响应为 "Response"。
  • 输出尺寸:8×1。
  • 作用:输出最终的回归结果,通常用于预测连续值。

这个网络结构结合了卷积神经网络(CNN)和双向 LSTM(BiLSTM),共包含79.6k个学习参数,用于近似Q值函数。网络输入是地图状态,输出是8个方向动作的Q值,用于指导机器人选择最优动作。

二、部分MATLAB代码及结果

bash 复制代码
close all
clear all;
clc;
%% 地图map
global map;
map=[0	0	0	0	0	0	1	0	0	0;
0	0	0	0	0	0	1	0	0	1;
0	0	0	0	0	0	0	0	0	1;
0	1	1	0	0	0	0	0	0	0;
0	1	0	0	0	1	0	0	0	0;
0	0	0	0	0	1	1	0	0	1;
1	0	0	0	0	0	1	0	0	1;
0	0	0	0	0	0	0	0	0	0;
0	0	0	0	0	0	0	0	0	0
0	1	1	1	0	0	0	0	0	0];

%% 画图
analyzeNetwork(dqn_net)

figure
plot(curve,'r-',LineWidth=2);
saveas(gca,'11.jpg')

figure
imagesc(~map)
hold on
plot(state_mark(:,2),state_mark(:,1),'c-',LineWidth=2);
colormap('gray')
scatter(start_state_pos(2) ,start_state_pos(1),'MarkerEdgeColor',[0 0 1],'MarkerFaceColor',[0 0 1], 'LineWidth',1);%start point
scatter(target_state_pos(2),target_state_pos(1),'MarkerEdgeColor',[0 1 0],'MarkerFaceColor',[0 1 0], 'LineWidth',1);%goal point
text(start_state_pos(2),start_state_pos(1),'起点','Color','red','FontSize',10);%显示start字符
text(target_state_pos(2),target_state_pos(1),'终点','Color','red','FontSize',10);%显示goal字符
title('基于DQN的机器人路径规划')
saveas(gca,'12.jpg')


三、完整MATLAB代码见下方名片

相关推荐
桌面运维家2 小时前
IDV云桌面vDisk机房网络管控访问限制部署方案
运维·服务器·网络
南宫萧幕2 小时前
自控PID+MATLAB仿真+混动P0/P1/P2/P3/P4构型
算法·机器学习·matlab·simulink·控制·pid
橙子也要努力变强4 小时前
Linux信号机制
linux·服务器·网络
程序猿编码4 小时前
给你的网络流量穿件“隐形衣“:手把手教你用对称加密打造透明安全隧道
linux·开发语言·网络·安全·linux内核
skilllite作者4 小时前
AI agent 的 Assistant Auto LLM Routing 规划的思考
网络·人工智能·算法·rust·openclaw·agentskills
pengyi8710154 小时前
私网IP映射公网基础原理,搭配代理IP远程访问入门
linux·服务器·网络
AILabNotes5 小时前
014、隐私增强技术:零知识证明与混合网络在网关中的应用
网络·区块链·零知识证明
神仙别闹6 小时前
基于 MATLAB 实现的 DCT 域的信息隐藏
开发语言·matlab
Y学院8 小时前
网络安全基础核心知识点教程
网络·web安全·php
天一生水water9 小时前
CNN循环神经网络关键知识点
人工智能·rnn·cnn