Skip to content

Is it possible to specify an outcome_constraint on ax_client.get_next_trial() with an exactly known (non-objective) outcome? #745

@sgbaird

Description

@sgbaird

#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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions