主要内容

火车PG代理Cart-Pole平衡系统

这个例子展示了如何训练策略梯度(PG)代理来平衡cart-pole MATLAB®系统建模。PG代理的更多信息,请参阅策略梯度(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);actInfo = getActionInfo (env);

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

rng (0)

创建PG代理

政策梯度代理、演员执行随机政策离散行动空间由离散近似分类的演员。这个演员必须观察信号作为输入,并返回一个概率为每一个行动。

近似策略中的演员,使用深层神经网络。层对象的网络定义为一个数组,并获得观测空间的维数和可能的行动环境规范的对象。有关创建深神经网络策略的更多信息表示,看到的创建政策和价值功能

actorNet = [featureInputLayer (prod (obsInfo.Dimension)) fullyConnectedLayer (10) reluLayer fullyConnectedLayer(元素个数(actInfo.Elements)) softmaxLayer);

转换为dlnetwork并显示权重的数量。

actorNet = dlnetwork (actorNet);总结(actorNet)
初始化:可学的真正的数字:72输入:1“输入”4特性

创建一个演员表示使用指定的深层神经网络和环境规范的对象。有关更多信息,请参见rlDiscreteCategoricalActor

演员= rlDiscreteCategoricalActor (actorNet obsInfo actInfo);

返回的可能行为的概率分布的函数随机观察,鉴于当前网络的权重,使用评估

复审委员会=评估(演员,{兰德(obsInfo.Dimension)});复审委员会{1}
ans =2 x1单一列向量0.7229 - 0.2771

使用演员创建代理。有关更多信息,请参见rlPGAgent

代理= rlPGAgent(演员);

检查代理使用一个随机观察输入。

getAction(代理,{兰德(obsInfo.Dimension)})
ans =1 x1单元阵列{[-10]}

指定培训选项的演员。或者,您可以使用rlPGAgentOptionsrlOptimizerOptions对象。

agent.AgentOptions.CriticOptimizerOptions。LearnRate = 5 e - 3;agent.AgentOptions.CriticOptimizerOptions。GradientThreshold = 1;

火车代理

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

  • 运行每个训练集最多1000集,每集持续最多500时间步。

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

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

有关更多信息,请参见rlTrainingOptions

trainOpts = rlTrainingOptions (MaxEpisodes = 1000,MaxStepsPerEpisode = 500,Verbose = false,情节=“训练进步”,StopTrainingCriteria =“AverageReward”,StopTrainingValue = 480,ScoreAveragingWindowLength = 100);

你可以想象cart-pole系统使用情节函数在训练或模拟。

情节(env)

图车杆可视化工具包含一个坐标轴对象。坐标轴对象包含6行类型的对象,多边形。

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

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

模拟PG代理

验证培训代理的性能,模拟在cart-pole环境。代理模拟更多的信息,请参阅rlSimulationOptionssim卡。代理可以平衡cart-pole系统即使在仿真时间增加到500步。

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

图车杆可视化工具包含一个坐标轴对象。坐标轴对象包含6行类型的对象,多边形。

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

另请参阅

应用程序

功能

对象

相关的例子

更多关于