parameters: (self, dist, policies)
return_statement: return self.best_response(mixed_strat)
docstring: Returns the best response to the current population of policies.
  
      Args:
        dist: np.ndarray, distribution over policies
        policies: list of integers indexing strategies for each player
      Returns:
        best response, exploitability tuple (see best_response)
docstring_summary: Returns the best response to the current population of policies.
docstring_tokens: Returns the best response to the current population of policies .
function: def best_population_response(self, dist, policies):
      """Returns the best response to the current population of policies.
  
      Args:
        dist: np.ndarray, distribution over policies
        policies: list of integers indexing strategies for each player
      Returns:
        best response, exploitability tuple (see best_response)
      """
      ns = self.num_strategies()
      mixed_strat = np.zeros(ns)
      for pure_strat, prob in zip(policies, dist):
        mixed_strat[pure_strat] += prob
      return self.best_response(mixed_strat)
function_tokens: def best_population_response ( self , dist , policies ) : ns = self . num_strategies ( ) mixed_strat = np . zeros ( ns ) for pure_strat , prob in zip ( policies , dist ) : mixed_strat [ pure_strat ] += prob return self . best_response ( mixed_strat )