主要内容

Rl万博1manbetxsimulinkenv.

使用实现的动态模型创建强化学习环境万博1manbetx

描述

Rl万博1manbetxsimulinkenv.函数从Simulink创建一个强化学习环境对象万博1manbetx®模型。环境对象充当一个接口,以便当您调用SIM火车,这些功能依次调用Simulink模型来为代理生成体验。万博1manbetx

例子

env.= rl万博1manbetxSimulinkEnv (mdlagentBlocks创建强化学习环境对象env.对于Simuli万博1manbetxnk模型mdlagentBlocks包含一个或多个加强学习代理程序块的路径mdl.如果使用此语法,则每个代理程序组必须引用已在MATLAB中的代理对象®工作区。

例子

env.= rl万博1manbetxSimulinkEnv (mdlagentBlocksobsinfo.Actinfo.创建强化学习环境对象env.为模型mdl.两个单元格数组obsinfo.Actinfo.必须包含每个代理程序块的观察和动作规范mdl,与它们出现的顺序相同agentBlocks

env.= rl万博1manbetxSimulinkEnv (___,'umerfastrestart',FastrestArtToggle.创建一个强化学习环境对象env.并另外启用快速重启。在上一个语法中的任何输入参数后使用此语法。

例子

全部折叠

创建一个Simul万博1manbetxink环境使用训练的代理和相应的Simulink模型创建Simul万博1manbetxink环境和培训代理的例子。

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

加载rlwatertankddpgagent.

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

env = rl万博1manbetxSimulinkEnv ('rlwatertank'“rlwatertank / RL代理”
env = 万博1manbetxSimulinkEnvWithAgent with properties: Model: rlwatertank AgentBlock: rlwatertank/RL Agent ResetFcn: [] UseFastRestart: on

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

validateEnvironment (env)

您现在可以通过使用培训并模拟环境中的代理火车SIM, 分别。

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

打开模型。

mdl =“rlSimplePendulumModel”;open_system (mdl)

创建rlNumericSpecrlfinitesetspec.对象分别为观察和动作信息。

obsInfo = rlNumericSpec([3 1])向量3的值sin cos d /dt
obsInfo = rlnumericspec与属性:lowerlimit:-inf上唇:inf name:[0x0字符串]描述:[0x0字符串]尺寸:[3 1]数据类型:“double”
actInfo = rlFiniteSetSpec([-2 0 2])扭矩的%3可能的值:-2 nm,0 nm和2nm
ActInfo = rlfinitesetspec,具有属性:元素:[3x1 double]名称:[0x0字符串]描述:[0x0字符串]尺寸:[1 1]数据类型:“DOUBLE”

您可以使用DOT表示法为分配属性值rlNumericSpecrlfinitesetspec.对象。

ObsInfo.name =.'观察';actInfo。Name ='扭矩'

分配代理块路径信息,并使用先前步骤中提取的信息创建用于Simulink模型的增强学习环境。万博1manbetx

agentBlk = [mdl'/ rl代理'];env = rl万博1manbetxSimulinkEnv (mdl agentBlk、obsInfo actInfo)
env = 万博1manbetxSimulinkEnvWithAgent with properties: Model: rlSimplePendulumModel AgentBlock: rlSimplePendulumModel/RL Agent ResetFcn: [] UseFastRestart: on . env = SimulinkEnvWithAgent with properties: Model: rlSimplePendulumModel

您还可以使用点表示法包含重置功能。对于此示例,随机初始化Theta0.在模型工作区中。

env.resetfcn = @(in)setVariable(在,“theta0”,randn,“工作区”mdl)
env = 万博1manbetxSimulinkEnvWithAgent带有属性:Model: rlSimplePendulumModel AgentBlock: rlSimplePendulumModel/RL Agent ResetFcn: @(in)setVariable(in,'theta0',randn,'Workspace',mdl) UseFastRestart: on

从示例中为Simulink模型创建一个环境万博1manbetx训练多个agent执行协作任务

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

加载rlcollaborativetaskagents.

创造一个环境rlcollaborativetask.模型,它有两个代理块。由于两个区块所使用的代理(Agenta.AgentB.)已经在工作区中,您不需要通过它们的观察和操作规范来创建环境。

env = rl万博1manbetxSimulinkEnv ('rlcollaborativetask', (“rlCollaborativeTask /代理”“B rlCollaborativeTask /代理”])
env = 万博1manbetxSimulinkEnvWithAgent 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

您现在可以使用环境模拟或培训代理SIM火车, 分别。

输入参数

全部折叠

万博1manbetxSimulink模型名称,指定为字符串或字符向量。模型必须至少包含一个RL代理堵塞。

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

如果mdl包含一个单身RL代理块,指定agentBlocks作为包含块路径的字符串或字符向量。

如果mdl包含多个RL代理块,指定agentBlocks作为字符串数组,其中每个元素包含一个代理块的路径。

mdl可以包含RL代理没有包含其路径的块agentBlocks.这样的代理块作为环境的一部分,根据它们当前的策略选择操作。当你打电话SIM火车,则不返回这些代理的经验,也不更新它们的策略。

MATLAB环境不支持多智能体仿真。万博1manbetx

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

观察信息,指定为规范对象,规范对象数组或单元格数组。

如果mdl包含单个代理块,指定obsinfo.作为一个rlNumericSpec对象,一个rlfinitesetspec.对象,或包含这些对象混合的数组。

如果mdl包含多个代理程序块,指定obsinfo.作为单元阵列,其中每个单元格包含相应块的规范对象或规范对象数组agentBlocks

有关更多信息,请参见getObservationInfo

操作信息,指定为规范对象或单元格数组。

如果mdl包含单个代理块,指定Actinfo.作为一个rlNumericSpecrlfinitesetspec.对象。

如果mdl包含多个代理程序块,指定Actinfo.作为单元格数组,其中每个单元格包含对应块的规范对象agentBlocks

有关更多信息,请参见getActionInfo

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

有关快速重启的更多信息,请参见快速重启如何提高迭代模拟(万博1manbetxSimulink)

输出参数

全部折叠

强化学习环境,作为一个返回万博1manbetxSimulinkenvwithagent.对象。

有关强化学习环境的更多信息,请参阅创建Simul万博1manbetxink强化学习环境

在R2019A介绍