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).
docstr: Plots the model and the acquisition function.
      if self.input_dim = 1: Plots data, mean and variance in one plot and the acquisition function in another plot
      if self.input_dim = 2: as before but it separates the mean and variance of the model in two different plots
  :param filename: name of the file where the plot is saved
  :param label_x: Graph's x-axis label, if None it is renamed to 'x' (1D) or 'X1' (2D)
  :param label_y: Graph's y-axis label, if None it is renamed to 'f(x)' (1D) or 'X2' (2D)
docstr_tok: ["Plots","the","model","and","the","acquisition","function",".","if","self.input_dim","=","1",":","Plots","data",",","mean","and","variance","in","one","plot","and","the","acquisition","function","in","another","plot","if","self.input_dim","=","2",":","as","before","but","it","separates","the","mean","and","variance","of","the","model","in","two","different","plots",":","param","filename",":","name","of","the","file","where","the","plot","is","saved",":","param","label_x",":","Graph","'s","x-axis","label",",","if","None","it","is","renamed","to","'","x","'","(","1D",")","or","'X1","'","(","2D",")",":","param","label_y",":","Graph","'s","y-axis","label",",","if","None","it","is","renamed","to","'","f","(","x",")","'","(","1D",")","or","'X2","'","(","2D",")"]
code: def plot_acquisition(self, filename=None, label_x=None, label_y=None):
      """
      Plots the model and the acquisition function.
          if self.input_dim = 1: Plots data, mean and variance in one plot and the acquisition function in another plot
          if self.input_dim = 2: as before but it separates the mean and variance of the model in two different plots
      :param filename: name of the file where the plot is saved
      :param label_x: Graph's x-axis label, if None it is renamed to 'x' (1D) or 'X1' (2D)
      :param label_y: Graph's y-axis label, if None it is renamed to 'f(x)' (1D) or 'X2' (2D)
      """
      if self.model.model is None:
          from copy import deepcopy
  
          model_to_plot = deepcopy(self.model)
          if self.normalize_Y:
              Y = normalize(self.Y, self.normalization_type)
          else:
              Y = self.Y
          model_to_plot.updateModel(self.X, Y, self.X, Y)
      else:
          model_to_plot = self.model
  
      return plot_acquisition(
          self.acquisition.space.get_bounds(),
          model_to_plot.model.X.shape[1],
          model_to_plot.model,
          model_to_plot.model.X,
          model_to_plot.model.Y,
          self.acquisition.acquisition_function,
          self.suggest_next_locations(),
          filename,
          label_x,
          label_y,
      )
  
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 11 for calling the BO obj's underlying member method code with example usage: obj.plot_acquisition(filename, label_x, label_y) and returns: plot_acquisition