def calculate_goal_success(self, epoch_range): if os.path.isfile('batch_succeed.txt'): pass else: with open('batch_succeed.txt', 'w+') as f: pass sucess_rate_epoch, sucess_rate_epoch_std = [], [] error_in_dist = (self.error_in_dist**2 * 2)**0.5 # euclidean distance for epoch in epoch_range: dist_from_goal_per_agent = torch.tensor(Plot.extract_data( epoch, dir=self.dir + os.sep, calculate_dist='ON'), dtype=torch.float) sucess_rate_batch = torch.sum( dist_from_goal_per_agent <= error_in_dist, dim=1) / dist_from_goal_per_agent.shape[1] idx_of_batches_suceeded = (sucess_rate_batch == 1).nonzero() with open('batch_succeed.txt', 'a+') as f: f.write( 'In Epoch {0} the Total num of batches whos agent succeeded is: {1}\n' .format(epoch, idx_of_batches_suceeded.shape[0])) f.write('The batchs whos agents succeeded are:/n') for batch in idx_of_batches_suceeded: f.write(str(batch.item())) f.write(',') f.write('\n') sucess_rate_batch = sucess_rate_batch.type(torch.FloatTensor) sucess_rate_epoch += [torch.mean(sucess_rate_batch)] sucess_rate_epoch_std += [torch.std(sucess_rate_batch)] Plot.create_sucees_reate_plot(sucess_rate_epoch, sucess_rate_epoch_std, epoch_range)