class_docstr: This class specifies the generation algorithm for a Sobol generator.
  
  As Sobol does not make use of a model, it does not implement
  the fit or predict methods.
  
  Attributes:
      init_position: The initial state of the Sobol generator.
          Starts at 0 by default.
      scramble: If True, permutes the parameter values among
          the elements of the Sobol sequence. Default is True.
      See base `RandomModel` for a description of remaining attributes.
class_docstr_tok: ["This","class","specifies","the","generation","algorithm","for","a","Sobol","generator",".","As","Sobol","does","not","make","use","of","a","model",",","it","does","not","implement","the","fit","or","predict","methods",".","Attributes",":","init_position",":","The","initial","state","of","the","Sobol","generator",".","Starts","at","0","by","default",".","scramble",":","If","True",",","permutes","the","parameter","values","among","the","elements","of","the","Sobol","sequence",".","Default","is","True",".","See","base","`","RandomModel","`","for","a","description","of","remaining","attributes","."]
docstr: Generate new candidates.
  
  Args:
      n: Number of candidates to generate.
      bounds: A list of (lower, upper) tuples for each column of X.
      linear_constraints: A tuple of (A, b). For k linear constraints on
          d-dimensional x, A is (k x d) and b is (k x 1) such that
          A x <= b.
      fixed_features: A map {feature_index: value} for features that
          should be fixed to a particular value during generation.
      rounding_func: A function that rounds an optimization result
          appropriately (e.g., according to `round-trip` transformations).
  
  Returns:
      2-element tuple containing
  
      - (n x d) array of generated points.
      - Uniform weights, an n-array of ones for each point.
docstr_tok: ["Generate","new","candidates",".","Args",":","n",":","Number","of","candidates","to","generate",".","bounds",":","A","list","of","(","lower",",","upper",")","tuples","for","each","column","of","X.","linear_constraints",":","A","tuple","of","(","A",",","b",")",".","For","k","linear","constraints","on","d-dimensional","x",",","A","is","(","k","x","d",")","and","b","is","(","k","x","1",")","such","that","A","x","<","=","b.","fixed_features",":","A","map","{","feature_index",":","value","}","for","features","that","should","be","fixed","to","a","particular","value","during","generation",".","rounding_func",":","A","function","that","rounds","an","optimization","result","appropriately","(","e.g.",",","according","to","`","round-trip","`","transformations",")",".","Returns",":","2-element","tuple","containing","-","(","n","x","d",")","array","of","generated","points",".","-","Uniform","weights",",","an","n-array","of","ones","for","each","point","."]
code: def gen(
      self,
      n: int,
      bounds: List[Tuple[float, float]],
      linear_constraints: Optional[
          Tuple[np.ndarray, np.ndarray]
      ] = None,
      fixed_features: Optional[Dict[int, float]] = None,
      model_gen_options: Optional[TConfig] = None,
      rounding_func: Optional[
          Callable[[np.ndarray], np.ndarray]
      ] = None,
  ) -> Tuple[np.ndarray, np.ndarray]:
      """Generate new candidates.
  
      Args:
          n: Number of candidates to generate.
          bounds: A list of (lower, upper) tuples for each column of X.
          linear_constraints: A tuple of (A, b). For k linear constraints on
              d-dimensional x, A is (k x d) and b is (k x 1) such that
              A x <= b.
          fixed_features: A map {feature_index: value} for features that
              should be fixed to a particular value during generation.
          rounding_func: A function that rounds an optimization result
              appropriately (e.g., according to `round-trip` transformations).
  
      Returns:
          2-element tuple containing
  
          - (n x d) array of generated points.
          - Uniform weights, an n-array of ones for each point.
  
      """
      tf_indices = tunable_feature_indices(
          bounds=bounds, fixed_features=fixed_features
      )
      if len(tf_indices) > 0:
          self.init_engine(len(tf_indices))
      points, weights = super().gen(
          n=n,
          bounds=bounds,
          linear_constraints=linear_constraints,
          fixed_features=fixed_features,
          model_gen_options=model_gen_options,
          rounding_func=rounding_func,
      )
      if self.engine:
          self.init_position = not_none(self.engine).num_generated
      return (points, weights)
  
file_path: Ax/ax/models/random/sobol.py
imports: from typing import Any, Callable, Dict, List, Optional, Tuple
  import numpy
  import torch
  from ax.models.base import Model
  from ax.models.model_utils import tunable_feature_indices
  from ax.models.random.base import RandomModel
  from ax.models.types import TConfig
  from ax.utils.common.docutils import copy_doc
  from ax.utils.common.typeutils import not_none
  from torch.quasirandom import SobolEngine
label_desc: Use image node_id 4 for calling the SobolGenerator obj's underlying member method code with example usage: obj.gen(n, bounds, linear_constraints, fixed_features, model_gen_options, rounding_func) and returns: points,  weights