水箱强化学习环境模型
这个例子展示了如何创建一个水箱强化学习模型®环境包含一个RL代理块地方的水位控制器的一辆坦克。金宝app模拟这个环境中,您必须创建一个代理和指定代理在RL代理。例如,火车一个代理使用这样的环境下,明白了创建仿真软件环金宝app境和培训代理。
mdl =“rlwatertank”;open_system (mdl)
这个模型已经包含了RL代理块,连接到以下信号:
标量动作输出信号
向量的观察输入信号
标量奖励输入信号
逻辑输入信号停止仿真
操作和观察
强化学习环境从代理接收动作信号并生成观测信号以响应这些行动。培养一个代理,您必须创建操作规范和观察对象。
这个环境的行动信号的流量控制信号发送到工厂。创建一个规范的对象为一个动作频道连续信号,使用rlNumericSpec
函数。
actionInfo = rlNumericSpec ([1]);actionInfo。Name =“流”;
如果动作信号需要一组离散的可能值之一,创建规范使用rlFiniteSetSpec
函数。
在这种环境下,有三个观测信号发送到代理,指定为一个矢量信号。观察向量是 ,地点:
水箱里的水的高度。
,在那里 水高的参考价值。
计算观测信号的生成观测子系统。
open_system ([mdl' /生成观察'])
创建一个向量观测规范的三元素。指定一个下界的0水高度,离开其他观测信号无限。
observationInfo = rlNumericSpec (1 [3],…“LowerLimit”,(负负0]”,…“UpperLimit”,正正正]);observationInfo。Name =“观察”;observationInfo。描述=综合误差、误差和测量身高的;
如果行为或观察由总线信号,创建规范使用bus2RLSpec
函数。
奖励的信号
构造一个标量奖励的信号。对于这个示例,指定以下奖励。
下面的错误时积极的奖励0.1
和消极的。同时,有一个大外的水的高度时奖励处罚0
来20.
的范围内。
构造这个奖励的计算奖励子系统。
open_system ([mdl/计算奖励的])
停止信号
终止训练集和模拟,指定一个逻辑信号结束
块的输入端口。对于这个示例,终止发作
或
。
计算这个信号停止仿真子系统。
open_system ([mdl“模拟/停止”])
创建环境对象
创建一个环境对象的仿真软件模型。金宝app
(mdl env金宝app = rlSimulinkEnv (mdl,' / RL代理',observationInfo actionInfo);
重置功能
您还可以创建一个定制的复位函数,随机参数、变量或模型的状态。在这个例子中,重置函数随机排列参考信号和初始水高度和设置相应的块参数。
env。ResetFcn = @(在)localResetFcn(的);
本地函数
函数= localResetFcn(中)%随机参考信号黑色= sprintf (“rlwatertank /期望\ nWater级别”);h = 3 * randn + 10;而h < = 0 | | h > = 20 h = 3 * randn + 10;结束在= setBlockParameter(黑色,“价值”num2str (h));%随机初始高度h = 3 * randn + 10;而h < = 0 | | h > = 20 h = 3 * randn + 10;结束黑色=“rlwatertank /水箱系统/ H”;在= setBlockParameter(黑色,“InitialCondition”num2str (h));结束