def METHOD_NAME(search_space):
    combinations = {}
    for parameter in search_space.params:
        if parameter.type == INTEGER:
            combinations[parameter.name] = range(int(parameter.min), int(parameter.max)+1, int(parameter.step))
        elif parameter.type == DOUBLE:
            if parameter.step == "" or parameter.step is None:
                raise Exception(
                    "Param {} step is nil; For discrete search space, all parameters must include step".
                    format(parameter.name)
                )
            double_list = np.arange(float(parameter.min), float(parameter.max)+float(parameter.step),
                                    float(parameter.step))
            if double_list[-1] > float(parameter.max):
                double_list = double_list[:-1]
            combinations[parameter.name] = double_list
        elif parameter.type == CATEGORICAL or parameter.type == DISCRETE:
            combinations[parameter.name] = parameter.list
    return combinations