主要内容

getMaxQValue

在给定的环境观测条件下,从具有离散行动空间的q -值函数临界中获得所有可能行动的最大估计值

描述

例子

maxQmaxActionIndex) = getMaxQValue (qValueFcnObj奥林匹克广播服务公司计算离散动作空间q值函数的临界值qValueFcnObj并返回所有可能操作的最大估计值maxQ,并附上相应的动作索引maxActionIndex,根据环境观察奥林匹克广播服务公司

maxQmaxActionIndex状态) = getMaxQValue (___的更新后的状态qValueFcnObj当它包含一个循环神经网络时。

例子

全部折叠

创建一个观察和操作规范对象(或者使用getObservationInfo而且getActionInfo从环境中提取规范对象。对于本例,将观察空间定义为连续的三维空间,将操作空间定义为由三个可能值(命名为-1、0和1)组成的有限集。

obsInfo = rlNumericSpec([3 1]);actInfo = rlFiniteSetSpec([-1 0 1]);

创建一个自定义基函数来近似临界内的q值函数,并定义一个初始参数向量。

myBasisFcn = @(myobs,myact) [...(4,1);myobs (:);myact;myobs(:)。^ 2;myact。^ 2;sin (myobs (:));罪(myact);cos (myobs (:));因为(myact)];W0 =兰德(20日1);

创建一个评论家。

评论家= rlQValueFunction ({myBasisFcn, W0},...obsInfo actInfo);

使用getMaxQValue在给定随机观察的情况下,在可能的操作中返回最大值。还要返回与使值最大化的操作对应的索引。

[v,我]= getMaxQValue(评论家,{兰德(3,1)})
v = 9.0719
我= 3

创建一个64个随机独立观察的批量集。第三个维度是批大小,而第四个维度是评论家使用的任何循环神经网络的序列长度(在本例中没有使用)。

batchobs =兰德(3,64,1);

获取所有观测值的最大值。

bv = getMaxQValue(评论家,{batchobs});大小(bv)
ans =1×21 64

选择第44次观测对应的最大值。

bv (44)
ans = 10.4138

输入参数

全部折叠

q值函数临界,指定为rlQValueFunctionrlVectorQValueFunction对象。

环境观测,指定为一个单元阵列,其元素的数量与观测输入通道的数量相同。的每个元素奥林匹克广播服务公司包含用于单个观测输入通道的观测数组。

中每个元素的尺寸奥林匹克广播服务公司O——- - - - - -lB——- - - - - -l年代,地点:

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

  • lB是批量大小。要指定单个观察结果,请设置lB= 1。要指定一批观察结果,请指定lB> 1。如果qValueFcnObj有多个观测输入通道,那么lB的所有元素必须相同奥林匹克广播服务公司

  • l年代指定循环神经网络的序列长度。如果qValueFcnObj不使用循环神经网络,那么l年代= 1。如果qValueFcnObj有多个观测输入通道,那么l年代的所有元素必须相同奥林匹克广播服务公司

lB而且l年代两者必须是一样的吗行为而且奥林匹克广播服务公司

有关循环神经网络输入和输出格式的更多信息,请参见的算法部分lstmLayer

输出参数

全部折叠

所有可能的离散动作的最大q值估计,以1乘-的形式返回lB——- - - - - -l年代数组,地点:

  • lB是批量大小。

  • l年代指定循环神经网络的序列长度。如果qValueFcnObj不使用循环神经网络,那么l年代= 1。

对应最大Q值的动作索引,以1 × -的形式返回lB——- - - - - -l年代数组,地点:

  • lB是批量大小。

  • l年代指定循环神经网络的序列长度。如果qValueFcnObj不使用循环神经网络,那么l年代= 1。

更新的状态qValueFcnObj,作为单元格数组返回。如果qValueFcnObj不使用循环神经网络,那么状态是一个空单元格数组。

您可以将批评家的状态设置为状态使用设置状态函数。例如:

qValueFcnObj =设置状态(qValueFcnObj状态);

版本历史

介绍了R2020a

Baidu
map