附加
将经验附加到回放内存缓冲区
描述
例子
创建经验的缓冲
定义环境观测规范。对于本例,假设环境有一个单一的观测通道,其中有三个指定范围内的连续信号。
obsInfo = rlNumericSpec([3 1],...LowerLimit = 0,...UpperLimit =(1、5、10]);
定义环境的操作规范。对于本例,假设环境有一个单独的动作通道,具有指定范围内的两个连续信号。
actInfo = rlNumericSpec([2 1],...LowerLimit = 0,...UpperLimit = [5; 10]);
创建最大长度为20,000的体验缓冲区。
缓冲= rlReplayMemory (obsInfo actInfo 20000);
使用结构将单个经验附加到缓冲区。每个体验都包含以下元素:当前观察、行动、下一次观察、奖励和完成。
在这个例子中,我们创造一种带有随机观察,行动和奖励值的体验。属性来指示此体验不是终端条件结束
值为0。
exp.Observation = {obsInfo.UpperLimit。*兰德(3,1)};exp.Action = {actInfo.UpperLimit。*兰德(2,1)};exp.NextObservation = {obsInfo.UpperLimit。*兰德(3,1)};exp.Reward = 10 *兰德(1);exp.IsDone = 0;
将经验附加到缓冲区。
追加(缓冲区,exp);
您还可以使用结构数组将一批经验附加到经验缓冲区。对于本例,添加一个包含100个随机经验的序列,最后的经验表示终端条件。
为i = 1:100 expBatch(i).使用实例观察={obsInfo.UpperLimit.*rand(3,1)}; expBatch(i).Action = {actInfo.UpperLimit.*rand(2,1)}; expBatch(i).NextObservation = {obsInfo.UpperLimit.*rand(3,1)}; expBatch(i).Reward = 10*rand(1); expBatch(i).IsDone = 0;结束expBatch(100)。结束= 1;追加(缓冲区,expBatch);
在将经验附加到缓冲区之后,您可以对RL代理的培训经验进行小批量抽样。例如,从缓冲区中随机抽取50个经验。
miniBatch =样本(缓冲区,50);
您可以对缓冲区中的数据层进行采样。例如,以折现系数为0.95对10个连续经历的范围进行抽样。
horizonSample =样本(缓冲区,1,...NStepHorizon = 10,...DiscountFactor = 0.95);
返回的样品包含以下信息。
观察
而且行动
都是从观察和行动中第一次体会到的地平线。NextObservation
而且结束
都是下一个观察和终止信号,来自最终经验的视界。奖励
是使用指定折现因子的跨越视界的累积奖励。
你也可以尝试一系列连续的经历。在本例中,结构字段包含所有采样经验值的数组。
sequenceSample =样本(缓冲区,1,...SequenceLength = 20);
用多种观察渠道建立经验缓冲
定义环境观测规范。对于本例,假设环境有两个观测通道:一个通道包含两个连续观测值,另一个通道包含一个三值离散观测值。
obsContinuous = rlNumericSpec([2 1],...LowerLimit = 0,...UpperLimit = [1; 5]);obsDiscrete = rllimitesetspec ([1 2 3]);obsInfo = [obsContinuous obsDiscrete];
定义环境的操作规范。对于本例,假设环境有一个动作通道,在指定的范围内有一个连续的动作。
actInfo = rlNumericSpec([2 1],...LowerLimit = 0,...UpperLimit = [5; 10]);
创建一个最大长度为5000的体验缓冲区。
缓冲= rlReplayMemory (obsInfo actInfo 5000);
将50个随机经验序列附加到缓冲区。
为I = 1:50 exp(I)。观察=...{obsInfo (1) .UpperLimit。*兰德(2,1)兰迪(3)};exp(我)。行动= {actInfo.UpperLimit.*rand(2,1)}; exp(i).NextObservation =...{obsInfo (1) .UpperLimit。*兰德(2,1)兰迪(3)};exp(我)。奖励= 10*rand(1); exp(i).IsDone = 0;结束追加(缓冲区,exp);
在将经验附加到缓冲区之后,您可以对RL代理的培训经验进行小批量抽样。例如,从缓冲区中随机抽取10个经验。
miniBatch =样本(缓冲区,10);
输入参数
缓冲
- - - - - -经验的缓冲
rlReplayMemory
对象|rlPrioritizedReplayMemeory
经验缓冲,指定为rlReplayMemory
或rlPrioritizedReplayMemory
对象。
经验
- - - - - -经验附加到缓冲区
结构|结构数组
经验附加到缓冲区,指定为具有以下字段的结构或结构数组。
观察
——观察
单元阵列
观察,指定为单元格数组,其长度等于创建缓冲区时指定的观察规范的数量。中每个元素的尺寸观察
尺寸必须符合相应的观测规范。
行动
——代理操作
单元阵列
代理执行的操作,指定为单元格数组,其长度等于创建缓冲区时指定的操作规范的数量。中每个元素的尺寸行动
必须符合相应动作规格中的尺寸。
奖励
——奖励价值
标量
从开始观察开始采取指定的行动所获得的奖励值,指定为标量。
NextObservation
——下一个观察
单元阵列
通过从开始的观察中采取指定的操作而达到的下一个观察,指定为具有相同格式的单元格数组观察
.
结束
- - - - - -终止信号
0
|1
|2
终止信号,指定为以下值之一。
0
-这段经历并不是一段插曲的结束。1
-剧集结束是因为环境产生了终止信号。2
-本集以达到最大长度结束。
dataSourceID
- - - - - -数据来源索引
0
(默认)|非负整数|非负整数数组
数据源索引,指定为非负整数或非负整数数组。
如果经验
是标量结构,指定dataSourceID
作为标量整数。
如果经验
是结构数组,指定dataSourceID
的长度等于的长度的数组经验
.的每个元素可以指定不同的数据源索引经验
.如果所有元素经验
来自相同的数据源,您可以指定dataSourceID
作为标量整数。
版本历史
介绍了R2022a
另请参阅
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。