Detailed Descriptionedge concave cut separator Definition in file sepa_eccuts.c. #include <assert.h> #include <string.h> #include "scip/scipdefplugins.h" #include "scip/sepa_eccuts.h" #include "scip/cons_xor.h" #include "scip/nlp.h" #include "tclique/tclique.h" Go to the source code of this file.
Macro Definition Documentation
Definition at line 35 of file sepa_eccuts.c. Referenced by SCIPincludeSepaEccuts().
Definition at line 36 of file sepa_eccuts.c. Referenced by SCIPincludeSepaEccuts().
Definition at line 37 of file sepa_eccuts.c. Referenced by SCIPincludeSepaEccuts().
Definition at line 38 of file sepa_eccuts.c. Referenced by SCIPincludeSepaEccuts().
Definition at line 39 of file sepa_eccuts.c. Referenced by SCIPincludeSepaEccuts().
does the separator use a secondary SCIP instance? Definition at line 40 of file sepa_eccuts.c. Referenced by SCIPincludeSepaEccuts().
should separation method be delayed, if other separators found cuts? Definition at line 41 of file sepa_eccuts.c. Referenced by SCIPincludeSepaEccuts().
maximum weight of branching nodes in level 0; 0 if not used for cliques with at least one fractional node) Definition at line 43 of file sepa_eccuts.c. Referenced by searchEcAggrWithCliques().
lower bound for weight of generated cliques Definition at line 46 of file sepa_eccuts.c. Referenced by searchEcAggrWithCliques().
maximal number of nodes of b&b tree Definition at line 47 of file sepa_eccuts.c. Referenced by searchEcAggrWithCliques().
frequency to backtrack to first level of tree (0: no premature backtracking) Definition at line 48 of file sepa_eccuts.c. Referenced by searchEcAggrWithCliques().
should generated cuts be removed from the LP if they are no longer tight? Definition at line 50 of file sepa_eccuts.c. Referenced by SCIPincludeSepaEccuts().
maximal number of separation rounds per node (-1: unlimited) Definition at line 51 of file sepa_eccuts.c. Referenced by SCIPincludeSepaEccuts().
maximal number of separation rounds in the root node (-1: unlimited) Definition at line 52 of file sepa_eccuts.c. Referenced by SCIPincludeSepaEccuts().
maximal depth at which the separator is applied Definition at line 53 of file sepa_eccuts.c. Referenced by SCIPincludeSepaEccuts().
maximal number of e.c. cuts separated per separation round Definition at line 54 of file sepa_eccuts.c. Referenced by SCIPincludeSepaEccuts().
maximal number of e.c. cuts separated per separation round in root node Definition at line 55 of file sepa_eccuts.c. Referenced by SCIPincludeSepaEccuts().
maximal coefficient range of a cut (maximal coefficient divided by minimal coefficient) in order to be added to LP relaxation Definition at line 56 of file sepa_eccuts.c. Referenced by SCIPincludeSepaEccuts().
minimal violation of an e.c. cut to be separated Definition at line 59 of file sepa_eccuts.c. Referenced by SCIPincludeSepaEccuts().
search for e.c. aggregation of at least this size (has to be >= 3) Definition at line 60 of file sepa_eccuts.c. Referenced by SCIPincludeSepaEccuts().
search for e.c. aggregation of at most this size (has to be >= minaggrsize) Definition at line 61 of file sepa_eccuts.c. Referenced by SCIPincludeSepaEccuts().
maximum number of bilinear terms allowed to be in a quadratic constraint Definition at line 62 of file sepa_eccuts.c. Referenced by SCIPincludeSepaEccuts().
maximum number of unsuccessful rounds in the e.c. aggregation search Definition at line 63 of file sepa_eccuts.c. Referenced by SCIPincludeSepaEccuts().
node limit to solve the sub-SCIP Definition at line 65 of file sepa_eccuts.c. Referenced by searchEcAggrWithMIP().
adjust resulting facets in checkRikun() up to a violation of this value Definition at line 67 of file sepa_eccuts.c. Referenced by checkRikun().
use dual or primal simplex algorithm? Definition at line 68 of file sepa_eccuts.c. Referenced by SCIPcomputeConvexEnvelopeFacet(). Typedef Documentation
Definition at line 90 of file sepa_eccuts.c.
Definition at line 119 of file sepa_eccuts.c. Function Documentation
creates and empty edge-concave aggregation (without bilinear terms)
Definition at line 161 of file sepa_eccuts.c. References ecaggrFree(), NULL, SCIP_CALL, SCIP_OKAY, SCIPallocMemory, and SCIPallocMemoryArray. Referenced by nlrowaggrCreate().
frees and edge-concave aggregation
Definition at line 189 of file sepa_eccuts.c. References ecaggrAddQuadvar(), NULL, SCIP_OKAY, SCIPfreeMemory, and SCIPfreeMemoryArray. Referenced by ecaggrCreateEmpty(), and nlrowaggrFree().
adds a quadratic variable to an edge-concave aggregation
Definition at line 210 of file sepa_eccuts.c. References ecaggrAddBilinTerm(), EcAggr::nvars, SCIP_OKAY, and EcAggr::vars. Referenced by ecaggrFree(), and nlrowaggrCreate().
adds a bilinear term to an edge-concave aggregation
Definition at line 221 of file sepa_eccuts.c. References nlrowaggrStoreLinearTerms(), EcAggr::nterms, NULL, EcAggr::nvars, SCIP_OKAY, SCIPdebugMessage, SCIPdebugPrintf, SCIPisZero(), SCIPvarGetName(), EcAggr::termcoefs, EcAggr::termvars1, EcAggr::termvars2, and EcAggr::vars. Referenced by ecaggrAddQuadvar(), and nlrowaggrCreate().
stores linear terms in a given nonlinear row aggregation
Definition at line 295 of file sepa_eccuts.c. References BMScopyMemoryArray, NlrowAggr::lincoefs, NlrowAggr::linvars, NlrowAggr::nlinvars, nlrowaggrStoreQuadraticVars(), NULL, NlrowAggr::rhsaggr, SCIP_CALL, SCIP_OKAY, and SCIPallocMemoryArray. Referenced by ecaggrAddBilinTerm(), and nlrowaggrCreate().
stores quadratic variables in a given nonlinear row aggregation
Definition at line 335 of file sepa_eccuts.c. References BMScopyMemoryArray, nlrowaggrAddRemBilinTerm(), NlrowAggr::nquadvars, NULL, NlrowAggr::quadvars, SCIP_CALL, SCIP_OKAY, and SCIPallocMemoryArray. Referenced by nlrowaggrCreate(), and nlrowaggrStoreLinearTerms().
adds a remaining bilinear term to a given nonlinear row aggregation
Definition at line 356 of file sepa_eccuts.c. References nlrowaggrCreate(), NlrowAggr::nremterms, NULL, NlrowAggr::remtermcoefs, NlrowAggr::remtermvars1, NlrowAggr::remtermvars2, and SCIP_OKAY. Referenced by nlrowaggrCreate(), and nlrowaggrStoreQuadraticVars().
creates a nonlinear row aggregation
Definition at line 379 of file sepa_eccuts.c. References BMScopyMemoryArray, SCIP_QuadElement::coef, ecaggrAddBilinTerm(), ecaggrAddQuadvar(), ecaggrCreateEmpty(), SCIP_QuadElement::idx1, SCIP_QuadElement::idx2, nlrowaggrAddRemBilinTerm(), nlrowaggrFree(), nlrowaggrStoreLinearTerms(), nlrowaggrStoreQuadraticVars(), SCIP_NlRow::nquadvars, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPallocMemory, SCIPallocMemoryArray, SCIPdebugMessage, SCIPfreeBufferArray, SCIPisNegative(), SCIPnlrowGetConstant(), SCIPnlrowGetLhs(), SCIPnlrowGetLinearCoefs(), SCIPnlrowGetLinearVars(), SCIPnlrowGetNLinearVars(), SCIPnlrowGetNQuadElems(), SCIPnlrowGetNQuadVars(), SCIPnlrowGetQuadElems(), SCIPnlrowGetQuadVars(), and SCIPnlrowGetRhs(). Referenced by findAndStoreEcAggregations(), and nlrowaggrAddRemBilinTerm().
frees a nonlinear row aggregation
Definition at line 539 of file sepa_eccuts.c. References NlrowAggr::ecaggr, ecaggrFree(), NlrowAggr::lincoefs, NlrowAggr::linvars, NlrowAggr::necaggr, NlrowAggr::nlinvars, NlrowAggr::nremterms, NULL, NlrowAggr::remtermcoefs, NlrowAggr::remtermvars1, NlrowAggr::remtermvars2, NlrowAggr::rhs, SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, SCIPdebugPrintf, SCIPfreeMemory, SCIPfreeMemoryArray, SCIPfreeMemoryArrayNull, SCIPvarGetName(), and sepadataCreate(). Referenced by nlrowaggrCreate(), and sepadataFreeNlrows().
creates separator data
Definition at line 621 of file sepa_eccuts.c. References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPallocMemory, and sepadataFreeNlrows(). Referenced by nlrowaggrFree(), and SCIPincludeSepaEccuts().
frees all nonlinear row aggregations
Definition at line 650 of file sepa_eccuts.c. References nlrowaggrFree(), NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeMemoryArray, and sepadataFree(). Referenced by sepadataCreate(), and sepadataFree().
frees separator data
Definition at line 679 of file sepa_eccuts.c. References NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeMemory, SCIPlpiFree(), sepadataAddNlrowaggr(), and sepadataFreeNlrows(). Referenced by sepadataFreeNlrows().
adds a nonlinear row aggregation to the separator data
Definition at line 705 of file sepa_eccuts.c. References NlrowAggr::ecaggr, MAX, NlrowAggr::necaggr, NULL, EcAggr::nvars, phi(), NlrowAggr::rhsaggr, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocMemoryArray, and SCIPreallocMemoryArray. Referenced by findAndStoreEcAggregations(), and sepadataFree(). returns min{val-lb,ub-val} / (ub-lb)
Definition at line 746 of file sepa_eccuts.c. References createMIP(), MAX, MIN, and SCIPisFeasEQ(). Referenced by searchEcAggr(), and sepadataAddNlrowaggr().
creates an MIP to search for cycles with an odd number of positive edges in the graph representation of a nonlinear row; the model uses directed binary arc flow variables; we introduce for all quadratic elements a forward and backward edge; if the term is quadratic (e.g., loop in the graph) we fix the corresponding variables to zero; this leads to an easy mapping of quadratic elements and the variables of the MIP
Definition at line 769 of file sepa_eccuts.c. References SCIP_QuadElement::coef, SCIP_QuadElement::idx1, SCIP_QuadElement::idx2, NULL, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OBJSENSE_MAXIMIZE, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_BINARY, SCIPaddCoefLinear(), SCIPaddCons(), SCIPaddVar(), SCIPallocBufferArray, SCIPcreateConsBasicLinear(), SCIPcreateConsBasicXor(), SCIPcreateProbBasic(), SCIPcreateVarBasic(), SCIPdebugMessage, SCIPfreeBufferArray, SCIPincludeDefaultPlugins(), SCIPisNegative(), SCIPisPositive(), SCIPnlrowGetNQuadElems(), SCIPnlrowGetNQuadVars(), SCIPnlrowGetQuadElems(), SCIPnlrowGetQuadVars(), SCIPreleaseCons(), SCIPsetObjsense(), SCIPsnprintf(), SCIPvarGetName(), TRUE, and updateMIP(). Referenced by phi(), and searchEcAggr().
fixed all arc variables (u,v) for which u or v is already in an edge-concave aggregation
Definition at line 926 of file sepa_eccuts.c. References SCIP_QuadElement::idx1, SCIP_QuadElement::idx2, NULL, SCIP_CALL, SCIP_OKAY, SCIPchgVarUb(), SCIPfreeTransform(), SCIPnlrowGetNQuadElems(), SCIPnlrowGetQuadElems(), and storeAggrFromMIP(). Referenced by createMIP(), and searchEcAggr().
stores the best edge-concave aggregation found by the MIP model
Definition at line 970 of file sepa_eccuts.c. References SCIP_QuadElement::idx1, SCIP_QuadElement::idx2, NULL, SCIP_OKAY, SCIP_STATUS_INFEASIBLE, SCIPgetBestSol(), SCIPgetNSols(), SCIPgetSolVal(), SCIPgetStatus(), SCIPisGT(), SCIPnlrowGetNQuadElems(), SCIPnlrowGetQuadElems(), and searchEcAggrWithMIP(). Referenced by searchEcAggr(), and updateMIP().
searches for edge-concave aggregations with an MIP model based on binary flow variables
Definition at line 1016 of file sepa_eccuts.c. References createTcliqueGraph(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_PARAMSETTING_AGGRESSIVE, SCIP_STATUS_INFEASIBLE, SCIPgetBestSol(), SCIPgetNSols(), SCIPgetStatus(), SCIPisLE(), SCIPprintSol(), SCIPsetHeuristics(), SCIPsetIntParam(), SCIPsetLongintParam(), SCIPsetRealParam(), SCIPsolve(), SUBSCIP_NODELIMIT, and TRUE. Referenced by searchEcAggr(), and storeAggrFromMIP().
creates a tclique graph from a given nonlinear row SCIP's clique code can only handle integer node weights; all node weights are scaled by a factor of 100; since the clique code ignores nodes with weight of zero, we add an offset of 100 to each weight
Definition at line 1082 of file sepa_eccuts.c. References SCIP_QuadElement::coef, SCIP_QuadElement::idx1, SCIP_QuadElement::idx2, NULL, SCIP_ERROR, SCIP_OKAY, SCIPdebugMessage, SCIPerrorMessage, SCIPisZero(), SCIPnlrowGetNQuadElems(), SCIPnlrowGetNQuadVars(), SCIPnlrowGetQuadElems(), SCIPnlrowGetQuadVars(), SCIPvarGetIndex(), SCIPvarGetName(), searchEcAggrWithCliques(), tcliqueAddEdge(), tcliqueAddNode(), tcliqueCreate(), and tcliqueFlush(). Referenced by searchEcAggr(), and searchEcAggrWithMIP().
searches for edge-concave aggregations by computing cliques in the graph representation of a given nonlinear row update graph, compute clique, store clique; after computing a clique we heuristically check if the clique contains at least one good cycle
Definition at line 1167 of file sepa_eccuts.c. References BMSclearMemoryArray, CLIQUE_BACKTRACKFREQ, CLIQUE_MAXFIRSTNODEWEIGHT, CLIQUE_MAXNTREENODES, CLIQUE_MINWEIGHT, SCIP_QuadElement::coef, FALSE, SCIP_QuadElement::idx1, SCIP_QuadElement::idx2, MIN, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPblkmem(), SCIPcalcHashtableSize(), SCIPdebugMessage, SCIPfreeBufferArray, SCIPhashmapCreate(), SCIPhashmapExists(), SCIPhashmapFree(), SCIPhashmapInsert(), SCIPisNegative(), SCIPisPositive(), SCIPnlrowGetNQuadElems(), SCIPnlrowGetNQuadVars(), SCIPnlrowGetQuadElems(), searchEcAggr(), TCLIQUE_OPTIMAL, tcliqueChangeWeight(), tcliqueMaxClique(), and TRUE. Referenced by createTcliqueGraph(), and searchEcAggr().
computes a partitioning into edge-concave aggregations for a given (quadratic) nonlinear row; each aggregation has to contain a cycle with an odd number of positive weighted edges (good cycles) in the corresponding graph representation For this we use the following algorithm:
Definition at line 1297 of file sepa_eccuts.c. References createMIP(), createTcliqueGraph(), isCandidate(), NULL, phi(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPallocMemoryArray, SCIPcreate(), SCIPdebugMessage, SCIPfree(), SCIPfreeBufferArray, SCIPfreeMemoryArray, SCIPgetRealParam(), SCIPgetSolVal(), SCIPgetSolvingTime(), SCIPisInfinity(), SCIPisStopped(), SCIPnlrowGetNQuadElems(), SCIPnlrowGetNQuadVars(), SCIPnlrowGetQuadVars(), SCIPreleaseVar(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbLocal(), searchEcAggrWithCliques(), searchEcAggrWithMIP(), storeAggrFromMIP(), tcliqueFree(), and updateMIP(). Referenced by findAndStoreEcAggregations(), and searchEcAggrWithCliques().
returns whether a given nonlinear row can be used to compute edge-concave aggregations for which their convex envelope could dominate the termwise bilinear relaxation; this is the case if there exists at least one cycle with an odd number of positive edges in the corresponding graph representation of the nonlinear row
Definition at line 1483 of file sepa_eccuts.c. References BMSclearMemoryArray, SCIP_QuadElement::coef, FALSE, findAndStoreEcAggregations(), SCIP_QuadElement::idx1, SCIP_QuadElement::idx2, NULL, REALABS, SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPdebugMessage, SCIPfreeBufferArray, SCIPisEQ(), SCIPisInfinity(), SCIPisNegative(), SCIPisPositive(), SCIPnlrowGetExprtree(), SCIPnlrowGetLhs(), SCIPnlrowGetNQuadElems(), SCIPnlrowGetNQuadVars(), SCIPnlrowGetQuadElems(), SCIPnlrowGetQuadVars(), SCIPnlrowGetRhs(), SCIPnlrowIsInNLP(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), and TRUE. Referenced by findAndStoreEcAggregations(), and searchEcAggr().
finds and stores edge-concave aggregations for a given nonlinear row
Definition at line 1580 of file sepa_eccuts.c. References checkRikun(), FALSE, isCandidate(), nlrowaggrCreate(), NULL, EcAggr::nvars, REALABS, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPdebug, SCIPdebugMessage, SCIPdebugPrintf, SCIPfreeBufferArray, SCIPgetMessagehdlr(), SCIPisInfinity(), SCIPnlrowGetLhs(), SCIPnlrowGetNQuadVars(), SCIPnlrowGetRhs(), SCIPnlrowPrint(), SCIPvarGetName(), searchEcAggr(), sepadataAddNlrowaggr(), TRUE, and EcAggr::vars. Referenced by isCandidate().
checks if a facet is really an underestimate for all corners of the domain [l,u]; because of numerics it can happen that a facet violates a corner of the domain; to make the facet valid we subtract the maximum violation from the constant part of the facet; its a good excersise to write a comment describing the gray code...
Definition at line 1679 of file sepa_eccuts.c. References ADJUSTFACETTOL, createLP(), FALSE, MAX, NULL, EcAggr::nvars, poweroftwo, SCIP_Real, SCIPdebugMessage, SCIPisFeasEQ(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), TRUE, and EcAggr::vars. Referenced by findAndStoreEcAggregations(), and SCIPcomputeConvexEnvelopeFacet().
set up LP interface to solve LPs to compute the facet of the convex envelope
Definition at line 1751 of file sepa_eccuts.c. References evalCorner(), NULL, poweroftwo, SCIP_CALL, SCIP_OBJSEN_MINIMIZE, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPdebugMessage, SCIPfreeBufferArray, SCIPgetMessagehdlr(), SCIPlpiAddCols(), SCIPlpiAddRows(), SCIPlpiCreate(), and SCIPlpiFree(). Referenced by checkRikun(), and SCIPcomputeConvexEnvelopeFacet().
evaluates an edge-concave aggregation at a corner of the domain [l,u]
Definition at line 1863 of file sepa_eccuts.c. References EcAggr::nterms, NULL, EcAggr::nvars, poweroftwo, SCIP_Real, SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), EcAggr::termcoefs, EcAggr::termvars1, EcAggr::termvars2, transformValue(), and EcAggr::vars. Referenced by createLP(), and SCIPcomputeConvexEnvelopeFacet(). returns (val - lb) / (ub - lb) for a in [lb, ub]
Definition at line 1901 of file sepa_eccuts.c. References MAX, MIN, NULL, REALABS, SCIPcomputeConvexEnvelopeFacet(), SCIPisFeasEQ(), and SCIPisInfinity(). Referenced by evalCorner(), and SCIPcomputeConvexEnvelopeFacet().
computes a facet of the convex envelope of an edge concave aggregation The algorithm solves the following LP:
where f is an edge concave function, in is a solution of the current relaxation, and are the vertices of ; the method transforms the problem to the domain , computes a facet, and transforms this facet to the original space; the dual solution of the LP above are the coefficients of the facet The complete algorithm works as follows:
Definition at line 1946 of file sepa_eccuts.c. References addFacetToCut(), checkRikun(), createLP(), evalCorner(), FALSE, NULL, EcAggr::nvars, poweroftwo, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPdebugMessage, SCIPdebugPrintf, SCIPfreeBufferArray, SCIPgetSolVal(), SCIPinfinity(), SCIPisEQ(), SCIPlpiChgBounds(), SCIPlpiChgObj(), SCIPlpiChgSides(), SCIPlpiGetNCols(), SCIPlpiGetNRows(), SCIPlpiGetSol(), SCIPlpiSolveDual(), SCIPlpiSolvePrimal(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbLocal(), transformValue(), TRUE, USEDUALSIMPLEX, and EcAggr::vars. Referenced by computeCut(), and transformValue().
method to add a facet of the convex envelope of an edge-concave aggregation to a given cut
Definition at line 2154 of file sepa_eccuts.c. References addLinearTermToCut(), FALSE, NULL, EcAggr::nvars, REALABS, SCIP_CALL, SCIP_OKAY, SCIPaddVarToRow(), SCIPgetSolVal(), SCIPisFeasEQ(), SCIPisInfinity(), SCIPisZero(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), and TRUE. Referenced by computeCut(), and SCIPcomputeConvexEnvelopeFacet().
method to add an linear term to a given cut
Definition at line 2212 of file sepa_eccuts.c. References addBilinearTermToCut(), FALSE, NULL, REALABS, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddVarToRow(), SCIPdebugMessage, SCIPgetSolVal(), SCIPisFeasEQ(), SCIPisInfinity(), SCIPisZero(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbLocal(), and TRUE. Referenced by addFacetToCut(), and computeCut().
method to add an underestimate of a bilinear term to a given cut
Definition at line 2263 of file sepa_eccuts.c. References computeCut(), FALSE, NULL, REALABS, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddBilinMcCormick(), SCIPaddSquareLinearization(), SCIPaddSquareSecant(), SCIPaddVarToRow(), SCIPdebugMessage, SCIPgetSolVal(), SCIPisGE(), SCIPisGT(), SCIPisInfinity(), SCIPisLE(), SCIPisLT(), SCIPisPositive(), SCIPisZero(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbLocal(), SCIPvarIsIntegral(), and TRUE. Referenced by addLinearTermToCut(), and computeCut().
method to compute and and a cut for a nonlinear row aggregation and a given solution; we compute for each edge concave aggregation one facet; the remaining bilinear terms will be underestimated with McCormick, secants or linearizations; constant and linear terms will be added to the cut directly
Definition at line 2375 of file sepa_eccuts.c. References addBilinearTermToCut(), addFacetToCut(), addLinearTermToCut(), NlrowAggr::constant, NlrowAggr::ecaggr, FALSE, isPossibleToComputeCut(), NlrowAggr::lincoefs, NlrowAggr::linvars, NlrowAggr::necaggr, NlrowAggr::nlinvars, NlrowAggr::nlrow, NlrowAggr::nremterms, NULL, EcAggr::nvars, NlrowAggr::remtermcoefs, NlrowAggr::remtermvars1, NlrowAggr::remtermvars2, NlrowAggr::rhs, SCIP_Bool, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddCut(), SCIPaddPoolCut(), SCIPallocBufferArray, SCIPcacheRowExtensions(), SCIPchgRowRhs(), SCIPcomputeConvexEnvelopeFacet(), SCIPcreateEmptyRowSepa(), SCIPdebugMessage, SCIPflushRowExtensions(), SCIPfreeBufferArray, SCIPgetCutEfficacy(), SCIPgetDepth(), SCIPgetMessagehdlr(), SCIPgetNVars(), SCIPgetRowMaxCoef(), SCIPgetRowMinCoef(), SCIPgetRowSolActivity(), SCIPgetSolVal(), SCIPgetVars(), SCIPinfinity(), SCIPisCutEfficacious(), SCIPisGE(), SCIPisInfinity(), SCIPnlrowIsInNLP(), SCIPnlrowPrint(), SCIPprintRow(), SCIPreleaseRow(), SCIProwGetName(), SCIProwGetRank(), SCIPsnprintf(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbLocal(), TRUE, and EcAggr::vars. Referenced by addBilinearTermToCut(), and separateCuts().
returns whether it is possible to compute a cut for a given nonlinear row aggregation
Definition at line 2549 of file sepa_eccuts.c. References FALSE, NlrowAggr::nlrow, NlrowAggr::nquadvars, NULL, NlrowAggr::quadvar2aggr, NlrowAggr::quadvars, REALABS, SCIPdebugMessage, SCIPgetSolVal(), SCIPisFeasEQ(), SCIPisInfinity(), SCIPnlrowIsInNLP(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), separateCuts(), and TRUE. Referenced by computeCut(), and separateCuts().
searches and tries to add edge-concave cuts
Definition at line 2592 of file sepa_eccuts.c. References computeCut(), isPossibleToComputeCut(), NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DECL_SEPACOPY(), SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_SEPARATED, SCIPdebugMessage, and SCIPgetDepth(). Referenced by isPossibleToComputeCut().
copy method for separator plugins (called when SCIP copies plugins) Definition at line 2667 of file sepa_eccuts.c. Referenced by separateCuts().
destructor of separator to free user data (called when SCIP is exiting) Definition at line 2681 of file sepa_eccuts.c.
solving process deinitialization method of separator (called before branch and bound process data is freed) Definition at line 2696 of file sepa_eccuts.c.
LP solution separation method of separator Definition at line 2723 of file sepa_eccuts.c.
creates the edge concave separator and includes it in SCIP
Definition at line 2790 of file sepa_eccuts.c. References DEFAULT_CUTMAXRANGE, DEFAULT_DYNAMICCUTS, DEFAULT_MAXAGGRSIZE, DEFAULT_MAXBILINTERMS, DEFAULT_MAXDEPTH, DEFAULT_MAXROUNDS, DEFAULT_MAXROUNDSROOT, DEFAULT_MAXSEPACUTS, DEFAULT_MAXSEPACUTSROOT, DEFAULT_MAXSTALLROUNDS, DEFAULT_MINAGGRSIZE, DEFAULT_MINVIOLATION, FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPaddBoolParam(), SCIPaddIntParam(), SCIPaddRealParam(), SCIPincludeSepaBasic(), SCIPinfinity(), SCIPsetSepaCopy(), SCIPsetSepaExitsol(), SCIPsetSepaFree(), SEPA_DELAY, SEPA_DESC, SEPA_FREQ, SEPA_MAXBOUNDDIST, SEPA_NAME, SEPA_PRIORITY, SEPA_USESSUBSCIP, sepadataCreate(), and TRUE. Referenced by SCIPincludeDefaultPlugins(). Variable Documentation
first values for 2^n Definition at line 71 of file sepa_eccuts.c. Referenced by checkRikun(), createLP(), evalCorner(), and SCIPcomputeConvexEnvelopeFacet(). |