Пример #1
0
def test_shiwa_selection(name: str, param: tp.Any, budget: int, num_workers: int, expected: str, caplog: tp.Any) -> None:
    with caplog.at_level(logging.DEBUG, logger="nevergrad.optimization.optimizerlib"):
        optlib.registry[name](param, budget=budget, num_workers=num_workers).optim  # type: ignore
        pattern = rf".*{name} selected (?P<name>\w+?) optimizer\."
        match = re.match(pattern, caplog.text.splitlines()[-1])
        assert match is not None, f"Did not detect selection in logs: {caplog.text}"
        assert match.group("name") == expected
Пример #2
0
def test_ngopt_selection(name: str, param: tp.Any, budget: int,
                         num_workers: int, expected: str,
                         caplog: tp.Any) -> None:
    with caplog.at_level(logging.DEBUG,
                         logger="nevergrad.optimization.optimizerlib"):
        # pylint: disable=expression-not-assigned
        opt = optlib.registry[name](param,
                                    budget=budget,
                                    num_workers=num_workers)
        # pylint: disable=pointless-statement
        opt.optim  # type: ignore
        pattern = rf".*{name} selected (?P<name>\w+?) optimizer\."
        match = re.match(pattern, caplog.text.splitlines()[-1])
        assert match is not None, f"Did not detect selection in logs: {caplog.text}"
        choice = match.group("name")
        if expected != "#CONTINUOUS":
            assert choice == expected
        else:
            print(
                f"Continuous param={param} budget={budget} workers={num_workers} --> {choice}"
            )
            if num_workers >= budget and budget > 600:
                assert choice == "MetaTuneRecentering"
            if num_workers > 1:
                assert choice not in ["SQP", "Cobyla"]
        assert choice == opt._info()["sub-optim"]