主要内容

火车DQN代理车道保持辅助使用并行计算

这个例子展示了如何训练深q学习网络(DQN)代理车道保持辅助(党的)模型®使用并行训练。为例,展示了如何培养剂不使用并行训练,明白了火车DQN车道保持辅助剂

DQN代理的更多信息,请参阅深Q-Network (DQN)代理。例如,列车在MATLAB®DQN代理,看看火车DQN代理Cart-Pole平衡系统

DQN并行训练概述

DQN代理,每个工人产生新的体验从其代理和环境的副本。在每一个N步骤,工人发送经验客户端代理(代理与MATLAB®相关流程开始训练)。客户端代理更新它的参数如下。

  • 为异步培训、客户端代理计算梯度和更新代理参数从接收到的经验,没有等待收到所有的工人的经验。然后客户端发送更新后的参数回的职工提供了经验。然后,工人的更新副本代理和继续使用的副本环境生成的经验。

  • 同步训练,客户端代理等待收到所有的工人的经验,然后从所有这些计算梯度的经历。客户端代理参数更新,并将更新后的参数发送给所有的工人在同一时间。然后,所有工人使用单个更新代理副本,连同他们的复制环境,生成的经验。

为自我汽车仿真软件模型

强化学习环境对于这个示例是一个简单的自行车自我车辆动力学模型。培训目标是保持自我沿着中心线调整车道的车辆行驶前转向角。下面的例子使用了相同的车辆模型火车DQN车道保持辅助剂

m = 1575;%车辆总质量(千克)工业区= 2875;%偏航惯性矩(mNs ^ 2)如果= 1.2;%的纵向距离重心前面轮胎(m)lr = 1.6;%纵向重心距离后方轮胎(m)Cf = 19000;%转弯前轮胎的刚度(N / rad)Cr = 33000;%转弯后轮胎的刚度(N / rad)Vx = 15;%的纵向速度(米/秒)

定义样本的时间Ts和仿真时间T在几秒钟内。

t = 0.1;T = 15;

党的系统的输出是自我的前转向角的车。模拟的物理转向限制自我,约束转向角的范围[-0.5,0.5]rad。

u_min = -0.5;u_max = 0.5;

道路的曲率被定义为一个常数0.001 ( - - - - - - 1 )。横向偏差的初始值0.2m和相对偏航角的初始值-0.1rad。

ρ= 0.001;e1_initial = 0.2;e2_initial = -0.1;

打开模型。

mdl =“rlLKAMdl”;open_system agentblk = mdl + (mdl)“/ RL代理”;

对于这个模型:

  • 转向角动作信号从代理环境从-15度到15度。

  • 环境的观察是横向偏差 e 1 相对偏航角 e 2 ,他们的衍生品 e ˙ 1 e ˙ 2 ,他们的积分 e 1 e 2

  • 模拟横向偏差时终止 | e 1 | > 1

  • 奖励 r t ,只要在每一个时间步 t ,是

r t = - - - - - - ( 1 0 e 1 2 + 5 e 2 2 + 2 u 2 + 5 e ˙ 1 2 + 5 e ˙ 2 2 )

在哪里 u 之前的时间步的控制输入吗 t - - - - - - 1

创建环境接口

创建一个自我强化的学习环境界面。

定义观测信息。

obsInfo = rlNumericSpec (1 [6],LowerLimit =无穷*的(6,1),UpperLimit =正*的(6,1));obsInfo。Name =“观察”;obsInfo。描述=“横向偏差和相对偏航角”;

定义的操作信息。

actInfo = rlFiniteSetSpec((15:15) *π/ 180);actInfo。Name =“转向”;

创建环境的接口。

env = rlSimulinkEnv (mdl agentblk、obsInfo actInfo);

代理的接口有一个离散的行动空间可以应用一个31可能转向角从-15度到15度。观察是六维向量包含横向偏差、相对偏航角,以及与对时间的微分和积分。

定义初始条件的横向偏差和相对偏航角,指定一个环境重置函数使用一个匿名函数处理。localResetFcn,这是定义在这个例子中,随机初始横向偏差和相对偏航角。

env。ResetFcn = @(在)localResetFcn(的);

创建DQN代理

DQN代理使用参数化核反应能量函数近似者估计价值的政策。因为DQN代理有一个离散的行动空间,您可以选择创建一个向量(即多输出)评论家核反应能量函数,通常比对于类似的批评更有效。

一个向量核反应能量函数只需要观察作为输入并返回一个作为输出向量和尽可能多的元素的数量可能的行动。每个输出元素代表的价值预期的折扣累积长期奖励当代理人开始从国家对应于给定的观察和执行相应的动作元素的数量(和后来跟随给定的政策)。

在评论家,模型参数化核反应能量函数使用一个输入神经网络(六维观测状态)和一个输出向量与31个元素(均匀间隔的转向角从-15年到15度)。观察空间的维数和离散行为空间的元素数量从环境中规范。

倪= obsInfo.Dimension (1);%的数量输入(6)问= 120;%的神经元数量没有=元素个数(actInfo.Elements);%的输出(31)

层的网络定义为一个数组对象。

款= [featureInputLayer (nI) fullyConnectedLayer (nL) reluLayer fullyConnectedLayer (nL) reluLayer fullyConnectedLayer (nO)];

评论家网络随机初始化。确保修复种子再现性的随机发生器。

rng (0)

转换为一个dlnetwork对象和显示参数的数量。

款= dlnetwork(款);总结(款)
初始化:真很多可学的:19.1 k输入:1“输入”6特性

查看网络配置。

情节(款)

创建一个评论家使用和环境规范。向量核反应能量函数近似者的更多信息,请参阅rlVectorQValueFunction

评论家= rlVectorQValueFunction(款、obsInfo actInfo);

评论家使用指定培训选项rlOptimizerOptions

criticOptions = rlOptimizerOptions (LearnRate = 1的军医,GradientThreshold = 1,L2RegularizationFactor = 1的军医);

使用指定DQN代理选项rlDQNAgentOptions,包括评论家选择对象。

agentOpts = rlDQNAgentOptions (SampleTime = Ts,UseDoubleDQN = true,CriticOptimizerOptions = criticOptions,ExperienceBufferLength = 1 e6,MiniBatchSize = 256);

您还可以设置或修改代理选项使用点符号。

agentOpts.EpsilonGreedyExploration。EpsilonDecay = 1的军医;

或者,您可以创建代理,然后访问其选择对象和修改选项使用点符号。

使用指定的评论家和创建DQN代理代理选项。有关更多信息,请参见rlDQNAgent

代理= rlDQNAgent(评论家,agentOpts);

培训方案

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

  • 运行每个培训最多10000集,每集持久的最多装天花板(T / T)时间的步骤。

  • 在事件管理器对话框显示培训进展(设置情节详细的相应的选项)。

  • 停止训练集时奖励达到1。

  • 保存一份代理每集累积奖励大于100。

有关更多信息,请参见rlTrainingOptions

maxepisodes = 10000;maxsteps =装天花板(T / T);trainOpts = rlTrainingOptions (MaxEpisodes = MaxEpisodes,MaxStepsPerEpisode = maxsteps,Verbose = false,情节=“训练进步”,StopTrainingCriteria =“EpisodeReward”,StopTrainingValue = 1,SaveAgentCriteria =“EpisodeReward”,SaveAgentValue = 100);

并行训练选项

培训代理并行,指定以下培训选项。

  • 设置UseParallel选项真正的

  • 火车通过设置异步并行代理ParallelizationOptions.Mode选项“异步”

trainOpts。UseParallel = true;trainOpts.ParallelizationOptions。模式=“异步”;

有关更多信息,请参见rlTrainingOptions

火车代理

火车代理使用火车函数。培训代理是一个计算密集型的过程需要几分钟才能完成。节省时间在运行这个例子中,加载一个pretrained代理设置doTraining。训练自己代理,集doTraining真正的。由于随机性的并行训练,你可以从下面的情节期待不同的训练结果。情节显示了训练的结果有四个工人。

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

模拟剂

验证的性能训练有素的特工,取消以下两行和模拟环境中的代理。代理模拟更多的信息,请参阅rlSimulationOptionssim卡

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

演示培训代理使用确定的初始条件,模拟仿真软件的模型。

e1_initial = -0.4;e2_initial = 0.2;sim (mdl)

如下所示,横向误差(中间情节)和相对偏航角(图)都是驱动为零。车辆从中心线(-0.4米)和非零偏航角误差(0.2 rad)。党的允许自我汽车沿着中线后2.5秒。转向角(图)显示,控制器达到稳态后2秒。

本地函数

函数= localResetFcn(中)%设置初始横向偏差和相对偏航角随机值= setVariable (,“e1_initial”,0.5 *(1 + 2 *兰德));= setVariable (,“e2_initial”,0.1 *(1 + 2 *兰德));结束

另请参阅

功能

对象

相关的例子

更多关于

Baidu
map