lumix.solvers.ortools_solver.LXORToolsSolver¶
- class lumix.solvers.ortools_solver.LXORToolsSolver[source]¶
OR-Tools solver implementation for LumiX.
Supports: - Linear Programming (LP) - Mixed-Integer Programming (MIP) - Binary variables - Single and indexed variable families - Single and indexed constraint families - Multi-model expressions
TODO: Future improvements: - Quadratic objective support (if OR-Tools adds support) - SOS1/SOS2 constraints (native OR-Tools support available) - Indicator constraints (native OR-Tools support available) - Warm start from previous solution - Sensitivity analysis (dual values, reduced costs) - Parallel solving with threads parameter - Advanced solver parameters passthrough - Solution pool for MIP problems - Custom branching priorities - Lazy constraint callbacks (if OR-Tools adds support)
Methods
__init__()Initialize OR-Tools solver.
build_model(model)Build OR-Tools native model from LXModel.
Get underlying OR-Tools solver for advanced usage.
solve(model[, time_limit, gap_tolerance, ...])Solve optimization model with OR-Tools.
- build_model(model)[source]¶
Build OR-Tools native model from LXModel.
- Parameters:
model (
LXModel) – LumiX model to build- Return type:
Solver- Returns:
OR-Tools Solver instance
- Raises:
ValueError – If model contains unsupported features
- solve(model, time_limit=None, gap_tolerance=None, enable_sensitivity=False, **solver_params)[source]¶
Solve optimization model with OR-Tools.
- Parameters:
- Return type:
- Returns:
Solution object with results
- TODO: Add support for additional parameters:
threads: Number of parallel threads
presolve: Enable/disable presolve
log_level: Logging verbosity
solution_pool_size: Number of solutions to keep (MIP)
- get_solver_model()[source]¶
Get underlying OR-Tools solver for advanced usage.
- Return type:
Solver- Returns:
OR-Tools Solver instance
- Raises:
RuntimeError – If model hasn’t been built yet
Examples
# Access OR-Tools solver for advanced features solver = ortools_solver.get_solver_model() solver.EnableOutput() # Enable solver output solver.SetNumThreads(4) # Set thread count