class_docstr: Simulation manager.
class_docstr_tok: ["Simulation","manager","."]
docstr: Evaluate population parameters or test the best parameter.
  
  Args:
      params - Parameters to be evaluated.
      test - Whether we are testing the best parameter
  Returns:
      An array of fitness scores.
docstr_tok: ["Evaluate","population","parameters","or","test","the","best","parameter",".","Args",":","params","-","Parameters","to","be","evaluated",".","test","-","Whether","we","are","testing","the","best","parameter","Returns",":","An","array","of","fitness","scores","."]
code: def eval_params(
      self, params: jnp.ndarray, test: bool
  ) -> Tuple[jnp.ndarray, TaskState]:
      """Evaluate population parameters or test the best parameter.
  
      Args:
          params - Parameters to be evaluated.
          test - Whether we are testing the best parameter
      Returns:
          An array of fitness scores.
      """
      if self._use_for_loop:
          return self._for_loop_eval(params, test)
      else:
          return self._scan_loop_eval(params, test)
  
imports: import logging
  from functools import partial
  from typing import Tuple
  from typing import Union
  import time
  import jax
  import jax.numpy
  from jax import random
  from jax.tree_util import tree_map
  from evojax.obs_norm import ObsNormalizer
  from evojax.task.base import TaskState
  from evojax.task.base import VectorizedTask
  from evojax.policy.base import PolicyState
  from evojax.policy.base import PolicyNetwork
  from evojax.util import create_logger
label_desc: Use image node_id 2 for calling the SimManager obj's underlying member method code with example usage: obj.eval_params(params, test) and returns: self, self