Scippy

    SCIP

    Solving Constraint Integer Programs

    Detailed Description

    common methods used to manipulate, generate, and strengthen cuts and to organize the cutpool

    Functions

    SCIP_Bool SCIPcutsTightenCoefficients (SCIP *scip, SCIP_Bool cutislocal, SCIP_Real *cutcoefs, SCIP_Real *cutrhs, int *cutinds, int *cutnnz, int *nchgcoefs)
     
    SCIP_RETCODE SCIPaggrRowCreate (SCIP *scip, SCIP_AGGRROW **aggrrow)
     
    void SCIPaggrRowFree (SCIP *scip, SCIP_AGGRROW **aggrrow)
     
    void SCIPaggrRowPrint (SCIP *scip, SCIP_AGGRROW *aggrrow, FILE *file)
     
    SCIP_RETCODE SCIPaggrRowCopy (SCIP *scip, SCIP_AGGRROW **aggrrow, SCIP_AGGRROW *source)
     
    SCIP_RETCODE SCIPaggrRowAddRow (SCIP *scip, SCIP_AGGRROW *aggrrow, SCIP_ROW *row, SCIP_Real weight, int sidetype)
     
    SCIP_RETCODE SCIPaggrRowAddRowSafely (SCIP *scip, SCIP_AGGRROW *aggrrow, SCIP_ROW *row, SCIP_Real weight, int sidetype, SCIP_Bool *success)
     
    void SCIPaggrRowCancelVarWithBound (SCIP *scip, SCIP_AGGRROW *aggrrow, SCIP_VAR *var, int pos, SCIP_Bool *valid)
     
    SCIP_RETCODE SCIPaggrRowAddObjectiveFunction (SCIP *scip, SCIP_AGGRROW *aggrrow, SCIP_Real rhs, SCIP_Real scale)
     
    SCIP_RETCODE SCIPaggrRowAddObjectiveFunctionSafely (SCIP *scip, SCIP_AGGRROW *aggrrow, SCIP_Real rhs, SCIP_Real scale)
     
    SCIP_RETCODE SCIPaggrRowAddCustomCons (SCIP *scip, SCIP_AGGRROW *aggrrow, int *inds, SCIP_Real *vals, int len, SCIP_Real rhs, SCIP_Real weight, int rank, SCIP_Bool local)
     
    SCIP_Real SCIPaggrRowCalcEfficacyNorm (SCIP *scip, SCIP_AGGRROW *aggrrow)
     
    void SCIPaggrRowClear (SCIP_AGGRROW *aggrrow)
     
    void SCIPaggrRowClearSafely (SCIP_AGGRROW *aggrrow)
     
    SCIP_RETCODE SCIPaggrRowSumRows (SCIP *scip, SCIP_AGGRROW *aggrrow, SCIP_Real *weights, int *rowinds, int nrowinds, SCIP_Bool sidetypebasis, SCIP_Bool allowlocal, int negslack, int maxaggrlen, SCIP_Bool *valid)
     
    void SCIPaggrRowRemoveZeros (SCIP *scip, SCIP_AGGRROW *aggrrow, SCIP_Bool useglbbounds, SCIP_Bool *valid)
     
    int * SCIPaggrRowGetRowInds (SCIP_AGGRROW *aggrrow)
     
    SCIP_RealSCIPaggrRowGetRowWeights (SCIP_AGGRROW *aggrrow)
     
    SCIP_Bool SCIPaggrRowHasRowBeenAdded (SCIP_AGGRROW *aggrrow, SCIP_ROW *row)
     
    void SCIPaggrRowGetAbsWeightRange (SCIP_AGGRROW *aggrrow, SCIP_Real *minabsrowweight, SCIP_Real *maxabsrowweight)
     
    int * SCIPaggrRowGetInds (SCIP_AGGRROW *aggrrow)
     
    int SCIPaggrRowGetNNz (SCIP_AGGRROW *aggrrow)
     
    static INLINE SCIP_Real SCIPaggrRowGetValue (SCIP_AGGRROW *aggrrow, int i)
     
    static INLINE SCIP_Real SCIPaggrRowGetValueSafely (SCIP_AGGRROW *aggrrow, int i)
     
    static INLINE SCIP_Real SCIPaggrRowGetProbvarValue (SCIP_AGGRROW *aggrrow, int probindex)
     
    int SCIPaggrRowGetRank (SCIP_AGGRROW *aggrrow)
     
    SCIP_Bool SCIPaggrRowIsLocal (SCIP_AGGRROW *aggrrow)
     
    SCIP_Real SCIPaggrRowGetRhs (SCIP_AGGRROW *aggrrow)
     
    int SCIPaggrRowGetNRows (SCIP_AGGRROW *aggrrow)
     
    SCIP_RETCODE SCIPcalcMIR (SCIP *scip, SCIP_SOL *sol, SCIP_Bool postprocess, SCIP_Real boundswitch, int vartypeusevbds, SCIP_Bool allowlocal, SCIP_Bool fixintegralrhs, int *boundsfortrans, SCIP_BOUNDTYPE *boundtypesfortrans, SCIP_Real minfrac, SCIP_Real maxfrac, SCIP_Real scale, SCIP_AGGRROW *aggrrow, SCIP_Real *cutcoefs, SCIP_Real *cutrhs, int *cutinds, int *cutnnz, SCIP_Real *cutefficacy, int *cutrank, SCIP_Bool *cutislocal, SCIP_Bool *success)
     
    SCIP_RETCODE SCIPcutGenerationHeuristicCMIR (SCIP *scip, SCIP_SOL *sol, SCIP_Bool postprocess, SCIP_Real boundswitch, int vartypeusevbds, SCIP_Bool allowlocal, int maxtestdelta, int *boundsfortrans, SCIP_BOUNDTYPE *boundtypesfortrans, SCIP_Real minfrac, SCIP_Real maxfrac, SCIP_AGGRROW *aggrrow, SCIP_Real *cutcoefs, SCIP_Real *cutrhs, int *cutinds, int *cutnnz, SCIP_Real *cutefficacy, int *cutrank, SCIP_Bool *cutislocal, SCIP_Bool *success)
     
    SCIP_RETCODE SCIPcalcFlowCover (SCIP *scip, SCIP_SOL *sol, SCIP_Bool postprocess, SCIP_Real boundswitch, SCIP_Bool allowlocal, SCIP_AGGRROW *aggrrow, SCIP_Real *cutcoefs, SCIP_Real *cutrhs, int *cutinds, int *cutnnz, SCIP_Real *cutefficacy, int *cutrank, SCIP_Bool *cutislocal, SCIP_Bool *success)
     
    SCIP_RETCODE SCIPcalcKnapsackCover (SCIP *scip, SCIP_SOL *sol, SCIP_Bool allowlocal, SCIP_AGGRROW *aggrrow, SCIP_Real *cutcoefs, SCIP_Real *cutrhs, int *cutinds, int *cutnnz, SCIP_Real *cutefficacy, int *cutrank, SCIP_Bool *cutislocal, SCIP_Bool *success)
     
    SCIP_RETCODE SCIPcalcStrongCG (SCIP *scip, SCIP_SOL *sol, SCIP_Bool postprocess, SCIP_Real boundswitch, int vartypeusevbds, SCIP_Bool allowlocal, SCIP_Real minfrac, SCIP_Real maxfrac, SCIP_Real scale, SCIP_AGGRROW *aggrrow, SCIP_Real *cutcoefs, SCIP_Real *cutrhs, int *cutinds, int *cutnnz, SCIP_Real *cutefficacy, int *cutrank, SCIP_Bool *cutislocal, SCIP_Bool *success)
     
    SCIP_ROWSCIPcutGetRow (SCIP_CUT *cut)
     
    int SCIPcutGetAge (SCIP_CUT *cut)
     
    SCIP_Real SCIPcutGetLPActivityQuot (SCIP_CUT *cut)
     
    SCIP_CUT ** SCIPcutpoolGetCuts (SCIP_CUTPOOL *cutpool)
     
    int SCIPcutpoolGetNCuts (SCIP_CUTPOOL *cutpool)
     
    SCIP_Longint SCIPcutpoolGetMaxNCuts (SCIP_CUTPOOL *cutpool)
     
    SCIP_Real SCIPcutpoolGetTime (SCIP_CUTPOOL *cutpool)
     
    SCIP_Longint SCIPcutpoolGetNCalls (SCIP_CUTPOOL *cutpool)
     
    SCIP_Longint SCIPcutpoolGetNRootCalls (SCIP_CUTPOOL *cutpool)
     
    SCIP_Longint SCIPcutpoolGetNCutsFound (SCIP_CUTPOOL *cutpool)
     
    SCIP_Longint SCIPcutpoolGetNCutsAdded (SCIP_CUTPOOL *cutpool)
     
    SCIP_Real SCIPgetCutLPSolCutoffDistance (SCIP *scip, SCIP_SOL *sol, SCIP_ROW *cut)
     
    SCIP_Real SCIPgetCutEfficacy (SCIP *scip, SCIP_SOL *sol, SCIP_ROW *cut)
     
    SCIP_Bool SCIPisCutEfficacious (SCIP *scip, SCIP_SOL *sol, SCIP_ROW *cut)
     
    SCIP_Bool SCIPisEfficacious (SCIP *scip, SCIP_Real efficacy)
     
    SCIP_Real SCIPgetVectorEfficacyNorm (SCIP *scip, SCIP_Real *vals, int nvals)
     
    SCIP_Bool SCIPisCutApplicable (SCIP *scip, SCIP_ROW *cut)
     
    SCIP_RETCODE SCIPaddRow (SCIP *scip, SCIP_ROW *row, SCIP_Bool forcecut, SCIP_Bool *infeasible)
     
    SCIP_Bool SCIPisCutNew (SCIP *scip, SCIP_ROW *row)
     
    SCIP_RETCODE SCIPaddPoolCut (SCIP *scip, SCIP_ROW *row)
     
    SCIP_RETCODE SCIPdelPoolCut (SCIP *scip, SCIP_ROW *row)
     
    SCIP_CUT ** SCIPgetPoolCuts (SCIP *scip)
     
    int SCIPgetNPoolCuts (SCIP *scip)
     
    SCIP_CUTPOOLSCIPgetGlobalCutpool (SCIP *scip)
     
    SCIP_RETCODE SCIPcreateCutpool (SCIP *scip, SCIP_CUTPOOL **cutpool, int agelimit)
     
    SCIP_RETCODE SCIPfreeCutpool (SCIP *scip, SCIP_CUTPOOL **cutpool)
     
    SCIP_RETCODE SCIPaddRowCutpool (SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_ROW *row)
     
    SCIP_RETCODE SCIPaddNewRowCutpool (SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_ROW *row)
     
    SCIP_RETCODE SCIPdelRowCutpool (SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_ROW *row)
     
    SCIP_RETCODE SCIPseparateCutpool (SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_RESULT *result)
     
    SCIP_RETCODE SCIPseparateSolCutpool (SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_SOL *sol, SCIP_Bool pretendroot, SCIP_RESULT *result)
     
    SCIP_RETCODE SCIPaddDelayedPoolCut (SCIP *scip, SCIP_ROW *row)
     
    SCIP_RETCODE SCIPdelDelayedPoolCut (SCIP *scip, SCIP_ROW *row)
     
    SCIP_CUT ** SCIPgetDelayedPoolCuts (SCIP *scip)
     
    int SCIPgetNDelayedPoolCuts (SCIP *scip)
     
    SCIP_CUTPOOLSCIPgetDelayedGlobalCutpool (SCIP *scip)
     
    SCIP_RETCODE SCIPseparateSol (SCIP *scip, SCIP_SOL *sol, SCIP_Bool pretendroot, SCIP_Bool allowlocal, SCIP_Bool onlydelayed, SCIP_Bool *delayed, SCIP_Bool *cutoff)
     
    SCIP_ROW ** SCIPgetCuts (SCIP *scip)
     
    int SCIPgetNCuts (SCIP *scip)
     
    SCIP_RETCODE SCIPclearCuts (SCIP *scip)
     
    SCIP_RETCODE SCIPremoveInefficaciousCuts (SCIP *scip)
     

    Function Documentation

    ◆ SCIPcutsTightenCoefficients()

    SCIP_Bool SCIPcutsTightenCoefficients ( SCIP scip,
    SCIP_Bool  cutislocal,
    SCIP_Real cutcoefs,
    SCIP_Real cutrhs,
    int *  cutinds,
    int *  cutnnz,
    int *  nchgcoefs 
    )

    perform activity based coefficient tigthening on the given cut; returns TRUE if the cut was detected to be redundant due to acitivity bounds

    See also cons_linear.c:consdataTightenCoefs().

    perform activity based coefficient tightening on the given cut; returns TRUE if the cut was detected to be redundant due to activity bounds

    See also cons_linear.c:consdataTightenCoefs().

    Parameters
    scipSCIP data structure
    cutislocalis the cut local?
    cutcoefsarray of the non-zero coefficients in the cut
    cutrhsthe right hand side of the cut
    cutindsarray of the problem indices of variables with a non-zero coefficient in the cut
    cutnnzthe number of non-zeros in the cut
    nchgcoefsnumber of changed coefficients

    Definition at line 2466 of file cuts.c.

    References FALSE, MAX, NULL, QUAD, QUAD_ASSIGN, QUAD_TO_DBL, SCIP_Bool, SCIP_CALL_ABORT, SCIP_Real, SCIPallocBufferArray, SCIPceil(), SCIPdebugMsg, SCIPfloor(), SCIPfreeBufferArray, SCIPfreeBufferArrayNull, SCIPgetNContVars(), SCIPgetNVars(), SCIPgetVars(), SCIPisFeasLE(), SCIPisGT(), SCIPisInfinity(), SCIPisLE(), SCIPisNegative(), SCIPisPositive(), SCIPquadprecProdDD, SCIPquadprecProdQD, SCIPquadprecSumDD, SCIPquadprecSumQD, SCIPquadprecSumQQ, SCIPsortDownRealRealInt(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), SCIPvarIsIntegral(), and TRUE.

    Referenced by computeMIRForOptimalityCut(), generateZerohalfCut(), tightenCoefficients(), and transformNonIntegralRow().

    ◆ SCIPaggrRowCreate()

    SCIP_RETCODE SCIPaggrRowCreate ( SCIP scip,
    SCIP_AGGRROW **  aggrrow 
    )

    create an empty aggregation row

    Note
    By default, this data structure uses quad precision via double-double arithmetic, i.e., it allocates a SCIP_Real array of length two times SCIPgetNVars() for storing the coefficients. In exact solving mode, we cannot use quad precision because we need to control the ronding mode, hence only the first SCIPgetNVars() entries are used.
    Parameters
    scipSCIP data structure
    aggrrowpointer to return aggregation row

    Definition at line 2668 of file cuts.c.

    References BMSclearMemoryArray, FALSE, NULL, QUAD_ARRAY_SIZE, QUAD_ASSIGN, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, SCIPallocBlockMemoryArray, and SCIPgetNVars().

    Referenced by computeMIRForOptimalityCut(), conflictAnalyzeLP(), createCGCuts(), doSeparation(), generateClusterCuts(), generateGMICuts(), MirReduction(), SCIP_DECL_SEPAEXECLP(), SCIPaggrRowSumRows(), SCIPrunBoundHeuristic(), and setupAggregationData().

    ◆ SCIPaggrRowFree()

    void SCIPaggrRowFree ( SCIP scip,
    SCIP_AGGRROW **  aggrrow 
    )

    free a the aggregation row

    free a aggregation row

    Parameters
    scipSCIP data structure
    aggrrowpointer to aggregation row that should be freed

    Definition at line 2700 of file cuts.c.

    References NULL, QUAD_ARRAY_SIZE, SCIPfreeBlockMemory, SCIPfreeBlockMemoryArray, SCIPfreeBlockMemoryArrayNull, and SCIPgetNVars().

    Referenced by computeMIRForOptimalityCut(), conflictAnalyzeLP(), createCGCuts(), destroyAggregationData(), doSeparation(), generateClusterCuts(), generateGMICuts(), MirReduction(), SCIP_DECL_SEPAEXECLP(), SCIPaggrRowSumRows(), SCIPcertificateFreeAggrInfo(), and SCIPrunBoundHeuristic().

    ◆ SCIPaggrRowPrint()

    void SCIPaggrRowPrint ( SCIP scip,
    SCIP_AGGRROW aggrrow,
    FILE *  file 
    )

    output aggregation row to file stream

    Parameters
    scipSCIP data structure
    aggrrowpointer to return aggregation row
    fileoutput file (or NULL for standard output)

    Definition at line 2721 of file cuts.c.

    References SCIP_AggrRow::inds, SCIP_AggrRow::nnz, NULL, QUAD, QUAD_ARRAY_LOAD, QUAD_TO_DBL, SCIP_Real, SCIPgetMessagehdlr(), SCIPgetVars(), SCIPmessageFPrintInfo(), SCIPvarGetName(), SCIPvarGetProbindex(), and SCIP_AggrRow::vals.

    Referenced by SCIPcertificatePrintAggrrow().

    ◆ SCIPaggrRowCopy()

    SCIP_RETCODE SCIPaggrRowCopy ( SCIP scip,
    SCIP_AGGRROW **  aggrrow,
    SCIP_AGGRROW source 
    )

    copy the aggregation row

    copy a aggregation row

    Parameters
    scipSCIP data structure
    aggrrowpointer to return aggregation row
    sourcesource aggregation row

    Definition at line 2758 of file cuts.c.

    References SCIP_AggrRow::inds, SCIP_AggrRow::local, SCIP_AggrRow::nnz, SCIP_AggrRow::nrows, NULL, QUAD_ARRAY_SIZE, QUAD_ASSIGN_Q, SCIP_AggrRow::rank, SCIP_AggrRow::rowsinds, SCIP_AggrRow::rowweights, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, SCIPduplicateBlockMemoryArray, SCIPgetNVars(), SCIP_AggrRow::slacksign, and SCIP_AggrRow::vals.

    Referenced by SCIPcertificateNewAggrInfo().

    ◆ SCIPaggrRowAddRow()

    SCIP_RETCODE SCIPaggrRowAddRow ( SCIP scip,
    SCIP_AGGRROW aggrrow,
    SCIP_ROW row,
    SCIP_Real  weight,
    int  sidetype 
    )

    add weighted row to the aggregation row

    add weighted row to aggregation row

    Parameters
    scipSCIP data structure
    aggrrowaggregation row
    rowrow to add to aggregation row
    weightscale for adding given row to aggregation row
    sidetypespecify row side type (-1 = lhs, 0 = automatic, 1 = rhs)

    Definition at line 2804 of file cuts.c.

    References SCIP_Row::constant, FALSE, SCIP_AggrRow::inds, SCIP_Row::integral, SCIP_Row::lhs, SCIP_AggrRow::local, SCIP_Row::local, SCIP_Row::lppos, MAX, SCIP_AggrRow::nnz, SCIP_AggrRow::nrows, QUAD, SCIP_AggrRow::rank, SCIP_Row::rank, SCIP_Row::rhs, SCIP_AggrRow::rowsinds, SCIP_AggrRow::rowssize, SCIP_AggrRow::rowweights, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPcalcMemGrowSize(), SCIPceil(), SCIPfloor(), SCIPisInfinity(), SCIPquadprecProdDD, SCIPquadprecSumQQ, SCIPreallocBlockMemoryArray, SCIProwGetLPPos(), SCIP_AggrRow::slacksign, TRUE, SCIP_AggrRow::vals, and varVecAddScaledRowCoefsQuad().

    Referenced by addRowToAggrRow(), aggregateNextRow(), and aggregation().

    ◆ SCIPaggrRowAddRowSafely()

    SCIP_RETCODE SCIPaggrRowAddRowSafely ( SCIP scip,
    SCIP_AGGRROW aggrrow,
    SCIP_ROW row,
    SCIP_Real  weight,
    int  sidetype,
    SCIP_Bool success 
    )

    add weighted row to aggregation row

    Note
    this method is the variant of SCIPaggrRowAddRow that is safe to use in exact solving mode
    Parameters
    scipSCIP data structure
    aggrrowaggregation row
    rowrow to add to aggregation row
    weightscale for adding given row to aggregation row
    sidetypespecify row side type (-1 = lhs, 0 = automatic, 1 = rhs)
    successwas the row added successfully

    Definition at line 2887 of file cuts.c.

    References SCIP_Row::constant, FALSE, SCIP_AggrRow::inds, SCIP_Row::integral, SCIP_Row::lhs, SCIP_AggrRow::local, SCIP_Row::local, MAX, SCIP_AggrRow::nnz, SCIP_AggrRow::nrows, NULL, QUAD_ASSIGN, QUAD_TO_DBL, SCIP_AggrRow::rank, SCIP_Row::rank, SCIP_Row::rhs, SCIP_AggrRow::rowsinds, SCIP_AggrRow::rowssize, SCIP_AggrRow::rowweights, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPcalcMemGrowSize(), SCIPintervalGetRoundingMode(), SCIPintervalSetRoundingMode(), SCIPintervalSetRoundingModeDownwards(), SCIPintervalSetRoundingModeUpwards(), SCIPisExact(), SCIPisInfinity(), SCIPreallocBlockMemoryArray, SCIProwExactGetRowRhs(), SCIProwExactHasFpRelax(), SCIProwGetLPPos(), SCIProwGetRowExact(), SCIP_AggrRow::slacksign, TRUE, SCIP_AggrRow::vals, and varVecAddScaledRowCoefsSafely().

    Referenced by addRowToAggrRow().

    ◆ SCIPaggrRowCancelVarWithBound()

    void SCIPaggrRowCancelVarWithBound ( SCIP scip,
    SCIP_AGGRROW aggrrow,
    SCIP_VAR var,
    int  pos,
    SCIP_Bool valid 
    )

    Removes a given variable var from position pos the aggregation row and updates the right-hand side according to sign of the coefficient, i.e., rhs -= coef * bound, where bound = lb if coef >= 0 and bound = ub, otherwise.

    Note
    : The choice of global or local bounds depend on the validity (global or local) of the aggregation row.
    : The list of non-zero indices will be updated by swapping the last non-zero index to pos.
    Parameters
    scipSCIP data structure
    aggrrowthe aggregation row
    varvariable that should be removed
    posposition of the variable in the aggregation row
    validpointer to return whether the aggregation row is still valid

    Definition at line 3008 of file cuts.c.

    References FALSE, SCIP_AggrRow::inds, SCIP_AggrRow::local, SCIP_AggrRow::nnz, NULL, QUAD, QUAD_ARRAY_LOAD, QUAD_ARRAY_STORE, QUAD_ASSIGN, QUAD_HI, QUAD_TO_DBL, SCIP_Real, SCIPinfinity(), SCIPisInfinity(), SCIPquadprecProdQD, SCIPquadprecSumQQ, SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetProbindex(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), TRUE, and SCIP_AggrRow::vals.

    ◆ SCIPaggrRowAddObjectiveFunction()

    SCIP_RETCODE SCIPaggrRowAddObjectiveFunction ( SCIP scip,
    SCIP_AGGRROW aggrrow,
    SCIP_Real  rhs,
    SCIP_Real  scale 
    )

    add the objective function with right-hand side rhs and scaled by scale to the aggregation row

    Parameters
    scipSCIP data structure
    aggrrowthe aggregation row
    rhsright-hand side of the artificial row
    scalescalar

    Definition at line 3067 of file cuts.c.

    References SCIP_AggrRow::inds, SCIP_AggrRow::nnz, NONZERO, NULL, QUAD, QUAD_ARRAY_LOAD, QUAD_ARRAY_STORE, QUAD_ASSIGN, QUAD_HI, SCIP_OKAY, SCIP_Real, SCIPgetNVars(), SCIPgetVars(), SCIPisZero(), SCIPquadprecProdDD, SCIPquadprecSumQQ, SCIPvarGetObj(), SCIPvarGetProbindex(), and SCIP_AggrRow::vals.

    Referenced by aggregation(), and SCIPgetDualProof().

    ◆ SCIPaggrRowAddObjectiveFunctionSafely()

    SCIP_RETCODE SCIPaggrRowAddObjectiveFunctionSafely ( SCIP scip,
    SCIP_AGGRROW aggrrow,
    SCIP_Real  rhs,
    SCIP_Real  scale 
    )

    add the objective function with right-hand side rhs and scaled by scale to the aggregation row variant of SCIPaggrRowAddObjectiveFunction that is safe to use in exact mode

    Parameters
    scipSCIP data structure
    aggrrowthe aggregation row
    rhsright-hand side of the artificial row
    scalescalar

    ◆ SCIPaggrRowAddCustomCons()

    SCIP_RETCODE SCIPaggrRowAddCustomCons ( SCIP scip,
    SCIP_AGGRROW aggrrow,
    int *  inds,
    SCIP_Real vals,
    int  len,
    SCIP_Real  rhs,
    SCIP_Real  weight,
    int  rank,
    SCIP_Bool  local 
    )

    add weighted constraint to the aggregation row

    Parameters
    scipSCIP data structure
    aggrrowthe aggregation row
    indsvariable problem indices in constraint to add to the aggregation row
    valsvalues of constraint to add to the aggregation row
    lenlength of constraint to add to the aggregation row
    rhsright hand side of constraint to add to the aggregation row
    weight(positive) scale for adding given constraint to the aggregation row
    rankrank to use for given constraint
    localis constraint only valid locally

    Definition at line 3143 of file cuts.c.

    References SCIP_AggrRow::inds, SCIP_AggrRow::local, MAX, SCIP_AggrRow::nnz, NONZERO, QUAD, QUAD_ARRAY_LOAD, QUAD_ARRAY_STORE, QUAD_HI, SCIP_AggrRow::rank, REALABS, SCIP_OKAY, SCIP_Real, SCIPisInfinity(), SCIPquadprecProdDD, SCIPquadprecSumQQ, and SCIP_AggrRow::vals.

    Referenced by computeMIRForOptimalityCut(), and MirReduction().

    ◆ SCIPaggrRowCalcEfficacyNorm()

    SCIP_Real SCIPaggrRowCalcEfficacyNorm ( SCIP scip,
    SCIP_AGGRROW aggrrow 
    )

    calculates the efficacy norm of the given aggregation row, which depends on the "separating/efficacynorm" parameter

    Returns
    the efficacy norm of the given aggregation row, which depends on the "separating/efficacynorm" parameter
    Parameters
    scipSCIP data structure
    aggrrowthe aggregation row

    Definition at line 3243 of file cuts.c.

    References calcEfficacyNormQuad(), SCIP_AggrRow::inds, SCIP_AggrRow::nnz, and SCIP_AggrRow::vals.

    Referenced by separateAlternativeProofs().

    ◆ SCIPaggrRowClear()

    void SCIPaggrRowClear ( SCIP_AGGRROW aggrrow)

    clear all entries in the aggregation row but do not free the internal memory

    clear all entries int the aggregation row but don't free memory

    Parameters
    aggrrowthe aggregation row

    Definition at line 3218 of file cuts.c.

    References FALSE, SCIP_AggrRow::inds, SCIP_AggrRow::local, SCIP_AggrRow::nnz, SCIP_AggrRow::nrows, QUAD, QUAD_ARRAY_STORE, QUAD_ASSIGN, SCIP_AggrRow::rank, SCIP_Real, and SCIP_AggrRow::vals.

    Referenced by aggregation(), SCIPaggrRowSumRows(), and SCIPgetDualProof().

    ◆ SCIPaggrRowClearSafely()

    void SCIPaggrRowClearSafely ( SCIP_AGGRROW aggrrow)

    version for use in exact solving mode of SCIPaggrRowClear()

    Parameters
    aggrrowthe aggregation row

    Definition at line 3196 of file cuts.c.

    References FALSE, SCIP_AggrRow::inds, SCIP_AggrRow::local, SCIP_AggrRow::nnz, SCIP_AggrRow::nrows, QUAD_ASSIGN, SCIP_AggrRow::rank, and SCIP_AggrRow::vals.

    Referenced by SCIPaggrRowSumRows(), and SCIPgetDualProof().

    ◆ SCIPaggrRowSumRows()

    SCIP_RETCODE SCIPaggrRowSumRows ( SCIP scip,
    SCIP_AGGRROW aggrrow,
    SCIP_Real weights,
    int *  rowinds,
    int  nrowinds,
    SCIP_Bool  sidetypebasis,
    SCIP_Bool  allowlocal,
    int  negslack,
    int  maxaggrlen,
    SCIP_Bool valid 
    )

    aggregate rows using the given weights; the current content of the aggregation row, aggrrow, is overwritten

    Note
    this method is safe for usage in exact solving mode
    Parameters
    scipSCIP data structure
    aggrrowthe aggregation row
    weightsrow weights in row summation
    rowindsarray to store indices of non-zero entries of the weights array, or NULL
    nrowindsnumber of non-zero entries in weights array, -1 if rowinds is NULL
    sidetypebasischoose sidetypes of row (lhs/rhs) based on basis information?
    allowlocalshould local rows allowed to be used?
    negslackshould negative slack variables allowed to be used? (0: no, 1: only for integral rows, 2: yes)
    maxaggrlenmaximal length of aggregation row
    validis the aggregation valid

    Definition at line 3523 of file cuts.c.

    References addOneRow(), addOneRowSafely(), SCIP_Row::constant, FALSE, SCIP_Row::integral, SCIP_Row::lhs, SCIP_AggrRow::nrows, NULL, SCIP_Row::rhs, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddCertificateAggrInfo(), SCIPaggrRowClear(), SCIPaggrRowClearSafely(), SCIPaggrRowCreate(), SCIPaggrRowFree(), SCIPaggrRowRemoveZeros(), SCIPallocBufferArray, SCIPdebug, SCIPdebugMessage, SCIPfreeBufferArray, SCIPgetLPRowsData(), SCIPgetVarsData(), SCIPisCertified(), SCIPisExact(), SCIPprintRow(), SCIPrealIsExactlyIntegral(), and TRUE.

    Referenced by createCGCutCMIR(), createCGCutStrongCG(), generateClusterCuts(), generateGMICuts(), and SCIP_DECL_SEPAEXECLP().

    ◆ SCIPaggrRowRemoveZeros()

    void SCIPaggrRowRemoveZeros ( SCIP scip,
    SCIP_AGGRROW aggrrow,
    SCIP_Bool  useglbbounds,
    SCIP_Bool valid 
    )

    removes all (close enough to) zero entries in the aggregation row

    removes almost zero entries from the aggregation row.

    Parameters
    scipSCIP datastructure
    aggrrowthe aggregation row
    useglbboundsconsider global bound although the cut is local?
    validpointer to return whether the aggregation row is still valid

    Definition at line 3949 of file cuts.c.

    References FALSE, SCIP_AggrRow::inds, SCIP_AggrRow::local, SCIP_AggrRow::nnz, NULL, QUAD, QUAD_ASSIGN, QUAD_TO_DBL, removeZerosQuad(), removeZerosSafely(), SCIP_Real, SCIPisExact(), SCIPsumepsilon(), and SCIP_AggrRow::vals.

    Referenced by addLocalRows(), aggregateNextRow(), SCIPaggrRowSumRows(), SCIPgetDualProof(), and SCIPgetFarkasProof().

    ◆ SCIPaggrRowGetRowInds()

    int * SCIPaggrRowGetRowInds ( SCIP_AGGRROW aggrrow)

    get array with lp positions of aggregated rows

    get array with lp positions of rows used in aggregation

    Parameters
    aggrrowthe aggregation row

    Definition at line 3983 of file cuts.c.

    References SCIP_AggrRow::nrows, NULL, and SCIP_AggrRow::rowsinds.

    Referenced by aggregation().

    ◆ SCIPaggrRowGetRowWeights()

    SCIP_Real * SCIPaggrRowGetRowWeights ( SCIP_AGGRROW aggrrow)

    get array with weights of aggregated rows

    Parameters
    aggrrowthe aggregation row

    Definition at line 3994 of file cuts.c.

    References SCIP_AggrRow::nrows, NULL, and SCIP_AggrRow::rowweights.

    ◆ SCIPaggrRowHasRowBeenAdded()

    SCIP_Bool SCIPaggrRowHasRowBeenAdded ( SCIP_AGGRROW aggrrow,
    SCIP_ROW row 
    )

    checks whether a given row has been added to the aggregation row

    Parameters
    aggrrowthe aggregation row
    rowrow for which it is checked whether it has been added to the aggregation

    Definition at line 4005 of file cuts.c.

    References FALSE, SCIP_AggrRow::nrows, NULL, SCIP_AggrRow::rowsinds, SCIProwGetLPPos(), and TRUE.

    Referenced by aggregateNextRow().

    ◆ SCIPaggrRowGetAbsWeightRange()

    void SCIPaggrRowGetAbsWeightRange ( SCIP_AGGRROW aggrrow,
    SCIP_Real minabsrowweight,
    SCIP_Real maxabsrowweight 
    )

    gets the min and max absolute value of the weights used to aggregate the rows; must not be called for empty aggregation rows

    Parameters
    aggrrowthe aggregation row
    minabsrowweightpointer to store smallest absolute value of weights used for aggregating rows
    maxabsrowweightpointer to store largest absolute value of weights used for aggregating rows

    ◆ SCIPaggrRowGetInds()

    int * SCIPaggrRowGetInds ( SCIP_AGGRROW aggrrow)

    gets the array of corresponding variable problem indices for each non-zero in the aggregation row

    Parameters
    aggrrowaggregation row

    Definition at line 4028 of file cuts.c.

    References SCIP_AggrRow::inds, and NULL.

    Referenced by aggregateNextRow(), aggrRowGetMinActivitySafely(), conflictAnalyzeLP(), proofsetAddAggrrow(), SCIPaggrRowGetMinActivity(), SCIPcertificatePrintAggrrow(), SCIPrunBoundHeuristic(), separateAlternativeProofs(), and tightenDualproof().

    ◆ SCIPaggrRowGetNNz()

    int SCIPaggrRowGetNNz ( SCIP_AGGRROW aggrrow)

    ◆ SCIPaggrRowGetValue()

    static INLINE SCIP_Real SCIPaggrRowGetValue ( SCIP_AGGRROW aggrrow,
    int  i 
    )
    static

    gets the non-zero value for the given non-zero index

    Parameters
    aggrrowthe aggregation row
    inon-zero index; must be between 0 and SCIPaggrRowGetNNz(aggrrow) - 1

    Definition at line 273 of file cuts.h.

    References SCIP_AggrRow::inds, QUAD, QUAD_ARRAY_LOAD, QUAD_TO_DBL, SCIP_Real, and SCIP_AggrRow::vals.

    ◆ SCIPaggrRowGetValueSafely()

    static INLINE SCIP_Real SCIPaggrRowGetValueSafely ( SCIP_AGGRROW aggrrow,
    int  i 
    )
    static

    gets the non-zero value for the given non-zero index

    Parameters
    aggrrowthe aggregation row
    inon-zero index; must be between 0 and SCIPaggrRowGetNNz(aggrrow) - 1

    Definition at line 287 of file cuts.h.

    References SCIP_AggrRow::inds, and SCIP_AggrRow::vals.

    Referenced by SCIPcertificatePrintAggrrow().

    ◆ SCIPaggrRowGetProbvarValue()

    static INLINE SCIP_Real SCIPaggrRowGetProbvarValue ( SCIP_AGGRROW aggrrow,
    int  probindex 
    )
    static

    gets the non-zero value for the given problem index of a variable

    Parameters
    aggrrowthe aggregation row
    probindexproblem index of variable; must be between 0 and SCIPgetNVars(scip) - 1

    Definition at line 297 of file cuts.h.

    References QUAD, QUAD_ARRAY_LOAD, QUAD_TO_DBL, SCIP_Real, and SCIP_AggrRow::vals.

    Referenced by aggregateNextRow(), conflictAnalyzeLP(), proofsetAddAggrrow(), SCIPaggrRowGetMinActivity(), SCIPrunBoundHeuristic(), and separateAlternativeProofs().

    ◆ SCIPaggrRowGetRank()

    int SCIPaggrRowGetRank ( SCIP_AGGRROW aggrrow)

    gets the rank of the aggregation row

    Parameters
    aggrrowaggregation row

    Definition at line 4048 of file cuts.c.

    References NULL, and SCIP_AggrRow::rank.

    ◆ SCIPaggrRowIsLocal()

    SCIP_Bool SCIPaggrRowIsLocal ( SCIP_AGGRROW aggrrow)

    checks if the aggregation row is only valid locally

    Parameters
    aggrrowaggregation row

    Definition at line 4058 of file cuts.c.

    References SCIP_AggrRow::local, and NULL.

    ◆ SCIPaggrRowGetRhs()

    SCIP_Real SCIPaggrRowGetRhs ( SCIP_AGGRROW aggrrow)

    ◆ SCIPaggrRowGetNRows()

    int SCIPaggrRowGetNRows ( SCIP_AGGRROW aggrrow)

    gets the number of row aggregations

    get number of aggregated rows

    Parameters
    aggrrowthe aggregation row

    Definition at line 3973 of file cuts.c.

    References SCIP_AggrRow::nrows, and NULL.

    Referenced by aggregation().

    ◆ SCIPcalcMIR()

    SCIP_RETCODE SCIPcalcMIR ( SCIP scip,
    SCIP_SOL sol,
    SCIP_Bool  postprocess,
    SCIP_Real  boundswitch,
    int  vartypeusevbds,
    SCIP_Bool  allowlocal,
    SCIP_Bool  fixintegralrhs,
    int *  boundsfortrans,
    SCIP_BOUNDTYPE boundtypesfortrans,
    SCIP_Real  minfrac,
    SCIP_Real  maxfrac,
    SCIP_Real  scale,
    SCIP_AGGRROW aggrrow,
    SCIP_Real cutcoefs,
    SCIP_Real cutrhs,
    int *  cutinds,
    int *  cutnnz,
    SCIP_Real cutefficacy,
    int *  cutrank,
    SCIP_Bool cutislocal,
    SCIP_Bool success 
    )

    calculates an MIR cut out of the weighted sum of LP rows given by an aggregation row; the aggregation row must not contain non-zero weights for modifiable rows, because these rows cannot participate in an 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.

    calculates an 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 an 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.

    Note
    this method is safe for usage in exact solving mode
    Parameters
    scipSCIP data structure
    solthe solution that should be separated, or NULL for LP solution
    postprocessapply a post-processing step to the resulting cut?
    boundswitchfraction of domain up to which lower bound is used in transformation
    vartypeusevbdsfor all variable types with index smaller than this number, variable type substitution is allowed. The indices are: 0: continuous, 1: continuous implint., 2: integer implint, 3: binary implint, 4: integer, 5: binary
    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
    minfracminimal fractionality of rhs to produce MIR cut for
    maxfracmaximal fractionality of rhs to produce MIR cut for
    scaleadditional scaling factor multiplied to the aggrrow; must be positive
    aggrrowaggrrow to compute MIR cut for
    cutcoefsarray to store the non-zero coefficients in the cut if its efficacy improves cutefficacy
    cutrhspointer to store the right hand side of the cut if its efficacy improves cutefficacy
    cutindsarray to store the indices of non-zero coefficients in the cut if its efficacy improves cutefficacy
    cutnnzpointer to store the number of non-zeros in the cut if its efficacy improves cutefficacy
    cutefficacypointer to store efficacy of cut, or NULL
    cutrankpointer to return rank of generated cut or NULL if it improves cutefficacy
    cutislocalpointer to store whether the generated cut is only valid locally if it improves cutefficacy
    successpointer to store whether the returned coefficients are a valid MIR cut and it improves cutefficacy

    Definition at line 7923 of file cuts.c.

    References BMScopyMemoryArray, calcEfficacyDenseStorageQuad(), calcMIRSafely(), MIR_Data::cutcoefs, MIR_Data::cutinds, cutsRoundMIR(), cutsSubstituteMIR(), cutsTransformMIR(), FALSE, SCIP_AggrRow::inds, MIR_Data::isenfint, MIR_Data::isimplint, SCIP_AggrRow::local, MAXCMIRSCALE, MIR_Data::nbinimplvars, MIR_Data::nbinvars, MIR_Data::ncontimplvars, MIR_Data::ncontvars, MIR_Data::ncutinds, MIR_Data::nintimplvars, MIR_Data::nintvars, SCIP_AggrRow::nnz, SCIP_AggrRow::nrows, NSECTIONS, NULL, MIR_Data::nvars, postprocessCutQuad(), QUAD, QUAD_ARRAY_LOAD, QUAD_ARRAY_SIZE, QUAD_ARRAY_STORE, QUAD_ASSIGN, QUAD_ASSIGN_Q, QUAD_HI, QUAD_LO, QUAD_TO_DBL, SCIP_AggrRow::rank, REALABS, removeZerosQuad(), SCIP_AggrRow::rowsinds, SCIP_AggrRow::rowweights, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPABORT, SCIPallocBuffer, SCIPallocBufferArray, SCIPallocCleanBufferArray, SCIPdebug, SCIPdebugMsg, SCIPepsilon(), SCIPfreeBuffer, SCIPfreeBufferArray, SCIPfreeCleanBufferArray, SCIPgetNBinImplVars(), SCIPgetNBinVars(), SCIPgetNContImplVars(), SCIPgetNContVars(), SCIPgetNIntImplVars(), SCIPgetNIntVars(), SCIPgetNVars(), SCIPgetVars(), SCIPisEfficacious(), SCIPisExact(), SCIPisPositive(), SCIPquadprecEpsFloorQ, SCIPquadprecProdQD, SCIPquadprecSumDD, SCIPquadprecSumQQ, SCIPsortDownInt(), SCIPsumepsilon(), MIR_Data::secindices, MIR_Data::secnnz, SCIP_AggrRow::slacksign, MIR_Data::totalnnz, TRUE, MIR_Data::usevbds, SCIP_AggrRow::vals, MIR_Data::vars, and varSection().

    Referenced by computeMIRForOptimalityCut(), createCGCutCMIR(), generateClusterCuts(), generateGMICuts(), MirReduction(), and SCIP_DECL_SEPAEXECLP().

    ◆ SCIPcutGenerationHeuristicCMIR()

    SCIP_RETCODE SCIPcutGenerationHeuristicCMIR ( SCIP scip,
    SCIP_SOL sol,
    SCIP_Bool  postprocess,
    SCIP_Real  boundswitch,
    int  vartypeusevbds,
    SCIP_Bool  allowlocal,
    int  maxtestdelta,
    int *  boundsfortrans,
    SCIP_BOUNDTYPE boundtypesfortrans,
    SCIP_Real  minfrac,
    SCIP_Real  maxfrac,
    SCIP_AGGRROW aggrrow,
    SCIP_Real cutcoefs,
    SCIP_Real cutrhs,
    int *  cutinds,
    int *  cutnnz,
    SCIP_Real cutefficacy,
    int *  cutrank,
    SCIP_Bool cutislocal,
    SCIP_Bool success 
    )

    calculates an MIR cut out of the weighted sum of LP rows given by an aggregation row; the aggregation row must not contain non-zero weights for modifiable rows, because these rows cannot participate in an MIR cut. The function uses a cut generation heuristic which tries different scaling factors and complementations of the variables to improve the cut's efficacy. For further details we refer to:

    Marchand, H., & Wolsey, L. A. (2001). Aggregation and mixed integer rounding to solve MIPs. Operations research, 49(3), 363-371.

    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.

    calculates an MIR cut out of an aggregation of LP rows

    Given the aggregation, it is transformed to a mixed knapsack set via complementation (using bounds or variable bounds) Then, different scalings of the mkset are used to generate a MIR and the best is chosen. One of the steps of the MIR is to round the coefficients of the integer variables down, so one would prefer to have integer coefficients for integer variables which are far away from their bounds in the mkset.

    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
    postprocessapply a post-processing step to the resulting cut?
    boundswitchfraction of domain up to which lower bound is used in transformation
    vartypeusevbdsfor all variable types with index smaller than this number, variable type substitution is allowed. The indices are: 0: continuous, 1: continuous implint., 2: integer implint, 3: binary implint, 4: integer, 5: binary
    allowlocalshould local information allowed to be used, resulting in a local cut?
    maxtestdeltamaximum number of deltas to test
    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
    minfracminimal fractionality of rhs to produce MIR cut for
    maxfracmaximal fractionality of rhs to produce MIR cut for
    aggrrowaggrrow to compute MIR cut for
    cutcoefsarray to store the non-zero coefficients in the cut
    cutrhspointer to store the right hand side of the cut
    cutindsarray to store the problem indices of variables with a non-zero coefficient in the cut
    cutnnzpointer to store the number of non-zeros in the cut
    cutefficacypointer to store efficacy of best cut; only cuts that are strictly better than the value of this efficacy on input to this function are returned
    cutrankpointer to return rank of generated cut (or NULL)
    cutislocalpointer to store whether the generated cut is only valid locally
    successpointer to store whether a valid and efficacious cut was returned

    Definition at line 8339 of file cuts.c.

    References BMScopyMemoryArray, calcEfficacyDenseStorageQuad(), computeMIREfficacy(), MIR_Data::cutcoefs, MIR_Data::cutinds, cutsRoundMIR(), cutsSubstituteMIR(), cutsTransformMIR(), EPSZ, FALSE, findBestLb(), findBestUb(), SCIP_AggrRow::inds, SCIP_Row::integral, MIR_Data::isenfint, MIR_Data::isimplint, SCIP_Row::lhs, SCIP_AggrRow::local, MAX, MIN, MIR_Data::nbinimplvars, MIR_Data::nbinvars, MIR_Data::ncontimplvars, MIR_Data::ncontvars, MIR_Data::ncutinds, MIR_Data::nintimplvars, MIR_Data::nintvars, SCIP_AggrRow::nnz, SCIP_AggrRow::nrows, NSECTIONS, NULL, MIR_Data::nvars, postprocessCutQuad(), QUAD, QUAD_ARRAY_LOAD, QUAD_ARRAY_SIZE, QUAD_ARRAY_STORE, QUAD_ASSIGN, QUAD_ASSIGN_Q, QUAD_HI, QUAD_LO, QUAD_TO_DBL, SCIP_AggrRow::rank, REALABS, removeZerosQuad(), SCIP_Row::rhs, SCIP_AggrRow::rowsinds, SCIP_AggrRow::rowweights, SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPABORT, SCIPallocBuffer, SCIPallocBufferArray, SCIPallocCleanBufferArray, SCIPcalcIntegralScalar(), SCIPceil(), SCIPdebug, SCIPdebugMsg, SCIPepsilon(), SCIPfloor(), SCIPfreeBuffer, SCIPfreeBufferArray, SCIPfreeCleanBufferArray, SCIPgetLPRows(), SCIPgetNBinImplVars(), SCIPgetNBinVars(), SCIPgetNContImplVars(), SCIPgetNContVars(), SCIPgetNIntImplVars(), SCIPgetNIntVars(), SCIPgetNVars(), SCIPgetRowSolActivity(), SCIPgetSolVal(), SCIPgetVars(), SCIPinfinity(), SCIPisEfficacious(), SCIPisEQ(), SCIPisFeasIntegral(), SCIPisGT(), SCIPisInfinity(), SCIPquadprecEpsFloorQ, SCIPquadprecProdDD, SCIPquadprecProdQD, SCIPquadprecSumDD, SCIPquadprecSumQQ, SCIPrelDiff(), SCIPsortDownInt(), SCIPsortDownRealRealInt(), SCIPsumepsilon(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetType(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), SCIPvarGetVlbCoefs(), SCIPvarGetVlbConstants(), SCIPvarGetVlbVars(), SCIPvarGetVubCoefs(), SCIPvarGetVubConstants(), SCIPvarGetVubVars(), SCIPvarIsIntegral(), MIR_Data::secindices, MIR_Data::secnnz, SCIP_AggrRow::slacksign, SQR, MIR_Data::totalnnz, TRUE, MIR_Data::usevbds, SCIP_AggrRow::vals, MIR_Data::vars, and varSection().

    Referenced by aggregation(), and separateAlternativeProofs().

    ◆ SCIPcalcFlowCover()

    SCIP_RETCODE SCIPcalcFlowCover ( SCIP scip,
    SCIP_SOL sol,
    SCIP_Bool  postprocess,
    SCIP_Real  boundswitch,
    SCIP_Bool  allowlocal,
    SCIP_AGGRROW aggrrow,
    SCIP_Real cutcoefs,
    SCIP_Real cutrhs,
    int *  cutinds,
    int *  cutnnz,
    SCIP_Real cutefficacy,
    int *  cutrank,
    SCIP_Bool cutislocal,
    SCIP_Bool success 
    )

    calculates a lifted simple generalized flow cover cut out of the weighted sum of LP rows given by an aggregation row; the aggregation row must not contain non-zero weights for modifiable rows, because these rows cannot participate in the cut. For further details we refer to:

    Gu, Z., Nemhauser, G. L., & Savelsbergh, M. W. (1999). Lifted flow cover inequalities for mixed 0-1 integer programs. Mathematical Programming, 85(3), 439-467.

    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
    postprocessapply a post-processing step to the resulting cut?
    boundswitchfraction of domain up to which lower bound is used in transformation
    allowlocalshould local information allowed to be used, resulting in a local cut?
    aggrrowthe aggregation row to compute flow cover cut for
    cutcoefsarray to store the non-zero coefficients in the cut
    cutrhspointer to store the right hand side of the cut
    cutindsarray to store the problem indices of variables with a non-zero coefficient in the cut
    cutnnzpointer to store the number of non-zeros in the cut
    cutefficacypointer to store the efficacy of the cut, or NULL
    cutrankpointer to return rank of generated cut
    cutislocalpointer to store whether the generated cut is only valid locally
    successpointer to store whether a valid cut was returned

    Definition at line 11645 of file cuts.c.

    References allocSNFRelaxation(), calcEfficacy(), constructSNFRelaxation(), destroySNFRelaxation(), FALSE, generateLiftedFlowCoverCut(), getFlowCover(), SCIP_AggrRow::inds, SCIP_AggrRow::local, SCIP_AggrRow::nnz, NULL, postprocessCut(), QUAD, QUAD_ASSIGN, QUAD_TO_DBL, SCIP_AggrRow::rank, removeZeros(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPallocCleanBufferArray, SCIPdebug, SCIPdebugMsg, SCIPfreeBufferArray, SCIPfreeCleanBufferArray, SCIPgetNCuts(), SCIPgetNLPs(), SCIPgetNVars(), SCIPsumepsilon(), and SCIP_AggrRow::vals.

    Referenced by aggregation(), computeMIRForOptimalityCut(), and separateAlternativeProofs().

    ◆ SCIPcalcKnapsackCover()

    SCIP_RETCODE SCIPcalcKnapsackCover ( SCIP scip,
    SCIP_SOL sol,
    SCIP_Bool  allowlocal,
    SCIP_AGGRROW aggrrow,
    SCIP_Real cutcoefs,
    SCIP_Real cutrhs,
    int *  cutinds,
    int *  cutnnz,
    SCIP_Real cutefficacy,
    int *  cutrank,
    SCIP_Bool cutislocal,
    SCIP_Bool success 
    )

    calculates a lifted knapsack cover cut out of the weighted sum of LP rows given by an aggregation row; the aggregation row must not contain non-zero weights for modifiable rows, because these rows cannot participate in the cut. For further details we refer to:

    Letchford, A. N., & Souli, G. (2019). On lifted cover inequalities: A new lifting procedure with unusual properties. Operations Research Letters, 47(2), 83-87.

    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
    allowlocalshould local information allowed to be used, resulting in a local cut?
    aggrrowthe aggregation row to compute flow cover cut for
    cutcoefsarray to store the non-zero coefficients in the cut
    cutrhspointer to store the right hand side of the cut
    cutindsarray to store the problem indices of variables with a non-zero coefficient in the cut
    cutnnzpointer to store the number of non-zeros in the cut
    cutefficacypointer to store the efficacy of the cut, or NULL
    cutrankpointer to return rank of generated cut
    cutislocalpointer to store whether the generated cut is only valid locally
    successpointer to store whether a valid cut was returned

    Definition at line 12270 of file cuts.c.

    References BMScopyMemoryArray, calcEfficacy(), calcEfficacyDenseStorageQuad(), computeInitialKnapsackCover(), cutsTransformKnapsackCover(), evaluateLiftingFunctionKnapsack(), FALSE, SCIP_AggrRow::inds, SCIP_AggrRow::local, SCIP_AggrRow::nnz, NONZERO, SCIP_AggrRow::nrows, NULL, prepareLiftingData(), QUAD, QUAD_ARRAY_LOAD, QUAD_ARRAY_SIZE, QUAD_ARRAY_STORE, QUAD_ASSIGN, QUAD_ASSIGN_Q, QUAD_HI, QUAD_LO, QUAD_TO_DBL, SCIP_AggrRow::rank, SCIP_AggrRow::rowweights, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPABORT, SCIPallocBufferArray, SCIPallocCleanBufferArray, SCIPdebug, SCIPdebugMsg, SCIPfreeBufferArray, SCIPfreeCleanBufferArray, SCIPgetNVars(), SCIPisGT(), SCIPquadprecSumQD, SCIP_AggrRow::slacksign, and SCIP_AggrRow::vals.

    Referenced by aggregation().

    ◆ SCIPcalcStrongCG()

    SCIP_RETCODE SCIPcalcStrongCG ( SCIP scip,
    SCIP_SOL sol,
    SCIP_Bool  postprocess,
    SCIP_Real  boundswitch,
    int  vartypeusevbds,
    SCIP_Bool  allowlocal,
    SCIP_Real  minfrac,
    SCIP_Real  maxfrac,
    SCIP_Real  scale,
    SCIP_AGGRROW aggrrow,
    SCIP_Real cutcoefs,
    SCIP_Real cutrhs,
    int *  cutinds,
    int *  cutnnz,
    SCIP_Real cutefficacy,
    int *  cutrank,
    SCIP_Bool cutislocal,
    SCIP_Bool success 
    )

    calculates a strong CG cut out of the weighted sum of LP rows given by an aggregation row; the aggregation row must not contain non-zero weights for modifiable rows, because these rows cannot participate in a strongcg 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
    postprocessapply a post-processing step to the resulting cut?
    boundswitchfraction of domain up to which lower bound is used in transformation
    vartypeusevbdsfor all variable types with index smaller than this number, variable type substitution is allowed. The indices are: 0: continuous, 1: continuous implint., 2: integer implint, 3: binary implint, 4: integer, 5: binary
    allowlocalshould local information allowed to be used, resulting in a local cut?
    minfracminimal fractionality of rhs to produce strong CG cut for
    maxfracmaximal fractionality of rhs to produce strong CG cut for
    scaleadditional scaling factor multiplied to all rows
    aggrrowthe aggregation row to compute a strong CG cut for
    cutcoefsarray to store the non-zero coefficients in the cut
    cutrhspointer to store the right hand side of the cut
    cutindsarray to store the problem indices of variables with a non-zero coefficient in the cut
    cutnnzpointer to store the number of non-zeros in the cut
    cutefficacypointer to store the efficacy of the cut, or NULL
    cutrankpointer to return rank of generated cut
    cutislocalpointer to store whether the generated cut is only valid locally
    successpointer to store whether a valid cut was returned

    Definition at line 13281 of file cuts.c.

    References ABS, BMScopyMemoryArray, calcEfficacy(), MIR_Data::cutcoefs, MIR_Data::cutinds, cutsRoundStrongCG(), cutsSubstituteStrongCG(), cutsTransformStrongCG(), FALSE, SCIP_AggrRow::inds, MIR_Data::isenfint, MIR_Data::isimplint, SCIP_AggrRow::local, MIR_Data::nbinimplvars, MIR_Data::nbinvars, MIR_Data::ncontimplvars, MIR_Data::ncontvars, MIR_Data::ncutinds, MIR_Data::nintimplvars, MIR_Data::nintvars, SCIP_AggrRow::nnz, SCIP_AggrRow::nrows, NSECTIONS, NULL, MIR_Data::nvars, postprocessCutQuad(), QUAD, QUAD_ARRAY_LOAD, QUAD_ARRAY_SIZE, QUAD_ARRAY_STORE, QUAD_ASSIGN, QUAD_ASSIGN_Q, QUAD_HI, QUAD_LO, QUAD_TO_DBL, SCIP_AggrRow::rank, removeZerosQuad(), SCIP_AggrRow::rowsinds, SCIP_AggrRow::rowweights, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBuffer, SCIPallocBufferArray, SCIPallocCleanBufferArray, SCIPceil(), SCIPdebug, SCIPdebugMsg, SCIPepsilon(), SCIPfreeBuffer, SCIPfreeBufferArray, SCIPfreeCleanBufferArray, SCIPgetHugeValue(), SCIPgetNBinImplVars(), SCIPgetNBinVars(), SCIPgetNContImplVars(), SCIPgetNContVars(), SCIPgetNIntImplVars(), SCIPgetNIntVars(), SCIPgetNVars(), SCIPgetVars(), SCIPisPositive(), SCIPquadprecDivDQ, SCIPquadprecEpsFloorQ, SCIPquadprecProdQD, SCIPquadprecSumDD, SCIPquadprecSumQD, SCIPquadprecSumQQ, SCIPsortDownInt(), SCIPsumepsilon(), MIR_Data::secindices, MIR_Data::secnnz, SCIP_AggrRow::slacksign, MIR_Data::totalnnz, TRUE, MIR_Data::usevbds, SCIP_AggrRow::vals, MIR_Data::vars, and varSection().

    Referenced by createCGCutStrongCG(), and SCIP_DECL_SEPAEXECLP().

    ◆ SCIPcutGetRow()

    SCIP_ROW * SCIPcutGetRow ( SCIP_CUT cut)

    gets the row of the cut

    Parameters
    cutcut

    Definition at line 382 of file cutpool.c.

    References NULL, and SCIP_Cut::row.

    Referenced by copyCuts(), and takeCut().

    ◆ SCIPcutGetAge()

    int SCIPcutGetAge ( SCIP_CUT cut)

    gets the age of the cut: the number of consecutive cut pool separation rounds where the cut was neither in the LP nor violated

    Parameters
    cutcut

    Definition at line 392 of file cutpool.c.

    References SCIP_Cut::age, and NULL.

    Referenced by takeCut().

    ◆ SCIPcutGetLPActivityQuot()

    SCIP_Real SCIPcutGetLPActivityQuot ( SCIP_CUT cut)

    returns the ratio of LPs where the row belonging to this cut was active in an LP solution, i.e. where the age of its row has not been increased

    See also
    SCIPcutGetAge() to get the age of a cut
    Parameters
    cutcut

    Definition at line 406 of file cutpool.c.

    References NULL, SCIP_Cut::row, SCIP_Longint, SCIP_Real, SCIProwGetActiveLPCount(), and SCIProwGetNLPsAfterCreation().

    Referenced by takeCut().

    ◆ SCIPcutpoolGetCuts()

    SCIP_CUT ** SCIPcutpoolGetCuts ( SCIP_CUTPOOL cutpool)

    gets array of cuts in the cut pool

    Parameters
    cutpoolcut pool

    Definition at line 1067 of file cutpool.c.

    References SCIP_Cutpool::cuts, and NULL.

    Referenced by SCIPgetDelayedPoolCuts(), and SCIPgetPoolCuts().

    ◆ SCIPcutpoolGetNCuts()

    int SCIPcutpoolGetNCuts ( SCIP_CUTPOOL cutpool)

    get number of cuts in the cut pool

    gets number of cuts in the cut pool

    Parameters
    cutpoolcut pool

    Definition at line 1077 of file cutpool.c.

    References SCIP_Cutpool::ncuts, and NULL.

    Referenced by SCIPgetNDelayedPoolCuts(), SCIPgetNPoolCuts(), and SCIPsepaExecLP().

    ◆ SCIPcutpoolGetMaxNCuts()

    SCIP_Longint SCIPcutpoolGetMaxNCuts ( SCIP_CUTPOOL cutpool)

    get maximum number of cuts that were stored in the cut pool at the same time

    gets maximum number of cuts that were stored in the cut pool at the same time

    Parameters
    cutpoolcut pool

    Definition at line 1087 of file cutpool.c.

    References SCIP_Cutpool::maxncuts, and NULL.

    Referenced by SCIPcollectSeparatorStatistics(), SCIPprintSeparatorStatistics(), and SCIPsolve().

    ◆ SCIPcutpoolGetTime()

    SCIP_Real SCIPcutpoolGetTime ( SCIP_CUTPOOL cutpool)

    gets time in seconds used for separating cuts from the pool

    Parameters
    cutpoolcut pool

    Definition at line 1097 of file cutpool.c.

    References NULL, SCIP_Cutpool::poolclock, and SCIPclockGetTime().

    Referenced by SCIPcollectSeparatorStatistics(), SCIPprintSeparatorStatistics(), and SCIPsolve().

    ◆ SCIPcutpoolGetNCalls()

    SCIP_Longint SCIPcutpoolGetNCalls ( SCIP_CUTPOOL cutpool)

    get number of times the cut pool was separated

    Parameters
    cutpoolcut pool

    Definition at line 1107 of file cutpool.c.

    References SCIP_Cutpool::ncalls, and NULL.

    Referenced by SCIPcollectSeparatorStatistics(), SCIPprintSeparatorStatistics(), and SCIPsolve().

    ◆ SCIPcutpoolGetNRootCalls()

    SCIP_Longint SCIPcutpoolGetNRootCalls ( SCIP_CUTPOOL cutpool)

    get number of times the cut pool was separated at the root

    Parameters
    cutpoolcut pool

    Definition at line 1117 of file cutpool.c.

    References SCIP_Cutpool::nrootcalls, and NULL.

    Referenced by SCIPcollectSeparatorStatistics(), SCIPprintSeparatorStatistics(), and SCIPsolve().

    ◆ SCIPcutpoolGetNCutsFound()

    SCIP_Longint SCIPcutpoolGetNCutsFound ( SCIP_CUTPOOL cutpool)

    get total number of cuts that were separated from the cut pool

    get total number of cuts that were added to the cut pool

    Parameters
    cutpoolcut pool

    Definition at line 1127 of file cutpool.c.

    References SCIP_Cutpool::ncutsfound, and NULL.

    Referenced by SCIPcollectSeparatorStatistics(), SCIPprintSeparatorStatistics(), and SCIPsolve().

    ◆ SCIPcutpoolGetNCutsAdded()

    SCIP_Longint SCIPcutpoolGetNCutsAdded ( SCIP_CUTPOOL cutpool)

    get total number of cuts that were added from the cut pool to sepastore

    Parameters
    cutpoolcut pool

    Definition at line 1137 of file cutpool.c.

    References SCIP_Cutpool::ncutsadded, and NULL.

    Referenced by SCIPcollectSeparatorStatistics(), SCIPprintSeparatorStatistics(), and SCIPsolve().

    ◆ SCIPgetCutLPSolCutoffDistance()

    SCIP_Real SCIPgetCutLPSolCutoffDistance ( SCIP scip,
    SCIP_SOL sol,
    SCIP_ROW cut 
    )

    returns row's cutoff distance in the direction of the given primal solution

    Returns
    the cutoff distance of the cut with respect to the LP solution in the direction of the given primal solution
    Precondition
    This method can be called if scip is in one of the following stages:
    Parameters
    scipSCIP data structure
    solsolution to compute direction for cutoff distance; must not be NULL
    cutseparated cut

    Definition at line 72 of file scip_cut.c.

    References FALSE, NULL, SCIP_CALL_ABORT, SCIPcheckStage, SCIProwGetLPSolCutoffDistance(), and TRUE.

    Referenced by scoring().

    ◆ SCIPgetCutEfficacy()

    SCIP_Real SCIPgetCutEfficacy ( SCIP scip,
    SCIP_SOL sol,
    SCIP_ROW cut 
    )

    returns efficacy of the cut with respect to the given primal solution or the current LP solution: e = -feasibility/norm

    Returns
    the efficacy of the cut with respect to the given primal solution or the current LP solution: e = -feasibility/norm
    Precondition
    This method can be called if scip is in one of the following stages:
    Parameters
    scipSCIP data structure
    solprimal CIP solution, or NULL for current LP solution
    cutseparated cut

    Definition at line 94 of file scip_cut.c.

    References FALSE, NULL, SCIP_CALL_ABORT, SCIPcheckStage, SCIProwGetLPEfficacy(), SCIProwGetSolEfficacy(), and TRUE.

    Referenced by addCut(), computeCut(), computeProjectionScore(), createCGCutCMIR(), createCGCutDirect(), createCGCutStrongCG(), filterWithDynamicParallelism(), SCIP_DECL_BRANCHEXECLP(), SCIP_DECL_NLHDLRENFO(), SCIP_DECL_SEPAEXECLP(), SCIPprocessRowprepNonlinear(), scoring(), separateCuts(), and separateDeterminant().

    ◆ SCIPisCutEfficacious()

    SCIP_Bool SCIPisCutEfficacious ( SCIP scip,
    SCIP_SOL sol,
    SCIP_ROW cut 
    )

    returns whether the cut's efficacy with respect to the given primal solution or the current LP solution is greater than the minimal cut efficacy

    Returns
    TRUE if the cut's efficacy with respect to the given primal solution or the current LP solution is greater than the minimal cut efficacy, otherwise FALSE
    Precondition
    This method can be called if scip is in one of the following stages:
    Parameters
    scipSCIP data structure
    solprimal CIP solution, or NULL for current LP solution
    cutseparated cut

    Definition at line 117 of file scip_cut.c.

    References FALSE, NULL, SCIP_CALL_ABORT, SCIPcheckStage, SCIProwIsLPEfficacious(), SCIProwIsSolEfficacious(), SCIPtreeGetCurrentDepth(), and TRUE.

    Referenced by addBoundCutSepa(), addCut(), computeCut(), createCGCutCMIR(), createCGCutStrongCG(), createRow(), generateOddCycleCut(), initsepaBoundInequalityFromCardinality(), initsepaBoundInequalityFromSOS1Cons(), SCIP_DECL_CONSSEPALP(), SCIP_DECL_CONSSEPASOL(), SCIP_DECL_SEPAEXECLP(), SCIPprocessRowprepNonlinear(), sepaImplBoundCutsSOS1(), separateCuts(), separateSequLiftedExtendedWeightInequality(), separateSequLiftedMinimalCoverInequality(), separateSupLiftedMinimalCoverInequality(), and sepaSubtour().

    ◆ SCIPisEfficacious()

    ◆ SCIPgetVectorEfficacyNorm()

    SCIP_Real SCIPgetVectorEfficacyNorm ( SCIP scip,
    SCIP_Real vals,
    int  nvals 
    )

    calculates the efficacy norm of the given vector, which depends on the "separating/efficacynorm" parameter

    Returns
    the efficacy norm of the given vector, which depends on the "separating/efficacynorm" parameter
    Parameters
    scipSCIP data structure
    valsarray of values
    nvalsnumber of values

    Definition at line 149 of file scip_cut.c.

    References FALSE, MAX, NULL, REALABS, SCIP_Real, SCIPerrorMessage, SCIPisZero(), and SQR.

    Referenced by calcEfficacy().

    ◆ SCIPisCutApplicable()

    SCIP_Bool SCIPisCutApplicable ( SCIP scip,
    SCIP_ROW cut 
    )

    indicates whether a cut is applicable

    If the cut has only one variable and this method returns FALSE, it may still be possible that the cut can be added to the LP (as a row instead of a boundchange), but it will be a very weak cut. The user is asked to avoid such cuts.

    Precondition
    This method can be called if scip is in one of the following stages:
    Returns
    whether the cut is modifiable, not a bound change, or a bound change that changes bounds by at least epsilon

    indicates whether a cut is applicable, i.e., will modify the LP when applied

    Precondition
    This method can be called if scip is in one of the following stages:
    Returns
    whether the cut is modifiable, not a bound change, or a bound change that changes bounds by at least epsilon
    Parameters
    scipSCIP data structure
    cutseparated cut

    Definition at line 207 of file scip_cut.c.

    References FALSE, SCIP_CALL_ABORT, SCIPcheckStage, SCIPsepastoreIsCutApplicable(), and TRUE.

    Referenced by addCut(), and SCIPprocessRowprepNonlinear().

    ◆ SCIPaddRow()

    SCIP_RETCODE SCIPaddRow ( SCIP scip,
    SCIP_ROW row,
    SCIP_Bool  forcecut,
    SCIP_Bool infeasible 
    )

    adds row to separation storage

    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:
    Parameters
    scipSCIP data structure
    rowrow
    forcecutshould the row be forced to enter the LP?
    infeasiblepointer to store whether row has been detected to be infeasible for local bounds

    Definition at line 225 of file scip_cut.c.

    References SCIP_Row::cols, FALSE, SCIP_Row::lhs, NULL, SCIP_Row::rhs, SCIP_CALL, SCIP_CONFTYPE_PROPAGATION, SCIP_OKAY, SCIP_Real, SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPanalyzeConflict(), SCIPcheckStage, SCIPcolGetVar(), SCIPgetDepth(), SCIPinitConflictAnalysis(), SCIPisConflictAnalysisApplicable(), SCIPisGT(), SCIPisInfinity(), SCIPisLT(), SCIPisZero(), SCIPprobAllColsInLP(), SCIProwGetMaxActivity(), SCIProwGetMinActivity(), SCIProwGetNNonz(), SCIPsepastoreAddCut(), SCIPtreeGetCurrentDepth(), SCIPtreeGetCurrentNode(), TRUE, and SCIP_Row::vals.

    Referenced by addBoundCutSepa(), addCut(), addCuts(), addOrbisackCover(), addOrbisackInequality(), addRelaxation(), addSymresackInequality(), computeCut(), createCapacityRestrictionIntvars(), createCGCutCMIR(), createCGCutDirect(), createCGCutStrongCG(), createRow(), doSeparation(), extendToCover(), generateAndApplyBendersIntegerCuts(), generateAndApplyBendersNogoodCut(), generateOddCycleCut(), initLP(), initsepaBoundInequalityFromCardinality(), initsepaBoundInequalityFromSOS1Cons(), LOPseparate(), SCIP_DECL_CONSENFOLP(), SCIP_DECL_CONSINITLP(), SCIP_DECL_CONSSEPALP(), SCIP_DECL_CONSSEPASOL(), SCIP_DECL_NLHDLRENFO(), SCIP_DECL_NLHDLRINITSEPA(), SCIP_DECL_SEPAEXECLP(), SCIPgenerateAndApplyBendersOptCut(), SCIPprocessRowprepNonlinear(), sepaImplBoundCutsSOS1(), separateCons(), separateConsBinaryRepresentation(), separateCoverCutsCons(), separateCoversOrbisack(), separateCuts(), separateDeterminant(), separateIndicators(), separateMcCormickImplicit(), separatePerspective(), separateRltCuts(), separateSCIs(), separateSequLiftedExtendedWeightInequality(), separateSequLiftedMinimalCoverInequality(), separateSupLiftedMinimalCoverInequality(), and sepaSubtour().

    ◆ SCIPisCutNew()

    SCIP_Bool SCIPisCutNew ( SCIP scip,
    SCIP_ROW row 
    )

    checks if cut is already existing in global cutpool

    Returns
    TRUE is returned if the cut is not already existing in the global cutpool, FALSE otherwise
    Precondition
    This method can be called if scip is in one of the following stages:
    Parameters
    scipSCIP data structure
    rowcutting plane to add

    Definition at line 318 of file scip_cut.c.

    References FALSE, SCIP_CALL_ABORT, SCIPcheckStage, SCIPcutpoolIsCutNew(), and TRUE.

    Referenced by addCut(), addCuts(), generateZerohalfCut(), and SCIPsepastoreApplyCuts().

    ◆ SCIPaddPoolCut()

    SCIP_RETCODE SCIPaddPoolCut ( SCIP scip,
    SCIP_ROW row 
    )

    if not already existing, adds row to global cut pool

    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:
    Parameters
    scipSCIP data structure
    rowrow to remove

    Definition at line 336 of file scip_cut.c.

    References FALSE, SCIP_CALL, SCIP_OKAY, SCIPcheckStage, SCIPcutpoolAddRow(), and TRUE.

    Referenced by addCut(), addCutPool(), addCuts(), addPathCuts(), addSubtourCuts(), addTourCuts(), computeCut(), createAndAddTransferredCut(), createCGCutCMIR(), createCGCutDirect(), createCGCutStrongCG(), doSeparation(), extendToCover(), generateAndApplyBendersIntegerCuts(), generateAndApplyBendersNogoodCut(), generateOddCycleCut(), newsolCliqueAddRow(), SCIP_DECL_NLHDLRSOLLINEARIZE(), SCIP_DECL_SEPAEXECLP(), SCIPgenerateAndApplyBendersOptCut(), SCIPsepastoreApplyCuts(), and separateRltCuts().

    ◆ SCIPdelPoolCut()

    SCIP_RETCODE SCIPdelPoolCut ( SCIP scip,
    SCIP_ROW row 
    )

    removes the row from the global cut pool

    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:
    Parameters
    scipSCIP data structure
    rowcutting plane to add

    Definition at line 356 of file scip_cut.c.

    References FALSE, SCIP_CALL, SCIP_OKAY, SCIPcheckStage, SCIPcutpoolDelRow(), and TRUE.

    Referenced by addCut(), and SCIPsepastoreApplyCuts().

    ◆ SCIPgetPoolCuts()

    SCIP_CUT ** SCIPgetPoolCuts ( SCIP scip)

    gets current cuts in the global cut pool

    Returns
    the current cuts in the global cut pool
    Precondition
    This method can be called if scip is in one of the following stages:
    Parameters
    scipSCIP data structure

    Definition at line 377 of file scip_cut.c.

    References FALSE, SCIP_CALL_ABORT, SCIPcheckStage, SCIPcutpoolGetCuts(), and TRUE.

    Referenced by SCIPcopyCuts().

    ◆ SCIPgetNPoolCuts()

    int SCIPgetNPoolCuts ( SCIP scip)

    gets current number of rows in the global cut pool

    Returns
    the current number of rows in the global cut pool
    Precondition
    This method can be called if scip is in one of the following stages:
    Parameters
    scipSCIP data structure

    Definition at line 395 of file scip_cut.c.

    References FALSE, SCIP_CALL_ABORT, SCIPcheckStage, SCIPcutpoolGetNCuts(), and TRUE.

    Referenced by SCIP_DECL_DISPOUTPUT(), and SCIPcopyCuts().

    ◆ SCIPgetGlobalCutpool()

    SCIP_CUTPOOL * SCIPgetGlobalCutpool ( SCIP scip)

    gets the global cut pool used by SCIP

    Returns
    the global cut pool used by SCIP
    Precondition
    This method can be called if scip is in one of the following stages:
    Parameters
    scipSCIP data structure

    Definition at line 413 of file scip_cut.c.

    References FALSE, SCIP_CALL_ABORT, SCIPcheckStage, and TRUE.

    Referenced by SCIPsepaExecLP().

    ◆ SCIPcreateCutpool()

    SCIP_RETCODE SCIPcreateCutpool ( SCIP scip,
    SCIP_CUTPOOL **  cutpool,
    int  agelimit 
    )

    creates a cut pool

    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:
    Parameters
    scipSCIP data structure
    cutpoolpointer to store cut pool
    agelimitmaximum age a cut can reach before it is deleted from the pool

    Definition at line 437 of file scip_cut.c.

    References FALSE, SCIP_CALL, SCIP_OKAY, SCIPcheckStage, SCIPcutpoolCreate(), and TRUE.

    ◆ SCIPfreeCutpool()

    SCIP_RETCODE SCIPfreeCutpool ( SCIP scip,
    SCIP_CUTPOOL **  cutpool 
    )

    frees a cut pool

    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:
    Parameters
    scipSCIP data structure
    cutpoolpointer to store cut pool

    Definition at line 468 of file scip_cut.c.

    References FALSE, SCIP_CALL, SCIP_OKAY, SCIPcheckStage, SCIPcutpoolFree(), and TRUE.

    ◆ SCIPaddRowCutpool()

    SCIP_RETCODE SCIPaddRowCutpool ( SCIP scip,
    SCIP_CUTPOOL cutpool,
    SCIP_ROW row 
    )

    if not already existing, adds row to a cut pool and captures it

    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:
    Parameters
    scipSCIP data structure
    cutpoolcut pool
    rowcutting plane to add

    Definition at line 489 of file scip_cut.c.

    References FALSE, SCIP_CALL, SCIP_OKAY, SCIPcheckStage, SCIPcutpoolAddRow(), and TRUE.

    ◆ SCIPaddNewRowCutpool()

    SCIP_RETCODE SCIPaddNewRowCutpool ( SCIP scip,
    SCIP_CUTPOOL cutpool,
    SCIP_ROW row 
    )

    adds row to a cut pool and captures it; doesn't check for multiple cuts

    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:
    Parameters
    scipSCIP data structure
    cutpoolcut pool
    rowcutting plane to add

    Definition at line 511 of file scip_cut.c.

    References FALSE, SCIP_CALL, SCIP_OKAY, SCIPcheckStage, SCIPcutpoolAddNewRow(), and TRUE.

    ◆ SCIPdelRowCutpool()

    SCIP_RETCODE SCIPdelRowCutpool ( SCIP scip,
    SCIP_CUTPOOL cutpool,
    SCIP_ROW row 
    )

    removes the LP row from a cut pool

    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:
    Parameters
    scipSCIP data structure
    cutpoolcut pool
    rowrow to remove

    Definition at line 534 of file scip_cut.c.

    References FALSE, SCIP_CALL, SCIP_OKAY, SCIPcheckStage, SCIPcutpoolDelRow(), and TRUE.

    ◆ SCIPseparateCutpool()

    SCIP_RETCODE SCIPseparateCutpool ( SCIP scip,
    SCIP_CUTPOOL cutpool,
    SCIP_RESULT result 
    )

    separates cuts from a cut pool

    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:
    Parameters
    scipSCIP data structure
    cutpoolcut pool
    resultpointer to store the result of the separation call

    Definition at line 555 of file scip_cut.c.

    References FALSE, NULL, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPcheckStage, SCIPcutpoolSeparate(), SCIPerrorMessage, SCIPtreeGetCurrentDepth(), SCIPtreeGetCurrentNode(), SCIPtreeHasCurrentNodeLP(), and TRUE.

    ◆ SCIPseparateSolCutpool()

    SCIP_RETCODE SCIPseparateSolCutpool ( SCIP scip,
    SCIP_CUTPOOL cutpool,
    SCIP_SOL sol,
    SCIP_Bool  pretendroot,
    SCIP_RESULT result 
    )

    separates cuts w.r.t. given solution from a cut pool

    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:
    Parameters
    scipSCIP data structure
    cutpoolcut pool
    solsolution to be separated
    pretendrootshould the cut separators be called as if we are at the root node?
    resultpointer to store the result of the separation call

    Definition at line 585 of file scip_cut.c.

    References FALSE, NULL, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPcheckStage, SCIPcutpoolSeparate(), SCIPerrorMessage, SCIPtreeGetCurrentNode(), SCIPtreeHasCurrentNodeLP(), and TRUE.

    ◆ SCIPaddDelayedPoolCut()

    SCIP_RETCODE SCIPaddDelayedPoolCut ( SCIP scip,
    SCIP_ROW row 
    )

    if not already existing, adds row to the delayed global cut pool

    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 the stages SCIP_STAGE_SOLVING

    if not already existing, adds row to delayed global cut pool

    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 the stages SCIP_STAGE_SOLVING
    Parameters
    scipSCIP data structure
    rowcutting plane to add

    Definition at line 616 of file scip_cut.c.

    References FALSE, SCIP_CALL, SCIP_OKAY, SCIPcheckStage, SCIPcutpoolAddRow(), and TRUE.

    Referenced by addCut(), and addCuts().

    ◆ SCIPdelDelayedPoolCut()

    SCIP_RETCODE SCIPdelDelayedPoolCut ( SCIP scip,
    SCIP_ROW row 
    )

    removes the row from the delayed global cut pool

    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 the stages SCIP_STAGE_SOLVING
    Parameters
    scipSCIP data structure
    rowcutting plane to add

    Definition at line 635 of file scip_cut.c.

    References FALSE, SCIP_CALL, SCIP_OKAY, SCIPcheckStage, SCIPcutpoolDelRow(), and TRUE.

    ◆ SCIPgetDelayedPoolCuts()

    SCIP_CUT ** SCIPgetDelayedPoolCuts ( SCIP scip)

    gets current cuts in the delayed global cut pool

    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 the stages SCIP_STAGE_SOLVING
    Parameters
    scipSCIP data structure

    Definition at line 654 of file scip_cut.c.

    References FALSE, SCIP_CALL_ABORT, SCIPcheckStage, SCIPcutpoolGetCuts(), and TRUE.

    Referenced by SCIPcopyCuts().

    ◆ SCIPgetNDelayedPoolCuts()

    int SCIPgetNDelayedPoolCuts ( SCIP scip)

    gets current number of rows in the delayed global cut pool

    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 the stages SCIP_STAGE_SOLVING
    Parameters
    scipSCIP data structure

    Definition at line 670 of file scip_cut.c.

    References FALSE, SCIP_CALL_ABORT, SCIPcheckStage, SCIPcutpoolGetNCuts(), and TRUE.

    Referenced by SCIPcopyCuts().

    ◆ SCIPgetDelayedGlobalCutpool()

    SCIP_CUTPOOL * SCIPgetDelayedGlobalCutpool ( SCIP scip)

    gets the delayed global cut pool used by SCIP

    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 the stages SCIP_STAGE_SOLVING
    Parameters
    scipSCIP data structure

    Definition at line 686 of file scip_cut.c.

    References FALSE, SCIP_CALL_ABORT, SCIPcheckStage, and TRUE.

    Referenced by SCIPsepaExecLP().

    ◆ SCIPseparateSol()

    SCIP_RETCODE SCIPseparateSol ( SCIP scip,
    SCIP_SOL sol,
    SCIP_Bool  pretendroot,
    SCIP_Bool  allowlocal,
    SCIP_Bool  onlydelayed,
    SCIP_Bool delayed,
    SCIP_Bool cutoff 
    )

    separates the given primal solution or the current LP solution by calling the separators and constraint handlers' separation methods; the generated cuts are stored in the separation storage and can be accessed with the methods SCIPgetCuts() and SCIPgetNCuts(); after evaluating the cuts, you have to call SCIPclearCuts() in order to remove the cuts from the separation storage; it is possible to call SCIPseparateSol() multiple times with different solutions and evaluate the found cuts afterwards

    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:
    Parameters
    scipSCIP data structure
    solprimal solution that should be separated, or NULL for LP solution
    pretendrootshould the cut separators be called as if we are at the root node?
    allowlocalshould the separator be asked to separate local cuts
    onlydelayedshould only separators be called that were delayed in the previous round?
    delayedpointer to store whether a separator was delayed
    cutoffpointer to store whether the node can be cut off

    Definition at line 710 of file scip_cut.c.

    References FALSE, SCIP_CALL, SCIP_OKAY, SCIPcheckStage, SCIPseparationRound(), SCIPtreeGetCurrentDepth(), and TRUE.

    Referenced by applySeparation(), and SCIP_DECL_SEPAEXECLP().

    ◆ SCIPgetCuts()

    SCIP_ROW ** SCIPgetCuts ( SCIP scip)

    gets the array of cuts currently stored in the separation storage

    Returns
    the array of cuts currently stored in the separation storage
    Precondition
    This method can be called if scip is in one of the following stages:
    Parameters
    scipSCIP data structure

    Definition at line 744 of file scip_cut.c.

    References FALSE, SCIP_CALL_ABORT, SCIPcheckStage, SCIPsepastoreGetCuts(), and TRUE.

    ◆ SCIPgetNCuts()

    int SCIPgetNCuts ( SCIP scip)

    get current number of cuts in the separation storage

    Returns
    the current number of cuts in the separation storage
    Precondition
    This method can be called if scip is in one of the following stages:
    Parameters
    scipSCIP data structure

    Definition at line 762 of file scip_cut.c.

    References FALSE, SCIP_CALL_ABORT, SCIPcheckStage, SCIPsepastoreGetNCuts(), and TRUE.

    Referenced by applySeparation(), SCIP_DECL_SEPAEXECLP(), SCIPcalcFlowCover(), and SCIPrelaxExec().

    ◆ SCIPclearCuts()

    SCIP_RETCODE SCIPclearCuts ( SCIP scip)

    clears the separation storage

    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:
    Parameters
    scipSCIP data structure

    Definition at line 779 of file scip_cut.c.

    References FALSE, SCIP_CALL, SCIP_OKAY, SCIPcheckStage, SCIPsepastoreClearCuts(), and TRUE.

    ◆ SCIPremoveInefficaciousCuts()

    SCIP_RETCODE SCIPremoveInefficaciousCuts ( SCIP scip)

    removes cuts that are inefficacious w.r.t. the current LP solution from separation storage without adding the cuts to the LP

    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:
    Parameters
    scipSCIP data structure

    Definition at line 798 of file scip_cut.c.

    References FALSE, SCIP_Bool, SCIP_CALL, SCIP_EFFICIACYCHOICE_LP, SCIP_OKAY, SCIPcheckStage, SCIPsepastoreRemoveInefficaciousCuts(), SCIPtreeGetCurrentDepth(), and TRUE.

    Referenced by SCIP_DECL_SEPAEXECLP().