Rewrite linear constraint consolidation on numpy#689
Open
janosg wants to merge 1 commit into
Open
Conversation
Shape-preserving rewrite of the pandas based linear consolidation machinery: - _consolidate_linear_constraints now works on a dense numpy weight matrix and three aligned rhs arrays instead of weights/rhs DataFrames. Every pandas helper has a 1:1 numpy replacement with identical semantics, including first-occurrence order of deduplicated rows (the internal parametrization depends on row order), lower/upper bound swaps under negative rescaling factors, and grouping of rows that only differ in the sign of a zero. - The right_hand_side DataFrame in the consolidated linear constraints is replaced by the frozen LinearRightHandSide dataclass. - _process_linear_weights is deleted: weights are aligned ndarrays since the typed resolution stage, so the pd.Series wrapping had no remaining purpose. - Linear constraints no longer get their index rewritten in _plug_equality_constraints_into_selectors. The rewritten index was unused in the pandas implementation (weights carried their own positions) but would have corrupted the numpy weight scatter. Caught by the characterization harness. A differential test runs the rewrite against a verbatim copy of the pandas implementation on 200 randomized scenarios (overlapping bundles, fixes, equalities, bounds, negative and duplicate weights, conflicting fixed values) and asserts numerically identical outputs and error parity. It is deleted at the end of the refactoring. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests.
🚀 New features to boost your workflow:
|
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.
Rewrite of the pandas based linear consolidation machinery:
A differential test runs the rewrite against a verbatim copy of the pandas implementation on 200 randomized scenarios (overlapping bundles, fixes, equalities, bounds, negative and duplicate weights, conflicting fixed values) and asserts numerically identical outputs and error parity. It is deleted at the end of the refactoring.