主要内容

rlSimulinkEnv

使用实现的动态模型创建强化学习环境动态仿真模块

描述

rlSimulinkEnv函数从Simulink中创建强化学习环境对象®模型。环境对象充当一个接口,以便在调用时sim卡火车,这些函数依次调用Simulink模型为代理生成经验。

例子

env= rlSimulinkEnv (mdlagentBlocks创建强化学习环境对象env的Simulink模型mdlagentBlocks包含到一个或多个强化学习代理块的路径mdl.如果使用这种语法,每个代理块必须引用MATLAB中已经存在的代理对象®工作区。

例子

env= rlSimulinkEnv (mdlagentBlocksobsInfoactInfo创建强化学习环境对象env为模型mdl.两个单元格数组obsInfo而且actInfo必须包含每个代理块的观察和操作规范mdl,与它们出现的顺序相同agentBlocks

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

例子

全部折叠

使用训练过的代理和相应的Simulink模型创建Simulink环境创建Simulink环境和Train Agent的例子。

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

负载rlWaterTankDDPGAgent

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

env = rlSimulinkEnv (“rlwatertank”“rlwatertank / RL代理”
Model: rlwatertank AgentBlock: rlwatertank/RL Agent ResetFcn: [] UseFastRestart: on . env = SimulinkEnvWithAgent

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

validateEnvironment (env)

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

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

打开模型。

mdl =“rlSimplePendulumModel”;open_system (mdl)

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

观察结果是一个包含三个信号的向量:角度的正弦、余弦和时间导数。

obsInfo = rlNumericSpec([3 1])
obsInfo = rlNumericSpec with properties: LowerLimit: -Inf UpperLimit: Inf Name: [0×0 string] Description: [0×0 string] Dimension: [3 1] DataType: "double"

动作是表示扭矩的标量,可以是三个可能值之一,-2海里,0纳米和2Nm。

actInfo = rllimitesetspec ([-2 0 2])
名称:[0×0 string]描述:[0×0 string]维度:[1 1]数据类型:"double"

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

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

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

agentBlk = [mdl' / RL代理'];env = rlSimulinkEnv (mdl agentBlk、obsInfo actInfo)
env = SimulinkEnvWithAgent with properties: Model: rlSimplePendulumModel AgentBlock: rlSimplePendulumModel/RL Agent ResetFcn: [] UseFastRestart: on

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

env。= @(in) setVariable(in)“theta0”randn,“工作区”mdl)
模型:rlSimplePendulumModel AgentBlock: rlSimplePendulumModel/RL Agent ResetFcn: @(in)setVariable(in,'theta0',randn,'Workspace',mdl) UseFastRestart: on

根据示例为Simulink模型创建一个环境训练多个代理执行协作任务

在MATLAB工作区中加载代理。

负载rlCollaborativeTaskAgents

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

env = rlSimulinkEnv (...“rlCollaborativeTask”...“rlCollaborativeTask /代理”“B rlCollaborativeTask /代理”])
env = SimulinkEnvWithAgent with properties: Model: rlCollaborativeTask AgentBlock: [rlCollaborativeTask/Agent A rlCollaborativeTask/Agent B] ResetFcn: [] UseFastRestart: on

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

输入参数

全部折叠

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

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

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

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

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

MATLAB环境不支持多代理模拟。

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

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

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

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

有关更多信息,请参见getObservationInfo

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

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

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

有关更多信息,请参见getActionInfo

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

有关快速重新启动的更多信息,请参见快速重启如何改善迭代模拟(模型)

输出参数

全部折叠

强化学习环境,归为一SimulinkEnvWithAgent对象。

有关强化学习环境的更多信息,请参见创建Simulink强化学习环境

版本历史

介绍了R2019a

Baidu
map