2022-01-14 13:39:09 -08:00
|
|
|
def test_config_constraint():
|
|
|
|
|
from flaml import tune
|
|
|
|
|
|
|
|
|
|
# Test dict return value
|
|
|
|
|
def evaluate_config_dict(config):
|
|
|
|
|
metric = (round(config["x"]) - 85000) ** 2 - config["x"] / config["y"]
|
|
|
|
|
return {"metric": metric}
|
|
|
|
|
|
|
|
|
|
def config_constraint(config):
|
|
|
|
|
if config["y"] >= config["x"]:
|
|
|
|
|
return 1
|
|
|
|
|
else:
|
|
|
|
|
return 0
|
|
|
|
|
|
2022-08-15 05:30:23 -07:00
|
|
|
analysis = tune.run(
|
2022-01-14 13:39:09 -08:00
|
|
|
evaluate_config_dict,
|
|
|
|
|
config={
|
|
|
|
|
"x": tune.qloguniform(lower=1, upper=100000, q=1),
|
|
|
|
|
"y": tune.qrandint(lower=2, upper=100000, q=2),
|
|
|
|
|
},
|
2022-08-15 05:30:23 -07:00
|
|
|
config_constraints=[(config_constraint, "<", 0.5)],
|
2022-01-14 13:39:09 -08:00
|
|
|
metric="metric",
|
|
|
|
|
mode="max",
|
|
|
|
|
num_samples=100,
|
2022-08-15 06:15:31 -07:00
|
|
|
log_file_name="logs/config_constraint.log",
|
2022-01-14 13:39:09 -08:00
|
|
|
)
|
2022-08-15 05:30:23 -07:00
|
|
|
|
|
|
|
|
assert analysis.best_config["x"] > analysis.best_config["y"]
|
|
|
|
|
assert analysis.trials[0].config["x"] > analysis.trials[0].config["y"]
|