主要内容

万博1manbetxSimulinkenvwithagent.

具有动态模型的强化学习环境万博1manbetx

描述

万博1manbetxSimulinkenvwithagent.对象表示使用在Simulink中实现的动态模型的增强学习环境万博1manbetx®.环境对象充当界面,使您呼叫时sim卡或者火车,这些函数依次调用Simulink模型为代理生成经验。万博1manbetx

创建

创建一个万博1manbetxSimulinkenvwithagent.对象,使用以下功能之一。

属性

展开全部

万博1manbetxSimulink模型名称,指定为字符串或字符向量。指定的模型必须包含一个或多个RL代理人块。

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

如果模型包含一个RL代理人训练用的积木AgentBlock是一个包含块路径的字符串。

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

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

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

重置环境的行为,指定为函数句柄或匿名功能句柄。该功能必须有一个单一的万博1manbetx仿真软件。SimulationInput输入参数和单个万博1manbetx仿真软件。SimulationInput输出参数。

复位函数设置Simulink环境的初始状态。万博1manbetx例如,您可以创建一个复位函数,该函数随机化某些块状态,使得每个训练集中从不同的初始条件开始。

如果您有现有的重置函数myResetfunction.在matlab上®路径,套resetfcn.使用函数句柄。

env.resetfcn = @(in)myresetfunction(in);

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

env。ResetFcn = @(in) setVariable(in,'x0',兰德());

sim卡函数调用重置函数在每个模拟开始时重置环境,以及火车函数在每个培训集的开始时调用它。

切换快速重启的选项,指定为其中之一“上”或者“离开”.快速重启允许您在不编译模型或每次终止模拟的情况下执行迭代模拟。

有关快速重启的更多信息,请参阅重启速度如何改善迭代模拟(万博1manbetx模型)

对象的功能

火车 在指定的环境中训练强化学习代理
sim卡 在指定环境中模拟培训的钢筋学习代理
getobservationInfo. 从强化学习环境或代理获得观察数据规范
getActionInfo. 从强化学习环境或代理获取行动数据规范

例子

全部收缩

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

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

负载rlWaterTankDDPGAgent

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

ent = rl万博1manbetxsimulinkenv(“rlwatertank”'rlwatertank / rl代理'
Env = 万博1manbetxSimulinkenvwithAgent具有属性:型号:RLWaterTank AppertBlock:RLWaterTank / RL代理ResetFCN:[] UseFastrest:On

通过对两个采样时间执行短模拟来验证环境。

验证环境(ENV)

您现在可以通过使用来训练和模拟环境中的代理火车sim卡,分别。

对于本例,考虑Rlsimplepentulummodel.万博1manbetxSimulink模型。该模型是一个简单的无摩擦摆,最初悬挂在向下位置。

打开模型。

mdl ='rlsimplepeneylummodel';Open_System(MDL)

创造rlnumericspec.rlFiniteSetSpec分别用于观察和动作信息的对象。

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"

属性的属性值可以使用点表示法rlnumericspec.rlFiniteSetSpec对象。

obsInfo。Name =“观察”;Actinfo.name =.“扭矩”

分配agent块路径信息,使用前面步骤提取的信息为Simulink模型创建强化学习环境。万博1manbetx

AppletBlk = [MDL' / RL代理'];Env = Rl万博1manbetxsimulinkenv(MDL,AppertBlk,Obsinfo,Actinfo)
Env = 万博1manbetxSimulinkenvwithAgent with属性:型号:rlsimplepentulummodel agentblock:rlsimpleveptulummodel / rl代理resetfcn:[] UseFastrest:ON

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

env。ResetFcn = @(in) setVariable(in,'theta0'randn,'工作区',mdl)
env = 万博1manbetxsimulinkenvwithangent with属性:型号:rlsimplepentulummodel agentblock:rlsimplevepulummodel / rl代理resetfcn:@(in)setVariable(In,'theta0',Randn,'工作区',mdl)usefastrestart:上

从示例创建用于Simulink模型的环境万博1manbetx培训多个代理商执行协作任务

加载Matlab工作区中的代理。

负载rlCollaborativeTaskAgents

创建一个环境rlCollaborativeTask模型,有两个代理块。由于两个块使用的代理(agentAagentB)已经在工作区中,您无需通过他们的观察和操作规范来创建环境。

ent = rl万博1manbetxsimulinkenv(“rlCollaborativeTask”,[“rlcollaborativetask /代理A”“rlcollaborativetask /代理b”])
env = 万博1manbetxsimulinkenvwithagent与属性:型号:rlcollaborativetask agentblock:[rlcollaborativetask /代理a rlcollaborativeTask /代理b] resetfcn:[] UseFastrestart:ON

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

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

env = rlPredefinedEnv (“SimplePendulumModel-Continuous”
Env = 万博1manbetxSimulinkenvwithAgent with属性:型号:rlsimplepentulummodel agentblock:rlsimpleveptulummodel / rl代理resetfcn:[] UseFastrest:ON

此示例显示了如何使用createIntegratedEnv从实现代理所使用的系统的Simulink模型开始创建环境对象。万博1manbetx这种系统通常被称为植物,开环系统,或参考系统,而包括代理的整体(集成)系统通常被称为闭环系统。

对于此示例,请使用中描述的飞行机器人模型火车DDPG代理控制飞行机器人作为参考(开环)系统。

打开飞行机器人模型。

Open_System(“rlFlyingRobotEnv”

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

%初始模型状态变量theta0 = 0;x0 = -15;y0 = 0;%样品时间ts = 0.4;

创建Simulink模万博1manbetx型IntegrateNv.包含在闭环中连接到代理块的飞行机器人模型。该函数还返回钢筋学习环境对象env用于培训。

env = create integrateenv(“rlFlyingRobotEnv”“IntegratedEnv”
env = 万博1manbetxSimulinkEnvWithAgent with properties: Model: IntegratedEnv AgentBlock: IntegratedEnv/RL Agent ResetFcn: [] UseFastRestart: on

该函数还可以在新的集成模型中将块路径返回到RL代理块,以及参考模型的观察和动作规范。

[〜,AgentBlk,观察info,ActionInfo] = createIntegrateenv(“rlFlyingRobotEnv”“IntegratedEnv”
agentBlk = 'IntegratedEnv/RL代理'
observationInfo = rlNumericSpec with properties: LowerLimit: -Inf UpperLimit: Inf Name: "observation" Description: [0x0 string] Dimension: [7 1] DataType: "double"
actionInfo = rlNumericSpec with properties: LowerLimit: -Inf UpperLimit: Inf Name: "action" Description: [0x0 string] Dimension: [2 1] DataType: "double"

返回块路径和规范在需要修改描述、限制或名称的情况下非常有用observationInfoactionInfo.修改规范之后,您可以从集成的模型创建一个环境IntegrateNv.使用rl万博1manbetxSimulinkEnv函数。

介绍了R2019a