Skip to main content

oxiz_math/lp/
mod.rs

1//! Linear Programming and Mixed Integer Programming.
2
3#[allow(unused_imports)]
4use crate::prelude::*;
5
6pub mod basis_update;
7pub mod branch_cut;
8pub mod cutting_planes;
9pub mod cutting_planes_extended;
10pub mod dual_simplex;
11pub mod farkas;
12
13// Re-export main types explicitly to avoid ambiguous glob re-exports
14// (VarId, CuttingPlane, CutType are defined in multiple modules)
15pub use basis_update::{Basis, BasisUpdateConfig, BasisUpdateStats, BasisUpdater, EtaMatrix};
16pub use branch_cut::{
17    BranchCutConfig, BranchCutResult, BranchCutSolver, BranchCutStats, BranchingStrategy,
18    NodeSelection, VarType,
19};
20pub use cutting_planes::{CuttingPlaneConfig, CuttingPlaneGenerator, CuttingPlaneStats};
21pub use cutting_planes_extended::{
22    ExtendedCuttingPlaneGenerator, ExtendedCuttingPlanesConfig, ExtendedCuttingPlanesStats,
23};
24pub use dual_simplex::{DualSimplexResult, DualSimplexSolver, DualSimplexStats};
25pub use farkas::{FarkasCertificate, FarkasConfig, FarkasGenerator, FarkasStats, LinearConstraint};
26
27// Use the cutting_planes module's types as canonical
28pub use cutting_planes::{CutType, CuttingPlane};
29/// Variable identifier (shared across LP modules)
30pub type VarId = usize;
31/// Constraint identifier (for Farkas proofs)
32pub type ConstraintId = usize;