Google OR-Tools v9.11
a fast and portable software suite for combinatorial optimization
Loading...
Searching...
No Matches
operations_research::fz::Presolver Class Reference

#include <presolve.h>

Public Member Functions

 Presolver (SolverLogger *logger)
 
void Run (Model *model)
 

Detailed Description

The Presolver "pre-solves" a Model by applying some iterative transformations to it, which may simplify and/or shrink the model.

Todo
(user): Error reporting of unfeasible models.

Definition at line 38 of file presolve.h.

Constructor & Destructor Documentation

◆ Presolver()

operations_research::fz::Presolver::Presolver ( SolverLogger * logger)
inlineexplicit

Definition at line 40 of file presolve.h.

Member Function Documentation

◆ Run()

void operations_research::fz::Presolver::Run ( Model * model)

Recursively apply all the pre-solve rules to the model, until exhaustion. The reduced model will:

  • Have some unused variables.
  • Have some unused constraints (marked as inactive).
  • Have some modified constraints (for example, they will no longer refer to unused variables).

Should rewrite float constraints.

Treat float variables as int variables, convert constraints to int.

Regroup increasing sequence of int_lin_eq([1,..,1,-1], [x1, ..., xn, yn]) into sequence of int_plus(x1, x2, y2), int_plus(y2, x3, y3)...

Rewrite ct into int_plus.

We clean the first constraint too.

First pass.

Some new substitutions were introduced. Let's process them.

Second pass.

Third pass: process objective with floating point coefficients.

Report presolve rules statistics.

Definition at line 380 of file presolve.cc.


The documentation for this class was generated from the following files: