主要内容

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 = rand(20,1);

创造批评家。

rlQValueFunction({myBasisFcn,W0},...obsInfo actInfo);

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

[v,i] = getMaxQValue(批评家,{rand(3,1)})
V = 9.0719
I = 3

创建64个随机独立观察的批处理集。第三个维度是批大小,而第四个维度是评论家使用的任何循环神经网络的序列长度(在这种情况下没有使用)。

Batchobs = rand(3,1,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 = setState(qValueFcnObj,state);

版本历史

R2020a中引入