主要内容

水箱加固学习环境模型

此示例显示了如何创建水箱加固学习Simulink®环境,该环境包含RL代理块,代替水箱中的水位的控制器。金宝app要模拟此环境,您必须创建代理并在RL代理程序块中指定该代理。有关使用此环境培训代理的示例,请参阅创建Simul金宝appink环境和培训代理

mdl ='rlwatertank';Open_System(MDL)

此模型已包含RL代理块,其连接到以下信号:

  • 标量动作输出信号

  • 观察输入信号矢量

  • 标量奖励输入信号

  • 用于停止模拟的逻辑输入信号

行动和观察

加强学习环境从代理接收动作信号,并响应于这些动作生成观察信号。要创建和培训代理,您必须创建动作和观察规范对象。

该环境的动作信号是发送到工厂的流量控制信号。要为此连续动作信号创建规范对象,请使用rlnumericspec.功能。

ActionInfo = rlnumericspec([1 1]);ActionInfo.name =.'流';

如果动作信号采用离散可能的值集中的一个,则使用该规范创建规范rlfinitesetspec.功能。

对于这种环境,存在发送给代理的三个观察信号,指定为矢量信号。观察向量是 [ E. DT. E. H ] T. , 在哪里:

  • H 是水箱里的水的高度。

  • E. = R. - H , 在哪里 R. 是水高的参考值。

计算生成观察子系统中的观察信号。

Open_System([MDL'/生成观察'])

创建一个三元素矢量的观察规范。为水高指定0的下限,使其他观察信号无限制地留下。

观察info = rlnumericspec([3 1],......'lowerimit',[ -  inf-inf 0]'',......'上限',[inf inf inf]');观察info.name ='观察';观察invfo.description =.'集成错误,错误和测量高度';

如果操作或观察由总线信号表示,则使用该操作创建规格bus2rlspec.功能。

奖励信号

构建标量奖励信号。在此示例中,指定以下奖励。

报酬 = 10. | E. | < 0. 1 - 1 | E. | 0. 1 - 100. H ≤. 0. | | H 20.

错误后,奖励是积极的0.1否则负面。此外,水的高度在外部时存在巨大的奖励罚款0.20.范围。

在计算奖励子系统中构建此奖励。

Open_System([MDL'/计算奖励'])

停止信号

要终止培训剧集和仿真,请指定逻辑信号已经完成了块的输入端口。对于此示例,终止剧集if H ≤. 0. 或者 H 20.

计算停止仿真子系统中的此信号。

Open_System([MDL'/停止模拟'])

创建环境对象

为Simulink模型创建一个环境对象。金宝app

ent = rl金宝appsimulinkenv(mdl,[mdl'/ rl代理'],观察,ActionInfo);

重置功能

您还可以创建一个自定义重置函数,该函数随机化参数,变量或模型的状态。在该示例中,复位功能随机化参考信号和初始水高,并设置相应的块参数。

env.resetfcn = @(in)localresetfcn(in);

本地功能

功能在= localresetfcn(in)%随机化参考信号blk = sprintf('rlwatertank / labled \ nwater等级');h = 3 * randn + 10;尽管H <= 0 ||h> = 20 h = 3 * randn + 10;结尾在= setBlockParameter(IN,BLK,'价值',num2str(h));%随机化初始高度h = 3 * randn + 10;尽管H <= 0 ||h> = 20 h = 3 * randn + 10;结尾BLK ='rlwatertank /水箱系统/ h';在= setBlockParameter(IN,BLK,'初始条件',num2str(h));结尾

也可以看看

相关话题