示例#1
0
 def __init__(self, venv, filename=None):
     VecEnvWrapper.__init__(self, venv)
     self.eprets = None
     self.eplens = None
     self.tstart = time.time()
     self.results_writer = ResultsWriter(filename,
                                         header={'t_start': self.tstart})
class VecMonitor(VecEnvWrapper):
    def __init__(self, venv, filename=None):
        VecEnvWrapper.__init__(self, venv)
        self.eprets = None
        self.eplens = None
        self.tstart = time.time()
        self.results_writer = ResultsWriter(filename, header={'t_start': self.tstart})

    def reset(self):
        obs = self.venv.reset()
        self.eprets = np.zeros(self.num_envs, 'f')
        self.eplens = np.zeros(self.num_envs, 'i')
        return obs

    def step_wait(self):
        obs, rews, dones, infos = self.venv.step_wait()
        self.eprets += rews
        self.eplens += 1
        newinfos = []
        for (i, (done, ret, eplen, info)) in enumerate(zip(dones, self.eprets, self.eplens, infos)):
            info = info.copy()
            if done:
                epinfo = {'r': ret, 'l': eplen, 't': round(time.time() - self.tstart, 6)}
                info['episode'] = epinfo
                self.eprets[i] = 0
                self.eplens[i] = 0
                self.results_writer.write_row(epinfo)

            newinfos.append(info)

        return obs, rews, dones, newinfos
示例#3
0
class VecMonitor(VecEnvWrapper):
    def __init__(self, venv, filename=None, keep_buf=0, info_keywords=()):
        VecEnvWrapper.__init__(self, venv)
        self.eprets = None
        self.eplens = None
        self.epcount = 0
        self.tstart = time.time()
        if filename:
            self.results_writer = ResultsWriter(
                filename,
                header={'t_start': self.tstart},
                extra_keys=info_keywords)
        else:
            self.results_writer = None
        self.info_keywords = info_keywords
        self.keep_buf = keep_buf
        if self.keep_buf:
            self.epret_buf = deque([], maxlen=keep_buf)
            self.eplen_buf = deque([], maxlen=keep_buf)

    def reset(self):
        obs = self.venv.reset()
        self.eprets = np.zeros(self.num_envs, 'f')
        self.eplens = np.zeros(self.num_envs, 'i')
        return obs

    def step_wait(self):
        obs, rews, dones, infos = self.venv.step_wait()
        self.eprets += rews
        self.eplens += 1

        newinfos = list(infos[:])
        for i in range(len(dones)):
            if dones[i]:
                info = infos[i].copy()
                ret = self.eprets[i]
                eplen = self.eplens[i]
                epinfo = {
                    'r': ret,
                    'l': eplen,
                    't': round(time.time() - self.tstart, 6)
                }
                for k in self.info_keywords:
                    epinfo[k] = info[k]
                info['episode'] = epinfo
                if self.keep_buf:
                    self.epret_buf.append(ret)
                    self.eplen_buf.append(eplen)
                self.epcount += 1
                self.eprets[i] = 0
                self.eplens[i] = 0
                if self.results_writer:
                    self.results_writer.write_row(epinfo)
                newinfos[i] = info
        return obs, rews, dones, newinfos
 def __init__(self, venv, filename=None, keep_buf=0):
     VecEnvWrapper.__init__(self, venv)
     self.eprets = None
     self.eplens = None
     self.epcount = 0
     self.tstart = time.time()
     if filename:
         self.results_writer = ResultsWriter(
             filename, header={'t_start': self.tstart})
     else:
         self.results_writer = None
     self.keep_buf = keep_buf
     if self.keep_buf:
         self.epret_buf = deque([], maxlen=keep_buf)
         self.eplen_buf = deque([], maxlen=keep_buf)
示例#5
0
	def __init__(self, venv, filename=None, keep_buf=0, info_keywords=()):
		VecEnvWrapper.__init__(self, venv)
		self.eprets = np.zeros(self.num_envs, 'f')
		self.eplens = np.zeros(self.num_envs, 'i')
		self.epcount = 0
		self.tstart = time.time()
		if filename:
			self.results_writer = ResultsWriter(filename, header={'t_start': self.tstart},
				extra_keys=info_keywords)
		else:
			self.results_writer = None
		self.info_keywords = info_keywords
		self.keep_buf = keep_buf
		if self.keep_buf:
			self.epret_buf = deque([], maxlen=keep_buf)
			self.eplen_buf = deque([], maxlen=keep_buf)
示例#6
0
class VecMonitor(VecEnvWrapper):
    def __init__(self, venv, filename=None, keep_buf=0):
        VecEnvWrapper.__init__(self, venv)
        self.eprets = None
        self.eplens = None
        self.epcount = 0
        self.tstart = time.time()
        if filename:
            self.results_writer = ResultsWriter(filename, header={'t_start': self.tstart})
        else:
            self.results_writer = None
        self.keep_buf = keep_buf
        if self.keep_buf:
            self.epret_buf = deque([], maxlen=keep_buf)
            self.eplen_buf = deque([], maxlen=keep_buf)

    def reset(self):
        obs = self.venv.reset()
        self.eprets = np.zeros(self.num_envs, 'f')
        self.eplens = np.zeros(self.num_envs, 'i')
        return obs

    def step_wait(self):
        obs, rews, dones, infos = self.venv.step_wait()
        self.eprets += rews
        self.eplens += 1
        newinfos = []
        for (i, (done, ret, eplen, info)) in enumerate(zip(dones, self.eprets, self.eplens, infos)):
            info = info.copy()
            if done:
                epinfo = {'r': ret, 'l': eplen, 't': round(time.time() - self.tstart, 6)}
                info['episode'] = epinfo
                if self.keep_buf:
                    self.epret_buf.append(ret)
                    self.eplen_buf.append(eplen)
                self.epcount += 1
                self.eprets[i] = 0
                self.eplens[i] = 0
                if self.results_writer:
                    self.results_writer.write_row(epinfo)
            newinfos.append(info)

        return obs, rews, dones, newinfos
示例#7
0
 def __init__(self, venv, filename=None, keep_buf=0):
     VecEnvWrapper.__init__(self, venv)
     self.eprets = None
     self.eplens = None
     self.epcount = 0
     self.tstart = time.time()
     if filename:
         self.results_writer = ResultsWriter(filename, header={'t_start': self.tstart})
     else:
         self.results_writer = None
     self.keep_buf = keep_buf
     if self.keep_buf:
         self.epret_buf = deque([], maxlen=keep_buf)
         self.eplen_buf = deque([], maxlen=keep_buf)