class_docstr: .. include:: /global.rst
  
  Please refer to |sobol| for details on this algorithm.
docstr: Create a configuration for a Sobol solver.
  
  :param num_evals: number of permitted function evaluations
  :type num_evals: int
  :param kwargs: box constraints
  :type kwargs: {'param': [lb, ub], ...}
  
  
  Verify that we can effectively make a solver from box.
  
  >>> s = Sobol.suggest_from_box(30, x=[0, 1], y=[-1, 0], z=[-1, 1])
  >>> solver = Sobol(**s)
docstr_tok: ["Create","a","configuration","for","a","Sobol","solver",".",":","param","num_evals",":","number","of","permitted","function","evaluations",":","type","num_evals",":","int",":","param","kwargs",":","box","constraints",":","type","kwargs",":","{","'param","'",":","[","lb",",","ub","]",",","...","}","Verify","that","we","can","effectively","make","a","solver","from","box",".",">",">",">","s","=","Sobol.suggest_from_box","(","30",",","x=","[","0",",","1","]",",","y=","[","-1",",","0","]",",","z=","[","-1",",","1","]",")",">",">",">","solver","=","Sobol","(","*","*","s",")"]
code: def suggest_from_box(num_evals, **kwargs):
      """Create a configuration for a Sobol solver.
  
      :param num_evals: number of permitted function evaluations
      :type num_evals: int
      :param kwargs: box constraints
      :type kwargs: {'param': [lb, ub], ...}
  
  
      Verify that we can effectively make a solver from box.
  
      >>> s = Sobol.suggest_from_box(30, x=[0, 1], y=[-1, 0], z=[-1, 1])
      >>> solver = Sobol(**s)
  
      """
      d = util.shrink_bounds(kwargs)
      d["num_evals"] = num_evals
      return d
  
imports: import math
  import operator
  import random
  import array
  import functools
  from ..functions import static_key_order
  from .solver_registry import register_solver
  from .util import Solver, _copydoc, uniform_in_bounds
  from .None import util
label_desc: Use image node_id 6 for calling the Sobol obj's underlying member method code with example usage: obj.suggest_from_box(num_evals) and returns: d