主要内容

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另外,支持快速重启。在前面语法中的任何输入参数之后使用此语法。

例子

全部折叠

创建一个Simul金宝appink环境使用训练的代理和相应的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 =“扭矩”

分配代理块路径信息,并使用前面步骤中提取的信息为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

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

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

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

在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: [] useastrestart: on . env = SimulinkEnvWithAgent with properties: Model: rlCollaborativeTask AgentBlock: [rlCollaborativeTask/Agent A rlCollaborativeTask/Agent B

现在可以使用下面的方法在环境中模拟或训练代理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