火车DDPG代理自适应巡航控制的功能
这个例子展示了如何训练深决定性策略梯度(DDPG)代理模型的自适应巡航控制系统(ACC)®。金宝appDDPG代理的更多信息,请参阅<一个href="//www.tatmou.com/au/help/reinforcement-learning/ug/ddpg-agents.html" data-docid="rl_ug#mw_66c8fe60-f58e-4bdb-904a-21d442f0a879" class="a">深决定性策略梯度(DDPG)代理(强化学习工具箱)。
金宝app仿真软件模型
强化学习环境对于这个示例是一个简单的汽车和汽车纵向动力学的自我。培训的目标是使自我在一组汽车旅行速度,同时保持安全距离领先的汽车通过控制纵向加速和刹车。下面的例子使用了相同的车辆模型<一个href="//www.tatmou.com/au/help/mpc/ug/adaptive-cruise-control-using-model-predictive-controller.html" data-docid="mpc_ug#mw_5d3362c7-033d-4773-a8e5-5f3d303a9c10" class="a">自适应巡航控制系统使用模型预测控制(模型预测控制工具箱)的例子。
指定的初始位置和速度两辆车。
x0_lead = 50;%初始位置领先汽车(m)v0_lead = 25;%初始速度领先汽车(米/秒)x0_ego = 10;%初始位置为自我汽车(m)v0_ego = 20;%自我汽车初始速度(米/秒)
指定停滞默认间距(m),时间差距(s)和司机让速度(米/秒)。
D_default = 10;t_gap = 1.4;v_set = 30;
模拟的物理限制车辆动力学、加速度约束的范围(3 2)米/秒^ 2。
amin_ego = 3;amax_ego = 2;
定义样本的时间Ts和仿真时间特遣部队在几秒钟内。
t = 0.1;Tf = 60;
打开模型。
mdl =“rlACCMdl”;open_system agentblk = mdl + (mdl)“/ RL代理”;
对于这个模型:
行动加速度信号从代理环境3到2米/秒^ 2。
自我的参考速度的汽车
定义如下。如果相对距离小于安全距离,自我汽车跟踪引导车的最低速度和司机让速度。通过这种方式,自我汽车保持一定距离领先的汽车。如果相对距离大于安全距离,自我汽车跟踪司机让速度。在这个例子中,安全距离被定义为一个自我汽车纵向速度的线性函数
;也就是说,
。安全的距离决定了自我参考跟踪速度的汽车。
环境的观测速度误差
,它的积分
,自我汽车纵向速度
。
仿真终止当自我汽车的纵向速度小于0,或引导车之间的相对距离和自我汽车变得小于0。
奖励
,只要在每一个时间步
,是
在哪里
是以前的时间步的控制输入。逻辑值
如果速度误差
;否则,
。
创建环境接口
创建一个强化学习环境界面模型。
创建观测规范。
obsInfo = rlNumericSpec (1 [3],…LowerLimit =无穷*的(3,1),…UpperLimit =正*的(3,1));obsInfo。Name =“观察”;obsInfo。Description =…“速度误差和自我速度”;
创建操作规范。
actInfo = rlNumericSpec ([1],…LowerLimit = 3, UpperLimit = 2);actInfo。Name =“加速”;
创建环境的接口。
env = rl金宝appSimulinkEnv (mdl agentblk、obsInfo actInfo);
定义初始条件导致汽车的位置,指定一个环境重置函数使用一个匿名函数处理。重置功能localResetFcn,这是定义在这个例子中,随机排列导致汽车的初始位置。
env。ResetFcn = @(在)localResetFcn(的);
解决随机发生器再现性的种子。
rng (“默认”)
创建DDPG代理
DDPG代理使用参数化核反应能量函数评论家估计政策的价值。核反应能量函数接受目前的观察和行动作为输入并返回一个标量输出(估计折扣累积长期奖励给状态对应于当前的行为观察,和后政策之后)。
模型中的参数化核反应能量函数评论家,使用神经网络和两个输入层(一个用于观测通道,所指定的obsInfo,行动的其他渠道,指定的actInfo)和一个输出层(返回标量值)。
定义每个网络路径层对象数组。使用刺激(obsInfo.Dimension)和刺激(actInfo.Dimension)返回的数量的观察和操作空间的维度。
将名称分配给每条路径的输入和输出层。这些名字让你连接路径,然后明确关联网络的输入和输出通道层与适当的环境。
L = 48;%的神经元数量%的主要路径mainPath = [featureInputLayer (…刺激(obsInfo.Dimension),…Name =“obsInLyr”)fullyConnectedLayer (L) reluLayer fullyConnectedLayer (L) additionLayer (Name =“添加”)reluLayer fullyConnectedLayer (L) reluLayer fullyConnectedLayer (Name =“QValLyr”));%的行动路径actionPath = [featureInputLayer (…刺激(actInfo.Dimension),…Name =“actInLyr”)fullyConnectedLayer (L, Name =“actOutLyr”));%将层组装成一个layergraph对象criticNet = layerGraph (mainPath);criticNet = addLayers (criticNet actionPath);%连接层criticNet = connectLayers (criticNet,“actOutLyr”,“添加/ in2”);%转换为dlnetwork和显示数量的权重criticNet = dlnetwork (criticNet);总结(criticNet)
初始化:可学的真正的数字:5 k输入:1“obsInLyr”3特征2的actInLyr 1功能
查看评论家网络配置。
情节(criticNet)
创建评论家接近者对象使用criticNet、环境的观察和行动规范和网络输入层的名称与渠道环境的观察和行动。有关更多信息,请参见<一个href="//www.tatmou.com/au/help/reinforcement-learning/ref/rl.function.rlqvaluefunction.html" data-docid="rl_ref#mw_e6e7abac-0a33-423b-8473-1409879db701" class="a">rlQValueFunction(强化学习工具箱)。
评论家= rlQValueFunction (criticNet obsInfo actInfo,…ObservationInputNames =“obsInLyr”ActionInputNames =“actInLyr”);
DDPG代理使用参数化确定性政策连续动作空间,由一个连续的学习确定的演员。这个演员需要当前观测作为输入并返回输出一个观察的行动是一个确定性的函数。
模型中的参数化政策的演员,使用一个输入神经网络层(接收环境观察频道的内容,规定obsInfo)和一个输出层(返回行动对环境行动通道,是指定的actInfo)。
层的网络定义为一个数组对象。使用一个tanhLayer紧随其后的是一个scalingLayer规模网络输出的行动范围。
actorNet = [featureInputLayer (prod (obsInfo.Dimension)) fullyConnectedLayer (L) reluLayer fullyConnectedLayer (L) reluLayer fullyConnectedLayer (L) reluLayer fullyConnectedLayer (prod (actInfo.Dimension)) tanhLayer scalingLayer(= 2.5,偏见= -0.5)];
转换为dlnetwork并显示权重的数量。
actorNet = dlnetwork (actorNet);总结(actorNet)
初始化:真很多可学的:4.9 k输入:1“输入”3的特性
创建一个演员使用actorNet和观察和操作规范。连续确定的演员的更多信息,请参阅<一个href="//www.tatmou.com/au/help/reinforcement-learning/ref/rl.function.rlcontinuousdeterministicactor.html" data-docid="rl_ref#mw_c2909424-90f4-4a52-803b-73310483e6c3" class="a">rlContinuousDeterministicActor(强化学习工具箱)。
演员= rlContinuousDeterministicActor (actorNet,…obsInfo actInfo);
指定培训选项的评论家和演员使用<一个href="//www.tatmou.com/au/help/reinforcement-learning/ref/rl.option.rloptimizeroptions.html" data-docid="rl_ref#mw_18a712bb-b821-4dd9-a7ad-460ad7f2aa03" class="a">rlOptimizerOptions(强化学习工具箱)。
criticOptions = rlOptimizerOptions (…LearnRate = 1 e - 3,…GradientThreshold = 1,…L2RegularizationFactor = 1的军医);actorOptions = rlOptimizerOptions (…LearnRate = 1的军医,…GradientThreshold = 1,…L2RegularizationFactor = 1的军医);
使用指定DDPG代理选项<一个href="//www.tatmou.com/au/help/reinforcement-learning/ref/rl.option.rlddpgagentoptions.html" data-docid="rl_ref#mw_5e9a4c5d-03d5-48d9-a85b-3c2d25fde43c" class="a">rlDDPGAgentOptions(强化学习工具箱)的训练选项,包括演员和评论家。
agentOptions = rlDDPGAgentOptions (…SampleTime = Ts,…ActorOptimizerOptions = actorOptions,…CriticOptimizerOptions = criticOptions,…ExperienceBufferLength = 1 e6);
您还可以设置或修改代理选项使用点符号。
agentOptions.NoiseOptions。方差= 0.6;agentOptions.NoiseOptions。VarianceDecayRate = 1 e-5;
或者,您可以创建代理,然后访问其选择对象和修改选项使用点符号。
使用指定的演员表示,创建DDPG代理评论家表示,和代理的选择。有关更多信息,请参见<一个href="//www.tatmou.com/au/help/reinforcement-learning/ref/rl.agent.rlddpgagent.html" data-docid="rl_ref#mw_7e49ed9c-eea8-4994-8532-c7f66d5359ef" class="a">rlDDPGAgent(强化学习工具箱)。
代理= rlDDPGAgent(演员、评论家、agentOptions);
火车代理
培训代理商,首先指定培训选项。对于这个示例,使用以下选项:
运行每个训练集5000年600集,每集最多持续时间的步骤。
显示培训进展在事件管理器对话框。
停止训练当代理接收到一集大于260的奖励。
有关更多信息,请参见<一个href="//www.tatmou.com/au/help/reinforcement-learning/ref/rl.option.rltrainingoptions.html" data-docid="rl_ref#mw_1f5122fe-cb3a-4c27-8c80-1ce46c013bf0" class="a">rlTrainingOptions(强化学习工具箱)。
maxepisodes = 5000;maxsteps =装天花板(Tf / Ts);trainingOpts = rlTrainingOptions (…MaxEpisodes = MaxEpisodes,…MaxStepsPerEpisode = maxsteps,…Verbose = false,…情节=“训练进步”,…StopTrainingCriteria =“EpisodeReward”,…StopTrainingValue = 260);
火车代理使用<一个href="//www.tatmou.com/au/help/reinforcement-learning/ref/rl.agent.rlqagent.train.html" data-docid="rl_ref#mw_c0ccd38c-bbe6-4609-a87d-52ebe4767852" class="a">火车(强化学习工具箱)函数。培训是一个计算密集型的过程需要几分钟才能完成。节省时间在运行这个例子中,加载一个pretrained代理设置doTraining来假。训练自己代理,集doTraining来真正的。
doTraining = false;如果doTraining%培训代理。trainingStats =火车(代理,env, trainingOpts);其他的%加载pretrained代理的例子。负载(“金宝appSimulinkACCDDPG.mat”,“代理”)结束
模拟DDPG代理
验证培训代理的性能,您可以模拟代理在仿真软件环境中使用以下命令。金宝app代理模拟更多的信息,请参阅<一个href="//www.tatmou.com/au/help/reinforcement-learning/ref/rl.option.rlsimulationoptions.html" data-docid="rl_ref#mw_983bb2e9-0115-4548-8daa-687037e090b2" class="a">rlSimulationOptions(强化学习工具箱)和<一个href="//www.tatmou.com/au/help/reinforcement-learning/ref/rl.env.abstractenv.sim.html" data-docid="rl_ref#mw_e6296379-23b5-4819-a13b-210681e153bf" class="a">sim卡(强化学习工具箱)。
simOptions = rlSimulationOptions (MaxSteps = MaxSteps);经验= sim (env,代理,simOptions);
演示培训代理使用确定的初始条件,模拟仿真软件的模型。金宝app
x0_lead = 80;sim (mdl)
下面的情节显示仿真结果当领导的车是70 (m)的自我的车。
在第一个35秒,相对距离大于安全距离(情节),所以自我汽车跟踪速度(中间的情节)。加速,到达设定速度,加速度是最初积极(情节)。
从35 - 48秒,相对距离小于安全距离(情节),所以自我车道的最低速度和速度。减缓和跟踪领先汽车速度,加速度是负大约从35到37秒(图)。车之后,自我调整加速继续跟踪要么领导之间的最小速度和设置速度,或设置速度,取决于相对距离被认为是安全的。
关闭仿真软件模型。金宝app
bdclose (mdl)
重置功能
函数= localResetFcn(中)%的初始位置重置领导的车。= setVariable (,“x0_lead”40 +兰迪(60,1,1));结束
另请参阅
火车
(强化学习工具箱)
相关的话题
这个例子展示了如何训练深决定性策略梯度(DDPG)代理模型的自适应巡航控制系统(ACC)®。金宝appDDPG代理的更多信息,请参阅<一个href="//www.tatmou.com/au/help/reinforcement-learning/ug/ddpg-agents.html" data-docid="rl_ug#mw_66c8fe60-f58e-4bdb-904a-21d442f0a879" class="a">深决定性策略梯度(DDPG)代理 强化学习环境对于这个示例是一个简单的汽车和汽车纵向动力学的自我。培训的目标是使自我在一组汽车旅行速度,同时保持安全距离领先的汽车通过控制纵向加速和刹车。下面的例子使用了相同的车辆模型<一个href="//www.tatmou.com/au/help/mpc/ug/adaptive-cruise-control-using-model-predictive-controller.html" data-docid="mpc_ug#mw_5d3362c7-033d-4773-a8e5-5f3d303a9c10" class="a">自适应巡航控制系统使用模型预测控制 指定的初始位置和速度两辆车。 指定停滞默认间距(m),时间差距(s)和司机让速度(米/秒)。 模拟的物理限制车辆动力学、加速度约束的范围 定义样本的时间 打开模型。 对于这个模型: 行动加速度信号从代理环境3到2米/秒^ 2。 自我的参考速度的汽车 环境的观测速度误差 仿真终止当自我汽车的纵向速度小于0,或引导车之间的相对距离和自我汽车变得小于0。 奖励
在哪里 创建一个强化学习环境界面模型。 创建观测规范。 创建操作规范。 创建环境的接口。 定义初始条件导致汽车的位置,指定一个环境重置函数使用一个匿名函数处理。重置功能 解决随机发生器再现性的种子。 DDPG代理使用参数化核反应能量函数评论家估计政策的价值。核反应能量函数接受目前的观察和行动作为输入并返回一个标量输出(估计折扣累积长期奖励给状态对应于当前的行为观察,和后政策之后)。 模型中的参数化核反应能量函数评论家,使用神经网络和两个输入层(一个用于观测通道,所指定的 定义每个网络路径层对象数组。使用 将名称分配给每条路径的输入和输出层。这些名字让你连接路径,然后明确关联网络的输入和输出通道层与适当的环境。 查看评论家网络配置。 创建评论家接近者对象使用 DDPG代理使用参数化确定性政策连续动作空间,由一个连续的学习确定的演员。这个演员需要当前观测作为输入并返回输出一个观察的行动是一个确定性的函数。 模型中的参数化政策的演员,使用一个输入神经网络层(接收环境观察频道的内容,规定 层的网络定义为一个数组对象。使用一个 转换为 创建一个演员使用 指定培训选项的评论家和演员使用<一个href="//www.tatmou.com/au/help/reinforcement-learning/ref/rl.option.rloptimizeroptions.html" data-docid="rl_ref#mw_18a712bb-b821-4dd9-a7ad-460ad7f2aa03" class="a"> 使用指定DDPG代理选项<一个href="//www.tatmou.com/au/help/reinforcement-learning/ref/rl.option.rlddpgagentoptions.html" data-docid="rl_ref#mw_5e9a4c5d-03d5-48d9-a85b-3c2d25fde43c" class="a"> 您还可以设置或修改代理选项使用点符号。 或者,您可以创建代理,然后访问其选择对象和修改选项使用点符号。 使用指定的演员表示,创建DDPG代理评论家表示,和代理的选择。有关更多信息,请参见<一个href="//www.tatmou.com/au/help/reinforcement-learning/ref/rl.agent.rlddpgagent.html" data-docid="rl_ref#mw_7e49ed9c-eea8-4994-8532-c7f66d5359ef" class="a"> 培训代理商,首先指定培训选项。对于这个示例,使用以下选项: 运行每个训练集 显示培训进展在事件管理器对话框。 停止训练当代理接收到一集大于260的奖励。 有关更多信息,请参见<一个href="//www.tatmou.com/au/help/reinforcement-learning/ref/rl.option.rltrainingoptions.html" data-docid="rl_ref#mw_1f5122fe-cb3a-4c27-8c80-1ce46c013bf0" class="a"> 火车代理使用<一个href="//www.tatmou.com/au/help/reinforcement-learning/ref/rl.agent.rlqagent.train.html" data-docid="rl_ref#mw_c0ccd38c-bbe6-4609-a87d-52ebe4767852" class="a"> 验证培训代理的性能,您可以模拟代理在仿真软件环境中使用以下命令。金宝app代理模拟更多的信息,请参阅<一个href="//www.tatmou.com/au/help/reinforcement-learning/ref/rl.option.rlsimulationoptions.html" data-docid="rl_ref#mw_983bb2e9-0115-4548-8daa-687037e090b2" class="a"> 演示培训代理使用确定的初始条件,模拟仿真软件的模型。金宝app 下面的情节显示仿真结果当领导的车是70 (m)的自我的车。 在第一个35秒,相对距离大于安全距离(情节),所以自我汽车跟踪速度(中间的情节)。加速,到达设定速度,加速度是最初积极(情节)。 从35 - 48秒,相对距离小于安全距离(情节),所以自我车道的最低速度和速度。减缓和跟踪领先汽车速度,加速度是负大约从35到37秒(图)。车之后,自我调整加速继续跟踪要么领导之间的最小速度和设置速度,或设置速度,取决于相对距离被认为是安全的。 关闭仿真软件模型。金宝app金宝app仿真软件模型
x0_lead = 50;
D_default = 10;t_gap = 1.4;v_set = 30;
amin_ego = 3;amax_ego = 2;
t = 0.1;Tf = 60;
mdl =
创建环境接口
obsInfo = rlNumericSpec (1 [3],
actInfo = rlNumericSpec ([1],
env = rl金宝appSimulinkEnv (mdl agentblk、obsInfo actInfo);
env。ResetFcn = @(在)localResetFcn(的);
rng (
创建DDPG代理
L = 48;
初始化:可学的真正的数字:5 k输入:1“obsInLyr”3特征2的actInLyr 1功能
情节(criticNet)
rlQValueFunction
评论家= rlQValueFunction (criticNet obsInfo actInfo,
actorNet = [featureInputLayer (prod (obsInfo.Dimension)) fullyConnectedLayer (L) reluLayer fullyConnectedLayer (L) reluLayer fullyConnectedLayer (L) reluLayer fullyConnectedLayer (prod (actInfo.Dimension)) tanhLayer scalingLayer(= 2.5,偏见= -0.5)];
actorNet = dlnetwork (actorNet);总结(actorNet)
初始化:真很多可学的:4.9 k输入:1“输入”3的特性
rlContinuousDeterministicActor
演员= rlContinuousDeterministicActor (actorNet,
rlOptimizerOptions
criticOptions = rlOptimizerOptions (
rlDDPGAgentOptions
agentOptions = rlDDPGAgentOptions (
agentOptions.NoiseOptions。方差= 0.6;agentOptions.NoiseOptions。VarianceDecayRate = 1 e-5;
rlDDPGAgent
代理= rlDDPGAgent(演员、评论家、agentOptions);
火车代理
rlTrainingOptions
maxepisodes = 5000;maxsteps =装天花板(Tf / Ts);trainingOpts = rlTrainingOptions (
火车
doTraining = false;
模拟DDPG代理
rlSimulationOptions
sim卡
simOptions = rlSimulationOptions (MaxSteps = MaxSteps);经验= sim (env,代理,simOptions);
x0_lead = 80;sim (mdl)
bdclose (mdl)
重置功能
函数
另请参阅
火车
(强化学习工具箱)相关的话题