def selection(acquisition_function,
              samples_y_aggregation,
              x_bounds, x_types,
              regressor_gp,
              minimize_starting_points,
              minimize_constraints_fun=None):
    '''
    selection
    '''
    outputs = None

    sys.stderr.write("[%s] Exercise \"%s\" acquisition function\n" \
                        % (os.path.basename(__file__), acquisition_function))

    if acquisition_function == "ei":
        outputs = lib_acquisition_function.next_hyperparameter_expected_improvement(\
                        gp_prediction.predict, [regressor_gp], x_bounds, x_types, \
                        samples_y_aggregation, minimize_starting_points, \
                        minimize_constraints_fun=minimize_constraints_fun)
    elif acquisition_function == "lc":
        outputs = lib_acquisition_function.next_hyperparameter_lowest_confidence(\
                        gp_prediction.predict, [regressor_gp], x_bounds, x_types,\
                        minimize_starting_points, minimize_constraints_fun=minimize_constraints_fun)
    elif acquisition_function == "lm":
        outputs = lib_acquisition_function.next_hyperparameter_lowest_mu(\
                        gp_prediction.predict, [regressor_gp], x_bounds, x_types,\
                        minimize_starting_points, minimize_constraints_fun=minimize_constraints_fun)
    return outputs
selection