code: def is_best_response(self, own_action, opponents_actions, tol=None):
          
          if tol is None:
              tol = self.tol
  
          payoff_vector = self.payoff_vector(opponents_actions)
          payoff_max = payoff_vector.max()
  
          if isinstance(own_action, numbers.Integral):
              return payoff_vector[own_action] >= payoff_max - tol
          else:
              return np.dot(own_action, payoff_vector) >= payoff_max - tol
docs: Return True if `own_action` is a best response to
          `opponents_actions`.
  
          Parameters
          ----------
          own_action : scalar(int) or array_like(float, ndim=1)
              An integer representing a pure action, or an array of floats
              representing a mixed action.
  
          opponents_actions : see `best_response`
  
          tol : scalar(float), optional(default=None)
              Tolerance level used in determining best responses. If None,
              default to the value of the `tol` attribute.
  
          Returns
          -------
          bool
              True if `own_action` is a best response to
              `opponents_actions`; False otherwise.