火车DDPG代理和平衡摆摆动
这个例子展示了如何训练深决定性策略梯度(DDPG)代理和平衡一个钟摆建模仿真软件®。金宝app
DDPG代理的更多信息,请参阅深决定性策略梯度代理。例如,列车在MATLAB®DDPG代理,看看火车DDPG剂来控制双积分器系统。
摆摆起模型
强化学习环境对于这个示例是一个简单的无摩擦摆,最初挂在一个向下的位置。培训的目标是使钟摆直立而不摔倒使用最少的控制工作。
打开模型。
mdl =“rlSimplePendulumModel”;open_system (mdl)
对于这个模型:
向上的平衡摆位置
0
弧度,向下悬挂位置π
弧度。转矩操作信号从代理环境从2到2 N·m。
的观测环境是摆角的正弦、余弦的摆角,和摆角的导数。
奖励 ,在每一个时间步,提供
在这里:
的位移角直立位置。
的导数是位移角。
从前面的时间步长控制的努力。
关于这个模型的更多信息,请参阅负载预定义的仿真软件环境金宝app。
创建环境接口
创建一个预定义的钟摆环境界面。
env = rlPredefinedEnv (“SimplePendulumModel-Continuous”)
env = 金宝appSimulinkEnvWithAgent属性:模型:rlSimplePendulumModel AgentBlock: rlSimplePendulumModel / RL代理ResetFcn: [] UseFastRestart:
接口有一个持续的行动空间之间的代理可以应用扭矩值2 - 2 N·m的钟摆。
设置观测环境的摆角的正弦、余弦的摆角,和摆角的导数。
numObs = 3;set_param (“rlSimplePendulumModel /创建观察”,“ThetaObservationHandling”,“要求”);
定义初始条件的摆挂向下,指定一个环境重置函数使用一个匿名函数处理。这个重置函数设置工作空间变量的模型theta0
来π
。
env。ResetFcn = @(在)setVariable (,“theta0”π,“工作区”、mdl);
指定仿真时间特遣部队
和代理样品时间Ts
在几秒钟内。
t = 0.05;Tf = 20;
解决随机发生器再现性的种子。
rng (0)
创建DDPG代理
DDPG代理接近长期奖励,观察和操作,使用批评价值函数表示。创建评论家,首先创建一个深层神经网络和两个输入(国家和行动)和一个输出。更多信息创建一个深层神经网络价值函数表示,看到的创建政策和价值功能。
statePath = [featureInputLayer numObs,“归一化”,“没有”,“名字”,“观察”)fullyConnectedLayer (400,“名字”,“CriticStateFC1”)reluLayer (“名字”,“CriticRelu1”)fullyConnectedLayer (300,“名字”,“CriticStateFC2”));actionPath = [featureInputLayer (1,“归一化”,“没有”,“名字”,“行动”)fullyConnectedLayer (300,“名字”,“CriticActionFC1”,“BiasLearnRateFactor”,0)];commonPath = [additionLayer (2,“名字”,“添加”)reluLayer (“名字”,“CriticCommonRelu”)fullyConnectedLayer (1,“名字”,“CriticOutput”));criticNetwork = layerGraph ();criticNetwork = addLayers (criticNetwork statePath);criticNetwork = addLayers (criticNetwork actionPath);criticNetwork = addLayers (criticNetwork commonPath);criticNetwork = connectLayers (criticNetwork,“CriticStateFC2”,“添加/三机一体”);criticNetwork = connectLayers (criticNetwork,“CriticActionFC1”,“添加/ in2”);criticNetwork = dlnetwork (criticNetwork);
查看评论家网络配置。
图绘制(layerGraph (criticNetwork))
使用指定选项评论家表示rlOptimizerOptions
。
criticOpts = rlOptimizerOptions (“LearnRate”1 e 03“GradientThreshold”1);
创建一个使用指定的评论家表示深层神经网络和选项。您还必须指定动作和评论家的观测信息,你从环境中获取接口。有关更多信息,请参见rlQValueRepresentation
。
obsInfo = getObservationInfo (env);actInfo = getActionInfo (env);评论家= rlQValueFunction (criticNetwork obsInfo actInfo,“ObservationInputNames”,“观察”,“ActionInputNames”,“行动”);
DDPG代理决定哪些操作使用演员表示给定的观测。创建演员,首先创建一个深和一个输入神经网络,观察,和一个输出,行动。
构建演员的方式类似于评论家。有关更多信息,请参见rlDeterministicActorRepresentation
。
actorNetwork = [featureInputLayer numObs,“归一化”,“没有”,“名字”,“观察”)fullyConnectedLayer (400,“名字”,“ActorFC1”)reluLayer (“名字”,“ActorRelu1”)fullyConnectedLayer (300,“名字”,“ActorFC2”)reluLayer (“名字”,“ActorRelu2”)fullyConnectedLayer (1,“名字”,“ActorFC3”)tanhLayer (“名字”,“ActorTanh”)scalingLayer (“名字”,“ActorScaling”,“规模”马克斯(actInfo.UpperLimit)));actorNetwork = dlnetwork (actorNetwork);actorOpts = rlOptimizerOptions (“LearnRate”1 e-04“GradientThreshold”1);演员= rlContinuousDeterministicActor (actorNetwork obsInfo actInfo);
创建DDPG代理,首先使用指定DDPG代理选项rlDDPGAgentOptions
。
agentOpts = rlDDPGAgentOptions (…“SampleTime”Ts,…“CriticOptimizerOptions”criticOpts,…“ActorOptimizerOptions”actorOpts,…“ExperienceBufferLength”1 e6,…“DiscountFactor”,0.99,…“MiniBatchSize”,128);agentOpts.NoiseOptions。方差= 0.6;agentOpts.NoiseOptions。VarianceDecayRate = 1 e-5;
然后创建DDPG代理使用指定的演员表示,评论家表示,和代理的选择。有关更多信息,请参见rlDDPGAgent
。
代理= rlDDPGAgent(演员、评论家、agentOpts);
火车代理
培训代理商,首先指定培训选项。对于这个示例,使用以下选项。
运行培训最多50000集,每集持久的最多
装天花板(Tf / Ts)
时间的步骤。在事件管理器对话框显示培训进展(设置
情节
在命令行选项)和禁用显示(设置详细的
选项假
)。停止训练当代理接收到平均累积奖励大于-740连续在5集。在这一点上,代理可以快速平衡钟摆在直立位置使用最少的控制工作。
保存一份代理每集累积奖励大于-740。
有关更多信息,请参见rlTrainingOptions
。
maxepisodes = 5000;maxsteps =装天花板(Tf / Ts);trainOpts = rlTrainingOptions (…“MaxEpisodes”maxepisodes,…“MaxStepsPerEpisode”maxsteps,…“ScoreAveragingWindowLength”5,…“详细”假的,…“阴谋”,“训练进步”,…“StopTrainingCriteria”,“AverageReward”,…“StopTrainingValue”,-740,…“SaveAgentCriteria”,“EpisodeReward”,…“SaveAgentValue”,-740);
火车代理使用火车
函数。培训这个代理是一个计算密集型过程,需要几个小时才能完成。节省时间在运行这个例子中,加载一个pretrained代理设置doTraining
来假
。训练自己代理,集doTraining
来真正的
。
doTraining = false;如果doTraining%培训代理。trainingStats =火车(代理,env, trainOpts);其他的%加载pretrained代理的例子。负载(“金宝appSimulinkPendulumDDPG.mat”,“代理”)结束
模拟DDPG代理
验证培训代理的性能,模拟在钟摆的环境。代理模拟更多的信息,请参阅rlSimulationOptions
和sim卡
。
simOptions = rlSimulationOptions (“MaxSteps”,500);经验= sim (env,代理,simOptions);
另请参阅
rlDDPGAgent
|rl金宝appSimulinkEnv
|火车