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

Continuous inter-point constraints #345

Draft
wants to merge 13 commits into
base: main
Choose a base branch
from

Conversation

AVHopp
Copy link
Collaborator

@AVHopp AVHopp commented Aug 20, 2024

This PR introduces a first variant of inter-point constraints by using the botorch-provided interface.

Here, an inter-point constraint is a constraint that acts on a full batch instead of a single recommendation. If we think of a batch recommendation of a matrix with shape batches x features, then our previous constraints would be row-wise, while these constraints allow mixed constraints across both dimensions.

This PR introduces new classes, and these classes were modeled similar to the already existing classes for continuous constraints. Some things had to be changed though resp. we need to aware:

  1. Most importantly, the way of sampling points from a polytope. The reason is that get_polytope_samples is not made for including inter-point constraints, and hence a workaround was implemented. The workaround basically transforms the space in a one-dimensional space with batches * features many features, and then defines both normal and inter-point constraints over this space (see [Bug] get_polytope_samples fails for inequalities over q-batches and the actual dimension pytorch/botorch#2468). Note that this might interfere with Botorch with cardinality constraint via sampling #301 and that some alignment might be necessary.
  2. The constraints in this PR always combines full columns. That is, the constraints $x_1 <=1$ would be interpreted as "the sum of $x_1$ across the whole batch needs to be smaller than 1". This can e.g. be used to limit the usage of resources, like only having 100ml of a substance available for the full batch. Also, different columns can be combined, so having $x_2 + 2*x_3 <=100$ would mean "sum of $x_1$ plus two times the sum of $x_3$ across the batch has to be smaller than 100$.
  3. IMPORTANT Currently, the constraints are handled similar to how pending_experiments are handled due to a misunderstanding between me and @Scienfitz . This will be changed after we have aligned on how to handle inter-point constraints in general and this PR in particular.

@AVHopp AVHopp added the new feature New functionality label Aug 20, 2024
@AVHopp AVHopp self-assigned this Aug 20, 2024
@AVHopp AVHopp marked this pull request as draft August 20, 2024 12:36
@AVHopp AVHopp added the on hold PR progress is awaiting for something else to continue label Aug 21, 2024
@AVHopp
Copy link
Collaborator Author

AVHopp commented Aug 21, 2024

Note: This PR is currently on hold for two reasons:

  1. There was a misunderstanding between @AdrianSosic and me what "inter-point" constraint actually means, and incorporating the necessary changes might require some more redesign.
  2. There is another open PR which currently changes the behavior of get_polytope_samples, and that PR should be merged first.

@AVHopp AVHopp force-pushed the feature/interpoint_constraints branch from a5ed090 to 7cbb490 Compare September 18, 2024 11:47
@AVHopp AVHopp removed the on hold PR progress is awaiting for something else to continue label Sep 18, 2024
@AVHopp AVHopp marked this pull request as ready for review September 18, 2024 11:48
CHANGELOG.md Show resolved Hide resolved
@AVHopp AVHopp force-pushed the feature/interpoint_constraints branch from 7cbb490 to d5758c5 Compare September 27, 2024 13:51
CHANGELOG.md Show resolved Hide resolved
@AVHopp AVHopp marked this pull request as draft September 30, 2024 12:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
new feature New functionality
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant