Detailed DescriptionShortest paths based primal heuristics for Steiner problems. This file implements several shortest paths based primal heuristics for Steiner problems, see "SCIP-Jack - A solver for STP and variants with parallelization extensions" by Gamrath, Koch, Maher, Rehfeldt and Shinano A list of all interface methods can be found in heur_tm.h Definition in file heur_tm.c. #include <assert.h>#include <string.h>#include "heur_tm.h"#include "probdata_stp.h"#include "portab.h"#include "scip/misc.h"#include <math.h>Go to the source code of this file.
Macro Definition Documentation
Definition at line 57 of file heur_tm.c. Referenced by SCIPheurComputeSteinerTree().
frequency during LP solving Definition at line 53 of file heur_tm.c. Referenced by SCIPincludeHeurTM().
seed for pseudo-random functions Definition at line 55 of file heur_tm.c. Referenced by SCIPincludeHeurTM().
number of runs at the root Definition at line 52 of file heur_tm.c. Referenced by SCIPincludeHeurTM().
Definition at line 40 of file heur_tm.c. Referenced by SCIPincludeHeurTM().
Definition at line 41 of file heur_tm.c. Referenced by SCIPincludeHeurTM().
Definition at line 43 of file heur_tm.c. Referenced by SCIPincludeHeurTM().
Definition at line 44 of file heur_tm.c. Referenced by SCIPincludeHeurTM().
Definition at line 45 of file heur_tm.c. Referenced by SCIPincludeHeurTM().
Definition at line 39 of file heur_tm.c. Referenced by SCIP_DECL_HEURCOPY(), SCIP_DECL_HEUREXEC(), SCIP_DECL_HEURFREE(), SCIP_DECL_HEURINIT(), and SCIPincludeHeurTM().
Definition at line 42 of file heur_tm.c. Referenced by SCIPincludeHeurTM().
Definition at line 46 of file heur_tm.c. Referenced by SCIPincludeHeurTM().
does the heuristic use a secondary SCIP instance? Definition at line 47 of file heur_tm.c. Referenced by SCIPincludeHeurTM().
Definition at line 60 of file heur_tm.c. Referenced by SCIPheurComputeSteinerTree().
Definition at line 58 of file heur_tm.c. Referenced by SCIPheurComputeSteinerTree().
Definition at line 59 of file heur_tm.c. Referenced by SCIPheurComputeSteinerTree(). Function Documentation
heuristic for degree constrained STPs
Definition at line 789 of file heur_tm.c. References CONNECT, EAT_LAST, GRAPH::edges, FALSE, FARAWAY, flipedge, GRAPH::grad, GRAPH::head, Is_term, GRAPH::knots, GRAPH::mark, GRAPH::maxdeg, GRAPH::oeat, GRAPH::outbeg, SCIPheurPruneDegConsSteinerTree(), GRAPH::tail, GRAPH::term, GRAPH::terms, TRUE, and UNKNOWN. Referenced by SCIPheurComputeSteinerTree().
shortest paths based heuristic
Definition at line 648 of file heur_tm.c. References FALSE, FARAWAY, GRAPH::grad, Is_term, GRAPH::knots, GRAPH::mark, prune(), GRAPH::source, STP_DIRECTED, STP_HOP_CONS, GRAPH::stp_type, GRAPH::tail, GRAPH::term, and TRUE. Referenced by SCIPheurComputeSteinerTree().
Dijkstra based shortest paths heuristic
Definition at line 620 of file heur_tm.c. References GRAPH::grad, graph_path_st(), GRAPH::knots, GRAPH::mark, and prune(). Referenced by SCIPheurComputeSteinerTree().
Voronoi based shortest path heuristic
Definition at line 1046 of file heur_tm.c. References CONNECT, Graph_Node::dist, shortest_path::dist, EAT_LAST, shortest_path::edge, GRAPH::edges, FALSE, FARAWAY, GRAPH::grad, GRAPH::head, heap_add(), Is_term, GRAPH::knots, GRAPH::mark, Graph_Node::number, GRAPH::oeat, GRAPH::outbeg, GRAPH::path_heap, GRAPH::path_state, prune(), GRAPH::source, GRAPH::tail, GRAPH::term, GRAPH::terms, TRUE, UNKNOWN, voronoi(), and voronoi_extend2(). Referenced by SCIPheurComputeSteinerTree().
trivial PC heuristic, selecting most expensive terminal as solution
Definition at line 1368 of file heur_tm.c. References CONNECT, GRAPH::cost, EAT_LAST, GRAPH::head, GRAPH::ieat, GRAPH::inpbeg, Is_term, GRAPH::oeat, GRAPH::outbeg, GRAPH::source, GRAPH::tail, GRAPH::term, and UNKNOWN. Referenced by SCIP_DECL_HEUREXEC().
Definition at line 497 of file heur_tm.c. References BLOCKED, GRAPH::cost, GRAPH::edges, flipedge, SCIPheurPrunePCSteinerTree(), SCIPheurPruneSteinerTree(), STP_HOP_CONS, STP_MAX_NODE_WEIGHT, STP_PRIZE_COLLECTING, STP_ROOTED_PRIZE_COLLECTING, and GRAPH::stp_type. Referenced by computeSteinerTree(), computeSteinerTreeDijk(), and computeSteinerTreeVnoi().
copy method for primal heuristic plugins (called when SCIP copies plugins) Definition at line 2208 of file heur_tm.c. References HEUR_NAME, and SCIPincludeHeurTM().
execution method of primal heuristic Definition at line 2280 of file heur_tm.c. References BLOCKED, CONNECT, GRAPH::cost, do_prizecoll_trivial(), GRAPH::edges, FALSE, FARAWAY, flipedge, GRAPH::grad, GRAPH::head, HEUR_NAME, SCIP_HeurData::hopfactor, GRAPH::hoplimit, Is_term, GRAPH::knots, GRAPH::maxdeg, SCIPheurComputeSteinerTree(), SCIPprobdataAddNewSol(), SCIPprobdataGetGraph(), SCIPprobdataGetNVars(), SCIPprobdataGetOffset(), SCIPprobdataGetVars(), SCIPprobdataGetXval(), SCIPvalidateStpSol(), GRAPH::source, STP_DEG_CONS, STP_HOP_CONS, STP_MAX_NODE_WEIGHT, STP_PRIZE_COLLECTING, GRAPH::stp_type, GRAPH::tail, GRAPH::term, TRUE, and UNKNOWN.
initialization method of primal heuristic (called after problem was transformed) Definition at line 2243 of file heur_tm.c. References HEUR_NAME, SCIPprobdataGetGraph(), GRAPH::stp_type, and STP_UNDIRECTED.
information method for a parameter change of random seed Definition at line 98 of file heur_tm.c. References CONNECT, GRAPH::cost, GRAPH::edges, FALSE, GRAPH::head, GRAPH::knots, GRAPH::source, GRAPH::tail, GRAPH::term, and TRUE.
execute shortest paths heuristic to obtain a Steiner tree
Definition at line 1419 of file heur_tm.c. References AUTO, BLOCKED, computeDegConsTree(), computeSteinerTree(), computeSteinerTreeDijk(), computeSteinerTreeVnoi(), CONNECT, GRAPH::cost, EAT_LAST, GRAPH::edges, FALSE, FARAWAY, flipedge, GNODECmpByDist(), GRAPH::grad, graph_path_execX(), GRAPH::head, GRAPH::hoplimit, Is_term, GRAPH::knots, GRAPH::layers, GRAPH::mark, SCIP_HeurData::nexecs, GRAPH::oeat, GRAPH::outbeg, GRAPH::source, STP_DEG_CONS, STP_DIRECTED, STP_HOP_CONS, STP_MAX_NODE_WEIGHT, STP_PRIZE_COLLECTING, STP_ROOTED_PRIZE_COLLECTING, SCIP_HeurData::stp_type, GRAPH::stp_type, GRAPH::tail, GRAPH::term, GRAPH::terms, TM_DIJKSTRA, TM_SP, TM_VORONOI, TRUE, and UNKNOWN. Referenced by bound_reduce(), da_reduce(), daPc_reduce(), hcrcbound_reduce(), and SCIP_DECL_HEUREXEC().
prune a degree constrained Steiner tree in such a way that all leaves are terminals
Definition at line 527 of file heur_tm.c. References CONNECT, EAT_LAST, FALSE, flipedge, GRAPH::head, GRAPH::ieat, GRAPH::inpbeg, Is_term, GRAPH::knots, GRAPH::oeat, GRAPH::outbeg, GRAPH::source, GRAPH::term, TRUE, and UNKNOWN. Referenced by computeDegConsTree(), and SCIP_DECL_HEUREXEC().
prune the (rooted) prize collecting Steiner tree in such a way that all leaves are terminals
Definition at line 197 of file heur_tm.c. References CONNECT, EAT_LAST, shortest_path::edge, FALSE, graph_path_exec(), graph_sol_valid(), GRAPH::head, GRAPH::ieat, GRAPH::inpbeg, Is_term, GRAPH::knots, GRAPH::mark, MST_MODE, GRAPH::oeat, GRAPH::outbeg, GRAPH::path_state, GRAPH::source, STP_ROOTED_PRIZE_COLLECTING, GRAPH::stp_type, GRAPH::tail, GRAPH::term, and TRUE. Referenced by extendSteinerTreePcMw(), prune(), SCIP_DECL_HEUREXEC(), and SCIPheurImproveSteinerTree().
prune a Steiner tree in such a way that all leaves are terminals
Definition at line 381 of file heur_tm.c. References CONNECT, EAT_LAST, shortest_path::edge, GRAPH::edges, FALSE, graph_path_exec(), GRAPH::head, GRAPH::ieat, GRAPH::inpbeg, GRAPH::knots, GRAPH::mark, MST_MODE, GRAPH::oeat, GRAPH::outbeg, GRAPH::source, STP_DIRECTED, GRAPH::stp_type, STP_UNDIRECTED, GRAPH::term, and GRAPH::terms. Referenced by prune(), SCIP_DECL_HEUREXEC(), and SCIPheurImproveSteinerTree().
creates the TM primal heuristic and includes it in SCIP
Definition at line 2687 of file heur_tm.c. References DEFAULT_DURINGLPFREQ, DEFAULT_EVALRUNS, DEFAULT_HOPFACTOR, DEFAULT_INITRUNS, DEFAULT_LEAFRUNS, DEFAULT_RANDSEED, DEFAULT_ROOTRUNS, DEFAULT_TYPE, FALSE, HEUR_DESC, HEUR_DISPCHAR, HEUR_FREQ, HEUR_FREQOFS, HEUR_MAXDEPTH, HEUR_NAME, HEUR_PRIORITY, HEUR_TIMING, HEUR_USESSUBSCIP, and TRUE. Referenced by runShell(), and SCIP_DECL_HEURCOPY(). |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||