主要内容

getAction

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

描述

代理人

例子

agentAction= GetAction(代理人obs.的)返回从给定环境观察的强化学习代理的策略中得到的动作。

演员表示

例子

actorAction= GetAction(actorRepobs.的)返回从策略表示派生的操作actorRep鉴于环境观测obs.

[actorAction下持久) = getAction (actorRepobs.的)当Actor使用经常性神经网络作为函数近似器时,返回演员表示的更新状态。

例子

全部折叠

创建一个环境界面,并获取其观察和操作规范。对于这种环境,负载用于离散车杆系统的预定义环境。

ent = rlpredefinedenv(“CartPole-Discrete”);ObsInfo = GetobservationInfo(ENV);Actinfo = GetActionInfo(Env);

创造批评者代表。

equentpath = [featureduputlayer(4,'正常化''没有任何''姓名'“状态”) fullyConnectedLayer(24日'姓名'“CriticStateFC1”)剥离('姓名'“CriticRelu1”) fullyConnectedLayer(24日'姓名'“CriticStateFC2”));actionPath = [featureInputLayer(1,'正常化''没有任何''姓名''行动') fullyConnectedLayer(24日'姓名'“CriticActionFC1”));commonpath = [附加层(2,'姓名''添加')剥离('姓名'“CriticCommonRelu”)全连接层(1,'姓名''输出'));criticNetwork = layerGraph (statePath);= addLayers(criticNetwork, actionPath);criticNetwork = addLayers(criticNetwork, commonPath);criticNetwork = connectLayers (criticNetwork,“CriticStateFC2”“添加/三机一体”);criticNetwork = connectLayers (criticNetwork,“CriticActionFC1”“添加/ in2”);

为评论家创造一个代表。

criticOpts = rlRepresentationOptions ('学习', 0.01,'gradientthreshold'1);评论家= rlQValueRepresentation (criticNetwork obsInfo actInfo,......'观察', {“状态”},“行动”, {'行动'}, criticOpts);

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

代理= rldqnagentoptions(......'unmorblebledqn'假的,......'targetupdatemethod'“定期”......“TargetUpdateFrequency”4......'经验bufferlength',100000,......“DiscountFactor”,0.99,......'迷你atchsize',256);代理= rldqnagent(批评者,代理人);

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

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

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

actBatch = getAction(代理,{兰德(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);

为参与者创建一个循环深度神经网络。

网= [featureInputLayer (4'正常化''没有任何''姓名'“状态”) fullyConnectedLayer (10'姓名''fc1')剥离('姓名'“relu1”)全同时连接(20,'姓名'“CriticStateFC2”) fullyConnectedLayer (numAct'姓名''行动') tanhLayer ('姓名''tanh1'));

为网络创建一个确定的参与者表示。

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

从该actor获取动作,以获得20个观察的随机批次。

ACT = GETACT(演员,{rand(4,1,10)})
行动=1 x1单元阵列{2 x1x10单一}

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

输入参数

全部折叠

钢筋学习代理,指定为以下对象之一:

演员表示,指定为一个RLDETerminyActorRepresentationrlStochasticActorRepresentation对象。

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

每个元素的尺寸obs.M.O.——- - - - - -L.B.——- - - - - -L.S., 在哪里:

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

  • 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.两者必须是一样的吗行为obs.

输出参数

全部折叠

来自代理的操作值,作为带有维度的数组返回M.一种——- - - - - -L.B.——- - - - - -L.S., 在哪里:

  • M.一种对应于相关操作规范的维度。

  • L.B.是批量大小。

  • L.S.是经常性神经网络的序列长度。如果演员和批评者代理人不使用递归神经网络,那么L.S.= 1。

笔记

当代理人如rlacagent.rlPGAgent, 或者rlppoagent.使用一个rlStochasticActorRepresentation具有连续操作空间的参与者,由操作规范设置的约束不会由代理强制执行。在这些情况下,您必须在环境中强制执行操作空间约束。

来自演员表示的操作值,作为一个包含尺寸数组的单个元素单元数组M.一种——- - - - - -L.B.——- - - - - -L.S., 在哪里:

  • M.一种对应于动作规范的尺寸。

  • L.B.是批量大小。

  • L.S.为递归神经网络的序列长度。如果actorRep那时不使用经常性神经网络L.S.= 1。

笔记

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

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

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

valueRep =设置状态(actorRep状态);
在R2020A介绍