主要内容

rl金宝appSimulinkEnv

使用动态模型创建强化学习环境金宝app

描述

rl金宝appSimulinkEnv函数从Simulink创建一个强化学习环境对象金宝app®模型。环境对象充当一个接口,以便当您调用sim卡火车,这些函数依次调用Simulink模型为代理生成体验。金宝app

例子

env= rl金宝appSimulinkEnv (mdlagentBlocks创建强化学习环境对象env为Simulin金宝appk模型mdlagentBlocks包含通往一个或多个强化学习代理块的路径mdl.如果使用此语法,每个代理块必须引用MATLAB中已经存在的代理对象®工作区。

例子

env= rl金宝appSimulinkEnv (mdlagentBlocksobsInfoactInfo创建强化学习环境对象env为模型mdl.两个单元阵列obsInfoactInfo必须包含每个代理块的观察和操作规范mdl,它们的出现顺序相同agentBlocks

env= rl金宝appSimulinkEnv (___“UseFastRestart”,fastRestartToggle创建一个强化学习环境对象env此外,还支持快速重启。在前面语法中的任何输入参数之后使用此语法。

例子

全部折叠

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

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

负载rlWaterTankDDPGAgent

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

env = rl金宝appSimulinkEnv (“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)

创建rlNumericSpecrlFiniteSetSpec对象分别为观测信息和动作信息。

obsInfo = rlNumericSpec([3 1])% 3个观测值的矢量:sin() cos() d()/dt
obsInfo = rlNumericSpec with properties: LowerLimit: -Inf UpperLimit: Inf Name: [0x0 string] Description: [0x0 string] Dimension: [3 1] DataType: "double"
actInfo = rlFiniteSetSpec([-2 0 2])% 3可能的扭矩值:-2 Nm, 0 Nm和2 Nm
actInfo = rlFiniteSetSpec with properties: Elements: [3x1 double] Name: [0x0 string] Description: [0x0 string] Dimension: [1 1] DataType: "double"

对象的属性值可以使用点表示法rlNumericSpecrlFiniteSetSpec对象。

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

分配agent块路径信息,利用上述步骤提取的信息为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模型,它有两个代理块。由于两个块使用的代理(agentAagentB)已经在工作空间中,您不需要通过它们的观察和操作规范来创建环境。

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

现在,您可以使用以下方法模拟或训练环境中的代理sim卡火车,分别。

输入参数

全部折叠

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

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

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

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

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

MATLAB环境不支持多智能体仿真。金宝app

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

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

如果mdl包含单个代理块,指定obsInfo作为一个rlNumericSpec对象,一个rlFiniteSetSpec对象,或包含此类对象混合的数组。

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

有关更多信息,请参见getObservationInfo

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

如果mdl包含单个代理块,指定actInfo作为一个rlNumericSpecrlFiniteSetSpec对象。

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

有关更多信息,请参见getActionInfo

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

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

输出参数

全部折叠

强化学习环境,返璞归真金宝appSimulinkEnvWithAgent对象。

有关强化学习环境的更多信息,请参见创建Simul金宝appink强化学习环境

介绍了R2019a