class_docstr: Multi-objective sampler using the NSGA-II algorithm.
  
  NSGA-II stands for "Nondominated Sorting Genetic Algorithm II",
  which is a well known, fast and elitist multi-objective genetic algorithm.
  
  For further information about NSGA-II, please refer to the following paper:
  
  - `A fast and elitist multiobjective genetic algorithm: NSGA-II
    <https://ieeexplore.ieee.org/document/996017>`_
  
  Args:
      population_size:
          Number of individuals (trials) in a generation.
  
      mutation_prob:
          Probability of mutating each parameter when creating a new individual.
          If :obj:`None` is specified, the value ``1.0 / len(parent_trial.params)`` is used
          where ``parent_trial`` is the parent trial of the target individual.
  
      crossover_prob:
          Probability that a crossover (parameters swapping between parents) will occur
          when creating a new individual.
  
      swapping_prob:
          Probability of swapping each parameter of the parents during crossover.
  
      seed:
          Seed for random number generator.
class_docstr_tok: ["Multi-objective","sampler","using","the","NSGA-II","algorithm",".","NSGA-II","stands","for","``","Nondominated","Sorting","Genetic","Algorithm","II","''",",","which","is","a","well","known",",","fast","and","elitist","multi-objective","genetic","algorithm",".","For","further","information","about","NSGA-II",",","please","refer","to","the","following","paper",":","-","`","A","fast","and","elitist","multiobjective","genetic","algorithm",":","NSGA-II","<","https",":","\/\/ieeexplore.ieee.org\/document\/996017",">","`","_","Args",":","population_size",":","Number","of","individuals","(","trials",")","in","a","generation",".","mutation_prob",":","Probability","of","mutating","each","parameter","when","creating","a","new","individual",".","If",":","obj",":","`","None","`","is","specified",",","the","value","``","1.0","\/","len","(","parent_trial.params",")","``","is","used","where","``","parent_trial","``","is","the","parent","trial","of","the","target","individual",".","crossover_prob",":","Probability","that","a","crossover","(","parameters","swapping","between","parents",")","will","occur","when","creating","a","new","individual",".","swapping_prob",":","Probability","of","swapping","each","parameter","of","the","parents","during","crossover",".","seed",":","Seed","for","random","number","generator","."]
code: def reseed_rng(self) -> None:
      self._random_sampler.reseed_rng()
      self._rng.rng.seed()
  
imports: from collections import defaultdict
  import hashlib
  import itertools
  from typing import Any
  from typing import cast
  from typing import DefaultDict
  from typing import Dict
  from typing import List
  from typing import Optional
  from typing import Sequence
  from typing import Tuple
  import optuna
  from optuna import multi_objective
  from optuna._deprecated import deprecated_class
  from optuna.distributions import BaseDistribution
  from optuna.multi_objective.samplers import BaseMultiObjectiveSampler
  from optuna.samplers._lazy_random_state import LazyRandomState
label_desc: Use image node_id 2 for calling the NSGAIIMultiObjectiveSampler obj's underlying member method code with example usage: obj.reseed_rng() without return types