主要内容

getMaxQValue

离散作用空间Q值函数表示的最大状态值函数估计

描述

实例

[马克斯,maxActionIndex]=getMaxQValue(qValueRep,obs)返回Q值函数表示的最大估计状态值函数qValueRep给定环境观测值obs.getMaxQValue确定Q值估计值最大的离散动作,并返回该Q值(马克斯)以及相应的行动指标(maxActionIndex).

[马克斯,maxActionIndex,状态]=getMaxQValue(___)返回表示的状态。在qValueRep是一种递归神经网络。

例子

全部崩溃

创造环境,获取观察和行动信息。

env=rlPredefinedEnv(“CartPole离散型”);obsInfo=getObservationInfo(env);actInfo=getActionInfo(env);numObs=obsInfo.Dimension(1);numDiscreteAct=numel(actInfo.Elements);

为多输出Q值函数表示创建深度神经网络。

关键网络=[featureInputLayer(4,“正常化”,“没有”,“姓名”,“国家”)完全连接层(50,“姓名”,“CriticStateFC1”)雷卢耶(“姓名”,“CriticRelu1”)完全连接层(20,“姓名”,“CriticStateFC2”)雷卢耶(“姓名”,“CriticRelu2”)完全连接层(numDiscreteAct,“姓名”,“输出”)];

使用递归神经网络为您的批评者创建一个表示。

临界点=rlRepresentationOptions(“LearnRate”,1e-3,“梯度阈值”,1);评论家=rlQValueRepresentation(关键网络、obsInfo、actInfo、,...“观察”,“国家”,批评);

使用随机观测获得每个可能离散动作的值函数估计。

obs=rand(4,1);val=getValue(批评家,{obs})
瓦尔=2x1单列向量0.0139 -0.1851

瓦尔包含两个值函数估计,每个可能的离散动作一个。

您可以获得所有离散动作的最大Q值函数估计值。

[maxVal,maxIndex]=getMaxQValue(批评家,{obs})
马克斯瓦尔=仅有一个的0.0139
maxIndex=1

马克斯瓦尔对应于中的最大条目瓦尔.

您还可以获取一批观测值的最大Q值函数估计值。例如,获取一批10个观测值的值函数估计值。

[batchVal,batchIndex]=getMaxQValue(critic,{rand(4,1,10)});

输入参数

全部崩溃

Q值表示法,指定为rlQValueRepresentation对象

环境观测,指定为一个单元数组,包含的元素数量与观测输入通道的数量相同。每个元素obs包含单个观测输入通道的观测数组。

中每个元素的尺寸obsMO-借-LB-借-Ls,其中:

  • MO对应于相关观测输入通道的尺寸。

  • LB是批量大小。要指定单个观测值,请设置LB=1.若要指定一批观察结果,请指定LB>1.如果valueRepqValueRep有多个观察输入通道,然后LB对于的所有元素都必须相同obs.

  • Ls指定递归神经网络的序列长度。如果valueRepqValueRep不使用递归神经网络,那么Ls= 1. 如果valueRepqValueRep有多个观察输入通道,然后Ls对于的所有元素都必须相同obs.

LBLs两者必须相同行为obs.

输出参数

全部崩溃

所有可能的离散动作的最大Q值估计值,以1-by形式返回-LB-借-Ls数组,其中:

  • LB是批量大小。

  • Ls指定递归神经网络的序列长度。如果qValueRep不使用递归神经网络,那么Ls= 1.

与最大Q值对应的操作索引,以1-by形式返回-LB-借-Ls数组,其中:

  • LB是批量大小。

  • Ls指定递归神经网络的序列长度。如果qValueRep不使用递归神经网络,那么Ls= 1.

表示状态,作为单元格数组返回。如果qValueRep不使用递归神经网络,那么状态是一个空单元格数组。

可以将表达的状态设置为状态使用设定状态功能。例如:

valueRep=设置状态(qValueRep,状态);
在R2020a中引入