lpexact.h
Go to the documentation of this file.
31/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
206/** calculates the Farkas coefficient or reduced cost of a column i using the given dual Farkas vector y */
234 * @note This may change the floating-point coefficients slightly if the rational representation is rounded to smaller
270/** ensures all rows/columns are correctly updated, but changes are not yet communicated to the exact LP solver */
282/** returns whether the success rate of the Neumaier-Shcherbina safe bounding method is sufficiently high */
442/** returns the feasibility of a row in the current LP solution: negative value means infeasibility */
451/** returns the pseudo feasibility of a row in the current pseudo solution: negative value means infeasibility */
524/** updates current pseudo and loose objective value for a change in a variable's objective value */
533/** updates current root pseudo objective value for a global change in a variable's lower bound */
551/** updates current root pseudo objective value for a global change in a variable's upper bound */
611 SCIP_Bool* primalfeasible, /**< pointer to store whether the solution is primal feasible, or NULL */
612 SCIP_Bool* dualfeasible, /**< pointer to store whether the solution is dual feasible, or NULL */
613 SCIP_Bool overwritefplp /**< should the floating point values be overwritten, e.g. if fp lp was infeasible */
621 SCIP_Bool* primalfeasible, /**< pointer to store whether the solution is primal feasible, or NULL */
622 SCIP_Bool* rayfeasible /**< pointer to store whether the primal ray is a feasible unboundedness proof, or NULL */
629 SCIP_RATIONAL** ray /**< array for storing primal ray values, they are stored w.r.t. the problem index of the variables,
636 * @note The Farkas proof is checked for validity if lp/checkfarkas = TRUE and @p valid is not NULL.
643 SCIP_Bool overwritefplp /**< should the floating point values be overwritten, e.g. if fp lp was infeasible */
654 * @note This method returns the objective value of the current LP solution, which might be primal or dual infeasible
655 * if a limit was hit during solving. It must not be used as a dual bound if the LP solution status is
664/** gets the pseudo objective value for the current search node; that is all variables set to their best (w.r.t. the
696/** resets the LP to the empty LP by removing all columns and rows from LP, releasing all rows, and flushing the
730 SCIP_Bool allowexact /**< TRUE if next safe bounding call should be allowed to be exact, FALSE otherwise */
775 SCIP_Bool wasprimchecked, /**< true if the LP solution has passed the primal feasibility check */
787/** starts exact LP diving and saves bounds and objective values of columns to the current nodes's values */
795/** quits exact LP diving and resets bounds and objective values of columns to the current node's values */
common defines and data types used in all packages of SCIP
SCIP_Bool SCIPlpExactProjectShiftPossible(SCIP_LPEXACT *lpexact)
Definition: lpexact.c:3909
void SCIProwExactRecalcLPActivity(SCIP_ROWEXACT *rowexact, SCIP_STAT *stat)
Definition: lpexact.c:5891
SCIP_RETCODE SCIProwExactGetSolFeasibility(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_RATIONAL *result)
Definition: lpexact.c:5446
SCIP_RETCODE SCIPlpExactShrinkRows(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, int newnrows)
Definition: lpexact.c:7503
void SCIPlpExactOverwriteFpDualSol(SCIP_LPEXACT *lpexact, SCIP_Bool dualfarkas)
Definition: lpexact.c:8449
SCIP_Bool SCIProwExactIsModifiable(SCIP_ROWEXACT *row)
Definition: lpexact.c:5046
SCIP_RETCODE SCIPlpExactFreeState(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
Definition: lpexact.c:8160
SCIP_RETCODE SCIPlpExactReset(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue)
Definition: lpexact.c:7550
void SCIPlpExactForceExactSolve(SCIP_LPEXACT *lpexact, SCIP_SET *set)
Definition: lpexact.c:7598
SCIP_RETCODE SCIPlpExactGetSol(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *primalfeasible, SCIP_Bool *dualfeasible, SCIP_Bool overwritefplp)
Definition: lpexact.c:6853
SCIP_RETCODE SCIPlpExactLink(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
Definition: lpexact.c:3711
SCIP_RETCODE SCIPlpExactSetState(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPISTATE *lpistate, SCIP_Bool wasprimfeas, SCIP_Bool wasprimchecked, SCIP_Bool wasdualfeas, SCIP_Bool wasdualchecked)
Definition: lpexact.c:8118
SCIP_RETCODE SCIProwExactFree(SCIP_ROWEXACT **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LPEXACT *lpexact)
Definition: lpexact.c:5610
SCIP_RETCODE SCIPlpExactSolveAndEval(SCIP_LPEXACT *lpexact, SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_Longint itlim, SCIP_Bool *lperror, SCIP_Bool usefarkas)
Definition: lpexact.c:4477
SCIP_RETCODE SCIPlpExactUpdateDelVar(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var)
Definition: lpexact.c:6634
SCIP_RETCODE SCIPcolExactDelCoef(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_ROWEXACT *row)
Definition: lpexact.c:2852
SCIP_RETCODE SCIPlpExactDelRowset(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, int *rowdstat)
Definition: lpexact.c:2643
SCIP_RATIONAL * SCIProwExactGetLPActivity(SCIP_ROWEXACT *row, SCIP_STAT *stat, SCIP_LPEXACT *lpexact)
Definition: lpexact.c:5713
SCIP_RETCODE SCIProwExactGetLPFeasibility(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *result)
Definition: lpexact.c:5655
SCIP_Bool SCIPlpExactIsSynced(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_MESSAGEHDLR *msg)
Definition: lpexact.c:3920
SCIP_RETCODE SCIPlpExactGetState(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
Definition: lpexact.c:8094
SCIP_RETCODE SCIPlpExactGetPrimalRay(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_RATIONAL **ray)
Definition: lpexact.c:7137
void SCIProwExactPrint(SCIP_ROWEXACT *row, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
Definition: lpexact.c:4953
SCIP_RETCODE SCIPcolExactAddCoef(SCIP_COLEXACT *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_ROWEXACT *row, SCIP_RATIONAL *val)
Definition: lpexact.c:2834
SCIP_RETCODE SCIPlpExactUpdateVarColumn(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var)
Definition: lpexact.c:6663
SCIP_RETCODE SCIPlpExactStartDive(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: lpexact.c:8177
SCIP_RETCODE SCIProwExactIncCoef(SCIP_ROWEXACT *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_COLEXACT *col, SCIP_RATIONAL *incval)
Definition: lpexact.c:5321
SCIP_RETCODE SCIPlpExactSyncLPs(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set)
Definition: lpexact.c:8474
SCIP_RETCODE SCIProwExactEnsureSize(SCIP_ROWEXACT *row, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
Definition: lpexact.c:6062
SCIP_RETCODE SCIPlpExactUpdateVarLoose(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var)
Definition: lpexact.c:6718
SCIP_RETCODE SCIProwExactAddCoef(SCIP_ROWEXACT *rowexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_COLEXACT *colexact, SCIP_RATIONAL *val)
Definition: lpexact.c:5200
SCIP_Bool SCIProwHasExRow(SCIP_LPEXACT *lpexact, SCIP_ROW *row)
Definition: lpexact.c:5057
SCIP_RETCODE SCIPcolExactIncCoef(SCIP_COLEXACT *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_ROWEXACT *row, SCIP_RATIONAL *incval)
Definition: lpexact.c:2945
SCIP_RETCODE SCIPlpExactUpdateAddVar(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var)
Definition: lpexact.c:6603
SCIP_RETCODE SCIPcolExactChgCoef(SCIP_COLEXACT *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_ROWEXACT *row, SCIP_RATIONAL *val)
Definition: lpexact.c:2894
SCIP_RETCODE SCIProwExactCreate(SCIP_ROWEXACT **row, SCIP_ROW *fprow, SCIP_ROW *fprowrhs, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, int len, SCIP_COLEXACT **cols, SCIP_RATIONAL **vals, SCIP_RATIONAL *lhs, SCIP_RATIONAL *rhs, SCIP_Bool isfprelaxable)
Definition: lpexact.c:3138
SCIP_RETCODE SCIProwExactRelease(SCIP_ROWEXACT **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LPEXACT *lpexact)
Definition: lpexact.c:5583
SCIP_RETCODE SCIProwExactGetPseudoFeasibility(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_RATIONAL *result)
Definition: lpexact.c:5684
void SCIPlpExactDecNLoosevars(SCIP_LPEXACT *lpexact)
Definition: lpexact.c:6770
SCIP_RETCODE SCIPlpExactAddRow(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_ROWEXACT *rowexact)
Definition: lpexact.c:4133
SCIP_RATIONAL * SCIPcolExactGetPrimsol(SCIP_COLEXACT *col)
Definition: lpexact.c:6039
SCIP_RETCODE SCIPlpExactGetIterations(SCIP_LPEXACT *lpexact, int *iterations)
Definition: lpexact.c:7398
void SCIProwExactForceSort(SCIP_ROWEXACT *rowexact, SCIP_SET *set)
Definition: lpexact.c:5878
void SCIPlpExactGetPseudoObjval(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_RATIONAL *res)
Definition: lpexact.c:7438
SCIP_RETCODE SCIPlpExactUpdateVarObj(SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_VAR *var, SCIP_RATIONAL *oldobj, SCIP_RATIONAL *newobj)
Definition: lpexact.c:6422
SCIP_RETCODE SCIProwExactDelCoef(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_COLEXACT *col)
Definition: lpexact.c:5225
SCIP_RETCODE SCIPlpExactClear(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set)
Definition: lpexact.c:7581
SCIP_Bool SCIProwExactGetSolActivityWithErrorbound(SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_Real *activity, SCIP_Real *errorbound)
Definition: lpexact.c:5475
SCIP_RETCODE SCIProwExactCreateFromRow(SCIP_ROW *fprow, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_LPEXACT *lpexact)
Definition: lpexact.c:3373
SCIP_RETCODE SCIPlpExactGetDualfarkas(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *valid, SCIP_Bool overwritefplp)
Definition: lpexact.c:7198
SCIP_RETCODE SCIPlpExactEndDive(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_VAR **vars, int nvars)
Definition: lpexact.c:8280
SCIP_RETCODE SCIPlpExactShrinkCols(SCIP_LPEXACT *lpexact, SCIP_SET *set, int newncols)
Definition: lpexact.c:7455
SCIP_RETCODE SCIPlpExactAddCol(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_COLEXACT *col)
Definition: lpexact.c:4089
SCIP_RETCODE SCIProwExactGetSolActivity(SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_Bool useexact, SCIP_RATIONAL *result)
Definition: lpexact.c:5529
SCIP_RETCODE SCIPlpExactGetUnboundedSol(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *primalfeasible, SCIP_Bool *rayfeasible)
Definition: lpexact.c:7124
SCIP_RETCODE SCIPlpExactSetCutoffbound(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_Real cutoffbound)
Definition: lpexact.c:4178
SCIP_LPSOLSTAT SCIPlpExactGetSolstat(SCIP_LPEXACT *lpexact)
Definition: lpexact.c:8084
SCIP_RETCODE SCIPlpExactUpdateVarUb(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldub, SCIP_RATIONAL *newub)
Definition: lpexact.c:6568
SCIP_RETCODE SCIPcolExactCalcFarkasRedcostCoef(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_RATIONAL *result, SCIP_RATIONAL **dual, SCIP_Bool usefarkas)
Definition: lpexact.c:5111
SCIP_Bool SCIPlpExactBoundShiftUseful(SCIP_LPEXACT *lpexact)
Definition: lpexact.c:3899
void SCIPlpExactAllowExactSolve(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_Bool allowexact)
Definition: lpexact.c:7630
SCIP_RATIONAL * SCIProwExactGetPseudoActivity(SCIP_ROWEXACT *row, SCIP_STAT *stat)
Definition: lpexact.c:5734
SCIP_RETCODE SCIPcolExactFree(SCIP_COLEXACT **col, BMS_BLKMEM *blkmem)
Definition: lpexact.c:2754
void SCIPcolExactPrint(SCIP_COLEXACT *col, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
Definition: lpexact.c:2796
SCIP_RETCODE SCIPlpExactUpdateVarLbGlobal(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldlb, SCIP_RATIONAL *newlb)
Definition: lpexact.c:6469
SCIP_RETCODE SCIPcolExactChgObj(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *newobj)
Definition: lpexact.c:3001
SCIP_RETCODE SCIPlpExactUpdateVarLb(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldlb, SCIP_RATIONAL *newlb)
Definition: lpexact.c:6501
SCIP_RETCODE SCIProwExactGenerateFpRows(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_PROB *prob, SCIP_ROWEXACT *row, SCIP_ROW *rowlhs, SCIP_ROW *rowrhs, SCIP_Bool *onerowrelax, SCIP_Bool *hasfprelax)
Definition: lpexact.c:3454
SCIP_RETCODE SCIPcolExactChgUb(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *newub)
Definition: lpexact.c:3093
SCIP_RETCODE SCIPlpExactCreate(SCIP_LPEXACT **lpexact, BMS_BLKMEM *blkmem, SCIP_LP *fplp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, const char *name)
Definition: lpexact.c:3933
SCIP_RETCODE SCIProwExactAddConstant(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *addval)
Definition: lpexact.c:5416
SCIP_RATIONAL * SCIPcolExactGetBestBound(SCIP_COLEXACT *col)
Definition: lpexact.c:6026
void SCIPlpExactGetObjval(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_RATIONAL *res)
Definition: lpexact.c:7416
SCIP_RETCODE SCIPcolExactCreate(SCIP_COLEXACT **col, SCIP_COL *fpcol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var, int len, SCIP_ROWEXACT **rows, SCIP_RATIONAL **vals, SCIP_Bool removable)
Definition: lpexact.c:2410
SCIP_RETCODE SCIProwExactChgRhs(SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *rhs)
Definition: lpexact.c:8063
SCIP_RETCODE SCIProwExactChgCoef(SCIP_ROWEXACT *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_COLEXACT *col, SCIP_RATIONAL *val)
Definition: lpexact.c:5269
SCIP_RETCODE SCIPlpExactWrite(SCIP_LPEXACT *lpexact, const char *fname)
Definition: lpexact.c:8434
SCIP_RETCODE SCIPlpExactFree(SCIP_LPEXACT **lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set)
Definition: lpexact.c:4039
SCIP_RETCODE SCIPlpExactFlush(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
Definition: lpexact.c:3651
void SCIProwExactRecalcPseudoActivity(SCIP_ROWEXACT *rowexact, SCIP_STAT *stat)
Definition: lpexact.c:5960
SCIP_RETCODE SCIProwExactChgLhs(SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *lhs)
Definition: lpexact.c:8042
SCIP_RETCODE SCIProwExactChgConstant(SCIP_ROWEXACT *row, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *constant)
Definition: lpexact.c:5385
void SCIPlpExactForceSafeBound(SCIP_LPEXACT *lpexact, SCIP_SET *set)
Definition: lpexact.c:7614
SCIP_RETCODE SCIPcolExactChgLb(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *newlb)
Definition: lpexact.c:3048
SCIP_RETCODE SCIPlpExactUpdateVarUbGlobal(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldub, SCIP_RATIONAL *newub)
Definition: lpexact.c:6536
memory allocation routines
public methods for LP management
wrapper for rational number arithmetic
Definition: struct_lpexact.h:145
Definition: struct_lp.h:138
Definition: struct_event.h:237
Definition: lpi_clp.cpp:133
Definition: struct_lpexact.h:263
Definition: struct_lp.h:275
Definition: struct_message.h:46
Definition: struct_prob.h:49
Definition: struct_rational.h:47
Definition: struct_lpexact.h:187
Definition: struct_lp.h:205
Definition: struct_set.h:75
Definition: struct_sol.h:74
Definition: struct_stat.h:62
Definition: struct_var.h:262
Definition: heur_padm.c:135
type definitions for managing events
type definitions for exact LP management
type definitions for miscellaneous datastructures
type definitions for storing and manipulating the main problem
type definitions for rational numbers
type definitions for global SCIP settings
type definitions for storing primal CIP solutions
type definitions for problem statistics
type definitions for problem variables