class_docstr: parallel mapped optimization starting from the centers of N grid points
      
class_docstr_tok: ["parallel","mapped","optimization","starting","from","the","centers","of","N","grid","points"]
docstr: Generate a grid of starting points for the ensemble of optimizers
docstr_tok: ["Generate","a","grid","of","starting","points","for","the","ensemble","of","optimizers"]
code: def _InitialPoints(self):
      """Generate a grid of starting points for the ensemble of optimizers"""
      nbins = self._nbins or self._npts
      if isinstance(nbins, int):
          from mystic.math.grid import randomly_bin
  
          nbins = randomly_bin(nbins, self.nDim, ones=True, exact=True)
      if len(self._strictMax):
          upper = list(self._strictMax)
      else:
          upper = list(self._defaultMax)
      if len(self._strictMin):
          lower = list(self._strictMin)
      else:
          lower = list(self._defaultMin)
  
      # generate arrays of points defining a grid in parameter space
      grid_dimensions = self.nDim
      bins = []
      for i in range(grid_dimensions):
          step = 1.0 * abs(upper[i] - lower[i]) / nbins[i]
          bins.append(
              [lower[i] + (j + 0.5) * step for j in range(nbins[i])]
          )
  
      # build a grid of starting points
      from mystic.math import gridpts
  
      return gridpts(bins, self._dist)
  
file_path: mystic/mystic/ensemble.py
imports: from mystic.tools import unpair
  from mystic.abstract_ensemble_solver import AbstractEnsembleSolver
label_desc: Use image node_id 2 for calling the LatticeSolver obj's underlying member method code with example usage: obj._InitialPoints() and returns: gridpts