Scippy

SCIP

Solving Constraint Integer Programs

prop_stp.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of the program and library */
4 /* SCIP --- Solving Constraint Integer Programs */
5 /* */
6 /* Copyright (C) 2002-2022 Konrad-Zuse-Zentrum */
7 /* fuer Informationstechnik Berlin */
8 /* */
9 /* SCIP is distributed under the terms of the ZIB Academic License. */
10 /* */
11 /* You should have received a copy of the ZIB Academic License */
12 /* along with SCIP; see the file COPYING. If not visit scipopt.org. */
13 /* */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file prop_stp.h
17  * @brief propagator for Steiner tree problems, using the LP reduced costs
18  * @author Daniel Rehfeldt
19  *
20  * This propagator makes use of the reduced cost of an optimally solved LP relaxation to propagate the variables, see
21  * "SCIP-Jack - A solver for STP and variants with parallelization extensions" by
22  * Gamrath, Koch, Maher, Rehfeldt and Shinano
23  */
24 
25 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
26 
27 #ifndef __SCIP_PROP_STP_H__
28 #define __SCIP_PROP_STP_H__
29 
30 #include <stdio.h>
31 #include <stdlib.h>
32 #include "scip/scip.h"
33 #include "graph.h"
34 #include "probdata_stp.h"
35 
36 #ifdef __cplusplus
37 extern "C" {
38 #endif
39 
40 /** creates the stp propagator and includes it in SCIP */
41 SCIP_EXPORT
43  SCIP* scip /**< SCIP data structure */
44  );
45 
46 
47 /** fix a variable (corresponding to an edge) to 0 */
48 SCIP_EXPORT
50  SCIP* scip, /**< SCIP data structure */
51  SCIP_VAR* edgevar, /**< the variable to be fixed */
52  SCIP_Bool* success /**< could variable be fixed? */
53  );
54 
55 
56 /** fix a variable (corresponding to an edge) to 1 */
57 SCIP_EXPORT
59  SCIP* scip, /**< SCIP data structure */
60  SCIP_VAR* edgevar, /**< the variable to be fixed */
61  SCIP_Bool* success /**< could variable be fixed? */
62  );
63 
64 
65 /** return total number of arcs fixed by 'fixedgevar' method of this propagator */
66 SCIP_EXPORT
68  SCIP* scip /**< SCIP data structure */
69  );
70 
71 
72 /** checks whether problem has become infeasible at current node */
73 SCIP_EXPORT
75  SCIP* scip, /**< SCIP data structure */
76  SCIP_Bool* probisinfeas /**< is infeasible? */
77  );
78 
79 /** gets propagator graph */
80 SCIP_EXPORT
82  SCIP* scip, /**< SCIP data structure */
83  GRAPH** graph, /**< graph data */
84  SCIP_Longint* graphnodenumber, /**< point to b&b node for which graph is valid */
85  SCIP_Bool* probisinfeas, /**< infeasible problem? */
86  SCIP_Real* offset /**< needed for PC/MW */
87  );
88 
89 /** gives array indicating which nodes are degree-2 bounded */
90 SCIP_EXPORT
92  SCIP* scip /**< SCIP data structure */
93 );
94 
95 #ifdef __cplusplus
96 }
97 #endif
98 
99 #endif
SCIP_RETCODE SCIPStpPropCheckForInfeas(SCIP *scip, SCIP_Bool *probisinfeas)
Definition: prop_stp.c:2488
SCIP_RETCODE SCIPStpFixEdgeVarTo1(SCIP *scip, SCIP_VAR *edgevar, SCIP_Bool *success)
Definition: prop_stp.c:2443
int SCIPStpNfixedEdges(SCIP *scip)
Definition: prop_stp.c:2467
SCIP_RETCODE SCIPStpFixEdgeVarTo0(SCIP *scip, SCIP_VAR *edgevar, SCIP_Bool *success)
Definition: prop_stp.c:2419
Problem data for stp problem.
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:54
includes various files containing graph methods used for Steiner tree problems
SCIP_RETCODE SCIPStpPropGetGraph(SCIP *scip, GRAPH **graph, SCIP_Longint *graphnodenumber, SCIP_Bool *probisinfeas, SCIP_Real *offset)
Definition: prop_stp.c:2521
#define SCIP_Bool
Definition: def.h:84
SCIP_RETCODE SCIPincludePropStp(SCIP *scip)
Definition: prop_stp.c:2610
const SCIP_Bool * SCIPStpPropGet2BoundedArr(SCIP *scip)
Definition: prop_stp.c:2593
#define SCIP_Real
Definition: def.h:177
#define SCIP_Longint
Definition: def.h:162
SCIP callable library.