该示例演示了如何训练多个智能体协同执行车辆的路径跟踪控制(PFC)。PFC的目标是通过控制纵向加速和刹车,使自我车辆以设定的速度行驶,同时保持与领先车辆的安全距离,并通过控制前转向角度使车辆保持在车道的中心线上行驶。有关PFC的更多信息,请参见<一个href="//www.tatmou.com/jp/help/mpc/ref/pathfollowingcontrolsystem.html" class="a">路径跟踪控制系统 给出了一个训练强化学习代理执行PFC的例子<一个href="//www.tatmou.com/jp/help/reinforcement-learning/ug/train-ddpg-agent-for-path-following-control.html" class="a">训练DDPG Agent进行路径跟踪控制 经过训练的agent通过合作行为进行PFC,并取得了满意的结果。 本示例中的环境包括一个用于ego汽车的简单自行车模型和一个用于lead汽车的简单纵向模型。培训目标是通过控制纵向加速度和制动,使ego汽车以设定速度行驶,同时保持与领头车的安全距离,同时通过控制前转向角,使ego汽车沿车道中心线行驶。 加载环境参数。 打开Simulin金宝appk模型。 在该模型中,两个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金宝appink环境接口,为两个代理块指定块路径。块路径的顺序必须与观察和动作规范单元阵列的顺序相匹配。 属性指定环境的重置函数 对于本例,您将创建两个强化学习代理。首先,确定随机种子的重现性。 在本例中,两个代理在相同的示例时间操作。设置采样时间值(秒)。 纵向控制回路的代理是DDPG代理。DDPG代理使用批判价值函数表示来近似给定观察和行动的长期奖励,并使用行动者策略表示来选择行动。有关创建深度神经网络值函数和策略表示的更多信息,请参见<一个href="//www.tatmou.com/jp/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/jp/help/reinforcement-learning/ref/rl.agent.rlqagent.train.html" class="a"> 下图显示了两个代理的训练进度快照。 要验证训练过的代理的性能,可以在Simulink环境中通过取消注释以下命令来模拟代理。金宝app有关代理模拟的更多信息,请参见<一个href="//www.tatmou.com/jp/help/reinforcement-learning/ref/rlsimulationoptions.html" class="a"> 为了演示使用确定性初始条件训练的agent,在Simulink中模拟该模型。金宝app 下图是模拟开始时,领头车领先自我车70米时的结果。 引车的速度从24米/秒周期性地变化到30米/秒(右上图)。ego汽车在整个模拟过程中保持安全距离(右下图)。 从0秒到30秒,自我赛车会追踪设定的速度(右上角的情节)并体验一些加速(左上角的情节)。之后,加速度减小到0。 左下角的图显示了横向偏移。如图所示,侧移在1秒内大大减小。侧向偏差仍然小于0.1 m。
概述
创造环境
多代理FCParams
mdl =
obsInfo1 = rlNumericSpec([3 1]);actInfo1 = rlNumericSpec([1 1],
obsInfo2=rlNumericSpec([61]);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=createlkaaagent(obsInfo2、actInfo2、Ts);
培训代理商
Tf = 60;
火车
doTraining=false;
模拟代理
模拟选项
sim卡
% simOptions = rlSimulationOptions('MaxSteps', MaxSteps);
e1_initial = -0.4;e2_initial = 0.1;x0_lead = 80;sim (mdl)
另请参阅