火车PG代理Cart-Pole平衡系统
这个例子展示了如何训练策略梯度(PG)代理来平衡cart-pole MATLAB®系统建模。PG代理的更多信息,请参阅政策梯度代理。
例如,火车PG代理基线,明白了火车PG代理与基线控制双积分器系统。
Cart-Pole MATLAB环境
强化学习环境对于这个示例是一个极连接到一个unactuated联合手推车,沿着一个无摩擦的轨道。培训的目标是使钟摆直立,没有跌倒。
对于这个环境:
向上的平衡摆位置
0
弧度,向下悬挂位置π
弧度。钟摆开始直立初始夹角-0.05和0.05弧度。
力行动信号从代理环境从-10年到10 N。
来自环境的观察车的位置和速度,摆角和摆角的导数。
这一事件终止如果北极是超过12度从垂直或如果购物车移动超过2.4从原始位置。
+ 1的奖励提供了每一个时间步,北极保持正直。一个点球5摆落时应用。
关于这个模型的更多信息,请参阅负载预定义的控制系统环境。
创建环境接口
创建一个预定义的钟摆环境界面。
env = rlPredefinedEnv (“CartPole-Discrete”)
env = CartPoleDiscreteAction属性:重力:9.8000 MassCart: 1 MassPole: 0.1000长度:0.5000 MaxForce: 10 Ts: 0.0200 ThetaThresholdRadians: 0.2094 XThreshold: 2.4000 RewardForNotFalling: 1 PenaltyForFalling: 5状态:[4 x1双)
接口有一个离散的行动空间,两种可能的力值的代理可以应用一个购物车,-10年或10 N。
从环境中获得的观察和操作信息界面。
obsInfo = getObservationInfo (env);numObservations = obsInfo.Dimension (1);actInfo = getActionInfo (env);
解决随机发生器再现性的种子。
rng (0)
创建PG代理
PG代理决定哪些操作使用演员表示给定的观测。创建演员,首先创建一个深层神经网络与一个输入(观察)和一个输出(行动)。演员网络有两个输出,对应的数量可能的行动。有关创建深神经网络策略的更多信息表示,看到的创建政策和价值函数表示。
actorNetwork = [featureInputLayer numObservations,“归一化”,“没有”,“名字”,“状态”)fullyConnectedLayer (2“名字”,“俱乐部”)softmaxLayer (“名字”,“actionProb”));
使用指定选项演员表示rlRepresentationOptions
。
actorOpts = rlRepresentationOptions (“LearnRate”1飞行,“GradientThreshold”1);
创建一个演员表示使用指定的深层神经网络和选项。您还必须指定的操作和观察信息评论家,你从环境获得接口。有关更多信息,请参见rlStochasticActorRepresentation
。
演员= rlStochasticActorRepresentation (actorNetwork obsInfo actInfo,“观察”,{“状态”},actorOpts);
创建代理使用指定的演员表示和默认代理选项。有关更多信息,请参见rlPGAgent
。
代理= rlPGAgent(演员);
火车代理
培训代理商,首先指定培训选项。对于这个示例,使用以下选项。
运行每个训练集最多1000集,每集持续最多200时间步。
在事件管理器对话框显示培训进展(设置
情节
在命令行选项)和禁用显示(设置详细的
选项假
)。停止训练当代理接收到平均累积奖励大于195连续超过100集。在这一点上,代理可以平衡钟摆在直立位置。
有关更多信息,请参见rlTrainingOptions
。
trainOpts = rlTrainingOptions (…“MaxEpisodes”,1000,…“MaxStepsPerEpisode”,200,…“详细”假的,…“阴谋”,“训练进步”,…“StopTrainingCriteria”,“AverageReward”,…“StopTrainingValue”,195,…“ScoreAveragingWindowLength”,100);
你可以想象cart-pole系统使用情节
函数在训练或模拟。
情节(env)
火车代理使用火车
函数。培训这个代理是一个计算密集型的过程需要几分钟才能完成。节省时间在运行这个例子中,加载一个pretrained代理设置doTraining
来假
。训练自己代理,集doTraining
来真正的
。
doTraining = false;如果doTraining%培训代理。trainingStats =火车(代理,env, trainOpts);其他的%加载pretrained代理的例子。负载(“MATLABCartpolePG.mat”,“代理”);结束
模拟PG代理
验证培训代理的性能,模拟在cart-pole环境。代理模拟更多的信息,请参阅rlSimulationOptions
和sim卡
。代理可以平衡cart-pole系统即使在仿真时间增加到500步。
simOptions = rlSimulationOptions (“MaxSteps”,500);经验= sim (env,代理,simOptions);
totalReward =总和(experience.Reward)
totalReward = 500