class_docstr: Base class for initial design strategies that evaluates multiple configurations.
  
  Parameters
  ----------
  scenario : Scenario
  n_configs : int | None, defaults to None
      Number of initial configurations (disables the arguments ``n_configs_per_hyperparameter``).
  n_configs_per_hyperparameter: int, defaults to 10
      Number of initial configurations per hyperparameter. For example, if my configuration space covers five
      hyperparameters and ``n_configs_per_hyperparameter`` is set to 10, then 50 initial configurations will be
      samples.
  max_ratio: float, defaults to 0.25
      Use at most ``scenario.n_trials`` * ``max_ratio`` number of configurations in the initial design.
      Additional configurations are not affected by this parameter.
  additional_configs: list[Configuration], defaults to []
      Adds additional configurations to the initial design.
  seed : int | None, default to None
docstr: Selects the initial configurations. Internally, `_select_configurations` is called,
  which has to be implemented by the child class.
  
  Returns
  -------
  configs : list[Configuration]
      Configurations from the child class.
docstr_tok: ["Selects","the","initial","configurations",".","Internally",",","`","_select_configurations","`","is","called",",","which","has","to","be","implemented","by","the","child","class",".","Returns","--","--","--","-","configs",":","list","[","Configuration","]","Configurations","from","the","child","class","."]
code: def select_configurations(self) -> list[Configuration]:
      """Selects the initial configurations. Internally, `_select_configurations` is called,
      which has to be implemented by the child class.
  
      Returns
      -------
      configs : list[Configuration]
          Configurations from the child class.
      """
      configs: list[Configuration] = []
  
      if self._n_configs == 0:
          logger.info("No initial configurations are used.")
      else:
          configs += self._select_configurations()
  
      # Adding additional configs
      configs += self._additional_configs
  
      for config in configs:
          if config.origin is None:
              config.origin = "Initial design"
  
      # Removing duplicates
      # (Reference: https://stackoverflow.com/questions/7961363/removing-duplicates-in-lists)
      configs = list(OrderedDict.fromkeys(configs))
      logger.info(
          f"Using {len(configs) - len(self._additional_configs)} initial design configurations "
          f"and {len(self._additional_configs)} additional configurations."
      )
  
      return configs
  
file_path: SMAC3/smac/initial_design/abstract_initial_design.py
imports: from __future__ import annotations
  from abc import abstractmethod
  from typing import Any
  from collections import OrderedDict
  import numpy
  from ConfigSpace.configuration_space import Configuration, ConfigurationSpace
  from ConfigSpace.hyperparameters import CategoricalHyperparameter, Constant, IntegerHyperparameter, NumericalHyperparameter, OrdinalHyperparameter
  from ConfigSpace.util import ForbiddenValueError, deactivate_inactive_hyperparameters
  from smac.scenario import Scenario
  from smac.utils.logging import get_logger
label_desc: Use image node_id 3 for calling the AbstractInitialDesign obj's underlying member method code with example usage: obj.select_configurations() and returns: configs