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
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"]