区块链技术博客
www.b2bchain.cn

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

这篇文章主要介绍了MATLAB强化学习实战(四) 训练DDPG智能体控制双积分器系统的讲解,通过具体代码实例进行16683 讲解,并且分析了MATLAB强化学习实战(四) 训练DDPG智能体控制双积分器系统的详细步骤与相关技巧,需要的朋友可以参考下https://www.b2bchain.cn/?p=16683

本文实例讲述了2、树莓派设置连接WiFi,开启VNC等等的讲解。分享给大家供大家参考文章查询地址https://www.b2bchain.cn/7039.html。具体如下:

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

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

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

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

双积分器的MATLAB环境

此示例的强化学习环境是具有增益的二阶双积分器系统。 训练目标是通过施加力输入来控制介质在二阶系统中的位置。
MATLAB强化学习实战(四) 训练DDPG智能体控制双积分器系统
对于这种环境:

  1. 从4到4单位之间的初始位置开始。
  2. 从介质到环境的力作用信号是2到2N。
  3. 从环境中观察到的是质量的位置和速度。
  4. 如果质量从原来的位置移动超过5米或如果x <0.01,则episode 终止。
  5. 每一步提供的奖励r(t)是r(t)的离散化
    MATLAB强化学习实战(四) 训练DDPG智能体控制双积分器系统

这里:

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

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

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

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

创建环境接口

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

env = rlPredefinedEnv("DoubleIntegrator-Continuous") 

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

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) 

MATLAB强化学习实战(四) 训练DDPG智能体控制双积分器系统
使用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) 

MATLAB强化学习实战(四) 训练DDPG智能体控制双积分器系统
使用训练功能训练智能体。 训练此智能体是一个需要大量时间才能完成的计算密集型过程。 为了节省运行本示例的时间,请通过将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 

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

DDPG智能体仿真

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

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

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

totalReward = sum(experience.Reward) 

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

本文转自互联网,侵权联系删除MATLAB强化学习实战(四) 训练DDPG智能体控制双积分器系统

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » MATLAB强化学习实战(四) 训练DDPG智能体控制双积分器系统
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们