def process_env_step(self, rewards, costs, dones, infos):
self.transition.rewards = rewards.clone()
self.transition.costs = costs.clone()
self.transition.dones = dones
# Bootstrapping on time outs
if 'time_outs' in infos:
self.transition.rewards += self.gamma * torch.squeeze(self.transition.values * infos['time_outs'].unsqueeze(1).to(self.device), 1)
self.transition.costs += self.gamma * (self.transition.costs * infos['time_outs'].unsqueeze(1).to(self.device))
# Record the transition
self.storage.add_transitions(self.transition)
self.transition.clear()
self.actor_critic.reset(dones) 首先很感谢您的开源,有点关于np30算法中的问题想询问一下,就是这一段关于time_out的损失积累中,self.transition.costs += self.gamma * (self.transition.costs * infos['time_outs'].unsqueeze(1).to(self.device)),为什么不是仿照reward一样用cost_values积累,而是采用costs呢,这样做不是相当于在time_out的时候手动对costs进行放大吗(costs = (1+gamma)*costs ),这个地方不是很理解 希望能得到解答
def process_env_step(self, rewards, costs, dones, infos):