[GENERAL SUPPORT]: SEBO with parameter constraints #2790
Open
Description
Question
I am trying the predict chemical reaction rates in different solvent combinations. I want to use SEBO because the parameter space can contain upto 30 solvents and in most cases the there are only 3 to 4 important solvents. Since, it is a composition problem, I need to use parameter constraints. But SEBO with parameter constraint is not implemented in Ax. Can you suggest me a work around?
I have added a code snippet of the generation strategy and experiment section.
Please provide any relevant code snippet if applicable.
length = len(solvent_names_minus1)
print('length', length)
torch.manual_seed(12345) # To always get the same Sobol points
tkwargs = {
"dtype": torch.double,
"device": torch.device("cuda" if torch.cuda.is_available() else "cpu"),
}
target_point = torch.tensor([0 for _ in range(length)], **tkwargs)
print('target_point', target_point)
SURROGATE_CLASS = SaasFullyBayesianSingleTaskGP
ax_client.create_experiment(
name="solventproject",
parameters=[
{
"name": solvent_names_minus1[i],
"type": "range",
"bounds": [float(range_min_minus1[i]), float(range_max_minus1[i])],
"value_type": "float", # Optional, defaults to inference from type of "bounds".
"log_scale": False, # Optional, defaults to False.
}
for i in range(len(solvent_names_minus1))
],
objectives={"blend_score": ObjectiveProperties(minimize=False)},
parameter_constraints=[sum_str], # Optional.
outcome_constraints=["lnorm <= 0.00"], # Optional.
)
gs = GenerationStrategy(
name="SEBO_L0",
steps=[
GenerationStep( # BayesOpt step
model=Models.BOTORCH_MODULAR,
# No limit on how many generator runs will be produced
num_trials=-1,
model_kwargs={ # Kwargs to pass to `BoTorchModel.__init__`
"surrogate": Surrogate(botorch_model_class=SURROGATE_CLASS),
"acquisition_class": SEBOAcquisition,
"botorch_acqf_class": qNoisyExpectedHypervolumeImprovement,
"acquisition_options": {
"penalty": "L0_norm", # it can be L0_norm or L1_norm.
"target_point": target_point,
"sparsity_threshold": length,
},
},
)
]
)
Code of Conduct
- I agree to follow this Ax's Code of Conduct