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 <ctype.h>
36 #include <stdarg.h>
37 #include <assert.h>
38 #include <string.h>
39 #if defined(_WIN32) || defined(_WIN64)
40 #else
41 #include <strings.h> /*lint --e{766}*/
42 #endif
43 
44 
45 #include "lpi/lpi.h"
46 #include "nlpi/exprinterpret.h"
47 #include "nlpi/nlpi.h"
48 #include "scip/benders.h"
49 #include "scip/benderscut.h"
50 #include "scip/branch.h"
51 #include "scip/branch_nodereopt.h"
52 #include "scip/clock.h"
53 #include "scip/compr.h"
54 #include "scip/concsolver.h"
55 #include "scip/concurrent.h"
56 #include "scip/conflict.h"
57 #include "scip/conflictstore.h"
58 #include "scip/cons.h"
59 #include "scip/cons_linear.h"
60 #include "scip/cutpool.h"
61 #include "scip/cuts.h"
62 #include "scip/debug.h"
63 #include "scip/def.h"
64 #include "scip/dialog.h"
65 #include "scip/dialog_default.h"
66 #include "scip/disp.h"
67 #include "scip/event.h"
68 #include "scip/heur.h"
69 #include "scip/heur_ofins.h"
70 #include "scip/heur_reoptsols.h"
72 #include "scip/heuristics.h"
73 #include "scip/history.h"
74 #include "scip/implics.h"
75 #include "scip/interrupt.h"
76 #include "scip/lp.h"
77 #include "scip/mem.h"
78 #include "scip/message_default.h"
79 #include "scip/misc.h"
80 #include "scip/nlp.h"
81 #include "scip/nodesel.h"
82 #include "scip/paramset.h"
83 #include "scip/presol.h"
84 #include "scip/presolve.h"
85 #include "scip/pricer.h"
86 #include "scip/pricestore.h"
87 #include "scip/primal.h"
88 #include "scip/prob.h"
89 #include "scip/prop.h"
90 #include "scip/reader.h"
91 #include "scip/relax.h"
92 #include "scip/reopt.h"
93 #include "scip/retcode.h"
94 #include "scip/scipbuildflags.h"
95 #include "scip/scipcoreplugins.h"
96 #include "scip/scipgithash.h"
97 #include "scip/sepa.h"
98 #include "scip/sepastore.h"
99 #include "scip/set.h"
100 #include "scip/sol.h"
101 #include "scip/solve.h"
102 #include "scip/stat.h"
103 #include "scip/syncstore.h"
104 #include "scip/table.h"
105 #include "scip/tree.h"
106 #include "scip/var.h"
107 #include "scip/visual.h"
108 #include "xml/xml.h"
109 
110 #include "scip/scip_prop.h"
111 
112 #include "scip/pub_message.h"
113 #include "scip/pub_misc.h"
114 #include "scip/pub_prop.h"
115 
116 
117 /* In debug mode, we include the SCIP's structure in scip.c, such that no one can access
118  * this structure except the interface methods in scip.c.
119  * In optimized mode, the structure is included in scip.h, because some of the methods
120  * are implemented as defines for performance reasons (e.g. the numerical comparisons)
121  */
122 #ifndef NDEBUG
123 #include "scip/struct_scip.h"
124 #endif
125 
126 /** creates a propagator and includes it in SCIP.
127  *
128  * @note method has all propagator callbacks as arguments and is thus changed every time a new
129  * callback is added in future releases; consider using SCIPincludePropBasic() and setter functions
130  * if you seek for a method which is less likely to change in future releases
131  */
133  SCIP* scip, /**< SCIP data structure */
134  const char* name, /**< name of propagator */
135  const char* desc, /**< description of propagator */
136  int priority, /**< priority of the propagator (>= 0: before, < 0: after constraint handlers) */
137  int freq, /**< frequency for calling propagator */
138  SCIP_Bool delay, /**< should propagator be delayed, if other propagators found reductions? */
139  SCIP_PROPTIMING timingmask, /**< positions in the node solving loop where propagator should be executed */
140  int presolpriority, /**< presolving priority of the propagator (>= 0: before, < 0: after constraint handlers) */
141  int presolmaxrounds, /**< maximal number of presolving rounds the propagator participates in (-1: no limit) */
142  SCIP_PRESOLTIMING presoltiming, /**< timing mask of the propagator's presolving method */
143  SCIP_DECL_PROPCOPY ((*propcopy)), /**< copy method of propagator or NULL if you don't want to copy your plugin into sub-SCIPs */
144  SCIP_DECL_PROPFREE ((*propfree)), /**< destructor of propagator */
145  SCIP_DECL_PROPINIT ((*propinit)), /**< initialize propagator */
146  SCIP_DECL_PROPEXIT ((*propexit)), /**< deinitialize propagator */
147  SCIP_DECL_PROPINITPRE ((*propinitpre)), /**< presolving initialization method of propagator */
148  SCIP_DECL_PROPEXITPRE ((*propexitpre)), /**< presolving deinitialization method of propagator */
149  SCIP_DECL_PROPINITSOL ((*propinitsol)), /**< solving process initialization method of propagator */
150  SCIP_DECL_PROPEXITSOL ((*propexitsol)), /**< solving process deinitialization method of propagator */
151  SCIP_DECL_PROPPRESOL ((*proppresol)), /**< presolving method */
152  SCIP_DECL_PROPEXEC ((*propexec)), /**< execution method of propagator */
153  SCIP_DECL_PROPRESPROP ((*propresprop)), /**< propagation conflict resolving method */
154  SCIP_PROPDATA* propdata /**< propagator data */
155  )
156 {
157  SCIP_PROP* prop;
158 
159  SCIP_CALL( SCIPcheckStage(scip, "SCIPincludeProp", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
160 
161  /* check whether propagator is already present */
162  if( SCIPfindProp(scip, name) != NULL )
163  {
164  SCIPerrorMessage("propagator <%s> already included.\n", name);
165  return SCIP_INVALIDDATA;
166  }
167 
168  SCIP_CALL( SCIPpropCreate(&prop, scip->set, scip->messagehdlr, scip->mem->setmem,
169  name, desc, priority, freq, delay, timingmask, presolpriority, presolmaxrounds, presoltiming,
170  propcopy, propfree, propinit, propexit, propinitpre, propexitpre, propinitsol, propexitsol,
171  proppresol, propexec, propresprop, propdata) );
172  SCIP_CALL( SCIPsetIncludeProp(scip->set, prop) );
173 
174  return SCIP_OKAY;
175 }
176 
177 /** creates a propagator and includes it in SCIP. All non-fundamental (or optional) callbacks will be set to NULL.
178  * Optional callbacks can be set via specific setter functions, see SCIPsetPropInit(), SCIPsetPropExit(),
179  * SCIPsetPropCopy(), SCIPsetPropFree(), SCIPsetPropInitsol(), SCIPsetPropExitsol(),
180  * SCIPsetPropInitpre(), SCIPsetPropExitpre(), SCIPsetPropPresol(), and SCIPsetPropResprop().
181  *
182 * @note if you want to set all callbacks with a single method call, consider using SCIPincludeProp() instead
183  */
185  SCIP* scip, /**< SCIP data structure */
186  SCIP_PROP** propptr, /**< reference to a propagator pointer, or NULL */
187  const char* name, /**< name of propagator */
188  const char* desc, /**< description of propagator */
189  int priority, /**< priority of the propagator (>= 0: before, < 0: after constraint handlers) */
190  int freq, /**< frequency for calling propagator */
191  SCIP_Bool delay, /**< should propagator be delayed, if other propagators found reductions? */
192  SCIP_PROPTIMING timingmask, /**< positions in the node solving loop where propagators should be executed */
193  SCIP_DECL_PROPEXEC ((*propexec)), /**< execution method of propagator */
194  SCIP_PROPDATA* propdata /**< propagator data */
195  )
196 {
197  SCIP_PROP* prop;
198 
199  SCIP_CALL( SCIPcheckStage(scip, "SCIPincludePropBasic", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
200 
201  /* check whether propagator is already present */
202  if( SCIPfindProp(scip, name) != NULL )
203  {
204  SCIPerrorMessage("propagator <%s> already included.\n", name);
205  return SCIP_INVALIDDATA;
206  }
207 
208  SCIP_CALL( SCIPpropCreate(&prop, scip->set, scip->messagehdlr, scip->mem->setmem,
209  name, desc, priority, freq, delay, timingmask, 0, -1, SCIP_PRESOLTIMING_ALWAYS,
210  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
211  NULL, propexec, NULL, propdata) );
212  SCIP_CALL( SCIPsetIncludeProp(scip->set, prop) );
213 
214  if( propptr != NULL )
215  *propptr = prop;
216 
217  return SCIP_OKAY;
218 }
219 
220 /** sets copy method of propagator */
222  SCIP* scip, /**< SCIP data structure */
223  SCIP_PROP* prop, /**< propagator */
224  SCIP_DECL_PROPCOPY ((*propcopy)) /**< copy method of propagator or NULL if you don't want to copy your plugin into sub-SCIPs */
225  )
226 {
227  SCIP_CALL( SCIPcheckStage(scip, "SCIPsetPropCopy", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
228 
229  assert(prop != NULL);
230 
231  SCIPpropSetCopy(prop, propcopy);
232 
233  return SCIP_OKAY;
234 }
235 
236 /** sets destructor method of propagator */
238  SCIP* scip, /**< SCIP data structure */
239  SCIP_PROP* prop, /**< propagator */
240  SCIP_DECL_PROPFREE ((*propfree)) /**< destructor of propagator */
241  )
242 {
243  SCIP_CALL( SCIPcheckStage(scip, "SCIPsetPropFree", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
244 
245  assert(prop != NULL);
246 
247  SCIPpropSetFree(prop, propfree);
248 
249  return SCIP_OKAY;
250 }
251 
252 /** sets initialization method of propagator */
254  SCIP* scip, /**< SCIP data structure */
255  SCIP_PROP* prop, /**< propagator */
256  SCIP_DECL_PROPINIT ((*propinit)) /**< initialize propagator */
257  )
258 {
259  SCIP_CALL( SCIPcheckStage(scip, "SCIPsetPropInit", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
260 
261  assert(prop != NULL);
262 
263  SCIPpropSetInit(prop, propinit);
264 
265  return SCIP_OKAY;
266 }
267 
268 /** sets deinitialization method of propagator */
270  SCIP* scip, /**< SCIP data structure */
271  SCIP_PROP* prop, /**< propagator */
272  SCIP_DECL_PROPEXIT ((*propexit)) /**< deinitialize propagator */
273  )
274 {
275  SCIP_CALL( SCIPcheckStage(scip, "SCIPsetPropExit", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
276 
277  assert(prop != NULL);
278 
279  SCIPpropSetExit(prop, propexit);
280 
281  return SCIP_OKAY;
282 }
283 
284 /** sets solving process initialization method of propagator */
286  SCIP* scip, /**< SCIP data structure */
287  SCIP_PROP* prop, /**< propagator */
288  SCIP_DECL_PROPINITSOL((*propinitsol)) /**< solving process initialization method of propagator */
289  )
290 {
291  SCIP_CALL( SCIPcheckStage(scip, "SCIPsetPropInitsol", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
292 
293  assert(prop != NULL);
294 
295  SCIPpropSetInitsol(prop, propinitsol);
296 
297  return SCIP_OKAY;
298 }
299 
300 /** sets solving process deinitialization method of propagator */
302  SCIP* scip, /**< SCIP data structure */
303  SCIP_PROP* prop, /**< propagator */
304  SCIP_DECL_PROPEXITSOL ((*propexitsol)) /**< solving process deinitialization method of propagator */
305  )
306 {
307  SCIP_CALL( SCIPcheckStage(scip, "SCIPsetPropExitsol", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
308 
309  assert(prop != NULL);
310 
311  SCIPpropSetExitsol(prop, propexitsol);
312 
313  return SCIP_OKAY;
314 }
315 
316 /** sets preprocessing initialization method of propagator */
318  SCIP* scip, /**< SCIP data structure */
319  SCIP_PROP* prop, /**< propagator */
320  SCIP_DECL_PROPINITPRE((*propinitpre)) /**< preprocessing initialization method of propagator */
321  )
322 {
323  SCIP_CALL( SCIPcheckStage(scip, "SCIPsetPropInitpre", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
324 
325  assert(prop != NULL);
326 
327  SCIPpropSetInitpre(prop, propinitpre);
328 
329  return SCIP_OKAY;
330 }
331 
332 /** sets preprocessing deinitialization method of propagator */
334  SCIP* scip, /**< SCIP data structure */
335  SCIP_PROP* prop, /**< propagator */
336  SCIP_DECL_PROPEXITPRE((*propexitpre)) /**< preprocessing deinitialization method of propagator */
337  )
338 {
339  SCIP_CALL( SCIPcheckStage(scip, "SCIPsetPropExitpre", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
340 
341  assert(prop != NULL);
342 
343  SCIPpropSetExitpre(prop, propexitpre);
344 
345  return SCIP_OKAY;
346 }
347 
348 /** sets presolving method of propagator */
350  SCIP* scip, /**< SCIP data structure */
351  SCIP_PROP* prop, /**< propagator */
352  SCIP_DECL_PROPPRESOL((*proppresol)), /**< presolving method of propagator */
353  int presolpriority, /**< presolving priority of the propagator (>= 0: before, < 0: after constraint handlers) */
354  int presolmaxrounds, /**< maximal number of presolving rounds the propagator participates in (-1: no limit) */
355  SCIP_PRESOLTIMING presoltiming /**< timing mask of the propagator's presolving method */
356  )
357 {
358  const char* name;
359  char paramname[SCIP_MAXSTRLEN];
360 
361  assert(scip != NULL);
362  SCIP_CALL( SCIPcheckStage(scip, "SCIPsetPropPresol", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
363 
364  assert(prop != NULL);
365  SCIP_CALL( SCIPpropSetPresol(prop, proppresol, presolpriority, presolmaxrounds, presoltiming) );
366 
367  name = SCIPpropGetName(prop);
368 
369  (void) SCIPsnprintf(paramname, SCIP_MAXSTRLEN, "propagating/%s/maxprerounds", name);
370  SCIP_CALL( SCIPsetSetDefaultIntParam(scip->set, paramname, presolmaxrounds) );
371 
372  (void) SCIPsnprintf(paramname, SCIP_MAXSTRLEN, "propagating/%s/presolpriority", name);
373  SCIP_CALL( SCIPsetSetDefaultIntParam(scip->set, paramname, presolpriority) );
374 
375  (void) SCIPsnprintf(paramname, SCIP_MAXSTRLEN, "propagating/%s/presoltiming", name);
376  SCIP_CALL( SCIPsetSetDefaultIntParam(scip->set, paramname, (int) presoltiming) );
377 
378  return SCIP_OKAY;
379 }
380 
381 /** sets propagation conflict resolving callback of propagator */
383  SCIP* scip, /**< SCIP data structure */
384  SCIP_PROP* prop, /**< propagator */
385  SCIP_DECL_PROPRESPROP ((*propresprop)) /**< propagation conflict resolving callback */
386  )
387 {
388  SCIP_CALL( SCIPcheckStage(scip, "SCIPsetPropResprop", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
389 
390  assert(prop != NULL);
391 
392  SCIPpropSetResprop(prop, propresprop);
393 
394  return SCIP_OKAY;
395 }
396 
397 
398 /** returns the propagator of the given name, or NULL if not existing */
400  SCIP* scip, /**< SCIP data structure */
401  const char* name /**< name of propagator */
402  )
403 {
404  assert(scip != NULL);
405  assert(scip->set != NULL);
406  assert(name != NULL);
407 
408  return SCIPsetFindProp(scip->set, name);
409 }
410 
411 /** returns the array of currently available propagators */
413  SCIP* scip /**< SCIP data structure */
414  )
415 {
416  assert(scip != NULL);
417  assert(scip->set != NULL);
418 
419  SCIPsetSortProps(scip->set);
420 
421  return scip->set->props;
422 }
423 
424 /** returns the number of currently available propagators */
426  SCIP* scip /**< SCIP data structure */
427  )
428 {
429  assert(scip != NULL);
430  assert(scip->set != NULL);
431 
432  return scip->set->nprops;
433 }
434 
435 /** sets the priority of a propagator */
437  SCIP* scip, /**< SCIP data structure */
438  SCIP_PROP* prop, /**< propagator */
439  int priority /**< new priority of the propagator */
440  )
441 {
442  assert(scip != NULL);
443  assert(scip->set != NULL);
444 
445  SCIPpropSetPriority(prop, scip->set, priority);
446 
447  return SCIP_OKAY;
448 }
449 
450 /** sets the presolving priority of a propagator */
452  SCIP* scip, /**< SCIP data structure */
453  SCIP_PROP* prop, /**< propagator */
454  int presolpriority /**< new presol priority of the propagator */
455  )
456 {
457  assert(scip != NULL);
458  assert(scip->set != NULL);
459 
460  SCIPpropSetPresolPriority(prop, scip->set, presolpriority);
461 
462  return SCIP_OKAY;
463 }
SCIP_RETCODE SCIPsetPropPresol(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPPRESOL((*proppresol)), int presolpriority, int presolmaxrounds, SCIP_PRESOLTIMING presoltiming)
Definition: scip_prop.c:349
internal methods for separators
#define NULL
Definition: def.h:246
internal methods for managing events
void SCIPpropSetCopy(SCIP_PROP *prop, SCIP_DECL_PROPCOPY((*propcopy)))
Definition: prop.c:800
default message handler
trivialnegation primal heuristic
internal methods for storing primal CIP solutions
methods to interpret (evaluate) an expression tree "fast"
internal methods for branch and bound tree
methods for implications, variable bounds, and cliques
SCIP_PROP * SCIPfindProp(SCIP *scip, const char *name)
Definition: scip_prop.c:399
#define SCIP_MAXSTRLEN
Definition: def.h:267
internal methods for clocks and timing issues
int nprops
Definition: struct_set.h:112
internal methods for NLPI solver interfaces
interface methods for specific LP solvers
internal methods for displaying statistics tables
#define FALSE
Definition: def.h:72
void SCIPpropSetExitsol(SCIP_PROP *prop, SCIP_DECL_PROPEXITSOL((*propexitsol)))
Definition: prop.c:855
methods for the aggregation rows
internal methods for Benders&#39; decomposition
SCIP_PROP * SCIPsetFindProp(SCIP_SET *set, const char *name)
Definition: set.c:4222
int SCIPsnprintf(char *t, int len, const char *s,...)
Definition: misc.c:10253
#define TRUE
Definition: def.h:71
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:53
#define SCIP_DECL_PROPEXITPRE(x)
Definition: type_prop.h:100
methods commonly used by primal heuristics
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
internal methods for branching rules and branching candidate storage
datastructures for concurrent solvers
internal methods for handling parameter settings
void SCIPpropSetInitsol(SCIP_PROP *prop, SCIP_DECL_PROPINITSOL((*propinitsol)))
Definition: prop.c:844
methods for creating output for visualization tools (VBC, BAK)
nodereopt branching rule
#define SCIP_DECL_PROPEXEC(x)
Definition: type_prop.h:203
internal methods for LP management
internal methods for branching and inference history
void SCIPpropSetPriority(SCIP_PROP *prop, SCIP_SET *set, int priority)
Definition: prop.c:971
internal methods for collecting primal CIP solutions and primal informations
internal methods for propagators
SCIP_MEM * mem
Definition: struct_scip.h:61
SCIP_RETCODE SCIPsetPropExitpre(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPEXITPRE((*propexitpre)))
Definition: scip_prop.c:333
void SCIPpropSetExit(SCIP_PROP *prop, SCIP_DECL_PROPEXIT((*propexit)))
Definition: prop.c:833
git hash methods
SCIP_PROP ** SCIPgetProps(SCIP *scip)
Definition: scip_prop.c:412
internal methods for storing and manipulating the main problem
#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
methods for block memory pools and memory buffers
register additional core functionality that is designed as plugins
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
internal methods for presolvers
#define SCIP_DECL_PROPCOPY(x)
Definition: type_prop.h:47
internal methods for NLP management
internal miscellaneous methods
internal methods for node selectors and node priority queues
internal methods for variable pricers
void SCIPsetSortProps(SCIP_SET *set)
Definition: set.c:4242
internal methods for global SCIP settings
internal methods for storing conflicts
#define SCIP_CALL(x)
Definition: def.h:358
SCIP_RETCODE SCIPsetPropPriority(SCIP *scip, SCIP_PROP *prop, int priority)
Definition: scip_prop.c:436
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
internal methods for storing priced variables
internal methods for relaxators
internal methods for storing separated cuts
methods commonly used for presolving
methods for catching the user CTRL-C interrupt
internal methods for problem variables
data structures and methods for collecting reoptimization information
the function declarations for the synchronization store
SCIP_RETCODE SCIPsetIncludeProp(SCIP_SET *set, SCIP_PROP *prop)
Definition: set.c:4195
SCIP_RETCODE SCIPsetPropInit(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPINIT((*propinit)))
Definition: scip_prop.c:253
public data structures and miscellaneous methods
internal methods for user interface dialog
#define SCIP_Bool
Definition: def.h:69
#define SCIP_DECL_PROPFREE(x)
Definition: type_prop.h:55
internal methods for input file readers
methods for debugging
#define SCIP_DECL_PROPINITSOL(x)
Definition: type_prop.h:115
SCIP_RETCODE SCIPsetPropCopy(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPCOPY((*propcopy)))
Definition: scip_prop.c:221
#define SCIP_PRESOLTIMING_ALWAYS
Definition: type_timing.h:49
SCIP_RETCODE SCIPsetPropPresolPriority(SCIP *scip, SCIP_PROP *prop, int presolpriority)
Definition: scip_prop.c:451
reoptsols primal heuristic
internal methods for storing cuts in a cut pool
Constraint handler for linear constraints in their most general form, .
SCIP_RETCODE SCIPsetPropExitsol(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPEXITSOL((*propexitsol)))
Definition: scip_prop.c:301
helper functions for concurrent scip solvers
const char * SCIPpropGetName(SCIP_PROP *prop)
Definition: prop.c:931
internal methods for return codes for SCIP methods
void SCIPpropSetInit(SCIP_PROP *prop, SCIP_DECL_PROPINIT((*propinit)))
Definition: prop.c:822
SCIP_RETCODE SCIPsetPropResprop(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPRESPROP((*propresprop)))
Definition: scip_prop.c:382
unsigned int SCIP_PROPTIMING
Definition: type_timing.h:66
internal methods for conflict analysis
internal methods for tree compressions
internal methods for main solving loop and node processing
#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
SCIP_RETCODE SCIPsetPropInitsol(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPINITSOL((*propinitsol)))
Definition: scip_prop.c:285
SCIP_MESSAGEHDLR * messagehdlr
Definition: struct_scip.h:65
default user interface dialog
internal methods for problem statistics
struct SCIP_PropData SCIP_PROPDATA
Definition: type_prop.h:38
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:132
void SCIPpropSetResprop(SCIP_PROP *prop, SCIP_DECL_PROPRESPROP((*propresprop)))
Definition: prop.c:920
internal methods for constraints and constraint handlers
SCIP_RETCODE SCIPsetPropFree(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPFREE((*propfree)))
Definition: scip_prop.c:237
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
declarations for XML parsing
build flags methods
void SCIPpropSetExitpre(SCIP_PROP *prop, SCIP_DECL_PROPEXITPRE((*propexitpre)))
Definition: prop.c:879
common defines and data types used in all packages of SCIP
SCIP_RETCODE SCIPsetPropInitpre(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPINITPRE((*propinitpre)))
Definition: scip_prop.c:317
internal methods for primal heuristics
SCIP_RETCODE SCIPsetPropExit(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPEXIT((*propexit)))
Definition: scip_prop.c:269
int SCIPgetNProps(SCIP *scip)
Definition: scip_prop.c:425
internal methods for Benders&#39; decomposition cuts
public methods for propagators
#define SCIP_DECL_PROPINIT(x)
Definition: type_prop.h:63
internal methods for displaying runtime statistics
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:184
OFINS - Objective Function Induced Neighborhood Search - a primal heuristic for reoptimization.