Beispiel #1
0
def rung_4(space1: Space):
    """Create duplicated fake points and objectives for rung 4."""
    points = np.linspace(1, 4, 4)
    keys = list(space1.keys())
    types = [dim.type for dim in space1.values()]

    results: dict[str, tuple[float, Trial]] = {}
    for point in points:
        trial = create_trial(
            (1, point // 2, point // 2),
            names=keys,
            results={"objective": point},
            types=types,
        )

        trial_hash = trial.compute_trial_hash(
            trial,
            ignore_fidelity=True,
            ignore_experiment=True,
        )
        assert trial.objective is not None
        results[trial_hash] = (trial.objective.value, trial)

    return RungDict(
        n_trials=4,
        resources=1,
        results=results,
    )
Beispiel #2
0
def generate_trials(olh_samples: np.array, roi_space: Space) -> list[dict]:
    """
    Generates trials from the given normalized orthogonal Latin hypercube samples

    Parameters
    ----------
    olh_samples: `numpy.array`
        Samples from the orthogonal Latin hypercube
    roi_space: orion.algo.space.Space
        Parameter space region-of-interest

    Returns
    -------
    A list of trials as `dict` objects, each a list of parameter values in the
        original search space
    """

    trials = []
    for sample in olh_samples:
        trial_dict = {}
        for j, param_name in enumerate(roi_space.keys()):
            interval_min, interval_max = roi_space[param_name].interval()
            # TODO: deal with categoricals
            trial_dict[param_name] = (sample[j] *
                                      (interval_max - interval_min) +
                                      interval_min)
        trials.append(trial_dict)
    return trials
Beispiel #3
0
    def test_order(self):
        """Test that the same space built twice will have the same ordering."""
        space1 = Space()
        space1.register(Integer('yolo1', 'uniform', -3, 6, shape=(2, )))
        space1.register(Integer('yolo2', 'uniform', -3, 6, shape=(2, )))
        space1.register(Real('yolo3', 'norm', 0.9))
        space1.register(Categorical('yolo4', ('asdfa', 2)))

        space2 = Space()
        space2.register(Integer('yolo1', 'uniform', -3, 6, shape=(2, )))
        space2.register(Real('yolo3', 'norm', 0.9))
        space2.register(Categorical('yolo4', ('asdfa', 2)))
        space2.register(Integer('yolo2', 'uniform', -3, 6, shape=(2, )))

        assert list(space1) == list(space1.keys())
        assert list(space2) == list(space2.keys())
        assert list(space1.values()) == list(space2.values())
        assert list(space1.items()) == list(space2.items())
        assert list(space1.keys()) == list(space2.keys())
        assert list(space1.values()) == list(space2.values())
        assert list(space1.items()) == list(space2.items())
Beispiel #4
0
    def test_order(self):
        """Test that the same space built twice will have the same ordering."""
        space1 = Space()
        space1.register(Integer("yolo1", "uniform", -3, 6, shape=(2,)))
        space1.register(Integer("yolo2", "uniform", -3, 6, shape=(2,)))
        space1.register(Real("yolo3", "norm", 0.9))
        space1.register(Categorical("yolo4", ("asdfa", 2)))

        space2 = Space()
        space2.register(Integer("yolo1", "uniform", -3, 6, shape=(2,)))
        space2.register(Real("yolo3", "norm", 0.9))
        space2.register(Categorical("yolo4", ("asdfa", 2)))
        space2.register(Integer("yolo2", "uniform", -3, 6, shape=(2,)))

        assert list(space1) == list(space1.keys())
        assert list(space2) == list(space2.keys())
        assert list(space1.values()) == list(space2.values())
        assert list(space1.items()) == list(space2.items())
        assert list(space1.keys()) == list(space2.keys())
        assert list(space1.values()) == list(space2.values())
        assert list(space1.items()) == list(space2.items())
Beispiel #5
0
def get_factorial_performance_analysis(oa_table: pd.DataFrame, space: Space,
                                       n_levels: int) -> pd.DataFrame:
    """Compute the factorial perfomance analysis"""
    levels = list(range(1, n_levels + 1))
    factorial_performance_analysis = [[level] for level in levels]
    for key in space.keys():
        marginal_means = (oa_table[[key, "objective"
                                    ]].groupby([key]).mean().reset_index())
        dim_levels = set(levels)
        for _, row in marginal_means.iterrows():
            dim_level = int(row[key])
            factorial_performance_analysis[dim_level - 1].append(
                row["objective"])
            dim_levels.remove(dim_level)

        for remaining_level in dim_levels:
            factorial_performance_analysis[remaining_level - 1].append(
                float("inf"))

    return pd.DataFrame(factorial_performance_analysis,
                        columns=["level"] + list(space.keys()))