prop_stp.c
Go to the documentation of this file.
20 * This propagator makes use of the reduced cost of an optimally solved LP relaxation to propagate the variables
24 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
51 #define PROP_DELAY FALSE /**< should propagation method be delayed, if other propagators found reductions? */
67 #define DEFAULT_MAXNWAITINGROUNDS 2 /**< maximum number of rounds to wait until propagating again */
68 #define REDUCTION_WAIT_RATIO_INITIAL 0.01 /**< ratio of edges to be newly fixed before performing reductions for additional fixing */
83 SCIP_Real* fixingbounds; /**< saves largest upper bound to each variable that would allow to fix it */
84 SCIP_Real* deg2bounds; /**< saves largest upper bound to each variable that would allow to set degree 2 constraint */
97 int nfixededges_bicurr; /**< number of arcs fixed by 'fixedgevar' method of this propagator in current run */
98 int nfixededges_curr; /**< number of arcs fixed by 'fixedgevar' method of this propagator in current run */
99 int nfixededges_all; /**< total number of arcs fixed by 'fixedgevar' method of this propagator */
100 int nfixededges_bipost; /**< total number of arcs fixed by 'fixedgevar' method of this propagator after the last reductions */
191 SCIPdebugMessage("Cutoffbound SCIP vs Presol: %f vs %f \n", cutoffbound_scip, cutoffbound_presol);
834 SCIP_CALL_ABORT( solstp_markPcancestors(scip, propgraph->pcancestors, propgraph->tail, propgraph->head,
984 assert(graph_pc_knotIsPropPotTerm(propgraph, node) || graph_pc_knotIsNonLeafTerm(propgraph, node));
1028 if( pcmw && (SCIPisGE(scip, propgraph->cost[e], FARAWAY) || SCIPisGE(scip, propgraph->cost[erev], FARAWAY)) )
1073 if( SCIPisGE(scip, propgraph->cost[e], FARAWAY) || SCIPisGE(scip, propgraph->cost[erev], FARAWAY) )
1230 assert(graph_pc_knotIsPropPotTerm(propgraph, vert) || graph_pc_knotIsNonLeafTerm(propgraph, vert));
1236 assert(!graph_pc_knotIsPropPotTerm(propgraph, vert) && !graph_pc_knotIsNonLeafTerm(propgraph, vert));
1250 assert(SCIPisLT(scip, propgraph->prize[vert], BLOCKED_MINOR) || graph_pc_knotIsFixedTerm(propgraph, vert) );
1493 const SCIP_Bool overwrite = SCIPisGT(scip, propdata->lpobjval, propdata->lpobjval_last); //(SCIPrandomGetInt(propdata->randnumgen, 0, 1) == 0);
1535 assert(!graph_pc_isRootedPcMw(graph) || graph_pc_nFixedTerms(graph) == graph_pc_nFixedTerms(propgraph));
1768 /* in this case the reduced cost reductions are not valid anymore! (because the root has changed) */
1786 SCIPdebugMessage("starting extended reductions with %d red. cost levels \n", redcosts_getNlevels(redcostdata));
1810 nfixededges = reduce_extendedEdge(scip, propgraph, redcosts_getNodeToTermsPathsTop(redcostdata),
1833 SCIPdebugMessage("after extended-reduction number of fixed variables: %d \n", propdata->nfixededges_curr);
1844 * To this end, the already 0-fixed edges are (temporarily) removed from the underlying graph to strengthen the reduction methods. */
1877 SCIP_CALL( propgraphApplyBoundchanges(scip, vars, graph, nodestate, edgestate, propdata, probisinfeas,
1882 SCIPdebugMessage("problem has become infeasible after applying bound changes: terminating! \n");
1891 SCIPdebugMessage("problem has become infeasible after pruning (terminals not connected): terminating! \n");
1951 SCIP_CALL( extreduce_pseudoDeleteNodes(scip, propdata->deg2bounded, extpermanent, propgraph, NULL, &ndeleted) );
1998 SCIPdebugMessage("number of reduction-based variable fixings: %d \n", propdata->nfixededges_curr);
2040 const SCIP_Real redratio = (2.0 * (SCIP_Real) propdata->nfixededges_bipost) / ((SCIP_Real) graph->edges);
2047 if( SCIPisGT(scip, redratio, propdata->redwaitratio) || propdata->redcostnupdates == PROP_STP_REDCOST_LEVELS )
2088 if( SCIPvarGetUbGlobal(vars[e]) < 0.5 && SCIPvarGetUbGlobal(vars[erev]) < 0.5 && LT(graph->cost[e], BLOCKED) )
2092 // todo for pc/rpc can we maybe also block edges with unequal costs? Seems to lead to bugs so far...
2267 if( SCIPnodeGetDepth(currnode) > 0 && propdata->lastnodenumber != SCIPnodeGetNumber(currnode) )
2292 if( propdata->nfails > 0 && (propdata->nlastcall + propdata->maxnwaitrounds >= propdata->ncalls)
2296 /* new LP needs to have been solved to avoid conflicts between reduction based and red. cost propagation */
2333 SCIPdebugMessage("newly fixed by STP propagator: %d of (%d) \n", propdata->nfixededges_curr, propdata->nfixededges_all);
2352 /** solving process initialization method of propagator (called when branch and bound process is about to begin) */
2386 /** solving process deinitialization method of propagator (called before branch and bound process data is freed) */
2559 SCIP_CALL( propgraphApplyBoundchanges(scip, vars, orggraph, nodestate, edgestate, propdata, probisinfeas,
2564 SCIPdebugMessage("problem has become infeasible after applying bound changes: terminating! \n");
2573 SCIPdebugMessage("problem has become infeasible after pruning (terminals not connected): terminating! \n");
2621 SCIP_CALL( SCIPincludePropBasic(scip, &prop, PROP_NAME, PROP_DESC, PROP_PRIORITY, PROP_FREQ, PROP_DELAY, PROP_TIMING,
void SCIPfreeRandom(SCIP *scip, SCIP_RANDNUMGEN **randnumgen)
Definition: scip_randnumgen.c:70
Definition: misc_stp.h:88
SCIP_RETCODE graph_transPcmw2rooted(SCIP *, GRAPH *, SCIP_Real, SCIP_Bool)
Definition: graph_trans.c:809
static SCIP_RETCODE fixVarsExtendedRed(SCIP *scip, const GRAPH *graph, SCIP_VAR **vars, SCIP_PROPDATA *propdata)
Definition: prop_stp.c:1749
Definition: type_result.h:33
static void propgraphMarkFixedTermsPcMw(SCIP *scip, const int *nodestate, GRAPH *propgraph, SCIP_Bool *hasFixedTerms)
Definition: prop_stp.c:1091
static SCIP_RETCODE applyEdgestateToProb(SCIP *scip, const GRAPH *graph, SCIP_VAR **vars, const int *edgestate, SCIP_PROPDATA *propdata)
Definition: prop_stp.c:676
static SCIP_RETCODE fixVarsDualcostLurking(SCIP *scip, const GRAPH *graph, SCIP_Real cutoffbound, SCIP_PROPDATA *propdata, SCIP_VAR **vars)
Definition: prop_stp.c:1545
Definition: reducedefs.h:71
Definition: graphdefs.h:184
internal methods for branch and bound tree
SCIP_RETCODE SCIPStpBranchruleGetVertexChgs(SCIP *scip, int *vertexchgs, SCIP_Bool *conflictFound)
Definition: branch_stp.c:977
SCIP_Longint SCIPgetNLPIterations(SCIP *scip)
Definition: scip_solvingstats.c:438
Definition: struct_scip.h:59
SCIP_RETCODE SCIPStpFixEdgeVarTo1(SCIP *scip, SCIP_VAR *edgevar, SCIP_Bool *success)
Definition: prop_stp.c:2443
void redcosts_increaseOnDeletedArcs(const GRAPH *graph, const STP_Bool *arcsdeleted, int level, REDCOST *redcostdata)
Definition: redcosts.c:682
#define SCIPallocClearBufferArray(scip, ptr, num)
Definition: scip_mem.h:117
static void setEdgestate(const GRAPH *graph, IDX *curr, int *RESTRICT edgestate)
Definition: prop_stp.c:619
Constraint handler for Steiner problems.
SCIP_RETCODE reduce_solInit(SCIP *, const GRAPH *, SCIP_Bool, REDSOL **)
Definition: reduce_sol.c:687
void extreduce_distDataFree(SCIP *, const GRAPH *, DISTDATA **)
Definition: extreduce_dist.c:1784
SCIP_Real redcosts_getCutoffTop(const REDCOST *redcostdata)
Definition: redcosts.c:300
static void updateRedcostdata(SCIP *scip, const GRAPH *graph, SCIP_VAR **vars, SCIP_PROPDATA *propdata)
Definition: prop_stp.c:1460
SCIP_Bool SCIPisGE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
Definition: scip_numerics.c:490
SCIP_RETCODE SCIPStpPropCheckForInfeas(SCIP *scip, SCIP_Bool *probisinfeas)
Definition: prop_stp.c:2488
Definition: struct_var.h:198
SCIP_RETCODE solstp_markPcancestors(SCIP *scip, IDX **pcancestors, const int *tails, const int *heads, int orgnnodes, STP_Bool *solnodemark, STP_Bool *soledgemark, int *solnodequeue, int *nsolnodes, int *nsoledges)
Definition: solstp.c:2200
includes methods for Steiner tree problem solutions
Definition: extreducedefs.h:101
SCIP_RETCODE SCIPStpBranchruleGetVertexChgLast(SCIP *scip, int *vertex, SCIP_Bool *isDeleted)
Definition: branch_stp.c:1036
static void propgraphDeleteEdge(SCIP *scip, int e, GRAPH *propgraph)
Definition: prop_stp.c:1053
static void propgraphDeleteNode(SCIP *scip, int node, GRAPH *propgraph, SCIP_Real *offset)
Definition: prop_stp.c:961
DISTDATA * distdata_default
Definition: extreducedefs.h:106
void SCIPStpBranchruleInitNodeState(const GRAPH *g, int *nodestate)
Definition: branch_stp.c:954
includes various files containing graph methods used for Steiner tree problems
void redcosts_setDualBound(SCIP_Real dualbound, int level, REDCOST *redcostdata)
Definition: redcosts.c:406
static SCIP_RETCODE initPropgraph(SCIP *scip, const GRAPH *graph, SCIP_PROPDATA *propdata)
Definition: prop_stp.c:1361
Definition: struct_misc.h:259
Definition: graphdefs.h:284
static void updateEdgeLurkingBounds(const GRAPH *graph, const SCIP_Real *cost, const SCIP_Real *pathdist, const PATH *vnoi, SCIP_Real lpobjal, SCIP_Real *fixingbounds)
Definition: prop_stp.c:862
SCIP_RETCODE extreduce_deleteArcs(SCIP *, REDCOST *, const int *, GRAPH *, STP_Bool *, int *)
Definition: extreduce_base.c:1476
static SCIP_RETCODE fixVarsRedbased(SCIP *scip, const GRAPH *graph, SCIP_VAR **vars, SCIP_PROPDATA *propdata, SCIP_Bool *probisinfeas)
Definition: prop_stp.c:1846
SCIP_RETCODE reduce_unconnectedRpcRmwInfeas(SCIP *, GRAPH *, SCIP_Real *, SCIP_Bool *)
Definition: reduce_pcsimple.c:1404
static SCIP_Real getCutoffbound(SCIP *scip, SCIP_Real lpbound)
Definition: prop_stp.c:172
int SCIPrandomGetInt(SCIP_RANDNUMGEN *randnumgen, int minrandval, int maxrandval)
Definition: misc.c:10003
static SCIP_RETCODE initRedcostdata(SCIP *scip, const GRAPH *graph, SCIP_VAR **vars, SCIP_PROPDATA *propdata)
Definition: prop_stp.c:1430
SCIP_RETCODE SCIPchgVarLb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
Definition: scip_var.c:4673
static SCIP_RETCODE propgraphApplyBoundchanges(SCIP *scip, SCIP_VAR **vars, const GRAPH *g, int *nodestate, int *edgestate, SCIP_PROPDATA *propdata, SCIP_Bool *probisinfeas, SCIP_Real *offset)
Definition: prop_stp.c:1297
SCIP_Bool SCIPisEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
Definition: scip_numerics.c:438
static void fixEdgestate(const GRAPH *graph, IDX *curr, int *RESTRICT edgestate)
Definition: prop_stp.c:650
static void updateEdgestateFromRed(const GRAPH *graph, const GRAPH *propgraph, SCIP_VAR **vars, const int *nodestate, int *edgestate, SCIP_Bool *error)
Definition: prop_stp.c:721
SCIP_RETCODE SCIPchgVarUbGlobal(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
Definition: scip_var.c:5029
SCIP_RETCODE SCIPaddIntParam(SCIP *scip, const char *name, const char *desc, int *valueptr, SCIP_Bool isadvanced, int defaultvalue, int minvalue, int maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
Definition: scip_param.c:74
GRAPH * SCIPprobdataGetGraph(SCIP_PROBDATA *probdata)
Definition: probdata_stp.c:2948
Definition: struct_tree.h:132
void graph_get2nextTermPaths(GRAPH *, const SCIP_Real *, const SCIP_Real *, PATH *, int *, int *)
Definition: graph_tpath.c:1542
SCIP_Real * redcosts_getEdgeCosts(const REDCOST *redcostdata, int level)
Definition: redcosts.c:187
static void updateEdgestateFromRedPcmw(SCIP *scip, const GRAPH *graph, const GRAPH *propgraph, SCIP_VAR **vars, const int *nodestate, int *edgestate, SCIP_Bool *error)
Definition: prop_stp.c:763
This file implements extended reduction techniques for several Steiner problems.
SCIP_RETCODE SCIPStpFixEdgeVarTo0(SCIP *scip, SCIP_VAR *edgevar, SCIP_Bool *success)
Definition: prop_stp.c:2419
int graph_pc_getRoot2PtermEdge(const GRAPH *, int)
Definition: graph_pcbase.c:2499
SCIP_Bool graph_pc_edgeIsExtended(const GRAPH *, int)
Definition: graph_pcbase.c:1232
void graph_path_execX(SCIP *, const GRAPH *, int, const SCIP_Real *, SCIP_Real *, int *)
Definition: graph_path.c:905
Definition: type_result.h:35
SCIP_RETCODE extreduce_extPermaInit(SCIP *, enum EXTRED_MODE, const GRAPH *, STP_Bool *, EXTPERMA **)
Definition: extreduce_data.c:162
SCIP_Real SCIPprobdataGetPresolUpperBound(SCIP *scip)
Definition: probdata_stp.c:3141
static SCIP_RETCODE trailGraphWithStates(SCIP *scip, const GRAPH *graph, const int *nodestate, const int *edgestate, SCIP_Bool *probisinfeas)
Definition: prop_stp.c:433
SCIP_Bool SCIPisLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
Definition: scip_numerics.c:451
SCIP_Real * redcosts_getEdgeCostsTop(const REDCOST *redcostdata)
Definition: redcosts.c:202
Definition: reduce_sol.c:70
SCIP_RETCODE SCIPStpPropGetGraph(SCIP *scip, GRAPH **graph, SCIP_Longint *graphnodenumber, SCIP_Bool *probisinfeas, SCIP_Real *offset)
Definition: prop_stp.c:2521
SCIP_RETCODE SCIPchgVarUb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
Definition: scip_var.c:4763
SCIP_RETCODE reduce_unconnectedInfeas(SCIP *, SCIP_Bool, GRAPH *, SCIP_Bool *)
Definition: reduce_simple.c:1164
Definition: type_retcode.h:33
static SCIP_RETCODE getRedCost2ndNextDistances(SCIP *scip, const SCIP_Real *redcost, GRAPH *g, PATH *vnoi, SCIP_Real *pathdist, int *vbase, int *state)
Definition: prop_stp.c:503
SCIP_Bool SCIPStpBranchruleIsActive(SCIP *scip)
Definition: branch_stp.c:1099
static void getBoundchangesPcMW(SCIP *scip, SCIP_VAR **vars, const GRAPH *propgraph, int *nodestate, SCIP_Bool *conflictFound)
Definition: prop_stp.c:201
static SCIP_RETCODE updatePropgraph(SCIP *scip, const GRAPH *graph, SCIP_PROPDATA *propdata)
Definition: prop_stp.c:1516
SCIP_Real redcosts_getCutoff(const REDCOST *redcostdata, int level)
Definition: redcosts.c:288
static void propgraphApplyStates(SCIP *scip, const int *nodestate, const int *edgestate, GRAPH *propgraph, SCIP_Real *offset)
Definition: prop_stp.c:1121
Definition: type_result.h:42
SCIP_Bool redcostEqualAllow
Definition: extreducedefs.h:128
static void blockEdgesWithGlobalFixings(SCIP *scip, SCIP_VAR **vars, GRAPH *graph)
Definition: prop_stp.c:2068
const SCIP_Bool * SCIPStpPropGet2BoundedArr(SCIP *scip)
Definition: prop_stp.c:2593
SCIP_Bool graph_pc_knotIsPropPotTerm(const GRAPH *, int)
Definition: graph_pcbase.c:1288
SCIP_RETCODE redcosts_initializeDistances(SCIP *scip, int level, GRAPH *g, REDCOST *redcostdata)
Definition: redcosts.c:473
Definition: struct_prop.h:37
Definition: type_retcode.h:34
SCIP_RETCODE graph_copyData(SCIP *, const GRAPH *, GRAPH *)
Definition: graph_base.c:957
void extreduce_extPermaFree(SCIP *, EXTPERMA **)
Definition: extreduce_data.c:386
static SCIP_RETCODE getGraphStatesDirected(SCIP *scip, const GRAPH *graph, int *nodestate, int *edgestate, SCIP_Bool *probisinfeas)
Definition: prop_stp.c:368
SCIP_RETCODE SCIPcreateRandom(SCIP *scip, SCIP_RANDNUMGEN **randnumgen, unsigned int initialseed, SCIP_Bool useglobalseed)
Definition: scip_randnumgen.c:47
propagator for Steiner tree problems, using the LP reduced costs
void graph_pc_knotChgPrize(GRAPH *, SCIP_Real, int)
Definition: graph_pcbase.c:1399
static void writeRedcostdata(SCIP *scip, int level, const GRAPH *graph, SCIP_VAR **vars, SCIP_PROPDATA *propdata)
Definition: prop_stp.c:1404
static SCIP_RETCODE fixVarsDualcost(SCIP *scip, SCIP_VAR **vars, SCIP_PROPDATA *propdata, GRAPH *graph, SCIP_Bool *probisinfeas)
Definition: prop_stp.c:1601
static SCIP_RETCODE propgraphApplyImplicationsPcMw(SCIP *scip, const GRAPH *g, SCIP_VAR **vars, SCIP_PROPDATA *propdata, SCIP_Bool *probisinfeas, SCIP_Real *offset)
Definition: prop_stp.c:1170
static SCIP_RETCODE propgraphPruneUnconnected(SCIP *scip, GRAPH *propgraph, SCIP_Bool *probisinfeas, SCIP_Real *offset)
Definition: prop_stp.c:1276
PATH * redcosts_getNodeToTermsPathsTop(const REDCOST *redcostdata)
Definition: redcosts.c:253
SCIP_RETCODE reduce_stp(SCIP *, GRAPH *, REDSOL *, int, SCIP_Bool, SCIP_Bool, SCIP_Bool, SCIP_Bool)
Definition: reduce_base.c:1181
int reduce_extendedEdge(SCIP *, GRAPH *, const PATH *, const SCIP_Real *, const SCIP_Real *, const int *, SCIP_Real, int, STP_Bool *, SCIP_Bool)
Definition: reduce_ext.c:1155
Definition: extreducedefs.h:79
SCIP_RETCODE SCIPsetPropCopy(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPCOPY((*propcopy)))
Definition: scip_prop.c:142
SCIP_RETCODE graph_copyPseudoAncestors(SCIP *, const GRAPH *, GRAPH *)
Definition: graph_base.c:1088
SCIP_Bool graph_pc_knotIsNonLeafTerm(const GRAPH *, int)
Definition: graph_pcbase.c:1383
void redcosts_setRoot(int root, int level, REDCOST *redcostdata)
Definition: redcosts.c:433
SCIP_RETCODE SCIPsetPropExitsol(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPEXITSOL((*propexitsol)))
Definition: scip_prop.c:222
Portable definitions.
void redcosts_setCutoffFromBound(SCIP_Real upperbound, int level, REDCOST *redcostdata)
Definition: redcosts.c:645
void graph_pc_enforceNode(SCIP *, GRAPH *, int, SCIP_Real *)
Definition: graph_pcbase.c:1606
Steiner vertex branching rule.
void redcosts_unifyBlockedEdgeCosts(const GRAPH *graph, int level, REDCOST *redcostdata)
Definition: redcosts.c:705
SCIP_Bool redcosts_forLPareAvailable(SCIP *scip)
Definition: redcosts.c:767
Reduced cost based routines for Steiner problems.
SCIP_Bool SCIPisGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
Definition: scip_numerics.c:477
SCIP_RETCODE extreduce_distDataInit(SCIP *, GRAPH *, int, SCIP_Bool, SCIP_Bool, DISTDATA **)
Definition: extreduce_dist.c:1218
static void propgraphFixNode(SCIP *scip, int node, GRAPH *propgraph, SCIP_Real *offset)
Definition: prop_stp.c:914
SCIP_Bool graph_pc_knotIsDummyTerm(const GRAPH *, int)
Definition: graph_pcbase.c:1344
SCIP_Bool graph_pc_knotIsFixedTerm(const GRAPH *, int)
Definition: graph_pcbase.c:1257
SCIP_Bool redcosts_forLPareReliable(SCIP *scip, SCIP_VAR **vars, const GRAPH *graph)
Definition: redcosts.c:814
int graph_pc_deleteTerm(SCIP *, GRAPH *, int, SCIP_Real *)
Definition: graph_pcbase.c:2235
SCIP_RETCODE SCIPsetPropInitsol(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPINITSOL((*propinitsol)))
Definition: scip_prop.c:206
static SCIP_RETCODE applyLastVertexBranch(SCIP *scip, const GRAPH *graph, SCIP_VAR **vars, SCIP_PROPDATA *propdata)
Definition: prop_stp.c:2167
static SCIP_RETCODE getBoundchanges(SCIP *scip, SCIP_VAR **vars, const GRAPH *propgraph, int *nodestate, int *edgestate, SCIP_Bool *probisinfeas)
Definition: prop_stp.c:281
void redcosts_setCutoff(SCIP_Real cutoff, int level, REDCOST *redcostdata)
Definition: redcosts.c:380
static SCIP_RETCODE fixEdgeVar(SCIP *scip, int edge, SCIP_VAR **vars, SCIP_PROPDATA *propdata)
Definition: prop_stp.c:147
SCIP_Real * redcosts_getRootToNodeDistTop(const REDCOST *redcostdata)
Definition: redcosts.c:228
SCIP_RETCODE SCIPsetPropFree(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPFREE((*propfree)))
Definition: scip_prop.c:158
SCIP_RETCODE reduce_pc(SCIP *, REDSOL *, GRAPH *, int, SCIP_Bool, SCIP_Bool, SCIP_Bool, SCIP_Bool)
Definition: reduce_base.c:1260
static SCIP_RETCODE initPropAtFirstCall(SCIP *scip, const GRAPH *graph, SCIP_VAR **vars, SCIP_PROPDATA *propdata)
Definition: prop_stp.c:2105
Definition: redcosts.h:42
Definition: type_set.h:44
void graph_pc_knotToFixedTerm(SCIP *, GRAPH *, int, SCIP_Real *)
Definition: graph_pcbase.c:1079
static void mark0FixedArcs(const GRAPH *graph, SCIP_VAR **vars, STP_Bool *arcIs0Fixed)
Definition: prop_stp.c:544
Definition: redcosts.c:34
static void updateDeg2LurkingBounds(const GRAPH *graph, const SCIP_Real *pathdist, const PATH *vnoi, SCIP_Real lpobjal, SCIP_Real *deg2bounds)
Definition: prop_stp.c:890
Definition: objbenders.h:33
includes various reduction methods for Steiner tree problems
SCIP_RETCODE reduce_mw(SCIP *, REDSOL *, GRAPH *, int, SCIP_Bool, SCIP_Bool, SCIP_Bool)
Definition: reduce_base.c:1344
static void validateEdgestate(const GRAPH *graph, const GRAPH *propgraph, SCIP_VAR **vars, const int *edgestate, SCIP_Bool *error)
Definition: prop_stp.c:570
static void propgraphFixEdge(SCIP *scip, int e, GRAPH *propgraph)
Definition: prop_stp.c:1012
Definition: type_result.h:39
static SCIP_Bool fixVarsRedbasedIsPromising(SCIP *scip, const GRAPH *graph, SCIP_VAR **vars, SCIP_PROPDATA *propdata)
Definition: prop_stp.c:2012
SCIP_RETCODE SCIPaddBoolParam(SCIP *scip, const char *name, const char *desc, SCIP_Bool *valueptr, SCIP_Bool isadvanced, SCIP_Bool defaultvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
Definition: scip_param.c:48
SCIP_RETCODE redcosts_initFromParams(SCIP *scip, const RCPARAMS *parameters, REDCOST **redcostdata)
Definition: redcosts.c:590
SCIP_RETCODE extreduce_pseudoDeleteNodes(SCIP *, const SCIP_Bool *, EXTPERMA *, GRAPH *, SCIP_Real *, int *)
Definition: extreduce_base.c:1668
SCIP_RETCODE SCIPincludePropBasic(SCIP *scip, SCIP_PROP **propptr, const char *name, const char *desc, int priority, int freq, SCIP_Bool delay, SCIP_PROPTIMING timingmask, SCIP_DECL_PROPEXEC((*propexec)), SCIP_PROPDATA *propdata)
Definition: scip_prop.c:105
void redcosts_forLPget(SCIP *scip, SCIP_VAR **vars, const GRAPH *graph, SCIP_Real *redcosts)
Definition: redcosts.c:861