主要内容

培训多个代理商执行协作任务

此示例显示如何在Simulink®环境上设置多代理培训会话。万博1manbetx在该示例中,您培训两个代理商协作执行移动对象的任务。

该示例中的环境是含有由圆形表示的元件的无摩擦二维表面。目标对象C由带半径为2μm的蓝色圆,而机器人A(红色)和B(绿色)由较小的圆圈表示,每个圆形为1m。机器人试图通过碰撞施加力来将物体C在半径8m的圆环外移动。环境中的所有元素都有大规模的,牛顿的议案法则。另外,元件和环境边界之间的接触力被建模为弹簧和质量阻尼系统。元件可以通过在X和Y方向上的外部施加的外部施加的外部施加来移动表面。第三尺寸没有动作,并且系统的总能量是节省的。

创建此示例所需的参数集。

rlcollaborativetaskparams.

打开Simulin万博1manbetxk模型。

mdl =“rlcollaborativetask”;Open_System(MDL)

对于这个环境:

  • 在x和y方向上,二维空间在-12μm到12μm中界定。

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

  • 代理商在最后一次步骤中共享相同的位置,A,B和C的位置,速度以及动作值。

  • 当物体C在圆环外移动时,模拟终止。

  • 在每步,代理商都会收到以下奖励:

R. 一种 = R. 全球的 + R. 当地的 一种 R. B. = R. 全球的 + R. 当地的 B. R. 全球的 = 0. 001 D. C R. 当地的 一种 = - 0. 005 D. AC. - 0. 008 一种 2 R. 当地的 B. = - 0. 005 D. 公元前 - 0. 008 B. 2

这里:

  • R. 一种 R. B. 代理A和B分别收到的奖励。

  • R. 全球的 是两个代理接收的团队奖励,因为对象C移动更接近环的边界。

  • R. 当地的 一种 R. 当地的 B. 代理A和B基于从对象C的距离和最后一次步骤的行动的幅度来接受当地惩罚。

  • D. C 物体c从环的中心的距离。

  • D. AC. D. 公元前 是代理A和对象C和代理B和对象C之间的距离。

  • 一种 B. 是来自最后一次步骤的代理A和B的动作值。

此示例使用具有离散动作空间的近端策略优化(PPO)代理。要了解有关PPO代理商的更多信息,请参阅近端政策优化代理。代理商在导致运动的机器人上应用外力。每次步骤,代理都选择动作 一种 B. = [ F X F y ] , 在哪里 F X F y 是以下是外部应用力的以下成对之一。

F X = - 1 0. N F y = - 1 0. N

F X = - 1 0. N F y = 0.

F X = - 1 0. N F y = 1 0. N

F X = 0. F y = - 1 0. N

F X = 0. F y = 0.

F X = 0. F y = 1 0. N

F X = 1 0. N F y = - 1 0. N

F X = 1 0. N F y = 0.

F X = 1 0. N F y = 1 0. N

创建环境

要创建多代理环境,请使用字符串数组指定代理的块路径。此外,使用单元阵列指定观察和操作规范对象。单元格数组中规范对象的顺序必须与块路径阵列中指定的顺序匹配。当在环境创建时的Matlab工作空间中可用代理时,观察和操作规范阵列是可选的。有关创建多代理环境的更多信息,请参阅Rl万博1manbetxsimulinkenv.

为环境创建I / O规范。在该示例中,药剂是均匀的并且具有相同的I / O规格。

%观察数numobs = 16;%行动数量numact = 2;外部施加力的%最大值(n)maxf = 1.0;每个代理的I / O规范oinfo = rlnumericspec([numobs,1]);AINFO = rlFiniteSetSpec({[-maxF -maxF] [-maxF 0] [-maxF MAXF] [0 -maxF] [0 0] [0 MAXF] [MAXF -maxF] [MAXF 0] [MAXF MAXF]});oinfo.name =.'观察';ainfo.name =.'势力';

创建Simulink环万博1manbetx境界面。

Blks = [“rlcollaborativetask /代理a”“rlcollaborativetask /代理b”];Obsinfos = {oinfo,oinfo};Actinfos = {AINFO,AINFO};Env = Rl万博1manbetxsimulinkenv(MDL,BLK,OBSINFOS,ACTINFOS);

为环境指定重置函数。重置功能重新汲取确保机器人从每个集发作开始的随机初始位置开始。

env.resetfcn = @(in)Resetrobots(在,RA,RB,RC,边界);

创造代理人

PPO代理人依靠演员和批评者表示来学习最佳政策。在该示例中,代理能够为演员和评论家维持基于神经网络的函数近似器。

创建批评神经网络和表示。批评网络的输出是状态值函数 V. S. 对于国家 S.

%重置随机种子以提高再现性RNG(0)%批评网络批评= [......FeatureInputLayer(oinfo.dimension(1),'正常化''没有任何''姓名''观察')全连接列(128,'姓名''批判福尔''掌控itializer''他')剥离('姓名''rictrelu1')全连接层(64,'姓名''批判性]'掌控itializer''他')剥离('姓名''transrelu2')全连接列(32,'姓名''批判液3''掌控itializer''他')剥离('姓名''rictrelu3')全康连接层(1,'姓名''批评')];%批评意见批评= rlrepresentationOptions('学习',1E-4);批评= rlvaluerepresentation(批判性,oinfo,'观察',{'观察'},批评);批评= rlvalueerepresentation(批评,oinfo,'观察',{'观察'},批评);

actor网络的输出是概率 π 一种 | S. 在某个状态下采取每个可能的行动对 S. 。创建演员神经网络和表示。

%演员网络Actornetwork = [......FeatureInputLayer(oinfo.dimension(1),'正常化''没有任何''姓名''观察')全连接列(128,'姓名''actorfc1''掌控itializer''他')剥离('姓名''ACTORRELU1')全连接层(64,'姓名''Actorfc2''掌控itializer''他')剥离('姓名''ACTORRELU2')全连接列(32,'姓名''Actorfc3''掌控itializer''他')剥离('姓名''ACTORRELU3')全连接列(numel(ainfo.elements),'姓名''行动')softmaxlayer('姓名'“sm”)];%演员表示Actoropts = RlR​​epresentationOptions('学习',1E-4);Actora = rlstochasticRoreEntentation(Actornetwork,Oinfo,Ainfo,......'观察',{'观察'},actoropts);Actorb = rlstochasticRoreEntation(Actornetwork,Oinfo,Ainfo,......'观察',{'观察'},actoropts);

创建代理商。两个代理商都使用相同的选项。

代理选项= rlppoagentoptions(......'经验热诚',256,......'ClipFactor',0.125,......'entropylossweight',0.001,......'minibatchsize',64,......'numechoch',3,......'vieildereextimatemethod''gae'......'Gafactor',0.95,......'采样时间',ts,......'贴花因子',0.9995);Agenta = RLPPoAgent(Actora,Tresca,AgentOptions);AgentB = RLPPoAgent(Actorb,批评,AgentOptions);

在培训期间,代理商收集经验,直到达到256个步骤或摘要的体验视界,然后从迷你批次的64个经验中培训。此示例使用0.125的客观函数剪辑因子,以提高培训稳定性和0.9995的折扣因子,以鼓励长期奖励。

训练代理人

指定以下培训代理人的培训选项。

  • 运行大多数1000次剧集的培训,每个集发作持续最多5000个时间步长。

  • 当其平均奖励超过100个连续发作是-10或更多的平均奖励时,停止培训代理商。

maxepisodes = 1000;maxsteps = 5e3;训练= rltrainingOptions(......'maxepisodes',maxepisodes,......'maxstepperepisode',maxsteps,......'scoreaveragingwindowlength',100,......'plots''培训 - 进步'......'stoptrinaincriteria''AverageReward'......'stoptriningvalue',-10);

要培训多个代理,请指定一系列代理商火车功能。数组中的代理顺序必须匹配环境创建期间指定的代理块路径的顺序。这样做可确保代理对象链接到环境中的适当I / O接口。培训这些代理人可能需要几个小时才能完成,具体取决于可用的计算能力。

垫文件rlcollaborativetaskagents.包含一组预制代理。您可以加载文件并查看代理的性能。训练代理人,套装用圆形真的

dotraining = false;如果dotraining stats =火车([Agenta,Agentb],Env,训练);别的加载('rlcollaborativetaskagents.mat');结尾

下图显示了培训进度的快照。由于培训过程中的随机性,您可以期待不同的结果。

模拟代理人

模拟环境中的训练有素的代理。

simoptions = rlsimulation选项('maxsteps',maxsteps);exp = sim(env,[Agenta AgentB],SimOptions);

图多代理协作任务包含轴。轴包含5型矩形,文本的对象。

有关代理模拟的更多信息,请参阅RlsimulationOptions.SIM

也可以看看

|

相关话题