createIntegratedEnv
创建动态仿真模块以参考模型为环境的强化学习模型
语法
描述
[
对象的块路径RL代理块中的新模型和观测动作数据规格为参考模型,env
,agentBlock
,obsInfo
,actInfo
) = createIntegratedEnv (___)obsInfo
而且actInfo
,分别。
例子
从Simulink模型创建环境
这个例子展示了如何使用createIntegratedEnv
从一个Simulink模型开始创建一个环境对象,该模型实现了代理所使用的系统。这样的系统通常被称为植物,开环系统,或参考系统,而包括代理在内的整个(综合)系统常被称为闭环系统。
对于本例,使用中描述的飞行机器人模型训练DDPG代理控制飞行机器人作为参考(开环)系统。
打开飞行机器人模型。
open_system (“rlFlyingRobotEnv”)
初始化状态变量和采样时间。
%初始模型状态变量theta0 = 0;x0 = -15;y0 = 0;%样品时间t = 0.4;
创建Simulink模型myIntegratedEnv
包含以闭环连接到代理块的飞行机器人模型。该函数还返回强化学习环境对象env
用于训练
env = createIntegratedEnv (“rlFlyingRobotEnv”,“myIntegratedEnv”)
模型: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 Name: " observe " 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"
中需要修改描述、限制或名称的情况下,返回块路径和规范非常有用observationInfo
而且actionInfo
.在修改规范之后,您就可以从集成模型创建一个环境了IntegratedEnv
使用rlSimulinkEnv
函数。
创建具有指定端口名称的集成环境
这个例子展示了如何调用createIntegratedEnv
使用名称-值对指定端口名称。
第一个论证createIntegratedEnv
名字是参考包含代理必须与之交互的系统的Simulink模型。这样的系统通常被称为植物,或开环系统。对于本例,参考系统是一个水箱的模型。
打开开环水箱模型。
open_system (“rlWatertankOpenloop”)
设置用于生成观测的离散积分器块的采样时间,这样模拟就可以运行。
Ts = 1;
调用输入端口u
(而不是行动
),并调用第一和第三个输出端口y
而且停止
(而不是观察
而且结束
).使用名称-值对指定端口名称。
env = createIntegratedEnv (“rlWatertankOpenloop”,“IntegratedWatertank”,...“ActionPortName”,“u”,“ObservationPortName”,“y”,“IsDonePortName”,“停止”)
env = SimulinkEnvWithAgent with properties: Model: IntegratedWatertank AgentBlock: IntegratedWatertank/RL Agent ResetFcn: [] UseFastRestart: on
新模型IntegratedWatertank
包含与代理块在闭环中连接的参考模型。该函数还返回用于训练的强化学习环境对象。
输入参数
refModel
- - - - - -参考模型的名字
字符串|特征向量
引用模型名,指定为字符串或字符向量。这是实现代理需要与之交互的系统的Simulink模型。这样的系统通常被称为植物,开环系统或参考系统,而包括代理在内的整个(综合)系统常被称为闭环系统。新的Simulink模型使用该参考模型作为强化学习环境的动态模型。
newModel
- - - - - -新型号名称
字符串|特征向量
新的模型名称,指定为字符串或字符向量。createIntegratedEnv
使用此名称创建一个Simulink模型,但不保存该模型。
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:“IsDonePortName”、“stopSim”
设置stopSim
端口的参考模型作为源结束
信号。
ObservationPortName
- - - - - -参考模型观测输出端口名称
“观察”
(默认)|字符串|特征向量
参考模型观测输出端口名称,指定为逗号分隔的对组成“ObservationPortName”
和字符串或字符向量。指定ObservationPortName
当参考型号的观察输出端口的名称不是“观察”
.
ActionPortName
- - - - - -引用模型操作输入端口名称
“行动”
(默认)|字符串|特征向量
引用模型操作输入端口名称,指定为逗号分隔的对,由“ActionPortName”
和字符串或字符向量。指定ActionPortName
当参考模型的动作输入端口的名称不是“行动”
.
RewardPortName
- - - - - -参考模型奖励输出端口名称
“奖励”
(默认)|字符串|特征向量
参考模型奖励输出端口名称,指定为逗号分隔的对,由“RewardPortName”
和字符串或字符向量。指定RewardPortName
当参考模型的奖励输出端口的名称不是“奖励”
.
IsDonePortName
- - - - - -参考模型完成标志输出端口名称
“结束”
(默认)|字符串|特征向量
参考模型完成标志输出端口名称,指定为逗号分隔的对组成“IsDonePortName”
和字符串或字符向量。指定IsDonePortName
当引用模型的done标志输出端口的名称不是“结束”
.
ObservationBusElementNames
- - - - - -观察总线叶元素的名称
字符串数组
要为其创建规范的观察总线叶元素的名称,指定为字符串数组。要为Simulink总线对象中元素的子集创建观察规范,请指定BusElementNames
.如果不指定BusElementNames
,为总线中的每个叶元素创建数据规范。
ObservationBusElementNames
仅适用于观测输出端口为总线信号时。
例子:“ObservationBusElementNames”,(“罪”“因为”)
为具有名称的观察总线元素创建规范“罪”
而且“因为”
.
ObservationDiscreteElements
- - - - - -观测规范的有限值
名称-值对的单元格数组
离散观测规范元素的有限值,指定为逗号分隔的对,由“ObservationDiscreteElements”
和名称-值对的单元格数组。每个名称-值对由一个元素名和一个离散值数组组成。
参考型号的观测输出端口为:
中指定的总线的一个叶元素的名称
ObservationBusElementNames
非总线信号,指定观察端口的名称,由
ObservationPortName
指定的离散值必须可转换为指定的观测信号的数据类型。
如果没有为观察规范元素指定离散值,则该元素是连续的。
例子:ObservationDiscretElements,{“观察”,[1 0 1]}
指定具有默认端口名的非总线观察信号的离散值观察
.
例子:' observationdiscrete telements ',{'gear',[-1 0 1 2],'direction',[1 2 3 4]}
对象的离散值“装备”
而且“方向”
总线动作信号的叶元素。
ActionDiscreteElements
- - - - - -动作规格的有限值
名称-值对的单元格数组
离散动作规范元素的有限值,指定为逗号分隔的对,由“ActionDiscreteElements”
和名称-值对的单元格数组。每个名称-值对由一个元素名和一个离散值数组组成。
参考模型的动作输入端口为:
总线信号,指定总线的叶元素的名称
非总线信号,指定动作端口的名称
ActionPortName
指定的离散值必须可转换为指定动作信号的数据类型。
如果不为操作规范元素指定离散值,则该元素是连续的。
例子:ActionDiscretElements,{“行动”,[1 0 1]}
指定具有默认端口名的非总线动作信号的离散值“行动”
.
例子:' actiondiscrete telements ',{'force',[-10 0 10],'torque',[-5 0 5]}
对象的离散值“力”
而且“扭矩”
总线动作信号的叶元素。
输出参数
env
-强化学习环境
SimulinkEnvWithAgent
对象
强化学习环境界面,返回为SimulinkEnvWithAgent
对象。
obsInfo
-观测数据规范
rlNumericSpec
对象|rlFiniteSetSpec
对象|数据规范对象的数组
观测数据规格,作为以下之一返回:
rlNumericSpec
对象用于单个连续观测规范rlFiniteSetSpec
对象用于单个离散观测规范多个规范的数据规范对象数组
actInfo
-行动数据规范
rlNumericSpec
对象|rlFiniteSetSpec
对象|数据规范对象的数组
操作数据规范,作为以下之一返回:
rlNumericSpec
对象用于单个连续操作规范rlFiniteSetSpec
对象获取单个离散操作规范多个操作规范的数据规范对象数组
版本历史
介绍了R2019a
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。