此示例演示如何训练多个代理协同执行路径跟踪控制(PFC)对于车辆。PFC的目标是使ego车辆以设定速度行驶,同时通过控制纵向加速度和制动保持与引导车的安全距离,同时通过控制前转向角保持车辆沿车道中心线行驶。有关PFC的更多信息,请参阅<一个href="//www.tianjin-qmedu.com/es/help/mpc/ref/pathfollowingcontrolsystem.html" class="a">路径跟踪控制系统 给出了一个训练强化学习代理执行PFC的例子<一个href="//www.tianjin-qmedu.com/es/help/reinforcement-learning/ug/train-ddpg-agent-for-path-following-control.html" class="a">训练DDPG Agent进行路径跟踪控制 经过训练的代理通过合作行为执行PFC,并获得满意的结果。 本例中的环境包括一个用于ego汽车的简单自行车模型和一个用于lead汽车的简单纵向模型。培训目标是使ego汽车以设定的速度行驶,同时通过控制纵向加速度和制动保持与lead汽车的安全距离,同时保持ego汽车沿e通过控制前转向角,确定其车道中心线。 加载环境参数。 打开Simulin万博1manbetxk模型。 在该模型中,两个强化学习代理(RL Agent1和RL Agent2)分别提供纵向加速度和转向角信号。 发生以下任何情况时,模拟将终止。
(横向偏差超过1)
(汽车的纵向速度降到0.5以下。
(ego和主车之间的距离小于零) 对于纵向控制器(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/es/help/reinforcement-learning/ug/create-policy-and-value-function-representations.html" class="a">创建策略和价值功能表示 使用 横向控制回路的agent是DQN agent。DQN代理使用批判值函数表示来近似给定观察和行动的长期奖励。 使用 指定培训选项。对于本示例,请使用以下选项。 每集训练最多5000集,每集持续时间最多5000集 在“插曲管理器”对话框中显示培训进度(设置 当DDPG和DQN代理人获得的平均奖励分别超过480和1195时,停止训练他们。当一个agent达到停止条件时,它在不学习的情况下模拟自己的策略,而另一个agent继续训练。 使用<一个href="//www.tianjin-qmedu.com/es/help/reinforcement-learning/ref/rl.agent.rlqagent.train.html" class="a"> 下图显示了两个代理的培训进度快照。 要验证训练过的代理的性能,可以在Simulink环境中通过取消注释以下命令来模拟代理。万博1manbetx有关代理模拟的更多信息,请参见<一个href="//www.tianjin-qmedu.com/es/help/reinforcement-learning/ref/rlsimulationoptions.html" class="a"> 为了演示使用确定性初始条件训练的agent,在Simulink中模拟该模型。万博1manbetx 以下曲线图显示了模拟开始时,先导车比ego车提前70米时的结果。 领头车周期性地将速度从24 m/s更改为30 m/s(右上图)。ego车在整个模拟过程中保持安全距离(右下图)。 从0秒到30秒,自我赛车会追踪设定的速度(右上角的情节)并体验一些加速(左上角的情节)。之后,加速度减小到0。 左下角的图显示了横向偏差。如图所示,横向偏差在1秒内大大减小。横向偏差保持在0.1m以下。
概述
创造环境
多代理FCParams
mdl=
obsInfo1=rlNumericSpec([31]);actInfo1=rlNumericSpec([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;
模拟代理
模拟选项
模拟
% simOptions = rlSimulationOptions('MaxSteps', MaxSteps);
e1_初始值=-0.4;e2_初始值=0.1;x0_铅=80;sim卡(mdl)
另请参阅