Support equality parameter constraints in ParameterConstraint (#5173)#5173
Closed
sdaulton wants to merge 1 commit intofacebook:mainfrom
Closed
Support equality parameter constraints in ParameterConstraint (#5173)#5173sdaulton wants to merge 1 commit intofacebook:mainfrom
sdaulton wants to merge 1 commit intofacebook:mainfrom
Conversation
|
@sdaulton has exported this pull request. If you are a Meta employee, you can view the originating Diff in D100256486. |
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 17, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 17, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 17, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 17, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 17, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 17, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 17, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
e4fc701 to
c6e1bbd
Compare
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 17, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
c6e1bbd to
c8ca3e7
Compare
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 17, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 17, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 17, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 17, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 17, 2026
…ok#5173) Summary: Pull Request resolved: facebook#5173 Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
274d6a1 to
d2a769b
Compare
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 17, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 17, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 17, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 17, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 17, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 17, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 17, 2026
…ok#5173) Summary: Pull Request resolved: facebook#5173 Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
d2a769b to
07c9408
Compare
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #5173 +/- ##
=======================================
Coverage 96.41% 96.41%
=======================================
Files 618 619 +1
Lines 68882 68977 +95
=======================================
+ Hits 66410 66502 +92
- Misses 2472 2475 +3 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 17, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
07c9408 to
00b6386
Compare
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 20, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 20, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 20, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 20, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
00b6386 to
9973f49
Compare
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 20, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 20, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
9973f49 to
63ef758
Compare
…ok#5173) Summary: Pull Request resolved: facebook#5173 Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
63ef758 to
c79225c
Compare
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 20, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
sdaulton
added a commit
to sdaulton/Ax-1
that referenced
this pull request
Apr 20, 2026
…ok#5173) Summary: Add support for linear equality constraints (`w^T x == b`) alongside existing inequality constraints (`w^T x <= b`) in Ax's `ParameterConstraint` class. This is the first diff in a stack that threads equality constraints all the way down to BoTorch's `optimize_acqf`. Changes: - Add `extract_coefficient_dict_from_equality` to `ax/utils/common/sympy.py` for parsing `"expr == bound"` strings (SymPy can't parse `==` directly since Python evaluates it as a boolean). - Extend `ParameterConstraint.__init__` to accept `equality=` kwarg alongside existing `inequality=` kwarg. Exactly one must be provided. - Add `is_equality` property. - Update `check()` to use `|w^T x - b| <= tol` for equality constraints. - Update `__repr__`, `clone()`, `clone_with_transformed_parameters()`. - Add comprehensive tests for equality constraints. Reviewed By: esantorella Differential Revision: D100256486
|
This pull request has been merged in b932dc9. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary:
Add support for linear equality constraints (
w^T x == b) alongsideexisting inequality constraints (
w^T x <= b) in Ax'sParameterConstraintclass. This is the first diff in a stack thatthreads equality constraints all the way down to BoTorch's
optimize_acqf.Changes:
extract_coefficient_dict_from_equalitytoax/utils/common/sympy.pyfor parsing
"expr == bound"strings (SymPy can't parse==directlysince Python evaluates it as a boolean).
ParameterConstraint.__init__to acceptequality=kwargalongside existing
inequality=kwarg. Exactly one must be provided.is_equalityproperty.check()to use|w^T x - b| <= tolfor equality constraints.__repr__,clone(),clone_with_transformed_parameters().Reviewed By: esantorella
Differential Revision: D100256486