class_docstr: Runner of Bayesian optimization loop. This class wraps the optimization loop around the different handlers.
  :param model: GPyOpt model class.
  :param space: GPyOpt space class.
  :param objective: GPyOpt objective class.
  :param acquisition: GPyOpt acquisition class.
  :param evaluator: GPyOpt evaluator class.
  :param X_init: 2d numpy array containing the initial inputs (one per row) of the model.
  :param Y_init: 2d numpy array containing the initial outputs (one per row) of the model.
  :param cost: GPyOpt cost class (default, none).
  :param normalize_Y: whether to normalize the outputs before performing any optimization (default, True).
  :param model_update_interval: interval of collected observations after which the model is updated (default, 1).
  :param de_duplication: GPyOpt DuplicateManager class. Avoids re-evaluating the objective at previous, pending or infeasible locations (default, False).
class_docstr_tok: ["Runner","of","Bayesian","optimization","loop",".","This","class","wraps","the","optimization","loop","around","the","different","handlers",".",":","param","model",":","GPyOpt","model","class",".",":","param","space",":","GPyOpt","space","class",".",":","param","objective",":","GPyOpt","objective","class",".",":","param","acquisition",":","GPyOpt","acquisition","class",".",":","param","evaluator",":","GPyOpt","evaluator","class",".",":","param","X_init",":","2d","numpy","array","containing","the","initial","inputs","(","one","per","row",")","of","the","model",".",":","param","Y_init",":","2d","numpy","array","containing","the","initial","outputs","(","one","per","row",")","of","the","model",".",":","param","cost",":","GPyOpt","cost","class","(","default",",","none",")",".",":","param","normalize_Y",":","whether","to","normalize","the","outputs","before","performing","any","optimization","(","default",",","True",")",".",":","param","model_update_interval",":","interval","of","collected","observations","after","which","the","model","is","updated","(","default",",","1",")",".",":","param","de_duplication",":","GPyOpt","DuplicateManager","class",".","Avoids","re-evaluating","the","objective","at","previous",",","pending","or","infeasible","locations","(","default",",","False",")","."]
docstr: Run a single optimization step and return the next locations to evaluate the objective.
  Number of suggested locations equals to batch_size.
  
  :param context: fixes specified variables to a particular context (values) for the optimization run (default, None).
  :param pending_X: matrix of input configurations that are in a pending state (i.e., do not have an evaluation yet) (default, None).
  :param ignored_X: matrix of input configurations that the user black-lists, i.e., those configurations will not be suggested again (default, None).
docstr_tok: ["Run","a","single","optimization","step","and","return","the","next","locations","to","evaluate","the","objective",".","Number","of","suggested","locations","equals","to","batch_size",".",":","param","context",":","fixes","specified","variables","to","a","particular","context","(","values",")","for","the","optimization","run","(","default",",","None",")",".",":","param","pending_X",":","matrix","of","input","configurations","that","are","in","a","pending","state","(","i.e.",",","do","not","have","an","evaluation","yet",")","(","default",",","None",")",".",":","param","ignored_X",":","matrix","of","input","configurations","that","the","user","black-lists",",","i.e.",",","those","configurations","will","not","be","suggested","again","(","default",",","None",")","."]
code: def suggest_next_locations(
      self, context=None, pending_X=None, ignored_X=None
  ):
      """
      Run a single optimization step and return the next locations to evaluate the objective.
      Number of suggested locations equals to batch_size.
  
      :param context: fixes specified variables to a particular context (values) for the optimization run (default, None).
      :param pending_X: matrix of input configurations that are in a pending state (i.e., do not have an evaluation yet) (default, None).
      :param ignored_X: matrix of input configurations that the user black-lists, i.e., those configurations will not be suggested again (default, None).
      """
      self.model_parameters_iterations = None
      self.num_acquisitions = 0
      self.context = context
      self._update_model(self.normalization_type)
  
      suggested_locations = self._compute_next_evaluations(
          pending_zipped_X=pending_X, ignored_zipped_X=ignored_X
      )
  
      return suggested_locations
  
imports: import GPyOpt
  import collections
  import numpy
  import time
  import csv
  import logging
  from ..util.general import best_value, normalize
  from ..util.duplicate_manager import DuplicateManager
  from ..core.errors import InvalidConfigError
  from ..core.task.cost import CostModel
  from ..optimization.acquisition_optimizer import ContextManager
label_desc: Use image node_id 2 for calling the BO obj's underlying member method code with example usage: obj.suggest_next_locations(context, pending_X, ignored_X) and returns: suggested_locations