• 大小: 1KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-01-07
  • 语言: 其他
  • 标签: Prioritized  

资源简介

Prioritized Experience Replay的SumTree代码注解,包你看懂,树的原理,父节点和子节点之间的关系,在代码中都有写,初学者易懂!

资源截图

代码片段和文件信息

import numpy as np


class Tree(object):
    write = 0

    def __init__(self capacity):
        self.capacity = capacity  # capacity是叶子节点个数,也就是存放数据的个数,树的总结点个数为 n = (2 * 叶子节点数 - 1)
        self.tree = np.zeros(2 * capacity)  # 从1开始编号[1capacity]
        self.data = np.zeros(capacity+1 dtype=object)  # 存叶子节点对应的数据data[叶子节点编号id] = data

    def add(self p data):
        idx = self.write + self.capacity  #定位到第一个叶子节点(idx)
        self.data[self.write+1] = data
        self._updatetree(idx p)
        self.write += 1
        if self.write > self.capacity:  # 存满时,在从左到右从上到下,重新一个个替换
            self.write = 0

    def _updatetree(self idx p):
        change = p - self.tree[idx]  # 计算更新的p和叶子结点(idx)的差值,
        self._propagate(idx change)  # 在把这个差值change往上传播,把这个节点(idx)的父节点

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        2580  2018-07-27 19:53  buildTree.py

评论

共有 条评论

相关资源