Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Questions about multi-objective optimization. #185

Closed
showgood163 opened this issue Oct 15, 2019 · 2 comments
Closed

Questions about multi-objective optimization. #185

showgood163 opened this issue Oct 15, 2019 · 2 comments

Comments

@showgood163
Copy link

showgood163 commented Oct 15, 2019

Hi, newbie here!

I have a question about Multi-objective optimization mentioned here.

Does Ax have the ability to simultaneously optimize more than one objectives? If so, how do I achieve that? Is there any suggestions/tutorials?

@BCJuan
Copy link

BCJuan commented Oct 21, 2019

Hi,

There is an objetive function class named ScalarizedObjective in ax.core.objective which allows to establish several metrics and the weights of each.

https://ax.dev/api/core.html?highlight=scalarized%20objective#ax.core.objective.ScalarizedObjective

Indeed, you could also change the weights of each of the objectives whenever you desired to by accessing them from the experiment configuration in the squence generator or in the experiment directly. Take a look to the "Human in the loop tutorial" to see the change in action.

In the tutorial:

constraint_5 = OutcomeConstraint(metric=constraint_metric, op=ComparisonOp.LEQ, bound=5)
constraint_5_results = gp.gen(
    n=3, 
    optimization_config=OptimizationConfig(
        objective=Objective(objective_metric),
        outcome_constraints=[constraint_5]
    )
)

where they change the objective for the generator of new points to evaluate.

@sdsingh
Copy link
Contributor

sdsingh commented Oct 29, 2019

Hey there! Thanks for the answer, @BCJuan!

Typically, our users deal with multiple-objective optimization by specifying both an Objective and a series of OutcomeConstraints. The "Human in the loop tutorial" demonstrates how one can set and adjust OutcomeConstraints/Objectives to obtain a different set of results.

In that tutorial, we don't actually use ScalarizedObjective. Typically, users find it difficult to come up with a single scalarization of their multi-objective problem, and thus prefer the Objective + OutcomeConstraint formulation.

If you would prefer to use ScalarizedObjective, you could attempt to change the weights within the objective, and repeatedly generate candidates, in a similar fashion to the tutorial.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants