MATLAB强化学习实战(四) 训练DDPG智能体控制双积分器系统
训练DDPG智能体控制双积分器系统
- 双积分器的MATLAB环境
- 创建环境接口
- 创建DDPG智能体
- 训练智能体
- DDPG智能体仿真
该示例说明了如何训练深度确定性策略梯度(DDPG)智能体来控制以MATLAB®为模型的二阶动态系统。
有关DDPG智能体的详细信息,请参阅深度确定性策略梯度智能体。 有关显示如何在Simulink®中训练DDPG智能体的示例,请参阅训练DDPG智能体平衡摆。
双积分器的MATLAB环境
此示例的强化学习环境是具有增益的二阶双积分器系统。 训练目标是通过施加力输入来控制介质在二阶系统中的位置。
对于这种环境:
- 从4到4单位之间的初始位置开始。
- 从介质到环境的力作用信号是2到2N。
- 从环境中观察到的是质量的位置和速度。
- 如果质量从原来的位置移动超过5米或如果x <0.01,则episode 终止。
- 每一步提供的奖励r(t)是r(t)的离散化
这里:
x是质量的状态向量。
u是施加到介质上的力。
Q是控制性能的权重; Q = [10 0; 0 1]。
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);
训练智能体
要训练智能体,请首先指定训练选项。 对于此示例,使用以下选项。
在训练环节中最多运行1000 episodes,每个episode最多持续200个时间步。
在“情节管理器”对话框中显示训练进度(设置“Plots ”选项),并禁用命令行显示(设置“Verbose ”选项)。
当智能体收到的移动平均累计奖励大于–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智能体控制双积分器系统相关推荐
- MATLAB强化学习工具箱(十一)训练DDPG智能体控制飞行机器人
训练DDPG智能体控制飞行器 飞行机器人模型 创建集成模型 动作与观察 创建环境接口 重置函数 创建DDPG智能体 训练智能体 DDPG智能体仿真 本示例说明如何训练深度确定性策略梯度(DDPG)智能 ...
- 多智能体强化学习(四)多智能体RL
多智能体强化学习(四)多智能体RL 1. 问题的公式:随机博弈 2. 解决随机对策 2.1 基于价值的MARL方法 2.2 基于策略的MARL方法 2.3 纳什均衡的求解概念 2.4 特殊类型的随机策 ...
- MATLAB强化学习实战(八) 训练多个智能体执行协作任务
训练多个智能体执行协作任务 创建环境 创建智能体 训练智能体 智能体仿真 本示例说明如何在Simulink®环境上设置多智能体训练. 在该示例中,您训练了两个智能体以协同执行移动对象的任务. 2020 ...
- MATLAB强化学习实战(十三) 使用强化学习智能体训练Biped机器人行走
使用强化学习智能体训练Biped机器人行走 两足机器人模型 创建环境接口 选择和创建训练智能体 DDPG Agent TD3 Agent 指定训练选项和训练智能体 仿真训练过的智能体 比较智能体性能 ...
- 论文阅读-基于深度强化学习的方法解决多智能体防御和攻击问题
论文原题目:A deep reinforcement learning-based method applied for solving multi-agent defense and attack ...
- MATLAB强化学习实战(一) 强化学习智能体训练总览
强化学习智能体训练总览 简介 训练算法 情节管理器 保存候选智能体 并行计算 GPU加速 验证训练后的策略 环境验证 简介 创建环境和强化学习智能体后,您可以使用训练功能在环境中训练智能体. 要配置您 ...
- MATLAB强化学习实战(七) 在Simulink中训练DDPG控制倒立摆系统
在Simulink中训练DDPG控制倒立摆系统 倒立摆的Simscape模型 创建环境接口 创建DDPG智能体 训练智能体 DDPG智能体仿真 此示例显示了如何训练深度确定性策略梯度(DDPG)智能体 ...
- MATLAB强化学习实战(十二) 创建自定义强化学习算法的智能体
创建自定义强化学习算法的智能体 创建环境 定义策略 自定义智能体类 智能体属性 构造函数 相关函数 可选功能 创建自定义智能体 训练自定义智能体 自定义智能体仿真 本示例说明如何为您自己的自定义强化学 ...
- MATLAB强化学习实战(二) 使用并行计算训练倒立摆系统
使用并行计算训练倒立摆系统 行动者的并行训练 创建Cart-Pole MATLAB环境接口 创建AC智能体 并行训练选项 训练智能体 AC智能体仿真 参考文献 此示例显示了如何通过使用异步并行训练来训 ...
- 多智能体强化学习:鼓励共享多智能体强化学习中的多样性
题目:Celebrating Diversity in Shared Multi-Agent Reinforcement Learning 出处:Neural Information Processi ...
最新文章
- pmdk -- libpmemlog 介绍
- 可能是最好的跨域解决方案了
- Vue项目构建设计说明
- ML之sklearn:sklearn库中的ShuffleSplit()函数和StratifiedShuffleSplit()函数的讲解
- centos7的网络设置
- hibernate正向生成数据库表以及配置——Student.hbm.xml
- 前端学习(2499):Property or method “name“ is not defined on the instance but referenced during render. Ma
- linux平台下通过mcr方式从c++程序中调用matlab函数
- PHP操作MongoDB GridFS 存储文件
- 软件的极简主义的三个大敌:配置文件,冗余的参数,和大量复杂的接口。
- python语言能做什么-python语言能做什么
- java回溯_java实现回溯算法
- 【Unity3D】报错 Some objects were not cleaned up when closing the scene.
- VGG model 涉及到的paper
- 软考高项记忆小妙招-项目章程
- 算法 — 数字三角形
- android xml 圆形图片,Android ImageView实现圆角,圆形图片
- 01-如何选购CPU散热器?小白装机通俗易懂的水冷/风冷CPU散热器知识
- 收了赎金还撕票?世界安全专家已不能忍,合力对抗勒索软件 | RSA 2017
- 个人信用报告内容组成和解读(7) ---公共信息明细
热门文章
- Linux网络配置(NAT模式)
- windows电脑桌面透明便签待办分类怎么添加
- php中while什么意思,php while 循环是什么意思 - php完全自学手册 - php中文网手册
- 图的深度优先遍历(DFS)
- python xlwt写excel_Python使用xlwt写excel并设置写入格式
- html表头和左侧固定js,JS固定表头及固定左边列
- 深入理解LTE网络的CDRX
- 华为浏览器如何进入阅读模式_华为浏览器有阅读模式吗
- 偶极子天线的优缺点_关于偶极子天线的若干问题。
- 一种改进CA-CFAR算法及其MATLAB编程实现,论文仿真——《基于LFMCW雷达多目标检测的CA-CFAR改进算法》