此示例显示如何训练多个代理来协作车辆执行路径跟踪控制(PFC)。PFC的目标是使自助式车辆以设定的速度行进,同时通过控制纵向加速和制动来保持与铅轿厢的安全距离,同时通过控制前转向角来保持车辆沿着其通道的中心线行驶.有关PFC的更多信息,请参阅<一个href="//www.tatmou.com/nl/help/mpc/ref/pathfollowingcontrolsystem.html" class="a">路径跟踪控制系统 给出了一个训练强化学习代理执行PFC的例子<一个href="//www.tatmou.com/nl/help/reinforcement-learning/ug/train-ddpg-agent-for-path-following-control.html" class="a">训练DDPG Agent进行路径跟踪控制 训练有素的代理通过合作行为进行PFC,实现令人满意的结果。 对于该示例环境包括用于自我车和用于引导车的简单模型纵向简单自行车模型。培训目标是使自我汽车行驶在设定的速度,同时保持从引导车的安全距离,通过控制纵向加速度和刹车,同时还通过控制前轮转向角度保持自我汽车行驶沿车道的中心线。 加载环境参数。 打开Simulin金宝appk模型。 在此模型中,两个加强学习剂(RL剂1和RL Agent2)分别提供纵向加速度和转向角度信号。 当任何下列条件发生的模拟终止。
(横向偏差超过1)
(自我车的纵向速度下降到低于0.5。
(自我和铅轿车之间的距离低于零) 用于纵向控制器(RL剂1): 自我车的参考速度 来自环境的观察结果包含纵向测量:速度误差 动作信号由-3和2 m / s ^ 2之间的连续加速度值组成。 奖励
在这里,
如果终止模拟,否则
如果 对于横向控制器(RL Agent2): 来自环境的观察包含了横向测量:横向偏差 动作信号由离散的转向角动作组成,其值从-15度(-0.2618 rad)到15度(0.2618 rad),每一步1度(0.0175 rad)。 奖励
在这里,
如果终止模拟,否则
,否则 奖励功能中的逻辑术语( 为纵向控制回路创建观察和动作规范。 创建横向控制环路的观察和操作规范。 将观察和操作规范组合为单元阵列。 创建一个Simul金宝appink环境接口,为两个代理块指定块路径。块路径的顺序必须与观察和动作规范单元阵列的顺序相匹配。 属性指定环境的重置函数 对于本例,您将创建两个强化学习代理。首先,确定随机种子的重现性。 在本例中,两个代理在相同的示例时间操作。设置采样时间值(秒)。 纵向控制回路的代理是DDPG代理。DDPG代理使用批判价值函数表示来近似给定观察和行动的长期奖励,并使用行动者策略表示来选择行动。有关创建深度神经网络值函数和策略表示的更多信息,请参见<一个href="//www.tatmou.com/nl/help/reinforcement-learning/ug/create-policy-and-value-function-representations.html" class="a">创建策略和价值功能表示 使用 横向控制回路的agent是DQN agent。DQN代理使用批判值函数表示来近似给定观察和行动的长期奖励。 使用 指定培训选项。对于本示例,请使用以下选项。 每次运行每个培训集,最多有5000个剧集,每一集最多持续 在“插曲管理器”对话框中显示培训进度(设置 当DDPG和DQN代理人获得的平均奖励分别超过480和1195时,停止训练他们。当一个agent达到停止条件时,它在不学习的情况下模拟自己的策略,而另一个agent继续训练。 列车采用代理商<一个href="//www.tatmou.com/nl/help/reinforcement-learning/ref/rl.agent.rlqagent.train.html" class="a"> 下图显示了两个代理商的培训进度的快照。 要验证训练过的代理的性能,可以在Simulink环境中通过取消注释以下命令来模拟代理。金宝app有关代理模拟的更多信息,请参见<一个href="//www.tatmou.com/nl/help/reinforcement-learning/ref/rlsimulationoptions.html" class="a"> 为了演示使用确定性初始条件训练的agent,在Simulink中模拟该模型。金宝app 以下情节显示在仿真开始时引线车在EGO轿厢之前70米处的结果。 铅轿厢定期改变24米/秒至30米/秒(右上图)。自我汽车在整个模拟中保持安全距离(右下图)。 从0秒到30秒,自我赛车会追踪设定的速度(右上角的情节)并体验一些加速(左上角的情节)。之后,加速度减小到0。 左下角的图显示了横向偏移。如图所示,侧移在1秒内大大减小。侧向偏差仍然小于0.1 m。
概述
创建环境
multiAgentPFCParams
mdl =
Obsinfo1 = rlnumericspec([3 1]);Actinfo1 = rlnumericspec([1 1],
obsInfo2 = rlNumericSpec([6 1]);actInfo2 = rlFiniteSetSpec(( - 15:15)* PI / 180);
obsInfo = {obsInfo1, obsInfo2};actInfo = {actInfo1, actInfo2};
BLKS = MDL + [
env。ResetFcn = @pfcResetFcn;
创建代理
rng (0)
t = 0.1;
纵向控制
agent1 = createACCAgent (obsInfo1 actInfo1, Ts);
侧向控制
agent2 = createLKAAgent(obsInfo2,actInfo2,TS);
训练代理人
tf = 60;
火车
dotraining = false;
模拟代理人
RlsimulationOptions.
SIM
% simOptions = rlSimulationOptions('MaxSteps', MaxSteps);
e1_initial = -0.4;E2_initial = 0.1;x0_lead = 80;SIM(MDL)
另请参阅