class_docstr: Try max_constraints_trials random explorations for satisfying constraints.
  The finally chosen point, if it does not satisfy constraints, is penalized as shown in the penalty function,
  using coeffcieints mentioned here.
  
  
  Possibly unstable.
docstr: Computes the penalty associated with a Parameter, for constraint management
docstr_tok: ["Computes","the","penalty","associated","with","a","Parameter",",","for","constraint","management"]
code: def penalty(
      self,
      parameter: p.Parameter,
      num_ask: int,
      budget: tp.Optional[int],
  ) -> float:
      """Computes the penalty associated with a Parameter, for constraint management"""
      budget = 1 if budget is None else budget
      coeff = self.penalty_factor * (
          self.penalty_exponent ** (num_ask / np.sqrt(budget))
      )
      val = parameter.value
      return coeff * sum(
          _float_penalty(func(val))
          for func in parameter._constraint_checkers
      )
  
imports: import math
  import operator
  import numpy
  from nevergrad.parametrization import parameter
  from nevergrad.parametrization.utils import float_penalty
  import nevergrad.common.typing
  from nevergrad.common.tools import OrderedSet
label_desc: Use image node_id 4 for calling the ConstraintManager obj's underlying member method code with example usage: obj.penalty(parameter, num_ask, budget) and returns: unknown