主要内容

培训交流代理Cart-Pole平衡系统

这个例子展示了如何训练一个actor-critic (AC)代理来平衡cart-pole MATLAB®系统建模。

在交流中介的更多信息,见Actor-Critic (AC)代理。为例展示如何使用并行计算,火车AC代理列车空调代理使用并行计算平衡Cart-Pole系统

Cart-Pole MATLAB环境

强化学习环境对于这个示例是一个极连接到一个unactuated联合手推车,沿着一个无摩擦的轨道。培训的目标是使钟摆直立,没有跌倒。

对于这个环境:

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

  • 钟摆开始与一个初始角直立rad -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双)
env。PenaltyForFalling = -10;

接口有一个离散的行动空间,两种可能的力值的代理可以应用一个购物车,-10年或10 N。

从环境中获得的观察和操作信息界面。

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

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

rng (0)

创建交流代理

AC代理接近折扣累积使用值函数评论家长期回报。必须接受一个观测值函数批评者作为输入,并返回一个标量(估计折扣累积长期奖励)作为输出。

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

criticNet = [featureInputLayer (obsInfo.Dimension (1) fullyConnectedLayer (32) reluLayer fullyConnectedLayer (1)];

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

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

创建评论家接近者对象使用criticNet,观测规范。有关更多信息,请参见rlValueFunction

评论家= rlValueFunction (criticNet obsInfo);

检查评论家与随机观测输入。

getValue(评论家,{兰德(obsInfo.Dimension)})
ans =-0.3590

AC代理决定使用随机操作政策,而离散行动空间由离散近似分类的演员。这个演员必须观察信号作为输入,并返回一个概率为每一个行动。

近似策略函数中的演员,使用深层神经网络。层对象的网络定义为一个数组,并获得观测空间的维数和可能的行动环境规范的对象。

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

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

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

创建角色接近者对象使用actorNet和观察和操作规范。有关更多信息,请参见rlDiscreteCategoricalActor

演员= rlDiscreteCategoricalActor (actorNet obsInfo actInfo);

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

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

使用演员和评论家创建代理。有关更多信息,请参见rlACAgent

代理= rlACAgent(演员、批评);

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

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

指定代理选项,包括演员和评论家训练选项,使用点符号。或者,您可以使用rlACAgentOptionsrlOptimizerOptions在创建代理对象。

agent.AgentOptions。EntropyLossWeight = 0.01;agent.AgentOptions.ActorOptimizerOptions。LearnRate = 1飞行;agent.AgentOptions.ActorOptimizerOptions。GradientThreshold = 1;agent.AgentOptions.CriticOptimizerOptions。LearnRate = 1飞行;agent.AgentOptions.CriticOptimizerOptions。GradientThreshold = 1;

火车代理

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

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

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

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

有关更多信息,请参见rlTrainingOptions

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

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

情节(env)

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

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

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

模拟交流代理

验证培训代理的性能,模拟在cart-pole环境。代理模拟更多的信息,请参阅rlSimulationOptionssim卡

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

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

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

另请参阅

应用程序

功能

对象

相关的例子

更多关于