Skip to content

[FEATURE REQUEST]: Extend project_to_feasibile_space_via_slsqp to nonlinear constraints #3280

@jduerholt

Description

@jduerholt

Motivation

I think it would make sense to extend project_to_feasibile_space_via_slsqp to nonlinear inequality constraints. Furthermore, it could make sense to change retry_on_optimization_warning from a bool to an int, so that more than one retry can be performed. What do you think?

Describe the solution you'd like to see implemented in BoTorch.

Regarding extending project_to_feasibile_space_via_slsqp:

  • Simple idea: just pass through the callables of the nonlinear constraints and directly hook them into the slsqp solver of scipy. In case that there is only a subtle constraint violation of the nonlinear ones and the starting point is close to the feasible region, I would hope that the sqlsqp solver would be able to find the feasible region.
  • More advanced idea: Linearize the nonlinear constraints via first order taylor expansions around the starting point, solve the problem for the linear constraints, check if nonlinear constraints are fulfilled, else iterate ...

Regarding retry_on_optimization_warning:

  • I would change the signature to Union[bool|int] = 1, which would amount to one restart, True would be mapped to 1 and False to zero.
  • And then I would introduce a while loop there instead of the single retry.

What is your opinion on this?

Describe any alternatives you've considered to the above solution.

No response

Is this related to an existing issue in BoTorch or another repository? If so please include links to those Issues here.

experimental-design/bofire#740

Pull Request

Yes

Code of Conduct

  • I agree to follow BoTorch's Code of Conduct

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

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