/** * @file src/tableau/presolve.ts * @description Problem preprocessing for LP/MIP * * Applies reductions before solving to simplify the problem: * - Fix variables with equal bounds * - Detect singleton rows (single-variable constraints) * - Tighten variable bounds from constraint coefficients * - Remove redundant constraints * * Based on techniques from COIN-OR CBC, CPLEX, and Gurobi. */ import type Model from "../model"; import type { Variable, Constraint } from "../expressions"; export interface PresolveResult { fixedVariables: Map; removedConstraints: Set; tightenedBounds: Map; isInfeasible: boolean; stats: { variablesFixed: number; constraintsRemoved: number; boundsTightened: number; }; } /** * Presolve reductions for Mixed Integer Programs. * Based on techniques from COIN-OR CBC, CPLEX, and Gurobi. * * Key techniques: * 1. Fixed variable removal * 2. Singleton row detection * 3. Bound tightening * 4. Redundant constraint removal * 5. Probing (for binary variables) * 6. Coefficient tightening */ export declare function presolve(model: Model): PresolveResult;