主要内容

火车DDPG剂来控制飞行机器人

这个例子展示了如何训练深决定性策略梯度(DDPG)代理生成轨迹的飞行机器人建模仿真软件®。万博1manbetxDDPG代理的更多信息,请参阅深决定性策略梯度代理

飞行机器人模型

这个例子的强化学习环境是一个飞行机器人的初始条件随机环半径15m。机器人的定位也是随机的。机器人有两个推进器安装在身体的一侧,用于推动和引导机器人。培训目标是驱动的机器人原点朝东的初始条件。

打开模型。

mdl =“rlFlyingRobotEnv”;open_system (mdl)

设置初始状态变量模型。

theta0 = 0;x0 = -15;y0 = 0;

定义样本的时间Ts和仿真时间特遣部队

t = 0.4;Tf = 30;

对于这个模型:

  • 我们的目标取向是0rad(机器人朝东)。

  • 每个执行器的推力是有界的11N

  • 来自环境的观测位置,方向定位(正弦和余弦),速度,角速度的机器人。

  • 奖励 r t 在每一个时间步是提供

r 1 = 10 ( ( x t 2 + y t 2 + θ t 2 ) < 0 5 )

r 2 = - - - - - - One hundred. ( | x t | 20. | | | y t | 20. )

r 3 = - - - - - - ( 0 2 ( R t - - - - - - 1 + l t - - - - - - 1 ) 2 + 0 3 ( R t - - - - - - 1 - - - - - - l t - - - - - - 1 ) 2 + 0 03 x t 2 + 0 03 y t 2 + 0 02 θ t 2 )

r t = r 1 + r 2 + r 3

地点:

  • x t 是沿着x轴机器人的位置。

  • y t 沿y轴机器人的位置。

  • θ t 是机器人的姿态。

  • l t - - - - - - 1 从左边的推进器控制工作。

  • R t - - - - - - 1 从正确的推进器控制工作。

  • r 1 是奖励当机器人是接近我们的目标。

  • r 2 点球当机器人驱动器之外吗20.m x或y方向。模拟时终止 r 2 < 0

  • r 3 QR惩罚,惩罚的距离目标和控制工作。

创建集成模型

培训的代理FlyingRobotEnv模型,使用createIntegratedEnv函数自动生成一个与RL代理模型集成块,准备培训。

integratedMdl =“IntegratedFlyingRobot”;[~,agentBlk observationInfo actionInfo] = createIntegratedEnv (mdl integratedMdl);

操作和观察

创建环境对象之前,为观察和操作规范,指定名称和绑定推力之间的行为11

这个环境的观测信号 观察 = ( x y x ˙ y ˙ ( θ ) 因为 ( θ ) θ ˙ ] T

numObs = prod (observationInfo.Dimension);observationInfo。Name =“观察”;

这种环境的行动信号 行动 = ( T R T l ] T

numAct = prod (actionInfo.Dimension);actionInfo。lowerLimit = -ones(numAct,1); actionInfo.UpperLimit = ones(numAct,1); actionInfo.Name =“手臂”;

创建环境接口

创建一个环境接口的飞行机器人使用集成模型。

env = rl万博1manbetxSimulinkEnv (integratedMdl agentBlk、observationInfo actionInfo);

重置功能

创建一个定制的复位函数,随机排列机器人的初始位置沿环半径15m和初始取向。重置功能的详细信息,请参见flyingRobotResetFcn

env。ResetFcn = @(in) flyingRobotResetFcn(in);

解决随机发生器再现性的种子。

rng (0)

创建DDPG代理

DDPG代理接近长期奖励给观测和操作通过使用一个评论家表示值函数。创建评论家,首先创建一个深层神经网络和两个输入(观察和行动)和一个输出。有关创建一个神经网络的更多信息价值函数表示,看到的创建政策和价值函数表示

%为隐藏层指定输出的数量。hiddenLayerSize = 100;observationPath = [featureInputLayer numObs,“归一化”,“没有”,“名字”,“观察”)fullyConnectedLayer (hiddenLayerSize“名字”,“fc1”)reluLayer (“名字”,“relu1”)fullyConnectedLayer (hiddenLayerSize“名字”,“取得”)additionLayer (2“名字”,“添加”)reluLayer (“名字”,“relu2”)fullyConnectedLayer (hiddenLayerSize“名字”,“一个fc3”文件)reluLayer (“名字”,“relu3”)fullyConnectedLayer (1,“名字”,“fc4”));actionPath = [featureInputLayer numAct,“归一化”,“没有”,“名字”,“行动”)fullyConnectedLayer (hiddenLayerSize“名字”,“fc5”));%创建层图。criticNetwork = layerGraph (observationPath);criticNetwork = addLayers (criticNetwork actionPath);%连接actionPath observationPath。criticNetwork = connectLayers (criticNetwork,“fc5”,“添加/ in2”);

使用指定选项评论家rlRepresentationOptions

criticOptions = rlRepresentationOptions (“LearnRate”1 e 03“GradientThreshold”1);

创建一个使用指定的评论家表示神经网络和选项。您还必须指定的行动和观测规范评论家。有关更多信息,请参见rlQValueRepresentation

评论家= rlQValueRepresentation (criticNetwork observationInfo actionInfo,“观察”,{“观察”},“行动”,{“行动”},criticOptions);

DDPG代理决定哪些操作通过使用演员表示给定的观测。创建演员,首先创建一个深层神经网络与一个输入(观察)和一个输出(行动)。

构建演员同样的评论家。有关更多信息,请参见rlDeterministicActorRepresentation

actorNetwork = [featureInputLayer numObs,“归一化”,“没有”,“名字”,“观察”)fullyConnectedLayer (hiddenLayerSize“名字”,“fc1”)reluLayer (“名字”,“relu1”)fullyConnectedLayer (hiddenLayerSize“名字”,“取得”)reluLayer (“名字”,“relu2”)fullyConnectedLayer (hiddenLayerSize“名字”,“一个fc3”文件)reluLayer (“名字”,“relu3”)fullyConnectedLayer (numAct“名字”,“fc4”)tanhLayer (“名字”,“tanh1”));actorOptions = rlRepresentationOptions (“LearnRate”1 e-04“GradientThreshold”1);演员= rlDeterministicActorRepresentation (actorNetwork observationInfo actionInfo,“观察”,{“观察”},“行动”,{“tanh1”},actorOptions);

创建DDPG代理,首先使用指定DDPG代理选项rlDDPGAgentOptions

agentOptions = rlDDPGAgentOptions (“SampleTime”Ts,“TargetSmoothFactor”1 e - 3,“ExperienceBufferLength”1 e6,“DiscountFactor”,0.99,“MiniBatchSize”,256);agentOptions.NoiseOptions。方差= 1 e 1;agentOptions.NoiseOptions。VarianceDecayRate = 1 e-6;

然后,创建代理使用指定的演员表示,评论家表示,和代理的选择。有关更多信息,请参见rlDDPGAgent

代理= rlDDPGAgent(演员、评论家、agentOptions);

火车代理

培训代理商,首先指定培训选项。对于这个示例,使用以下选项:

  • 运行每个培训20000年集,每集持久的最多装天花板(Tf / Ts)时间的步骤。

  • 在事件管理器对话框显示培训进展(设置情节在命令行选项)和禁用显示(设置详细的选项)。

  • 停止训练当代理接收到平均累积奖励大于415年连续超过10集。此时,代理可以驱动飞行机器人的目标位置。

  • 保存一份代理累积奖励大于每一集415年

有关更多信息,请参见rlTrainingOptions

maxepisodes = 20000;maxsteps =装天花板(Tf / Ts);trainingOptions = rlTrainingOptions (“MaxEpisodes”maxepisodes,“MaxStepsPerEpisode”maxsteps,“StopOnError”,“上”,“详细”假的,“阴谋”,“训练进步”,“StopTrainingCriteria”,“AverageReward”,“StopTrainingValue”,415,“ScoreAveragingWindowLength”10“SaveAgentCriteria”,“EpisodeReward”,“SaveAgentValue”,415);

火车代理使用火车函数。培训是一个计算密集型的过程需要几个小时才能完成。节省时间在运行这个例子中,加载一个pretrained代理设置doTraining。训练自己代理,集doTraining真正的

doTraining = false;如果doTraining%培训代理。trainingStats =火车(代理,env, trainingOptions);其他的%加载pretrained代理的例子。负载(“FlyingRobotDDPG.mat”,“代理”)结束

模拟DDPG代理

验证培训代理的性能,模拟环境中的代理。代理模拟更多的信息,请参阅rlSimulationOptionssim卡

simOptions = rlSimulationOptions (“MaxSteps”,maxsteps);经验= sim (env,代理,simOptions);

图飞行机器人可视化工具包含一个坐标轴对象。坐标轴对象包含3颤类型的对象,补丁,线。

另请参阅

|

相关的话题