主要内容

培训DQN员工平衡车杆系统

此示例演示如何训练深度Q学习网络(DQN)代理来平衡在MATLAB®中建模的车杆系统。

有关DQN代理的更多信息,请参阅深Q-Network代理。有关在Simulink®中培训DQN代理的示例,请参阅万博1manbetx训练DQN Agent上摆和平衡摆

Cart-Pole MATLAB环境

本例的强化学习环境是一个连接在小车上的非驱动关节上的杆,它沿着无摩擦的轨道移动。训练目标是使杆子直立而不摔倒。

对于这种环境:

  • 向上平衡杆位置为0弧度,下悬位置为圆周率弧度。

  • 杆开始垂直,初始角度在-0.05和0.05弧度之间。

  • 从代理到环境的力作用信号为-10到10 N。

  • 从环境中观察到的是小车的位置和速度、极角和极角导数。

  • 如果杆距垂直方向超过12度,或者车距初始位置移动超过2.4米,则该插曲终止。

  • 杆保持直立的每一步都会获得+1的奖励。杆落下时会受到-5的惩罚。

有关此模型的详细信息,请参见加载预定义的控制系统环境

创建环境接口

为系统创建预定义的环境接口。

env = rlPredefinedEnv (“CartPole离散型”
env=CartPoleDiscreation属性:重力:9.8000质量Cart:1质量杆:0.1000长度:0.5000最大作用力:10 Ts:0.0200 Threshold弧度:0.2094 X阈值:2.4000不下降的奖励:1下降的惩罚:-5状态:[4x1加倍]

界面有一个离散的动作空间,在该空间中,代理可以将两个可能的力值中的一个应用于购物车,-10或10 N。

获得观察和行动规范信息。

obsInfo = getObservationInfo (env)
obsInfo = rlNumericSpec带有属性:LowerLimit: -Inf UpperLimit: Inf Name: "CartPole States" Description: "x, dx, theta, dtheta" Dimension: [4 1] DataType: "double"
actInfo = getActionInfo (env)
actInfo=rlFiniteSetSpec,属性为:元素:[-10 10]名称:“CartPole操作”说明:[0x0字符串]维度:[1]数据类型:“双”

修复随机生成器种子以获得再现性。

rng (0)

创建DQN代理

DQN代理使用价值函数近似于给定观察和行动的长期回报。

DQN代理可以使用多输出q值批判逼近器,这通常更有效。多输出近似器将观察值作为输入,状态行为值作为输出。每个输出元素表示从观察输入所指示的状态中采取相应离散行动的预期累积长期回报。

要创建批评家,首先创建一个具有一个输入(四维观察状态)和一个具有两个元素的输出向量(一个用于10N动作,另一个用于–10N动作)的深度神经网络。有关基于神经网络创建值函数表示的更多信息,请参阅创建策略和价值功能表示

dnn = [featureInputLayer(obsInfo.Dimension(1)),“归一化”“没有”“名字”“国家”)完全连接层(24,“名字”“CriticStateFC1”) reluLayer (“名字”“CriticRelu1”)完全连接层(24,“名字”“CriticStateFC2”) reluLayer (“名字”“CriticCommonRelu”) fullyConnectedLayer(长度(actInfo.Elements),“名字”“输出”)];

查看网络配置。

图绘制(layerGraph(款)

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

为使用的批评家表示指定一些训练选项rlRepresentationOptions

criticOpts=rlRepresentationOptions(“LearnRate”, 0.001,“GradientThreshold”,1);

使用指定的神经网络和选项创建批评家表示。有关更多信息,请参阅rlQValueRepresentation

批评家=rlQValueRepresentation(dnn、obsInfo、actInfo、,“观察”,{“国家”},批判者);

要创建DQN代理,首先使用rlDQNAgentOptions

agentOpts = rlDQNAgentOptions (...“UseDoubleDQN”错误的...“目标平滑因子”1....“TargetUpdateFrequency”4....“ExperienceBufferLength”, 100000,...“折扣演员”, 0.99,...“MiniBatchSize”,256);

然后,使用指定的critic表示和代理选项创建DQN代理。有关更多信息,请参阅rlDQNAgent

代理=rlDQNAgent(评论家、代理);

火车代理

要培训代理,请首先指定培训选项。对于本例,请使用以下选项:

  • 一次训练最多包含1000集,每集最多持续500步时间。

  • 在“插曲管理器”对话框中显示培训进度(设置情节选项),并禁用命令行显示(设置冗长的选择).

  • 当代理收到超过480的移动平均累积奖励时停止训练。此时,代理可以在直立位置平衡车杆系统。

有关详细信息,请参阅RL培训选项

trainOpts = rlTrainingOptions (...“最大集”, 1000,...“MaxStepsPerEpisode”, 500,...“详细”错误的...“阴谋”“训练进步”...“StopTrainingCriteria”“AverageReward”...“停止训练值”,480);

您可以使用可视化工具来可视化推车杆系统情节在训练或模拟过程中发挥作用。

地块(环境)

Figure Cart Pole Visualizer包含一个轴对象。轴对象包含6个类型为线、多边形的对象。

使用火车函数。培训此代理是一个计算密集型过程,需要几分钟才能完成。要在运行此示例时节省时间,请通过设置doTraining.要亲自培训特工,请设置doTraining符合事实的

doTraining=false;如果doTraining培训代理商。trainingStats=列车(代理人、环境、列车员);其他的%加载示例的预训练代理。负载(“MATLABCartpoleDQNMulti.mat”“代理”结束

模拟DQN代理

为了验证训练过的代理的性能,在车杆环境中模拟它。有关代理模拟的更多信息,请参见模拟选项sim卡.即使模拟时间增加到500步,该代理也能平衡车杆。

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

Figure Cart Pole Visualizer包含一个轴对象。轴对象包含6个类型为线、多边形的对象。

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

另请参阅

相关话题