这个例子显示了如何培养一个演员,评论家(AC)剂来平衡MATLAB®建模的车极体系。
有关AC代理的更多信息,请参见演员,评论家代理。对于使用并行计算,见上训练AC剂的例子火车AC代理余额车针的系统使用并行计算的例子。
这个例子的强化学习环境是连接到致动关节上车一极,其沿摩擦轨道移动。培训目标是使钟摆挺立不掉落。
对于这个环境:
向上的平衡摆位置是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代理使用评论家值函数表示来近似给出的观察和操作的长期回报。要创建批评家,首先要创建一个深度神经网络,其中有一个输入(观察)和一个输出(状态值)。批评家网络的输入大小为(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个可能的动作,-10
和10
。
构建演员以同样的方式给评论家。欲了解更多信息,请参阅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”,“代理人”);结束
为了验证训练有素剂的性能,模拟它的车极环境中。有关代理仿真的更多信息,请参阅rlSimulationOptions
和SIM卡
。
simOptions = rlSimulationOptions (“MaxSteps”,500);经验= SIM(ENV,代理,simOptions);
totalReward =总和(experience.Reward)
totalReward = 500