Scippy

SCIP

Solving Constraint Integer Programs

heur_local.h File Reference

Detailed Description

Improvement heuristic for Steiner problems.

Author
Daniel Rehfeldt

This file implements three local search heuristics, namely vertex insertion, key-path exchange and key-vertex elimination, see "Fast Local Search for Steiner Trees in Graphs" by Uchoa and Werneck. Furthermore, it includes several non-published local search heuristics for prize-collecting Steiner problem tree variants.

Definition in file heur_local.h.

#include "scip/scip.h"
#include "graph.h"

Go to the source code of this file.

Functions

SCIP_RETCODE SCIPStpIncludeHeurLocal (SCIP *scip)
 
SCIP_RETCODE SCIPStpHeurLocalRun (SCIP *scip, GRAPH *graph, int *best_result)
 
SCIP_RETCODE SCIPStpHeurLocalRunFast (SCIP *scip, GRAPH *graph, int *best_result)
 
SCIP_RETCODE SCIPStpHeurLocalExtendPcMwImp (SCIP *scip, const GRAPH *graph, int *result)
 
SCIP_RETCODE SCIPStpHeurLocalExtendPcMw (SCIP *scip, GRAPH *graph, const SCIP_Real *cost, int *stedge, STP_Bool *stvertex)
 
SCIP_RETCODE SCIPStpHeurLocalExtendPcMwOut (SCIP *scip, GRAPH *graph, int *stedge, STP_Bool *stvertex)
 

Function Documentation

◆ SCIPStpIncludeHeurLocal()

◆ SCIPStpHeurLocalRun()

◆ SCIPStpHeurLocalRunFast()

SCIP_RETCODE SCIPStpHeurLocalRunFast ( SCIP scip,
GRAPH graph,
int *  solEdges 
)

perform fast local heuristics on a given Steiner tree

perform local heuristics on a given Steiner tree

Parameters
scipSCIP data structure
graphgraph data structure
solEdgesarray indicating whether an arc is part of the solution: CONNECTED/UNKNOWN (in/out)

Definition at line 3911 of file heur_local.c.

References localRun(), SCIP_CALL, SCIP_OKAY, and TRUE.

Referenced by computeSteinerTreeRedCosts().

◆ SCIPStpHeurLocalExtendPcMwImp()

SCIP_RETCODE SCIPStpHeurLocalExtendPcMwImp ( SCIP scip,
const GRAPH graph,
int *  result 
)

Implication based local heuristic for (R)PC and MW

Parameters
scipSCIP data structure
graphgraph data structure
resultarray indicating whether an arc is part of the solution (CONNECTED/UNKNOWN)

Definition at line 3923 of file heur_local.c.

References GRAPH::extended, graph_knot_printInfo(), graph_pc_isPcMw(), graph_pc_knotIsFixedTerm(), graph_pc_nNonFixedTerms(), Is_pseudoTerm, Is_term, GRAPH::knots, nnodes, NULL, SCIP_OKAY, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPStpGetPcImplStarts(), SCIPStpGetPcImplVerts(), solstp_setVertexFromEdge(), and GRAPH::term.

Referenced by SCIP_DECL_HEUREXEC().

◆ SCIPStpHeurLocalExtendPcMw()

SCIP_RETCODE SCIPStpHeurLocalExtendPcMw ( SCIP scip,
GRAPH graph,
const SCIP_Real cost,
int *  stedge,
STP_Bool stvertex 
)

◆ SCIPStpHeurLocalExtendPcMwOut()

SCIP_RETCODE SCIPStpHeurLocalExtendPcMwOut ( SCIP scip,
GRAPH graph,
int *  stedge,
STP_Bool stvertex 
)

greedy extension local heuristic for (R)PC and MW

Greedy Extension local heuristic for (R)PC and MW

Parameters
scipSCIP data structure
graphgraph data structure
stedgeinitialized array to indicate whether an edge is part of the Steiner tree
stvertexuninitialized array to indicate whether a vertex is part of the Steiner tree

Definition at line 4225 of file heur_local.c.

References GRAPH::edges, GRAPH::extended, FALSE, graph_free_csr(), graph_heap_create(), graph_heap_free(), graph_init_csr(), graph_path_st_pcmw_extendOut(), graph_pc_2org(), graph_pc_2orgcheck(), graph_pc_2trans(), graph_pc_isPcMw(), graph_pc_termIsNonLeafTerm(), GREEDY_EXTENSIONS, Is_term, GRAPH::knots, GRAPH::mark, nnodes, NULL, GRAPH::prize, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPcreateRandom(), SCIPfreeBufferArray, SCIPfreeRandom(), SCIPisLE(), SCIPrandomGetInt(), solstp_getObjBounded(), solstp_prune(), solstp_setVertexFromEdge(), GRAPH::term, and TRUE.