Skip to content

Commit fbb9674

Browse files
janosgclaude
andcommitted
Rewrite linear constraint consolidation on numpy
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>
1 parent b1b0a75 commit fbb9674

3 files changed

Lines changed: 682 additions & 207 deletions

File tree

0 commit comments

Comments
 (0)