code: public static <MP extends Model.Parameters> Job<Grid> startGridSearch(
        final Key<Grid> destKey,
        final MP params,
        final Map<String, Object[]> hyperParams,
        final ModelParametersBuilderFactory<MP> paramsBuilderFactory,
        final HyperSpaceSearchCriteria searchCriteria) {
  
      return startGridSearch(
          destKey,
          BaseWalker.WalkerFactory.create(params, hyperParams, paramsBuilderFactory, searchCriteria)
      );
    }
docs: Start a new grid search job.  This is the method that gets called by GridSearchHandler.do_train().
  <p>
  This method launches a "classical" grid search traversing cartesian grid of parameters
  point-by-point, <b>or</b> a random hyperparameter search, depending on the value of the <i>strategy</i>
  parameter.
  
  @param destKey              A key to store result of grid search under.
  @param params               Default parameters for model builder. This object is used to create
  a specific model parameters for a combination of hyper parameters.
  @param hyperParams          A set of arrays of hyper parameter values, used to specify a simple
  fully-filled-in grid search.
  @param paramsBuilderFactory defines a strategy for creating a new model parameters based on
  common parameters and list of hyper-parameters
  @return GridSearch Job, with models run with these parameters, built as needed - expected to be
  an expensive operation.  If the models in question are "in progress", a 2nd build will NOT be
  kicked off.  This is a non-blocking call.