主要内容

火车DDPG剂来控制双积分器系统

这个例子展示了如何训练深决定性策略梯度(DDPG)代理控制MATLAB®的二阶动态系统建模。

DDPG代理的更多信息,请参阅深决定性策略梯度代理。为一个例子,演示如何在模型训练DDPG代理®,明白了金宝app火车DDPG代理和平衡摆摆动

双积分器MATLAB环境

这个例子的强化学习环境是一个二阶双积分系统增益。培训的目标是控制质量的位置输入二阶系统施加一个力。

对于这个环境:

  • 质量始于4和4单位之间的初始位置。

  • 力行动信号从代理环境从2到2 N。

  • 来自环境的观测质量的位置和速度。

  • 这一事件终止如果质量超过5 m或者从原始位置 | x | < 0 01

  • 奖励 r t ,只要在每一个时间步,是一个离散化 r ( t ) :

r ( t ) = - - - - - - ( x ( t ) x ( t ) + u ( t ) R u ( t ) )

在这里:

  • x 状态向量的质量。

  • u 力应用于质量。

  • 控制性能上的权重; = ( 10 0 ; 0 1 ]

  • R 重量的控制工作; R = 0 01

关于这个模型的更多信息,请参阅负载预定义的控制系统环境

创建环境接口

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

env = rlPredefinedEnv (“DoubleIntegrator-Continuous”)
env = DoubleIntegratorContinuousAction属性:增加:1 Ts: 0.1000 MaxDistance: 5 GoalThreshold: 0.0100问:[2 x2双]R: 0.0100 MaxForce:正状态:[2 x1双)
env。MaxForce =正;

接口有一个持续的行动空间,代理可以从——应用力值的质量。

从环境中获得的观察和操作信息界面。

obsInfo = getObservationInfo (env);numObservations = obsInfo.Dimension (1);actInfo = getActionInfo (env);numActions =元素个数(actInfo);

解决随机发生器再现性的种子。

rng (0)

创建DDPG代理

DDPG代理接近长期奖励,观察和操作,使用批评价值函数表示。创建评论家,首先创建一个深层神经网络和两个输入(国家和行动)和一个输出。有关创建一个神经网络的更多信息价值函数表示,看到的创建政策和价值函数表示

statePath = imageInputLayer ([numObservations 1 (1)“归一化”,“没有”,“名字”,“状态”);actionPath = imageInputLayer ([numActions 1 (1)“归一化”,“没有”,“名字”,“行动”);commonPath = [concatenationLayer (1、2、“名字”,“concat”)quadraticLayer (“名字”,“二次”)fullyConnectedLayer (1,“名字”,“StateValue”,“BiasLearnRateFactor”0,“偏见”,0)];criticNetwork = layerGraph (statePath);criticNetwork = addLayers (criticNetwork actionPath);criticNetwork = addLayers (criticNetwork commonPath);criticNetwork = connectLayers (criticNetwork,“状态”,“concat /三机一体”);criticNetwork = connectLayers (criticNetwork,“行动”,“concat / in2”);

查看评论家网络配置。

图绘制(criticNetwork)

使用指定选项评论家表示rlRepresentationOptions

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

创建一个使用指定的评论家表示神经网络和选项。您还必须指定动作和评论家的观测信息,你从环境中获取接口。有关更多信息,请参见rlQValueRepresentation

评论家= rlQValueRepresentation (criticNetwork obsInfo actInfo,“观察”,{“状态”},“行动”,{“行动”},criticOpts);

DDPG代理决定哪些操作,观察,使用一个演员表示。创建演员,首先创建一个深层神经网络与一个输入(观察)和一个输出(行动)。

构建演员评论家以类似的方式。

actorNetwork = [imageInputLayer [numObservations 1 (1)“归一化”,“没有”,“名字”,“状态”)fullyConnectedLayer (numActions“名字”,“行动”,“BiasLearnRateFactor”0,“偏见”,0)];actorOpts = rlRepresentationOptions (“LearnRate”1 e-04“GradientThreshold”1);演员= rlDeterministicActorRepresentation (actorNetwork obsInfo actInfo,“观察”,{“状态”},“行动”,{“行动”},actorOpts);

创建DDPG代理,首先使用指定DDPG代理选项rlDDPGAgentOptions

agentOpts = rlDDPGAgentOptions (“SampleTime”env.Ts,“TargetSmoothFactor”1 e - 3,“ExperienceBufferLength”1 e6,“DiscountFactor”,0.99,“MiniBatchSize”、32);agentOpts.NoiseOptions。方差= 0.3;agentOpts.NoiseOptions。VarianceDecayRate = 1 e-6;

使用指定的演员表示,创建DDPG代理评论家表示,和代理的选择。有关更多信息,请参见rlDDPGAgent

代理= rlDDPGAgent(演员、评论家、agentOpts);

火车代理

培训代理商,首先指定培训选项。对于这个示例,使用以下选项。

  • 训练运行最多1000集,每集持久最多200时间步。

  • 在事件管理器对话框显示培训进展(设置情节在命令行选项)和禁用显示(设置详细的选项)。

  • 停止训练当代理接收到移动平均累积奖励大于-66。在这一点上,代理可以控制质量的位置使用最少的控制工作。

有关更多信息,请参见rlTrainingOptions

trainOpts = rlTrainingOptions (“MaxEpisodes”,5000,“MaxStepsPerEpisode”,200,“详细”假的,“阴谋”,“训练进步”,“StopTrainingCriteria”,“AverageReward”,“StopTrainingValue”,-66);

你可以想象双积分器环境使用情节函数在训练或模拟。

情节(env)

火车代理使用火车函数。培训这个代理是一个计算密集型过程,需要几个小时才能完成。节省时间在运行这个例子中,加载一个pretrained代理设置doTraining。训练自己代理,集doTraining真正的

doTraining = false;如果doTraining%培训代理。trainingStats =火车(代理,env, trainOpts);其他的%加载pretrained代理的例子。负载(“DoubleIntegDDPG.mat”,“代理”);结束

模拟DDPG代理

验证培训代理的性能,模拟在双积分器的环境。代理模拟更多的信息,请参阅rlSimulationOptionssim卡

simOptions = rlSimulationOptions (“MaxSteps”,500);经验= sim (env,代理,simOptions);

totalReward =总和(experience.Reward)
totalReward =-65.9933

另请参阅

相关的话题