def evaluator_creator(self, evaluator_type, acquisition, batch_size, model_type, model, space, acquisition_optimizer):
        """
        Acquisition chooser from the available options. Guide the optimization through sequential or parallel evalutions of the objective.
        """
        acquisition_transformation = self.kwargs.get('acquisition_transformation','none')

        if batch_size == 1 or evaluator_type == 'sequential':
            return Sequential(acquisition)

        elif batch_size >1 and (evaluator_type == 'random' or evaluator_type is  None):
            return RandomBatch(acquisition, batch_size)

        elif batch_size >1 and evaluator_type == 'thompson_sampling':
            return ThompsonBatch(acquisition, batch_size)

        elif evaluator_type == 'local_penalization':
            if model_type not in ['GP', 'sparseGP', 'GP_MCMC', 'warpedGP']:
                raise InvalidConfigError('local_penalization evaluator can only be used with GP models')

            if not isinstance(acquisition, AcquisitionLP):
                acquisition_lp = AcquisitionLP(model, space, acquisition_optimizer, acquisition, acquisition_transformation)
            return LocalPenalization(acquisition_lp, batch_size)
Acquisition chooser from the available options. Guide the optimization through sequential or parallel evalutions of the objective.