in safe_rl/pg/buffer.py [0:0]
def finish_path(self, last_val=0, last_cval=0):
path_slice = slice(self.path_start_idx, self.ptr)
rews = np.append(self.rew_buf[path_slice], last_val)
vals = np.append(self.val_buf[path_slice], last_val)
deltas = rews[:-1] + self.gamma * vals[1:] - vals[:-1]
self.adv_buf[path_slice] = discount_cumsum(deltas, self.gamma * self.lam)
self.ret_buf[path_slice] = discount_cumsum(rews, self.gamma)[:-1]
costs = np.append(self.cost_buf[path_slice], last_cval)
cvals = np.append(self.cval_buf[path_slice], last_cval)
cdeltas = costs[:-1] + self.gamma * cvals[1:] - cvals[:-1]
self.cadv_buf[path_slice] = discount_cumsum(cdeltas, self.cost_gamma * self.cost_lam)
self.cret_buf[path_slice] = discount_cumsum(costs, self.cost_gamma)[:-1]
self.path_start_idx = self.ptr