parameters: (self, params, grads, t)
return_statement: return (new_params,)
docstring: Projected gradient descent on exploitability using Euclidean projection.
  
      Args:
        params: tuple of variables to be updated (dist,)
        grads: tuple of variable gradients (grad_dist,)
        t: int, solver iteration
      Returns:
        new_params: tuple of update params (new_dist,)
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,)
        grads: tuple of variable gradients (grad_dist,)
        t: int, solver iteration
      Returns:
        new_params: tuple of update params (new_dist,)
      """
      del t
      new_params = params[0] - self.lrs[0] * grads[0]
      new_params = simplex.euclidean_projection_onto_simplex(new_params)
      return (new_params,)
function_tokens: def euc_descent_step ( self , params , grads , t ) : del t new_params = params [ 0 ] - self . lrs [ 0 ] * grads [ 0 ] new_params = simplex . euclidean_projection_onto_simplex ( new_params ) return ( new_params , )