主要内容

附加

将经验附加到回放内存缓冲区

    描述

    例子

    追加(缓冲经验附加经验经验重放记忆缓冲

    追加(缓冲经验dataSourceID将指定数据源的经验附加到重播内存缓冲区。

    例子

    全部折叠

    定义环境观测规范。对于本例,假设环境有一个单一的观测通道,其中有三个指定范围内的连续信号。

    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);

    输入参数

    全部折叠

    经验缓冲,指定为rlReplayMemoryrlPrioritizedReplayMemory对象。

    经验附加到缓冲区,指定为具有以下字段的结构或结构数组。

    观察,指定为单元格数组,其长度等于创建缓冲区时指定的观察规范的数量。中每个元素的尺寸观察尺寸必须符合相应的观测规范。

    代理执行的操作,指定为单元格数组,其长度等于创建缓冲区时指定的操作规范的数量。中每个元素的尺寸行动必须符合相应动作规格中的尺寸。

    从开始观察开始采取指定的行动所获得的奖励值,指定为标量。

    通过从开始的观察中采取指定的操作而达到的下一个观察,指定为具有相同格式的单元格数组观察

    终止信号,指定为以下值之一。

    • 0-这段经历并不是一段插曲的结束。

    • 1-剧集结束是因为环境产生了终止信号。

    • 2-本集以达到最大长度结束。

    数据源索引,指定为非负整数或非负整数数组。

    如果经验是标量结构,指定dataSourceID作为标量整数。

    如果经验是结构数组,指定dataSourceID的长度等于的长度的数组经验.的每个元素可以指定不同的数据源索引经验.如果所有元素经验来自相同的数据源,您可以指定dataSourceID作为标量整数。

    版本历史

    介绍了R2022a

    另请参阅

    |

    Baidu
    map