#273 seems very relevant to this. For my use-case #727, I've thought about having:
import pandas as pd
outcome_constraints = ["n_components <= 8.0"]
to constrain a compositional formula to have no more than 8 components above some low threshold (e.g. 1e-3). In my case, n_components is calculated very simply (and exactly) using only the parameters. For example:
def count_nonzero_components(parameters, tol=1e-3):
df = pd.DataFrame(parameters)
df[df < tol] = 0.0
n_components = np.count_nonzero(df, axis=1)
return n_components
However, the first outcome (the objective) is not known a-priori and can only really be sampled via wet-lab synthesis. In #273, it seems like the outcome constraint metric is being estimated from the GP model (I could be wrong on this). Is there a way to "tell" ax_client.get_next_trial() that n_components = count_nonzero_components(parameters) and that n_components <= 8.0?
I've been digging through custom generation strategies and custom acquisition functions #278, but without much luck so far. Similar to #278, I'm also using the Service API.
#273 seems very relevant to this. For my use-case #727, I've thought about having:
to constrain a compositional formula to have no more than
8components above some low threshold (e.g.1e-3). In my case,n_componentsis calculated very simply (and exactly) using only the parameters. For example:However, the first outcome (the
objective) is not known a-priori and can only really be sampled via wet-lab synthesis. In #273, it seems like the outcome constraint metric is being estimated from the GP model (I could be wrong on this). Is there a way to "tell"ax_client.get_next_trial()thatn_components = count_nonzero_components(parameters)and thatn_components <= 8.0?I've been digging through custom generation strategies and custom acquisition functions #278, but without much luck so far. Similar to #278, I'm also using the Service API.