主要内容

努力

从代理商或演员代表获取行动给定环境观察

描述

代理人

示例

植物= GetAction(代理人obs.返回源自加强学习代理的策略的动作给出了环境观察。

演员代表

示例

act= GetAction(责任obs.返回策略表示派生的操作责任给定环境观察obs.

[act德斯特泰特] = GetAction(责任obs.当Actor使用经常性神经网络作为函数近似器时返回演员表示的更新状态。

例子

崩溃

创建环境界面并获取其观察和操作规范。对于此环境,请加载用于离散推车系统的预定义环境。

Env = Rlpredefinedenv(“cartpole  - 离散”);ObsInfo = GetobservationInfo(ENV);Actinfo = GetActionInfo(ENV);

创造批评者代表。

equentpath = [featureduputlayer(4,'正常化''无''名字'“州”)全康校长(24,'名字''批评福尔福克')剥离('名字''rictrelu1')全康校长(24,'名字''批评福尔2')];ActionPath = [FeatureInputLayer(1,'正常化''无''名字''行动')全康校长(24,'名字''批评FC1')];commonpath = [附加层(2,'名字''添加')剥离('名字''批判杂志')全康连接层(1,'名字''输出')];批判性=图表图(州路);批评网络= addlayers(批判性,ActionPath);批评网络= addlayers(批判性,commonpath);批评网络= ConnectLayers(批评者,'批评福尔2''添加/ in1');批评网络= ConnectLayers(批评者,'批评FC1''添加/ in2');

为评论家创造一个代表。

批评= rlrepresentationOptions('学习',0.01,'gradientthreshold',1);评论家= rlqvalueerepresentation(批评,undernfo,Actinfo,......'观察',{“州”},'行动',{'行动'},批评);

指定代理选项,并使用环境和批评创建DQN代理。

Agentopts = RLDQNAGENTOPTIONS(......'unmorblebledqn',假,......'targetupdatemethod'“定期”......'targetupdatefrquency',4,......'经验BufferLength',100000,......'贴花因子',0.99,......'minibatchsize',256);代理= rldqnagent(批评者,代理商);

从代理获得单一观察的离散动作。对于此示例,请使用随机观察阵列。

ACT = GetAction(代理,{rand(4,1)})
ACT = 10.

您还可以获得批次观察的行动。例如,获得10个观察批次的动作。

Actbatch = GetAction(代理,{rand(4,1,10)});大小(Actbatch)
ans =.1×21 10.

actbatch.包含批量中的每个观察的一个动作,每个动作是可能的离散动作之一。

创建观察和行动信息。您还可以从环境中获取这些规范。

Obsinfo = rlnumericspec([4 1]);Actinfo = rlnumericspec([2 1]);numobs = obsinfo.dimension(1);Numact = Actinfo.dimension(1);

为演员创建一个经常性的深神经网络。

net = [featureinputlayer(4,'正常化''无''名字'“州”)全连接层(10,'名字''fc1')剥离('名字''relu1')全连接列(20,'名字''批评福尔2')全连接层(数量,'名字''行动')Tanhlayer('名字''tanh1')];

为网络创建一个确定性演员表示。

ACTOROPTIONS = RLREPRESENTATIONOPTIONS('学习',1e-3,'gradientthreshold',1);Actor = RLDETerminyActorRepresentation(Net,Obsinfo,Actinfo,......'观察',{“州”},'行动',{'tanh1'});

从该actor获取动作,以获得一批20个观察结果。

Act = GetAction(演员,{rand(4,1,10)})
行动=1x1细胞阵列{2x1x10单}

act包含批次中所有10个观察的两个计算操作。

输入参数

崩溃

强化学习代理,指定为以下对象之一:

演员表示,指定为一个RLDETerminyActorRepresentation或者rlstochastorrepresentation对象。

环境观测,指定为具有多个元素的单元阵列,因为存在观察输入通道。每个元素obs.包含单个观察输入通道的观察数组。

每个元素的尺寸obs.mO.-L.B.-L.S.,其中:

  • mO.对应于相关观察输入通道的尺寸。

  • L.B.是批量大小。指定单个观察,设置L.B.= 1.要指定一批观察,请指定L.B.> 1.如果valuerep.或者qvaluerep.有多个观察输入通道,然后L.B.对所有元素必须相同obs.

  • L.S.指定经常性神经网络的序列长度。如果valuerep.或者qvaluerep.那时不使用经常性神经网络L.S.= 1.如果valuerep.或者qvaluerep.有多个观察输入通道,然后L.S.对所有元素必须相同obs.

L.B.L.S.两者都必须相同actobs.

输出参数

崩溃

来自代理的操作值,作为具有尺寸的数组返回mA.-L.B.-L.S.,其中:

  • mA.对应于相关动作规范的尺寸。

  • L.B.是批量大小。

  • L.S.是经常性神经网络的序列长度。如果是演员和批评者代理人然后不要使用反复性神经网络L.S.= 1。

注意

当代理人如rlacagent.rlpgagent.或者rlppoagent.用A.rlstochastorrepresentation带有连续动作空间的演员,代理不强制执行由操作规范设置的约束。在这些情况下,您必须在环境中强制执行操作空间约束。

来自演员表示的操作值,作为一个单元素单元数组,包含尺寸数组mA.-L.B.-L.S.,其中:

  • mA.对应于动作规范的尺寸。

  • L.B.是批量大小。

  • L.S.是经常性神经网络的序列长度。如果责任那时不使用经常性神经网络L.S.= 1。

注意

rlstochastorrepresentation具有连续动作空间的演员不强制执行操作规范设置的约束。在这些情况下,您必须在环境中强制执行操作空间约束。

演员表示更新状态,作为单元格数组返回。如果责任那时不使用经常性神经网络是一个空的单元格阵列。

您可以将表示状态设置为使用setstate.功能。例如:

valuerep = setstate(责任,州);
在R2020A中介​​绍