All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
sepa_mcf.c File Reference Detailed Descriptionmulti-commodity-flow network cut separator We try to identify a multi-commodity flow structure in the LP relaxation of the following type: (1) sum_{a in delta^+(v)} f_a^k - sum_{a in delta^-(v)} f_a^k <= -d_v^k for all v in V and k in K (2) sum_{k in K} f_a^k - c_a x_a <= 0 for all a in A Constraints (1) are flow conservation constraints, which say that for each commodity k and node v the outflow (delta^+(v)) minus the inflow (delta^-(v)) of a node v must not exceed the negative of the demand of node v in commodity k. To say it the other way around, inflow minus outflow must be at least equal to the demand. Constraints (2) are the arc capacity constraints, which say that the sum of all flow over an arc a must not exceed its capacity c_a x_a, with x being a binary or integer variable. c_a x_a does not need to be a single product of a capacity and an integer variable; we also accept general scalar products. Definition in file sepa_mcf.c. #include <assert.h> #include <string.h> #include "scip/sepa_mcf.h" #include "scip/cons_knapsack.h" #include "scip/pub_misc.h" Go to the source code of this file.
Macro Definition Documentation
Definition at line 47 of file sepa_mcf.c.
Definition at line 57 of file sepa_mcf.c. Referenced by SCIP_DECL_SEPACOPY(), and SCIPincludeSepaMcf().
Definition at line 58 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
Definition at line 59 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
Definition at line 60 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
Definition at line 61 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
does the separator use a secondary SCIP instance? Definition at line 62 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
should separation method be delayed, if other separators found cuts? Definition at line 63 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
number of clusters to generate in the shrunken network Definition at line 66 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
maximal valid range max(|weights|)/min(|weights|) of row weights for CMIR Definition at line 67 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
maximal number of different deltas to try (-1: unlimited) for CMIR Definition at line 68 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
should negative values also be tested in scaling? for CMIR Definition at line 69 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
should an additional variable be complemented if f0 = 0? for CMIR Definition at line 70 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
should generated cuts be removed from the LP if they are no longer tight? Definition at line 71 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
model type of network (0: auto, 1:directed, 2:undirected) Definition at line 72 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
maximal number of cuts separated per separation round (-1: unlimited) Definition at line 73 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
maximal number of cuts separated per separation round in root node (-1: unlimited) Definition at line 74 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
maximum inconsistency ratio (inconsistencies/(arcs*commodities)) at all Definition at line 75 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
maximum inconsistency ratio for arcs not to be deleted Definition at line 76 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
should we only separate if the cuts shores are connected Definition at line 77 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
should we separate inequalities based on single node cuts Definition at line 78 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
should we separate flowcutset inequalities Definition at line 79 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
should we separate knapsack cover inequalities Definition at line 80 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
Definition at line 83 of file sepa_mcf.c. Referenced by generateClusterCuts().
Definition at line 84 of file sepa_mcf.c. Referenced by generateClusterCuts().
Definition at line 85 of file sepa_mcf.c. Referenced by generateClusterCuts().
Definition at line 86 of file sepa_mcf.c. Referenced by generateClusterCuts().
Definition at line 87 of file sepa_mcf.c. Referenced by generateClusterCuts().
maximal length of base inequality Definition at line 90 of file sepa_mcf.c. Referenced by generateClusterCuts().
minimum ratio cols/rows for the separator to be switched on Definition at line 91 of file sepa_mcf.c. Referenced by separateCuts().
maximum ratio cols/rows for the separator to be switched on Definition at line 92 of file sepa_mcf.c. Referenced by separateCuts().
maximum ratio flowvars/flowrows for the separator to be switched on Definition at line 93 of file sepa_mcf.c. Referenced by mcfnetworkExtract().
maximum ratio arcs/nodes for the separator to be switched on Definition at line 94 of file sepa_mcf.c. Referenced by separateCuts().
maximum number of networks to consider Definition at line 95 of file sepa_mcf.c. Referenced by mcfnetworkExtract().
maximum density of rows to be accepted as flow candidates Definition at line 96 of file sepa_mcf.c. Referenced by extractFlowRows().
minimal size of commodity relative to largest commodity to keep it in the network Definition at line 97 of file sepa_mcf.c. Referenced by cleanupNetwork(), and extractFlow().
minimal number of nodes in network to keep it for separation Definition at line 98 of file sepa_mcf.c. Referenced by cleanupNetwork(), extractFlow(), and mcfnetworkExtract().
minimal number of arcs in network to keep it for separation Definition at line 99 of file sepa_mcf.c. Referenced by mcfnetworkExtract().
maximal slack of weighted capacity constraints to use in aggregation Definition at line 100 of file sepa_mcf.c. Referenced by generateClusterCuts().
threshold for the percentage of commodities an uncapacitated arc should appear in Definition at line 101 of file sepa_mcf.c. Referenced by findUncapacitatedArcs().
minimal size of hash table for nodepairs Definition at line 102 of file sepa_mcf.c. Referenced by nodepairqueueCreate().
Definition at line 118 of file sepa_mcf.c. Referenced by cleanupNetwork(), extractCapacityRows(), extractFlow(), extractFlowRows(), findUncapacitatedArcs(), generateClusterCuts(), identifySourcesTargets(), and separateCuts().
we may use the constraint as lhs <= a*x Definition at line 266 of file sepa_mcf.c. Referenced by addFlowrowToCommodity(), extractCapacities(), extractCapacityRows(), extractFlowRows(), and getFlowrowFit().
we may use the constraint as a*x <= rhs Definition at line 267 of file sepa_mcf.c. Referenced by addFlowrowToCommodity(), extractCapacities(), extractCapacityRows(), extractFlowRows(), and getFlowrowFit().
we have chosen to use the constraint as lhs <= a*x Definition at line 268 of file sepa_mcf.c. Referenced by addFlowrowToCommodity(), extractCapacities(), invertCommodity(), and mcfnetworkFill().
we have chosen to use the constraint as a*x <= rhs Definition at line 269 of file sepa_mcf.c. Referenced by addFlowrowToCommodity(), deleteCommodity(), extractCapacities(), extractCapacityRows(), extractNodes(), findUncapacitatedArcs(), getIncidentNodes(), getNodeSimilarityScore(), identifySourcesTargets(), invertCommodity(), and mcfnetworkFill().
we need to invert the row Definition at line 270 of file sepa_mcf.c. Referenced by addFlowrowToCommodity(), deleteCommodity(), extractFlow(), extractNodes(), getFlowrowFit(), getIncidentNodes(), getNextFlowrow(), getNodeSimilarityScore(), invertCommodity(), and mcfnetworkFill().
we have chosen to not use the constraint Definition at line 271 of file sepa_mcf.c. Referenced by extractCapacities(), and getFlowrowFit().
the capacity candidate has two flow variables for a commodity Definition at line 272 of file sepa_mcf.c. Referenced by extractCapacityRows().
node has not yet been seen Definition at line 4067 of file sepa_mcf.c. Referenced by identifyComponent(), lpiStrongbranch(), mcfnetworkExtract(), and spxSolve().
node is currently on the processing stack Definition at line 4068 of file sepa_mcf.c. Referenced by identifyComponent().
node has been visited and assigned to some component Definition at line 4069 of file sepa_mcf.c. Referenced by identifyComponent(), and mcfnetworkExtract(). Typedef Documentation
Definition at line 132 of file sepa_mcf.c.
Definition at line 141 of file sepa_mcf.c.
Definition at line 163 of file sepa_mcf.c.
internal MCF extraction data to pass to subroutines Definition at line 232 of file sepa_mcf.c.
Definition at line 241 of file sepa_mcf.c.
Definition at line 249 of file sepa_mcf.c.
Definition at line 260 of file sepa_mcf.c. Enumeration Type Documentation
model type of the network
Definition at line 126 of file sepa_mcf.c.
effort level for separation
Definition at line 135 of file sepa_mcf.c. Function Documentation
creates an empty MCF network data structure
Definition at line 277 of file sepa_mcf.c. References NULL, SCIP_CALL, SCIP_OKAY, and SCIPallocMemory. Referenced by mcfnetworkExtract().
frees MCF network data structure
Definition at line 303 of file sepa_mcf.c. References NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeMemory, SCIPfreeMemoryArrayNull, and SCIPreleaseRow(). Referenced by mcfnetworkExtract(), and SCIP_DECL_SEPAEXITSOL().
fills the MCF network structure with the MCF data
Definition at line 354 of file sepa_mcf.c. References SCIP_McfNetwork::arccapacityrows, SCIP_McfNetwork::arccapacityscales, SCIP_McfNetwork::arcsources, SCIP_McfNetwork::arctargets, BMSclearMemoryArray, SCIP_McfNetwork::colcommodity, FALSE, INVERTED, LHSASSIGNED, SCIP_McfNetwork::modeltype, SCIP_McfNetwork::narcs, SCIP_McfNetwork::ncommodities, SCIP_McfNetwork::nnodes, SCIP_McfNetwork::nodeflowinverted, SCIP_McfNetwork::nodeflowrows, SCIP_McfNetwork::nodeflowscales, NULL, SCIP_McfNetwork::nuncapacitatedarcs, RHSASSIGNED, SCIP_CALL, SCIP_MCFMODELTYPE_AUTO, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPallocMemoryArray, SCIPcaptureRow(), SCIPcolGetLPPos(), SCIPfreeBufferArray, SCIPgetLPColsData(), SCIPgetLPRowsData(), SCIPgetNLPCols(), SCIProwGetCols(), SCIProwGetLPPos(), SCIProwGetNLPNonz(), and SCIProwGetVals(). Referenced by mcfnetworkExtract().
comparator method for flow and capacity row candidates Definition at line 812 of file sepa_mcf.c. References SCIP_Real.
extracts flow conservation from the LP
Definition at line 826 of file sepa_mcf.c. References FALSE, LHSPOSSIBLE, MAX, MAXFLOWCANDDENSITY, MCFdebugMessage, RHSPOSSIBLE, SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_CONTINUOUS, SCIP_VARTYPE_IMPLINT, SCIP_VARTYPE_INTEGER, SCIPABORT, SCIPallocMemoryArray, SCIPcolGetVar(), SCIPdebugMessage, SCIPerrorMessage, SCIPgetLPRowsData(), SCIPgetNLPCols(), SCIPisEQ(), SCIPisInfinity(), SCIPisPositive(), SCIProwGetCols(), SCIProwGetConstant(), SCIProwGetDualsol(), SCIProwGetLhs(), SCIProwGetLPPos(), SCIProwGetName(), SCIProwGetNLPNonz(), SCIProwGetRhs(), SCIProwGetVals(), SCIProwIsModifiable(), SCIPsortInd(), and SCIPvarGetType(). Referenced by mcfnetworkExtract().
extracts capacity rows from the LP
Definition at line 1042 of file sepa_mcf.c. References BMSclearMemoryArray, LHSPOSSIBLE, MAX, MCFdebugMessage, RHSASSIGNED, RHSPOSSIBLE, SCIP_CALL, SCIP_INVALID, SCIP_INVALIDDATA, SCIP_MCFMODELTYPE_AUTO, SCIP_MCFMODELTYPE_DIRECTED, SCIP_MCFMODELTYPE_UNDIRECTED, SCIP_OKAY, SCIP_Real, SCIP_REAL_MAX, SCIP_VARTYPE_CONTINUOUS, SCIPallocBufferArray, SCIPallocMemoryArray, SCIPcolGetLPPos(), SCIPcolGetVar(), SCIPdebugMessage, SCIPerrorMessage, SCIPfreeBufferArray, SCIPgetLPRowsData(), SCIPgetNLPCols(), SCIPisEQ(), SCIPisInfinity(), SCIPisNegative(), SCIPisPositive(), SCIProwGetCols(), SCIProwGetConstant(), SCIProwGetDualsol(), SCIProwGetLhs(), SCIProwGetLPPos(), SCIProwGetName(), SCIProwGetNLPNonz(), SCIProwGetRhs(), SCIProwGetVals(), SCIProwIsModifiable(), SCIPsortInd(), SCIPvarGetType(), and UNDIRECTED. Referenced by mcfnetworkExtract().
creates a new commodity
Definition at line 1410 of file sepa_mcf.c. References MAX, SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, and SCIPreallocMemoryArray. Referenced by extractFlow().
creates a new arc
Definition at line 1434 of file sepa_mcf.c. References MAX, NULL, SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, and SCIPreallocMemoryArray. Referenced by findUncapacitatedArcs().
adds the given flow row and all involved columns to the current commodity
Definition at line 1487 of file sepa_mcf.c. References INVERTED, LHSASSIGNED, LHSPOSSIBLE, NULL, RHSASSIGNED, RHSPOSSIBLE, SCIP_Bool, SCIP_INVALID, SCIP_Real, SCIPcolGetLPPos(), SCIPdebugMessage, SCIPgetNLPCols(), SCIPisZero(), SCIProwGetCols(), SCIProwGetConstant(), SCIProwGetDualsol(), SCIProwGetLhs(), SCIProwGetLPPos(), SCIProwGetName(), SCIProwGetNLPNonz(), SCIProwGetRhs(), SCIProwGetVals(), and TRUE. Referenced by extractFlow().
Definition at line 1633 of file sepa_mcf.c. References INVERTED, LHSASSIGNED, NULL, RHSASSIGNED, SCIP_Bool, SCIPgetNLPCols(), SCIPgetNLPRows(), SCIPisInfinity(), SCIProwGetLhs(), SCIProwGetLPPos(), and SCIProwGetRhs(). Referenced by extractFlow().
deletes a commodity and removes the flow rows again from the system
Definition at line 1698 of file sepa_mcf.c. References FALSE, INVERTED, NULL, RHSASSIGNED, SCIP_Bool, SCIPcolGetLPPos(), SCIPdebugMessage, SCIPgetNLPCols(), SCIProwGetCols(), SCIProwGetLPPos(), SCIProwGetName(), and SCIProwGetNLPNonz(). Referenced by extractFlow().
checks whether the given row fits into the given commodity and returns the possible flow row signs
Definition at line 1782 of file sepa_mcf.c. References DISCARDED, FALSE, INVERTED, LHSPOSSIBLE, NULL, RHSPOSSIBLE, SCIP_Bool, SCIP_Real, SCIPcolGetLPPos(), SCIPdebugMessage, SCIPgetNLPCols(), SCIPgetNLPRows(), SCIProwGetCols(), SCIProwGetLPPos(), SCIProwGetName(), SCIProwGetNLPNonz(), SCIProwGetVals(), and TRUE. Referenced by extractFlow(), and getNextFlowrow().
returns a flow conservation row that fits into the current commodity, or NULL
Definition at line 1914 of file sepa_mcf.c. References FALSE, getFlowrowFit(), INVERTED, NULL, SCIP_Bool, SCIP_Real, SCIPcolGetNLPNonz(), SCIPcolGetRows(), SCIPgetLPCols(), SCIPgetNLPCols(), SCIPgetNLPRows(), and SCIProwGetLPPos(). Referenced by extractFlow().
extracts flow conservation rows and puts them into commodities
Definition at line 2031 of file sepa_mcf.c. References addFlowrowToCommodity(), BMSclearMemoryArray, createNewCommodity(), deleteCommodity(), getFlowrowFit(), getNextFlowrow(), invertCommodity(), INVERTED, MAX, MCFdebugMessage, MINCOMNODESFRACTION, MINNODES, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPallocMemoryArray, SCIPdebugMessage, SCIPfreeBufferArray, SCIPgetLPRows(), SCIPgetNLPCols(), SCIPgetNLPRows(), SCIProwGetName(), and TRUE. Referenced by mcfnetworkExtract().
Arc-Detection – identifies capacity constraints for the arcs and assigns arc ids to columns and capacity constraints
Definition at line 2225 of file sepa_mcf.c. References DISCARDED, LHSASSIGNED, LHSPOSSIBLE, MAX, NULL, RHSASSIGNED, RHSPOSSIBLE, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocMemoryArray, SCIPcolGetLPPos(), SCIPdebugMessage, SCIPgetLPColsData(), SCIPgetLPRowsData(), SCIPreallocMemoryArray, SCIProwGetCols(), SCIProwGetName(), and SCIProwGetNLPNonz(). Referenced by mcfnetworkExtract().
collects all flow columns of all commodities (except the one of the base row) that are incident to the node described by the given flow row
Definition at line 2391 of file sepa_mcf.c. References NULL, SCIP_Bool, SCIPcolGetLPPos(), SCIPgetNLPCols(), SCIProwGetCols(), SCIProwGetNLPNonz(), and TRUE. Referenced by extractNodes().
compares given row against a base node flow row and calculates a similarity score; score is 0.0 if the rows are incompatible
Definition at line 2477 of file sepa_mcf.c. References FALSE, INVERTED, MAX, RHSASSIGNED, SCIP_Bool, SCIP_CALL, SCIP_MCFMODELTYPE_DIRECTED, SCIP_MCFMODELTYPE_UNDIRECTED, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPcolGetLPPos(), SCIPdebugMessage, SCIPfreeBufferArray, SCIPgetNLPCols(), SCIPgetNLPRows(), SCIProwGetCols(), SCIProwGetLPPos(), SCIProwGetName(), SCIProwGetNLPNonz(), SCIProwGetVals(), and TRUE. Referenced by extractNodes().
assigns node ids to flow conservation constraints
Definition at line 2679 of file sepa_mcf.c. References BMSclearMemoryArray, collectIncidentFlowCols(), FALSE, getNodeSimilarityScore(), INVERTED, NULL, RHSASSIGNED, SCIP_Bool, SCIP_CALL, SCIP_MCFMODELTYPE_AUTO, SCIP_MCFMODELTYPE_UNDIRECTED, SCIP_OKAY, SCIP_Real, SCIPallocMemoryArray, SCIPcolGetLPPos(), SCIPcolGetNLPNonz(), SCIPcolGetRows(), SCIPdebugMessage, SCIPfreeMemoryArray, SCIPgetLPColsData(), SCIPgetLPRowsData(), SCIPisNegative(), SCIProwGetCols(), SCIProwGetLPPos(), SCIProwGetName(), SCIProwGetNLPNonz(), SCIProwGetVals(), and TRUE. Referenced by mcfnetworkExtract(). if there are still undecided commodity signs, fix them to +1
Definition at line 2950 of file sepa_mcf.c. Referenced by mcfnetworkExtract().
identifies the (at most) two nodes which contain the given flow variable
Definition at line 2968 of file sepa_mcf.c. References INVERTED, NULL, RHSASSIGNED, SCIP_Real, SCIPcolGetLPPos(), SCIPcolGetNLPNonz(), SCIPcolGetRows(), SCIPcolGetVals(), SCIPgetNLPCols(), SCIPgetNLPRows(), and SCIProwGetLPPos(). Referenced by findUncapacitatedArcs(), and identifySourcesTargets().
find uncapacitated arcs for flow columns that have no associated arc yet
Definition at line 3067 of file sepa_mcf.c. References createNewArc(), getIncidentNodes(), MCFdebugMessage, NULL, RHSASSIGNED, SCIP_CALL, SCIP_MCFMODELTYPE_DIRECTED, SCIP_MCFMODELTYPE_UNDIRECTED, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPceil(), SCIPcolGetLPPos(), SCIPcolGetVar(), SCIPdebugMessage, SCIPfreeBufferArray, SCIPgetLPCols(), SCIPgetLPRows(), SCIPgetNLPCols(), SCIPgetNLPRows(), SCIProwGetCols(), SCIProwGetName(), SCIProwGetNLPNonz(), SCIPsortIntInt(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), and UNCAPACITATEDARCSTRESHOLD. Referenced by mcfnetworkExtract().
cleans up the network: gets rid of commodities without arcs or with at most one node
Definition at line 3408 of file sepa_mcf.c. References BMSclearMemoryArray, MAX, MCFdebugMessage, MINCOMNODESFRACTION, MINNODES, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPcolGetLPPos(), SCIPdebugMessage, SCIPfreeBufferArray, SCIPgetLPRowsData(), SCIPgetNLPCols(), SCIProwGetCols(), SCIProwGetLPPos(), SCIProwGetNLPNonz(), and TRUE. Referenced by mcfnetworkExtract().
for each arc identifies a source and target node
Definition at line 3724 of file sepa_mcf.c. References BMSclearMemoryArray, getIncidentNodes(), MCFdebugMessage, MCFEFFORTLEVEL_DEFAULT, MCFEFFORTLEVEL_OFF, NULL, RHSASSIGNED, SCIP_CALL, SCIP_MCFMODELTYPE_DIRECTED, SCIP_MCFMODELTYPE_UNDIRECTED, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPallocMemoryArray, SCIPcolGetLPPos(), SCIPdebugMessage, SCIPfreeBufferArray, SCIPgetNLPCols(), SCIPgetNLPRows(), SCIPisGE(), SCIProwGetCols(), SCIProwGetLPPos(), SCIProwGetNLPNonz(), and TRUE. Referenced by mcfnetworkExtract().
returns lists of nodes and arcs in the connected component of the given startv
Definition at line 4073 of file sepa_mcf.c. References NULL, ONSTACK, SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPfreeBufferArray, UNKNOWN, and VISITED. Referenced by mcfnetworkExtract().
extracts MCF network structures from the current LP
Definition at line 4204 of file sepa_mcf.c. References BMSclearMemoryArray, cleanupNetwork(), extractCapacities(), extractCapacityRows(), extractFlow(), extractFlowRows(), extractNodes(), FALSE, findUncapacitatedArcs(), fixCommoditySigns(), identifyComponent(), identifySourcesTargets(), MAX, MAXFLOWVARFLOWROWRATIO, MAXNETWORKS, MCFEFFORTLEVEL_OFF, mcfnetworkCreate(), mcfnetworkFill(), mcfnetworkFree(), MINARCS, MINNODES, SCIP_McfNetwork::nnodes, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPdebugMessage, SCIPfreeBufferArray, SCIPfreeMemoryArrayNull, SCIPgetLPColsData(), SCIPgetLPRowsData(), SCIPreallocMemoryArray, TRUE, UNKNOWN, and VISITED. Referenced by separateCuts().
initializes a union find data structure by putting each element into its own set
Definition at line 4679 of file sepa_mcf.c. Referenced by nodepartitionCreate(), and nodepartitionIsConnected().
applies a union find algorithm to get the representative of v
Definition at line 4693 of file sepa_mcf.c. References NULL. Referenced by nodepartitionGetRepresentative(), and nodepartitionIsConnected().
joins two sets in the union find framework
Definition at line 4711 of file sepa_mcf.c. Referenced by nodepartitionIsConnected(), and nodepartitionJoin().
comparison method for weighted nodepairs Definition at line 4738 of file sepa_mcf.c.
NodePair HashTable gets the key of the given element Definition at line 4754 of file sepa_mcf.c.
NodePair HashTable returns TRUE iff both keys are equal; two nodepairs are equal if both nodes equal Definition at line 4766 of file sepa_mcf.c. References NULL.
NodePair HashTable returns the hash value of the key Definition at line 4807 of file sepa_mcf.c. References NULL.
creates a priority queue and fills it with the given nodepair entries
Definition at line 4841 of file sepa_mcf.c. References SCIP_McfNetwork::arccapacityrows, SCIP_McfNetwork::arccapacityscales, SCIP_McfNetwork::arcsources, SCIP_McfNetwork::arctargets, SCIP_McfNetwork::colcommodity, FALSE, HASHSIZE_NODEPAIRS, MAX, MIN, SCIP_McfNetwork::narcs, SCIP_McfNetwork::ncommodities, SCIP_McfNetwork::nnodes, SCIP_McfNetwork::nodeflowrows, SCIP_McfNetwork::nodeflowscales, NULL, REALABS, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocMemory, SCIPallocMemoryArray, SCIPblkmem(), SCIPcalcHashtableSize(), SCIPcolGetLPPos(), SCIPcolGetPrimsol(), SCIPcolGetVar(), SCIPdebugMessage, SCIPgetNLPCols(), SCIPgetRowFeasibility(), SCIPgetRowMaxCoef(), SCIPhashtableCreate(), SCIPhashtableFree(), SCIPhashtableInsert(), SCIPhashtableRetrieve(), SCIPinfinity(), SCIPisInfinity(), SCIPisNegative(), SCIPisPositive(), SCIPisZero(), SCIPpqueueCreate(), SCIPpqueueInsert(), SCIProwGetCols(), SCIProwGetConstant(), SCIProwGetDualsol(), SCIProwGetLhs(), SCIProwGetName(), SCIProwGetNLPNonz(), SCIProwGetRhs(), SCIPvarGetName(), and TRUE. Referenced by nodepartitionCreate().
frees memory of a nodepair queue
Definition at line 5156 of file sepa_mcf.c. References NULL, SCIPfreeMemory, SCIPfreeMemoryArray, and SCIPpqueueFree(). Referenced by nodepartitionCreate().
returns whether there are any nodepairs left on the queue
Definition at line 5172 of file sepa_mcf.c. References NULL, and SCIPpqueueFirst(). Referenced by nodepartitionCreate().
removes the top element from the nodepair priority queue, returns nodepair entry or NULL
Definition at line 5184 of file sepa_mcf.c. References NULL, and SCIPpqueueRemove(). Referenced by nodepartitionCreate().
returns the representative node in the cluster of the given node
Definition at line 5202 of file sepa_mcf.c. References unionfindGetRepresentative(). Referenced by nodepartitionCreate().
joins two clusters given by their representative nodes
Definition at line 5212 of file sepa_mcf.c. References unionfindJoinSets(). Referenced by nodepartitionCreate().
partitions nodes into a small number of clusters
Definition at line 5223 of file sepa_mcf.c. References BMSclearMemoryArray, SCIP_McfNetwork::nnodes, nodepairqueueCreate(), nodepairqueueFree(), nodepairqueueIsEmpty(), nodepairqueueRemove(), nodepartitionGetRepresentative(), nodepartitionJoin(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPallocMemory, SCIPallocMemoryArray, SCIPdebugMessage, SCIPfreeBufferArray, and unionfindInitSets(). Referenced by separateCuts().
frees node partition data
Definition at line 5373 of file sepa_mcf.c. References NULL, SCIPfreeMemory, and SCIPfreeMemoryArray. Referenced by separateCuts().
returns whether given node v is in a cluster that belongs to the partition S
Definition at line 5390 of file sepa_mcf.c. Referenced by generateClusterCuts(), and nodepartitionIsConnected().
returns whether each of the sets S and T defined by the nodepartition is connected
Definition at line 5420 of file sepa_mcf.c. References SCIP_McfNetwork::arcsources, SCIP_McfNetwork::arctargets, FALSE, SCIP_McfNetwork::narcs, nodeInPartition(), NULL, SCIP_OKAY, SCIPallocBufferArray, SCIPfreeBufferArray, unionfindGetRepresentative(), unionfindInitSets(), and unionfindJoinSets(). Referenced by generateClusterCuts().
adds given cut to LP if violated
Definition at line 5757 of file sepa_mcf.c. References FALSE, NULL, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddCut(), SCIPaddPoolCut(), SCIPaddVarToRow(), SCIPallocBufferArray, SCIPcacheRowExtensions(), SCIPcreateEmptyRowSepa(), SCIPdebugMessage, SCIPflushRowExtensions(), SCIPfreeBufferArray, SCIPgetCutEfficacy(), SCIPgetNLPs(), SCIPgetRowSolActivity(), SCIPgetVarsData(), SCIPinfinity(), SCIPisCutEfficacious(), SCIPisZero(), SCIPreleaseRow(), SCIProwChgRank(), SCIProwGetRank(), SCIPseparateRelaxedKnapsack(), and SCIPsnprintf(). Referenced by generateClusterCuts().
enumerates cuts between subsets of the clusters generates single-node cuts if nodepartition == NULL, otherwise generates cluster cuts
Definition at line 5864 of file sepa_mcf.c. References addCut(), ALLOWLOCAL, SCIP_McfNetwork::arccapacityrows, SCIP_McfNetwork::arccapacityscales, SCIP_McfNetwork::arcsources, SCIP_McfNetwork::arctargets, BMSclearMemoryArray, BOUNDSWITCH, SCIP_McfNetwork::colcommodity, FALSE, MAX, MAXAGGRLEN, MAXCAPACITYSLACK, MAXFRAC, MCFdebugMessage, MCFEFFORTLEVEL_AGGRESSIVE, MCFEFFORTLEVEL_DEFAULT, MINFRAC, SCIP_McfNetwork::modeltype, SCIP_McfNetwork::narcs, SCIP_McfNetwork::ncommodities, SCIP_McfNetwork::nnodes, SCIP_McfNetwork::nodeflowinverted, SCIP_McfNetwork::nodeflowrows, SCIP_McfNetwork::nodeflowscales, nodeInPartition(), nodepartitionIsConnected(), NULL, REALABS, SCIP_Bool, SCIP_CALL, SCIP_MCFMODELTYPE_DIRECTED, SCIP_OKAY, SCIP_Real, SCIP_REAL_MIN, SCIPallocBufferArray, SCIPallocMemoryArray, SCIPcalcMIR(), SCIPcolGetLPPos(), SCIPcolGetVar(), SCIPcolIsIntegral(), SCIPdebugMessage, SCIPfloor(), SCIPfrac(), SCIPfreeBufferArray, SCIPfreeMemoryArray, SCIPgetDepth(), SCIPgetNLPCols(), SCIPgetNLPRows(), SCIPgetNVars(), SCIPgetRowFeasibility(), SCIPgetRowMaxCoef(), SCIPgetRowSolFeasibility(), SCIPgetSolVal(), SCIPisFeasGT(), SCIPisFeasPositive(), SCIPisFeasZero(), SCIPisInfinity(), SCIPisNegative(), SCIPisPositive(), SCIPisStopped(), SCIPisZero(), SCIPreallocMemoryArray, SCIProwGetCols(), SCIProwGetConstant(), SCIProwGetDualsol(), SCIProwGetLhs(), SCIProwGetLPPos(), SCIProwGetName(), SCIProwGetNLPNonz(), SCIProwGetRhs(), SCIProwGetVals(), SCIPvarIsIntegral(), TRUE, and USEVBDS. Referenced by separateCuts().
searches and adds MCF network cuts that separate the given primal solution
Definition at line 6593 of file sepa_mcf.c. References FALSE, generateClusterCuts(), MAXARCNODERATIO, MAXCOLROWRATIO, MAXCOLS, MCFdebugMessage, MCFEFFORTLEVEL_DEFAULT, MCFEFFORTLEVEL_OFF, mcfnetworkExtract(), MINCOLROWRATIO, SCIP_McfNetwork::narcs, SCIP_McfNetwork::ncommodities, SCIP_McfNetwork::nnodes, nodepartitionCreate(), nodepartitionFree(), NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DELAYED, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_MCFMODELTYPE_DIRECTED, SCIP_OKAY, SCIP_Real, SCIP_SEPARATED, SCIPdebug, SCIPgetNLPCols(), SCIPgetNLPRows(), SCIPgetNVars(), SCIPsepaGetData(), SCIPsepaWasLPDelayed(), and TRUE. Referenced by SCIP_DECL_SEPAEXECLP(), and SCIP_DECL_SEPAEXECSOL().
copy method for separator plugins (called when SCIP copies plugins) Definition at line 6767 of file sepa_mcf.c. References NULL, SCIP_CALL, SCIP_OKAY, SCIPincludeSepaMcf(), SCIPsepaGetName(), and SEPA_NAME.
destructor of separator to free user data (called when SCIP is exiting) Definition at line 6781 of file sepa_mcf.c. References NULL, SCIP_OKAY, SCIPfreeMemory, SCIPsepaGetData(), and SCIPsepaSetData().
solving process initialization method of separator (called when branch and bound process is about to begin) Definition at line 6801 of file sepa_mcf.c. References MCFEFFORTLEVEL_OFF, NULL, SCIP_OKAY, SCIPsepaGetData(), and TRUE.
solving process deinitialization method of separator (called before branch and bound process data is freed) Definition at line 6819 of file sepa_mcf.c. References mcfnetworkFree(), NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeMemoryArrayNull, and SCIPsepaGetData().
LP solution separation method of separator Definition at line 6843 of file sepa_mcf.c. References NULL, SCIP_CALL, SCIP_DIDNOTRUN, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIPgetLPSolstat(), SCIPgetNLPBranchCands(), SCIPisStopped(), and separateCuts().
arbitrary primal solution separation method of separator Definition at line 6870 of file sepa_mcf.c. References SCIP_CALL, SCIP_DIDNOTRUN, SCIP_OKAY, and separateCuts().
creates the mcf separator and includes it in SCIP
Definition at line 6888 of file sepa_mcf.c. References DEFAULT_CHECKCUTSHORECONNECTIVITY, DEFAULT_DYNAMICCUTS, DEFAULT_FIXINTEGRALRHS, DEFAULT_MAXARCINCONSISTENCYRATIO, DEFAULT_MAXINCONSISTENCYRATIO, DEFAULT_MAXSEPACUTS, DEFAULT_MAXSEPACUTSROOT, DEFAULT_MAXTESTDELTA, DEFAULT_MAXWEIGHTRANGE, DEFAULT_MODELTYPE, DEFAULT_NCLUSTERS, DEFAULT_SEPARATEFLOWCUTSET, DEFAULT_SEPARATEKNAPSACK, DEFAULT_SEPARATESINGLENODECUTS, DEFAULT_TRYNEGSCALING, FALSE, MCFEFFORTLEVEL_OFF, NULL, SCIP_CALL, SCIP_OKAY, SCIP_REAL_MAX, SCIPaddBoolParam(), SCIPaddIntParam(), SCIPaddRealParam(), SCIPallocMemory, SCIPincludeSepaBasic(), SCIPsetSepaCopy(), SCIPsetSepaExitsol(), SCIPsetSepaFree(), SCIPsetSepaInitsol(), SEPA_DELAY, SEPA_DESC, SEPA_FREQ, SEPA_MAXBOUNDDIST, SEPA_NAME, SEPA_PRIORITY, SEPA_USESSUBSCIP, and TRUE. Referenced by SCIP_DECL_SEPACOPY(), and SCIPincludeDefaultPlugins(). |