基于DDPG强化学习的倒立摆小车平衡控制matlab性能仿真

1.引言

传统控制方法(如 PID、LQR)需依赖精确的系统动力学模型,且鲁棒性较差 —— 当摆长、质量等参数变化或存在外界扰动时,控制效果会显著下降。而深度强化学习(DRL)通过 “试错” 自主学习控制策略,无需预先推导动力学方程,且对系统扰动具有更强的适应性。其中,深度确定性策略梯度(Deep Deterministic Policy Gradient, DDPG) 算法是解决连续动作空间控制问题的经典方案,恰好匹配倒立摆小车 “小车加速度为连续值” 的动作需求,成为该场景的优选技术路径。

2.算法仿真效果演示

1

2

3

3.数据集格式或算法参数简介

% 定义Critic网络
% 构建Critic神经网络结构
StatePath = [
    featureInputLayer(ObsInfo.Dimension(1), 'Name', 'ObsInput', 'Normalization', 'none')% 输入层,维度与观测空间一致,命名为'CriticInput'
    fullyConnectedLayer(24, 'Name', 'ObsL1')% 第一个全连接层,24个神经元
    reluLayer('Name', 'ObsReLU1')% ReLU激活函数层
    fullyConnectedLayer(24, 'Name', 'ObsL2')% 输出层,1个神经元(输出状态价值)
    ];
% 设置 Critic 网络的学习参数(处理动作路径)
ActionPath = [
    featureInputLayer(ActInfo.Dimension(1), 'Name', 'ActInput', 'Normalization', 'none') % 动作输入层,维度与动作空间一致,命名为'ActInput',不进行归一化
    fullyConnectedLayer(24, 'Name', 'ActL1', 'BiasLearnRateFactor', 0)% 输出层,1个神经元(输出状态价值)
    ];
% 定义Critic网络的公共路径(状态和动作路径的融合部分)
CommonPath = [
    additionLayer(2, 'Name', 'Add')% 加法层,融合状态和动作特征
    reluLayer('Name', 'CommonReLU')% ReLU激活函数层
    fullyConnectedLayer(1, 'Name', 'CriticOutput')% 输出层,1个神经元(输出状态-动作对的价值)
    ];
0Z_026m

 

4.算法涉及理论知识概要

 DDPG是基于Actor-Critic框架的DRL算法,专为连续动作空间设计,其核心创新在于结合了 “确定性策略梯度(DPG)” 与 “经验回放(Experience Replay)”“目标网络(Target Network)”,解决了传统RL在连续动作场景下的采样效率低、训练不稳定问题。 4.1 Actor-Critic框架基础 DDPG包含两个核心网络: Actor网络:输入当前系统状态(如小车位置、摆角、小车速度、摆角速度),输出确定性动作(如小车的水平加速度),即策略函数 μ(s;θμ),其中 θμ 为 Actor 网络参数。其目标是学习一个最优策略,使长期累积奖励最大化。 Critic网络:输入当前状态s和Actor输出的动作a,输出该 “状态 - 动作对” 的价值估计(即未来累积奖励的期望),即Q函数Q(s,a;θQ),其中θQ为Critic网络参数。其目标是最小化价值估计与真实累积奖励的误差,为Actor提供策略更新的梯度方向。 4.2 经验回放(Experience Replay)        将智能体与环境交互产生的 “状态-动作-奖励-下一状态-终止标志” 五元组 (st​,at​,rt​,st+1​,dt​) 存储到经验池D中(dt​=1 表示状态 st​ 为终止态,否则为 0)。训练时从D中随机采样批量数据,打破样本间的时间相关性,避免训练过程中参数更新的震荡。

 

posted @ 2026-02-26 15:32  我爱C编程  阅读(17)  评论(0)    收藏  举报