Loading [MathJax]/extensions/TeX/AMSsymbols.js
Scippy

SCIP

Solving Constraint Integer Programs

scip_prop.c
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-2025 Zuse Institute Berlin (ZIB) */
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 scip_prop.c
26 * @ingroup OTHER_CFILES
27 * @brief public methods for propagator plugins
28 * @author Tobias Achterberg
29 * @author Timo Berthold
30 * @author Gerald Gamrath
31 * @author Leona Gottwald
32 * @author Stefan Heinz
33 * @author Gregor Hendel
34 * @author Thorsten Koch
35 * @author Alexander Martin
36 * @author Marc Pfetsch
37 * @author Michael Winkler
38 * @author Kati Wolter
39 *
40 * @todo check all SCIP_STAGE_* switches, and include the new stages TRANSFORMED and INITSOLVE
41 */
42
43/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
44
45#include "scip/debug.h"
46#include "scip/prop.h"
47#include "scip/pub_message.h"
48#include "scip/pub_misc.h"
49#include "scip/pub_prop.h"
50#include "scip/scip_prop.h"
51#include "scip/set.h"
52#include "scip/struct_mem.h"
53#include "scip/struct_scip.h"
54#include "scip/struct_set.h"
55
56/** creates a propagator and includes it in SCIP.
57 *
58 * @pre This method can be called if SCIP is in one of the following stages:
59 * - \ref SCIP_STAGE_INIT
60 * - \ref SCIP_STAGE_PROBLEM
61 *
62 * @note method has all propagator callbacks as arguments and is thus changed every time a new
63 * callback is added in future releases; consider using SCIPincludePropBasic() and setter functions
64 * if you seek for a method which is less likely to change in future releases
65 */
67 SCIP* scip, /**< SCIP data structure */
68 const char* name, /**< name of propagator */
69 const char* desc, /**< description of propagator */
70 int priority, /**< priority of the propagator (>= 0: before, < 0: after constraint handlers) */
71 int freq, /**< frequency for calling propagator */
72 SCIP_Bool delay, /**< should propagator be delayed, if other propagators found reductions? */
73 SCIP_PROPTIMING timingmask, /**< positions in the node solving loop where propagator should be executed */
74 int presolpriority, /**< presolving priority of the propagator (>= 0: before, < 0: after constraint handlers) */
75 int presolmaxrounds, /**< maximal number of presolving rounds the propagator participates in (-1: no limit) */
76 SCIP_PRESOLTIMING presoltiming, /**< timing mask of the propagator's presolving method */
77 SCIP_DECL_PROPCOPY ((*propcopy)), /**< copy method of propagator or NULL if you don't want to copy your plugin into sub-SCIPs */
78 SCIP_DECL_PROPFREE ((*propfree)), /**< destructor of propagator */
79 SCIP_DECL_PROPINIT ((*propinit)), /**< initialize propagator */
80 SCIP_DECL_PROPEXIT ((*propexit)), /**< deinitialize propagator */
81 SCIP_DECL_PROPINITPRE ((*propinitpre)), /**< presolving initialization method of propagator */
82 SCIP_DECL_PROPEXITPRE ((*propexitpre)), /**< presolving deinitialization method of propagator */
83 SCIP_DECL_PROPINITSOL ((*propinitsol)), /**< solving process initialization method of propagator */
84 SCIP_DECL_PROPEXITSOL ((*propexitsol)), /**< solving process deinitialization method of propagator */
85 SCIP_DECL_PROPPRESOL ((*proppresol)), /**< presolving method */
86 SCIP_DECL_PROPEXEC ((*propexec)), /**< execution method of propagator */
87 SCIP_DECL_PROPRESPROP ((*propresprop)), /**< propagation conflict resolving method */
88 SCIP_PROPDATA* propdata /**< propagator data */
89 )
90{
91 SCIP_PROP* prop;
92
94
95 /* check whether propagator is already present */
96 if( SCIPfindProp(scip, name) != NULL )
97 {
98 SCIPerrorMessage("propagator <%s> already included.\n", name);
99 return SCIP_INVALIDDATA;
100 }
101
102 SCIP_CALL( SCIPpropCreate(&prop, scip->set, scip->messagehdlr, scip->mem->setmem,
103 name, desc, priority, freq, delay, timingmask, presolpriority, presolmaxrounds, presoltiming,
104 propcopy, propfree, propinit, propexit, propinitpre, propexitpre, propinitsol, propexitsol,
105 proppresol, propexec, propresprop, propdata) );
106 SCIP_CALL( SCIPsetIncludeProp(scip->set, prop) );
107
108 return SCIP_OKAY;
109}
110
111/** creates a propagator and includes it in SCIP. All non-fundamental (or optional) callbacks will be set to NULL.
112 * Optional callbacks can be set via specific setter functions, see SCIPsetPropInit(), SCIPsetPropExit(),
113 * SCIPsetPropCopy(), SCIPsetPropFree(), SCIPsetPropInitsol(), SCIPsetPropExitsol(),
114 * SCIPsetPropInitpre(), SCIPsetPropExitpre(), SCIPsetPropPresol(), and SCIPsetPropResprop().
115 *
116* @note if you want to set all callbacks with a single method call, consider using SCIPincludeProp() instead
117 */
119 SCIP* scip, /**< SCIP data structure */
120 SCIP_PROP** propptr, /**< reference to a propagator pointer, or NULL */
121 const char* name, /**< name of propagator */
122 const char* desc, /**< description of propagator */
123 int priority, /**< priority of the propagator (>= 0: before, < 0: after constraint handlers) */
124 int freq, /**< frequency for calling propagator */
125 SCIP_Bool delay, /**< should propagator be delayed, if other propagators found reductions? */
126 SCIP_PROPTIMING timingmask, /**< positions in the node solving loop where propagators should be executed */
127 SCIP_DECL_PROPEXEC ((*propexec)), /**< execution method of propagator */
128 SCIP_PROPDATA* propdata /**< propagator data */
129 )
130{
131 SCIP_PROP* prop;
132
133 SCIP_CALL( SCIPcheckStage(scip, "SCIPincludePropBasic", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
134
135 /* check whether propagator is already present */
136 if( SCIPfindProp(scip, name) != NULL )
137 {
138 SCIPerrorMessage("propagator <%s> already included.\n", name);
139 return SCIP_INVALIDDATA;
140 }
141
142 SCIP_CALL( SCIPpropCreate(&prop, scip->set, scip->messagehdlr, scip->mem->setmem,
143 name, desc, priority, freq, delay, timingmask, 0, -1, SCIP_PRESOLTIMING_ALWAYS,
145 NULL, propexec, NULL, propdata) );
146 SCIP_CALL( SCIPsetIncludeProp(scip->set, prop) );
147
148 if( propptr != NULL )
149 *propptr = prop;
150
151 return SCIP_OKAY;
152}
153
154/** sets copy method of propagator */
156 SCIP* scip, /**< SCIP data structure */
157 SCIP_PROP* prop, /**< propagator */
158 SCIP_DECL_PROPCOPY ((*propcopy)) /**< copy method of propagator or NULL if you don't want to copy your plugin into sub-SCIPs */
159 )
160{
162
163 assert(prop != NULL);
164
165 SCIPpropSetCopy(prop, propcopy);
166
167 return SCIP_OKAY;
168}
169
170/** sets destructor method of propagator */
172 SCIP* scip, /**< SCIP data structure */
173 SCIP_PROP* prop, /**< propagator */
174 SCIP_DECL_PROPFREE ((*propfree)) /**< destructor of propagator */
175 )
176{
178
179 assert(prop != NULL);
180
181 SCIPpropSetFree(prop, propfree);
182
183 return SCIP_OKAY;
184}
185
186/** sets initialization method of propagator */
188 SCIP* scip, /**< SCIP data structure */
189 SCIP_PROP* prop, /**< propagator */
190 SCIP_DECL_PROPINIT ((*propinit)) /**< initialize propagator */
191 )
192{
194
195 assert(prop != NULL);
196
197 SCIPpropSetInit(prop, propinit);
198
199 return SCIP_OKAY;
200}
201
202/** sets deinitialization method of propagator */
204 SCIP* scip, /**< SCIP data structure */
205 SCIP_PROP* prop, /**< propagator */
206 SCIP_DECL_PROPEXIT ((*propexit)) /**< deinitialize propagator */
207 )
208{
210
211 assert(prop != NULL);
212
213 SCIPpropSetExit(prop, propexit);
214
215 return SCIP_OKAY;
216}
217
218/** sets solving process initialization method of propagator */
220 SCIP* scip, /**< SCIP data structure */
221 SCIP_PROP* prop, /**< propagator */
222 SCIP_DECL_PROPINITSOL((*propinitsol)) /**< solving process initialization method of propagator */
223 )
224{
226
227 assert(prop != NULL);
228
229 SCIPpropSetInitsol(prop, propinitsol);
230
231 return SCIP_OKAY;
232}
233
234/** sets solving process deinitialization method of propagator */
236 SCIP* scip, /**< SCIP data structure */
237 SCIP_PROP* prop, /**< propagator */
238 SCIP_DECL_PROPEXITSOL ((*propexitsol)) /**< solving process deinitialization method of propagator */
239 )
240{
242
243 assert(prop != NULL);
244
245 SCIPpropSetExitsol(prop, propexitsol);
246
247 return SCIP_OKAY;
248}
249
250/** sets preprocessing initialization method of propagator */
252 SCIP* scip, /**< SCIP data structure */
253 SCIP_PROP* prop, /**< propagator */
254 SCIP_DECL_PROPINITPRE((*propinitpre)) /**< preprocessing initialization method of propagator */
255 )
256{
258
259 assert(prop != NULL);
260
261 SCIPpropSetInitpre(prop, propinitpre);
262
263 return SCIP_OKAY;
264}
265
266/** sets preprocessing deinitialization method of propagator */
268 SCIP* scip, /**< SCIP data structure */
269 SCIP_PROP* prop, /**< propagator */
270 SCIP_DECL_PROPEXITPRE((*propexitpre)) /**< preprocessing deinitialization method of propagator */
271 )
272{
274
275 assert(prop != NULL);
276
277 SCIPpropSetExitpre(prop, propexitpre);
278
279 return SCIP_OKAY;
280}
281
282/** sets presolving method of propagator */
284 SCIP* scip, /**< SCIP data structure */
285 SCIP_PROP* prop, /**< propagator */
286 SCIP_DECL_PROPPRESOL((*proppresol)), /**< presolving method of propagator */
287 int presolpriority, /**< presolving priority of the propagator (>= 0: before, < 0: after constraint handlers) */
288 int presolmaxrounds, /**< maximal number of presolving rounds the propagator participates in (-1: no limit) */
289 SCIP_PRESOLTIMING presoltiming /**< timing mask of the propagator's presolving method */
290 )
291{
292 const char* name;
294
295 assert(scip != NULL);
297
298 assert(prop != NULL);
299 SCIP_CALL( SCIPpropSetPresol(prop, proppresol, presolpriority, presolmaxrounds, presoltiming) );
300
301 name = SCIPpropGetName(prop);
302
303 (void) SCIPsnprintf(paramname, SCIP_MAXSTRLEN, "propagating/%s/maxprerounds", name);
304 SCIP_CALL( SCIPsetSetDefaultIntParam(scip->set, paramname, presolmaxrounds) );
305
306 (void) SCIPsnprintf(paramname, SCIP_MAXSTRLEN, "propagating/%s/presolpriority", name);
307 SCIP_CALL( SCIPsetSetDefaultIntParam(scip->set, paramname, presolpriority) );
308
309 (void) SCIPsnprintf(paramname, SCIP_MAXSTRLEN, "propagating/%s/presoltiming", name);
310 SCIP_CALL( SCIPsetSetDefaultIntParam(scip->set, paramname, (int) presoltiming) );
311
312 return SCIP_OKAY;
313}
314
315/** sets propagation conflict resolving callback of propagator */
317 SCIP* scip, /**< SCIP data structure */
318 SCIP_PROP* prop, /**< propagator */
319 SCIP_DECL_PROPRESPROP ((*propresprop)) /**< propagation conflict resolving callback */
320 )
321{
323
324 assert(prop != NULL);
325
326 SCIPpropSetResprop(prop, propresprop);
327
328 return SCIP_OKAY;
329}
330
331
332/** returns the propagator of the given name, or NULL if not existing */
334 SCIP* scip, /**< SCIP data structure */
335 const char* name /**< name of propagator */
336 )
337{
338 assert(scip != NULL);
339 assert(scip->set != NULL);
340 assert(name != NULL);
341
342 return SCIPsetFindProp(scip->set, name);
343}
344
345/** returns the array of currently available propagators */
347 SCIP* scip /**< SCIP data structure */
348 )
349{
350 assert(scip != NULL);
351 assert(scip->set != NULL);
352
354
355 return scip->set->props;
356}
357
358/** returns the number of currently available propagators */
360 SCIP* scip /**< SCIP data structure */
361 )
362{
363 assert(scip != NULL);
364 assert(scip->set != NULL);
365
366 return scip->set->nprops;
367}
368
369/** sets the priority of a propagator */
371 SCIP* scip, /**< SCIP data structure */
372 SCIP_PROP* prop, /**< propagator */
373 int priority /**< new priority of the propagator */
374 )
375{
376 assert(scip != NULL);
377 assert(scip->set != NULL);
378
379 SCIPpropSetPriority(prop, scip->set, priority);
380
381 return SCIP_OKAY;
382}
383
384/** sets the presolving priority of a propagator */
386 SCIP* scip, /**< SCIP data structure */
387 SCIP_PROP* prop, /**< propagator */
388 int presolpriority /**< new presol priority of the propagator */
389 )
390{
391 assert(scip != NULL);
392 assert(scip->set != NULL);
393
394 SCIPpropSetPresolPriority(prop, scip->set, presolpriority);
395
396 return SCIP_OKAY;
397}
SCIP_RETCODE SCIPcheckStage(SCIP *scip, const char *method, SCIP_Bool init, SCIP_Bool problem, SCIP_Bool transforming, SCIP_Bool transformed, SCIP_Bool initpresolve, SCIP_Bool presolving, SCIP_Bool exitpresolve, SCIP_Bool presolved, SCIP_Bool initsolve, SCIP_Bool solving, SCIP_Bool solved, SCIP_Bool exitsolve, SCIP_Bool freetrans, SCIP_Bool freescip)
Definition: debug.c:2203
methods for debugging
#define NULL
Definition: def.h:266
#define SCIP_MAXSTRLEN
Definition: def.h:287
#define SCIP_Bool
Definition: def.h:91
#define TRUE
Definition: def.h:93
#define FALSE
Definition: def.h:94
#define SCIP_CALL(x)
Definition: def.h:373
SCIP_PROP * SCIPfindProp(SCIP *scip, const char *name)
Definition: scip_prop.c:333
SCIP_RETCODE SCIPsetPropPriority(SCIP *scip, SCIP_PROP *prop, int priority)
Definition: scip_prop.c:370
SCIP_RETCODE SCIPsetPropInitsol(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPINITSOL((*propinitsol)))
Definition: scip_prop.c:219
SCIP_RETCODE SCIPsetPropResprop(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPRESPROP((*propresprop)))
Definition: scip_prop.c:316
SCIP_RETCODE SCIPsetPropPresolPriority(SCIP *scip, SCIP_PROP *prop, int presolpriority)
Definition: scip_prop.c:385
int SCIPgetNProps(SCIP *scip)
Definition: scip_prop.c:359
SCIP_RETCODE SCIPsetPropPresol(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPPRESOL((*proppresol)), int presolpriority, int presolmaxrounds, SCIP_PRESOLTIMING presoltiming)
Definition: scip_prop.c:283
SCIP_RETCODE SCIPsetPropExitpre(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPEXITPRE((*propexitpre)))
Definition: scip_prop.c:267
const char * SCIPpropGetName(SCIP_PROP *prop)
Definition: prop.c:941
SCIP_RETCODE SCIPsetPropExit(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPEXIT((*propexit)))
Definition: scip_prop.c:203
SCIP_RETCODE SCIPsetPropInit(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPINIT((*propinit)))
Definition: scip_prop.c:187
SCIP_RETCODE SCIPincludeProp(SCIP *scip, const char *name, const char *desc, int priority, int freq, SCIP_Bool delay, SCIP_PROPTIMING timingmask, int presolpriority, int presolmaxrounds, SCIP_PRESOLTIMING presoltiming, SCIP_DECL_PROPCOPY((*propcopy)), SCIP_DECL_PROPFREE((*propfree)), SCIP_DECL_PROPINIT((*propinit)), SCIP_DECL_PROPEXIT((*propexit)), SCIP_DECL_PROPINITPRE((*propinitpre)), SCIP_DECL_PROPEXITPRE((*propexitpre)), SCIP_DECL_PROPINITSOL((*propinitsol)), SCIP_DECL_PROPEXITSOL((*propexitsol)), SCIP_DECL_PROPPRESOL((*proppresol)), SCIP_DECL_PROPEXEC((*propexec)), SCIP_DECL_PROPRESPROP((*propresprop)), SCIP_PROPDATA *propdata)
Definition: scip_prop.c:66
SCIP_RETCODE SCIPsetPropInitpre(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPINITPRE((*propinitpre)))
Definition: scip_prop.c:251
SCIP_RETCODE SCIPsetPropFree(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPFREE((*propfree)))
Definition: scip_prop.c:171
SCIP_PROP ** SCIPgetProps(SCIP *scip)
Definition: scip_prop.c:346
SCIP_RETCODE SCIPsetPropCopy(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPCOPY((*propcopy)))
Definition: scip_prop.c:155
SCIP_RETCODE SCIPsetPropExitsol(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPEXITSOL((*propexitsol)))
Definition: scip_prop.c:235
SCIP_RETCODE SCIPincludePropBasic(SCIP *scip, SCIP_PROP **propptr, const char *name, const char *desc, int priority, int freq, SCIP_Bool delay, SCIP_PROPTIMING timingmask, SCIP_DECL_PROPEXEC((*propexec)), SCIP_PROPDATA *propdata)
Definition: scip_prop.c:118
int SCIPsnprintf(char *t, int len, const char *s,...)
Definition: misc.c:10880
static const char * paramname[]
Definition: lpi_msk.c:5103
void SCIPpropSetPriority(SCIP_PROP *prop, SCIP_SET *set, int priority)
Definition: prop.c:981
void SCIPpropSetResprop(SCIP_PROP *prop, SCIP_DECL_PROPRESPROP((*propresprop)))
Definition: prop.c:930
void SCIPpropSetExitsol(SCIP_PROP *prop, SCIP_DECL_PROPEXITSOL((*propexitsol)))
Definition: prop.c:865
void SCIPpropSetFree(SCIP_PROP *prop, SCIP_DECL_PROPFREE((*propfree)))
Definition: prop.c:821
SCIP_RETCODE SCIPpropCreate(SCIP_PROP **prop, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int priority, int freq, SCIP_Bool delay, SCIP_PROPTIMING timingmask, int presolpriority, int presolmaxrounds, SCIP_PRESOLTIMING presoltiming, SCIP_DECL_PROPCOPY((*propcopy)), SCIP_DECL_PROPFREE((*propfree)), SCIP_DECL_PROPINIT((*propinit)), SCIP_DECL_PROPEXIT((*propexit)), SCIP_DECL_PROPINITPRE((*propinitpre)), SCIP_DECL_PROPEXITPRE((*propexitpre)), SCIP_DECL_PROPINITSOL((*propinitsol)), SCIP_DECL_PROPEXITSOL((*propexitsol)), SCIP_DECL_PROPPRESOL((*proppresol)), SCIP_DECL_PROPEXEC((*propexec)), SCIP_DECL_PROPRESPROP((*propresprop)), SCIP_PROPDATA *propdata)
Definition: prop.c:242
void SCIPpropSetExitpre(SCIP_PROP *prop, SCIP_DECL_PROPEXITPRE((*propexitpre)))
Definition: prop.c:889
void SCIPpropSetInitsol(SCIP_PROP *prop, SCIP_DECL_PROPINITSOL((*propinitsol)))
Definition: prop.c:854
void SCIPpropSetExit(SCIP_PROP *prop, SCIP_DECL_PROPEXIT((*propexit)))
Definition: prop.c:843
void SCIPpropSetPresolPriority(SCIP_PROP *prop, SCIP_SET *set, int presolpriority)
Definition: prop.c:995
void SCIPpropSetInitpre(SCIP_PROP *prop, SCIP_DECL_PROPINITPRE((*propinitpre)))
Definition: prop.c:876
void SCIPpropSetInit(SCIP_PROP *prop, SCIP_DECL_PROPINIT((*propinit)))
Definition: prop.c:832
SCIP_RETCODE SCIPpropSetPresol(SCIP_PROP *prop, SCIP_DECL_PROPPRESOL((*proppresol)), int presolpriority, int presolmaxrounds, SCIP_PRESOLTIMING presoltiming)
Definition: prop.c:900
void SCIPpropSetCopy(SCIP_PROP *prop, SCIP_DECL_PROPCOPY((*propcopy)))
Definition: prop.c:810
internal methods for propagators
public methods for message output
#define SCIPerrorMessage
Definition: pub_message.h:64
public data structures and miscellaneous methods
public methods for propagators
public methods for propagator plugins
SCIP_RETCODE SCIPsetSetDefaultIntParam(SCIP_SET *set, const char *name, int defaultvalue)
Definition: set.c:3311
SCIP_RETCODE SCIPsetIncludeProp(SCIP_SET *set, SCIP_PROP *prop)
Definition: set.c:4358
void SCIPsetSortProps(SCIP_SET *set)
Definition: set.c:4405
SCIP_PROP * SCIPsetFindProp(SCIP_SET *set, const char *name)
Definition: set.c:4385
internal methods for global SCIP settings
datastructures for block memory pools and memory buffers
SCIP main data structure.
datastructures for global SCIP settings
#define SCIP_DECL_PROPCOPY(x)
Definition: type_prop.h:61
#define SCIP_DECL_PROPEXITPRE(x)
Definition: type_prop.h:114
#define SCIP_DECL_PROPINITSOL(x)
Definition: type_prop.h:129
#define SCIP_DECL_PROPINIT(x)
Definition: type_prop.h:77
#define SCIP_DECL_PROPFREE(x)
Definition: type_prop.h:69
#define SCIP_DECL_PROPEXITSOL(x)
Definition: type_prop.h:141
#define SCIP_DECL_PROPEXIT(x)
Definition: type_prop.h:85
#define SCIP_DECL_PROPPRESOL(x)
Definition: type_prop.h:193
#define SCIP_DECL_PROPINITPRE(x)
Definition: type_prop.h:99
#define SCIP_DECL_PROPRESPROP(x)
Definition: type_prop.h:258
struct SCIP_PropData SCIP_PROPDATA
Definition: type_prop.h:52
#define SCIP_DECL_PROPEXEC(x)
Definition: type_prop.h:217
@ SCIP_INVALIDDATA
Definition: type_retcode.h:52
@ SCIP_OKAY
Definition: type_retcode.h:42
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:63
unsigned int SCIP_PROPTIMING
Definition: type_timing.h:74
#define SCIP_PRESOLTIMING_ALWAYS
Definition: type_timing.h:58
unsigned int SCIP_PRESOLTIMING
Definition: type_timing.h:61