1import numpy as np 2from pybullet_envs.deep_mimic.env.env import Env 3 4 5class Path(object): 6 7 def __init__(self): 8 self.clear() 9 return 10 11 def pathlength(self): 12 return len(self.actions) 13 14 def is_valid(self): 15 valid = True 16 l = self.pathlength() 17 valid &= len(self.states) == l + 1 18 valid &= len(self.goals) == l + 1 19 valid &= len(self.actions) == l 20 valid &= len(self.logps) == l 21 valid &= len(self.rewards) == l 22 valid &= len(self.flags) == l 23 24 return valid 25 26 def check_vals(self): 27 for vals in [self.states, self.goals, self.actions, self.logps, self.rewards]: 28 for v in vals: 29 if not np.isfinite(v).all(): 30 return False 31 return True 32 33 def clear(self): 34 self.states = [] 35 self.goals = [] 36 self.actions = [] 37 self.logps = [] 38 self.rewards = [] 39 self.flags = [] 40 self.terminate = Env.Terminate.Null 41 return 42 43 def get_pathlen(self): 44 return len(self.rewards) 45 46 def calc_return(self): 47 return sum(self.rewards) 48