Matlab DDPG

本文详细介绍了如何在Matlab中使用rlSimulinkEnv创建Simulink强化学习环境,创建DDPG Agent并进行训练。通过具体例子展示了如何创建Simulink模型,设置观测和动作信号,以及定制环境。同时,解释了DDPG算法的工作原理和训练过程中的关键步骤,如actor和critic函数、训练算法和目标更新方法。
摘要由CSDN通过智能技术生成

1 rlSimulinkEnv

1.1 说明

rlSimulinkEnv函数从Simulink®模型中创建强化学习环境对象。环境对象起接口作用,当调用sim或train时,这些函数反过来调用Simulink模型,为智能体生成经验。

  1. env = rlSimulinkEnv(mdl, agentBlocks)为Simulink模型mdl创建强化学习环境对象env,agentBlocks包含到mdl中一个或多个强化学习agent块的路径。如果使用这种语法,每个agent块必须引用MATLAB®工作空间中已经存在的agent对象。
  2. env = rlSimulinkEnv(mdl, agentBlocks, obsInfo, actInfo)为模型mdl创建强化学习环境对象env。两个单元数组obsInfo和actInfo必须包含mdl中每个agent块的观测和动作规范,与它们出现在agentBlocks中的阶数相同。
  3. env = rlSimulinkEnv( _ _ , ‘UseFastRestart’, fastRestartToggle)创建了一个强化学习环境对象env,并支持快速重启。在前面语法中的任何一个输入参数之后使用这个语法。

1.2 例子

1.2.1 使用工作空间Agent创建Simulink环境

在MATLAB®工作空间中加载agent。

load rlWaterTankDDPGAgent

为rlwatertank模型创建环境,其中包含一个RL Agent模块。由于区块所使用的agent已经在工作空间中,因此不需要通过观测和动作规范来创建环境。

env = rlSimulinkEnv('rlwatertank','rlwatertank/RL Agent')
env = 
SimulinkEnvWithAgent with properties:

           Model : rlwatertank
      AgentBlock : rlwatertank/RL Agent
        ResetFcn : []
  UseFastRestart : on

通过进行两个样本时间的短暂模拟来验证环境。

validateEnvironment(env)

现在可以分别使用train和sim对环境中的Agent进行训练和仿真。

1.2.2 为Simulink模型创建强化学习环境

打开模型:

mdl = 'rlSimplePendulumModel';
open_system(mdl)

分别创建rlNumericSpec和rlFiniteSetSpec对象用于观察和动作信息。

obsInfo = rlNumericSpec([3 1]) % vector of 3 observations: sin(theta), cos(theta), d(theta)/dt
obsInfo = 
  rlNumericSpec with properties:

     LowerLimit: -Inf
     UpperLimit: Inf
           Name: [0x0 string]
    Description: [0x0 string]
      Dimension: [3 1]
       DataType: "double"
actInfo = rlFiniteSetSpec([-2 0 2]) % 3 possible values for torque: -2 Nm, 0 Nm and 2 Nm
actInfo = 
  rlFiniteSetSpec with properties:

       Elements: [3x1 double]
           Name: [0x0 string]
    Description: [0x0 string]
      Dimension: [1 1]
       DataType: "double"

对于rlNumericSpec和rlFiniteSetSpec对象,可以使用点数表示法赋值属性值。

obsInfo.Name = 'observations';
actInfo.Name = 'torque';

分配智能体分块路径信息,利用前面步骤提取的信息为Simulink模型创建强化学习环境。

agentBlk = [mdl '/RL Agent'];
env = rlSimulinkEnv(mdl,agentBlk,obsInfo,actInfo)
env = 
SimulinkEnvWithAgent with properties:

           Model : rlSimplePendulumModel
      AgentBlock : rlSimplePendulumModel/RL Agent
        ResetFcn : []
  UseFastRestart : on

还可以包括使用点符号的reset功能。对于该实例,在模型工作空间中随机初始化theta0。

env.ResetFcn = @(in) setVariable(in,'theta0',randn,'Workspace',mdl)
env = 
SimulinkEnvWithAgent with properties:

           Model : rlSimplePendulumModel
      AgentBlock : rlSimplePendulumModel/RL Agent
        ResetFcn : @(in)setVariable(in,'theta0',randn,'Workspace',mdl)
  UseFastRestart : on

1.2.3 创建Simulink多Agents环境

在MATLAB工作空间中加载智能体。

load rlCollaborativeTaskAgents

为rlCollaborativeTask模型创建一个环境,该环境有两个Agent块。由于两个区块( agentA和agentB)所使用的智能体已经在工作空间中,因此不需要通过它们的观察和动作规范来创建环境。

env = rlSimulinkEnv('rlCollaborativeTask',["rlCollaborativeTask/Agent A","rlCollaborativeTask/Agent B"])
env = 
SimulinkEnvWithAgent with properties:

           Model : rlCollaborativeTask
      AgentBlock : [
                     rlCollaborativeTask/Agent A
                     rlCollaborativeTask/Agent B
                   ]
        ResetFcn : []
  UseFastRestart : on

2 创建Simulink环境和训练Agent

该实例的原始模型为水箱模型:
在这里插入图片描述
对原模型进行以下修改:

  • 删除PID控制器,改由强化学习控制器;
  • 插入RL Agent模块
  • 串联观测向量 [ ∫ e d t , e , h ] T [\int edt, e, h]^T [edt,e,h]T,其中h是水箱高度, e = r − h e=r-h e=rh,r是参考高度;
  • 设置奖励 r e w a r d = 10 ( ∣ e ∣ < 0.1 ) − 1 ( ∣ e ∣ ≥ 0.1 ) − 100 ( h ≤ 0 ∣ ∣ h ≥ 20 ) reward=10(|e|<0.1)-1(|e|\ge0.1)-100(h\le0||h\ge20) reward=10(e<0.1)1(e0.1)100(h0∣∣h20)
  • 设置终止信号,结束仿真: h ≤ 0 ∣ ∣ h ≥ 20 h\le0||h\ge20 h0∣∣h
  • 11
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Matlab 2020b中,加入了一些强化学习算法的算例,其中包括了DDPG(深度确定性策略梯度)算法。通过使用Matlab中的强化学习库,你可以方便地搭建环境、构建智能体、进行训练等多种操作。你可以参考Matlab官方网站的强化学习函数列表(https://ww2.mathworks.cn/help/reinforcement-learning/referencelist.html?type=function)来了解具体的函数介绍和使用方法。另外,你也可以参考Matlab提供的示例代码,如控制深度学习的例子(openExample('control_deeplearning/TrainBipedRobotToWalkUsingReinforcementLearningAgentsExample'))和四足机器人的例子,来学习如何在Matlab中使用DDPG算法进行强化学习。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [matlab强化学习DDPG算法改编/菜鸟理解2——航天器三轴姿态稳定器学习算例](https://blog.csdn.net/weixin_46322427/article/details/112172193)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [MATLAB强化学习实战(十四) 基于 DDPG 智能体的四足机器人运动控制](https://blog.csdn.net/wangyifan123456zz/article/details/109679138)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余加木

想喝蜜雪冰城柠檬水(≧≦)/

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值