struct_lpexact.h
Go to the documentation of this file.
72/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
98 * We store these values in each column to recover the LP solution at start of diving or probing mode, say, without
99 * having to resolve the LP. Note that we do not store the farkascoef value since we do expect a node with infeasible
106 unsigned int basisstatus:2; /**< basis status of column in last LP solution, invalid for non-LP columns */
110 * We store these values in each row to recover the LP solution at start of diving or probing mode, say, without having
111 * to resolve the LP. We do not store the dualfarkas value since we expect a node with infeasible LP to be pruned
117 SCIP_RATIONAL* activity; /**< row activity value in LP, or SCIP_INVALID if not yet calculated */
118 unsigned int basisstatus:2; /**< basis status of row in last LP solution, invalid for non-LP rows */
122 * We store these values to recover the exact LP solution at start of diving or probing mode, say, without having
138 * The row vector of the LP column is partitioned into two parts: The first col->nlprows rows in the rows array
139 * are the ones that belong to the current LP (col->rows[j]->lppos >= 0) and that are linked to the column
140 * (col->linkpos[j] >= 0). The remaining col->len - col->nlprows rows in the rows array are the ones that
141 * don't belong to the current LP (col->rows[j]->lppos == -1) or that are not linked to the column
148 SCIP_RATIONAL* obj; /**< current objective value of column in LP (might be changed in diving or probing) */
156 SCIP_RATIONAL* farkascoef; /**< coefficient in dual Farkas infeasibility proof (== dualfarkas^T A_c) */
157 SCIP_VAR* var; /**< variable, this column represents; there cannot be a column without variable */
161 SCIP_COLEXACTSOLVALS* storedsolvals; /**< values stored before entering diving or probing mode */
170 unsigned int basisstatus:2; /**< basis status of column in last LP solution, invalid for non-LP columns */
171 unsigned int lprowssorted:1; /**< are the linked LP rows in the rows array sorted by non-decreasing index? */
172 unsigned int nonlprowssorted:1; /**< are the non-LP/not linked rows sorted by non-decreasing index? */
173 unsigned int objchanged:1; /**< has objective value changed, and has data of LP solver to be updated? */
174 unsigned int lbchanged:1; /**< has lower bound changed, and has data of LP solver to be updated? */
175 unsigned int ubchanged:1; /**< has upper bound changed, and has data of LP solver to be updated? */
176 unsigned int coefchanged:1; /**< has the coefficient vector changed, and has LP solver to be updated? */
180 * The column vector of the LP row is partitioned into two parts: The first row->nlpcols columns in the cols array
181 * are the ones that belong to the current LP (row->cols[j]->lppos >= 0) and that are linked to the row
182 * (row->linkpos[j] >= 0). The remaining row->len - row->nlpcols columns in the cols array are the ones that
189 SCIP_ROW* fprowrhs; /**< if two rows are needed to make a relaxation of this row, this saves the rhs-part */
196 SCIP_RATIONAL* flushedlhs; /**< left hand side minus constant of row already flushed to the LP solver */
197 SCIP_RATIONAL* flushedrhs; /**< right hand side minus constant of row already flushed to the LP solver */
200 SCIP_RATIONAL* activity; /**< row activity value in LP, or SCIP_INVALID if not yet calculated */
202 SCIP_RATIONAL* pseudoactivity; /**< row activity value in pseudo solution, or SCIP_INVALID if not yet calculated */
204 SCIP_INTERVAL* valsinterval; /**< interval-array of coefficients rounded up and down, respectively */
205 SCIP_COLEXACT** cols; /**< columns of row entries, that may have a nonzero primal solution value */
206 SCIP_ROWEXACTSOLVALS* storedsolvals; /**< values stored before entering diving or probing mode */
219 unsigned int basisstatus:2; /**< basis status of row in last LP solution, invalid for non-LP rows */
220 unsigned int lpcolssorted:1; /**< are the linked LP columns in the cols array sorted by non-decreasing index? */
221 unsigned int nonlpcolssorted:1; /**< are the non-LP/not linked columns sorted by non-decreasing index? */
223 unsigned int lhschanged:1; /**< was left hand side or constant changed, and has LP solver to be updated? */
224 unsigned int rhschanged:1; /**< was right hand side or constant changed, and has LP solver to be updated? */
225 unsigned int coefchanged:1; /**< was the coefficient vector changed, and has LP solver to be updated? */
226 unsigned int integral:1; /**< is activity (without constant) of row always integral in feasible solution? */
228 unsigned int modifiable:1; /**< is row modifiable during node processing (subject to column generation)? */
230 unsigned int fprelaxable:1; /**< is it possible to make a fp-approximation of this row (only false if vars with both bounds inf present) */
240 SCIP_RATIONAL** violation; /**< needed on every iteration, so only construct once and possibly resize */
241 SCIP_RATIONAL** correction; /**< needed on every iteration, so only construct once and possibly resize */
242 int* includedrows; /**< 1 if constraints (or vars) dual variable is included in original S-interior point/ray */
243 int* projshiftbasis; /**< mapping for basis used in factorization (maps [1,...,|includedrows|] -> 2*nrows+2*ncols) */
252 unsigned int projshiftdatafail:1;/**< did the construction of the project-and-shift root node data fail? */
255 unsigned int projshiftobjweight:1;/**< weight of the original objective function in lp to compute interior point */
257 unsigned int projshiftuseintpoint:1;/**< should correction shift use an interior pt? (otherwise use interior ray of recession cone) */
265 SCIP_PROJSHIFTDATA* projshiftdata; /**< data stored for usage in project+shift, NULL if ps not used */
267 SCIP_RATIONAL* looseobjval; /**< current solution value of all loose variables set to their best bounds,
269 SCIP_RATIONAL* glbpseudoobjval; /**< global pseudo solution value with all variables set to their best global bounds,
271 SCIP_RATIONAL* pseudoobjval; /**< current pseudo solution value with all variables set to their best bounds,
274 SCIP_SIDETYPE* divechgsidetypes; /**< stores the side type of the changes done in the current diving */
278 SCIP_Real oldcutoffbound; /**< place to store cutoffbound if it gets relaxed/removed for safe bounding */
280 SCIP_LPISTATE* divelpistate; /**< stores LPI state (basis information) before exact diving starts */
288 SCIP_LPEXACTSOLVALS* storedsolvals; /**< collected values of the LP data which depend on the LP solution */
292 int lpifirstchgcol; /**< first column of the LP which differs from the column in the LP solver */
308 int looseobjvalinf; /**< number of loose variables with infinite best bound in current solution */
310 int glbpseudoobjvalinf; /**< number of variables with infinite best bound in global pseudo solution */
311 int pseudoobjvalinf; /**< number of variables with infinite best bound in current pseudo solution */
336 SCIP_Bool resolvelperror; /**< an error occured during resolving the LP after diving or probing */
341 SCIP_Bool forceexactsolve; /**< should the next safe bounding step be forced to solve the lp exactly? */
342 SCIP_Bool allowexactsolve; /**< is the next bounding call allowed to be an exact solve? (this should only happen for the last call at each node) */
343 SCIP_Bool diving; /**< LP is used for exact diving: col bounds and obj don't correspond to variables */
348 SCIP_Bool divingobjchg; /**< objective values were changed in diving or probing: LP objective is invalid */
349 SCIP_Bool forcesafebound; /**< should the next safe bounding step be forced to execute, even in probing/diving/etc? */
common defines and data types used in all packages of SCIP
interval arithmetics for provable bounds
wrapper for rational number arithmetic
public methods for exact solving
Definition: struct_lpexact.h:103
Definition: struct_lpexact.h:145
Definition: struct_lp.h:138
Definition: intervalarith.h:55
Definition: lpiexact_none.c:50
Definition: lpi_clp.cpp:133
Definition: struct_lpexact.h:126
Definition: struct_lpexact.h:263
Definition: struct_lp.h:275
Definition: struct_rational.h:47
Definition: struct_lpexact.h:115
Definition: struct_lpexact.h:187
Definition: struct_lp.h:205
Definition: struct_var.h:262
type definitions for managing events
type definitions for LP management
type definitions for exact LP management
type definitions for specific LP solvers interface
type definitions for specific exact LP solvers interface
type definitions for storing primal CIP solutions
type definitions for problem variables