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