Scippy

SCIP

Solving Constraint Integer Programs

pub_implics.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 2002-2022 Zuse Institute Berlin */
7 /* */
8 /* Licensed under the Apache License, Version 2.0 (the "License"); */
9 /* you may not use this file except in compliance with the License. */
10 /* You may obtain a copy of the License at */
11 /* */
12 /* http://www.apache.org/licenses/LICENSE-2.0 */
13 /* */
14 /* Unless required by applicable law or agreed to in writing, software */
15 /* distributed under the License is distributed on an "AS IS" BASIS, */
16 /* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
17 /* See the License for the specific language governing permissions and */
18 /* limitations under the License. */
19 /* */
20 /* You should have received a copy of the Apache-2.0 license */
21 /* along with SCIP; see the file LICENSE. If not visit scipopt.org. */
22 /* */
23 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
24 
25 /**@file pub_implics.h
26  * @ingroup PUBLICCOREAPI
27  * @brief public methods for implications, variable bounds, and cliques
28  * @author Tobias Achterberg
29  */
30 
31 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
32 
33 #ifndef __SCIP_PUB_IMPLICS_H__
34 #define __SCIP_PUB_IMPLICS_H__
35 
36 
37 #include "scip/def.h"
38 #include "scip/type_var.h"
39 #include "scip/type_implics.h"
40 
41 #ifdef NDEBUG
42 #include "scip/struct_implics.h"
43 #endif
44 
45 #ifdef __cplusplus
46 extern "C" {
47 #endif
48 
49 /*
50  * methods for cliques
51  */
52 
53 /** returns the position of the given variable/value pair in the clique; returns -1 if variable/value pair is not member
54  * of the clique
55  */
56 SCIP_EXPORT
58  SCIP_CLIQUE* clique, /**< clique data structure */
59  SCIP_VAR* var, /**< variable to search for */
60  SCIP_Bool value /**< value of the variable in the clique */
61  );
62 
63 /** returns whether the given variable/value pair is member of the given clique */
64 SCIP_EXPORT
66  SCIP_CLIQUE* clique, /**< clique data structure */
67  SCIP_VAR* var, /**< variable to remove from the clique */
68  SCIP_Bool value /**< value of the variable in the clique */
69  );
70 
71 /** gets number of variables in the cliques */
72 SCIP_EXPORT
74  SCIP_CLIQUE* clique /**< clique data structure */
75  );
76 
77 /** gets array of active problem variables in the cliques */
78 SCIP_EXPORT
80  SCIP_CLIQUE* clique /**< clique data structure */
81  );
82 
83 /** gets array of values of active problem variables in the cliques, i.e. whether the variable is fixed to FALSE or
84  * to TRUE in the clique
85  */
86 SCIP_EXPORT
88  SCIP_CLIQUE* clique /**< clique data structure */
89  );
90 
91 /** gets unique identifier of the clique */
92 SCIP_EXPORT
93 unsigned int SCIPcliqueGetId(
94  SCIP_CLIQUE* clique /**< clique data structure */
95  );
96 
97 /** gets index of the clique in the clique table */
98 SCIP_EXPORT
100  SCIP_CLIQUE* clique /**< clique data structure */
101  );
102 
103 /** returns whether the given clique is cleaned up */
104 SCIP_EXPORT
106  SCIP_CLIQUE* clique /**< clique data structure */
107  );
108 
109 /** return whether the given clique is an equation */
110 SCIP_EXPORT
112  SCIP_CLIQUE* clique /**< clique data structure */
113  );
114 
115 
116 #ifdef NDEBUG
117 
118 /* In optimized mode, the function calls are overwritten by defines to reduce the number of function calls and
119  * speed up the algorithms.
120  */
121 
122 #define SCIPcliqueGetNVars(clique) ((clique)->nvars)
123 #define SCIPcliqueGetVars(clique) ((clique)->vars)
124 #define SCIPcliqueGetValues(clique) ((clique)->values)
125 #define SCIPcliqueGetId(clique) ((clique)->id)
126 #define SCIPcliqueGetIndex(clique) ((clique)->index)
127 #define SCIPcliqueIsCleanedUp(clique) ((clique)->startcleanup == -1)
128 #define SCIPcliqueIsEquation(clique) ((SCIP_Bool)(clique)->equation)
129 
130 #endif
131 
132 #ifdef __cplusplus
133 }
134 #endif
135 
136 #endif
type definitions for implications, variable bounds, and cliques
SCIP_VAR ** SCIPcliqueGetVars(SCIP_CLIQUE *clique)
Definition: implics.c:3377
int SCIPcliqueGetNVars(SCIP_CLIQUE *clique)
Definition: implics.c:3367
unsigned int SCIPcliqueGetId(SCIP_CLIQUE *clique)
Definition: implics.c:3399
SCIP_Bool SCIPcliqueHasVar(SCIP_CLIQUE *clique, SCIP_VAR *var, SCIP_Bool value)
Definition: implics.c:1141
type definitions for problem variables
int SCIPcliqueGetIndex(SCIP_CLIQUE *clique)
Definition: implics.c:3413
datastructures for implications, variable bounds, and cliques
#define SCIP_Bool
Definition: def.h:93
SCIP_Bool SCIPcliqueIsCleanedUp(SCIP_CLIQUE *clique)
Definition: implics.c:3423
SCIP_Bool SCIPcliqueIsEquation(SCIP_CLIQUE *clique)
Definition: implics.c:3433
int SCIPcliqueSearchVar(SCIP_CLIQUE *clique, SCIP_VAR *var, SCIP_Bool value)
Definition: implics.c:1081
common defines and data types used in all packages of SCIP
SCIP_Bool * SCIPcliqueGetValues(SCIP_CLIQUE *clique)
Definition: implics.c:3389