训练PG代理人平衡吊柱系统

这个例子展示了如何训练一个策略梯度(PG)代理来平衡MATLAB®中建模的一个汽车杆系统。有关PG代理的更多信息,请参见政策梯度代理

有关使用基线训练PG代理的示例,请参见列PG代理与基准到控制双积分系统的例子。

车极MATLAB环境

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

对于这个环境:

  • 向上的平衡摆位置是0弧度,并且垂下位置π弧度

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

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

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

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

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

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

创建环境接口

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

ENV = rlPredefinedEnv(“CartPole离散”
env = cartpole离散化与属性:重力:9.8000 MassCart: 1 MassCart: 0.1000长度:0.5000 MaxForce: 10 Ts: 0.0200 the tathreshold oldra: 0.2094 XThreshold: 2.4000不下降奖励:1下降惩罚:-5状态:[4x1双]

该接口有一个离散的动作空间,其中所述试剂可以适用于车两个可能的力值中的一个,-10或10 N.

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

obsInfo = getObservationInfo(ENV);numObservations = obsInfo.Dimension(1);actInfo = getActionInfo(ENV);

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

RNG(0)

创建PG剂

PG代理使用一个参与者表示来决定采取哪个动作。要创建actor,首先创建一个深度神经网络,其中有一个输入(观察)和一个输出(动作)。输出大小的actor网络是2,因为代理可以应用2种可能的操作,10或-10。有关创建深度神经网络值函数表示的更多信息,请参见创建策略和价值功能交涉

actorNetwork = [imageInputLayer([numObservations 1 1]),'正常化''没有''名称'“状态”)fullyConnectedLayer(2,'名称'“俱乐部”)softmaxLayer('名称'“actionProb”)];

指定使用的演员表示选项rlRepresentationOptions

actorOpts = rlRepresentationOptions('LearnRate',1E-2,'GradientThreshold',1);

创建使用指定的深层神经网络和选项演员表示。您还必须指定评论家,你已经从环境接口取得的动作和观察信息。欲了解更多信息,请参阅rlStochasticActorRepresentation

演员= rlStochasticActorRepresentation (actorNetwork obsInfo actInfo,“观察”,{“状态”},actorOpts);

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

代理= rlPGAgent(演员);

列车代理

为了培养剂,先指定的培训方案。在这个例子中,使用下列选项:

  • 每集训练最多1000集,每集最多200步。

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

  • 当代理收到超过连续100集超过195的平均累积奖励时停止训练。此时,agent可以将钟摆摆正。

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

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

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

情节(env)

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

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

模拟PG代理

为了验证训练有素剂的性能,模拟它的车极环境中。有关代理仿真的更多信息,请参阅rlSimulationOptionsSIM卡。当仿真时间增加到500时,该智能体仍能保持平衡。

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

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

也可以看看

相关的话题