培训交流代理商平衡杆系统

这个例子显示了如何培养一个演员,评论家(AC)剂来平衡MATLAB®建模的车极体系。

有关AC代理的更多信息,请参见演员,评论家代理。对于使用并行计算,见上训练AC剂的例子火车AC代理余额车针的系统使用并行计算的例子。

车极点MATLAB环境

这个例子的强化学习环境是连接到致动关节上车一极,其沿摩擦轨道移动。培训目标是使钟摆挺立不掉落。

对于这个环境:

  • 向上的平衡摆位置是0弧度,向下的悬挂位置是π弧度

  • 摆锤开始直立具有+/- 0.05弧度的初始角

  • 从agent到环境的力作用信号为-10到10n

  • 从环境的观测位置和车,摆角的速度,和其衍生物

  • 情节结束,如果极是从垂直大于12度,或从原来的位置的车移动超过2.4米

  • +1的奖励提供了每个时间步长的标杆始终保持直立。当钟摆落在-5点球被应用。

有关此模型的更多信息,请参见预定义加载控制系统环境

创建环境接口

为摆锤创建一个预定义的环境接口。

ENV = rlPredefinedEnv(“CartPole-Discrete”
env = cartpole离散作用与属性:引力:9.8000 MassCart: 1 MassCart: 0.1000长度:0.5000 MaxForce: 10 Ts: 0.0200
env.PenaltyForFalling = -10;

该接口有一个离散的动作空间,在这个空间中,代理可以将两个可能的力值中的一个应用到cart, -10或10n。

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

obsInfo = getObservationInfo (env);actInfo = getActionInfo (env);

修正随机生成器种子的可重复性。

RNG(0)

创建AC代理

AC代理使用评论家值函数表示来近似给出的观察和操作的长期回报。要创建批评家,首先要创建一个深度神经网络,其中有一个输入(观察)和一个输出(状态值)。批评家网络的输入大小为(4 1 1)因为对环境有4个观察。有关创建深层神经网络值函数表示的更多信息,请参阅创建策略和价值功能交涉

criticNetwork = [imageInputLayer([4 1 1],'正常化''没有''名称'“状态”)fullyConnectedLayer(1,'名称''CriticFC')];

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

criticOpts = rlRepresentationOptions ('LearnRate',8E-3,'GradientThreshold'1);

使用指定的深度神经网络和选项创建批评家表示。您还必须指定批评家的操作和观察信息,您已经从环境接口获得了这些信息。欲了解更多信息,请参阅rlValueRepresentation

评论家= rlValueRepresentation(criticNetwork,obsInfo,“观察”,{“状态”},criticOpts);

AC代理使用一个参与者表示来决定在给定的观察中采取哪个动作。要创建参与者,需要创建一个包含一个输入(观察)和一个输出(动作)的深度神经网络。参与者网络的输出大小为2,因为环境有2个可能的动作,-1010

构建演员以同样的方式给评论家。欲了解更多信息,请参阅rlStochasticActorRepresentation

actorNetwork = [imageInputLayer([4 1 1],'正常化''没有''名称'“状态”)fullyConnectedLayer(2,'名称'“俱乐部”)softmaxLayer('名称'“actionProb”)];actorOpts = rlRepresentationOptions('LearnRate',8E-3,'GradientThreshold'1);演员= rlStochasticActorRepresentation (actorNetwork obsInfo actInfo,...“观察”,{“状态”},actorOpts);

要创建AC剂,使用先指定AC代理选项rlACAgentOptions

agentOpts = rlACAgentOptions(...“NumStepsToLookAhead”,32,...“DiscountFactor”,0.99);

然后,使用指定的参与者表示和默认代理选项创建代理。欲了解更多信息,请参阅rlACAgent

剂= rlACAgent(演员,评论家,agentOpts);

列车代理

要培训代理,首先指定培训选项。对于本例,使用以下选项:

  • 运行最多1000个集的每个训练集,每发作持续至多500层的步骤。

  • 显示在情节管理器对话框的训练进度(设置地块选项)和禁用命令行显示(设定详细的选项)。

  • 当代理接收到一个平均的累积奖励大于480超过10个连续的发作停止训练。在这一点上,代理可以在直立位置平衡摆。

欲了解更多信息,请参阅rlTrainingOptions

trainOpts = rlTrainingOptions(...“MaxEpisodes”,1000,...“MaxStepsPerEpisode”,500,...“放牧”假的,...“情节”“训练进度”...'StopTrainingCriteria''AverageReward'...“StopTrainingValue”,480,...'ScoreAveragingWindowLength'10);

推车极系统可以使用的可视化情节训练或模拟过程中的功能。

情节(env)

使用。训练代理培养功能。这是一个计算密集的过程,需要几分钟才能完成。为了节省时间运行这个例子而,装载由设置一个预训练的剂doTraining。自己训练特工,集合doTraining真正的

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

模拟交流代理

为了验证训练有素剂的性能,模拟它的车极环境中。有关代理仿真的更多信息,请参阅rlSimulationOptionsSIM卡

simOptions = rlSimulationOptions (“MaxSteps”,500);经验= SIM(ENV,代理,simOptions);

totalReward =总和(experience.Reward)
totalReward = 500

也可以看看

相关的话题