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 46 of file sepa_mcf.c.
Definition at line 56 of file sepa_mcf.c. Referenced by SCIP_DECL_SEPACOPY(), and SCIPincludeSepaMcf().
Definition at line 57 of file sepa_mcf.c. Referenced by 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().
does the separator use a secondary SCIP instance? Definition at line 61 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
should separation method be delayed, if other separators found cuts? Definition at line 62 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
number of clusters to generate in the shrunken network Definition at line 65 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
maximal valid range max(|weights|)/min(|weights|) of row weights for CMIR Definition at line 66 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
maximal number of different deltas to try (-1: unlimited) for CMIR Definition at line 67 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
should negative values also be tested in scaling? for CMIR Definition at line 68 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
should an additional variable be complemented if f0 = 0? for CMIR Definition at line 69 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 70 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
model type of network (0: auto, 1:directed, 2:undirected) Definition at line 71 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
maximal number of cuts separated per separation round (-1: unlimited) Definition at line 72 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
maximal number of cuts separated per separation round in root node (-1: unlimited) Definition at line 73 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
maximum inconsistency ratio (inconsistencies/(arcs*commodities)) at all Definition at line 74 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
maximum inconsistency ratio for arcs not to be deleted Definition at line 75 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
should we only separate if the cuts shores are connected Definition at line 76 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
should we separate inequalities based on single node cuts Definition at line 77 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
should we separate flowcutset inequalities Definition at line 78 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
should we separate knapsack cover inequalities Definition at line 79 of file sepa_mcf.c. Referenced by SCIPincludeSepaMcf().
Definition at line 82 of file sepa_mcf.c. Referenced by generateClusterCuts().
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().
maximal length of base inequality Definition at line 89 of file sepa_mcf.c. Referenced by generateClusterCuts().
minimum ratio cols/rows for the separator to be switched on Definition at line 90 of file sepa_mcf.c. Referenced by separateCuts().
maximum ratio cols/rows for the separator to be switched on Definition at line 91 of file sepa_mcf.c. Referenced by separateCuts().
maximum ratio flowvars/flowrows for the separator to be switched on Definition at line 92 of file sepa_mcf.c. Referenced by mcfnetworkExtract().
maximum ratio arcs/nodes for the separator to be switched on Definition at line 93 of file sepa_mcf.c. Referenced by separateCuts().
maximum number of networks to consider Definition at line 94 of file sepa_mcf.c. Referenced by mcfnetworkExtract().
maximum density of rows to be accepted as flow candidates Definition at line 95 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 96 of file sepa_mcf.c. Referenced by cleanupNetwork(), and extractFlow().
minimal number of nodes in network to keep it for separation Definition at line 97 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 98 of file sepa_mcf.c. Referenced by mcfnetworkExtract().
maximal slack of weighted capacity constraints to use in aggregation Definition at line 99 of file sepa_mcf.c. Referenced by generateClusterCuts().
threshold for the percentage of commodities an uncapacitated arc should appear in Definition at line 100 of file sepa_mcf.c. Referenced by findUncapacitatedArcs().
minimal size of hash table for nodepairs Definition at line 101 of file sepa_mcf.c. Referenced by nodepairqueueCreate().
Definition at line 117 of file sepa_mcf.c. Referenced by cleanupNetwork(), extractCapacityRows(), extractFlow(), extractFlowRows(), findUncapacitatedArcs(), generateClusterCuts(), identifySourcesTargets(), mcfnetworkExtract(), mcfnetworkFill(), nodepartitionIsConnected(), and separateCuts().
we may use the constraint as lhs <= a*x Definition at line 265 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 266 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 267 of file sepa_mcf.c. Referenced by addFlowrowToCommodity(), deleteCommodity(), extractCapacities(), extractCapacityRows(), extractNodes(), findUncapacitatedArcs(), getIncidentNodes(), getNodeSimilarityScore(), identifySourcesTargets(), invertCommodity(), and mcfnetworkFill().
we have chosen to use the constraint as a*x <= rhs Definition at line 268 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 269 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 270 of file sepa_mcf.c. Referenced by extractCapacities(), and getFlowrowFit().
the capacity candidate has two flow variables for a commodity Definition at line 271 of file sepa_mcf.c. Referenced by extractCapacityRows().
node has not yet been seen Definition at line 4066 of file sepa_mcf.c. Referenced by identifyComponent(), lpiStrongbranch(), mcfnetworkExtract(), and spxSolve().
node is currently on the processing stack Definition at line 4067 of file sepa_mcf.c. Referenced by identifyComponent().
node has been visited and assigned to some component Definition at line 4068 of file sepa_mcf.c. Referenced by identifyComponent(), and mcfnetworkExtract(). Typedef Documentation
Definition at line 131 of file sepa_mcf.c.
Definition at line 140 of file sepa_mcf.c.
Definition at line 162 of file sepa_mcf.c.
internal MCF extraction data to pass to subroutines Definition at line 231 of file sepa_mcf.c.
Definition at line 240 of file sepa_mcf.c.
Definition at line 248 of file sepa_mcf.c.
Definition at line 259 of file sepa_mcf.c. Enumeration Type Documentation
model type of the network Definition at line 125 of file sepa_mcf.c.
effort level for separation
Definition at line 134 of file sepa_mcf.c. Function Documentation
creates an empty MCF network data structure
Definition at line 276 of file sepa_mcf.c. References NULL, SCIP_CALL, SCIP_OKAY, and SCIPallocMemory. Referenced by mcfnetworkExtract().
frees MCF network data structure
Definition at line 302 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 353 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, MCFdebugMessage, 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(), SCIPcolGetVar(), SCIPfreeBufferArray, SCIPgetLPCols(), SCIPgetLPColsData(), SCIPgetLPRows(), SCIPgetLPRowsData(), SCIPgetNLPCols(), SCIPgetNLPRows(), SCIProwGetCols(), SCIProwGetLPPos(), SCIProwGetName(), SCIProwGetNLPNonz(), SCIProwGetVals(), SCIPvarGetLbGlobal(), SCIPvarGetName(), and SCIPvarGetUbGlobal(). Referenced by mcfnetworkExtract().
comparator method for flow and capacity row candidates Definition at line 811 of file sepa_mcf.c. References SCIP_Real.
extracts flow conservation from the LP
Definition at line 825 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 1041 of file sepa_mcf.c. References BMSclearMemoryArray, SCIP_McfNetwork::colcommodity, LHSASSIGNED, LHSPOSSIBLE, MAX, MCFdebugMessage, SCIP_McfNetwork::modeltype, SCIP_McfNetwork::ncommodities, 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 1409 of file sepa_mcf.c. References MAX, SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, and SCIPreallocMemoryArray. Referenced by extractFlow().
creates a new arc
Definition at line 1433 of file sepa_mcf.c. References MAX, SCIP_McfNetwork::nnodes, 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 1486 of file sepa_mcf.c. References SCIP_McfNetwork::colcommodity, INVERTED, LHSASSIGNED, LHSPOSSIBLE, SCIP_McfNetwork::ncommodities, 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 1632 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 1697 of file sepa_mcf.c. References SCIP_McfNetwork::colcommodity, FALSE, INVERTED, LHSASSIGNED, SCIP_McfNetwork::ncommodities, 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 1781 of file sepa_mcf.c. References SCIP_McfNetwork::colcommodity, 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 1913 of file sepa_mcf.c. References FALSE, getFlowrowFit(), INVERTED, SCIP_McfNetwork::ncommodities, 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 2030 of file sepa_mcf.c. References addFlowrowToCommodity(), BMSclearMemoryArray, SCIP_McfNetwork::colcommodity, createNewCommodity(), deleteCommodity(), getFlowrowFit(), getNextFlowrow(), invertCommodity(), INVERTED, MAX, MCFdebugMessage, MINCOMNODESFRACTION, MINNODES, SCIP_McfNetwork::nnodes, 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 2224 of file sepa_mcf.c. References SCIP_McfNetwork::colcommodity, 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 2390 of file sepa_mcf.c. References SCIP_McfNetwork::colcommodity, SCIP_McfNetwork::narcs, 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 2476 of file sepa_mcf.c. References FALSE, INVERTED, LHSASSIGNED, MAX, SCIP_McfNetwork::modeltype, SCIP_McfNetwork::narcs, SCIP_McfNetwork::ncommodities, 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 2678 of file sepa_mcf.c. References BMSclearMemoryArray, collectIncidentFlowCols(), FALSE, getNodeSimilarityScore(), INVERTED, LHSASSIGNED, SCIP_McfNetwork::modeltype, SCIP_McfNetwork::narcs, SCIP_McfNetwork::ncommodities, 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 2949 of file sepa_mcf.c. Referenced by mcfnetworkExtract().
identifies the (at most) two nodes which contain the given flow variable
Definition at line 2967 of file sepa_mcf.c. References INVERTED, LHSASSIGNED, SCIP_McfNetwork::ncommodities, SCIP_McfNetwork::nnodes, 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 3066 of file sepa_mcf.c. References SCIP_McfNetwork::colcommodity, createNewArc(), getIncidentNodes(), LHSASSIGNED, MCFdebugMessage, SCIP_McfNetwork::modeltype, SCIP_McfNetwork::narcs, SCIP_McfNetwork::ncommodities, SCIP_McfNetwork::nnodes, 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 3407 of file sepa_mcf.c. References BMSclearMemoryArray, SCIP_McfNetwork::colcommodity, MAX, MCFdebugMessage, MINCOMNODESFRACTION, MINNODES, SCIP_McfNetwork::narcs, SCIP_McfNetwork::ncommodities, SCIP_McfNetwork::nnodes, 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 3723 of file sepa_mcf.c. References SCIP_McfNetwork::arcsources, SCIP_McfNetwork::arctargets, BMSclearMemoryArray, SCIP_McfNetwork::colcommodity, getIncidentNodes(), LHSASSIGNED, MCFdebugMessage, MCFEFFORTLEVEL_DEFAULT, MCFEFFORTLEVEL_OFF, SCIP_McfNetwork::modeltype, SCIP_McfNetwork::narcs, SCIP_McfNetwork::ncommodities, SCIP_McfNetwork::nnodes, 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 4072 of file sepa_mcf.c. References SCIP_McfNetwork::arcsources, SCIP_McfNetwork::arctargets, SCIP_McfNetwork::narcs, SCIP_McfNetwork::nnodes, 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 4203 of file sepa_mcf.c. References SCIP_McfNetwork::arccapacityrows, BMSclearMemoryArray, cleanupNetwork(), SCIP_McfNetwork::colcommodity, extractCapacities(), extractCapacityRows(), extractFlow(), extractFlowRows(), extractNodes(), FALSE, findUncapacitatedArcs(), fixCommoditySigns(), identifyComponent(), identifySourcesTargets(), MAX, MAXFLOWVARFLOWROWRATIO, MAXNETWORKS, MCFdebugMessage, MCFEFFORTLEVEL_OFF, mcfnetworkCreate(), mcfnetworkFill(), mcfnetworkFree(), MINARCS, MINNODES, SCIP_McfNetwork::modeltype, SCIP_McfNetwork::narcs, SCIP_McfNetwork::ncommodities, SCIP_McfNetwork::nnodes, SCIP_McfNetwork::nodeflowrows, NULL, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_CONTINUOUS, SCIP_VARTYPE_IMPLINT, SCIP_VARTYPE_INTEGER, SCIPABORT, SCIPallocBufferArray, SCIPcolGetLPPos(), SCIPcolGetVar(), SCIPdebugMessage, SCIPerrorMessage, SCIPfreeBufferArray, SCIPfreeMemoryArrayNull, SCIPgetLPColsData(), SCIPgetLPRowsData(), SCIPgetNLPCols(), SCIPreallocMemoryArray, SCIProwGetCols(), SCIProwGetNLPNonz(), SCIPvarGetType(), TRUE, UNKNOWN, and VISITED. Referenced by separateCuts().
initializes a union find data structure by putting each element into its own set
Definition at line 4678 of file sepa_mcf.c. Referenced by nodepartitionCreate(), and nodepartitionIsConnected().
applies a union find algorithm to get the representative of v
Definition at line 4692 of file sepa_mcf.c. References NULL. Referenced by nodepartitionGetRepresentative(), and nodepartitionIsConnected().
joins two sets in the union find framework
Definition at line 4710 of file sepa_mcf.c. Referenced by nodepartitionIsConnected(), and nodepartitionJoin().
comparison method for weighted nodepairs Definition at line 4737 of file sepa_mcf.c.
NodePair HashTable gets the key of the given element Definition at line 4753 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 4765 of file sepa_mcf.c. References SCIP_McfNetwork::nnodes, and NULL.
NodePair HashTable returns the hash value of the key Definition at line 4806 of file sepa_mcf.c. References SCIP_McfNetwork::nnodes, and NULL.
creates a priority queue and fills it with the given nodepair entries
Definition at line 4840 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 5155 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 5171 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 5183 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 5201 of file sepa_mcf.c. References unionfindGetRepresentative(). Referenced by nodepartitionCreate().
joins two clusters given by their representative nodes
Definition at line 5211 of file sepa_mcf.c. References unionfindJoinSets(). Referenced by nodepartitionCreate().
partitions nodes into a small number of clusters
Definition at line 5222 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 5372 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 5389 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 5419 of file sepa_mcf.c. References SCIP_McfNetwork::arccapacityrows, SCIP_McfNetwork::arccapacityscales, SCIP_McfNetwork::arcsources, SCIP_McfNetwork::arctargets, FALSE, MCFdebugMessage, SCIP_McfNetwork::narcs, SCIP_McfNetwork::nnodes, SCIP_McfNetwork::nodeflowrows, nodeInPartition(), NULL, SCIP_Bool, SCIP_FILECREATEERROR, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPcolGetVar(), SCIPerrorMessage, SCIPfreeBufferArray, SCIPgetRowLPFeasibility(), SCIPinfinity(), SCIPinfoMessage(), SCIPisFeasIntegral(), SCIPisFeasPositive(), SCIProwGetCols(), SCIProwGetName(), SCIProwGetNLPNonz(), SCIPsnprintf(), SCIPvarGetLPSol(), SCIPvarIsIntegral(), TRUE, unionfindGetRepresentative(), unionfindInitSets(), and unionfindJoinSets(). Referenced by generateClusterCuts().
adds given cut to LP if violated
Definition at line 5756 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 5863 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 6591 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 6765 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 6779 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 6799 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 6817 of file sepa_mcf.c. References mcfnetworkFree(), NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeMemoryArrayNull, and SCIPsepaGetData().
LP solution separation method of separator Definition at line 6841 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 6868 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 6886 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(). |