此示例显示如何训练多个代理来协作车辆执行路径跟踪控制(PFC)。PFC的目标是使自助式车辆以设定的速度行进,同时通过控制纵向加速和制动来保持与铅轿厢的安全距离,同时通过控制前转向角来保持车辆沿着其通道的中心线行驶.有关PFC的更多信息,请参阅<一个href="//www.tianjin-qmedu.com/help/mpc/ref/pathfollowingcontrolsystem.html" class="a">路径跟踪控制系统 给出了一个训练强化学习代理执行PFC的例子<一个href="//www.tianjin-qmedu.com/help/reinforcement-learning/ug/train-ddpg-agent-for-path-following-control.html" class="a">训练DDPG Agent进行路径跟踪控制 训练有素的代理通过合作行为进行PFC,实现令人满意的结果。 本示例的环境包括ego汽车的简单自行车模型和lead汽车的简单纵向模型。训练目标是通过控制纵向加速和制动使自我车以设定的速度行驶,同时保持与领先车的安全距离,同时通过控制前转向角度使自我车保持在其车道的中心线上行驶。 加载环境参数。 打开Simulin万博1manbetxk模型。 在该模型中,两个reinforcement learning agent (RL Agent1和RL Agent2)分别提供纵向加速度和转向角度信号。 当发生下列任何情况时,模拟将终止。
(横向偏差超过1)
自我车的纵向速度降到0.5以下。
(自我和铅轿车之间的距离低于零) 纵向控制器(RL Agent1): 自我车的参考速度 来自环境的观察结果包含纵向测量:速度误差 动作信号由-3和2 m / s ^ 2之间的连续加速度值组成。 奖励
在这里,
如果终止模拟,否则
如果 对于横向控制器(RL Agent2): 来自环境的观察包含了横向测量:横向偏差 动作信号由离散的转向角动作组成,其值从-15度(-0.2618 rad)到15度(0.2618 rad),每一步1度(0.0175 rad)。 奖励
在这里,
如果终止模拟,否则
,否则 奖励功能中的逻辑术语( 为纵向控制回路创建观察和动作规范。 创建横向控制回路的观察和动作规范。 将观察和操作规范组合为单元阵列。 创建一个Simul万博1manbetxink环境接口,为两个代理块指定块路径。块路径的顺序必须与观察和动作规范单元阵列的顺序相匹配。 属性指定环境的重置函数 在此示例中,您可以创建两个强化学习代理商。首先,修复随机种子以进行再现性。 在本例中,两个代理在相同的示例时间操作。设置采样时间值(秒)。 纵向控制回路的代理是DDPG代理。DDPG代理使用批判价值函数表示来近似给定观察和行动的长期奖励,并使用行动者策略表示来选择行动。有关创建深度神经网络值函数和策略表示的更多信息,请参见<一个href="//www.tianjin-qmedu.com/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.tianjin-qmedu.com/help/reinforcement-learning/ref/rl.agent.rlqagent.train.html" class="a"> 下图显示了两个代理商的培训进度的快照。 要验证训练过的代理的性能,可以在Simulink环境中通过取消注释以下命令来模拟代理。万博1manbetx有关代理模拟的更多信息,请参见<一个href="//www.tianjin-qmedu.com/help/reinforcement-learning/ref/rlsimulationoptions.html" class="a"> 为了演示使用确定性初始条件训练的agent,在Simulink中模拟该模型。万博1manbetx 以下情节显示在仿真开始时引线车在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) *π/ 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)
另请参阅