训练多个代理执行协作任务
这个例子展示了如何设置一个多智能训练仿真软件®环境。金宝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圆环外移动时终止。
在每个时间步,代理获得以下奖励:
在这里:
和 由代理收到的奖励A和B,分别。
是一个团队奖励,即接收到代理对象C靠近边界的戒指。
和 A和B是本地处罚收到代理根据距离C和对象的大小从最后一次行动步骤。
是对象的距离C从环的中心。
和 代理之间的距离和对象B和C和代理对象C,分别。
代理申请外部力量导致运动的机器人。 和 行动的价值观是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。集中的训练
配置集中多代理培训这个例子:
分配(指数两个代理
1
和2
)在一个组。你可以通过指定的代理指标“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);
代理模拟更多的信息,请参阅rlSimulationOptions
和sim卡
。