主要内容

createIntegratedEnv

创建金宝app以参考模型为环境的强化学习模型

描述

env= createIntegratedEnv (refModelnewModel创建一个Simuli金宝appnk®所指定名称的模型newModel并返回一个强化学习环境对象,env,为这个模型。新模型包含一个RL代理块,并使用参考模型refModel作为强化学习环境,用于训练此块指定的代理。

例子

envagentBlockobsInfoactInfo= createIntegratedEnv(___对象的块路径RL代理块中的新模型和观测和动作数据规范为参考模型,obsInfo而且actInfo,分别。

例子

___= createIntegratedEnv(___名称,值使用使用一个或多个指定的端口、观察和操作信息创建模型和环境接口名称,值对参数。

例子

全部折叠

这个例子展示了如何使用createIntegratedEnv来创建一个从Simulink模型开始的环境对象,该模型实现了代理使用的系统。金宝app这样的系统通常被称为植物,开环系统,或参考系统,而包括代理在内的整个(集成的)系统通常被称为闭环系统。

对于本例,使用中描述的飞行机器人模型训练DDPG Agent控制飞行机器人作为参考(开环)系统。

打开飞行机器人模型。

open_system (“rlFlyingRobotEnv”

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

%初始模型状态变量Theta0 = 0;X0 = -15;Y0 = 0;%采样时间Ts = 0.4;

创建Simulink模金宝app型myIntegratedEnv包含以闭环连接到代理块的飞行机器人模型。该函数还返回强化学习环境对象env用于训练

env = createIntegratedEnv(“rlFlyingRobotEnv”“myIntegratedEnv”
env = 金宝appSimulinkEnvWithAgent with properties: Model: myIntegratedEnv AgentBlock: myIntegratedEnv/RL Agent ResetFcn: [] UseFastRestart: on

该函数还可以返回新集成模型中RL Agent块的块路径,以及参考模型的观察和操作规范。

[~,agentBlk,observationInfo,actionInfo] = createIntegratedEnv(...“rlFlyingRobotEnv”“myIntegratedEnv”
agentBlk = 'myIntegratedEnv/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函数。

这个例子展示了如何调用createIntegratedEnv使用名称-值对指定端口名称。

的第一个参数createIntegratedEnv是名字吗参考金宝app包含代理必须与之交互的系统的Simulink模型。这样的系统通常被称为植物,或开环系统。在这个例子中,参考系统是一个水箱的模型。

打开开环水箱模型。

open_system (“rlWatertankOpenloop”

设置用于生成观测的离散积分器块的采样时间,这样模拟就可以运行。

Ts = 1;

输入端口被调用u(而不是行动),并调用第一和第三输出端口y而且停止(而不是观察而且结束).使用名称-值对指定端口名称。

env = createIntegratedEnv(“rlWatertankOpenloop”“IntegratedWatertank”...“ActionPortName”“u”“ObservationPortName”“y”“IsDonePortName”“停止”
env = 金宝appSimulinkEnvWithAgent with properties: Model: IntegratedWatertank AgentBlock: IntegratedWatertank/RL Agent ResetFcn: [] UseFastRestart: on

新模式IntegratedWatertank包含与代理块在闭环中连接的参考模型。该函数还返回用于训练的强化学习环境对象。

输入参数

全部折叠

引用模型名,指定为字符串或字符向量。这是实现代理需要与之交互金宝app的系统的Simulink模型。这样的系统通常被称为植物开环系统或参考系统,而包括代理在内的整个(集成的)系统通常被称为闭环系统。新的Simuli金宝appnk模型使用该参考模型作为强化学习环境的动态模型。

新模型名,指定为字符串或字符向量。createIntegratedEnv创建具有此名称的Si金宝appmulink模型,但不保存该模型。

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:“IsDonePortName”、“stopSim”设置stopSim端口的参考模型作为源结束信号。

参考模型观测输出端口名称,指定为由逗号分隔的对组成“ObservationPortName”和一个字符串或字符向量。指定ObservationPortName当参考模型的观测输出端口名称不是时“观察”

引用模型动作输入端口名称,指定为由逗号分隔的对组成“ActionPortName”和一个字符串或字符向量。指定ActionPortName当引用模型的动作输入端口的名称不是时“行动”

参考模型奖励输出端口名称,指定为由逗号分隔的对组成“RewardPortName”和一个字符串或字符向量。指定RewardPortName当参考模型的奖励输出端口名称不是时“奖励”

引用模型完成标志输出端口名称,指定为由逗号分隔的对组成“IsDonePortName”和一个字符串或字符向量。指定IsDonePortName当引用模型的done标志输出端口的名称不是时“结束”

要为其创建规范的观察总线叶元素的名称,指定为字符串数组。要为Simulink总线对象中的元素子集创建观察规范,请指定金宝appBusElementNames.如果您没有指定BusElementNames,为总线中的每个叶元素创建一个数据规范。

ObservationBusElementNames仅适用于观测输出端口为总线信号时。

例子:“ObservationBusElementNames”,(“罪”“因为”)创建带有名称的观察总线元素的规范“罪”而且“因为”

离散观测规范元素的有限值,指定为逗号分隔的对,由“ObservationDiscreteElements”和一个单元格的名值对数组。每个名称-值对由一个元素名称和一个离散值数组组成。

如果参考模型的观测输出端口为:

指定的离散值必须可转换为指定观测信号的数据类型。

如果未为观察规范元素指定离散值,则该元素是连续的。

例子:'ObservationDiscretElements',{'observation',[-1 0 1]}指定具有默认端口名称的非总线观察信号的离散值观察

例子:'ObservationDiscretElements',{'gear',[-1 0 1 2],'direction',[1 2 3 4]}属性的离散值“装备”而且“方向”总线动作信号的叶元素。

离散动作规范元素的有限值,指定为逗号分隔的对,由“ActionDiscreteElements”和一个单元格的名值对数组。每个名称-值对由一个元素名称和一个离散值数组组成。

如果参考模型的动作输入端口为:

  • 总线信号,指定总线的叶元素的名称

  • 非总线信号,指定动作端口的名称,如所指定ActionPortName

指定的离散值必须可转换为指定动作信号的数据类型。

如果未为操作规范元素指定离散值,则该元素是连续的。

例子:'ActionDiscretElements',{'action',[-1 0 1]}指定具有默认端口名称的非总线动作信号的离散值“行动”

例子:'ActionDiscretElements',{'force',[-10 0 10],'torque',[-5 0 5]}属性的离散值“力”而且“扭矩”总线动作信号的叶元素。

输出参数

全部折叠

强化学习环境接口,返回为金宝appSimulinkEnvWithAgent对象。

新模型中代理块的块路径,作为字符向量返回。要在新的Simulink模型中训练代理,必须创建一个代理并金宝app在RL代理Block表示为agentBlock

有关创建代理的详细信息,请参见强化学习代理

观测数据规格,以以下方式返回:

  • rlNumericSpec对象用于单个连续观测规范

  • rlFiniteSetSpec对象获取单个离散观测规范

  • 用于多个规范的数据规范对象数组

操作数据规范,作为以下之一返回:

  • rlNumericSpec对象用于单个连续操作规范

  • rlFiniteSetSpec对象用于单个离散操作规范

  • 用于多个操作规范的数据规范对象数组

版本历史

在R2019a中引入