set_presolve
Specifies if a presolve must be done before solving.
void set_presolve(lprec *lp, int do_presolve);
Return Value
set_presolve has no return value.
Parameters
lp
Pointer to previously created lp model. See return value of
make_lp, read_lp,
read_LP, read_mps, read_freemps, read_MPS, read_freeMPS, read_XLI
do_presolve
Specifies presolve level. Can be the (OR) combination of any of
the following values:
| PRESOLVE_NONE (0) |
No presolve at all |
| PRESOLVE_ROWS (1) |
Presolve rows |
| PRESOLVE_COLS (2) |
Presolve columns |
| PRESOLVE_LINDEP (4) |
Eliminate linearly dependent rows |
| PRESOLVE_SOS (32) |
Convert constraints to SOSes (only SOS1 handled) |
| PRESOLVE_REDUCEMIP (64) |
If the phase 1 solution process finds that a constraint is redundant then this constraint is deleted |
| PRESOLVE_DUALS (128) |
Calculate duals |
| PRESOLVE_SENSDUALS (256) |
Calculate sensitivity if there are integer variables |
Remarks
The set_presolve function specifies if a presolve must be done before
solving. Presolve looks at the model and tries to simplify it so that solving
times are shorter. For example a constraint on only one variable is converted
to a bound on this variable (and the constraint is deleted). Note that the
model dimensions can change because of this, so be careful with this. Both rows
and columns can be deleted by the presolve.
Note that PRESOLVE_LINDEP can result in deletion of rows (the linear dependent ones).
get_constraints, get_ptr_constraints will then
return only the values of the rows that are kept and the values of the deleted rows
are not known anymore.
The default is not (PRESOLVE_NONE) doing a presolve.
Example
#include <stdio.h>
#include <stdlib.h>
#include "lp_lib.h"
int main(void)
{
lprec *lp;
/* Create a new LP model */
lp = make_lp(0, 0);
if(lp == NULL) {
fprintf(stderr, "Unable to create new LP model\n");
return(1);
}
set_presolve(lp, PRESOLVE_ROWS | PRESOLVE_COLS | PRESOLVE_LINDEP);
delete_lp(lp);
return(0);
}
lp_solve API reference
See Also make_lp,
read_lp, read_LP, read_mps,
read_freemps, read_MPS, read_freeMPS, read_XLI, get_presolve, is_presolve
|