赞
踩
rlSimulinkEnv函数从Simulink®模型中创建强化学习环境对象。环境对象起接口作用,当调用sim或train时,这些函数反过来调用Simulink模型,为智能体生成经验。
在MATLAB®工作空间中加载agent。
load rlWaterTankDDPGAgent
为rlwatertank模型创建环境,其中包含一个RL Agent模块。由于区块所使用的agent已经在工作空间中,因此不需要通过观测和动作规范来创建环境。
env = rlSimulinkEnv('rlwatertank','rlwatertank/RL Agent')
env =
SimulinkEnvWithAgent with properties:
Model : rlwatertank
AgentBlock : rlwatertank/RL Agent
ResetFcn : []
UseFastRestart : on
通过进行两个样本时间的短暂模拟来验证环境。
validateEnvironment(env)
现在可以分别使用train和sim对环境中的Agent进行训练和仿真。
打开模型:
mdl = 'rlSimplePendulumModel';
open_system(mdl)
分别创建rlNumericSpec和rlFiniteSetSpec对象用于观察和动作信息。
obsInfo = rlNumericSpec([3 1]) % vector of 3 observations: sin(theta), cos(theta), d(theta)/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 possible values for torque: -2 Nm, 0 Nm and 2 Nm
actInfo =
rlFiniteSetSpec with properties:
Elements: [3x1 double]
Name: [0x0 string]
Description: [0x0 string]
Dimension: [1 1]
DataType: "double"
对于rlNumericSpec和rlFiniteSetSpec对象,可以使用点数表示法赋值属性值。
obsInfo.Name = 'observations';
actInfo.Name = 'torque';
分配智能体分块路径信息,利用前面步骤提取的信息为Simulink模型创建强化学习环境。
agentBlk = [mdl '/RL Agent'];
env = rlSimulinkEnv(mdl,agentBlk,obsInfo,actInfo)
env =
SimulinkEnvWithAgent with properties:
Model : rlSimplePendulumModel
AgentBlock : rlSimplePendulumModel/RL Agent
ResetFcn : []
UseFastRestart : on
还可以包括使用点符号的reset功能。对于该实例,在模型工作空间中随机初始化theta0。
env.ResetFcn = @(in) setVariable(in,'theta0',randn,'Workspace',mdl)
env =
SimulinkEnvWithAgent with properties:
Model : rlSimplePendulumModel
AgentBlock : rlSimplePendulumModel/RL Agent
ResetFcn : @(in)setVariable(in,'theta0',randn,'Workspace',mdl)
UseFastRestart : on
在MATLAB工作空间中加载智能体。
load rlCollaborativeTaskAgents
为rlCollaborativeTask模型创建一个环境,该环境有两个Agent块。由于两个区块( agentA和agentB)所使用的智能体已经在工作空间中,因此不需要通过它们的观察和动作规范来创建环境。
env = rlSimulinkEnv('rlCollaborativeTask',["rlCollaborativeTask/Agent A","rlCollaborativeTask/Agent B"])
env =
SimulinkEnvWithAgent with properties:
Model : rlCollaborativeTask
AgentBlock : [
rlCollaborativeTask/Agent A
rlCollaborativeTask/Agent B
]
ResetFcn : []
UseFastRestart : on
该实例的原始模型为水箱模型:
对原模型进行以下修改:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。