创建simulink的集成环境模型
createIntegratedEnv
语法
描述
实例
Create Environment from a Simulink Model
Create an Integrated Environment with Specified Port Names
输入参数
Name-Value Pair Arguments
输出参数
如果参考模型具有适当的操作输入端口,观察输出端口和标量奖励输出端口,则可以自动创建包含该参考模型和RL Agent块的Simulink模型。此函数返回模型的环境对象,操作规范和观察规范。

createIntegratedEnv
使用参考模型作为环境,创建用于强化学习的Simulink模型。

语法
env = createIntegratedEnv(refModel,newModel)
[env,agentBlock,obsInfo,actInfo] = createIntegratedEnv(___)
[___] = createIntegratedEnv(___,Name,Value)

描述
env = createIntegratedEnv(refModel,newModel)使用newModel指定的名称创建Simulink®模型,并为此模型返回一个强化学习环境对象env。 新模型包含一个RL Agent块,并将参考模型refModel用作强化学习环境,用于训练此块指定的智能体。

[env,agentBlock,obsInfo,actInfo] = createIntegratedEnv(___)返回新模型中RL Agent块的块路径以及参考模型obsInfo和actInfo的观察和动作数据规范。

[___] = createIntegratedEnv(___,Name,Value)使用使用一个或多个Name,Value对参数指定的端口,观察值和操作信息来创建模型和环境接口。

实例
Create Environment from a Simulink Model
本示例说明如何使用createIntegratedEnv从实现代理程序需要与之交互的系统的Simulink模型开始创建环境对象。 这样的系统通常被称为工厂,开环系统或参考系统,而包括智能体的整个(集成)系统通常被称为闭环系统。

打开模型。

open_system('rlFlyingRobotEnv');

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

% initial model state variables
theta0 = 0;
x0 = -15;
y0 = 0;

% sample time
Ts = 0.4;

创建Simulink模型IntegratedEnv,其中包含以闭环方式连接到智能体块的飞行机器人模型。 该函数还返回强化学习环境对象env,用于训练。

env=createIntegratedEnv('rlFlyingRobotEnv','IntegratedEnv')

在这里插入图片描述

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

[~,agentBlk,observationInfo,actionInfo]=createIntegratedEnv('rlFlyingRobotEnv','IntegratedEnv')

在这里插入图片描述

如果您需要修改observationInfo和actionInfo中的描述,限制或名称,并随后使用函数rlSimulinkEnv从集成模型IntegratedEnv创建环境,则此功能很有用。

Create an Integrated Environment with Specified Port Names
本示例说明如何使用“名称和值”对调用函数createIntegratedEnv来创建集成(闭环)Simulink环境和相应的环境对象。

createIntegratedEnv函数的第一个参数是参考Simulink模型的名称,该模型包含与智能体进行交互的系统。 这种系统通常称为工厂或开环系统。 对于此示例,参考系统是水箱的模型。

打开开环水箱模型

open_system('rlWatertankOpenloop.slx');

在这里插入图片描述

出现上述情况,点击箭头所指方向,打开实例模型。

设置用于生成观测值的离散积分器块的采样时间,以便可以运行仿真。

Ts=1;

由于输入端口称为u(而不是动作),而第一个和第三个输出端口称为y和stop(而不是观察值和isdone),因此在调用函数createIntegratedEnv时,请使用“名称和值”对指定正确的名称。

env=createIntegratedEnv('rlWatertankOpenloop','IntegratedWatertank','ActionPortName','u','ObservationPortName','y','IsDonePortName','stop')

在这里插入图片描述

这将创建新模型IntegratedWatertank,其中包含以闭环方式连接到智能体块的参考模型。 该函数还返回强化学习环境对象env,用于训练。

输入参数
refModel — Reference model name
string | character vector

参考模型名称,指定为字符串或字符向量。 这是Simulink模型,用于实现与智能体进行交互的系统。 这样的系统通常被称为工厂,开环系统或参考系统,而包括智能体的整个(集成)系统通常被称为闭环系统。 新的Simulink模型使用此参考模型作为强化学习环境的动态模型。

newModel — New model name
string | character vector

新模型名称,指定为字符串或字符向量。 createIntegratedEnv使用此名称创建Simulink模型,但不保存模型。

Name-Value Pair Arguments
指定可选的逗号分隔的名称,值参数对。 Name是参数名称,Value是相应的值。 名称必须出现在引号中。 您可以按任意顺序指定多个名称和值对参数,例如Name1,Value1,…,NameN,ValueN。

示例:“ IsDonePortName”,“ stopSim”将参考模型的stopSim端口设置为isdone信号的源。

‘ObservationPortName’ — Reference model observation output port name
“observation” (default) | string | character vector

ObservationPortName”和字符串或字符向量组成。 当参考模型的观察输出端口的名称不是“ observation”时,请指定observationPortName。

‘ActionPortName’ — Reference model action input port name
“action” (default) | string | character vector

ActionPortName”和字符串或字符向量组成。 当参考模型的动作输入端口的名称不是“ action”时,请指定ActionPortName。

‘IsDonePortName’ — Reference model done flag output port name
“isdone” (default) | string | character vector

参考模型完成标志输出端口名称,指定为以逗号分隔的一对,由“ IsDonePortName”和字符串或字符向量组成。 当参考模型的完成标志输出端口的名称不是“ isdone”时,请指定IsDonePortName。

‘ObservationBusElementNames’ — Names of observation bus leaf elements
string array

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

只有当观察输出端口是总线信号时,observationBusElementNames才适用。

示例:‘ObservationBusElementNames’,[“ sin”“ cos”]为名称为“ sin”和“ cos”的观察总线元素创建规范。

‘ObservationDiscreteElements’ — Finite values for observation specifications
cell array of name-value pairs
离散观测规范元素的有限值,指定为由“ ObservationDiscreteElements”和名称-值对的单元格数组组成的逗号分隔对。 每个名称/值对均由元素名称和离散值数组组成。

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

总线信号,指定由ObservationBusElementNames指定的总线叶元素之一的名称。

非总线信号,指定观测端口的名称,如 ObservationPortName。

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

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

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

示例:‘ObservationDiscretElements’,{‘齿轮’,[-1 0 1 2],‘方向’,[1 2 3 4]}指定总线动作信号的“齿轮”和“方向”叶元素的离散值。

输出参数
env — Reinforcement learning environment
SimulinkEnvWithAgent object

强化学习环境界面,作为SimulinkEnvWithAgent对象返回。

agentBlock — Block path to the agent block
character vector

新模型中智能体块的块路径,作为字符向量返回。 要在新的Simulink模型中训练代理,您必须创建一个智能体,并在agentBlock指示的RL代理块中指定智能体名称。

有关创建代理的更多信息,请参见Reinforcement Learning Agents。

obsInfo — Observation data specifications
rlNumericSpec object | rlFiniteSetSpec object | array of data specification objects

观测数据规范,以下列之一返回:

单个连续观察规范的rlNumericSpec对象

单个离散观测规范的rlFiniteSetSpec对象

多个规格的数据规格对象数组

actInfo — Action data specifications
rlNumericSpec object | rlFiniteSetSpec object | array of data specification objects

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

单个连续动作规范的rlNumericSpec对象

单个离散操作规范的rlFiniteSetSpec对象

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