此示例显示了如何在Simulink®中为自适应巡航控制(ACC)培训深层确定性策略梯度(DDPG)代理。有关DDPG代理的更多信息,请参阅金宝app 这个例子的强化学习环境是一个简单的纵向动力学的自我汽车和领先汽车。训练目标是通过控制纵向加速和刹车,使自我车以设定的速度行驶,同时保持与领先车的安全距离。这个例子使用了与 指定两辆车的初始位置和速度。 指定静止默认间隔(m),时间间隔(s)和驱动程序设置的速度(m/s)。 要模拟车辆动力学的物理限制,请将加速度限制在范围内 定义样本时间 打开模型。 对于这个模型: 从代理到环境的加速度动作信号为-3到2 m/s^2。 自我车的参考速度 来自环境的观测是速度误差 当自我车的纵向速度小于0,或引导车与自我车的相对距离小于0时,仿真终止。 奖赏
在哪里 为模型创建强化学习环境界面。 创建观察规范。 创建操作规范。 创建环境接口。 要定义领头车位置的初始条件,请使用匿名函数句柄指定环境重置函数。重置函数 修复随机生成器种子的再现性。 DDPG代理使用临界值函数表示来近似给定观察和行动的长期回报。要创建批评家,首先创建一个具有两个输入、状态和动作以及一个输出的深度神经网络。有关创建神经网络值函数表示的详细信息,请参见 查看网络配置。 使用指定批评家表示的选项 使用指定的神经网络和选项创建批评家表示。还必须指定批评家的操作和观察信息,这些信息是从环境界面获得的。有关更多信息,请参阅 DDPG代理通过使用参与者表示来决定执行给定观察的操作。要创建演员,首先创建一个深度神经网络,一个输入,一个观察,一个输出,一个动作。 以类似于批评家的方式构造参与者。有关更多信息,请参阅 要创建DDPG代理,请首先使用指定DDPG代理选项 然后,使用指定的参与者表示、评论家表示和代理选项创建DDPG代理。有关更多信息,请参阅 要培训代理,首先指定培训选项。对于本例,使用以下选项: 每次训练最多进行一次 在“插曲管理器”对话框中显示培训进度。 当代理收到大于260的情节奖励时停止训练。 有关更多信息,请参见 训练代理人使用 要验证经过训练的代理的性能,可以在Simulink环境中通过取消注释以下命令来模拟该代理。金宝app有关代理模拟的更多信息,请参见 要使用确定性初始条件演示经过训练的agent,请在Simulink中模拟该模型。金宝app 下面的图显示了当前车领先自我车70 (m)时的仿真结果。 在前28秒,相对距离大于安全距离(底部图),所以自我汽车轨迹设定速度(中间图)。为了加速并达到设定的速度,加速度是正的(上图)。 从28秒到60秒,相对距离小于安全距离(底部图),所以自我车跟踪最小的领先速度和设定速度。从28秒到36秒,引导速度小于设定的速度(中间图)。要减速并跟踪领头车的速度,加速度是负的(上图)。从36秒到60秒,自我汽车调整其加速度,以密切跟踪参考速度(中间情节)。在这个时间间隔内,ego赛车追踪设定的速度从43秒到52秒,追踪引导速度从36秒到43秒和52秒到60秒。 关闭Simulink金宝app模型。金宝app仿真软件模型
x0_铅=50;
D_default = 10;t_gap = 1.4;v_set = 30;
阿明•伊戈=-3;阿玛克斯•伊戈=2;
t = 0.1;Tf = 60;
mdl =
创建环境接口
observationInfo=rlNumericSpec([3 1],
actionInfo = rlNumericSpec([1 1],
env = rl金宝appSimulinkEnv (mdl agentblk、observationInfo actionInfo);
env.ResetFcn=@(in)localResetFcn(in);
rng (
创建DDPG代理
L=48;
绘图(关键网络)
rlRepresentationOptions
临界点=rlRepresentationOptions(
rlQValueRepresentation
critic=rlQValueRepresentation(关键网络、观测信息、动作信息、,
rlDeterministicActorRepresentation
actorNetwork=[featureInputLayer(3,
rlDDPGAgentOptions
agentOptions=rlDDPGAgentOptions(
rlDDPGAgent
代理= rlDDPGAgent(演员、评论家、agentOptions);
列车员
RL培训选项
maxepisodes = 5000;maxsteps =装天花板(Tf / Ts);trainingOpts = rlTrainingOptions (
火车
doTraining = false;
模拟DDPG代理
rlSimulationOptions
模拟
%simOptions=rlSimulationOptions('MaxSteps',MaxSteps);
x0_lead = 80;sim (mdl)
bdclose(mdl)
重置功能
作用
另见
相关的话题