def METHOD_NAME(cls, algorithm_settings):
    for s in algorithm_settings:
        try:
            if s.name == "base_estimator":
                if s.value not in ["GP", "RF", "ET", "GBRT"]:
                    return False, "base_estimator {} is not supported in Bayesian optimization".format(s.value)
            elif s.name == "n_initial_points":
                if not (int(s.value) >= 0):
                    return False, "n_initial_points should be great or equal than zero"
            elif s.name == "acq_func":
                if s.value not in ["gp_hedge", "LCB", "EI", "PI", "EIps", "PIps"]:
                    return False, "acq_func {} is not supported in Bayesian optimization".format(s.value)
            elif s.name == "acq_optimizer":
                if s.value not in ["auto", "sampling", "lbfgs"]:
                    return False, "acq_optimizer {} is not supported in Bayesian optimization".format(s.value)
            elif s.name == "random_state":
                if not (int(s.value) >= 0):
                    return False, "random_state should be great or equal than zero"
            else:
                return False, "unknown setting {} for algorithm bayesianoptimization".format(s.name)
        except Exception as e:
            return False, "failed to validate {name}({value}): {exception}".format(name=s.name, value=s.value,
                                                                                   exception=e)
    return True, ""