1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /*                                                                           */
3 /*                  This file is part of the program and library             */
4 /*         SCIP --- Solving Constraint Integer Programs                      */
5 /*                                                                           */
6 /*    Copyright (C) 2002-2021 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   pub_presol.h
17  * @ingroup PUBLICCOREAPI
18  * @brief  public methods for presolvers
19  * @author Tobias Achterberg
20  */
21 
22 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
23 
24 #ifndef __SCIP_PUB_PRESOL_H__
25 #define __SCIP_PUB_PRESOL_H__
26 
27 #include "scip/def.h"
28 #include "scip/type_misc.h"
29 #include "scip/type_presol.h"
30 #include "scip/type_timing.h"
31 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35 
36 /**@addtogroup PublicPresolverMethods
37  *
38  * @{
39  */
40 
41 /** compares two presolvers w. r. to their priority */
42 SCIP_EXPORT
43 SCIP_DECL_SORTPTRCOMP(SCIPpresolComp);
44 
45 /** comparison method for sorting presolvers w.r.t. to their name */
46 SCIP_EXPORT
47 SCIP_DECL_SORTPTRCOMP(SCIPpresolCompName);
48 
49 /** gets user data of presolver */
50 SCIP_EXPORT
51 SCIP_PRESOLDATA* SCIPpresolGetData(
52    SCIP_PRESOL*          presol              /**< presolver */
53    );
54 
55 /** sets user data of presolver; user has to free old data in advance! */
56 SCIP_EXPORT
57 void SCIPpresolSetData(
58    SCIP_PRESOL*          presol,             /**< presolver */
59    SCIP_PRESOLDATA*      presoldata          /**< new presolver user data */
60    );
61 
62 /** gets name of presolver */
63 SCIP_EXPORT
64 const char* SCIPpresolGetName(
65    SCIP_PRESOL*          presol              /**< presolver */
66    );
67 
68 /** gets description of presolver */
69 SCIP_EXPORT
70 const char* SCIPpresolGetDesc(
71    SCIP_PRESOL*          presol              /**< presolver */
72    );
73 
74 /** gets priority of presolver */
75 SCIP_EXPORT
76 int SCIPpresolGetPriority(
77    SCIP_PRESOL*          presol              /**< presolver */
78    );
79 
80 /** gets round limit of presolver */
81 SCIP_EXPORT
82 int SCIPpresolGetMaxrounds(
83    SCIP_PRESOL*          presol              /**< presolver */
84    );
85 
86 /** gets the timing mask of the presolver */
87 SCIP_EXPORT
88 SCIP_PRESOLTIMING SCIPpresolGetTiming(
89    SCIP_PRESOL*          presol              /**< presolver */
90    );
91 
92 /** sets the timing mask of the presolver */
93 SCIP_EXPORT
94 void SCIPpresolSetTiming(
95    SCIP_PRESOL*          presol,             /**< presolver */
96    SCIP_PRESOLTIMING     timing              /**< timing mask of the presolver */
97    );
98 
99 /** is presolver initialized? */
100 SCIP_EXPORT
101 SCIP_Bool SCIPpresolIsInitialized(
102    SCIP_PRESOL*          presol              /**< presolver */
103    );
104 
105 /** gets time in seconds used in this presolver for setting up for next stages */
106 SCIP_EXPORT
107 SCIP_Real SCIPpresolGetSetupTime(
108    SCIP_PRESOL*          presol              /**< presolver */
109    );
110 
111 /** gets time in seconds used in this presolver */
112 SCIP_EXPORT
113 SCIP_Real SCIPpresolGetTime(
114    SCIP_PRESOL*          presol              /**< presolver */
115    );
116 
117 /** gets number of variables fixed in presolver */
118 SCIP_EXPORT
119 int SCIPpresolGetNFixedVars(
120    SCIP_PRESOL*          presol              /**< presolver */
121    );
122 
123 /** gets number of variables aggregated in presolver */
124 SCIP_EXPORT
125 int SCIPpresolGetNAggrVars(
126    SCIP_PRESOL*          presol              /**< presolver */
127    );
128 
129 /** gets number of variable types changed in presolver */
130 SCIP_EXPORT
131 int SCIPpresolGetNChgVarTypes(
132    SCIP_PRESOL*          presol              /**< presolver */
133    );
134 
135 /** gets number of bounds changed in presolver */
136 SCIP_EXPORT
137 int SCIPpresolGetNChgBds(
138    SCIP_PRESOL*          presol              /**< presolver */
139    );
140 
141 /** gets number of holes added to domains of variables in presolver */
142 SCIP_EXPORT
143 int SCIPpresolGetNAddHoles(
144    SCIP_PRESOL*          presol              /**< presolver */
145    );
146 
147 /** gets number of constraints deleted in presolver */
148 SCIP_EXPORT
149 int SCIPpresolGetNDelConss(
150    SCIP_PRESOL*          presol              /**< presolver */
151    );
152 
153 /** gets number of constraints added in presolver */
154 SCIP_EXPORT
155 int SCIPpresolGetNAddConss(
156    SCIP_PRESOL*          presol              /**< presolver */
157    );
158 
159 /** gets number of constraints upgraded in presolver */
160 SCIP_EXPORT
161 int SCIPpresolGetNUpgdConss(
162    SCIP_PRESOL*          presol              /**< presolver */
163    );
164 
165 /** gets number of coefficients changed in presolver */
166 SCIP_EXPORT
167 int SCIPpresolGetNChgCoefs(
168    SCIP_PRESOL*          presol              /**< presolver */
169    );
170 
171 /** gets number of constraint sides changed in presolver */
172 SCIP_EXPORT
173 int SCIPpresolGetNChgSides(
174    SCIP_PRESOL*          presol              /**< presolver */
175    );
176 
177 /** gets number of times the presolver was called and tried to find reductions */
178 SCIP_EXPORT
179 int SCIPpresolGetNCalls(
180    SCIP_PRESOL*          presol              /**< presolver */
181    );
182 
183 /** @} */
184 
185 #ifdef __cplusplus
186 }
187 #endif
188 
189 #endif
190