class_docstr: Pseudo-boolean functions taken from the IOHexperimenter project, adapted for minimization
  
  Parameters
  ----------
  fid: int
      function number (for a list of functions, please see the
      `documentation <https://www.sciencedirect.com/science/article/abs/pii/S1568494619308099>>`_
  iid: int
      the instance of the function, specifies the transformations in variable and objective space
  dim: int
      The dimensionality of the problem. For function 21 and 23 (N-queens), this needs to be a perfect square
  instrumentation: str
      How the paramerterization is handled. Either "Softmax", in which case the optimizers will work on probabilities
      (so the same parametrization may actually lead to different values), or "Ordered". With this one the optimizer
      will handle a value, which will lead to a 0 if it is negative, and 1 if it is positive.
      This way it is no more stochastic, but the problem becomes very non-continuous
  
  Notes
  -----
  The IOHexperimenter is part of the IOHprofiler project (IOHprofiler.github.io)
  
  References
  -----
  For a full description of the available problems and used transformation methods,
  please see "Benchmarking discrete optimization heuristics with IOHprofiler" by C. Doerr et al.
code: def __init__(
      self,
      fid: int = 1,
      iid: int = 0,
      dim: int = 16,
      instrumentation: str = "Softmax",
  ) -> None:
      from IOHexperimenter import (
          IOH_function,
      )  # lazy import in case it is not installed
  
      if fid in [21, 23]:
          assert np.sqrt(
              dim
          ).is_integer(), "Dimension needs to be a perfect square for the selected problem"
      self.f_internal = IOH_function(
          fid=fid, dim=dim, iid=iid, suite="PBO"
      )
      assert instrumentation in [
          "Softmax",
          "Ordered",
          "Unordered",
      ], "The only valid options for 'instrumentation' are 'Softmax' and 'Ordered'"
      if instrumentation == "Softmax":
          parameterization: ng.p.Parameter = ng.p.Choice(
              [0, 1], repetitions=dim
          )
      else:
          parameterization = ng.p.TransitionChoice(
              [0, 1],
              repetitions=dim,
              ordered=instrumentation == "Ordered",
          )
      super().__init__(
          self._evaluation_internal,
          parameterization.set_name(instrumentation),
      )
  
file_path: nevergrad/nevergrad/functions/iohprofiler/core.py
imports: import numpy
  import nevergrad
  from ..None import base
label_desc: Use image node_id 1 to create a new PBOFunction object from inherited base classes: base with example: obj = PBOFunction(fid, iid, dim, instrumentation)