训练DDPG智能体控制双积分器系统

  • 双积分器的MATLAB环境
  • 创建环境接口
  • 创建DDPG智能体
  • 训练智能体
  • DDPG智能体仿真

该示例说明了如何训练深度确定性策略梯度(DDPG)智能体来控制以MATLAB®为模型的二阶动态系统。

有关DDPG智能体的详细信息,请参阅深度确定性策略梯度智能体。 有关显示如何在Simulink®中训练DDPG智能体的示例,请参阅训练DDPG智能体平衡摆。

双积分器的MATLAB环境

此示例的强化学习环境是具有增益的二阶双积分器系统。 训练目标是通过施加力输入来控制介质在二阶系统中的位置。

对于这种环境:

  1. 从4到4单位之间的初始位置开始。
  2. 从介质到环境的力作用信号是2到2N。
  3. 从环境中观察到的是质量的位置和速度。
  4. 如果质量从原来的位置移动超过5米或如果x <0.01,则episode 终止。
  5. 每一步提供的奖励r(t)是r(t)的离散化

这里:

  1. x是质量的状态向量。

  2. u是施加到介质上的力。

  3. Q是控制性能的权重; Q = [10 0; 0 1]。

  4. R是控制作用的权重; R = 0.01。

创建环境接口

为双积分器系统创建一个预定义的环境接口。

env = rlPredefinedEnv("DoubleIntegrator-Continuous")

env.MaxForce = Inf;

接口具有连续的作用空间,智能体可以在其中对介质施加从-Inf到Inf的力值。

从环境接口获取观察和动作信息。

obsInfo = getObservationInfo(env);
numObservations = obsInfo.Dimension(1);
actInfo = getActionInfo(env);
numActions = numel(actInfo);

固定随机发生器种子的重现性。

rng(0)

创建DDPG智能体

DDPG智能体使用评论者价值函数表示法,根据给定的观察和操作来估算长期奖励。 要创建评论者,首先要创建一个具有两个输入(状态和动作)和一个输出的深度神经网络。 有关创建神经网络值函数表示的更多信息,请参见创建策略和值函数表示。

statePath = imageInputLayer([numObservations 1 1],'Normalization','none','Name','state');
actionPath = imageInputLayer([numActions 1 1],'Normalization','none','Name','action');
commonPath = [concatenationLayer(1,2,'Name','concat')quadraticLayer('Name','quadratic')fullyConnectedLayer(1,'Name','StateValue','BiasLearnRateFactor',0,'Bias',0)];criticNetwork = layerGraph(statePath);
criticNetwork = addLayers(criticNetwork,actionPath);
criticNetwork = addLayers(criticNetwork,commonPath);criticNetwork = connectLayers(criticNetwork,'state','concat/in1');
criticNetwork = connectLayers(criticNetwork,'action','concat/in2');

查看评论者网络配置。

figure
plot(criticNetwork)


使用rlRepresentationOptions指定评论者表示的选项。

criticOpts = rlRepresentationOptions('LearnRate',5e-3,'GradientThreshold',1);

使用指定的神经网络和选项创建评论者表示。 您还必须指定评论者的操作和观察信息,这些信息是从环境界面获得的。 有关更多信息,请参见rlQValueRepresentation。

critic = rlQValueRepresentation(criticNetwork,obsInfo,actInfo,'Observation',{'state'},'Action',{'action'},criticOpts);

DDPG智能体使用行动者表示来决定要采取的行动(在给定的观察结果中)。 要创建行动者,首先要创建一个具有一个输入(观察)和一个输出(动作)的深度神经网络。

以类似于评论者的方式构造行动者。

actorNetwork = [imageInputLayer([numObservations 1 1],'Normalization','none','Name','state')fullyConnectedLayer(numActions,'Name','action','BiasLearnRateFactor',0,'Bias',0)];actorOpts = rlRepresentationOptions('LearnRate',1e-04,'GradientThreshold',1);actor = rlDeterministicActorRepresentation(actorNetwork,obsInfo,actInfo,'Observation',{'state'},'Action',{'action'},actorOpts);

要创建DDPG智能体,请首先使用rlDDPGAgentOptions指定DDPG智能体选项。

agentOpts = rlDDPGAgentOptions(...'SampleTime',env.Ts,...'TargetSmoothFactor',1e-3,...'ExperienceBufferLength',1e6,...'DiscountFactor',0.99,...'MiniBatchSize',32);
agentOpts.NoiseOptions.Variance = 0.3;
agentOpts.NoiseOptions.VarianceDecayRate = 1e-6;

使用指定的评论者表示,评论者表示和智能体选项创建DDPG智能体。 有关更多信息,请参见rlDDPGAgent。

agent = rlDDPGAgent(actor,critic,agentOpts);

训练智能体

要训练智能体,请首先指定训练选项。 对于此示例,使用以下选项。

  1. 在训练环节中最多运行1000 episodes,每个episode最多持续200个时间步。

  2. 在“情节管理器”对话框中显示训练进度(设置“Plots ”选项),并禁用命令行显示(设置“Verbose ”选项)。

  3. 当智能体收到的移动平均累计奖励大于–66时,请停止训练。 在这一点上,智能体可以用最小的控制力来控制质量块的位置。

有关更多信息,请参见rlTrainingOptions。

trainOpts = rlTrainingOptions(...'MaxEpisodes', 5000, ...'MaxStepsPerEpisode', 200, ...'Verbose', false, ...'Plots','training-progress',...'StopTrainingCriteria','AverageReward',...'StopTrainingValue',-66);

您可以在训练或仿真过程中使用绘图功能来可视化双积分器环境。

plot(env)


使用训练功能训练智能体。 训练此智能体是一个需要大量时间才能完成的计算密集型过程。 为了节省运行本示例的时间,请通过将doTraining设置为false来加载预训练的智能体。 要自己训练智能体,请将doTraining设置为true。

doTraining = false;
if doTraining% Train the agent.trainingStats = train(agent,env,trainOpts);
else% Load the pretrained agent for the example.load('DoubleIntegDDPG.mat','agent');
end

DDPG智能体仿真

要验证受过训练的智能体的性能,请在双集成器环境中对其进行仿真。 有关智能体模拟的更多信息,请参见rlSimulationOptions和sim。

simOptions = rlSimulationOptions('MaxSteps',500);
experience = sim(env,agent,simOptions);

totalReward = sum(experience.Reward)

MATLAB强化学习实战(四) 训练DDPG智能体控制双积分器系统相关推荐

  1. MATLAB强化学习工具箱(十一)训练DDPG智能体控制飞行机器人

    训练DDPG智能体控制飞行器 飞行机器人模型 创建集成模型 动作与观察 创建环境接口 重置函数 创建DDPG智能体 训练智能体 DDPG智能体仿真 本示例说明如何训练深度确定性策略梯度(DDPG)智能 ...

  2. 多智能体强化学习(四)多智能体RL

    多智能体强化学习(四)多智能体RL 1. 问题的公式:随机博弈 2. 解决随机对策 2.1 基于价值的MARL方法 2.2 基于策略的MARL方法 2.3 纳什均衡的求解概念 2.4 特殊类型的随机策 ...

  3. MATLAB强化学习实战(八) 训练多个智能体执行协作任务

    训练多个智能体执行协作任务 创建环境 创建智能体 训练智能体 智能体仿真 本示例说明如何在Simulink®环境上设置多智能体训练. 在该示例中,您训练了两个智能体以协同执行移动对象的任务. 2020 ...

  4. MATLAB强化学习实战(十三) 使用强化学习智能体训练Biped机器人行走

    使用强化学习智能体训练Biped机器人行走 两足机器人模型 创建环境接口 选择和创建训练智能体 DDPG Agent TD3 Agent 指定训练选项和训练智能体 仿真训练过的智能体 比较智能体性能 ...

  5. 论文阅读-基于深度强化学习的方法解决多智能体防御和攻击问题

    论文原题目:A deep reinforcement learning-based method applied for solving multi-agent defense and attack ...

  6. MATLAB强化学习实战(一) 强化学习智能体训练总览

    强化学习智能体训练总览 简介 训练算法 情节管理器 保存候选智能体 并行计算 GPU加速 验证训练后的策略 环境验证 简介 创建环境和强化学习智能体后,您可以使用训练功能在环境中训练智能体. 要配置您 ...

  7. MATLAB强化学习实战(七) 在Simulink中训练DDPG控制倒立摆系统

    在Simulink中训练DDPG控制倒立摆系统 倒立摆的Simscape模型 创建环境接口 创建DDPG智能体 训练智能体 DDPG智能体仿真 此示例显示了如何训练深度确定性策略梯度(DDPG)智能体 ...

  8. MATLAB强化学习实战(十二) 创建自定义强化学习算法的智能体

    创建自定义强化学习算法的智能体 创建环境 定义策略 自定义智能体类 智能体属性 构造函数 相关函数 可选功能 创建自定义智能体 训练自定义智能体 自定义智能体仿真 本示例说明如何为您自己的自定义强化学 ...

  9. MATLAB强化学习实战(二) 使用并行计算训练倒立摆系统

    使用并行计算训练倒立摆系统 行动者的并行训练 创建Cart-Pole MATLAB环境接口 创建AC智能体 并行训练选项 训练智能体 AC智能体仿真 参考文献 此示例显示了如何通过使用异步并行训练来训 ...

  10. 多智能体强化学习:鼓励共享多智能体强化学习中的多样性

    题目:Celebrating Diversity in Shared Multi-Agent Reinforcement Learning 出处:Neural Information Processi ...

最新文章

  1. pmdk -- libpmemlog 介绍
  2. 可能是最好的跨域解决方案了
  3. Vue项目构建设计说明
  4. ML之sklearn:sklearn库中的ShuffleSplit()函数和StratifiedShuffleSplit()函数的讲解
  5. centos7的网络设置
  6. hibernate正向生成数据库表以及配置——Student.hbm.xml
  7. 前端学习(2499):Property or method “name“ is not defined on the instance but referenced during render. Ma
  8. linux平台下通过mcr方式从c++程序中调用matlab函数
  9. PHP操作MongoDB GridFS 存储文件
  10. 软件的极简主义的三个大敌:配置文件,冗余的参数,和大量复杂的接口。
  11. python语言能做什么-python语言能做什么
  12. java回溯_java实现回溯算法
  13. 【Unity3D】报错 Some objects were not cleaned up when closing the scene.
  14. VGG model 涉及到的paper
  15. 软考高项记忆小妙招-项目章程
  16. 算法 — 数字三角形
  17. android xml 圆形图片,Android ImageView实现圆角,圆形图片
  18. 01-如何选购CPU散热器?小白装机通俗易懂的水冷/风冷CPU散热器知识
  19. 收了赎金还撕票?世界安全专家已不能忍,合力对抗勒索软件 | RSA 2017
  20. 个人信用报告内容组成和解读(7) ---公共信息明细

热门文章

  1. Linux网络配置(NAT模式)
  2. windows电脑桌面透明便签待办分类怎么添加
  3. php中while什么意思,php while 循环是什么意思 - php完全自学手册 - php中文网手册
  4. 图的深度优先遍历(DFS)
  5. python xlwt写excel_Python使用xlwt写excel并设置写入格式
  6. html表头和左侧固定js,JS固定表头及固定左边列
  7. 深入理解LTE网络的CDRX
  8. 华为浏览器如何进入阅读模式_华为浏览器有阅读模式吗
  9. 偶极子天线的优缺点_关于偶极子天线的若干问题。
  10. 一种改进CA-CFAR算法及其MATLAB编程实现,论文仿真——《基于LFMCW雷达多目标检测的CA-CFAR改进算法》