✅作者简介热爱科研的Matlab仿真开发者擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。完整代码获取 定制创新 论文复现点击Matlab科研工作室 关注我领取海量matlab电子书和数学建模资料个人信条做科研博学之、审问之、慎思之、明辨之、笃行之是为博学慎思明辨笃行。 内容介绍一、引言小车倒立摆系统是控制领域中的经典问题它具有非线性、多变量和强耦合的特点对其实现稳定控制极具挑战性。深度确定性策略梯度DDPG作为一种基于模型无关的强化学习算法为小车倒立摆控制提供了创新的解决方案。通过与环境的不断交互学习DDPG 能够有效应对系统的复杂动态实现小车倒立摆的稳定平衡与精确控制。二、小车倒立摆系统概述系统结构小车倒立摆系统由一个可在水平轨道上移动的小车和一个通过铰链连接在小车上的倒立摆组成。小车可在外部作用力下沿轨道左右移动而倒立摆则会因小车的移动以及自身重力和惯性的作用产生摆动。动力学模型描述小车倒立摆系统通常使用牛顿 - 欧拉方程。假设小车质量为 m1倒立摆质量为 m2倒立摆长度为 l作用在小车上的力为 u倒立摆与垂直方向的夹角为 θ。系统的动力学方程可表示为一系列关于位置、速度、加速度以及角度、角速度、角加速度的微分方程。例如水平方向上小车的加速度与作用力 u、倒立摆的摆动角度等因素相关而倒立摆的角加速度则与小车的加速度、重力以及摆长等有关。这些方程准确刻画了系统各变量之间的动态关系但由于其非线性特性传统控制方法难以精确求解。三、DDPG 强化学习算法四、基于 DDPG 的小车倒立摆控制实现状态定义为了让 DDPG 算法能够有效学习小车倒立摆系统的控制策略需要合理定义系统的状态。状态通常包括小车的位置 x、速度 x˙倒立摆的角度 θ、角速度 θ˙ 等信息。这些状态信息全面反映了系统在每个时刻的运行状况作为 DDPG 算法中神经网络的输入帮助智能体做出合适的动作决策。动作定义在小车倒立摆系统中动作定义为作用在小车上的力 u。由于力是连续变量适合使用 DDPG 这种针对连续动作空间的强化学习算法。演员网络输出的动作值直接对应作用在小车上的力的大小和方向通过调整力来控制小车的运动进而维持倒立摆的平衡。奖励函数设计奖励函数的设计直接影响 DDPG 算法的学习效果目的是引导智能体采取能够使倒立摆保持平衡的动作。例如当倒立摆的角度接近垂直方向且小车位置在允许范围内时给予较高的正奖励若倒立摆角度过大或小车超出规定位置则给予负奖励。奖励函数 R 可以定义为Rα1(1−∣θ∣)α2(1−∣x∣)−β其中α1 和 α2 是权重系数用于调整角度和位置在奖励中的相对重要性β 是一个常数用于在系统状态不佳时给予惩罚。这样的奖励函数能够激励智能体尽量保持倒立摆的垂直平衡和小车位置的稳定。训练与优化在训练过程中智能体DDPG 算法根据当前系统状态通过演员网络生成动作即作用在小车上的力作用于小车倒立摆系统。系统根据该动作转移到新的状态并返回奖励值。智能体将这些经验数据 (s,a,r,s′) 存储到经验回放缓冲区中。然后从缓冲区中随机采样一批数据用于更新演员网络和评论家网络。评论家网络根据采样数据计算时间差分误差并通过反向传播算法更新自身参数以更好地估计动作价值。演员网络则根据评论家网络给出的 Q 值估计通过策略梯度算法更新自身参数以生成更优的动作策略。经过多次迭代训练智能体逐渐学习到使倒立摆保持平衡的最优控制策略。⛳️ 运行结果 部分代码% Cart parametersm 1; % pendulum massM 5; %cart massL 2; %pendulum lengthg -9.81; % Gravityd 1; % dampping term opposing the force input% slows the pendulum down, the higher this is the faster the pendulum slows downs 1; % pendulum up (s1)A [0 1 0 0; %x0 -d/M -m*g/M 0; %x_dot0 0 0 1; % theta0 -s*d/(M*L) -s*(mM)*g/(M*L) 0]; % theta_dot%state space representation of the dependent forcesB [0; 1/M; 0; s*1/(M*L)]; %state space representation of the linear forceseig(A) %% give the eigen values of A, where the poles are.C eye(4); % sets an identity matrix.sys ss(A,B,C,0*B); % converts a dynamic system, to space state representation%%tspan 0:.001:10;if(s-1)y0 [0; 0; 0; 1.5];%initial is used to plot the output of the system of equations.%yL is the output response, t is the time vector for the simulation,%and xL is the state trajectories. Uses sys to make this.[yL,t,xL] initial(sys,y0,tspan);% solves the ode for the given syste, time and initial conditions.% returns the time frame, and the output vector.[t,yNL] ode45((t,y)cartpend(y,m,M,L,g,d,0),tspan,y0);elseif(s1)y0 [0; 0; pi.0001; 0];[yL,t,xL] initial(sys,y0-[0; 0; pi; 0],tspan);[t,yNL] ode45((t,y)cartpend(y,m,M,L,g,d,0),tspan,y0);elseendfigure (10);%plot(t,yL);plot(t,yLones(10001,1)*[0; 0; pi; 0]); % as far as I can see they are the same.xlabel(x); ylabel(y);title(Plot for the Output Functions for the Pendulum Equations System);hold on;%%hold off;pause; 参考文献更多免费数学建模和仿真教程关注领取
【车辆】基于DDPG强化学习的小车倒立摆控制附Matlab代码
发布时间:2026/6/11 22:30:15
✅作者简介热爱科研的Matlab仿真开发者擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。完整代码获取 定制创新 论文复现点击Matlab科研工作室 关注我领取海量matlab电子书和数学建模资料个人信条做科研博学之、审问之、慎思之、明辨之、笃行之是为博学慎思明辨笃行。 内容介绍一、引言小车倒立摆系统是控制领域中的经典问题它具有非线性、多变量和强耦合的特点对其实现稳定控制极具挑战性。深度确定性策略梯度DDPG作为一种基于模型无关的强化学习算法为小车倒立摆控制提供了创新的解决方案。通过与环境的不断交互学习DDPG 能够有效应对系统的复杂动态实现小车倒立摆的稳定平衡与精确控制。二、小车倒立摆系统概述系统结构小车倒立摆系统由一个可在水平轨道上移动的小车和一个通过铰链连接在小车上的倒立摆组成。小车可在外部作用力下沿轨道左右移动而倒立摆则会因小车的移动以及自身重力和惯性的作用产生摆动。动力学模型描述小车倒立摆系统通常使用牛顿 - 欧拉方程。假设小车质量为 m1倒立摆质量为 m2倒立摆长度为 l作用在小车上的力为 u倒立摆与垂直方向的夹角为 θ。系统的动力学方程可表示为一系列关于位置、速度、加速度以及角度、角速度、角加速度的微分方程。例如水平方向上小车的加速度与作用力 u、倒立摆的摆动角度等因素相关而倒立摆的角加速度则与小车的加速度、重力以及摆长等有关。这些方程准确刻画了系统各变量之间的动态关系但由于其非线性特性传统控制方法难以精确求解。三、DDPG 强化学习算法四、基于 DDPG 的小车倒立摆控制实现状态定义为了让 DDPG 算法能够有效学习小车倒立摆系统的控制策略需要合理定义系统的状态。状态通常包括小车的位置 x、速度 x˙倒立摆的角度 θ、角速度 θ˙ 等信息。这些状态信息全面反映了系统在每个时刻的运行状况作为 DDPG 算法中神经网络的输入帮助智能体做出合适的动作决策。动作定义在小车倒立摆系统中动作定义为作用在小车上的力 u。由于力是连续变量适合使用 DDPG 这种针对连续动作空间的强化学习算法。演员网络输出的动作值直接对应作用在小车上的力的大小和方向通过调整力来控制小车的运动进而维持倒立摆的平衡。奖励函数设计奖励函数的设计直接影响 DDPG 算法的学习效果目的是引导智能体采取能够使倒立摆保持平衡的动作。例如当倒立摆的角度接近垂直方向且小车位置在允许范围内时给予较高的正奖励若倒立摆角度过大或小车超出规定位置则给予负奖励。奖励函数 R 可以定义为Rα1(1−∣θ∣)α2(1−∣x∣)−β其中α1 和 α2 是权重系数用于调整角度和位置在奖励中的相对重要性β 是一个常数用于在系统状态不佳时给予惩罚。这样的奖励函数能够激励智能体尽量保持倒立摆的垂直平衡和小车位置的稳定。训练与优化在训练过程中智能体DDPG 算法根据当前系统状态通过演员网络生成动作即作用在小车上的力作用于小车倒立摆系统。系统根据该动作转移到新的状态并返回奖励值。智能体将这些经验数据 (s,a,r,s′) 存储到经验回放缓冲区中。然后从缓冲区中随机采样一批数据用于更新演员网络和评论家网络。评论家网络根据采样数据计算时间差分误差并通过反向传播算法更新自身参数以更好地估计动作价值。演员网络则根据评论家网络给出的 Q 值估计通过策略梯度算法更新自身参数以生成更优的动作策略。经过多次迭代训练智能体逐渐学习到使倒立摆保持平衡的最优控制策略。⛳️ 运行结果 部分代码% Cart parametersm 1; % pendulum massM 5; %cart massL 2; %pendulum lengthg -9.81; % Gravityd 1; % dampping term opposing the force input% slows the pendulum down, the higher this is the faster the pendulum slows downs 1; % pendulum up (s1)A [0 1 0 0; %x0 -d/M -m*g/M 0; %x_dot0 0 0 1; % theta0 -s*d/(M*L) -s*(mM)*g/(M*L) 0]; % theta_dot%state space representation of the dependent forcesB [0; 1/M; 0; s*1/(M*L)]; %state space representation of the linear forceseig(A) %% give the eigen values of A, where the poles are.C eye(4); % sets an identity matrix.sys ss(A,B,C,0*B); % converts a dynamic system, to space state representation%%tspan 0:.001:10;if(s-1)y0 [0; 0; 0; 1.5];%initial is used to plot the output of the system of equations.%yL is the output response, t is the time vector for the simulation,%and xL is the state trajectories. Uses sys to make this.[yL,t,xL] initial(sys,y0,tspan);% solves the ode for the given syste, time and initial conditions.% returns the time frame, and the output vector.[t,yNL] ode45((t,y)cartpend(y,m,M,L,g,d,0),tspan,y0);elseif(s1)y0 [0; 0; pi.0001; 0];[yL,t,xL] initial(sys,y0-[0; 0; pi; 0],tspan);[t,yNL] ode45((t,y)cartpend(y,m,M,L,g,d,0),tspan,y0);elseendfigure (10);%plot(t,yL);plot(t,yLones(10001,1)*[0; 0; pi; 0]); % as far as I can see they are the same.xlabel(x); ylabel(y);title(Plot for the Output Functions for the Pendulum Equations System);hold on;%%hold off;pause; 参考文献更多免费数学建模和仿真教程关注领取