Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

methods to build and access LP relaxation information

See also
methods to interact with LP columns and LP rows

Modules

 LP Column
 public methods for LP columns
 
 LP Row
 methods for LP rows
 
 Cuts and Cutpools
 common methods used to manipulate, generate, and strengthen cuts and to organize the cutpool
 
 LP Diving
 methods to initiate and conduct LP diving
 

Functions

SCIP_Bool SCIPhasCurrentNodeLP (SCIP *scip)
 
SCIP_Bool SCIPisLPConstructed (SCIP *scip)
 
SCIP_RETCODE SCIPconstructLP (SCIP *scip, SCIP_Bool *cutoff)
 
SCIP_RETCODE SCIPflushLP (SCIP *scip)
 
SCIP_LPSOLSTAT SCIPgetLPSolstat (SCIP *scip)
 
SCIP_Bool SCIPisLPRelax (SCIP *scip)
 
SCIP_Real SCIPgetLPObjval (SCIP *scip)
 
SCIP_Real SCIPgetLPColumnObjval (SCIP *scip)
 
SCIP_Real SCIPgetLPLooseObjval (SCIP *scip)
 
SCIP_Real SCIPgetGlobalPseudoObjval (SCIP *scip)
 
SCIP_Real SCIPgetPseudoObjval (SCIP *scip)
 
SCIP_Bool SCIPisRootLPRelax (SCIP *scip)
 
SCIP_Real SCIPgetLPRootObjval (SCIP *scip)
 
SCIP_Real SCIPgetLPRootColumnObjval (SCIP *scip)
 
SCIP_Real SCIPgetLPRootLooseObjval (SCIP *scip)
 
SCIP_RETCODE SCIPgetLPColsData (SCIP *scip, SCIP_COL ***cols, int *ncols)
 
SCIP_COL ** SCIPgetLPCols (SCIP *scip)
 
int SCIPgetNLPCols (SCIP *scip)
 
SCIP_RETCODE SCIPgetLPRowsData (SCIP *scip, SCIP_ROW ***rows, int *nrows)
 
SCIP_ROW ** SCIPgetLPRows (SCIP *scip)
 
int SCIPgetNLPRows (SCIP *scip)
 
SCIP_Bool SCIPallColsInLP (SCIP *scip)
 
SCIP_Bool SCIPisLPSolBasic (SCIP *scip)
 
SCIP_RETCODE SCIPgetLPBasisInd (SCIP *scip, int *basisind)
 
SCIP_RETCODE SCIPgetLPBInvRow (SCIP *scip, int r, SCIP_Real *coefs, int *inds, int *ninds)
 
SCIP_RETCODE SCIPgetLPBInvCol (SCIP *scip, int c, SCIP_Real *coefs, int *inds, int *ninds)
 
SCIP_RETCODE SCIPgetLPBInvARow (SCIP *scip, int r, SCIP_Real *binvrow, SCIP_Real *coefs, int *inds, int *ninds)
 
SCIP_RETCODE SCIPgetLPBInvACol (SCIP *scip, int c, SCIP_Real *coefs, int *inds, int *ninds)
 
SCIP_RETCODE SCIPsumLPRows (SCIP *scip, SCIP_Real *weights, SCIP_REALARRAY *sumcoef, SCIP_Real *sumlhs, SCIP_Real *sumrhs)
 
SCIP_RETCODE SCIPcalcMIR (SCIP *scip, SCIP_SOL *sol, SCIP_Real boundswitch, SCIP_Bool usevbds, SCIP_Bool allowlocal, SCIP_Bool fixintegralrhs, int *boundsfortrans, SCIP_BOUNDTYPE *boundtypesfortrans, int maxmksetcoefs, SCIP_Real maxweightrange, SCIP_Real minfrac, SCIP_Real maxfrac, SCIP_Real *weights, SCIP_Real maxweight, int *weightinds, int nweightinds, int rowlensum, int *sidetypes, SCIP_Real scale, SCIP_Real *mksetcoefs, SCIP_Bool *mksetcoefsvalid, SCIP_Real *mircoef, SCIP_Real *mirrhs, SCIP_Real *cutactivity, SCIP_Bool *success, SCIP_Bool *cutislocal, int *cutrank)
 
SCIP_RETCODE SCIPcalcStrongCG (SCIP *scip, SCIP_Real boundswitch, SCIP_Bool usevbds, SCIP_Bool allowlocal, int maxmksetcoefs, SCIP_Real maxweightrange, SCIP_Real minfrac, SCIP_Real maxfrac, SCIP_Real *weights, int *inds, int ninds, SCIP_Real scale, SCIP_Real *mircoef, SCIP_Real *mirrhs, SCIP_Real *cutactivity, SCIP_Bool *success, SCIP_Bool *cutislocal, int *cutrank)
 
SCIP_RETCODE SCIPwriteLP (SCIP *scip, const char *filename)
 
SCIP_RETCODE SCIPwriteMIP (SCIP *scip, const char *filename, SCIP_Bool genericnames, SCIP_Bool origobj, SCIP_Bool lazyconss)
 
SCIP_RETCODE SCIPgetLPI (SCIP *scip, SCIP_LPI **lpi)
 
SCIP_RETCODE SCIPprintLPSolutionQuality (SCIP *scip, FILE *file)
 
SCIP_RETCODE SCIPcomputeLPRelIntPoint (SCIP *scip, SCIP_Bool relaxrows, SCIP_Bool inclobjcutoff, SCIP_Real timelimit, int iterlimit, SCIP_SOL **point)
 

Function Documentation

◆ SCIPhasCurrentNodeLP()

SCIP_Bool SCIPhasCurrentNodeLP ( SCIP scip)

returns, whether the LP was or is to be solved in the current node

Returns
whether the LP was or is to be solved in the current node.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure

Definition at line 28769 of file scip.c.

References checkStage(), FALSE, SCIP_CALL_ABORT, SCIPtreeHasCurrentNodeLP(), Scip::tree, and TRUE.

Referenced by applyVbounds(), consdataGetGlbActivityResiduals(), enforcePseudo(), execRelpscost(), SCIP_DECL_BRANCHEXECPS(), SCIP_DECL_DISPOUTPUT(), SCIP_DECL_HEUREXEC(), and SCIPperformGenericDivingAlgorithm().

◆ SCIPisLPConstructed()

SCIP_Bool SCIPisLPConstructed ( SCIP scip)

returns, whether the LP of the current node is already constructed

Returns
whether the LP of the current node is already constructed.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure

Definition at line 28787 of file scip.c.

References checkStage(), FALSE, SCIP_CALL_ABORT, SCIPtreeIsFocusNodeLPConstructed(), Scip::tree, and TRUE.

Referenced by applyVbounds(), createNewSol(), and SCIP_DECL_HEUREXEC().

◆ SCIPconstructLP()

SCIP_RETCODE SCIPconstructLP ( SCIP scip,
SCIP_Bool cutoff 
)

makes sure that the LP of the current node is loaded and may be accessed through the LP information methods

Warning
Contructing the LP might change the amount of variables known in the transformed problem and therefore also the variables array of SCIP (returned by SCIPgetVars() and SCIPgetVarsData()), so it might be necessary to call one of the later method after this one
Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
cutoffpointer to store whether the node can be cut off

Definition at line 28810 of file scip.c.

References Scip::branchcand, checkStage(), Scip::cliquetable, Scip::cutpool, Scip::eventfilter, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, Scip::origprob, Scip::pricestore, SCIP_Mem::probmem, Scip::reopt, SCIP_CALL, SCIP_OKAY, SCIPconstructCurrentLP(), Scip::sepastore, Scip::set, Scip::stat, Scip::transprob, Scip::tree, and TRUE.

Referenced by applyVbounds(), and SCIP_DECL_HEUREXEC().

◆ SCIPflushLP()

SCIP_RETCODE SCIPflushLP ( SCIP scip)

makes sure that the LP of the current node is flushed

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure

Definition at line 28834 of file scip.c.

References checkStage(), Scip::eventqueue, FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPlpFlush(), Scip::set, and TRUE.

Referenced by applyVbounds(), and SCIP_DECL_HEUREXEC().

◆ SCIPgetLPSolstat()

◆ SCIPisLPRelax()

SCIP_Bool SCIPisLPRelax ( SCIP scip)

returns whether the current lp is a relaxation of the current problem and its optimal objective value is a local lower bound

Returns
whether the current lp is a relaxation of the current problem and its optimal objective value is a local lower bound.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure

Definition at line 28875 of file scip.c.

References checkStage(), FALSE, Scip::lp, SCIP_CALL_ABORT, SCIPlpIsRelax(), and TRUE.

Referenced by performStrongbranchWithPropagation().

◆ SCIPgetLPObjval()

SCIP_Real SCIPgetLPObjval ( SCIP scip)

gets objective value of current LP (which is the sum of column and loose objective value)

Returns
the objective value of current LP (which is the sum of column and loose objective value).
Precondition
This method can be called if scip is in one of the following stages:
Note
This method returns the objective value of the current LP solution, which might be primal or dual infeasible if a limit was hit during solving. It must not be used as a dual bound if the LP solution status returned by SCIPgetLPSolstat() is SCIP_LPSOLSTAT_ITERLIMIT or SCIP_LPSOLSTAT_TIMELIMIT.

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure

Definition at line 28897 of file scip.c.

References checkStage(), FALSE, Scip::lp, SCIP_CALL_ABORT, SCIPlpGetObjval(), Scip::set, Scip::transprob, and TRUE.

Referenced by execRelpscost(), getBranchingDecisionStrongbranchSOS1(), performLPRandRounding(), performLPSimpleRounding(), performStrongbranchSOS1(), performStrongbranchWithPropagation(), SCIP_DECL_DISPOUTPUT(), SCIP_DECL_HEUREXEC(), SCIP_DECL_SEPAEXECLP(), SCIPperformGenericDivingAlgorithm(), SCIPselectVarPseudoStrongBranching(), SCIPselectVarStrongBranching(), SCIPsolveDiveLP(), selectVarMultAggrBranching(), separateCuts(), and solveProbingLP().

◆ SCIPgetLPColumnObjval()

SCIP_Real SCIPgetLPColumnObjval ( SCIP scip)

gets part of objective value of current LP that results from COLUMN variables only

Returns
the part of objective value of current LP that results from COLUMN variables only.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure

Definition at line 28915 of file scip.c.

References checkStage(), FALSE, Scip::lp, SCIP_CALL_ABORT, SCIPlpGetColumnObjval(), and TRUE.

◆ SCIPgetLPLooseObjval()

SCIP_Real SCIPgetLPLooseObjval ( SCIP scip)

gets part of objective value of current LP that results from LOOSE variables only

Returns
part of objective value of current LP that results from LOOSE variables only.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure

Definition at line 28933 of file scip.c.

References checkStage(), FALSE, Scip::lp, SCIP_CALL_ABORT, SCIPlpGetLooseObjval(), Scip::set, Scip::transprob, and TRUE.

◆ SCIPgetGlobalPseudoObjval()

SCIP_Real SCIPgetGlobalPseudoObjval ( SCIP scip)

gets the global pseudo objective value; that is all variables set to their best (w.r.t. the objective function) global bound

Returns
the global pseudo objective value; that is all variables set to their best (w.r.t. the objective function) global bound.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure

Definition at line 28958 of file scip.c.

References checkStage(), FALSE, Scip::lp, SCIP_CALL_ABORT, SCIPlpGetGlobalPseudoObjval(), Scip::set, Scip::transprob, and TRUE.

Referenced by propagateCutoffboundGlobally(), and resolvePropagation().

◆ SCIPgetPseudoObjval()

SCIP_Real SCIPgetPseudoObjval ( SCIP scip)

gets the pseudo objective value for the current search node; that is all variables set to their best (w.r.t. the objective function) local bound

Returns
the pseudo objective value for the current search node; that is all variables set to their best (w.r.t. the objective function) local bound.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure

Definition at line 28983 of file scip.c.

References checkStage(), FALSE, Scip::lp, SCIP_CALL_ABORT, SCIPlpGetPseudoObjval(), Scip::set, Scip::transprob, and TRUE.

Referenced by SCIP_DECL_DISPOUTPUT().

◆ SCIPisRootLPRelax()

SCIP_Bool SCIPisRootLPRelax ( SCIP scip)

returns whether the root lp is a relaxation of the problem and its optimal objective value is a global lower bound

Returns
whether the root lp is a relaxation of the problem and its optimal objective value is a global lower bound.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure

Definition at line 29001 of file scip.c.

References checkStage(), FALSE, Scip::lp, SCIP_CALL_ABORT, SCIPlpIsRootLPRelax(), and TRUE.

◆ SCIPgetLPRootObjval()

SCIP_Real SCIPgetLPRootObjval ( SCIP scip)

gets the objective value of the root node LP or SCIP_INVALID if the root node LP was not (yet) solved

Returns
the objective value of the root node LP or SCIP_INVALID if the root node LP was not (yet) solved.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure

Definition at line 29022 of file scip.c.

References checkStage(), FALSE, Scip::lp, SCIP_CALL_ABORT, SCIPlpGetRootObjval(), and TRUE.

◆ SCIPgetLPRootColumnObjval()

SCIP_Real SCIPgetLPRootColumnObjval ( SCIP scip)

gets part of the objective value of the root node LP that results from COLUMN variables only; returns SCIP_INVALID if the root node LP was not (yet) solved

Returns
the part of the objective value of the root node LP that results from COLUMN variables only; or SCIP_INVALID if the root node LP was not (yet) solved.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure

Definition at line 29045 of file scip.c.

References checkStage(), FALSE, Scip::lp, SCIP_CALL_ABORT, SCIPlpGetRootColumnObjval(), and TRUE.

◆ SCIPgetLPRootLooseObjval()

SCIP_Real SCIPgetLPRootLooseObjval ( SCIP scip)

gets part of the objective value of the root node LP that results from LOOSE variables only; returns SCIP_INVALID if the root node LP was not (yet) solved

Returns
the part of the objective value of the root node LP that results from LOOSE variables only; or SCIP_INVALID if the root node LP was not (yet) solved.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure

Definition at line 29068 of file scip.c.

References checkStage(), FALSE, Scip::lp, SCIP_CALL_ABORT, SCIPlpGetRootLooseObjval(), and TRUE.

◆ SCIPgetLPColsData()

SCIP_RETCODE SCIPgetLPColsData ( SCIP scip,
SCIP_COL ***  cols,
int *  ncols 
)

gets current LP columns along with the current number of LP columns

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
colspointer to store the array of LP columns, or NULL
ncolspointer to store the number of LP columns, or NULL

Definition at line 29087 of file scip.c.

References checkStage(), FALSE, Scip::lp, NULL, SCIP_CALL, SCIP_OKAY, SCIPlpGetCols(), SCIPlpGetNCols(), SCIPtreeIsFocusNodeLPConstructed(), Scip::tree, and TRUE.

Referenced by aggregation(), computeCut(), createCGCutDirect(), createSubscip(), extractCapacities(), extractNodes(), generateAverageNBRay(), mcfnetworkExtract(), mcfnetworkFill(), SCIP_DECL_HEUREXEC(), and SCIP_DECL_SEPAEXECLP().

◆ SCIPgetLPCols()

SCIP_COL** SCIPgetLPCols ( SCIP scip)

gets current LP columns

Returns
the current LP columns.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure

Definition at line 29122 of file scip.c.

References checkStage(), FALSE, Scip::lp, NULL, SCIP_CALL_ABORT, SCIPlpGetCols(), SCIPtreeIsFocusNodeLPConstructed(), Scip::tree, and TRUE.

Referenced by findUncapacitatedArcs(), getNextFlowrow(), and mcfnetworkFill().

◆ SCIPgetNLPCols()

int SCIPgetNLPCols ( SCIP scip)

gets current number of LP columns

Returns
the current number of LP columns.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure

Definition at line 29143 of file scip.c.

References checkStage(), FALSE, Scip::lp, SCIP_CALL_ABORT, SCIPlpGetNCols(), SCIPtreeIsFocusNodeLPConstructed(), Scip::tree, and TRUE.

Referenced by addFlowrowToCommodity(), cleanupNetwork(), collectIncidentFlowCols(), deleteCommodity(), extractCapacityRows(), extractFlow(), extractFlowRows(), findUncapacitatedArcs(), generateClusterCuts(), getFlowrowFit(), getIncidentNodes(), getNextFlowrow(), getNodeSimilarityScore(), identifySourcesTargets(), invertCommodity(), mcfnetworkExtract(), mcfnetworkFill(), nodepairqueueCreate(), SCIP_DECL_DISPOUTPUT(), SCIP_DECL_SEPAEXECLP(), and separateCuts().

◆ SCIPgetLPRowsData()

SCIP_RETCODE SCIPgetLPRowsData ( SCIP scip,
SCIP_ROW ***  rows,
int *  nrows 
)

gets current LP rows along with the current number of LP rows

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
rowspointer to store the array of LP rows, or NULL
nrowspointer to store the number of LP rows, or NULL

Definition at line 29165 of file scip.c.

References checkStage(), FALSE, Scip::lp, NULL, SCIP_CALL, SCIP_OKAY, SCIPlpGetNRows(), SCIPlpGetRows(), SCIPtreeIsFocusNodeLPConstructed(), Scip::tree, and TRUE.

Referenced by aggregation(), cleanupNetwork(), computeCut(), createCGCutCMIR(), createCGCutStrongCG(), createRows(), createSubscip(), extractCapacities(), extractCapacityRows(), extractFlowRows(), extractNodes(), generateAverageNBRay(), generateAverageRay(), initMatrix(), mcfnetworkExtract(), mcfnetworkFill(), SCIP_DECL_HEUREXEC(), SCIP_DECL_SEPAEXECLP(), and separateCuts().

◆ SCIPgetLPRows()

SCIP_ROW** SCIPgetLPRows ( SCIP scip)

gets current LP rows

Returns
the current LP rows.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure

Definition at line 29200 of file scip.c.

References checkStage(), FALSE, Scip::lp, NULL, SCIP_CALL_ABORT, SCIPlpGetRows(), SCIPtreeIsFocusNodeLPConstructed(), Scip::tree, and TRUE.

Referenced by applyNlobbt(), applyRepair(), computeInteriorPoint(), extractFlow(), findUncapacitatedArcs(), mcfnetworkFill(), SCIP_DECL_BRANCHEXECLP(), SCIP_DECL_HEUREXEC(), SCIP_DECL_RELAXEXEC(), and SCIP_DECL_SEPAEXECLP().

◆ SCIPgetNLPRows()

int SCIPgetNLPRows ( SCIP scip)

◆ SCIPallColsInLP()

SCIP_Bool SCIPallColsInLP ( SCIP scip)

returns TRUE iff all columns, i.e. every variable with non-empty column w.r.t. all ever created rows, are present in the LP, and FALSE, if there are additional already existing columns, that may be added to the LP in pricing

Returns
TRUE iff all columns, i.e. every variable with non-empty column w.r.t. all ever created rows, are present in the LP, and FALSE, if there are additional already existing columns, that may be added to the LP in pricing.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure

Definition at line 29244 of file scip.c.

References checkStage(), FALSE, Scip::lp, SCIP_CALL_ABORT, SCIPprobAllColsInLP(), Scip::set, Scip::transprob, and TRUE.

Referenced by branch(), execRelpscost(), performRandRounding(), performSimpleRounding(), performStrongbranchWithPropagation(), SCIP_DECL_BRANCHEXECLP(), SCIP_DECL_PROPEXEC(), SCIP_DECL_RELAXEXEC(), SCIPgetVarStrongbranchWithPropagation(), SCIPselectVarPseudoStrongBranching(), SCIPselectVarStrongBranching(), and selectVarMultAggrBranching().

◆ SCIPisLPSolBasic()

SCIP_Bool SCIPisLPSolBasic ( SCIP scip)

returns whether the current LP solution is basic, i.e. is defined by a valid simplex basis

Returns
whether the current LP solution is basic, i.e. is defined by a valid simplex basis.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure

Definition at line 29262 of file scip.c.

References checkStage(), FALSE, Scip::lp, SCIP_CALL_ABORT, SCIPlpIsSolBasic(), and TRUE.

Referenced by execRelpscost(), SCIP_DECL_BRANCHEXECLP(), SCIP_DECL_HEUREXEC(), SCIP_DECL_SEPAEXECLP(), and SCIPperformGenericDivingAlgorithm().

◆ SCIPgetLPBasisInd()

SCIP_RETCODE SCIPgetLPBasisInd ( SCIP scip,
int *  basisind 
)

gets all indices of basic columns and rows: index i >= 0 corresponds to column i, index i < 0 to row -i-1

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
basisindpointer to store basis indices ready to keep number of rows entries

Definition at line 29281 of file scip.c.

References checkStage(), FALSE, Scip::lp, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPerrorMessage, SCIPlpGetBasisInd(), SCIPlpIsSolBasic(), and TRUE.

Referenced by SCIP_DECL_SEPAEXECLP(), and SCIPdummyDebugMethodForSun().

◆ SCIPgetLPBInvRow()

SCIP_RETCODE SCIPgetLPBInvRow ( SCIP scip,
int  r,
SCIP_Real coefs,
int *  inds,
int *  ninds 
)

gets a row from the inverse basis matrix B^-1

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
rrow number
coefsarray to store the coefficients of the row
indsarray to store the non-zero indices, or NULL
nindspointer to store the number of non-zero indices, or NULL (-1: if we do not store sparsity informations)

Definition at line 29309 of file scip.c.

References checkStage(), FALSE, Scip::lp, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPdebugCheckBInvRow, SCIPerrorMessage, SCIPlpGetBInvRow(), SCIPlpIsSolBasic(), and TRUE.

Referenced by SCIP_DECL_SEPAEXECLP().

◆ SCIPgetLPBInvCol()

SCIP_RETCODE SCIPgetLPBInvCol ( SCIP scip,
int  c,
SCIP_Real coefs,
int *  inds,
int *  ninds 
)

gets a column from the inverse basis matrix B^-1

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
ccolumn number of B^-1; this is NOT the number of the column in the LP returned by SCIPcolGetLPPos(); you have to call SCIPgetBasisInd() to get the array which links the B^-1 column numbers to the row and column numbers of the LP! c must be between 0 and nrows-1, since the basis has the size nrows * nrows
coefsarray to store the coefficients of the column
indsarray to store the non-zero indices, or NULL
nindspointer to store the number of non-zero indices, or NULL (-1: if we do not store sparsity informations)

Definition at line 29344 of file scip.c.

References checkStage(), FALSE, Scip::lp, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPerrorMessage, SCIPlpGetBInvCol(), SCIPlpIsSolBasic(), and TRUE.

◆ SCIPgetLPBInvARow()

SCIP_RETCODE SCIPgetLPBInvARow ( SCIP scip,
int  r,
SCIP_Real binvrow,
SCIP_Real coefs,
int *  inds,
int *  ninds 
)

gets a row from the product of inverse basis matrix B^-1 and coefficient matrix A (i.e. from B^-1 * A)

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
rrow number
binvrowrow in B^-1 from prior call to SCIPgetLPBInvRow(), or NULL
coefsarray to store the coefficients of the row
indsarray to store the non-zero indices, or NULL
nindspointer to store the number of non-zero indices, or NULL (-1: if we do not store sparsity informations)

Definition at line 29380 of file scip.c.

References checkStage(), FALSE, Scip::lp, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPerrorMessage, SCIPlpGetBInvARow(), SCIPlpIsSolBasic(), and TRUE.

Referenced by SCIP_DECL_SEPAEXECLP().

◆ SCIPgetLPBInvACol()

SCIP_RETCODE SCIPgetLPBInvACol ( SCIP scip,
int  c,
SCIP_Real coefs,
int *  inds,
int *  ninds 
)

gets a column from the product of inverse basis matrix B^-1 and coefficient matrix A (i.e. from B^-1 * A), i.e., it computes B^-1 * A_c with A_c being the c'th column of A

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
ccolumn number which can be accessed by SCIPcolGetLPPos()
coefsarray to store the coefficients of the column
indsarray to store the non-zero indices, or NULL
nindspointer to store the number of non-zero indices, or NULL (-1: if we do not store sparsity informations)

Definition at line 29414 of file scip.c.

References checkStage(), FALSE, Scip::lp, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPerrorMessage, SCIPlpGetBInvACol(), SCIPlpIsSolBasic(), and TRUE.

Referenced by generateAverageRay().

◆ SCIPsumLPRows()

SCIP_RETCODE SCIPsumLPRows ( SCIP scip,
SCIP_Real weights,
SCIP_REALARRAY sumcoef,
SCIP_Real sumlhs,
SCIP_Real sumrhs 
)

calculates a weighted sum of all LP rows; for negative weights, the left and right hand side of the corresponding LP row are swapped in the summation

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
weightsrow weights in row summation
sumcoefarray to store sum coefficients indexed by variables' probindex
sumlhspointer to store the left hand side of the row summation
sumrhspointer to store the right hand side of the row summation

Definition at line 29447 of file scip.c.

References checkStage(), FALSE, Scip::lp, SCIP_CALL, SCIP_OKAY, SCIPlpSumRows(), Scip::set, Scip::transprob, and TRUE.

◆ SCIPcalcMIR()

SCIP_RETCODE SCIPcalcMIR ( SCIP scip,
SCIP_SOL sol,
SCIP_Real  boundswitch,
SCIP_Bool  usevbds,
SCIP_Bool  allowlocal,
SCIP_Bool  fixintegralrhs,
int *  boundsfortrans,
SCIP_BOUNDTYPE boundtypesfortrans,
int  maxmksetcoefs,
SCIP_Real  maxweightrange,
SCIP_Real  minfrac,
SCIP_Real  maxfrac,
SCIP_Real weights,
SCIP_Real  maxweight,
int *  weightinds,
int  nweightinds,
int  rowlensum,
int *  sidetypes,
SCIP_Real  scale,
SCIP_Real mksetcoefs,
SCIP_Bool mksetcoefsvalid,
SCIP_Real mircoef,
SCIP_Real mirrhs,
SCIP_Real cutactivity,
SCIP_Bool success,
SCIP_Bool cutislocal,
int *  cutrank 
)

calculates a MIR cut out of the weighted sum of LP rows; The weights of modifiable rows are set to 0.0, because these rows cannot participate in a MIR cut.

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
solthe solution that should be separated, or NULL for LP solution
boundswitchfraction of domain up to which lower bound is used in transformation
usevbdsshould variable bounds be used in bound transformation?
allowlocalshould local information allowed to be used, resulting in a local cut?
fixintegralrhsshould complementation tried to be adjusted such that rhs gets fractional?
boundsfortransbounds that should be used for transformed variables: vlb_idx/vub_idx, -1 for global lb/ub, -2 for local lb/ub, or -3 for using closest bound; NULL for using closest bound for all variables
boundtypesfortranstype of bounds that should be used for transformed variables; NULL for using closest bound for all variables
maxmksetcoefsmaximal number of nonzeros allowed in aggregated base inequality
maxweightrangemaximal valid range max(|weights|)/min(|weights|) of row weights
minfracminimal fractionality of rhs to produce MIR cut for
maxfracmaximal fractionality of rhs to produce MIR cut for
weightsrow weights in row summation; some weights might be set to zero
maxweightlargest magnitude of weights; set to -1.0 if sparsity information is unknown
weightindssparsity pattern of weights; size nrowinds; NULL if sparsity info is unknown
nweightindsnumber of nonzeros in weights; -1 if rowinds is NULL
rowlensumtotal number of non-zeros in used rows (row associated with nonzero weight coefficient); -1 if unknown
sidetypesspecify row side type (-1 = lhs, 0 = unkown, 1 = rhs) or NULL for automatic choices
scaleadditional scaling factor multiplied to all rows
mksetcoefsarray to store mixed knapsack set coefficients: size nvars; or NULL
mksetcoefsvalidpointer to store whether mixed knapsack set coefficients are valid; or NULL
mircoefarray to store MIR coefficients: must be of size SCIPgetNVars()
mirrhspointer to store the right hand side of the MIR row
cutactivitypointer to store the activity of the resulting cut
successpointer to store whether the returned coefficients are a valid MIR cut
cutislocalpointer to store whether the returned cut is only valid locally
cutrankpointer to store the rank of the returned cut; or NULL

Definition at line 29473 of file scip.c.

References checkStage(), FALSE, SCIP_CALL, SCIP_OKAY, SCIPcutsCalcLpMIR(), and TRUE.

Referenced by createCGCutCMIR(), createZerohalfCutFromZerohalfWeightvector(), cutGenerationHeuristic(), generateClusterCuts(), SCIP_DECL_SEPAEXECLP(), SCIPcutGenerationHeuristicCmir(), and tryDelta().

◆ SCIPcalcStrongCG()

SCIP_RETCODE SCIPcalcStrongCG ( SCIP scip,
SCIP_Real  boundswitch,
SCIP_Bool  usevbds,
SCIP_Bool  allowlocal,
int  maxmksetcoefs,
SCIP_Real  maxweightrange,
SCIP_Real  minfrac,
SCIP_Real  maxfrac,
SCIP_Real weights,
int *  inds,
int  ninds,
SCIP_Real  scale,
SCIP_Real mircoef,
SCIP_Real mirrhs,
SCIP_Real cutactivity,
SCIP_Bool success,
SCIP_Bool cutislocal,
int *  cutrank 
)

calculates a strong CG cut out of the weighted sum of LP rows; The weights of modifiable rows are set to 0.0, because these rows cannot participate in a MIR cut.

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
boundswitchfraction of domain up to which lower bound is used in transformation
usevbdsshould variable bounds be used in bound transformation?
allowlocalshould local information allowed to be used, resulting in a local cut?
maxmksetcoefsmaximal number of nonzeros allowed in aggregated base inequality
maxweightrangemaximal valid range max(|weights|)/min(|weights|) of row weights
minfracminimal fractionality of rhs to produce strong CG cut for
maxfracmaximal fractionality of rhs to produce strong CG cut for
weightsrow weights in row summation; some weights might be set to zero
indsindices of non-zero entries in weights array, or NULL
nindsnumber of indices of non-zero entries in weights array, -1 if inds is NULL
scaleadditional scaling factor multiplied to all rows
mircoefarray to store strong CG coefficients: must be of size SCIPgetNVars()
mirrhspointer to store the right hand side of the strong CG row
cutactivitypointer to store the activity of the resulting cut
successpointer to store whether the returned coefficients are a valid strong CG cut
cutislocalpointer to store whether the returned cut is only valid locally
cutrankpointer to store the rank of the returned cut; or NULL

Definition at line 29529 of file scip.c.

References checkStage(), FALSE, SCIP_CALL, SCIP_OKAY, SCIPcutsCalcStrongCG(), and TRUE.

Referenced by createCGCutStrongCG(), and SCIP_DECL_SEPAEXECLP().

◆ SCIPwriteLP()

SCIP_RETCODE SCIPwriteLP ( SCIP scip,
const char *  filename 
)

writes current LP to a file

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
filenamefile name

Definition at line 29569 of file scip.c.

References Scip::branchcand, checkStage(), Scip::cliquetable, Scip::cutpool, Scip::eventfilter, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, Scip::origprob, Scip::pricestore, SCIP_Mem::probmem, Scip::reopt, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPconstructCurrentLP(), SCIPlpFlush(), SCIPlpWrite(), SCIPtreeIsFocusNodeLPConstructed(), Scip::sepastore, Scip::set, Scip::stat, Scip::transprob, Scip::tree, and TRUE.

Referenced by SCIP_DECL_DIALOGEXEC(), and SCIP_DECL_HEUREXEC().

◆ SCIPwriteMIP()

SCIP_RETCODE SCIPwriteMIP ( SCIP scip,
const char *  filename,
SCIP_Bool  genericnames,
SCIP_Bool  origobj,
SCIP_Bool  lazyconss 
)

writes MIP relaxation of the current branch-and-bound node to a file

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
filenamefile name
genericnamesshould generic names like x_i and row_j be used in order to avoid troubles with reserved symbols?
origobjshould the original objective function be used?
lazyconssoutput removable rows as lazy constraints?

Definition at line 29603 of file scip.c.

References checkStage(), Scip::eventqueue, FALSE, Scip::lp, Scip::mem, Scip::messagehdlr, SCIP_Prob::objoffset, SCIP_Prob::objscale, SCIP_Prob::objsense, Scip::origprob, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPlpFlush(), SCIPlpWriteMip(), Scip::set, Scip::transprob, and TRUE.

Referenced by SCIP_DECL_DIALOGEXEC().

◆ SCIPgetLPI()

SCIP_RETCODE SCIPgetLPI ( SCIP scip,
SCIP_LPI **  lpi 
)

gets the LP interface of SCIP; with the LPI you can use all of the methods defined in lpi/lpi.h;

Warning
You have to make sure, that the full internal state of the LPI does not change or is recovered completely after the end of the method that uses the LPI. In particular, if you manipulate the LP or its solution (e.g. by calling one of the SCIPlpiAdd...() or one of the SCIPlpiSolve...() methods), you have to check in advance with SCIPlpiWasSolved() whether the LP is currently solved. If this is the case, you have to make sure, the internal solution status is recovered completely at the end of your method. This can be achieved by getting the LPI state before applying any LPI manipulations with SCIPlpiGetState() and restoring it afterwards with SCIPlpiSetState() and SCIPlpiFreeState(). Additionally you have to resolve the LP with the appropriate SCIPlpiSolve...() call in order to reinstall the internal solution status.
Make also sure, that all parameter values that you have changed are set back to their original values.
Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
lpipointer to store the LP interface

Definition at line 29653 of file scip.c.

References checkStage(), FALSE, Scip::lp, NULL, SCIP_CALL, SCIP_OKAY, SCIPlpGetLPI(), and TRUE.

Referenced by performStrongbranchWithPropagation(), and SCIP_DECL_DISPOUTPUT().

◆ SCIPprintLPSolutionQuality()

SCIP_RETCODE SCIPprintLPSolutionQuality ( SCIP scip,
FILE *  file 
)

Displays quality information about the current LP solution. An LP solution need to be available. Information printed is subject to what the LP solver supports

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Note
The printing process is done via the message handler system.

displays quality information about the current LP solution. An LP solution need to be available; information printed is subject to what the LP solver supports

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Note
The printing process is done via the message handler system.
Parameters
scipSCIP data structure
fileoutput file (or NULL for standard output)

Definition at line 29689 of file scip.c.

References checkStage(), FALSE, Scip::lp, Scip::messagehdlr, NULL, SCIP_CALL, SCIP_INVALID, SCIP_INVALIDCALL, SCIP_LPSOLQUALITY_ESTIMCONDITION, SCIP_LPSOLQUALITY_EXACTCONDITION, SCIP_OKAY, SCIP_Real, SCIP_STAGE_EXITPRESOLVE, SCIP_STAGE_INIT, SCIP_STAGE_INITPRESOLVE, SCIP_STAGE_PRESOLVED, SCIP_STAGE_PRESOLVING, SCIP_STAGE_PROBLEM, SCIP_STAGE_SOLVED, SCIP_STAGE_SOLVING, SCIP_STAGE_TRANSFORMED, SCIPerrorMessage, SCIPlpGetLPI(), SCIPlpiGetRealSolQuality(), SCIPmessageFPrintInfo(), Scip::set, SCIP_Set::stage, and TRUE.

Referenced by SCIP_DECL_DIALOGEXEC().

◆ SCIPcomputeLPRelIntPoint()

SCIP_RETCODE SCIPcomputeLPRelIntPoint ( SCIP scip,
SCIP_Bool  relaxrows,
SCIP_Bool  inclobjcutoff,
SCIP_Real  timelimit,
int  iterlimit,
SCIP_SOL **  point 
)

compute relative interior point to current LP

See also
SCIPlpComputeRelIntPoint
Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
relaxrowsshould the rows be relaxed
inclobjcutoffshould a row for the objective cutoff be included
timelimittime limit for LP solver
iterlimititeration limit for LP solver
pointrelative interior point on exit

Definition at line 29762 of file scip.c.

References checkStage(), FALSE, Scip::lp, Scip::messagehdlr, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPcolGetVar(), SCIPcreateSol(), SCIPfreeBufferArray, SCIPlpComputeRelIntPoint(), SCIPlpGetCols(), SCIPlpGetNCols(), SCIPsetSolVal(), Scip::set, Scip::transprob, and TRUE.

Referenced by SCIP_DECL_SEPAEXECLP().