火车DDPG代理路径跟踪控制
这个例子展示了如何训练深决定性策略梯度(DDPG)代理路径跟踪控制(PFC)模型®。DDPG代理的更多信息,请参阅<一个href="//www.ru-cchi.com/uk/uk/help/reinforcement-learning/ug/ddpg-agents.html" data-docid="rl_ug#mw_66c8fe60-f58e-4bdb-904a-21d442f0a879" class="a">深决定性策略梯度(DDPG)代理。
仿真软件模型
强化学习环境对于这个示例是一个简单的自我汽车和自行车模型的一个简单的纵向模型引导车。培训的目标是使自我在一组汽车旅行速度,同时保持安全距离领先的汽车通过控制纵向加速和制动,并同时保持自我的汽车旅行沿着中心线的车道通过控制转向角。PFC的更多信息,请参阅<一个href="//www.ru-cchi.com/uk/uk/help/mpc/ref/pathfollowingcontrolsystem.html" data-docid="mpc_ref#mw_78ac0ef3-0622-4d5f-907b-52f6c7bebff6" class="a">路径跟踪控制系统(模型预测控制工具箱)。以下指定的自我汽车动力学参数。
m = 1600;%车辆总质量(千克)工业区= 2875;%偏航惯性矩(mNs ^ 2)如果= 1.4;%的纵向距离重心前面轮胎(m)lr = 1.6;%纵向重心距离后方轮胎(m)Cf = 19000;%转弯前轮胎的刚度(N / rad)Cr = 33000;%转弯后轮胎的刚度(N / rad)τ= 0.5;%纵向时间常数
指定的初始位置和速度两辆车。
x0_lead = 50;%初始位置领先汽车(m)v0_lead = 24;%初始速度领先汽车(米/秒)x0_ego = 10;%初始位置为自我汽车(m)v0_ego = 18;%自我汽车初始速度(米/秒)
指定停滞默认间距(m),时间差距(s),司机让速度(米/秒)。
D_default = 10;t_gap = 1.4;v_set = 28;
模拟的物理限制车辆动力学、抑制加速度范围(3 2)(米/秒^ 2),和转向角的范围[-0.2618,0.2618](rad),这是-15年和15度。
amin_ego = 3;amax_ego = 2;umin_ego = -0.2618;% + 15度umax_ego = 0.2618;% -15度
道路的曲率被定义为一个常数0.001 (
)。横向偏差的初始值是0.2米,相对偏航角的初始值是-0.1 rad。
ρ= 0.001;e1_initial = 0.2;e2_initial = -0.1;
定义样本的时间Ts和仿真时间特遣部队在几秒钟内。
t = 0.1;Tf = 60;
打开模型。
mdl =“rlPFCMdl”;(mdl open_system (mdl) agentblk =' / RL代理'];
对于这个模型:
动作信号由加速度和转向角的行动。行动加速度信号需要价值3和2之间(m / s ^ 2)。指导行动的信号需要一个值(-0.2618 rad) -15度至15度(0.2618 rad)。
自我的参考速度的汽车
定义如下。如果相对距离小于安全距离,自我汽车跟踪引导车的最低速度和司机让速度。通过这种方式,自我汽车保持一定距离领先的汽车。如果相对距离大于安全距离,自我汽车跟踪司机让速度。在这个例子中,安全距离被定义为一个自我汽车纵向速度的线性函数
,也就是说,
。安全距离确定自我的跟踪速度的汽车。
的观测环境包含纵向测量:速度误差
,它的积分
,自我汽车纵向速度
。此外,观察包含横向测量:外侧偏移
相对偏航角
,他们的衍生品
和
,他们的积分
和
。
模拟横向偏差时终止
当纵向速度
,或者当领导的车之间的相对距离和自我的车
。
奖励
,只要在每一个时间步
,是
在哪里
从之前的时间步是转向输入
,
从之前的时间步加速度输入。三个逻辑值如下。
如果仿真终止,否则
如果横向错误
,否则
如果速度误差
,否则
三个逻辑条件的奖励鼓励代理横向误差和速度误差小,与此同时,惩罚代理仿真是否提前终止。
创建环境接口
创建一个环境界面的仿真软件模型。
创建观测规范。
observationInfo = rlNumericSpec (1 [9],“LowerLimit”负无穷*的(9,1)“UpperLimit”,正* (9,1));observationInfo。Name =“观察”;
创建操作规范。
2 actionInfo = rlNumericSpec ([1],“LowerLimit”(3;-0.2618),“UpperLimit”,2,0.2618);actionInfo。Name =“accel;引导”;
创建环境的接口。
env = rlSimulinkEnv (mdl agentblk、observationInfo actionInfo);
定义初始条件,指定一个环境重置函数使用一个匿名函数处理。重置功能localResetFcn,这是定义在这个例子中,随机排列导致汽车的初始位置,横向偏差和相对偏航角。
env。ResetFcn = @(在)localResetFcn(的);
解决随机发生器再现性的种子。
rng (0)
创建DDPG代理
DDPG代理接近长期奖励给观测和操作通过使用一个评论家表示值函数。创建评论家,首先创建一个深和两个输入神经网络,国家和行动,和一个输出。更多信息创建一个深层神经网络价值函数表示,看到的<一个href="//www.ru-cchi.com/uk/uk/help/reinforcement-learning/ug/create-policy-and-value-function-representations.html" data-docid="rl_ug#mw_2c7e8669-1e91-4d42-afa6-674009a08004" class="a">创建政策和价值功能。
L = 100;%的神经元数量statePath = [featureInputLayer (9“归一化”,“没有”,“名字”,“观察”)fullyConnectedLayer (L,“名字”,“fc1”)reluLayer (“名字”,“relu1”)fullyConnectedLayer (L,“名字”,“取得”)additionLayer (2“名字”,“添加”)reluLayer (“名字”,“relu2”)fullyConnectedLayer (L,“名字”,“一个fc3”文件)reluLayer (“名字”,“relu3”)fullyConnectedLayer (1,“名字”,“fc4”));actionPath = [featureInputLayer (2,“归一化”,“没有”,“名字”,“行动”)fullyConnectedLayer (L,“名字”,“fc5”));criticNetwork = layerGraph (statePath);criticNetwork = addLayers (criticNetwork actionPath);criticNetwork = connectLayers (criticNetwork,“fc5”,“添加/ in2”);criticNetwork = dlnetwork (criticNetwork);
查看评论家网络配置。
图绘制(layerGraph (criticNetwork))
指定选项评论家优化器使用rlOptimizerOptions。
criticOptions = rlOptimizerOptions (“LearnRate”1 e - 3,“GradientThreshold”,1“L2RegularizationFactor”1的军医);
创建评论家使用指定的深层神经网络函数。您还必须指定动作和评论家的观测信息,你从环境中获取接口。有关更多信息,请参见<一个href="//www.ru-cchi.com/uk/uk/help/reinforcement-learning/ref/rlqvaluefunction.html" data-docid="rl_ref#mw_e6e7abac-0a33-423b-8473-1409879db701" class="a">rlQValueFunction。
评论家= rlQValueFunction (criticNetwork observationInfo actionInfo,…“ObservationInputNames”,“观察”,“ActionInputNames”,“行动”);
DDPG代理决定哪些操作通过使用演员表示给定的观测。创建演员,首先创建一个深和一个输入神经网络,观察,和一个输出,行动。
构建演员同样的评论家。有关更多信息,请参见<一个href="//www.ru-cchi.com/uk/uk/help/reinforcement-learning/ref/rlcontinuousdeterministicactor.html" data-docid="rl_ref#mw_c2909424-90f4-4a52-803b-73310483e6c3" class="a">rlContinuousDeterministicActor。
actorNetwork = [featureInputLayer (9“归一化”,“没有”,“名字”,“观察”)fullyConnectedLayer (L,“名字”,“fc1”)reluLayer (“名字”,“relu1”)fullyConnectedLayer (L,“名字”,“取得”)reluLayer (“名字”,“relu2”)fullyConnectedLayer (L,“名字”,“一个fc3”文件)reluLayer (“名字”,“relu3”)fullyConnectedLayer (2“名字”,“fc4”)tanhLayer (“名字”,“tanh1”)scalingLayer (“名字”,“ActorScaling1”,“规模”[2.5,0.2618],“偏见”,-0.5,0));actorNetwork = dlnetwork (actorNetwork);actorOptions = rlOptimizerOptions (“LearnRate”1的军医,“GradientThreshold”,1“L2RegularizationFactor”1的军医);演员= rlContinuousDeterministicActor (actorNetwork observationInfo actionInfo);
创建DDPG代理,首先使用指定DDPG代理选项<一个href="//www.ru-cchi.com/uk/uk/help/reinforcement-learning/ref/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,0.1];agentOptions.NoiseOptions。VarianceDecayRate = 1 e-5;
然后,创建DDPG代理使用指定的演员表示,评论家表示,和代理的选择。有关更多信息,请参见<一个href="//www.ru-cchi.com/uk/uk/help/reinforcement-learning/ref/rlddpgagent.html" data-docid="rl_ref#mw_7e49ed9c-eea8-4994-8532-c7f66d5359ef" class="a">rlDDPGAgent。
代理= rlDDPGAgent(演员、评论家、agentOptions);
火车代理
培训代理商,首先指定培训选项。对于这个示例,使用以下选项:
运行每个训练集10000年集,每集持久的最多maxsteps时间的步骤。
在事件管理器对话框显示培训进展(设置详细的和情节选项)。
停止训练当代理接收到一个累积奖励大于集1700年。
有关更多信息,请参见<一个href="//www.ru-cchi.com/uk/uk/help/reinforcement-learning/ref/rltrainingoptions.html" data-docid="rl_ref#mw_1f5122fe-cb3a-4c27-8c80-1ce46c013bf0" class="a">rlTrainingOptions。
maxepisodes = 1 e4;maxsteps =装天花板(Tf / Ts);trainingOpts = rlTrainingOptions (…“MaxEpisodes”maxepisodes,…“MaxStepsPerEpisode”maxsteps,…“详细”假的,…“阴谋”,“训练进步”,…“StopTrainingCriteria”,“EpisodeReward”,…“StopTrainingValue”,1700);
火车代理使用<一个href="//www.ru-cchi.com/uk/uk/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代理的例子。负载(“SimulinkPFCDDPG.mat”,“代理”)结束
模拟DDPG代理
验证的性能训练有素的特工,在仿真软件环境中模拟代理取消以下命令。代理模拟更多的信息,请参阅<一个href="//www.ru-cchi.com/uk/uk/help/reinforcement-learning/ref/rlsimulationoptions.html" data-docid="rl_ref#mw_983bb2e9-0115-4548-8daa-687037e090b2" class="a">rlSimulationOptions和<一个href="//www.ru-cchi.com/uk/uk/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);
演示培训代理使用确定的初始条件,模拟仿真软件的模型。
e1_initial = -0.4;e2_initial = 0.1;x0_lead = 80;sim (mdl)
下面的情节显示仿真结果,当领导的车是70 (m)的自我的车。
在第一个35秒,相对距离大于安全距离(右下角的情节),所以自我汽车跟踪速度(右上的情节)。加速,到达设定速度,加速度是负的(左上的情节)。
从35 - 42秒,相对距离主要是小于安全距离(右下角的情节),所以自我的车道的最低速度和速度。因为铅速度小于设定速度(右上的情节),跟踪的速度,加速度就非零(左上的情节)。
从42岁到58秒,自我汽车跟踪一组速度(右上的情节)和加速度仍然是零(左上的情节)。
从58 - 60秒,相对距离小于安全距离(右下角的情节),所以自我汽车减慢和跟踪速度。
左下图显示了横向偏差。所示的情节,横向偏差大大降低了在1秒之内。横向偏差仍小于0.05米。
关闭仿真软件模型。
bdclose (mdl)
重置功能
函数在= localResetFcn () = setVariable (,“x0_lead”40 +兰迪(60,1,1));%初始位置的随机值引导车= setVariable (,“e1_initial”,0.5 *(1 + 2 *兰德));%横向偏差的随机值= setVariable (,“e2_initial”,0.1 *(1 + 2 *兰德));%相对偏航角的随机值结束
另请参阅
相关的话题
这个例子展示了如何训练深决定性策略梯度(DDPG)代理路径跟踪控制(PFC)模型®。DDPG代理的更多信息,请参阅<一个href="//www.ru-cchi.com/uk/uk/help/reinforcement-learning/ug/ddpg-agents.html" data-docid="rl_ug#mw_66c8fe60-f58e-4bdb-904a-21d442f0a879" class="a">深决定性策略梯度(DDPG)代理 强化学习环境对于这个示例是一个简单的自我汽车和自行车模型的一个简单的纵向模型引导车。培训的目标是使自我在一组汽车旅行速度,同时保持安全距离领先的汽车通过控制纵向加速和制动,并同时保持自我的汽车旅行沿着中心线的车道通过控制转向角。PFC的更多信息,请参阅<一个href="//www.ru-cchi.com/uk/uk/help/mpc/ref/pathfollowingcontrolsystem.html" data-docid="mpc_ref#mw_78ac0ef3-0622-4d5f-907b-52f6c7bebff6" class="a">路径跟踪控制系统 指定的初始位置和速度两辆车。 指定停滞默认间距(m),时间差距(s),司机让速度(米/秒)。 模拟的物理限制车辆动力学、抑制加速度范围 道路的曲率被定义为一个常数0.001 ( 定义样本的时间 打开模型。 对于这个模型: 动作信号由加速度和转向角的行动。行动加速度信号需要价值3和2之间(m / s ^ 2)。指导行动的信号需要一个值(-0.2618 rad) -15度至15度(0.2618 rad)。 自我的参考速度的汽车 的观测环境包含纵向测量:速度误差 模拟横向偏差时终止 奖励
在哪里
如果仿真终止,否则
如果横向错误
如果速度误差 三个逻辑条件的奖励鼓励代理横向误差和速度误差小,与此同时,惩罚代理仿真是否提前终止。 创建一个环境界面的仿真软件模型。 创建观测规范。 创建操作规范。 创建环境的接口。 定义初始条件,指定一个环境重置函数使用一个匿名函数处理。重置功能 解决随机发生器再现性的种子。 DDPG代理接近长期奖励给观测和操作通过使用一个评论家表示值函数。创建评论家,首先创建一个深和两个输入神经网络,国家和行动,和一个输出。更多信息创建一个深层神经网络价值函数表示,看到的<一个href="//www.ru-cchi.com/uk/uk/help/reinforcement-learning/ug/create-policy-and-value-function-representations.html" data-docid="rl_ug#mw_2c7e8669-1e91-4d42-afa6-674009a08004" class="a">创建政策和价值功能 查看评论家网络配置。 指定选项评论家优化器使用 创建评论家使用指定的深层神经网络函数。您还必须指定动作和评论家的观测信息,你从环境中获取接口。有关更多信息,请参见<一个href="//www.ru-cchi.com/uk/uk/help/reinforcement-learning/ref/rlqvaluefunction.html" data-docid="rl_ref#mw_e6e7abac-0a33-423b-8473-1409879db701" class="a"> DDPG代理决定哪些操作通过使用演员表示给定的观测。创建演员,首先创建一个深和一个输入神经网络,观察,和一个输出,行动。 构建演员同样的评论家。有关更多信息,请参见<一个href="//www.ru-cchi.com/uk/uk/help/reinforcement-learning/ref/rlcontinuousdeterministicactor.html" data-docid="rl_ref#mw_c2909424-90f4-4a52-803b-73310483e6c3" class="a"> 创建DDPG代理,首先使用指定DDPG代理选项<一个href="//www.ru-cchi.com/uk/uk/help/reinforcement-learning/ref/rlddpgagentoptions.html" data-docid="rl_ref#mw_5e9a4c5d-03d5-48d9-a85b-3c2d25fde43c" class="a"> 然后,创建DDPG代理使用指定的演员表示,评论家表示,和代理的选择。有关更多信息,请参见<一个href="//www.ru-cchi.com/uk/uk/help/reinforcement-learning/ref/rlddpgagent.html" data-docid="rl_ref#mw_7e49ed9c-eea8-4994-8532-c7f66d5359ef" class="a"> 培训代理商,首先指定培训选项。对于这个示例,使用以下选项: 运行每个训练集 在事件管理器对话框显示培训进展(设置 停止训练当代理接收到一个累积奖励大于集 有关更多信息,请参见<一个href="//www.ru-cchi.com/uk/uk/help/reinforcement-learning/ref/rltrainingoptions.html" data-docid="rl_ref#mw_1f5122fe-cb3a-4c27-8c80-1ce46c013bf0" class="a"> 火车代理使用<一个href="//www.ru-cchi.com/uk/uk/help/reinforcement-learning/ref/rl.agent.rlqagent.train.html" data-docid="rl_ref#mw_c0ccd38c-bbe6-4609-a87d-52ebe4767852" class="a"> 验证的性能训练有素的特工,在仿真软件环境中模拟代理取消以下命令。代理模拟更多的信息,请参阅<一个href="//www.ru-cchi.com/uk/uk/help/reinforcement-learning/ref/rlsimulationoptions.html" data-docid="rl_ref#mw_983bb2e9-0115-4548-8daa-687037e090b2" class="a"> 演示培训代理使用确定的初始条件,模拟仿真软件的模型。 下面的情节显示仿真结果,当领导的车是70 (m)的自我的车。 在第一个35秒,相对距离大于安全距离(右下角的情节),所以自我汽车跟踪速度(右上的情节)。加速,到达设定速度,加速度是负的(左上的情节)。 从35 - 42秒,相对距离主要是小于安全距离(右下角的情节),所以自我的车道的最低速度和速度。因为铅速度小于设定速度(右上的情节),跟踪的速度,加速度就非零(左上的情节)。 从42岁到58秒,自我汽车跟踪一组速度(右上的情节)和加速度仍然是零(左上的情节)。 从58 - 60秒,相对距离小于安全距离(右下角的情节),所以自我汽车减慢和跟踪速度。 左下图显示了横向偏差。所示的情节,横向偏差大大降低了在1秒之内。横向偏差仍小于0.05米。 关闭仿真软件模型。仿真软件模型
m = 1600;
x0_lead = 50;
D_default = 10;t_gap = 1.4;v_set = 28;
amin_ego = 3;amax_ego = 2;umin_ego = -0.2618;
ρ= 0.001;e1_initial = 0.2;e2_initial = -0.1;
t = 0.1;Tf = 60;
mdl =
创建环境接口
observationInfo = rlNumericSpec (1 [9],
2 actionInfo = rlNumericSpec ([1],
env = rlSimulinkEnv (mdl agentblk、observationInfo actionInfo);
env。ResetFcn = @(在)localResetFcn(的);
rng (0)
创建DDPG代理
L = 100;
图绘制(layerGraph (criticNetwork))
criticOptions = rlOptimizerOptions (
rlQValueFunction
评论家= rlQValueFunction (criticNetwork observationInfo actionInfo,
rlContinuousDeterministicActor
actorNetwork = [featureInputLayer (9
rlDDPGAgentOptions
agentOptions = rlDDPGAgentOptions (
rlDDPGAgent
代理= rlDDPGAgent(演员、评论家、agentOptions);
火车代理
rlTrainingOptions
maxepisodes = 1 e4;maxsteps =装天花板(Tf / Ts);trainingOpts = rlTrainingOptions (
火车
doTraining = false;
模拟DDPG代理
rlSimulationOptions
sim卡
% simOptions = rlSimulationOptions (MaxSteps, MaxSteps);
e1_initial = -0.4;e2_initial = 0.1;x0_lead = 80;sim (mdl)
bdclose (mdl)
重置功能
函数
另请参阅
相关的话题