主要内容

训练多个代理执行协作任务

这个例子展示了如何设置一个多智能训练仿真软件®环境。金宝app在这个例子中,您训练两个代理协作执行的任务移动一个对象。

环境在这个例子中是一个无摩擦的二维表面含有元素由圆圈表示。目标对象所代表的C是蓝色的圆的半径2米,和机器人(红色)和B(绿色)是由更小的圆的半径1米。机器人试图移动对象C外圆环的半径8 m运用力量的碰撞。所有的元素在环境质量和遵守牛顿运动定律。此外,元素之间的接触力和环境边界建模为春季和质量阻尼系统。表面的元素可以通过外部的应用程序应用部队在X和Y方向。没有在第三维度和运动系统的总能量是守恒的。

设置随机种子和这个例子所需创建的一组参数。

rng (10) rlCollaborativeTaskParams

打开仿真软件模型。金宝app

mdl =“rlCollaborativeTask”;open_system (mdl)

对于这个环境:

  • 二维空间是有界从-12米到12米在X和Y方向。

  • 接触弹簧刚度和阻尼值100 N / m和0.1 N / m / s,分别。

  • 代理共享相同的观测位置,速度的A, B, C和动作值从最后一次一步。

  • 仿真对象C圆环外移动时终止。

  • 在每个时间步,代理获得以下奖励:

r 一个 = r 全球 + r 当地的 , 一个 r B = r 全球 + r 当地的 , B r 全球 = 0 001年 d c r 当地的 , 一个 = - - - - - - 0 005年 d 交流 - - - - - - 0 008年 u 一个 2 r 当地的 , B = - - - - - - 0 005年 d 公元前 - - - - - - 0 008年 u B 2

在这里:

  • r 一个 r B 由代理收到的奖励A和B,分别。

  • r 全球 是一个团队奖励,即接收到代理对象C靠近边界的戒指。

  • r 当地的 , 一个 r 当地的 , B A和B是本地处罚收到代理根据距离C和对象的大小从最后一次行动步骤。

  • d C 是对象的距离C从环的中心。

  • d 交流 d 公元前 代理之间的距离和对象B和C和代理对象C,分别。

  • 代理申请外部力量导致运动的机器人。 u 一个 u B 行动的价值观是A和B两个代理从最后一次一步。动作值的范围是1 - 1。

环境

多智能体环境,创建一个指定代理的块路径使用字符串数组。同时,指定使用细胞观察和行动规范对象数组。单元阵列中的规范对象的顺序必须匹配块路径数组中指定的顺序。当代理可用MATLAB工作区环境创建的时候,观察和行动规范数组是可选的。关于多智能体环境创造的更多信息,请参阅rl金宝appSimulinkEnv

创造的I / O规范环境。在本例中,代理是均匀和I / O规格相同。

%的观察numObs = 16;%的行动numAct = 2;%最大价值的外部作用力(N)maxF = 1.0;为每个代理% I / O规范oinfo = rlNumericSpec ([numObs, 1]);ainfo = rlNumericSpec (numAct, 1,UpperLimit = maxF,LowerLimit = maxf);oinfo。Name =“观察”;ainfo。Name =“力量”;

创建界面的仿真软件环境金宝app。

黑色= [“rlCollaborativeTask /代理”,“B rlCollaborativeTask /代理”];obsInfos = {oinfo, oinfo};actInfos = {ainfo, ainfo};env = rl金宝appSimulinkEnv (mdl,黑色,obsInfos actInfos);

指定一个重置功能环境。重置功能resetRobots确保了机器人从随机初始位置在每集的开始。

env。ResetFcn = @(在)resetRobots (RA, RB、RC boundaryR);

代理

这个示例使用两个近端政策优化(PPO)代理与持续的行动空间。代理申请外部力量导致运动的机器人。更多地了解PPO代理,看看近端政策优化(PPO)代理

代理收集经验到经验地平线(600步)。轨迹完成后,代理从mini-batches 300经验。一个目标函数剪辑因素0.2是用来改善培训稳定和折现系数0.99是用来鼓励长期回报。

对于这个示例指定代理选项。

agentOptions = rlPPOAgentOptions (ExperienceHorizon = 600,ClipFactor = 0.2,EntropyLossWeight = 0.01,MiniBatchSize = 300,NumEpoch = 4,AdvantageEstimateMethod =“gae”,GAEFactor = 0.95,SampleTime = Ts,DiscountFactor = 0.99);agentOptions.ActorOptimizerOptions。LearnRate = 1的军医;agentOptions.CriticOptimizerOptions。LearnRate = 1的军医;

使用默认代理创建语法创建代理。更多信息见rlPPOAgent

agentA = rlPPOAgent (oinfo ainfo,rlAgentInitializationOptions (NumHiddenUnit = 200), agentOptions);agentB = rlPPOAgent (oinfo ainfo,rlAgentInitializationOptions (NumHiddenUnit = 200), agentOptions);

培训

训练多个代理,你可以通过代理的一个数组火车函数。代理的顺序数组中指定的代理块路径必须匹配订单在创造环境。这样做确保代理对象是与他们的环境中适当的I / O接口。

你可以训练多个代理分散或集中的方式。分散培训,代理收集自己的经验在情节和独立学习的经验。在集中培训、代理一起分享收集到的经验和从错误中学习。演员和评论家函数之间同步轨道后的代理完成。

配置一个多代理培训,您可以创建代理组,每组指定一个学习策略rlMultiAgentTrainingOptions对象。每个代理组可能包含独特的代理指标,和学习策略“集中”“去中心化”。例如,您可以使用以下命令来配置培训三个代理组用不同的学习策略。的代理指标[1,2](3、4)学习在一个集中的方式代理4以分散的方式学习。

选择= rlMultiAgentTrainingOptions (AgentGroups = {[1, 2] 4 (3、5)}, LearningStrategy =[“集中式”、“分散”,“集中”))

在多代理培训的更多信息,类型帮助rlMultiAgentTrainingOptions在MATLAB。

您可以执行分散或集中培训通过运行以下部分之一使用Run按钮。

1。分散培训

配置分散的多代理培训这个例子:

  • 自动分配代理组使用AgentGroups =汽车选择。这个分配每个代理在一个单独的组。

  • 指定“去中心化”学习策略。

  • 运行培训最多1000集,每集持续最多600的时间步骤。

  • 阻止一个代理的培训当其平均奖励30多个连续集是-10或更多。

trainOpts = rlMultiAgentTrainingOptions (AgentGroups =“汽车”,LearningStrategy =“去中心化”,MaxEpisodes = 1000,MaxStepsPerEpisode = 600,ScoreAveragingWindowLength = 30,StopTrainingCriteria =“AverageReward”,StopTrainingValue = -10);

培训人员使用火车函数。培训可以需要几个小时才能完成取决于可用的计算能力。为了节省时间,文件加载垫decentralizedAgents.mat它包含一组pretrained代理。培训代理商自己,集doTraining真正的

doTraining = false;如果doTraining decentralizedTrainResults =火车([agentA agentB], env, trainOpts);其他的负载(“decentralizedAgents.mat”);结束

下面的图显示了一个快照分散培训进展。你可以期待不同的结果由于随机性的培训过程。

2。集中的训练

配置集中多代理培训这个例子:

  • 分配(指数两个代理12)在一个组。你可以通过指定的代理指标“AgentGroups”选择。

  • 指定“集中”学习策略。

  • 运行培训最多1000集,每集持续最多600的时间步骤。

  • 阻止一个代理的培训当其平均奖励30多个连续集是-10或更多。

trainOpts = rlMultiAgentTrainingOptions (AgentGroups = {[1, 2]},LearningStrategy =“集中”,MaxEpisodes = 1000,MaxStepsPerEpisode = 600,ScoreAveragingWindowLength = 30,StopTrainingCriteria =“AverageReward”,StopTrainingValue = -10);

培训人员使用火车函数。培训可以需要几个小时才能完成取决于可用的计算能力。为了节省时间,文件加载垫centralizedAgents.mat它包含一组pretrained代理。培训代理商自己,集doTraining真正的

doTraining = false;如果doTraining centralizedTrainResults =火车([agentA agentB], env, trainOpts);其他的负载(“centralizedAgents.mat”);结束

下面的图显示了一个快照的集中培训的进展。你可以期待不同的结果由于随机性的培训过程。

模拟

一旦训练完成后,与环境模拟训练有素的特工。

simOptions = rlSimulationOptions (MaxSteps = 300);经验= sim (env, [agentA agentB], simOptions);

图多代理协作任务包含一个坐标轴对象。坐标轴对象包含X (m), ylabel Y (m)包含5类型的矩形对象,文本。

代理模拟更多的信息,请参阅rlSimulationOptionssim卡

另请参阅

功能

对象

相关的例子

更多关于