主要内容

金宝appSimulinkEnvWithAgent

强化学习环境与动态模型的实现金宝app

描述

这个金宝appSimulinkEnvWithAgent对象表示使用在Simulink中实现的动态模型的强化学习环境金宝app®. environment对象充当接口,以便在调用模拟火车,这些函数依次调用Simulink模型为代理生成体验。金宝app

创造

创建金宝appSimulinkEnvWithAgent对象,使用以下函数之一。

性质

全部展开

金宝appSimulink模型名称,指定为字符串或字符向量。指定的模型必须包含一个或多个RL代理阻碍。

代理程序块路径,指定为字符串或字符串数组。

如果模型包含一个RL代理那就封锁训练吧代理块包含块路径的字符串。

如果模型包含多个RL代理然后是训练用的积木代理块是一个字符串数组,其中每个元素包含一个代理块的路径。

模型能容纳RL代理路径未包含在中的块代理块。此类代理块作为环境的一部分,并根据其当前策略选择操作。当您调用模拟火车,则不返回这些代理的经验,也不更新它们的策略。

代理块可以位于模型引用内部。有关为强化学习配置代理块的更多信息,请参阅RL代理

环境的重置行为,指定为函数句柄或匿名函数句柄。该函数必须有一个金宝app模拟输入输入参数和单个金宝app模拟输入输出参数。

reset函数用于设置Simulink环境的初始状态。金宝app例如,您可以创建一个重置函数来随机化特定的块状态,以便每个训练集从不同的初始条件开始。

如果您有一个已存在的重置功能MyReset函数在MATLAB®路径,集合ResetFcn使用函数的句柄。

env。ResetFcn = @(在)myResetFunction(的);

如果重置行为很简单,则可以使用匿名函数句柄实现它x0到一个随机值。

env.ResetFcn=@(in)setVariable(in,“x0”rand ());

这个模拟函数在每次模拟开始时调用重置函数重置环境,然后火车函数在每个训练集开始时调用它。

用于切换快速重启的选项,指定为“关于”“关闭”.快速重启允许您执行迭代模拟,而无需每次编译模型或终止模拟。

有关快速重启的更多信息,请参见重启速度如何改善迭代模拟(金宝appSimulink)

目标函数

火车 在特定环境中培训强化学习代理
模拟 在指定环境中模拟经过培训的强化学习代理
获取观测信息 从强化学习环境或代理获取观察数据规范
getActionInfo 从强化学习环境或代理获取动作数据规范

例子

全部折叠

创建一个Simul金宝appink环境使用训练的代理和相应的Simulink模型创建Simul金宝appink环境并训练Agent的例子。

在MATLAB®工作区中加载代理。

负载RLD水罐DDPG剂

为客户创造一个环境rlwatertank模型,其中包含一个RL代理块。由于该块使用的代理已在工作区中,因此不需要通过观察和操作规范来创建环境。

env = rl金宝appSimulinkEnv (“水箱”,“rlwatertank / RL代理”)
env=Si金宝appmulinkEnvWithAgent,属性为:模型:rlwatertank Agent Block:rlwatertank/RL Agent ResetFcn:[]使用快速重启:打开

通过执行两个示例时间的简短模拟来验证环境。

validateEnvironment (env)

现在,您可以使用火车模拟分别地

对于这个例子,考虑rlSimplePendulumModel金宝app仿真软件模型。该模型是一个简单的无摩擦摆,最初挂在一个向下的位置。

打开模型。

mdl=“rlSimplePendulumModel”;open_system (mdl)

创造rlNumericSpecrlFiniteSetSpec对象分别用于观察和操作信息。

obsInfo=rlNumericSpec([3 1])向量3的值sin cos d /dt
obsInfo=rlNumericSpec,属性:LowerLimit:-Inf上限:Inf名称:[0x0字符串]说明:[0x0字符串]维度:[3 1]数据类型:“双”
actInfo = rlFiniteSetSpec([-2 0 2])%扭矩的3个可能值:-2 Nm、0 Nm和2 Nm
actInfo=rlFiniteSetSpec,属性为:元素:[3x1双精度]名称:[0x0字符串]说明:[0x0字符串]维度:[1]数据类型:“双精度”

可以使用点表示法为rlNumericSpecrlFiniteSetSpec对象。

obsInfo.Name=“观察”;actInfo。Name =“扭矩”

分配代理块路径信息,并使用前面步骤中提取的信息为Simulink模型创建强化学习环境。金宝app

agentBlk=[mdl“/RL代理”];env = rl金宝appSimulinkEnv (mdl agentBlk、obsInfo actInfo)
env = 金宝appSimulinkEnvWithAgent with properties: Model: rlSimplePendulumModel AgentBlock: rlSimplePendulumModel/RL Agent ResetFcn: [] UseFastRestart: on . env = SimulinkEnvWithAgent with properties: Model: rlSimplePendulumModel

您还可以使用点表示法包含重置函数θ0在模型工作区中。

env.ResetFcn=@(in)setVariable(in,“theta0”,兰登,“工作区”,mdl)
env = 金宝appSimulinkEnvWithAgent带有属性:Model: rlSimplePendulumModel AgentBlock: rlSimplePendulumModel/RL Agent ResetFcn: @(in)setVariable(in,'theta0',randn,'Workspace',mdl) UseFastRestart: on

从示例中为Simulink模型创建一个环境金宝app训练多个agent执行协作任务

在MATLAB工作空间中加载代理。

负载RLCollaborativeTaskAgent

为客户创造一个环境rlCollaborativeTask模型,其中有两个代理块。由于两个块使用的代理(阿根塔agentB)已经在工作区中,您不需要通过它们的观察和操作规范来创建环境。

env = rl金宝appSimulinkEnv (“rlCollaborativeTask”,[“rlCollaborativeTask /代理”,“B rlCollaborativeTask /代理”])
env = 金宝appSimulinkEnvWithAgent with properties: Model: rlCollaborativeTask AgentBlock: [rlCollaborativeTask/Agent A rlCollaborativeTask/Agent B] ResetFcn: [] useastrestart: on . env = SimulinkEnvWithAgent with properties: Model: rlCollaborativeTask AgentBlock: [rlCollaborativeTask/Agent A rlCollaborativeTask/Agent B

现在可以使用下面的方法在环境中模拟或训练代理模拟火车分别地

使用预定义的“SimplePendulumModel连续”关键词创建连续单摆模型强化学习环境。

env=rlPredefinedEnv(“SimplePendulumModel连续”)
env = 金宝appSimulinkEnvWithAgent with properties: Model: rlSimplePendulumModel AgentBlock: rlSimplePendulumModel/RL Agent ResetFcn: [] UseFastRestart: on . env = SimulinkEnvWithAgent with properties: Model: rlSimplePendulumModel

这个例子展示了如何使用createIntegratedEnv从Simulink模型开始创建环境对象,该模型实现代理使用的系统。此类系统通常称为金宝app植物开环系统,或参考系统,而包括代理在内的整个(集成)系统通常被称为闭环系统。

对于本例,请使用中描述的飞行机器人模型训练DDPG Agent控制飞行机器人作为参考(开环)系统。

打开飞行机器人模型。

open_system (“rlflyingrobotev”)

初始化状态变量和采样时间。

%初始模型状态变量theta0 = 0;x0 = -15;y0 = 0;%采样时间t = 0.4;

创建Simulink模金宝app型IntegratedEnv包含以闭环方式连接到智能体块的飞行机器人模型。该函数还返回强化学习环境对象环境用于训练。

env=createIntegratedEnv(“rlflyingrobotev”,“集成环境”)
env=Si金宝appmulinkEnvWithAgent,具有以下属性:模型:IntegratedEnv代理程序块:IntegratedEnv/RL代理程序重置FCN:[]使用FastRestart:打开

该函数还可以将块路径返回到新集成模型中的RL Agent块,以及参考模型的观察和操作规范。

[~, agentBlk observationInfo actionInfo] = createIntegratedEnv (“rlflyingrobotev”,“集成环境”)
agentBlk='IntegratedEnv/RL代理'
observationInfo=rlNumericSpec,属性:LowerLimit:-Inf上限:Inf名称:“观测”说明:[0x0字符串]维度:[7 1]数据类型:“双”
actionInfo=rlNumericSpec,属性:LowerLimit:-Inf上限:Inf名称:“操作”说明:[0x0字符串]维度:[2 1]数据类型:“双”

在需要修改中的描述、限制或名称的情况下,返回块路径和规范非常有用观测信息行动信息。修改规范后,可以从集成模型创建环境IntegratedEnv使用rl金宝appSimulinkEnv作用

在R2019a中引入