金宝appSimulinkEnvWithAgent
强化学习环境与动态模型的实现金宝app
描述
创建
要创建金宝appSimulinkEnvWithAgent
对象,请使用以下函数之一。
rl金宝appSimulinkEnv
-使用至少一个Simulink模型创建一个环境金宝appRL代理块。createIntegratedEnv
-使用参考模型作为强化学习环境。rlPredefinedEnv
—创建预定义的强化学习环境。
属性
模型
- - - - - -金宝appSimulink模型名称
字符串|特征向量
金宝appSimulink模型名称,指定为字符串或字符向量。指定的模型必须包含一个或多个RL代理块。
ResetFcn
- - - - - -为环境重置行为
函数处理|匿名函数句柄
重置环境的行为,指定为函数句柄或匿名函数句柄。函数必须有一个single金宝app仿真软件。SimulationInput
输入参数和单个参数金宝app仿真软件。SimulationInput
输出参数。
reset功能用于设置Simulink环境的初始状态。金宝app例如,您可以创建一个重置函数,随机化某些块状态,以便每个训练集从不同的初始条件开始。
如果你有一个现有的复位功能myResetFunction
在MATLAB中®路径,设置ResetFcn
使用函数的句柄。
env。myResetFunction(in);
如果您的重置行为很简单,您可以使用匿名函数句柄实现它。例如,下面的代码设置变量x0
到一个随机值。
env。ResetFcn = @(in) setVariable(in,“x0”rand ());
UseFastRestart
- - - - - -选项切换快速重启
“上”
(默认)|“关闭”
选项,用于切换快速重启,指定为任意一个“上”
或“关闭”
.快速重新启动允许您执行迭代模拟,而无需每次编译模型或终止模拟。
有关快速重新启动的详细信息,请参见快速重启如何改进迭代模拟(金宝app模型).
对象的功能
火车 |
在指定的环境中训练强化学习代理 |
sim卡 |
在指定的环境中模拟训练好的强化学习代理 |
getObservationInfo |
从强化学习环境或agent获取观测数据规范 |
getActionInfo |
从强化学习环境或agent中获取动作数据规范 |
例子
在工作空间中使金宝app用代理创建Simulink环境
控件中使用训练过的金宝app代理和相应的Simulink模型创建Simulink环境创建Simul金宝appink环境和训练代理的例子。
在MATLAB®工作区中加载代理。
负载rlWaterTankDDPGAgent
创建一个环境rlwatertank
模型,它包含一个RL代理块。由于块使用的代理已经在工作空间中,您不需要传递观察和操作规范来创建环境。
环境= rlSi金宝appmulinkEnv(“rlwatertank”,“rlwatertank / RL代理”)
env = 金宝appSimulinkEnvWithAgent with properties: Model: rlwatertank AgentBlock: rlwatertank/RL Agent ResetFcn: [] UseFastRestart: on
通过执行两次简短的模拟来验证环境。
validateEnvironment (env)
您现在可以在环境中使用火车
而且sim卡
,分别。
为Simulink模型创建强化学习环境金宝app
对于本例,考虑rlSimplePendulumModel
金宝app仿真软件模型。模型是一个简单的无摩擦摆,最初悬挂在一个向下的位置。
打开模型。
mdl =“rlSimplePendulumModel”;open_system (mdl)
创建rlNumericSpec
而且rlFiniteSetSpec
对象分别用于观察和操作信息。
obsInfo = rlNumericSpec([3 1])% 3个观测值的向量:sin() cos() d()/dt
obsInfo = rlNumericSpec with properties: LowerLimit: -Inf UpperLimit: Inf名称:[0x0 string]描述:[0x0 string]维度:[3 1]数据类型:"double"
rlFiniteSetSpec([-2 0 2])% 3可能的扭矩值:- 2nm, 0nm和2nm
actInfo = rlFiniteSetSpec与属性:元素:[3x1 double]名称:[0x0字符串]描述:[0x0字符串]尺寸:[1 1]数据类型:"double"
属性的属性值可以使用点表示法rlNumericSpec
而且rlFiniteSetSpec
对象。
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
您还可以使用点表示法包含一个重置函数。对于本例,随机初始化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
为多个代理创建金宝appSimulink环境
根据示例为Simulink模型创建一个环境金宝app训练多智能体执行协同任务.
在MATLAB工作区中加载代理。
负载rlCollaborativeTaskAgents
创建一个环境rlCollaborativeTask
模型,它有两个代理块。由于两个块使用的代理(agentA
而且agentB
)已经在工作空间中,您不需要通过它们的观察和操作规范来创建环境。
环境= rlSi金宝appmulinkEnv(“rlCollaborativeTask”, (“rlCollaborativeTask /代理”,“B rlCollaborativeTask /代理”])
env = 金宝appSimulinkEnvWithAgent with properties: Model: rlCollaborativeTask AgentBlock: [rlCollaborativeTask/Agent A rlCollaborativeTask/Agent B] ResetFcn: [] UseFastRestart: on
您现在可以在环境中使用sim卡
或火车
,分别。
创建连续单摆模型环境
使用预定义的“SimplePendulumModel-Continuous”
关键词创建连续简单摆模型强化学习环境。
环境= rlPredefinedEnv(“SimplePendulumModel-Continuous”)
env = 金宝appSimulinkEnvWithAgent with properties: Model: rlSimplePendulumModel AgentBlock: rlSimplePendulumModel/RL Agent ResetFcn: [] UseFastRestart: on
从Simulink模型创建环境金宝app
这个例子展示了如何使用createIntegratedEnv
来创建一个从Simulink模型开始的环境对象,该模型实现了代理使用的系统。金宝app这样的系统通常被称为植物,开环系统,或参考系统,而包括代理在内的整个(集成的)系统通常被称为闭环系统。
对于本例,使用中描述的飞行机器人模型训练DDPG Agent控制飞行机器人作为参考(开环)系统。
打开飞行机器人模型。
open_system (“rlFlyingRobotEnv”)
初始化状态变量和采样时间。
%初始模型状态变量Theta0 = 0;X0 = -15;Y0 = 0;%采样时间Ts = 0.4;
创建Simulink模金宝app型IntegratedEnv
包含以闭环连接到代理块的飞行机器人模型。该函数还返回强化学习环境对象env
用于训练
env = createIntegratedEnv(“rlFlyingRobotEnv”,“IntegratedEnv”)
env = 金宝appSimulinkEnvWithAgent with properties: Model: IntegratedEnv AgentBlock: IntegratedEnv/RL Agent ResetFcn: [] UseFastRestart: on
该函数还可以返回新集成模型中RL Agent块的块路径,以及参考模型的观察和操作规范。
[~,agentBlk,observationInfo,actionInfo] = createIntegratedEnv(“rlFlyingRobotEnv”,“IntegratedEnv”)
agentBlk = 'IntegratedEnv/RL Agent'
observationInfo = rlNumericSpec with properties: LowerLimit: -Inf UpperLimit: Inf名称:"observation"描述:[0x0 string]维度:[7 1]数据类型:"double"
actionInfo = rlNumericSpec with properties: LowerLimit: -Inf UpperLimit: Inf名称:"action"描述:[0x0 string]维度:[2 1]数据类型:"double"
在需要修改描述、限制或名称的情况下,返回块路径和规范非常有用observationInfo
而且actionInfo
.在修改规范之后,您就可以从集成模型创建环境了IntegratedEnv
使用rl金宝appSimulinkEnv
函数。
版本历史
Matlabコマンド
次のmatlabコマンドに対応するリンクがクリックされました。
コマンドをmatlabコマンドウィンドウに入力して実行してください。Webブラウザ,はMATLABコマンドをサポ,トしていません。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。