parameters: (self, params, grads, t)
return_statement: return (new_dist, new_y)
docstring: Projected gradient descent on exploitability using Euclidean projection.
  
      Args:
        params: tuple of variables to be updated (dist, y)
        grads: tuple of variable gradients (grad_dist, grad_y)
        t: int, solver iteration (unused)
      Returns:
        new_params: tuple of update params (new_dist, new_y)
docstring_summary: Projected gradient descent on exploitability using Euclidean projection.
docstring_tokens: Projected gradient descent on exploitability using Euclidean projection .
function: def euc_descent_step(self, params, grads, t):
      """Projected gradient descent on exploitability using Euclidean projection.
  
      Args:
        params: tuple of variables to be updated (dist, y)
        grads: tuple of variable gradients (grad_dist, grad_y)
        t: int, solver iteration (unused)
      Returns:
        new_params: tuple of update params (new_dist, new_y)
      """
      lr_dist, lr_y = self.lrs
      new_dist = []
      for dist_i, dist_grad_i in zip(params[0], grads[0]):
        new_dist_i = dist_i - lr_dist * dist_grad_i
        new_dist_i = simplex.euclidean_projection_onto_simplex(new_dist_i)
        new_dist.append(new_dist_i)
      lr_y = np.clip(1 / float(t + 1), lr_y, np.inf)
      new_y = []
      for y_i, y_grad_i in zip(params[1], grads[1]):
        new_y_i = y_i - lr_y * y_grad_i
        new_y_i = np.clip(new_y_i, 0., np.inf)
        new_y.append(new_y_i)
      return (new_dist, new_y)
function_tokens: def euc_descent_step ( self , params , grads , t ) : lr_dist , lr_y = self . lrs new_dist = [ ] for dist_i , dist_grad_i in zip ( params [ 0 ] , grads [ 0 ] ) : new_dist_i = dist_i - lr_dist * dist_grad_i new_dist_i = simplex . euclidean_projection_onto_simplex ( new_dist_i ) new_dist . append ( new_dist_i ) lr_y = np . clip ( 1 / float ( t + 1 ) , lr_y , np . inf ) new_y = [ ] for y_i , y_grad_i in zip ( params [ 1 ] , grads [ 1 ] ) : new_y_i = y_i - lr_y * y_grad_i new_y_i = np . clip ( new_y_i , 0. , np . inf ) new_y . append ( new_y_i ) return ( new_dist , new_y )