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