主要内容

金宝appSimulinkEnvWithAgent

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

描述

金宝appSimulinkEnvWithAgentobject表示一个强化学习环境,该环境使用在Simulink中实现的动态模型金宝app®.环境对象充当接口,以便在调用sim卡火车,这些函数依次调用Simulink模型为智能体生成经验。金宝app

创建

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

属性

全部展开

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

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

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

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

模型可以包含RL代理中未包含路径的块AgentBlock.这样的代理块作为环境的一部分,并根据其当前策略选择操作。当你打电话时sim卡火车时,这些代理的经验不会返回,它们的策略也不会更新。

代理块可以在模型引用的内部。有关配置用于强化学习的代理块的详细信息,请参见RL代理

重置环境的行为,指定为函数句柄或匿名函数句柄。函数必须有一个single金宝app仿真软件。SimulationInput输入参数和单个参数金宝app仿真软件。SimulationInput输出参数。

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

如果你有一个现有的复位功能myResetFunction在MATLAB中®路径,设置ResetFcn使用函数的句柄。

env。myResetFunction(in);

如果您的重置行为很简单,您可以使用匿名函数句柄实现它。例如,下面的代码设置变量x0到一个随机值。

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

sim卡函数在每次模拟开始时调用reset函数重置环境火车函数在每个训练集开始时调用它。

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

有关快速重新启动的详细信息,请参见快速重启如何改进迭代模拟(金宝app模型)

对象的功能

火车 在指定的环境中训练强化学习代理
sim卡 在指定的环境中模拟训练好的强化学习代理
getObservationInfo 从强化学习环境或agent获取观测数据规范
getActionInfo 从强化学习环境或agent中获取动作数据规范

例子

全部折叠

控件中使用训练过的金宝app代理和相应的Simulink模型创建Simulink环境创建Simul金宝appink环境和训练代理的例子。

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

负载rlWaterTankDDPGAgent

创建一个环境rlwatertank模型,它包含一个RL代理块。由于块使用的代理已经在工作空间中,您不需要传递观察和操作规范来创建环境。

环境= rlSi金宝appmulinkEnv(“rlwatertank”“rlwatertank / RL代理”
env = 金宝appSimulinkEnvWithAgent with properties: Model: rlwatertank AgentBlock: rlwatertank/RL Agent ResetFcn: [] UseFastRestart: on

通过执行两次简短的模拟来验证环境。

validateEnvironment (env)

您现在可以在环境中使用火车而且sim卡,分别。

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

打开模型。

mdl =“rlSimplePendulumModel”;open_system (mdl)

创建rlNumericSpec而且rlFiniteSetSpec对象分别用于观察和操作信息。

obsInfo = rlNumericSpec([3 1])% 3个观测值的向量:sin() cos() d()/dt
obsInfo = rlNumericSpec with properties: LowerLimit: -Inf UpperLimit: Inf名称:[0x0 string]描述:[0x0 string]维度:[3 1]数据类型:"double"
rlFiniteSetSpec([-2 0 2])% 3可能的扭矩值:- 2nm, 0nm和2nm
actInfo = rlFiniteSetSpec与属性:元素:[3x1 double]名称:[0x0字符串]描述:[0x0字符串]尺寸:[1 1]数据类型:"double"

属性的属性值可以使用点表示法rlNumericSpec而且rlFiniteSetSpec对象。

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

您还可以使用点表示法包含一个重置函数。对于本例,随机初始化theta0在模型工作区中。

env。ResetFcn = @(in) setVariable(in,“theta0”randn,“工作区”mdl)
env = 金宝appSimulinkEnvWithAgent with properties: Model: rlSimplePendulumModel AgentBlock: rlSimplePendulumModel/RL Agent ResetFcn: @(in)setVariable(in,'theta0',randn,'Workspace',mdl) UseFastRestart: on

根据示例为Simulink模型创建一个环境金宝app训练多智能体执行协同任务

在MATLAB工作区中加载代理。

负载rlCollaborativeTaskAgents

创建一个环境rlCollaborativeTask模型,它有两个代理块。由于两个块使用的代理(agentA而且agentB)已经在工作空间中,您不需要通过它们的观察和操作规范来创建环境。

环境= rlSi金宝appmulinkEnv(“rlCollaborativeTask”, (“rlCollaborativeTask /代理”“B rlCollaborativeTask /代理”])
env = 金宝appSimulinkEnvWithAgent with properties: Model: rlCollaborativeTask AgentBlock: [rlCollaborativeTask/Agent A rlCollaborativeTask/Agent B] ResetFcn: [] UseFastRestart: on

您现在可以在环境中使用sim卡火车,分别。

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

环境= rlPredefinedEnv(“SimplePendulumModel-Continuous”
env = 金宝appSimulinkEnvWithAgent with properties: Model: rlSimplePendulumModel AgentBlock: rlSimplePendulumModel/RL Agent ResetFcn: [] UseFastRestart: on

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

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

打开飞行机器人模型。

open_system (“rlFlyingRobotEnv”

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

%初始模型状态变量Theta0 = 0;X0 = -15;Y0 = 0;%采样时间Ts = 0.4;

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

env = createIntegratedEnv(“rlFlyingRobotEnv”“IntegratedEnv”
env = 金宝appSimulinkEnvWithAgent with properties: Model: IntegratedEnv AgentBlock: IntegratedEnv/RL Agent ResetFcn: [] UseFastRestart: on

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

[~,agentBlk,observationInfo,actionInfo] = createIntegratedEnv(“rlFlyingRobotEnv”“IntegratedEnv”
agentBlk = 'IntegratedEnv/RL Agent'
observationInfo = rlNumericSpec with properties: LowerLimit: -Inf UpperLimit: Inf名称:"observation"描述:[0x0 string]维度:[7 1]数据类型:"double"
actionInfo = rlNumericSpec with properties: LowerLimit: -Inf UpperLimit: Inf名称:"action"描述:[0x0 string]维度:[2 1]数据类型:"double"

在需要修改描述、限制或名称的情况下,返回块路径和规范非常有用observationInfo而且actionInfo.在修改规范之后,您就可以从集成模型创建环境了IntegratedEnv使用rl金宝appSimulinkEnv函数。

版本历史

在R2019a中引入