sepa_cgmip.c File Reference Detailed DescriptionChvatal-Gomory cuts computed via a sub-MIP. Separate Chvátal-Gomory cuts using a sub-MIP. The approach is based on the following papers. M. Fischetti and A. Lodi M. Fischetti and A. Lodi P. Bonami, G. Cornuéjols, S. Dash, M. Fischetti, and A. Lodi There are several versions to generate the final cut:
The computation time of the separation MIP is limited as follows:
Definition in file sepa_cgmip.c. #include <assert.h> #include <string.h> #include "scip/sepa_cgmip.h" #include "scip/scipdefplugins.h" #include "scip/cons_linear.h" #include "scip/pub_misc.h" #include "scip/pub_lp.h" Go to the source code of this file.
Macro Definition Documentation
Definition at line 73 of file sepa_cgmip.c. Referenced by SCIP_DECL_SEPACOPY(), SCIP_DECL_SEPAEXECLP(), SCIP_DECL_SEPAFREE(), and SCIPincludeSepaCGMIP().
Definition at line 74 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Definition at line 75 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Definition at line 76 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Definition at line 77 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
does the separator use a secondary SCIP instance? Definition at line 78 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
should separation method be delayed, if other separators found cuts? Definition at line 79 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
maximal number of separation rounds per node (-1: unlimited) Definition at line 81 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
maximal number of separation rounds in the root node (-1: unlimited) Definition at line 82 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
maximal depth at which the separator is applied Definition at line 83 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Use decision tree to turn separation on/off? Definition at line 84 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
time limit for sub-MIP (set to infinity in order to be deterministic) Definition at line 85 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
memory limit for sub-MIP Definition at line 86 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
bounds on the values of the coefficients in the CG-cut Definition at line 87 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
minimum number of nodes considered for sub-MIP (-1: unlimited) Definition at line 88 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
maximum number of nodes considered for sub-MIP (-1: unlimited) Definition at line 89 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Use only active rows to generate cuts? Definition at line 90 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
maximal age of rows to consider if onlyactiverows is false Definition at line 91 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Separate rank 1 inequalities w.r.t. CG-MIP separator? Definition at line 92 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Generate cuts for problems with only integer variables? Definition at line 93 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Allow to generate local cuts? Definition at line 94 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Convert some integral variables to be continuous to reduce the size of the sub-MIP? Definition at line 95 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
fraction of integral variables converted to be continuous (if contconvert) Definition at line 96 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
minimum number of integral variables before some are converted to be continuous Definition at line 97 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Convert some integral variables attaining fractional values to have integral value? Definition at line 98 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
fraction of fractional integral variables converted to have integral value (if intconvert) Definition at line 99 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
minimum number of integral variables before some are converted to have integral value Definition at line 100 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Skip the upper bounds on the multipliers in the sub-MIP? Definition at line 101 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Should the objective of the sub-MIP only minimize the l1-norm of the multipliers? Definition at line 102 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
objective weight for artificial variables Definition at line 103 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Weight each row by its size? Definition at line 104 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Should generated cuts be removed from the LP if they are no longer tight? Definition at line 105 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Use CMIR-generator (otherwise add cut directly)? Definition at line 106 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Use strong CG-function to strengthen cut? Definition at line 107 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Tell CMIR-generator which bounds to used in rounding? Definition at line 108 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Use cutpool to store CG-cuts even if the are not efficient? Definition at line 109 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Only separate cuts that are tight for the best feasible solution? Definition at line 110 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Terminate separation if a violated (but possibly sub-optimal) cut has been found? Definition at line 111 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Add constraint to subscip that only allows violated cuts (otherwise add obj. limit)? Definition at line 112 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Add constraint handler to filter out violated cuts? Definition at line 113 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Should the violation constraint handler use the norm of a cut to check for feasibility? Definition at line 114 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Use upper bound on objective function (via primal solution)? Definition at line 115 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Use lower bound on objective function (via lower bound)? Definition at line 116 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Should the settings for the sub-MIP be optimized for speed? Definition at line 117 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
Should information about the sub-MIP and cuts be displayed? Definition at line 118 of file sepa_cgmip.c. Referenced by SCIPincludeSepaCGMIP().
only separate if the number of rows is larger than this number Definition at line 120 of file sepa_cgmip.c. Referenced by SCIP_DECL_SEPAEXECLP().
only separate if the number of columns is larger than this number Definition at line 121 of file sepa_cgmip.c. Referenced by SCIP_DECL_SEPAEXECLP().
epsilon value needed to model strict-inequalities Definition at line 123 of file sepa_cgmip.c. Referenced by createSubscip().
epsilon value for fracbeta - is larger than EPSILONVALUE for numerical stability Definition at line 124 of file sepa_cgmip.c. Referenced by createSubscip().
number of stalling nodes if earlyterm is true Definition at line 125 of file sepa_cgmip.c. Referenced by solveSubscip().
compute real cut and compute norm for this (if addviolconshdlr and conshdlrusenorm are true) Definition at line 126 of file sepa_cgmip.c. Referenced by SCIP_DECL_SEPAEXECLP().
minimum efficacy of a cut - compare set.c Definition at line 127 of file sepa_cgmip.c. Referenced by createSubscip(), and subscipSetParams().
maximal number of solutions stored in sub-SCIP Definition at line 128 of file sepa_cgmip.c. Referenced by subscipSetParams().
maximal range of scaling of objective w.r.t. size of rows Definition at line 129 of file sepa_cgmip.c. Referenced by computeObjWeightSize().
Definition at line 132 of file sepa_cgmip.c. Referenced by createCGCutCMIR(), and createCGCutStrongCG().
Definition at line 133 of file sepa_cgmip.c. Referenced by createCGCutCMIR(), and createCGCutStrongCG().
Definition at line 134 of file sepa_cgmip.c. Referenced by createCGCutCMIR(), and createCGCutStrongCG().
Definition at line 135 of file sepa_cgmip.c. Referenced by createCGCutCMIR(), and createCGCutStrongCG().
Definition at line 136 of file sepa_cgmip.c. Referenced by createCGCutCMIR().
Definition at line 137 of file sepa_cgmip.c. Referenced by addCut(), createCGCutCMIR(), and createCGCutStrongCG().
maximal valid range max(|weights|)/min(|weights|) of row weights Definition at line 138 of file sepa_cgmip.c. Referenced by computeCut(), createCGCutCMIR(), and createCGCutStrongCG().
currently very large to allow any generation; an alternative would be (0.1*(nvars)+1000) Definition at line 140 of file sepa_cgmip.c. Referenced by createCGCutCMIR(), and createCGCutStrongCG().
Definition at line 239 of file sepa_cgmip.c. Referenced by SCIPincludeConshdlrViolatedCut().
Definition at line 240 of file sepa_cgmip.c. Referenced by SCIPincludeConshdlrViolatedCut(). Typedef Documentation
Definition at line 196 of file sepa_cgmip.c.
Definition at line 231 of file sepa_cgmip.c. Enumeration Type Documentation
what happens for columns in the LP Definition at line 188 of file sepa_cgmip.c. Function Documentation
Computes cut from the given multipliers Note that the cut computed here in general will not be the same as the one computed with the sub-MIP, because of numerical differences. Here, we only combine rows whose corresponding multiplier is positive w.r.t. the feasibility tolerance. In the sub-MIP, however, the rows are combined in any case. This makes a difference, if the coefficients in the matrix are large and hence yield a value that is larger than the tolerance. Because of the transformations we have the following: If variable was complemented, we have . If in the transformed system the lower bound is used, its corresponding multiplier is , which corresponds to
in the original system. If such a variable was at its upper bound before the transformation, it is at its lower bound afterwards. Hence, its contribution to the cut is 0. Note that if the original LP-solution does not satisfy some of the rows with equality the violation of the cut might be smaller than what is computed with the reduced sub-MIP. Furthermore, note that if continuous variables have been shifted, the computed violated may be different as well, because the necessary changes in the lhs/rhs are not used here anymore.
Definition at line 2382 of file sepa_cgmip.c. References BMSclearMemoryArray, colContinuous, colConverted, colPresent, FALSE, MAXWEIGHTRANGE, NULL, REALABS, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPcolGetLb(), SCIPcolGetLPPos(), SCIPcolGetObj(), SCIPcolGetUb(), SCIPcolGetVar(), SCIPfeasCeil(), SCIPfeasFloor(), SCIPfrac(), SCIPgetLowerbound(), SCIPgetLPColsData(), SCIPgetLPRowsData(), SCIPgetSolVal(), SCIPgetUpperbound(), SCIPgetVarsData(), SCIPisEQ(), SCIPisFeasGT(), SCIPisFeasLT(), SCIPisFeasNegative(), SCIPisFeasPositive(), SCIPisInfinity(), SCIPisIntegral(), SCIPisNegative(), SCIPisObjIntegral(), SCIPisSumPositive(), SCIPisSumZero(), SCIPisZero(), SCIProwGetCols(), SCIProwGetConstant(), SCIProwGetLhs(), SCIProwGetNLPNonz(), SCIProwGetOriginSepa(), SCIProwGetRank(), SCIProwGetRhs(), SCIProwGetVals(), SCIProwIsIntegral(), SCIProwIsLocal(), SCIProwIsModifiable(), SCIPvarGetCol(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetProbindex(), SCIPvarGetStatus(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), SCIPvarIsIntegral(), and TRUE. Referenced by createCGCutDirect(), and solCutIsViolated().
check whether cut corresponding to solution is violated
Definition at line 267 of file sepa_cgmip.c. References computeCut(), FALSE, NULL, REALABS, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPdebugMessage, SCIPerrorMessage, SCIPfreeBufferArray, SCIPgetSolVal(), SCIPgetVarsData(), SCIPinfoMessage(), SCIPisEfficacious(), SCIPisZero(), SCIPvarGetLPSol(), and SCIPvarGetObj(). Referenced by SCIP_DECL_CONSCHECK(), and SCIP_DECL_CONSENFOLP().
destructor of constraint handler to free constraint handler data (called when SCIP is exiting) Definition at line 460 of file sepa_cgmip.c. References NULL, SCIP_OKAY, SCIPconshdlrGetData(), and SCIPfreeMemory.
constraint enforcing method of constraint handler for LP solutions Definition at line 477 of file sepa_cgmip.c. References NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_FEASIBLE, SCIP_OKAY, SCIPconshdlrGetData(), SCIPgetNLPBranchCands(), and solCutIsViolated().
constraint enforcing method of constraint handler for pseudo solutions Definition at line 504 of file sepa_cgmip.c. References NULL, SCIP_FEASIBLE, and SCIP_OKAY.
feasibility check method of constraint handler for integral solutions Definition at line 518 of file sepa_cgmip.c. References NULL, SCIP_Bool, SCIP_CALL, SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIPconshdlrGetData(), and solCutIsViolated().
variable rounding lock method of constraint handler Definition at line 544 of file sepa_cgmip.c. References SCIP_OKAY.
creates the violated CG-cut constraint handler and includes it in SCIP
Definition at line 553 of file sepa_cgmip.c. References CONSHDLR_DESC, CONSHDLR_NAME, FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPallocMemory, SCIPincludeConshdlrBasic(), and SCIPsetConshdlrFree(). Referenced by createSubscip().
stores nonzero elements of dense coefficient vector as sparse vector and calculates activity and norm copied from sepa_gomory.c
Definition at line 589 of file sepa_cgmip.c. References NULL, REALABS, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, and SCIPisZero(). Referenced by createCGCutCMIR(), createCGCutDirect(), and createCGCutStrongCG().
Compute lhs/rhs for transformed column Consider a variable and some row of the original system:
We perform the transformation
where is the offset value and is a scaling factor. The new system is
with bounds
and
This can be used as follows:
Definition at line 730 of file sepa_cgmip.c. References NULL, SCIP_OKAY, SCIP_Real, SCIPcolGetNLPNonz(), SCIPcolGetObj(), SCIPcolGetRows(), SCIPcolGetVals(), SCIPcolGetVar(), SCIPinfinity(), SCIPisEQ(), SCIPisInfinity(), SCIPisNegative(), SCIPisZero(), SCIProwGetLPPos(), SCIProwIsLocal(), SCIProwIsModifiable(), and SCIPvarGetObj(). Referenced by createSubscip().
compute objective coefficient for rows that are weighted by size The objective is computed by multiplying a default value by
where is the size of the current row, is a parameter, and and are the maximal and minimal size of a row, respectively. Thus, if , we get 1 and if , we get .
Definition at line 841 of file sepa_cgmip.c. References OBJWEIGHTRANGE, and SCIP_Real. Referenced by createSubscip().
Creates a subscip representing the separating MIP. Let the constraints of the original MIP be of the following form:
Here, some of the bounds may have value or . Written in -form this becomes:
where we use
For the moment we assume that , i.e., the lower bounds on the continuous variables are 0. To obtain a Chvátal-Gomory cut we have to find nonnegative multipliers , , and such that
Note that we use zero multipliers for the bounds on the continuous variables . Moreover, if some bounds are infinity, the corresponding multipliers are assumed to be 0. From these conditions, we obtain
Because , we can ignore the term and obtain the following cut:
Assume that for the meantime. Then the cut can be written as:
Following Fischetti and Lodi [2005], let be a fractional solution of the above original system. The separating MIP created below is
Here, is a weight vector; it's idea is to make the sum over all components of as small as possible, in order to generate sparse cuts. We perform the following additional computations:
Definition at line 999 of file sepa_cgmip.c. References BETAEPSILONVALUE, colAtLb, colAtUb, colContinuous, colConverted, colPresent, computeObjWeightSize(), EPSILONVALUE, FALSE, MINEFFICACY, NULL, REALABS, SCIP_Bool, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OBJSENSE_MAXIMIZE, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIP_VARTYPE_INTEGER, SCIPaddCons(), SCIPaddVar(), SCIPallocBlockMemoryArray, SCIPallocBufferArray, SCIPcolGetLb(), SCIPcolGetNLPNonz(), SCIPcolGetObj(), SCIPcolGetPrimsol(), SCIPcolGetRows(), SCIPcolGetUb(), SCIPcolGetVals(), SCIPcolGetVar(), SCIPcolIsIntegral(), SCIPcreate(), SCIPcreateConsLinear(), SCIPcreateProb(), SCIPcreateVar(), SCIPdebugMessage, SCIPfeasCeil(), SCIPfeasFloor(), SCIPfreeBufferArray, SCIPgetBestSol(), SCIPgetLowerbound(), SCIPgetLPColsData(), SCIPgetLPRowsData(), SCIPgetNBinVars(), SCIPgetNContVars(), SCIPgetNImplVars(), SCIPgetNIntVars(), SCIPgetNObjVars(), SCIPgetProbName(), SCIPgetRowLPActivity(), SCIPgetSolVal(), SCIPgetUpperbound(), SCIPgetVarSol(), SCIPincludeConshdlrViolatedCut(), SCIPincludeDefaultPlugins(), SCIPinfinity(), SCIPinfoMessage(), SCIPisEQ(), SCIPisFeasEQ(), SCIPisFeasGT(), SCIPisFeasIntegral(), SCIPisFeasLE(), SCIPisFeasLT(), SCIPisGT(), SCIPisInfinity(), SCIPisLT(), SCIPisObjIntegral(), SCIPisZero(), SCIPreleaseCons(), SCIProwGetAge(), SCIProwGetConstant(), SCIProwGetLhs(), SCIProwGetLPPos(), SCIProwGetName(), SCIProwGetNLPNonz(), SCIProwGetOriginSepa(), SCIProwGetRhs(), SCIProwIsIntegral(), SCIProwIsLocal(), SCIProwIsModifiable(), SCIPsetObjsense(), SCIPsnprintf(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), SCIPwriteOrigProblem(), transformColumn(), and TRUE. Referenced by SCIP_DECL_SEPAEXECLP().
sets parameters for subscip
Definition at line 1994 of file sepa_cgmip.c. References FALSE, MAXNSOLS, MINEFFICACY, NULL, SCIP_CALL, SCIP_OKAY, SCIP_PARAMEMPHASIS_FEASIBILITY, SCIP_PARAMSETTING_FAST, SCIPisParamFixed(), SCIPsetBoolParam(), SCIPsetEmphasis(), SCIPsetIntParam(), SCIPsetObjlimit(), SCIPsetPresolving(), SCIPsetRealParam(), SCIPsetSeparating(), SCIPsetSubscipsOff(), and TRUE. Referenced by SCIP_DECL_SEPAEXECLP().
solve subscip
Definition at line 2127 of file sepa_cgmip.c. References FALSE, MAX, MIN, NULL, SCIP_CALL, SCIP_ERROR, SCIP_Longint, SCIP_LONGINT_MAX, SCIP_OKAY, SCIP_Real, SCIP_STATUS_BESTSOLLIMIT, SCIP_STATUS_INFEASIBLE, SCIP_STATUS_INFORUNBD, SCIP_STATUS_MEMLIMIT, SCIP_STATUS_NODELIMIT, SCIP_STATUS_OPTIMAL, SCIP_STATUS_STALLNODELIMIT, SCIP_STATUS_TIMELIMIT, SCIP_STATUS_USERINTERRUPT, SCIPdebugMessage, SCIPerrorMessage, SCIPgetMemExternEstim(), SCIPgetMemUsed(), SCIPgetNLPIterations(), SCIPgetRealParam(), SCIPgetSolvingTime(), SCIPgetStatus(), SCIPisInfinity(), SCIPprintStatistics(), SCIPsetBoolParam(), SCIPsetIntParam(), SCIPsetLongintParam(), SCIPsetRealParam(), SCIPsolve(), SCIPwarningMessage(), STALLNODELIMIT, and TRUE. Referenced by SCIP_DECL_SEPAEXECLP().
Create CG-cut directly from solution of sub-MIP
Definition at line 2875 of file sepa_cgmip.c. References colContinuous, colConverted, colPresent, computeCut(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddCut(), SCIPaddPoolCut(), SCIPaddVarsToRow(), SCIPcolGetVar(), SCIPcreateEmptyRowSepa(), SCIPdebugMessage, SCIPgetCutEfficacy(), SCIPgetLPColsData(), SCIPgetNLPs(), SCIPgetRowLPActivity(), SCIPgetRowMaxCoef(), SCIPgetRowMinCoef(), SCIPgetSolVal(), SCIPgetVarsData(), SCIPinfinity(), SCIPisEfficacious(), SCIPisEQ(), SCIPisFeasEQ(), SCIPisFeasGT(), SCIPisFeasIntegral(), SCIPisGE(), SCIPisPositive(), SCIPprintRow(), SCIPprintSol(), SCIPreleaseRow(), SCIProwChgRank(), SCIProwGetNorm(), SCIProwGetParallelism(), SCIProwGetRhs(), SCIPsnprintf(), SCIPvarGetObj(), SCIPvarGetProbindex(), storeCutInArrays(), and TRUE. Referenced by createCGCuts().
create CG-cut via CMIR-function
Definition at line 3084 of file sepa_cgmip.c. References BOUNDSWITCH, colContinuous, colConverted, FALSE, FIXINTEGRALRHS, MAKECONTINTEGRAL, MAXAGGRLEN, MAXFRAC, MAXWEIGHTRANGE, MINFRAC, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_Longint, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPaddCut(), SCIPaddPoolCut(), SCIPaddVarsToRow(), SCIPcalcMIR(), SCIPcolGetLPPos(), SCIPcreateEmptyRowSepa(), SCIPdebugMessage, SCIPepsilon(), SCIPfrac(), SCIPgetCutEfficacy(), SCIPgetLPRowsData(), SCIPgetNLPs(), SCIPgetRowLPActivity(), SCIPgetRowMaxCoef(), SCIPgetRowMinCoef(), SCIPgetSolVal(), SCIPgetVarsData(), SCIPinfinity(), SCIPisCutEfficacious(), SCIPisEfficacious(), SCIPisEQ(), SCIPisFeasGT(), SCIPisFeasLT(), SCIPisFeasNegative(), SCIPisFeasPositive(), SCIPisGE(), SCIPisPositive(), SCIPisSumPositive(), SCIPmakeRowIntegral(), SCIPprintRow(), SCIPreleaseRow(), SCIProwChgRank(), SCIProwGetNorm(), SCIProwGetParallelism(), SCIProwGetRank(), SCIProwGetRhs(), SCIProwIsLocal(), SCIProwIsModifiable(), SCIPsnprintf(), SCIPsumepsilon(), SCIPvarGetCol(), SCIPvarGetStatus(), SCIPvarIsIntegral(), storeCutInArrays(), and USEVBDS. Referenced by createCGCuts().
create CG-cut via strong-CG-function
Definition at line 3373 of file sepa_cgmip.c. References BOUNDSWITCH, FALSE, MAKECONTINTEGRAL, MAXAGGRLEN, MAXFRAC, MAXWEIGHTRANGE, MINFRAC, NULL, SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddCut(), SCIPaddPoolCut(), SCIPaddVarsToRow(), SCIPcalcStrongCG(), SCIPcreateEmptyRowSepa(), SCIPdebugMessage, SCIPepsilon(), SCIPfrac(), SCIPgetCutEfficacy(), SCIPgetLPRowsData(), SCIPgetNLPs(), SCIPgetRowLPActivity(), SCIPgetRowMaxCoef(), SCIPgetRowMinCoef(), SCIPgetSolVal(), SCIPgetVarsData(), SCIPinfinity(), SCIPisCutEfficacious(), SCIPisEfficacious(), SCIPisEQ(), SCIPisFeasGT(), SCIPisFeasLT(), SCIPisFeasNegative(), SCIPisFeasPositive(), SCIPisGE(), SCIPisPositive(), SCIPmakeRowIntegral(), SCIPprintRow(), SCIPreleaseRow(), SCIProwChgRank(), SCIProwGetNorm(), SCIProwGetParallelism(), SCIProwGetRank(), SCIProwGetRhs(), SCIProwIsLocal(), SCIProwIsModifiable(), SCIPsnprintf(), SCIPsumepsilon(), storeCutInArrays(), and USEVBDS. Referenced by createCGCuts().
Create CG-cuts from solutions of sub-MIP
Definition at line 3604 of file sepa_cgmip.c. References createCGCutCMIR(), createCGCutDirect(), createCGCutStrongCG(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_STAGE_SOLVED, SCIP_STAGE_SOLVING, SCIP_VARSTATUS_COLUMN, SCIPallocBufferArray, SCIPdebugMessage, SCIPfreeBufferArray, SCIPfreeBufferArrayNull, SCIPgetNLPRows(), SCIPgetNSols(), SCIPgetSols(), SCIPgetStage(), SCIPgetVarsData(), SCIPreleaseRow(), SCIPvarGetLPSol(), and SCIPvarGetStatus(). Referenced by SCIP_DECL_SEPAEXECLP().
frees "subscip" data
Definition at line 3747 of file sepa_cgmip.c. References colPresent, NULL, SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, SCIPfree(), SCIPfreeBlockMemoryArray, SCIPreleaseVar(), and SCIPsepaGetData(). Referenced by SCIP_DECL_SEPAEXECLP().
copy method for separator plugins (called when SCIP copies plugins) Definition at line 3838 of file sepa_cgmip.c. References NULL, SCIP_CALL, SCIP_OKAY, SCIPincludeSepaCGMIP(), SCIPsepaGetName(), and SEPA_NAME.
destructor of separator to free user data (called when SCIP is exiting) Definition at line 3853 of file sepa_cgmip.c. References NULL, SCIP_OKAY, SCIPfreeMemory, SCIPsepaGetData(), SCIPsepaGetName(), SCIPsepaSetData(), and SEPA_NAME.
LP solution separation method of separator Definition at line 3875 of file sepa_cgmip.c. References CONSHDLRFULLNORM, createCGCuts(), createSubscip(), FALSE, freeSubscip(), NCOLSTOOSMALL, NROWSTOOSMALL, NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIP_Real, SCIP_SEPARATED, SCIP_VERBLEVEL_NORMAL, SCIPallocBlockMemory, SCIPdebugMessage, SCIPfreeBlockMemory, SCIPgetCharParam(), SCIPgetDepth(), SCIPgetFirstLPTime(), SCIPgetLPSolstat(), SCIPgetNContVars(), SCIPgetNLPBranchCands(), SCIPgetNLPCols(), SCIPgetNLPRows(), SCIPisStopped(), SCIPsepaGetData(), SCIPsepaGetName(), SCIPsepaGetNCallsAtNode(), SCIPsetBoolParam(), SCIPverbMessage(), SEPA_NAME, SCIP_Sepa::sepadata, solveSubscip(), subscipSetParams(), and TRUE.
creates the CGMIP MIR cut separator and includes it in SCIP
Definition at line 4053 of file sepa_cgmip.c. References DEFAULT_ADDVIOLATIONCONS, DEFAULT_ADDVIOLCONSHDLR, DEFAULT_ALLOWLOCAL, DEFAULT_CMIROWNBOUNDS, DEFAULT_CONSHDLRUSENORM, DEFAULT_CONTCONVERT, DEFAULT_CONTCONVFRAC, DEFAULT_CONTCONVMIN, DEFAULT_CUTCOEFBND, DEFAULT_DECISIONTREE, DEFAULT_DYNAMICCUTS, DEFAULT_EARLYTERM, DEFAULT_INTCONVERT, DEFAULT_INTCONVFRAC, DEFAULT_INTCONVMIN, DEFAULT_MAXDEPTH, DEFAULT_MAXNODELIMIT, DEFAULT_MAXROUNDS, DEFAULT_MAXROUNDSROOT, DEFAULT_MAXROWAGE, DEFAULT_MEMORYLIMIT, DEFAULT_MINNODELIMIT, DEFAULT_OBJLONE, DEFAULT_OBJWEIGHT, DEFAULT_OBJWEIGHTSIZE, DEFAULT_ONLYACTIVEROWS, DEFAULT_ONLYINTVARS, DEFAULT_ONLYRANKONE, DEFAULT_OUTPUT, DEFAULT_PRIMALSEPARATION, DEFAULT_SKIPMULTBOUNDS, DEFAULT_SUBSCIPFAST, DEFAULT_TIMELIMIT, DEFAULT_USECMIR, DEFAULT_USECUTPOOL, DEFAULT_USEOBJLB, DEFAULT_USEOBJUB, DEFAULT_USESTRONGCG, FALSE, NULL, SCIP_CALL, SCIP_LONGINT_MAX, SCIP_OKAY, SCIP_REAL_MAX, SCIPaddBoolParam(), SCIPaddIntParam(), SCIPaddLongintParam(), SCIPaddRealParam(), SCIPallocMemory, SCIPincludeSepaBasic(), SCIPsetSepaCopy(), SCIPsetSepaFree(), SEPA_DELAY, SEPA_DESC, SEPA_FREQ, SEPA_MAXBOUNDDIST, SEPA_NAME, SEPA_PRIORITY, SEPA_USESSUBSCIP, and TRUE. Referenced by SCIP_DECL_SEPACOPY(), and SCIPincludeDefaultPlugins(). |