Scippy

SCIP

Solving Constraint Integer Programs

scip.h
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-2015 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 email to scip@zib.de. */
13 /* */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file scip.h
17  * @ingroup PUBLICMETHODS
18  * @brief SCIP callable library
19  * @author Tobias Achterberg
20  * @author Timo Berthold
21  * @author Thorsten Koch
22  * @author Alexander Martin
23  * @author Marc Pfetsch
24  * @author Kati Wolter
25  */
26 
27 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
28 
29 #ifndef __SCIP_SCIP_H__
30 #define __SCIP_SCIP_H__
31 
32 
33 #include <stdio.h>
34 
35 #include "scip/def.h"
36 #include "blockmemshell/memory.h"
37 #include "scip/type_retcode.h"
38 #include "scip/type_result.h"
39 #include "scip/type_clock.h"
40 #include "scip/type_misc.h"
41 #include "scip/type_timing.h"
42 #include "scip/type_paramset.h"
43 #include "scip/type_event.h"
44 #include "scip/type_lp.h"
45 #include "scip/type_nlp.h"
46 #include "scip/type_var.h"
47 #include "scip/type_prob.h"
48 #include "scip/type_tree.h"
49 #include "scip/type_scip.h"
50 
51 #include "scip/type_branch.h"
52 #include "scip/type_conflict.h"
53 #include "scip/type_cons.h"
54 #include "scip/type_dialog.h"
55 #include "scip/type_disp.h"
56 #include "scip/type_heur.h"
57 #include "scip/type_compr.h"
58 #include "scip/type_history.h"
59 #include "scip/type_nodesel.h"
60 #include "scip/type_presol.h"
61 #include "scip/type_pricer.h"
62 #include "scip/type_reader.h"
63 #include "scip/type_relax.h"
64 #include "scip/type_sepa.h"
65 #include "scip/type_prop.h"
66 #include "nlpi/type_nlpi.h"
67 
68 /* include public interfaces, s.t. the user only needs to include scip.h */
69 #include "scip/pub_branch.h"
70 #include "scip/pub_conflict.h"
71 #include "scip/pub_cons.h"
72 #include "scip/pub_cutpool.h"
73 #include "scip/pub_dialog.h"
74 #include "scip/pub_disp.h"
75 #include "scip/pub_event.h"
76 #include "scip/pub_fileio.h"
77 #include "scip/pub_heur.h"
78 #include "scip/pub_compr.h"
79 #include "scip/pub_history.h"
80 #include "scip/pub_implics.h"
81 #include "scip/pub_lp.h"
82 #include "scip/pub_nlp.h"
83 #include "scip/pub_message.h"
84 #include "scip/pub_misc.h"
85 #include "scip/pub_nodesel.h"
86 #include "scip/pub_paramset.h"
87 #include "scip/pub_presol.h"
88 #include "scip/pub_pricer.h"
89 #include "scip/pub_reader.h"
90 #include "scip/pub_relax.h"
91 #include "scip/pub_sepa.h"
92 #include "scip/pub_prop.h"
93 #include "scip/pub_sol.h"
94 #include "scip/pub_tree.h"
95 #include "scip/pub_var.h"
96 #include "lpi/lpi.h"
97 #include "nlpi/pub_expr.h"
98 
99 /* include global presolving methods */
100 #include "scip/presolve.h"
101 
102 /* In debug mode, we include the SCIP's structure in scip.c, such that no one can access
103  * this structure except the interface methods in scip.c.
104  * In optimized mode, the structure is included in scip.h, because some of the methods
105  * are implemented as defines for performance reasons (e.g. the numerical comparisons).
106  * Additionally, the internal "set.h" is included, such that the defines in set.h are
107  * available in optimized mode.
108  */
109 #ifdef NDEBUG
110 #include "scip/struct_scip.h"
111 #include "scip/set.h"
112 #include "scip/tree.h"
113 #include "scip/misc.h"
114 #include "scip/var.h"
115 #endif
116 
117 #ifdef __cplusplus
118 extern "C" {
119 #endif
120 
121 /*
122  * miscellaneous methods
123  */
124 
125 /**@name Miscellaneous Methods */
126 /**@{ */
127 
128 /** returns complete SCIP version number in the format "major . minor tech"
129  *
130  * @return complete SCIP version
131  */
132 extern
134  void
135  );
136 
137 /** returns SCIP major version
138  *
139  * @return major SCIP version
140  */
141 extern
142 int SCIPmajorVersion(
143  void
144  );
145 
146 /** returns SCIP minor version
147  *
148  * @return minor SCIP version
149  */
150 extern
151 int SCIPminorVersion(
152  void
153  );
154 
155 /** returns SCIP technical version
156  *
157  * @return technical SCIP version
158  */
159 extern
160 int SCIPtechVersion(
161  void
162  );
163 
164 /** returns SCIP sub version number
165  *
166  * @return subversion SCIP version
167  */
168 extern
169 int SCIPsubversion(
170  void
171  );
172 
173 /** prints a version information line to a file stream via the message handler system
174  *
175  * @note If the message handler is set to a NULL pointer nothing will be printed
176  */
177 extern
178 void SCIPprintVersion(
179  SCIP* scip, /**< SCIP data structure */
180  FILE* file /**< output file (or NULL for standard output) */
181  );
182 
183 /** prints error message for the given SCIP_RETCODE via the error prints method */
184 extern
185 void SCIPprintError(
186  SCIP_RETCODE retcode /**< SCIP return code causing the error */
187  );
188 
189 /** update statistical information when a new solution was found */
190 extern
192  SCIP* scip /**< SCIP data structure */
193  );
194 
195 /**@} */
196 
197 
198 
199 
200 /*
201  * general SCIP methods
202  */
203 
204 /**@name General SCIP Methods */
205 /**@{ */
206 
207 /** creates and initializes SCIP data structures
208  *
209  * @note The SCIP default message handler is installed. Use the method SCIPsetMessagehdlr() to install your own
210  * message handler or SCIPsetMessagehdlrLogfile() and SCIPsetMessagehdlrQuiet() to write into a log
211  * file and turn off/on the display output, respectively.
212  *
213  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
214  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
215  *
216  * @post After calling this method @p scip reached the solving stage \ref SCIP_STAGE_INIT
217  *
218  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
219  */
220 extern
222  SCIP** scip /**< pointer to SCIP data structure */
223  );
224 
225 /** frees SCIP data structures
226  *
227  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
228  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
229  *
230  * @pre This method can be called if @p scip is in one of the following stages:
231  * - \ref SCIP_STAGE_INIT
232  * - \ref SCIP_STAGE_PROBLEM
233  * - \ref SCIP_STAGE_TRANSFORMED
234  * - \ref SCIP_STAGE_INITPRESOLVE
235  * - \ref SCIP_STAGE_PRESOLVING
236  * - \ref SCIP_STAGE_PRESOLVED
237  * - \ref SCIP_STAGE_EXITPRESOLVE
238  * - \ref SCIP_STAGE_SOLVING
239  * - \ref SCIP_STAGE_SOLVED
240  * - \ref SCIP_STAGE_FREE
241  *
242  * @post After calling this method \SCIP reached the solving stage \ref SCIP_STAGE_FREE
243  *
244  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
245  */
246 extern
248  SCIP** scip /**< pointer to SCIP data structure */
249  );
250 
251 /** returns current stage of SCIP
252  *
253  * @return the current SCIP stage
254  *
255  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
256  */
257 extern
259  SCIP* scip /**< SCIP data structure */
260  );
261 
262 /** outputs SCIP stage and solution status if applicable via the message handler
263  *
264  * @note If the message handler is set to a NULL pointer nothing will be printed
265  *
266  * @note If limits have been changed between the solution and the call to this function, the status is recomputed and
267  * thus may to correspond to the original status.
268  *
269  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
270  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
271  *
272  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
273  */
274 extern
276  SCIP* scip, /**< SCIP data structure */
277  FILE* file /**< output file (or NULL for standard output) */
278  );
279 
280 /** gets solution status
281  *
282  * @return SCIP solution status
283  *
284  * See \ref SCIP_Status "SCIP_STATUS" for a complete list of all possible solving status.
285  */
286 extern
288  SCIP* scip /**< SCIP data structure */
289  );
290 
291 /** outputs solution status
292  *
293  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
294  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
295  *
296  * See \ref SCIP_Status "SCIP_STATUS" for a complete list of all possible solving status.
297  */
298 extern
300  SCIP* scip, /**< SCIP data structure */
301  FILE* file /**< output file (or NULL for standard output) */
302  );
303 
304 /** returns whether the current stage belongs to the transformed problem space
305  *
306  * @return Returns TRUE if the \SCIP instance is transformed, otherwise FALSE
307  */
308 extern
310  SCIP* scip /**< SCIP data structure */
311  );
312 
313 /** returns whether the solution process should be probably correct
314  *
315  * @note This feature is not supported yet!
316  *
317  * @return Returns TRUE if \SCIP is exact solving mode, otherwise FALSE
318  */
319 extern
321  SCIP* scip /**< SCIP data structure */
322  );
323 
324 /** returns whether the presolving process would be finished given no more presolving reductions are found in this
325  * presolving round
326  *
327  * Checks whether the number of presolving rounds is not exceeded and the presolving reductions found in the current
328  * presolving round suffice to trigger another presolving round.
329  *
330  * @note if subsequent presolvers find more reductions, presolving might continue even if the method returns FALSE
331  * @note does not check whether infeasibility or unboundedness was already detected in presolving (which would result
332  * in presolving being stopped although the method returns TRUE)
333  *
334  * @return Returns TRUE if presolving is finished if no further reductions are detected
335  */
336 extern
338  SCIP* scip /**< SCIP data structure */
339  );
340 
341 /** returns whether SCIP has performed presolving during the last solve
342  *
343  * @return Returns TRUE if presolving was performed during the last solve
344  */
345 extern
347  SCIP* scip /**< SCIP data structure */
348  );
349 
350 /** returns whether the user pressed CTRL-C to interrupt the solving process
351  *
352  * @return Returns TRUE if Ctrl-C was pressed, otherwise FALSE.
353  */
354 extern
356  SCIP* scip /**< SCIP data structure */
357  );
358 
359 /** returns whether the solving process should be / was stopped before proving optimality;
360  * if the solving process should be / was stopped, the status returned by SCIPgetStatus() yields
361  * the reason for the premature abort
362  *
363  * @return Returns TRUE if solving process is stopped/interrupted, otherwise FALSE.
364  */
365 extern
367  SCIP* scip /**< SCIP data structure */
368  );
369 
370 
371 /**@} */
372 
373 
374 
375 /*
376  * message output methods
377  */
378 
379 /**@name Message Output Methods */
380 /**@{ */
381 
382 /** installs the given message handler, such that all messages are passed to this handler. A messages handler can be
383  * created via SCIPmessagehdlrCreate().
384  *
385  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
386  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
387  *
388  * @pre this method can be called in one of the following stages of the SCIP solving process:
389  * - \ref SCIP_STAGE_INIT
390  * - \ref SCIP_STAGE_PROBLEM
391  *
392  * @note The currently installed messages handler gets freed if this SCIP instance is its last user (w.r.t. capture/release).
393  */
394 extern
396  SCIP* scip, /**< SCIP data structure */
397  SCIP_MESSAGEHDLR* messagehdlr /**< message handler to install, or NULL to suppress all output */
398  );
399 
400 /** returns the currently installed message handler
401  *
402  * @return the currently installed message handler, or NULL if messages are currently suppressed
403  */
404 extern
406  SCIP* scip /**< SCIP data structure */
407  );
408 
409 /** sets the log file name for the currently installed message handler */
410 extern
412  SCIP* scip, /**< SCIP data structure */
413  const char* filename /**< name of log file, or NULL (no log) */
414  );
415 
416 /** sets the currently installed message handler to be quiet (or not) */
417 extern
419  SCIP* scip, /**< SCIP data structure */
420  SCIP_Bool quiet /**< should screen messages be suppressed? */
421  );
422 
423 /** prints a warning message via the message handler */
424 extern
425 void SCIPwarningMessage(
426  SCIP* scip, /**< SCIP data structure */
427  const char* formatstr, /**< format string like in printf() function */
428  ... /**< format arguments line in printf() function */
429  );
430 
431 /** prints a dialog message that requests user interaction or is a direct response to a user interactive command */
432 extern
433 void SCIPdialogMessage(
434  SCIP* scip, /**< SCIP data structure */
435  FILE* file, /**< file stream to print into, or NULL for stdout */
436  const char* formatstr, /**< format string like in printf() function */
437  ... /**< format arguments line in printf() function */
438  );
439 
440 /** prints a message */
441 extern
442 void SCIPinfoMessage(
443  SCIP* scip, /**< SCIP data structure */
444  FILE* file, /**< file stream to print into, or NULL for stdout */
445  const char* formatstr, /**< format string like in printf() function */
446  ... /**< format arguments line in printf() function */
447  );
448 
449 /** prints a message depending on the verbosity level */
450 extern
451 void SCIPverbMessage(
452  SCIP* scip, /**< SCIP data structure */
453  SCIP_VERBLEVEL msgverblevel, /**< verbosity level of this message */
454  FILE* file, /**< file stream to print into, or NULL for stdout */
455  const char* formatstr, /**< format string like in printf() function */
456  ... /**< format arguments line in printf() function */
457  );
458 
459 /** returns the current message verbosity level
460  *
461  * @return message verbosity level of SCIP
462  *
463  * @see \ref SCIP_VerbLevel "SCIP_VERBLEVEL" for a list of all verbosity levels
464  */
465 extern
467  SCIP* scip /**< SCIP data structure */
468  );
469 
470 
471 /**@} */
472 
473 
474 
475 
476 /*
477  * SCIP copy methods
478  */
479 
480 /**@name Copy Methods */
481 /**@{ */
482 
483 /** copies plugins from sourcescip to targetscip; in case that a constraint handler which does not need constraints
484  * cannot be copied, valid will return FALSE. All plugins can declare that, if their copy process failed, the
485  * copied SCIP instance might not represent the same problem semantics as the original.
486  * Note that in this case dual reductions might be invalid.
487  *
488  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
489  * Also, 'passmessagehdlr' should be set to FALSE.
490  * @note Do not change the source SCIP environment during the copying process
491  *
492  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
493  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
494  *
495  * @pre This method can be called if sourcescip is in one of the following stages:
496  * - \ref SCIP_STAGE_PROBLEM
497  * - \ref SCIP_STAGE_TRANSFORMED
498  * - \ref SCIP_STAGE_INITPRESOLVE
499  * - \ref SCIP_STAGE_PRESOLVING
500  * - \ref SCIP_STAGE_EXITPRESOLVE
501  * - \ref SCIP_STAGE_PRESOLVED
502  * - \ref SCIP_STAGE_INITSOLVE
503  * - \ref SCIP_STAGE_SOLVING
504  * - \ref SCIP_STAGE_SOLVED
505  *
506  * @pre This method can be called if targetscip is in one of the following stages:
507  * - \ref SCIP_STAGE_INIT
508  * - \ref SCIP_STAGE_FREE
509  *
510  * @post After calling this method targetscip reaches one of the following stages depending on if and when the solution
511  * process was interrupted:
512  * - \ref SCIP_STAGE_PROBLEM
513  *
514  * @note sourcescip stage does not get changed
515  *
516  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
517  */
518 extern
520  SCIP* sourcescip, /**< source SCIP data structure */
521  SCIP* targetscip, /**< target SCIP data structure */
522  SCIP_Bool copyreaders, /**< should the file readers be copied */
523  SCIP_Bool copypricers, /**< should the variable pricers be copied */
524  SCIP_Bool copyconshdlrs, /**< should the constraint handlers be copied */
525  SCIP_Bool copyconflicthdlrs, /**< should the conflict handlers be copied */
526  SCIP_Bool copypresolvers, /**< should the presolvers be copied */
527  SCIP_Bool copyrelaxators, /**< should the relaxation handler be copied */
528  SCIP_Bool copyseparators, /**< should the separators be copied */
529  SCIP_Bool copypropagators, /**< should the propagators be copied */
530  SCIP_Bool copyheuristics, /**< should the heuristics be copied */
531  SCIP_Bool copyeventhdlrs, /**< should the event handlers be copied */
532  SCIP_Bool copynodeselectors, /**< should the node selectors be copied */
533  SCIP_Bool copybranchrules, /**< should the branchrules be copied */
534  SCIP_Bool copydisplays, /**< should the display columns be copied */
535  SCIP_Bool copydialogs, /**< should the dialogs be copied */
536  SCIP_Bool copynlpis, /**< should the NLPIs be copied */
537  SCIP_Bool passmessagehdlr, /**< should the message handler be passed */
538  SCIP_Bool* valid /**< pointer to store whether plugins, in particular all constraint
539  * handlers which do not need constraints were validly copied */
540  );
541 
542 /** create a problem by copying the problem data of the source SCIP
543  *
544  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
545  * @note Do not change the source SCIP environment during the copying process
546  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
547  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
548  *
549  * @pre This method can be called if sourcescip is in one of the following stages:
550  * - \ref SCIP_STAGE_PROBLEM
551  * - \ref SCIP_STAGE_TRANSFORMED
552  * - \ref SCIP_STAGE_INITPRESOLVE
553  * - \ref SCIP_STAGE_PRESOLVING
554  * - \ref SCIP_STAGE_EXITPRESOLVE
555  * - \ref SCIP_STAGE_PRESOLVED
556  * - \ref SCIP_STAGE_INITSOLVE
557  * - \ref SCIP_STAGE_SOLVING
558  * - \ref SCIP_STAGE_SOLVED
559  *
560  * @pre This method can be called if targetscip is in one of the following stages:
561  * - \ref SCIP_STAGE_INIT
562  * - \ref SCIP_STAGE_FREE
563  *
564  * @post After calling this method targetscip reaches one of the following stages depending on if and when the solution
565  * process was interrupted:
566  * - \ref SCIP_STAGE_PROBLEM
567  *
568  * @note sourcescip stage does not get changed
569  *
570  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
571  */
572 extern
574  SCIP* sourcescip, /**< source SCIP data structure */
575  SCIP* targetscip, /**< target SCIP data structure */
576  SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
577  * target variables, or NULL */
578  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
579  * target constraints, or NULL */
580  SCIP_Bool global, /**< create a global or a local copy? */
581  const char* name /**< problem name */
582  );
583 
584 /** create a problem by copying the original problem data of the source SCIP
585  *
586  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
587  * @note Do not change the source SCIP environment during the copying process
588  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
589  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
590  *
591  * @pre This method can be called if sourcescip is in one of the following stages:
592  * - \ref SCIP_STAGE_PROBLEM
593  * - \ref SCIP_STAGE_TRANSFORMED
594  * - \ref SCIP_STAGE_INITPRESOLVE
595  * - \ref SCIP_STAGE_PRESOLVING
596  * - \ref SCIP_STAGE_EXITPRESOLVE
597  * - \ref SCIP_STAGE_PRESOLVED
598  * - \ref SCIP_STAGE_INITSOLVE
599  * - \ref SCIP_STAGE_SOLVING
600  * - \ref SCIP_STAGE_SOLVED
601  *
602  * @pre This method can be called if targetscip is in one of the following stages:
603  * - \ref SCIP_STAGE_INIT
604  * - \ref SCIP_STAGE_FREE
605  *
606  * @post After calling this method targetscip reaches one of the following stages depending on if and when the solution
607  * process was interrupted:
608  * - \ref SCIP_STAGE_PROBLEM
609  *
610  * @note sourcescip stage does not get changed
611  *
612  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
613  */
614 extern
616  SCIP* sourcescip, /**< source SCIP data structure */
617  SCIP* targetscip, /**< target SCIP data structure */
618  SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
619  * target variables, or NULL */
620  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
621  * target constraints, or NULL */
622  const char* name /**< problem name of target */
623  );
624 
625 /** returns copy of the source variable; if there already is a copy of the source variable in the variable hash map,
626  * it is just returned as target variable; elsewise a new variable will be created and added to the target SCIP; this
627  * created variable is added to the variable hash map and returned as target variable
628  *
629  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
630  * @note Do not change the source SCIP environment during the copying process
631  * @note if a new variable was created, this variable will be added to the target-SCIP, but it is not captured
632  *
633  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
634  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
635  *
636  * @pre This method can be called if sourcescip is in one of the following stages:
637  * - \ref SCIP_STAGE_PROBLEM
638  * - \ref SCIP_STAGE_TRANSFORMED
639  * - \ref SCIP_STAGE_INITPRESOLVE
640  * - \ref SCIP_STAGE_PRESOLVING
641  * - \ref SCIP_STAGE_EXITPRESOLVE
642  * - \ref SCIP_STAGE_PRESOLVED
643  * - \ref SCIP_STAGE_INITSOLVE
644  * - \ref SCIP_STAGE_SOLVING
645  * - \ref SCIP_STAGE_SOLVED
646  *
647  * @pre This method can be called if targetscip is in one of the following stages:
648  * - \ref SCIP_STAGE_PROBLEM
649  * - \ref SCIP_STAGE_TRANSFORMED
650  * - \ref SCIP_STAGE_INITPRESOLVE
651  * - \ref SCIP_STAGE_PRESOLVING
652  * - \ref SCIP_STAGE_EXITPRESOLVE
653  * - \ref SCIP_STAGE_SOLVING
654  *
655  * @note targetscip stage does not get changed
656  *
657  * @note sourcescip stage does not get changed
658  *
659  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
660  */
661 extern
663  SCIP* sourcescip, /**< source SCIP data structure */
664  SCIP* targetscip, /**< target SCIP data structure */
665  SCIP_VAR* sourcevar, /**< source variable */
666  SCIP_VAR** targetvar, /**< pointer to store the target variable */
667  SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables to the corresponding
668  * target variables, or NULL */
669  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
670  * target constraints, or NULL */
671  SCIP_Bool global, /**< should global or local bounds be used? */
672  SCIP_Bool* success /**< pointer to store whether the copying was successful or not */
673  );
674 
675 /** copies all active variables from source-SCIP and adds these variable to the target-SCIP; the mapping between these
676  * variables are stored in the variable hashmap, target-SCIP has to be in problem creation stage, fixed and aggregated
677  * variables do not get copied
678  *
679  * @note the variables are added to the target-SCIP but not captured
680  *
681  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
682  * @note Do not change the source SCIP environment during the copying process
683  *
684  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
685  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
686  *
687  * @pre This method can be called if sourcescip is in one of the following stages:
688  * - \ref SCIP_STAGE_PROBLEM
689  * - \ref SCIP_STAGE_TRANSFORMED
690  * - \ref SCIP_STAGE_INITPRESOLVE
691  * - \ref SCIP_STAGE_PRESOLVING
692  * - \ref SCIP_STAGE_EXITPRESOLVE
693  * - \ref SCIP_STAGE_PRESOLVED
694  * - \ref SCIP_STAGE_INITSOLVE
695  * - \ref SCIP_STAGE_SOLVING
696  * - \ref SCIP_STAGE_SOLVED
697  *
698  * @pre This method can be called if targetscip is in one of the following stages:
699  * - \ref SCIP_STAGE_PROBLEM
700  *
701  * @note sourcescip stage does not get changed
702  *
703  * @note targetscip stage does not get changed
704  *
705  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
706  */
707 extern
709  SCIP* sourcescip, /**< source SCIP data structure */
710  SCIP* targetscip, /**< target SCIP data structure */
711  SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables to the corresponding
712  * target variables, or NULL */
713  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
714  * target constraints, or NULL */
715  SCIP_Bool global /**< should global or local bounds be used? */
716  );
717 
718 /** copies all original variables from source-SCIP and adds these variable to the target-SCIP; the mapping between these
719  * variables are stored in the variable hashmap, target-SCIP has to be in problem creation stage, fixed and aggregated
720  * variables do not get copied
721  *
722  * @note the variables are added to the target-SCIP but not captured
723  *
724  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
725  * @note Do not change the source SCIP environment during the copying process
726  *
727  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
728  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
729  *
730  * @pre This method can be called if sourcescip is in one of the following stages:
731  * - \ref SCIP_STAGE_PROBLEM
732  * - \ref SCIP_STAGE_TRANSFORMED
733  * - \ref SCIP_STAGE_INITPRESOLVE
734  * - \ref SCIP_STAGE_PRESOLVING
735  * - \ref SCIP_STAGE_EXITPRESOLVE
736  * - \ref SCIP_STAGE_PRESOLVED
737  * - \ref SCIP_STAGE_INITSOLVE
738  * - \ref SCIP_STAGE_SOLVING
739  * - \ref SCIP_STAGE_SOLVED
740  *
741  * @pre This method can be called if targetscip is in one of the following stages:
742  * - \ref SCIP_STAGE_PROBLEM
743  *
744  * @note sourcescip stage does not get changed
745  *
746  * @note targetscip stage does not get changed
747  *
748  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
749  */
750 extern
752  SCIP* sourcescip, /**< source SCIP data structure */
753  SCIP* targetscip, /**< target SCIP data structure */
754  SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables to the corresponding
755  * target variables, or NULL */
756  SCIP_HASHMAP* consmap /**< a hashmap to store the mapping of source constraints to the corresponding
757  * target constraints, or NULL */
758  );
759 
760 /** merges the histories of variables from a source SCIP into a target SCIP. The two data structures should point to
761  * different SCIP instances.
762  *
763  * @note the notion of source and target is inverted here; \p sourcescip usually denotes a copied SCIP instance, whereas
764  * \p targetscip denotes the original instance
765  */
766 
767 extern
769  SCIP* sourcescip, /**< source SCIP data structure */
770  SCIP* targetscip, /**< target SCIP data structure */
771  SCIP_VAR** sourcevars, /**< source variables for history merge */
772  SCIP_VAR** targetvars, /**< target variables for history merge */
773  int nvars /**< number of variables in both variable arrays */
774  );
775 
776 /** returns copy of the source constraint; if there already is a copy of the source constraint in the constraint hash
777  * map, it is just returned as target constraint; elsewise a new constraint will be created; this created constraint is
778  * added to the constraint hash map and returned as target constraint; the variable map is used to map the variables of
779  * the source SCIP to the variables of the target SCIP
780  *
781  * @warning If a constraint is marked to be checked for feasibility but not to be enforced, a LP or pseudo solution may
782  * be declared feasible even if it violates this particular constraint. This constellation should only be
783  * used, if no LP or pseudo solution can violate the constraint -- e.g. if a local constraint is redundant due
784  * to the variable's local bounds.
785  *
786  * @note The constraint is not added to the target SCIP. You can check whether a constraint is added by calling
787  * SCIPconsIsAdded(). (If you mix SCIPgetConsCopy() with SCIPcopyConss() you should pay attention to what you add
788  * explicitly and what is already added.)
789  *
790  * @note The constraint is always captured, either during the creation of the copy or after finding the copy of the
791  * constraint in the constraint hash map
792  *
793  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
794  * @note Do not change the source SCIP environment during the copying process
795  *
796  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
797  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
798  *
799  * @pre This method can be called if sourcescip is in one of the following stages:
800  * - \ref SCIP_STAGE_PROBLEM
801  * - \ref SCIP_STAGE_TRANSFORMED
802  * - \ref SCIP_STAGE_INITPRESOLVE
803  * - \ref SCIP_STAGE_PRESOLVING
804  * - \ref SCIP_STAGE_EXITPRESOLVE
805  * - \ref SCIP_STAGE_PRESOLVED
806  * - \ref SCIP_STAGE_INITSOLVE
807  * - \ref SCIP_STAGE_SOLVING
808  * - \ref SCIP_STAGE_SOLVED
809  *
810  * @pre This method can be called if targetscip is in one of the following stages:
811  * - \ref SCIP_STAGE_PROBLEM
812  * - \ref SCIP_STAGE_TRANSFORMING
813  * - \ref SCIP_STAGE_INITPRESOLVE
814  * - \ref SCIP_STAGE_PRESOLVING
815  * - \ref SCIP_STAGE_EXITPRESOLVE
816  * - \ref SCIP_STAGE_PRESOLVED
817  * - \ref SCIP_STAGE_SOLVING
818  * - \ref SCIP_STAGE_EXITSOLVE
819  *
820  * @note sourcescip stage does not get changed
821  *
822  * @note targetscip stage does not get changed
823  *
824  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
825  */
826 extern
828  SCIP* sourcescip, /**< source SCIP data structure */
829  SCIP* targetscip, /**< target SCIP data structure */
830  SCIP_CONS* sourcecons, /**< source constraint of the source SCIP */
831  SCIP_CONS** targetcons, /**< pointer to store the created target constraint */
832  SCIP_CONSHDLR* sourceconshdlr, /**< source constraint handler for this constraint */
833  SCIP_HASHMAP* varmap, /**< a SCIP_HASHMAP mapping variables of the source SCIP to the corresponding
834  * variables of the target SCIP, or NULL */
835  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
836  * target constraints, or NULL */
837  const char* name, /**< name of constraint, or NULL if the name of the source constraint should be used */
838  SCIP_Bool initial, /**< should the LP relaxation of constraint be in the initial LP? */
839  SCIP_Bool separate, /**< should the constraint be separated during LP processing? */
840  SCIP_Bool enforce, /**< should the constraint be enforced during node processing? */
841  SCIP_Bool check, /**< should the constraint be checked for feasibility? */
842  SCIP_Bool propagate, /**< should the constraint be propagated during node processing? */
843  SCIP_Bool local, /**< is constraint only valid locally? */
844  SCIP_Bool modifiable, /**< is constraint modifiable (subject to column generation)? */
845  SCIP_Bool dynamic, /**< is constraint subject to aging? */
846  SCIP_Bool removable, /**< should the relaxation be removed from the LP due to aging or cleanup? */
847  SCIP_Bool stickingatnode, /**< should the constraint always be kept at the node where it was added, even
848  * if it may be moved to a more global node? */
849  SCIP_Bool global, /**< create a global or a local copy? */
850  SCIP_Bool* success /**< pointer to store whether the copying was successful or not */
851  );
852 
853 /** copies constraints from the source-SCIP and adds these to the target-SCIP; for mapping the
854  * variables between the source and the target SCIP a hash map can be given; if the variable hash
855  * map is NULL or necessary variable mapping is missing, the required variables are created in the
856  * target-SCIP and added to the hash map, if not NULL; all variables which are created are added to
857  * the target-SCIP but not (user) captured; if the constraint hash map is not NULL the mapping
858  * between the constraints of the source and target-SCIP is stored
859  *
860  * @note the constraints are added to the target-SCIP but are not (user) captured in the target SCIP. (If you mix
861  * SCIPgetConsCopy() with SCIPcopyConss() you should pay attention to what you add explicitly and what is already
862  * added.) You can check whether a constraint is added by calling SCIPconsIsAdded().
863  *
864  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
865  * @note Do not change the source SCIP environment during the copying process
866  *
867  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
868  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
869  *
870  * @pre This method can be called if sourcescip is in one of the following stages:
871  * - \ref SCIP_STAGE_PROBLEM
872  * - \ref SCIP_STAGE_TRANSFORMED
873  * - \ref SCIP_STAGE_INITPRESOLVE
874  * - \ref SCIP_STAGE_PRESOLVING
875  * - \ref SCIP_STAGE_EXITPRESOLVE
876  * - \ref SCIP_STAGE_PRESOLVED
877  * - \ref SCIP_STAGE_INITSOLVE
878  * - \ref SCIP_STAGE_SOLVING
879  * - \ref SCIP_STAGE_SOLVED
880  *
881  * @pre This method can be called if targetscip is in one of the following stages:
882  * - \ref SCIP_STAGE_PROBLEM
883  *
884  * @note sourcescip stage does not get changed
885  *
886  * @note targetscip stage does not get changed
887  *
888  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
889  */
890 extern
892  SCIP* sourcescip, /**< source SCIP data structure */
893  SCIP* targetscip, /**< target SCIP data structure */
894  SCIP_HASHMAP* varmap, /**< a SCIP_HASHMAP mapping variables of the source SCIP to the corresponding
895  * variables of the target SCIP, or NULL */
896  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
897  * target constraints, or NULL */
898  SCIP_Bool global, /**< create a global or a local copy? */
899  SCIP_Bool enablepricing, /**< should pricing be enabled in copied SCIP instance?
900  * If TRUE, the modifiable flag of constraints will be copied. */
901  SCIP_Bool* valid /**< pointer to store whether all constraints were validly copied */
902  );
903 
904 /** copies all original constraints from the source-SCIP and adds these to the target-SCIP; for mapping the
905  * variables between the source and the target SCIP a hash map can be given; if the variable hash
906  * map is NULL or necessary variable mapping is missing, the required variables are created in the
907  * target-SCIP and added to the hash map, if not NULL; all variables which are created are added to
908  * the target-SCIP but not (user) captured; if the constraint hash map is not NULL the mapping
909  * between the constraints of the source and target-SCIP is stored
910  *
911  * @note the constraints are added to the target-SCIP but are not (user) captured in the target SCIP. (If you mix
912  * SCIPgetConsCopy() with SCIPcopyConss() you should pay attention to what you add explicitly and what is already
913  * added.) You can check whether a constraint is added by calling SCIPconsIsAdded().
914  *
915  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
916  * @note Do not change the source SCIP environment during the copying process
917  *
918  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
919  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
920  *
921  * @pre This method can be called if sourcescip is in one of the following stages:
922  * - \ref SCIP_STAGE_PROBLEM
923  * - \ref SCIP_STAGE_TRANSFORMED
924  * - \ref SCIP_STAGE_INITPRESOLVE
925  * - \ref SCIP_STAGE_PRESOLVING
926  * - \ref SCIP_STAGE_EXITPRESOLVE
927  * - \ref SCIP_STAGE_PRESOLVED
928  * - \ref SCIP_STAGE_INITSOLVE
929  * - \ref SCIP_STAGE_SOLVING
930  * - \ref SCIP_STAGE_SOLVED
931  *
932  * @pre This method can be called if targetscip is in one of the following stages:
933  * - \ref SCIP_STAGE_PROBLEM
934  *
935  * @note sourcescip stage does not get changed
936  *
937  * @note targetscip stage does not get changed
938  *
939  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
940  */
941 extern
943  SCIP* sourcescip, /**< source SCIP data structure */
944  SCIP* targetscip, /**< target SCIP data structure */
945  SCIP_HASHMAP* varmap, /**< a SCIP_HASHMAP mapping variables of the source SCIP to the corresponding
946  * variables of the target SCIP, or NULL */
947  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
948  * target constraints, or NULL */
949  SCIP_Bool enablepricing, /**< should pricing be enabled in copied SCIP instance?
950  * If TRUE, the modifiable flag of constraints will be copied. */
951  SCIP_Bool* valid /**< pointer to store whether all constraints were validly copied */
952  );
953 
954 /** convert all active cuts from cutpool to linear constraints
955  *
956  * @note Do not change the source SCIP environment during the copying process
957  *
958  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
959  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
960  *
961  * @pre This method can be called if SCIP is in one of the following stages:
962  * - \ref SCIP_STAGE_PROBLEM
963  * - \ref SCIP_STAGE_INITPRESOLVE
964  * - \ref SCIP_STAGE_PRESOLVING
965  * - \ref SCIP_STAGE_EXITPRESOLVE
966  * - \ref SCIP_STAGE_PRESOLVED
967  * - \ref SCIP_STAGE_SOLVING
968  * - \ref SCIP_STAGE_EXITSOLVE
969  *
970  * @note SCIP stage does not get changed
971  *
972  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
973  */
974 extern
976  SCIP* scip, /**< SCIP data structure */
977  SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
978  * target variables, or NULL */
979  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
980  * target constraints, or NULL */
981  SCIP_Bool global, /**< create a global or a local copy? */
982  int* ncutsadded /**< pointer to store number of added cuts, or NULL */
983  );
984 
985 /** copies all active cuts from cutpool of sourcescip to linear constraints in targetscip
986  *
987  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
988  * @note Do not change the source SCIP environment during the copying process
989  *
990  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
991  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
992  *
993  * @pre This method can be called if sourcescip is in one of the following stages:
994  * - \ref SCIP_STAGE_PROBLEM
995  * - \ref SCIP_STAGE_TRANSFORMED
996  * - \ref SCIP_STAGE_INITPRESOLVE
997  * - \ref SCIP_STAGE_PRESOLVING
998  * - \ref SCIP_STAGE_EXITPRESOLVE
999  * - \ref SCIP_STAGE_PRESOLVED
1000  * - \ref SCIP_STAGE_SOLVING
1001  * - \ref SCIP_STAGE_SOLVED
1002  * - \ref SCIP_STAGE_EXITSOLVE
1003  *
1004  * @pre This method can be called if targetscip is in one of the following stages:
1005  * - \ref SCIP_STAGE_PROBLEM
1006  * - \ref SCIP_STAGE_INITPRESOLVE
1007  * - \ref SCIP_STAGE_PRESOLVING
1008  * - \ref SCIP_STAGE_EXITPRESOLVE
1009  * - \ref SCIP_STAGE_PRESOLVED
1010  * - \ref SCIP_STAGE_SOLVING
1011  * - \ref SCIP_STAGE_EXITSOLVE
1012  *
1013  * @note sourcescip stage does not get changed
1014  *
1015  * @note targetscip stage does not get changed
1016  *
1017  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
1018  */
1019 extern
1021  SCIP* sourcescip, /**< source SCIP data structure */
1022  SCIP* targetscip, /**< target SCIP data structure */
1023  SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
1024  * target variables, or NULL */
1025  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
1026  * target constraints, or NULL */
1027  SCIP_Bool global, /**< create a global or a local copy? */
1028  int* ncutsadded /**< pointer to store number of copied cuts, or NULL */
1029  );
1030 
1031 /** copies implications and cliques of sourcescip to targetscip
1032  *
1033  * This function should be called for a targetscip in transformed stage. It can save time in presolving of the
1034  * targetscip, since implications and cliques are copied.
1035  *
1036  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
1037  * @note Do not change the source SCIP environment during the copying process
1038  *
1039  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1040  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1041  *
1042  * @pre This method can be called if sourcescip is in one of the following stages:
1043  * - \ref SCIP_STAGE_TRANSFORMED
1044  * - \ref SCIP_STAGE_INITPRESOLVE
1045  * - \ref SCIP_STAGE_PRESOLVING
1046  * - \ref SCIP_STAGE_EXITPRESOLVE
1047  * - \ref SCIP_STAGE_PRESOLVED
1048  * - \ref SCIP_STAGE_SOLVING
1049  * - \ref SCIP_STAGE_SOLVED
1050  * - \ref SCIP_STAGE_EXITSOLVE
1051  *
1052  * @pre This method can be called if targetscip is in one of the following stages:
1053  * - \ref SCIP_STAGE_TRANSFORMED
1054  * - \ref SCIP_STAGE_INITPRESOLVE
1055  * - \ref SCIP_STAGE_PRESOLVING
1056  * - \ref SCIP_STAGE_EXITPRESOLVE
1057  * - \ref SCIP_STAGE_PRESOLVED
1058  * - \ref SCIP_STAGE_INITSOLVE
1059  * - \ref SCIP_STAGE_SOLVING
1060  *
1061  * @note sourcescip stage does not get changed
1062  *
1063  * @note targetscip stage does not get changed
1064  *
1065  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
1066  */
1067 extern
1069  SCIP* sourcescip, /**< source SCIP data structure */
1070  SCIP* targetscip, /**< target SCIP data structure */
1071  SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
1072  * target variables, or NULL */
1073  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
1074  * target constraints, or NULL */
1075  SCIP_Bool global, /**< create a global or a local copy? */
1076  SCIP_Bool* infeasible, /**< pointer to store whether an infeasibility was detected */
1077  int* nbdchgs, /**< pointer to store the number of performed bound changes, or NULL */
1078  int* ncopied /**< pointer to store number of copied implications and cliques, or NULL */
1079  );
1080 
1081 /** copies parameter settings from sourcescip to targetscip
1082  *
1083  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
1084  * @note Do not change the source SCIP environment during the copying process
1085  *
1086  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1087  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1088  *
1089  * @pre This method can be called if sourcescip is in one of the following stages:
1090  * - \ref SCIP_STAGE_PROBLEM
1091  * - \ref SCIP_STAGE_TRANSFORMED
1092  * - \ref SCIP_STAGE_INITPRESOLVE
1093  * - \ref SCIP_STAGE_PRESOLVING
1094  * - \ref SCIP_STAGE_EXITPRESOLVE
1095  * - \ref SCIP_STAGE_PRESOLVED
1096  * - \ref SCIP_STAGE_INITSOLVE
1097  * - \ref SCIP_STAGE_SOLVING
1098  * - \ref SCIP_STAGE_SOLVED
1099  *
1100  * @pre This method can be called if targetscip is in one of the following stages:
1101  * - \ref SCIP_STAGE_INIT
1102  * - \ref SCIP_STAGE_PROBLEM
1103  * - \ref SCIP_STAGE_FREE
1104  *
1105  * @note sourcescip stage does not get changed
1106  *
1107  * @note targetscip stage does not get changed
1108  *
1109  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
1110  */
1111 extern
1113  SCIP* sourcescip, /**< source SCIP data structure */
1114  SCIP* targetscip /**< target SCIP data structure */
1115  );
1116 
1117 /** gets depth of current scip instance (increased by each copy call)
1118  *
1119  * @return Depth of subscip of SCIP is returned.
1120  *
1121  * @pre This method can be called if SCIP is in one of the following stages:
1122  * - \ref SCIP_STAGE_PROBLEM
1123  * - \ref SCIP_STAGE_TRANSFORMING
1124  * - \ref SCIP_STAGE_TRANSFORMED
1125  * - \ref SCIP_STAGE_INITPRESOLVE
1126  * - \ref SCIP_STAGE_PRESOLVING
1127  * - \ref SCIP_STAGE_EXITPRESOLVE
1128  * - \ref SCIP_STAGE_PRESOLVED
1129  * - \ref SCIP_STAGE_INITSOLVE
1130  * - \ref SCIP_STAGE_SOLVING
1131  * - \ref SCIP_STAGE_SOLVED
1132  * - \ref SCIP_STAGE_EXITSOLVE
1133  * - \ref SCIP_STAGE_FREETRANS
1134  *
1135  * @note SCIP stage does not get changed
1136  *
1137  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
1138  */
1139 extern
1141  SCIP* scip /**< SCIP data structure */
1142  );
1143 
1144 /** copies source SCIP to target SCIP; the copying process is done in the following order:
1145  * 1) copy the plugins
1146  * 2) copy the settings
1147  * 3) create problem data in target-SCIP and copy the problem data of the source-SCIP
1148  * 4) copy all active variables
1149  * 5) copy all constraints
1150  *
1151  * @note all variables and constraints which are created in the target-SCIP are not (user) captured
1152  *
1153  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
1154  * Also, 'passmessagehdlr' should be set to FALSE.
1155  * @note Do not change the source SCIP environment during the copying process
1156  *
1157  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1158  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1159  *
1160  * @pre This method can be called if sourcescip is in one of the following stages:
1161  * - \ref SCIP_STAGE_PROBLEM
1162  * - \ref SCIP_STAGE_TRANSFORMED
1163  * - \ref SCIP_STAGE_INITPRESOLVE
1164  * - \ref SCIP_STAGE_PRESOLVING
1165  * - \ref SCIP_STAGE_EXITPRESOLVE
1166  * - \ref SCIP_STAGE_PRESOLVED
1167  * - \ref SCIP_STAGE_INITSOLVE
1168  * - \ref SCIP_STAGE_SOLVING
1169  * - \ref SCIP_STAGE_SOLVED
1170  *
1171  * @pre This method can be called if targetscip is in one of the following stages:
1172  * - \ref SCIP_STAGE_INIT
1173  * - \ref SCIP_STAGE_FREE
1174  *
1175  * @note sourcescip stage does not get changed
1176  *
1177  * @note targetscip stage does not get changed
1178  *
1179  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
1180  */
1181 extern
1183  SCIP* sourcescip, /**< source SCIP data structure */
1184  SCIP* targetscip, /**< target SCIP data structure */
1185  SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
1186  * target variables, or NULL */
1187  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
1188  * target constraints, or NULL */
1189  const char* suffix, /**< optional suffix for problem name inside the target SCIP */
1190  SCIP_Bool global, /**< create a global or a local copy? */
1191  SCIP_Bool enablepricing, /**< should pricing be enabled in copied SCIP instance? If TRUE, pricer
1192  * plugins will be copied and activated, and the modifiable flag of
1193  * constraints will be respected. If FALSE, valid will be set to FALSE, when
1194  * there are pricers present */
1195  SCIP_Bool passmessagehdlr, /**< should the message handler be passed */
1196  SCIP_Bool* valid /**< pointer to store whether the copying was valid or not */
1197  );
1198 
1199 /** copies source SCIP original problem to target SCIP; the copying process is done in the following order:
1200  * 1) copy the plugins
1201  * 2) copy the settings
1202  * 3) create problem data in target-SCIP and copy the original problem data of the source-SCIP
1203  * 4) copy all original variables
1204  * 5) copy all original constraints
1205  *
1206  * @note all variables and constraints which are created in the target-SCIP are not (user) captured
1207  *
1208  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
1209  * Also, 'passmessagehdlr' should be set to FALSE.
1210  * @note Do not change the source SCIP environment during the copying process
1211  *
1212  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1213  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1214  *
1215  * @pre This method can be called if sourcescip is in one of the following stages:
1216  * - \ref SCIP_STAGE_PROBLEM
1217  * - \ref SCIP_STAGE_TRANSFORMED
1218  * - \ref SCIP_STAGE_INITPRESOLVE
1219  * - \ref SCIP_STAGE_PRESOLVING
1220  * - \ref SCIP_STAGE_EXITPRESOLVE
1221  * - \ref SCIP_STAGE_PRESOLVED
1222  * - \ref SCIP_STAGE_INITSOLVE
1223  * - \ref SCIP_STAGE_SOLVING
1224  * - \ref SCIP_STAGE_SOLVED
1225  *
1226  * @pre This method can be called if targetscip is in one of the following stages:
1227  * - \ref SCIP_STAGE_INIT
1228  * - \ref SCIP_STAGE_FREE
1229  *
1230  * @note sourcescip stage does not get changed
1231  *
1232  * @note targetscip stage does not get changed
1233  *
1234  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
1235  */
1236 extern
1238  SCIP* sourcescip, /**< source SCIP data structure */
1239  SCIP* targetscip, /**< target SCIP data structure */
1240  SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
1241  * target variables, or NULL */
1242  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
1243  * target constraints, or NULL */
1244  const char* suffix, /**< suffix which will be added to the names of the target SCIP, might be empty */
1245  SCIP_Bool enablepricing, /**< should pricing be enabled in copied SCIP instance? If TRUE, pricer
1246  * plugins will be copied and activated, and the modifiable flag of
1247  * constraints will be respected. If FALSE, valid will be set to FALSE, when
1248  * there are pricers present */
1249  SCIP_Bool passmessagehdlr, /**< should the message handler be passed */
1250  SCIP_Bool* valid /**< pointer to store whether the copying was valid or not */
1251  );
1252 
1253 /**@} */
1254 
1255 /*
1256  * parameter settings
1257  */
1258 
1259 /**@name Parameter Methods */
1260 /**@{ */
1261 
1262 /** creates a SCIP_Bool parameter, sets it to its default value, and adds it to the parameter set
1263  *
1264  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1265  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1266  */
1267 extern
1269  SCIP* scip, /**< SCIP data structure */
1270  const char* name, /**< name of the parameter */
1271  const char* desc, /**< description of the parameter */
1272  SCIP_Bool* valueptr, /**< pointer to store the current parameter value, or NULL */
1273  SCIP_Bool isadvanced, /**< is this parameter an advanced parameter? */
1274  SCIP_Bool defaultvalue, /**< default value of the parameter */
1275  SCIP_DECL_PARAMCHGD ((*paramchgd)), /**< change information method of parameter */
1276  SCIP_PARAMDATA* paramdata /**< locally defined parameter specific data */
1277  );
1278 
1279 /** creates a int parameter, sets it to its default value, and adds it to the parameter set
1280  *
1281  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1282  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1283  */
1284 extern
1286  SCIP* scip, /**< SCIP data structure */
1287  const char* name, /**< name of the parameter */
1288  const char* desc, /**< description of the parameter */
1289  int* valueptr, /**< pointer to store the current parameter value, or NULL */
1290  SCIP_Bool isadvanced, /**< is this parameter an advanced parameter? */
1291  int defaultvalue, /**< default value of the parameter */
1292  int minvalue, /**< minimum value for parameter */
1293  int maxvalue, /**< maximum value for parameter */
1294  SCIP_DECL_PARAMCHGD ((*paramchgd)), /**< change information method of parameter */
1295  SCIP_PARAMDATA* paramdata /**< locally defined parameter specific data */
1296  );
1297 
1298 /** creates a SCIP_Longint parameter, sets it to its default value, and adds it to the parameter set
1299  *
1300  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1301  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1302  */
1303 extern
1305  SCIP* scip, /**< SCIP data structure */
1306  const char* name, /**< name of the parameter */
1307  const char* desc, /**< description of the parameter */
1308  SCIP_Longint* valueptr, /**< pointer to store the current parameter value, or NULL */
1309  SCIP_Bool isadvanced, /**< is this parameter an advanced parameter? */
1310  SCIP_Longint defaultvalue, /**< default value of the parameter */
1311  SCIP_Longint minvalue, /**< minimum value for parameter */
1312  SCIP_Longint maxvalue, /**< maximum value for parameter */
1313  SCIP_DECL_PARAMCHGD ((*paramchgd)), /**< change information method of parameter */
1314  SCIP_PARAMDATA* paramdata /**< locally defined parameter specific data */
1315  );
1316 
1317 /** creates a SCIP_Real parameter, sets it to its default value, and adds it to the parameter set
1318  *
1319  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1320  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1321  */
1322 extern
1324  SCIP* scip, /**< SCIP data structure */
1325  const char* name, /**< name of the parameter */
1326  const char* desc, /**< description of the parameter */
1327  SCIP_Real* valueptr, /**< pointer to store the current parameter value, or NULL */
1328  SCIP_Bool isadvanced, /**< is this parameter an advanced parameter? */
1329  SCIP_Real defaultvalue, /**< default value of the parameter */
1330  SCIP_Real minvalue, /**< minimum value for parameter */
1331  SCIP_Real maxvalue, /**< maximum value for parameter */
1332  SCIP_DECL_PARAMCHGD ((*paramchgd)), /**< change information method of parameter */
1333  SCIP_PARAMDATA* paramdata /**< locally defined parameter specific data */
1334  );
1335 
1336 /** creates a char parameter, sets it to its default value, and adds it to the parameter set
1337  *
1338  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1339  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1340  */
1341 extern
1343  SCIP* scip, /**< SCIP data structure */
1344  const char* name, /**< name of the parameter */
1345  const char* desc, /**< description of the parameter */
1346  char* valueptr, /**< pointer to store the current parameter value, or NULL */
1347  SCIP_Bool isadvanced, /**< is this parameter an advanced parameter? */
1348  char defaultvalue, /**< default value of the parameter */
1349  const char* allowedvalues, /**< array with possible parameter values, or NULL if not restricted */
1350  SCIP_DECL_PARAMCHGD ((*paramchgd)), /**< change information method of parameter */
1351  SCIP_PARAMDATA* paramdata /**< locally defined parameter specific data */
1352  );
1353 
1354 /** creates a string(char*) parameter, sets it to its default value, and adds it to the parameter set
1355  *
1356  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1357  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1358  */
1359 extern
1361  SCIP* scip, /**< SCIP data structure */
1362  const char* name, /**< name of the parameter */
1363  const char* desc, /**< description of the parameter */
1364  char** valueptr, /**< pointer to store the current parameter value, or NULL; if not NULL then *valueptr should be NULL */
1365  SCIP_Bool isadvanced, /**< is this parameter an advanced parameter? */
1366  const char* defaultvalue, /**< default value of the parameter */
1367  SCIP_DECL_PARAMCHGD ((*paramchgd)), /**< change information method of parameter */
1368  SCIP_PARAMDATA* paramdata /**< locally defined parameter specific data */
1369  );
1370 
1371 /** gets the fixing status of an existing parameter
1372  *
1373  * @return TRUE if the parameter is fixed to a value, otherwise FALSE.
1374  */
1375 extern
1377  SCIP* scip, /**< SCIP data structure */
1378  const char* name /**< name of the parameter */
1379  );
1380 
1381 /** returns the pointer to the SCIP parameter with the given name
1382  *
1383  * @return pointer to the parameter with the given name
1384  */
1385 extern
1387  SCIP* scip, /**< SCIP data structure */
1388  const char* name /**< name of the parameter */
1389  );
1390 
1391 /** gets the value of an existing SCIP_Bool parameter
1392  *
1393  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1394  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1395  */
1396 extern
1398  SCIP* scip, /**< SCIP data structure */
1399  const char* name, /**< name of the parameter */
1400  SCIP_Bool* value /**< pointer to store the parameter */
1401  );
1402 
1403 /** gets the value of an existing int parameter
1404  *
1405  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1406  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1407  */
1408 extern
1410  SCIP* scip, /**< SCIP data structure */
1411  const char* name, /**< name of the parameter */
1412  int* value /**< pointer to store the parameter */
1413  );
1414 
1415 /** gets the value of an existing SCIP_Longint parameter
1416  *
1417  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1418  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1419  */
1420 extern
1422  SCIP* scip, /**< SCIP data structure */
1423  const char* name, /**< name of the parameter */
1424  SCIP_Longint* value /**< pointer to store the parameter */
1425  );
1426 
1427 /** gets the value of an existing SCIP_Real parameter
1428  *
1429  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1430  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1431  */
1432 extern
1434  SCIP* scip, /**< SCIP data structure */
1435  const char* name, /**< name of the parameter */
1436  SCIP_Real* value /**< pointer to store the parameter */
1437  );
1438 
1439 /** gets the value of an existing char parameter
1440  *
1441  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1442  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1443  */
1444 extern
1446  SCIP* scip, /**< SCIP data structure */
1447  const char* name, /**< name of the parameter */
1448  char* value /**< pointer to store the parameter */
1449  );
1450 
1451 /** gets the value of an existing string(char*) parameter
1452  *
1453  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1454  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1455  */
1456 extern
1458  SCIP* scip, /**< SCIP data structure */
1459  const char* name, /**< name of the parameter */
1460  char** value /**< pointer to store the parameter */
1461  );
1462 
1463 /** fixes the value of an existing parameter
1464  *
1465  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1466  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1467  *
1468  * @note: Be careful with this method! Some general settings, e.g., the time or node limit, should not be fixed because
1469  * they have to be changed for sub-SCIPs.
1470  */
1471 extern
1473  SCIP* scip, /**< SCIP data structure */
1474  const char* name /**< name of the parameter */
1475  );
1476 
1477 /** unfixes the value of an existing parameter
1478  *
1479  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1480  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1481  */
1482 extern
1484  SCIP* scip, /**< SCIP data structure */
1485  const char* name /**< name of the parameter */
1486  );
1487 
1488 /** changes the value of an existing parameter
1489  *
1490  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1491  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1492  */
1493 extern
1495  SCIP* scip, /**< SCIP data structure */
1496  const char* name, /**< name of the parameter */
1497  void* value /**< new value of the parameter */
1498  );
1499 
1500 /** changes the value of an existing SCIP_Bool parameter
1501  *
1502  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1503  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1504  */
1505 extern
1507  SCIP* scip, /**< SCIP data structure */
1508  SCIP_PARAM* param, /**< parameter */
1509  SCIP_Bool value /**< new value of the parameter */
1510  );
1511 
1512 /** changes the value of an existing SCIP_Bool parameter
1513  *
1514  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1515  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1516  */
1517 extern
1519  SCIP* scip, /**< SCIP data structure */
1520  const char* name, /**< name of the parameter */
1521  SCIP_Bool value /**< new value of the parameter */
1522  );
1523 
1524 /** checks the value of an existing SCIP_Bool parameter; issues a warning message if value was invalid
1525  *
1526  * @return \ref SCIP_OKAY is returned if value is valid. Otherwise \ref SCIP_PARAMETERWRONGVAL is returned.
1527  */
1528 extern
1530  SCIP* scip, /**< SCIP data structure */
1531  SCIP_PARAM* param, /**< parameter */
1532  SCIP_Bool value /**< value to check */
1533  );
1534 
1535 /** changes the value of an existing int parameter
1536  *
1537  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1538  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1539  */
1540 extern
1542  SCIP* scip, /**< SCIP data structure */
1543  SCIP_PARAM* param, /**< parameter */
1544  int value /**< new value of the parameter */
1545  );
1546 
1547 /** changes the value of an existing int parameter
1548  *
1549  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1550  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1551  */
1552 extern
1554  SCIP* scip, /**< SCIP data structure */
1555  const char* name, /**< name of the parameter */
1556  int value /**< new value of the parameter */
1557  );
1558 
1559 /** changes the value of an existing SCIP_Longint parameter
1560  *
1561  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1562  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1563  */
1564 extern
1566  SCIP* scip, /**< SCIP data structure */
1567  SCIP_PARAM* param, /**< parameter */
1568  SCIP_Longint value /**< new value of the parameter */
1569  );
1570 
1571 /** changes the value of an existing SCIP_Longint parameter
1572  *
1573  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1574  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1575  */
1576 extern
1578  SCIP* scip, /**< SCIP data structure */
1579  const char* name, /**< name of the parameter */
1580  SCIP_Longint value /**< new value of the parameter */
1581  );
1582 
1583 /** checks parameter value according to the given feasible domain; issues a warning message if value was invalid
1584  *
1585  * @return \ref SCIP_OKAY is returned if value is valid. Otherwise \ref SCIP_PARAMETERWRONGVAL is returned.
1586  */
1587 extern
1589  SCIP* scip, /**< SCIP data structure */
1590  SCIP_PARAM* param, /**< parameter */
1591  SCIP_Longint value /**< value to check */
1592  );
1593 
1594 /** changes the value of an existing SCIP_Real parameter
1595  *
1596  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1597  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1598  */
1599 extern
1601  SCIP* scip, /**< SCIP data structure */
1602  SCIP_PARAM* param, /**< parameter */
1603  SCIP_Real value /**< new value of the parameter */
1604  );
1605 
1606 /** changes the value of an existing SCIP_Real parameter
1607  *
1608  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1609  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1610  */
1611 extern
1613  SCIP* scip, /**< SCIP data structure */
1614  const char* name, /**< name of the parameter */
1615  SCIP_Real value /**< new value of the parameter */
1616  );
1617 
1618 /** changes the value of an existing char parameter
1619  *
1620  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1621  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1622  */
1623 extern
1625  SCIP* scip, /**< SCIP data structure */
1626  SCIP_PARAM* param, /**< parameter */
1627  char value /**< new value of the parameter */
1628  );
1629 
1630 /** changes the value of an existing char parameter
1631  *
1632  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1633  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1634  */
1635 extern
1637  SCIP* scip, /**< SCIP data structure */
1638  const char* name, /**< name of the parameter */
1639  char value /**< new value of the parameter */
1640  );
1641 
1642 /** checks parameter value according to the given feasible domain; issues a warning message if value was invalid
1643  *
1644  * @return \ref SCIP_OKAY is returned if value is valid. Otherwise \ref SCIP_PARAMETERWRONGVAL is returned.
1645  */
1646 extern
1648  SCIP* scip, /**< SCIP data structure */
1649  SCIP_PARAM* param, /**< parameter */
1650  const char value /**< value to check */
1651  );
1652 
1653 /** changes the value of an existing string(char*) parameter
1654  *
1655  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1656  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1657  */
1658 extern
1660  SCIP* scip, /**< SCIP data structure */
1661  SCIP_PARAM* param, /**< parameter */
1662  const char* value /**< new value of the parameter */
1663  );
1664 
1665 /** changes the value of an existing string(char*) parameter
1666  *
1667  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1668  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1669  */
1670 extern
1672  SCIP* scip, /**< SCIP data structure */
1673  const char* name, /**< name of the parameter */
1674  const char* value /**< new value of the parameter */
1675  );
1676 
1677 /** checks parameter value according to the given feasible domain; issues a warning message if value was invalid
1678  *
1679  * @return \ref SCIP_OKAY is returned if value is valid. Otherwise \ref SCIP_PARAMETERWRONGVAL is returned.
1680  */
1681 extern
1683  SCIP* scip, /**< SCIP data structure */
1684  SCIP_PARAM* param, /**< parameter */
1685  const char* value /**< value to check */
1686  );
1687 
1688 /** reads parameters from a file
1689  *
1690  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1691  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1692  */
1693 extern
1695  SCIP* scip, /**< SCIP data structure */
1696  const char* filename /**< file name */
1697  );
1698 
1699 /** writes a single parameter to a file
1700  *
1701  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1702  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1703  */
1704 extern
1706  SCIP* scip, /**< SCIP data structure */
1707  SCIP_PARAM* param, /**< parameter */
1708  const char* filename, /**< file name, or NULL for stdout */
1709  SCIP_Bool comments, /**< should parameter descriptions be written as comments? */
1710  SCIP_Bool onlychanged /**< should only those parameters be written that are changed from their
1711  * default value?
1712  */
1713  );
1714 
1715 /** writes all parameters in the parameter set to a file
1716  *
1717  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1718  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1719  */
1720 extern
1722  SCIP* scip, /**< SCIP data structure */
1723  const char* filename, /**< file name, or NULL for stdout */
1724  SCIP_Bool comments, /**< should parameter descriptions be written as comments? */
1725  SCIP_Bool onlychanged /**< should only those parameters be written that are changed from their
1726  * default value?
1727  */
1728  );
1729 
1730 /** resets a single parameter to its default value
1731  *
1732  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1733  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1734  */
1735 extern
1737  SCIP* scip, /**< SCIP data structure */
1738  const char* name /**< name of the parameter */
1739  );
1740 
1741 /** resets all parameters to their default values
1742  *
1743  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1744  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1745  */
1746 extern
1748  SCIP* scip /**< SCIP data structure */
1749  );
1750 
1751 /** sets parameters to
1752  *
1753  * - SCIP_PARAMEMPHASIS_DEFAULT to use default values (see also SCIPresetParams())
1754  * - SCIP_PARAMEMPHASIS_COUNTER to get feasible and "fast" counting process
1755  * - SCIP_PARAMEMPHASIS_CPSOLVER to get CP like search (e.g. no LP relaxation)
1756  * - SCIP_PARAMEMPHASIS_EASYCIP to solve easy problems fast
1757  * - SCIP_PARAMEMPHASIS_FEASIBILITY to detect feasibility fast
1758  * - SCIP_PARAMEMPHASIS_HARDLP to be capable to handle hard LPs
1759  * - SCIP_PARAMEMPHASIS_OPTIMALITY to prove optimality fast
1760  *
1761  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1762  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1763  */
1764 extern
1766  SCIP* scip, /**< SCIP data structure */
1767  SCIP_PARAMEMPHASIS paramemphasis, /**< parameter settings */
1768  SCIP_Bool quiet /**< should the parameter be set quiet (no output) */
1769  );
1770 
1771 /** sets parameters to deactivate separators and heuristics that use auxiliary SCIP instances; should be called for
1772  * auxiliary SCIP instances to avoid recursion
1773  *
1774  * @note only deactivates plugins which could cause recursion, some plugins which use sub-SCIPs stay activated
1775  *
1776  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1777  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1778  */
1779 extern
1781  SCIP* scip, /**< (auxiliary) SCIP data structure */
1782  SCIP_Bool quiet /**< should the parameter be set quiet (no output) */
1783  );
1784 
1785 /** sets heuristic parameters values to
1786  *
1787  * - SCIP_PARAMSETTING_DEFAULT which are the default values of all heuristic parameters
1788  * - SCIP_PARAMSETTING_FAST such that the time spend for heuristic is decreased
1789  * - SCIP_PARAMSETTING_AGGRESSIVE such that the heuristic are called more aggregative
1790  * - SCIP_PARAMSETTING_OFF which turn off all heuristics
1791  *
1792  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1793  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1794  */
1795 extern
1797  SCIP* scip, /**< SCIP data structure */
1798  SCIP_PARAMSETTING paramsetting, /**< parameter settings */
1799  SCIP_Bool quiet /**< should the parameter be set quiet (no output) */
1800  );
1801 
1802 /** sets presolving parameters to
1803  *
1804  * - SCIP_PARAMSETTING_DEFAULT which are the default values of all presolving parameters
1805  * - SCIP_PARAMSETTING_FAST such that the time spend for presolving is decreased
1806  * - SCIP_PARAMSETTING_AGGRESSIVE such that the presolving is more aggregative
1807  * - SCIP_PARAMSETTING_OFF which turn off all presolving
1808  *
1809  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1810  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1811  */
1812 extern
1814  SCIP* scip, /**< SCIP data structure */
1815  SCIP_PARAMSETTING paramsetting, /**< parameter settings */
1816  SCIP_Bool quiet /**< should the parameter be set quiet (no output) */
1817  );
1818 
1819 /** sets separating parameters to
1820  *
1821  * - SCIP_PARAMSETTING_DEFAULT which are the default values of all separating parameters
1822  * - SCIP_PARAMSETTING_FAST such that the time spend for separating is decreased
1823  * - SCIP_PARAMSETTING_AGGRESSIVE such that the separating is done more aggregative
1824  * - SCIP_PARAMSETTING_OFF which turn off all separating
1825  *
1826  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1827  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1828  */
1829 extern
1831  SCIP* scip, /**< SCIP data structure */
1832  SCIP_PARAMSETTING paramsetting, /**< parameter settings */
1833  SCIP_Bool quiet /**< should the parameter be set quiet (no output) */
1834  );
1835 
1836 /** returns the array of all available SCIP parameters
1837  *
1838  * @return SCIP_PARAM* array, containing all SCIP parameters.
1839  */
1840 extern
1842  SCIP* scip /**< SCIP data structure */
1843  );
1844 
1845 /** returns the total number of all available SCIP parameters
1846  *
1847  * @return number of all SCIP parameters.
1848  */
1849 extern
1850 int SCIPgetNParams(
1851  SCIP* scip /**< SCIP data structure */
1852  );
1853 
1854 /**@} */
1855 
1856 
1857 /*
1858  * SCIP user functionality methods: managing plugins
1859  */
1860 
1861 /**@name SCIP User Functionality Methods: Managing Plugins */
1862 /**@{ */
1863 
1864 /** creates a reader and includes it in SCIP
1865  *
1866  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1867  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1868  *
1869  * @pre This method can be called if SCIP is in one of the following stages:
1870  * - \ref SCIP_STAGE_INIT
1871  * - \ref SCIP_STAGE_PROBLEM
1872  *
1873  * @note method has all reader callbacks as arguments and is thus changed every time a new callback is added
1874  * in future releases; consider using SCIPincludeReaderBasic() and setter functions
1875  * if you seek for a method which is less likely to change in future releases
1876  */
1877 extern
1879  SCIP* scip, /**< SCIP data structure */
1880  const char* name, /**< name of reader */
1881  const char* desc, /**< description of reader */
1882  const char* extension, /**< file extension that reader processes */
1883  SCIP_DECL_READERCOPY ((*readercopy)), /**< copy method of reader or NULL if you don't want to copy your plugin into sub-SCIPs */
1884  SCIP_DECL_READERFREE ((*readerfree)), /**< destructor of reader */
1885  SCIP_DECL_READERREAD ((*readerread)), /**< read method */
1886  SCIP_DECL_READERWRITE ((*readerwrite)), /**< write method */
1887  SCIP_READERDATA* readerdata /**< reader data */
1888  );
1889 
1890 /** creates a reader and includes it in SCIP. All non-fundamental (or optional) callbacks will be set to NULL.
1891  * Optional callbacks can be set via specific setter functions, see
1892  * SCIPsetReaderCopy(), SCIPsetReaderFree(), SCIPsetReaderRead(), SCIPsetReaderWrite().
1893  *
1894  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1895  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1896  *
1897  * @pre This method can be called if SCIP is in one of the following stages:
1898  * - \ref SCIP_STAGE_INIT
1899  * - \ref SCIP_STAGE_PROBLEM
1900  *
1901  * @note if you want to set all callbacks with a single method call, consider using SCIPincludeReader() instead
1902  */
1903 extern
1905  SCIP* scip, /**< SCIP data structure */
1906  SCIP_READER** readerptr, /**< reference to reader pointer, or NULL */
1907  const char* name, /**< name of reader */
1908  const char* desc, /**< description of reader */
1909  const char* extension, /**< file extension that reader processes */
1910  SCIP_READERDATA* readerdata /**< reader data */
1911  );
1912 
1913 /** set copy method of reader
1914  *
1915  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1916  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1917  *
1918  * @pre This method can be called if SCIP is in one of the following stages:
1919  * - \ref SCIP_STAGE_INIT
1920  * - \ref SCIP_STAGE_PROBLEM
1921  */
1922 extern
1924  SCIP* scip, /**< SCIP data structure */
1925  SCIP_READER* reader, /**< reader */
1926  SCIP_DECL_READERCOPY ((*readercopy)) /**< copy method of reader or NULL if you don't want to copy your plugin into sub-SCIPs */
1927  );
1928 
1929 /** set deinitialization method of reader
1930  *
1931  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1932  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1933  *
1934  * @pre This method can be called if SCIP is in one of the following stages:
1935  * - \ref SCIP_STAGE_INIT
1936  * - \ref SCIP_STAGE_PROBLEM
1937  */
1938 extern
1940  SCIP* scip, /**< SCIP data structure */
1941  SCIP_READER* reader, /**< reader */
1942  SCIP_DECL_READERFREE ((*readerfree)) /**< destructor of reader */
1943  );
1944 
1945 /** set read method of reader
1946  *
1947  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1948  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1949  *
1950  * @pre This method can be called if SCIP is in one of the following stages:
1951  * - \ref SCIP_STAGE_INIT
1952  * - \ref SCIP_STAGE_PROBLEM
1953  */
1954 extern
1956  SCIP* scip, /**< SCIP data structure */
1957  SCIP_READER* reader, /**< reader */
1958  SCIP_DECL_READERREAD ((*readerread)) /**< read method of reader */
1959  );
1960 
1961 /** set write method of reader
1962  *
1963  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1964  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1965  *
1966  * @pre This method can be called if SCIP is in one of the following stages:
1967  * - \ref SCIP_STAGE_INIT
1968  * - \ref SCIP_STAGE_PROBLEM
1969  */
1970 extern
1972  SCIP* scip, /**< SCIP data structure */
1973  SCIP_READER* reader, /**< reader */
1974  SCIP_DECL_READERWRITE ((*readerwrite)) /**< write method of reader */
1975  );
1976 
1977 /** returns the reader of the given name, or NULL if not existing */
1978 extern
1980  SCIP* scip, /**< SCIP data structure */
1981  const char* name /**< name of reader */
1982  );
1983 
1984 /** returns the array of currently available readers */
1985 extern
1987  SCIP* scip /**< SCIP data structure */
1988  );
1989 
1990 /** returns the number of currently available readers */
1991 extern
1992 int SCIPgetNReaders(
1993  SCIP* scip /**< SCIP data structure */
1994  );
1995 
1996 /** creates a variable pricer and includes it in SCIP
1997  * To use the variable pricer for solving a problem, it first has to be activated with a call to SCIPactivatePricer().
1998  * This should be done during the problem creation stage.
1999  *
2000  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2001  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2002  *
2003  * @pre This method can be called if SCIP is in one of the following stages:
2004  * - \ref SCIP_STAGE_INIT
2005  * - \ref SCIP_STAGE_PROBLEM
2006  *
2007  * @note method has all pricer callbacks as arguments and is thus changed every time a new callback is added
2008  * in future releases; consider using SCIPincludePricerBasic() and setter functions
2009  * if you seek for a method which is less likely to change in future releases
2010  */
2011 extern
2013  SCIP* scip, /**< SCIP data structure */
2014  const char* name, /**< name of variable pricer */
2015  const char* desc, /**< description of variable pricer */
2016  int priority, /**< priority of the variable pricer */
2017  SCIP_Bool delay, /**< should the pricer be delayed until no other pricers or already existing
2018  * problem variables with negative reduced costs are found?
2019  * if this is set to FALSE it may happen that the pricer produces columns
2020  * that already exist in the problem (which are also priced in by the
2021  * default problem variable pricing in the same round) */
2022  SCIP_DECL_PRICERCOPY ((*pricercopy)), /**< copy method of variable pricer or NULL if you don't want to copy your plugin into sub-SCIPs */
2023  SCIP_DECL_PRICERFREE ((*pricerfree)), /**< destructor of variable pricer */
2024  SCIP_DECL_PRICERINIT ((*pricerinit)), /**< initialize variable pricer */
2025  SCIP_DECL_PRICEREXIT ((*pricerexit)), /**< deinitialize variable pricer */
2026  SCIP_DECL_PRICERINITSOL((*pricerinitsol)),/**< solving process initialization method of variable pricer */
2027  SCIP_DECL_PRICEREXITSOL((*pricerexitsol)),/**< solving process deinitialization method of variable pricer */
2028  SCIP_DECL_PRICERREDCOST((*pricerredcost)),/**< reduced cost pricing method of variable pricer for feasible LPs */
2029  SCIP_DECL_PRICERFARKAS((*pricerfarkas)), /**< Farkas pricing method of variable pricer for infeasible LPs */
2030  SCIP_PRICERDATA* pricerdata /**< variable pricer data */
2031  );
2032 
2033 /** creates a variable pricer and includes it in SCIP with all non-fundamental callbacks set to NULL;
2034  * if needed, these can be added afterwards via setter functions SCIPsetPricerCopy(), SCIPsetPricerFree(),
2035  * SCIPsetPricerInity(), SCIPsetPricerExit(), SCIPsetPricerInitsol(), SCIPsetPricerExitsol(),
2036  * SCIPsetPricerFarkas();
2037  *
2038  * To use the variable pricer for solving a problem, it first has to be activated with a call to SCIPactivatePricer().
2039  * This should be done during the problem creation stage.
2040  *
2041  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2042  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2043  *
2044  * @pre This method can be called if SCIP is in one of the following stages:
2045  * - \ref SCIP_STAGE_INIT
2046  * - \ref SCIP_STAGE_PROBLEM
2047  *
2048  * @note if you want to set all callbacks with a single method call, consider using SCIPincludePricer() instead
2049  */
2050 extern
2052  SCIP* scip, /**< SCIP data structure */
2053  SCIP_PRICER** pricerptr, /**< reference to a pricer, or NULL */
2054  const char* name, /**< name of variable pricer */
2055  const char* desc, /**< description of variable pricer */
2056  int priority, /**< priority of the variable pricer */
2057  SCIP_Bool delay, /**< should the pricer be delayed until no other pricers or already existing
2058  * problem variables with negative reduced costs are found?
2059  * if this is set to FALSE it may happen that the pricer produces columns
2060  * that already exist in the problem (which are also priced in by the
2061  * default problem variable pricing in the same round) */
2062  SCIP_DECL_PRICERREDCOST((*pricerredcost)),/**< reduced cost pricing method of variable pricer for feasible LPs */
2063  SCIP_DECL_PRICERFARKAS((*pricerfarkas)), /**< Farkas pricing method of variable pricer for infeasible LPs */
2064  SCIP_PRICERDATA* pricerdata /**< variable pricer data */
2065  );
2066 
2067 /** sets copy method of pricer
2068  *
2069  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2070  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2071  *
2072  * @pre This method can be called if SCIP is in one of the following stages:
2073  * - \ref SCIP_STAGE_INIT
2074  * - \ref SCIP_STAGE_PROBLEM
2075  */
2076 extern
2078  SCIP* scip, /**< SCIP data structure */
2079  SCIP_PRICER* pricer, /**< pricer */
2080  SCIP_DECL_PRICERCOPY ((*pricercopy)) /**< copy method of pricer or NULL if you don't want to copy your plugin into sub-SCIPs */
2081  );
2082 
2083 /** sets destructor method of pricer
2084  *
2085  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2086  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2087  *
2088  * @pre This method can be called if SCIP is in one of the following stages:
2089  * - \ref SCIP_STAGE_INIT
2090  * - \ref SCIP_STAGE_PROBLEM
2091  */
2092 extern
2094  SCIP* scip, /**< SCIP data structure */
2095  SCIP_PRICER* pricer, /**< pricer */
2096  SCIP_DECL_PRICERFREE ((*pricerfree)) /**< destructor of pricer */
2097  );
2098 
2099 /** sets initialization method of pricer
2100  *
2101  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2102  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2103  *
2104  * @pre This method can be called if SCIP is in one of the following stages:
2105  * - \ref SCIP_STAGE_INIT
2106  * - \ref SCIP_STAGE_PROBLEM
2107  */
2108 extern
2110  SCIP* scip, /**< SCIP data structure */
2111  SCIP_PRICER* pricer, /**< pricer */
2112  SCIP_DECL_PRICERINIT ((*pricerinit)) /**< initialize pricer */
2113  );
2114 
2115 /** sets deinitialization method of pricer
2116  *
2117  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2118  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2119  *
2120  * @pre This method can be called if SCIP is in one of the following stages:
2121  * - \ref SCIP_STAGE_INIT
2122  * - \ref SCIP_STAGE_PROBLEM
2123  */
2124 extern
2126  SCIP* scip, /**< SCIP data structure */
2127  SCIP_PRICER* pricer, /**< pricer */
2128  SCIP_DECL_PRICEREXIT ((*pricerexit)) /**< deinitialize pricer */
2129  );
2130 
2131 /** sets solving process initialization method of pricer
2132  *
2133  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2134  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2135  *
2136  * @pre This method can be called if SCIP is in one of the following stages:
2137  * - \ref SCIP_STAGE_INIT
2138  * - \ref SCIP_STAGE_PROBLEM
2139  */
2140 extern
2142  SCIP* scip, /**< SCIP data structure */
2143  SCIP_PRICER* pricer, /**< pricer */
2144  SCIP_DECL_PRICERINITSOL ((*pricerinitsol))/**< solving process initialization method of pricer */
2145  );
2146 
2147 /** sets solving process deinitialization method of pricer
2148  *
2149  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2150  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2151  *
2152  * @pre This method can be called if SCIP is in one of the following stages:
2153  * - \ref SCIP_STAGE_INIT
2154  * - \ref SCIP_STAGE_PROBLEM
2155  */
2156 extern
2158  SCIP* scip, /**< SCIP data structure */
2159  SCIP_PRICER* pricer, /**< pricer */
2160  SCIP_DECL_PRICEREXITSOL((*pricerexitsol)) /**< solving process deinitialization method of pricer */
2161  );
2162 
2163 /** returns the variable pricer of the given name, or NULL if not existing */
2164 extern
2166  SCIP* scip, /**< SCIP data structure */
2167  const char* name /**< name of variable pricer */
2168  );
2169 
2170 /** returns the array of currently available variable pricers; active pricers are in the first slots of the array */
2171 extern
2173  SCIP* scip /**< SCIP data structure */
2174  );
2175 
2176 /** returns the number of currently available variable pricers */
2177 extern
2178 int SCIPgetNPricers(
2179  SCIP* scip /**< SCIP data structure */
2180  );
2181 
2182 /** returns the number of currently active variable pricers, that are used in the LP solving loop */
2183 extern
2185  SCIP* scip /**< SCIP data structure */
2186  );
2187 
2188 /** sets the priority of a variable pricer */
2189 extern
2191  SCIP* scip, /**< SCIP data structure */
2192  SCIP_PRICER* pricer, /**< variable pricer */
2193  int priority /**< new priority of the variable pricer */
2194  );
2195 
2196 /** activates pricer to be used for the current problem
2197  * This method should be called during the problem creation stage for all pricers that are necessary to solve
2198  * the problem model.
2199  * The pricers are automatically deactivated when the problem is freed.
2200  *
2201  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2202  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2203  *
2204  * @pre This method can be called if SCIP is in one of the following stages:
2205  * - \ref SCIP_STAGE_PROBLEM
2206  */
2207 extern
2209  SCIP* scip, /**< SCIP data structure */
2210  SCIP_PRICER* pricer /**< variable pricer */
2211  );
2212 
2213 /** deactivates pricer
2214  *
2215  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2216  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2217  *
2218  * @pre This method can be called if SCIP is in one of the following stages:
2219  * - \ref SCIP_STAGE_PROBLEM
2220  * - \ref SCIP_STAGE_EXITSOLVE
2221  */
2222 extern
2224  SCIP* scip, /**< SCIP data structure */
2225  SCIP_PRICER* pricer /**< variable pricer */
2226  );
2227 
2228 /** creates a constraint handler and includes it in SCIP.
2229  *
2230  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2231  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2232  *
2233  * @pre This method can be called if SCIP is in one of the following stages:
2234  * - \ref SCIP_STAGE_INIT
2235  * - \ref SCIP_STAGE_PROBLEM
2236  *
2237  * @note method has all constraint handler callbacks as arguments and is thus changed every time a new
2238  * callback is added
2239  * in future releases; consider using SCIPincludeConshdlrBasic() and setter functions
2240  * if you seek for a method which is less likely to change in future releases
2241  */
2242 extern
2244  SCIP* scip, /**< SCIP data structure */
2245  const char* name, /**< name of constraint handler */
2246  const char* desc, /**< description of constraint handler */
2247  int sepapriority, /**< priority of the constraint handler for separation */
2248  int enfopriority, /**< priority of the constraint handler for constraint enforcing */
2249  int chckpriority, /**< priority of the constraint handler for checking feasibility (and propagation) */
2250  int sepafreq, /**< frequency for separating cuts; zero means to separate only in the root node */
2251  int propfreq, /**< frequency for propagating domains; zero means only preprocessing propagation */
2252  int eagerfreq, /**< frequency for using all instead of only the useful constraints in separation,
2253  * propagation and enforcement, -1 for no eager evaluations, 0 for first only */
2254  int maxprerounds, /**< maximal number of presolving rounds the constraint handler participates in (-1: no limit) */
2255  SCIP_Bool delaysepa, /**< should separation method be delayed, if other separators found cuts? */
2256  SCIP_Bool delayprop, /**< should propagation method be delayed, if other propagators found reductions? */
2257  SCIP_Bool needscons, /**< should the constraint handler be skipped, if no constraints are available? */
2258  SCIP_PROPTIMING proptiming, /**< positions in the node solving loop where propagation method of constraint handlers should be executed */
2259  SCIP_PRESOLTIMING presoltiming, /**< timing mask of the constraint handler's presolving method */
2260  SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), /**< copy method of constraint handler or NULL if you don't want to copy your plugin into sub-SCIPs */
2261  SCIP_DECL_CONSFREE ((*consfree)), /**< destructor of constraint handler */
2262  SCIP_DECL_CONSINIT ((*consinit)), /**< initialize constraint handler */
2263  SCIP_DECL_CONSEXIT ((*consexit)), /**< deinitialize constraint handler */
2264  SCIP_DECL_CONSINITPRE ((*consinitpre)), /**< presolving initialization method of constraint handler */
2265  SCIP_DECL_CONSEXITPRE ((*consexitpre)), /**< presolving deinitialization method of constraint handler */
2266  SCIP_DECL_CONSINITSOL ((*consinitsol)), /**< solving process initialization method of constraint handler */
2267  SCIP_DECL_CONSEXITSOL ((*consexitsol)), /**< solving process deinitialization method of constraint handler */
2268  SCIP_DECL_CONSDELETE ((*consdelete)), /**< free specific constraint data */
2269  SCIP_DECL_CONSTRANS ((*constrans)), /**< transform constraint data into data belonging to the transformed problem */
2270  SCIP_DECL_CONSINITLP ((*consinitlp)), /**< initialize LP with relaxations of "initial" constraints */
2271  SCIP_DECL_CONSSEPALP ((*conssepalp)), /**< separate cutting planes for LP solution */
2272  SCIP_DECL_CONSSEPASOL ((*conssepasol)), /**< separate cutting planes for arbitrary primal solution */
2273  SCIP_DECL_CONSENFOLP ((*consenfolp)), /**< enforcing constraints for LP solutions */
2274  SCIP_DECL_CONSENFOPS ((*consenfops)), /**< enforcing constraints for pseudo solutions */
2275  SCIP_DECL_CONSCHECK ((*conscheck)), /**< check feasibility of primal solution */
2276  SCIP_DECL_CONSPROP ((*consprop)), /**< propagate variable domains */
2277  SCIP_DECL_CONSPRESOL ((*conspresol)), /**< presolving method */
2278  SCIP_DECL_CONSRESPROP ((*consresprop)), /**< propagation conflict resolving method */
2279  SCIP_DECL_CONSLOCK ((*conslock)), /**< variable rounding lock method */
2280  SCIP_DECL_CONSACTIVE ((*consactive)), /**< activation notification method */
2281  SCIP_DECL_CONSDEACTIVE((*consdeactive)), /**< deactivation notification method */
2282  SCIP_DECL_CONSENABLE ((*consenable)), /**< enabling notification method */
2283  SCIP_DECL_CONSDISABLE ((*consdisable)), /**< disabling notification method */
2284  SCIP_DECL_CONSDELVARS ((*consdelvars)), /**< variable deletion method */
2285  SCIP_DECL_CONSPRINT ((*consprint)), /**< constraint display method */
2286  SCIP_DECL_CONSCOPY ((*conscopy)), /**< constraint copying method */
2287  SCIP_DECL_CONSPARSE ((*consparse)), /**< constraint parsing method */
2288  SCIP_DECL_CONSGETVARS ((*consgetvars)), /**< constraint get variables method */
2289  SCIP_DECL_CONSGETNVARS((*consgetnvars)), /**< constraint get number of variable method */
2290  SCIP_DECL_CONSGETDIVEBDCHGS((*consgetdivebdchgs)), /**< constraint handler diving solution enforcement method */
2291  SCIP_CONSHDLRDATA* conshdlrdata /**< constraint handler data */
2292  );
2293 
2294 /** creates a constraint handler and includes it in SCIP. All non-fundamental (or optional) callbacks will be set to NULL.
2295  * Optional callbacks can be set via specific setter functions, see SCIPsetConshdlrInit(), SCIPsetConshdlrExit(),
2296  * SCIPsetConshdlrCopy(), SCIPsetConshdlrFree(), SCIPsetConshdlrInitsol(), SCIPsetConshdlrExitsol(),
2297  * SCIPsetConshdlrInitpre(), SCIPsetConshdlrExitpre(), SCIPsetConshdlrPresol(), SCIPsetConshdlrDelete(),
2298  * SCIPsetConshdlrDelvars(), SCIPsetConshdlrInitlp(), SCIPsetConshdlrActive(), SCIPsetConshdlrDeactive(),
2299  * SCIPsetConshdlrEnable(), SCIPsetConshdlrDisable(), SCIPsetConshdlrResprop(), SCIPsetConshdlrTrans(),
2300  * SCIPsetConshdlrPrint(), SCIPsetConshdlrParse(), SCIPsetConshdlrGetVars(), SCIPsetConshdlrGetNVars(), and
2301  * SCIPsetConshdlrGetDiveBdChgs().
2302  *
2303  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2304  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2305  *
2306  * @pre This method can be called if SCIP is in one of the following stages:
2307  * - \ref SCIP_STAGE_INIT
2308  * - \ref SCIP_STAGE_PROBLEM
2309  *
2310  * @note if you want to set all callbacks with a single method call, consider using SCIPincludeConshdlr() instead
2311  */
2312 extern
2314  SCIP* scip, /**< SCIP data structure */
2315  SCIP_CONSHDLR** conshdlrptr, /**< reference to a constraint handler pointer, or NULL */
2316  const char* name, /**< name of constraint handler */
2317  const char* desc, /**< description of constraint handler */
2318  int enfopriority, /**< priority of the constraint handler for constraint enforcing */
2319  int chckpriority, /**< priority of the constraint handler for checking feasibility (and propagation) */
2320  int eagerfreq, /**< frequency for using all instead of only the useful constraints in separation,
2321  * propagation and enforcement, -1 for no eager evaluations, 0 for first only */
2322  SCIP_Bool needscons, /**< should the constraint handler be skipped, if no constraints are available? */
2323  SCIP_DECL_CONSENFOLP ((*consenfolp)), /**< enforcing constraints for LP solutions */
2324  SCIP_DECL_CONSENFOPS ((*consenfops)), /**< enforcing constraints for pseudo solutions */
2325  SCIP_DECL_CONSCHECK ((*conscheck)), /**< check feasibility of primal solution */
2326  SCIP_DECL_CONSLOCK ((*conslock)), /**< variable rounding lock method */
2327  SCIP_CONSHDLRDATA* conshdlrdata /**< constraint handler data */
2328  );
2329 
2330 /** sets all separation related callbacks/parameters of the constraint handler
2331  *
2332  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2333  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2334  *
2335  * @pre This method can be called if SCIP is in one of the following stages:
2336  * - \ref SCIP_STAGE_INIT
2337  * - \ref SCIP_STAGE_PROBLEM
2338  */
2339 extern
2341  SCIP* scip, /**< SCIP data structure */
2342  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2343  SCIP_DECL_CONSSEPALP ((*conssepalp)), /**< separate cutting planes for LP solution */
2344  SCIP_DECL_CONSSEPASOL ((*conssepasol)), /**< separate cutting planes for arbitrary primal solution */
2345  int sepafreq, /**< frequency for separating cuts; zero means to separate only in the root node */
2346  int sepapriority, /**< priority of the constraint handler for separation */
2347  SCIP_Bool delaysepa /**< should separation method be delayed, if other separators found cuts? */
2348  );
2349 
2350 /** sets both the propagation callback and the propagation frequency of the constraint handler
2351  *
2352  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2353  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2354  *
2355  * @pre This method can be called if SCIP is in one of the following stages:
2356  * - \ref SCIP_STAGE_INIT
2357  * - \ref SCIP_STAGE_PROBLEM
2358  */
2359 extern
2361  SCIP* scip, /**< SCIP data structure */
2362  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2363  SCIP_DECL_CONSPROP ((*consprop)), /**< propagate variable domains */
2364  int propfreq, /**< frequency for propagating domains; zero means only preprocessing propagation */
2365  SCIP_Bool delayprop, /**< should propagation method be delayed, if other propagators found reductions? */
2366  SCIP_PROPTIMING proptiming /**< positions in the node solving loop where propagation should be executed */
2367  );
2368 
2369 /** sets copy method of both the constraint handler and each associated constraint
2370  *
2371  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2372  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2373  *
2374  * @pre This method can be called if SCIP is in one of the following stages:
2375  * - \ref SCIP_STAGE_INIT
2376  * - \ref SCIP_STAGE_PROBLEM
2377  */
2378 extern
2380  SCIP* scip, /**< SCIP data structure */
2381  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2382  SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), /**< copy method of constraint handler or NULL if you don't want to copy your plugin into sub-SCIPs */
2383  SCIP_DECL_CONSCOPY ((*conscopy)) /**< constraint copying method */
2384  );
2385 
2386 /** sets destructor method of constraint handler
2387  *
2388  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2389  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2390  *
2391  * @pre This method can be called if SCIP is in one of the following stages:
2392  * - \ref SCIP_STAGE_INIT
2393  * - \ref SCIP_STAGE_PROBLEM
2394  */
2395 extern
2397  SCIP* scip, /**< SCIP data structure */
2398  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2399  SCIP_DECL_CONSFREE ((*consfree)) /**< destructor of constraint handler */
2400  );
2401 
2402 /** sets initialization method of constraint handler
2403  *
2404  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2405  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2406  *
2407  * @pre This method can be called if SCIP is in one of the following stages:
2408  * - \ref SCIP_STAGE_INIT
2409  * - \ref SCIP_STAGE_PROBLEM
2410  */
2411 extern
2413  SCIP* scip, /**< SCIP data structure */
2414  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2415  SCIP_DECL_CONSINIT ((*consinit)) /**< initialize constraint handler */
2416  );
2417 
2418 /** sets deinitialization method of constraint handler
2419  *
2420  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2421  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2422  *
2423  * @pre This method can be called if SCIP is in one of the following stages:
2424  * - \ref SCIP_STAGE_INIT
2425  * - \ref SCIP_STAGE_PROBLEM
2426  */
2427 extern
2429  SCIP* scip, /**< SCIP data structure */
2430  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2431  SCIP_DECL_CONSEXIT ((*consexit)) /**< deinitialize constraint handler */
2432  );
2433 
2434 /** sets solving process initialization method of constraint handler
2435  *
2436  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2437  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2438  *
2439  * @pre This method can be called if SCIP is in one of the following stages:
2440  * - \ref SCIP_STAGE_INIT
2441  * - \ref SCIP_STAGE_PROBLEM
2442  */
2443 extern
2445  SCIP* scip, /**< SCIP data structure */
2446  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2447  SCIP_DECL_CONSINITSOL((*consinitsol)) /**< solving process initialization method of constraint handler */
2448  );
2449 
2450 /** sets solving process deinitialization method of constraint handler
2451  *
2452  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2453  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2454  *
2455  * @pre This method can be called if SCIP is in one of the following stages:
2456  * - \ref SCIP_STAGE_INIT
2457  * - \ref SCIP_STAGE_PROBLEM
2458  */
2459 extern
2461  SCIP* scip, /**< SCIP data structure */
2462  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2463  SCIP_DECL_CONSEXITSOL ((*consexitsol))/**< solving process deinitialization method of constraint handler */
2464  );
2465 
2466 /** sets preprocessing initialization method of constraint handler
2467  *
2468  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2469  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2470  *
2471  * @pre This method can be called if SCIP is in one of the following stages:
2472  * - \ref SCIP_STAGE_INIT
2473  * - \ref SCIP_STAGE_PROBLEM
2474  */
2475 extern
2477  SCIP* scip, /**< SCIP data structure */
2478  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2479  SCIP_DECL_CONSINITPRE((*consinitpre)) /**< preprocessing initialization method of constraint handler */
2480  );
2481 
2482 /** sets preprocessing deinitialization method of constraint handler
2483  *
2484  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2485  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2486  *
2487  * @pre This method can be called if SCIP is in one of the following stages:
2488  * - \ref SCIP_STAGE_INIT
2489  * - \ref SCIP_STAGE_PROBLEM
2490  */
2491 extern
2493  SCIP* scip, /**< SCIP data structure */
2494  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2495  SCIP_DECL_CONSEXITPRE((*consexitpre)) /**< preprocessing deinitialization method of constraint handler */
2496  );
2497 
2498 /** sets presolving method of constraint handler
2499  *
2500  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2501  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2502  *
2503  * @pre This method can be called if SCIP is in one of the following stages:
2504  * - \ref SCIP_STAGE_INIT
2505  * - \ref SCIP_STAGE_PROBLEM
2506  */
2507 extern
2509  SCIP* scip, /**< SCIP data structure */
2510  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2511  SCIP_DECL_CONSPRESOL ((*conspresol)), /**< presolving method of constraint handler */
2512  int maxprerounds, /**< maximal number of presolving rounds the constraint handler participates in (-1: no limit) */
2513  SCIP_PRESOLTIMING presoltiming /**< timing mask of the constraint handler's presolving method */
2514  );
2515 
2516 /** sets method of constraint handler to free specific constraint data
2517  *
2518  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2519  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2520  *
2521  * @pre This method can be called if SCIP is in one of the following stages:
2522  * - \ref SCIP_STAGE_INIT
2523  * - \ref SCIP_STAGE_PROBLEM
2524  */
2525 extern
2527  SCIP* scip, /**< SCIP data structure */
2528  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2529  SCIP_DECL_CONSDELETE ((*consdelete)) /**< free specific constraint data */
2530  );
2531 
2532 /** sets method of constraint handler to transform constraint data into data belonging to the transformed problem
2533  *
2534  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2535  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2536  *
2537  * @pre This method can be called if SCIP is in one of the following stages:
2538  * - \ref SCIP_STAGE_INIT
2539  * - \ref SCIP_STAGE_PROBLEM
2540  */
2541 extern
2543  SCIP* scip, /**< SCIP data structure */
2544  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2545  SCIP_DECL_CONSTRANS ((*constrans)) /**< transform constraint data into data belonging to the transformed problem */
2546  );
2547 
2548 /** sets method of constraint handler to initialize LP with relaxations of "initial" constraints
2549  *
2550  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2551  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2552  *
2553  * @pre This method can be called if SCIP is in one of the following stages:
2554  * - \ref SCIP_STAGE_INIT
2555  * - \ref SCIP_STAGE_PROBLEM
2556  */
2557 extern
2559  SCIP* scip, /**< SCIP data structure */
2560  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2561  SCIP_DECL_CONSINITLP ((*consinitlp)) /**< initialize LP with relaxations of "initial" constraints */
2562  );
2563 
2564 /** sets propagation conflict resolving method of constraint handler
2565  *
2566  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2567  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2568  *
2569  * @pre This method can be called if SCIP is in one of the following stages:
2570  * - \ref SCIP_STAGE_INIT
2571  * - \ref SCIP_STAGE_PROBLEM
2572  */
2573 extern
2575  SCIP* scip, /**< SCIP data structure */
2576  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2577  SCIP_DECL_CONSRESPROP ((*consresprop)) /**< propagation conflict resolving method */
2578  );
2579 
2580 /** sets activation notification method of constraint handler
2581  *
2582  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2583  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2584  *
2585  * @pre This method can be called if SCIP is in one of the following stages:
2586  * - \ref SCIP_STAGE_INIT
2587  * - \ref SCIP_STAGE_PROBLEM
2588  */
2589 extern
2591  SCIP* scip, /**< SCIP data structure */
2592  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2593  SCIP_DECL_CONSACTIVE ((*consactive)) /**< activation notification method */
2594  );
2595 
2596 /** sets deactivation notification method of constraint handler
2597  *
2598  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2599  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2600  *
2601  * @pre This method can be called if SCIP is in one of the following stages:
2602  * - \ref SCIP_STAGE_INIT
2603  * - \ref SCIP_STAGE_PROBLEM
2604  */
2605 extern
2607  SCIP* scip, /**< SCIP data structure */
2608  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2609  SCIP_DECL_CONSDEACTIVE((*consdeactive)) /**< deactivation notification method */
2610  );
2611 
2612 /** sets enabling notification method of constraint handler
2613  *
2614  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2615  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2616  *
2617  * @pre This method can be called if SCIP is in one of the following stages:
2618  * - \ref SCIP_STAGE_INIT
2619  * - \ref SCIP_STAGE_PROBLEM
2620  */
2621 extern
2623  SCIP* scip, /**< SCIP data structure */
2624  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2625  SCIP_DECL_CONSENABLE ((*consenable)) /**< enabling notification method */
2626  );
2627 
2628 /** sets disabling notification method of constraint handler
2629  *
2630  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2631  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2632  *
2633  * @pre This method can be called if SCIP is in one of the following stages:
2634  * - \ref SCIP_STAGE_INIT
2635  * - \ref SCIP_STAGE_PROBLEM
2636  */
2637 extern
2639  SCIP* scip, /**< SCIP data structure */
2640  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2641  SCIP_DECL_CONSDISABLE ((*consdisable)) /**< disabling notification method */
2642  );
2643 
2644 /** sets variable deletion method of constraint handler
2645  *
2646  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2647  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2648  *
2649  * @pre This method can be called if SCIP is in one of the following stages:
2650  * - \ref SCIP_STAGE_INIT
2651  * - \ref SCIP_STAGE_PROBLEM
2652  */
2653 extern
2655  SCIP* scip, /**< SCIP data structure */
2656  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2657  SCIP_DECL_CONSDELVARS ((*consdelvars)) /**< variable deletion method */
2658  );
2659 
2660 /** sets constraint display method of constraint handler
2661  *
2662  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2663  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2664  *
2665  * @pre This method can be called if SCIP is in one of the following stages:
2666  * - \ref SCIP_STAGE_INIT
2667  * - \ref SCIP_STAGE_PROBLEM
2668  */
2669 extern
2671  SCIP* scip, /**< SCIP data structure */
2672  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2673  SCIP_DECL_CONSPRINT ((*consprint)) /**< constraint display method */
2674  );
2675 
2676 /** sets constraint parsing method of constraint handler
2677  *
2678  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2679  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2680  *
2681  * @pre This method can be called if SCIP is in one of the following stages:
2682  * - \ref SCIP_STAGE_INIT
2683  * - \ref SCIP_STAGE_PROBLEM
2684  */
2685 extern
2687  SCIP* scip, /**< SCIP data structure */
2688  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2689  SCIP_DECL_CONSPARSE ((*consparse)) /**< constraint parsing method */
2690  );
2691 
2692 /** sets constraint variable getter method of constraint handler
2693  *
2694  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2695  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2696  *
2697  * @pre This method can be called if SCIP is in one of the following stages:
2698  * - \ref SCIP_STAGE_INIT
2699  * - \ref SCIP_STAGE_PROBLEM
2700  */
2701 extern
2703  SCIP* scip, /**< SCIP data structure */
2704  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2705  SCIP_DECL_CONSGETVARS ((*consgetvars)) /**< constraint variable getter method */
2706  );
2707 
2708 /** sets constraint variable number getter method of constraint handler
2709  *
2710  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2711  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2712  *
2713  * @pre This method can be called if SCIP is in one of the following stages:
2714  * - \ref SCIP_STAGE_INIT
2715  * - \ref SCIP_STAGE_PROBLEM
2716  */
2717 extern
2719  SCIP* scip, /**< SCIP data structure */
2720  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2721  SCIP_DECL_CONSGETNVARS((*consgetnvars)) /**< constraint variable number getter method */
2722  );
2723 
2724 /** sets diving enforcement method of constraint handler
2725  *
2726  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2727  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2728  *
2729  * @pre This method can be called if SCIP is in one of the following stages:
2730  * - \ref SCIP_STAGE_INIT
2731  * - \ref SCIP_STAGE_PROBLEM
2732  */
2733 extern
2735  SCIP* scip, /**< SCIP data structure */
2736  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2737  SCIP_DECL_CONSGETDIVEBDCHGS((*consgetdivebdchgs)) /**< constraint handler diving solution enforcement method */
2738  );
2739 
2740 /** returns the constraint handler of the given name, or NULL if not existing */
2741 extern
2743  SCIP* scip, /**< SCIP data structure */
2744  const char* name /**< name of constraint handler */
2745  );
2746 
2747 /** returns the array of currently available constraint handlers */
2748 extern
2750  SCIP* scip /**< SCIP data structure */
2751  );
2752 
2753 /** returns the number of currently available constraint handlers */
2754 extern
2755 int SCIPgetNConshdlrs(
2756  SCIP* scip /**< SCIP data structure */
2757  );
2758 
2759 /** creates a conflict handler and includes it in SCIP
2760  *
2761  * @note method has all conflict handler callbacks as arguments and is thus changed every time a new
2762  * callback is added
2763  * in future releases; consider using SCIPincludeConflicthdlrBasic() and setter functions
2764  * if you seek for a method which is less likely to change in future releases
2765  */
2766 extern
2768  SCIP* scip, /**< SCIP data structure */
2769  const char* name, /**< name of conflict handler */
2770  const char* desc, /**< description of conflict handler */
2771  int priority, /**< priority of the conflict handler */
2772  SCIP_DECL_CONFLICTCOPY((*conflictcopy)), /**< copy method of conflict handler or NULL if you don't want to copy your plugin into sub-SCIPs */
2773  SCIP_DECL_CONFLICTFREE((*conflictfree)), /**< destructor of conflict handler */
2774  SCIP_DECL_CONFLICTINIT((*conflictinit)), /**< initialize conflict handler */
2775  SCIP_DECL_CONFLICTEXIT((*conflictexit)), /**< deinitialize conflict handler */
2776  SCIP_DECL_CONFLICTINITSOL((*conflictinitsol)),/**< solving process initialization method of conflict handler */
2777  SCIP_DECL_CONFLICTEXITSOL((*conflictexitsol)),/**< solving process deinitialization method of conflict handler */
2778  SCIP_DECL_CONFLICTEXEC((*conflictexec)), /**< conflict processing method of conflict handler */
2779  SCIP_CONFLICTHDLRDATA* conflicthdlrdata /**< conflict handler data */
2780  );
2781 
2782 /** creates a conflict handler and includes it in SCIP with its most fundamental callbacks. All non-fundamental
2783  * (or optional) callbacks as, e.g., init and exit callbacks, will be set to NULL.
2784  * Optional callbacks can be set via specific setter functions SCIPsetConflicthdlrCopy(), SCIPsetConflicthdlrFree(),
2785  * SCIPsetConflicthdlrInit(), SCIPsetConflicthdlrExit(), SCIPsetConflicthdlrInitsol(),
2786  * and SCIPsetConflicthdlrExitsol()
2787  *
2788  * @note if you want to set all callbacks with a single method call, consider using SCIPincludeConflicthdlr() instead
2789  */
2790 extern
2792  SCIP* scip, /**< SCIP data structure */
2793  SCIP_CONFLICTHDLR** conflicthdlrptr, /**< reference to a conflict handler pointer, or NULL */
2794  const char* name, /**< name of conflict handler */
2795  const char* desc, /**< description of conflict handler */
2796  int priority, /**< priority of the conflict handler */
2797  SCIP_DECL_CONFLICTEXEC((*conflictexec)), /**< conflict processing method of conflict handler */
2798  SCIP_CONFLICTHDLRDATA* conflicthdlrdata /**< conflict handler data */
2799  );
2800 
2801 /** set copy method of conflict handler */
2802 extern
2804  SCIP* scip, /**< SCIP data structure */
2805  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
2806  SCIP_DECL_CONFLICTCOPY((*conflictcopy)) /**< copy method of conflict handler */
2807  );
2808 
2809 /** set destructor of conflict handler */
2810 extern
2812  SCIP* scip, /**< SCIP data structure */
2813  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
2814  SCIP_DECL_CONFLICTFREE((*conflictfree)) /**< destructor of conflict handler */
2815  );
2816 
2817 /** set initialization method of conflict handler */
2818 extern
2820  SCIP* scip, /**< SCIP data structure */
2821  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
2822  SCIP_DECL_CONFLICTINIT((*conflictinit)) /**< initialize conflict handler */
2823  );
2824 
2825 /** set deinitialization method of conflict handler */
2826 extern
2828  SCIP* scip, /**< SCIP data structure */
2829  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
2830  SCIP_DECL_CONFLICTEXIT((*conflictexit)) /**< deinitialize conflict handler */
2831  );
2832 
2833 /** set solving process initialization method of conflict handler */
2834 extern
2836  SCIP* scip, /**< SCIP data structure */
2837  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
2838  SCIP_DECL_CONFLICTINITSOL((*conflictinitsol))/**< solving process initialization method of conflict handler */
2839  );
2840 
2841 /** set solving process deinitialization method of conflict handler */
2842 extern
2844  SCIP* scip, /**< SCIP data structure */
2845  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
2846  SCIP_DECL_CONFLICTEXITSOL((*conflictexitsol))/**< solving process deinitialization method of conflict handler */
2847  );
2848 
2849 /** returns the conflict handler of the given name, or NULL if not existing */
2850 extern
2852  SCIP* scip, /**< SCIP data structure */
2853  const char* name /**< name of conflict handler */
2854  );
2855 
2856 /** returns the array of currently available conflict handlers */
2857 extern
2859  SCIP* scip /**< SCIP data structure */
2860  );
2861 
2862 /** returns the number of currently available conflict handlers */
2863 extern
2865  SCIP* scip /**< SCIP data structure */
2866  );
2867 
2868 /** sets the priority of a conflict handler */
2869 extern
2871  SCIP* scip, /**< SCIP data structure */
2872  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
2873  int priority /**< new priority of the conflict handler */
2874  );
2875 
2876 /** creates a presolver and includes it in SCIP
2877  *
2878  * @note method has all presolver callbacks as arguments and is thus changed every time a new
2879  * callback is added
2880  * in future releases; consider using SCIPincludePresolBasic() and setter functions
2881  * if you seek for a method which is less likely to change in future releases
2882  */
2883 extern
2885  SCIP* scip, /**< SCIP data structure */
2886  const char* name, /**< name of presolver */
2887  const char* desc, /**< description of presolver */
2888  int priority, /**< priority of the presolver (>= 0: before, < 0: after constraint handlers) */
2889  int maxrounds, /**< maximal number of presolving rounds the presolver participates in (-1: no limit) */
2890  SCIP_PRESOLTIMING timing, /**< timing mask of the presolver */
2891  SCIP_DECL_PRESOLCOPY ((*presolcopy)), /**< copy method of presolver or NULL if you don't want to copy your plugin into sub-SCIPs */
2892  SCIP_DECL_PRESOLFREE ((*presolfree)), /**< destructor of presolver to free user data (called when SCIP is exiting) */
2893  SCIP_DECL_PRESOLINIT ((*presolinit)), /**< initialization method of presolver (called after problem was transformed) */
2894  SCIP_DECL_PRESOLEXIT ((*presolexit)), /**< deinitialization method of presolver (called before transformed problem is freed) */
2895  SCIP_DECL_PRESOLINITPRE((*presolinitpre)),/**< presolving initialization method of presolver (called when presolving is about to begin) */
2896  SCIP_DECL_PRESOLEXITPRE((*presolexitpre)),/**< presolving deinitialization method of presolver (called after presolving has been finished) */
2897  SCIP_DECL_PRESOLEXEC ((*presolexec)), /**< execution method of presolver */
2898  SCIP_PRESOLDATA* presoldata /**< presolver data */
2899  );
2900 
2901 /** Creates a presolver and includes it in SCIP with its fundamental callback. All non-fundamental (or optional)
2902  * callbacks as, e.g., init and exit callbacks, will be set to NULL. Optional callbacks can be set via specific setter
2903  * functions. These are SCIPsetPresolCopy(), SCIPsetPresolFree(), SCIPsetPresolInit(), SCIPsetPresolExit(),
2904  * SCIPsetPresolInitpre(), and SCIPsetPresolExitPre().
2905  *
2906  * @note if you want to set all callbacks with a single method call, consider using SCIPincludePresol() instead
2907  */
2908 extern
2910  SCIP* scip, /**< SCIP data structure */
2911  SCIP_PRESOL** presolptr, /**< reference to presolver, or NULL */
2912  const char* name, /**< name of presolver */
2913  const char* desc, /**< description of presolver */
2914  int priority, /**< priority of the presolver (>= 0: before, < 0: after constraint handlers) */
2915  int maxrounds, /**< maximal number of presolving rounds the presolver participates in (-1: no limit) */
2916  SCIP_PRESOLTIMING timing, /**< timing mask of the presolver */
2917  SCIP_DECL_PRESOLEXEC ((*presolexec)), /**< execution method of presolver */
2918  SCIP_PRESOLDATA* presoldata /**< presolver data */
2919  );
2920 
2921 /** sets copy method of presolver */
2922 extern
2924  SCIP* scip, /**< SCIP data structure */
2925  SCIP_PRESOL* presol, /**< presolver */
2926  SCIP_DECL_PRESOLCOPY ((*presolcopy)) /**< copy method of presolver or NULL if you don't want to copy your plugin into sub-SCIPs */
2927  );
2928 
2929 /** sets destructor method of presolver */
2930 extern
2932  SCIP* scip, /**< SCIP data structure */
2933  SCIP_PRESOL* presol, /**< presolver */
2934  SCIP_DECL_PRESOLFREE ((*presolfree)) /**< destructor of presolver */
2935  );
2936 
2937 /** sets initialization method of presolver */
2938 extern
2940  SCIP* scip, /**< SCIP data structure */
2941  SCIP_PRESOL* presol, /**< presolver */
2942  SCIP_DECL_PRESOLINIT ((*presolinit)) /**< initialize presolver */
2943  );
2944 
2945 /** sets deinitialization method of presolver */
2946 extern
2948  SCIP* scip, /**< SCIP data structure */
2949  SCIP_PRESOL* presol, /**< presolver */
2950  SCIP_DECL_PRESOLEXIT ((*presolexit)) /**< deinitialize presolver */
2951  );
2952 
2953 /** sets solving process initialization method of presolver */
2954 extern
2956  SCIP* scip, /**< SCIP data structure */
2957  SCIP_PRESOL* presol, /**< presolver */
2958  SCIP_DECL_PRESOLINITPRE ((*presolinitpre))/**< solving process initialization method of presolver */
2959  );
2960 
2961 /** sets solving process deinitialization method of presolver */
2963  SCIP* scip, /**< SCIP data structure */
2964  SCIP_PRESOL* presol, /**< presolver */
2965  SCIP_DECL_PRESOLEXITPRE ((*presolexitpre))/**< solving process deinitialization method of presolver */
2966  );
2967 
2968 /** returns the presolver of the given name, or NULL if not existing */
2969 extern
2971  SCIP* scip, /**< SCIP data structure */
2972  const char* name /**< name of presolver */
2973  );
2974 
2975 /** returns the array of currently available presolvers */
2976 extern
2978  SCIP* scip /**< SCIP data structure */
2979  );
2980 
2981 /** returns the number of currently available presolvers */
2982 extern
2983 int SCIPgetNPresols(
2984  SCIP* scip /**< SCIP data structure */
2985  );
2986 
2987 /** sets the priority of a presolver */
2988 extern
2990  SCIP* scip, /**< SCIP data structure */
2991  SCIP_PRESOL* presol, /**< presolver */
2992  int priority /**< new priority of the presolver */
2993  );
2994 
2995 /** creates a relaxation handler and includes it in SCIP
2996  *
2997  * @note method has all relaxation handler callbacks as arguments and is thus changed every time a new
2998  * callback is added
2999  * in future releases; consider using SCIPincludeRelaxBasic() and setter functions
3000  * if you seek for a method which is less likely to change in future releases
3001  */
3002 extern
3004  SCIP* scip, /**< SCIP data structure */
3005  const char* name, /**< name of relaxation handler */
3006  const char* desc, /**< description of relaxation handler */
3007  int priority, /**< priority of the relaxation handler (negative: after LP, non-negative: before LP) */
3008  int freq, /**< frequency for calling relaxation handler */
3009  SCIP_DECL_RELAXCOPY ((*relaxcopy)), /**< copy method of relaxation handler or NULL if you don't want to copy your plugin into sub-SCIPs */
3010  SCIP_DECL_RELAXFREE ((*relaxfree)), /**< destructor of relaxation handler */
3011  SCIP_DECL_RELAXINIT ((*relaxinit)), /**< initialize relaxation handler */
3012  SCIP_DECL_RELAXEXIT ((*relaxexit)), /**< deinitialize relaxation handler */
3013  SCIP_DECL_RELAXINITSOL((*relaxinitsol)), /**< solving process initialization method of relaxation handler */
3014  SCIP_DECL_RELAXEXITSOL((*relaxexitsol)), /**< solving process deinitialization method of relaxation handler */
3015  SCIP_DECL_RELAXEXEC ((*relaxexec)), /**< execution method of relaxation handler */
3016  SCIP_RELAXDATA* relaxdata /**< relaxation handler data */
3017  );
3018 
3019 /** creates a relaxation handler and includes it in SCIP. All non fundamental
3020  * (or optional) callbacks as, e.g., init and exit callbacks, will be set to NULL.
3021  * Optional callbacks can be set via specific setter functions, see SCIPsetRelaxInit(), SCIPsetRelaxExit(),
3022  * SCIPsetRelaxCopy(), SCIPsetRelaxFree(), SCIPsetRelaxInitsol(), and SCIPsetRelaxExitsol()
3023  *
3024  * @note if you want to set all callbacks with a single method call, consider using SCIPincludeRelax() instead
3025  */
3026 extern
3028  SCIP* scip, /**< SCIP data structure */
3029  SCIP_RELAX** relaxptr, /**< reference to relaxation pointer, or NULL */
3030  const char* name, /**< name of relaxation handler */
3031  const char* desc, /**< description of relaxation handler */
3032  int priority, /**< priority of the relaxation handler (negative: after LP, non-negative: before LP) */
3033  int freq, /**< frequency for calling relaxation handler */
3034  SCIP_DECL_RELAXEXEC ((*relaxexec)), /**< execution method of relaxation handler */
3035  SCIP_RELAXDATA* relaxdata /**< relaxation handler data */
3036  );
3037 
3038 /** sets copy method of relaxation handler */
3039 extern
3041  SCIP* scip, /**< SCIP data structure */
3042  SCIP_RELAX* relax, /**< relaxation handler */
3043  SCIP_DECL_RELAXCOPY ((*relaxcopy)) /**< copy method of relaxation handler or NULL if you don't want to copy your plugin into sub-SCIPs */
3044  );
3045 
3046 /** sets destructor method of relaxation handler */
3047 extern
3049  SCIP* scip, /**< SCIP data structure */
3050  SCIP_RELAX* relax, /**< relaxation handler */
3051  SCIP_DECL_RELAXFREE ((*relaxfree)) /**< destructor of relaxation handler */
3052  );
3053 
3054 /** sets initialization method of relaxation handler */
3055 extern
3057  SCIP* scip, /**< SCIP data structure */
3058  SCIP_RELAX* relax, /**< relaxation handler */
3059  SCIP_DECL_RELAXINIT ((*relaxinit)) /**< initialize relaxation handler */
3060  );
3061 
3062 /** sets deinitialization method of relaxation handler */
3063 extern
3065  SCIP* scip, /**< SCIP data structure */
3066  SCIP_RELAX* relax, /**< relaxation handler */
3067  SCIP_DECL_RELAXEXIT ((*relaxexit)) /**< deinitialize relaxation handler */
3068  );
3069 
3070 /** sets solving process initialization method of relaxation handler */
3071 extern
3073  SCIP* scip, /**< SCIP data structure */
3074  SCIP_RELAX* relax, /**< relaxation handler */
3075  SCIP_DECL_RELAXINITSOL((*relaxinitsol)) /**< solving process initialization method of relaxation handler */
3076  );
3077 
3078 /** sets solving process deinitialization method of relaxation handler */
3079 extern
3081  SCIP* scip, /**< SCIP data structure */
3082  SCIP_RELAX* relax, /**< relaxation handler */
3083  SCIP_DECL_RELAXEXITSOL((*relaxexitsol)) /**< solving process deinitialization method of relaxation handler */
3084  );
3085 
3086 /** returns the relaxation handler of the given name, or NULL if not existing */
3087 extern
3089  SCIP* scip, /**< SCIP data structure */
3090  const char* name /**< name of relaxation handler */
3091  );
3092 
3093 /** returns the array of currently available relaxation handlers */
3094 extern
3096  SCIP* scip /**< SCIP data structure */
3097  );
3098 
3099 /** returns the number of currently available relaxation handlers */
3100 extern
3101 int SCIPgetNRelaxs(
3102  SCIP* scip /**< SCIP data structure */
3103  );
3104 
3105 /** sets the priority of a relaxation handler*/
3106 extern
3108  SCIP* scip, /**< SCIP data structure */
3109  SCIP_RELAX* relax, /**< relaxation handler */
3110  int priority /**< new priority of the relaxation handler */
3111  );
3112 
3113 /** creates a separator and includes it in SCIP.
3114  *
3115  * @note method has all separator callbacks as arguments and is thus changed every time a new
3116  * callback is added
3117  * in future releases; consider using SCIPincludeSepaBasic() and setter functions
3118  * if you seek for a method which is less likely to change in future releases
3119  */
3120 extern
3122  SCIP* scip, /**< SCIP data structure */
3123  const char* name, /**< name of separator */
3124  const char* desc, /**< description of separator */
3125  int priority, /**< priority of separator (>= 0: before, < 0: after constraint handlers) */
3126  int freq, /**< frequency for calling separator */
3127  SCIP_Real maxbounddist, /**< maximal relative distance from current node's dual bound to primal bound compared
3128  * to best node's dual bound for applying separation */
3129  SCIP_Bool usessubscip, /**< does the separator use a secondary SCIP instance? */
3130  SCIP_Bool delay, /**< should separator be delayed, if other separators found cuts? */
3131  SCIP_DECL_SEPACOPY ((*sepacopy)), /**< copy method of separator or NULL if you don't want to copy your plugin into sub-SCIPs */
3132  SCIP_DECL_SEPAFREE ((*sepafree)), /**< destructor of separator */
3133  SCIP_DECL_SEPAINIT ((*sepainit)), /**< initialize separator */
3134  SCIP_DECL_SEPAEXIT ((*sepaexit)), /**< deinitialize separator */
3135  SCIP_DECL_SEPAINITSOL ((*sepainitsol)), /**< solving process initialization method of separator */
3136  SCIP_DECL_SEPAEXITSOL ((*sepaexitsol)), /**< solving process deinitialization method of separator */
3137  SCIP_DECL_SEPAEXECLP ((*sepaexeclp)), /**< LP solution separation method of separator */
3138  SCIP_DECL_SEPAEXECSOL ((*sepaexecsol)), /**< arbitrary primal solution separation method of separator */
3139  SCIP_SEPADATA* sepadata /**< separator data */
3140  );
3141 
3142 /** creates a separator and includes it in SCIP with its most fundamental callbacks. All non-fundamental
3143  * (or optional) callbacks as, e.g., init and exit callbacks, will be set to NULL.
3144  * Optional callbacks can be set via specific setter functions, see SCIPsetSepaInit(), SCIPsetSepaFree(),
3145  * SCIPsetSepaInitsol(), SCIPsetSepaExitsol(), SCIPsetSepaCopy(), SCIPsetExit().
3146  *
3147  * @note if you want to set all callbacks with a single method call, consider using SCIPincludeSepa() instead
3148  */
3149 extern
3151  SCIP* scip, /**< SCIP data structure */
3152  SCIP_SEPA** sepa, /**< reference to a separator, or NULL */
3153  const char* name, /**< name of separator */
3154  const char* desc, /**< description of separator */
3155  int priority, /**< priority of separator (>= 0: before, < 0: after constraint handlers) */
3156  int freq, /**< frequency for calling separator */
3157  SCIP_Real maxbounddist, /**< maximal relative distance from current node's dual bound to primal bound compared
3158  * to best node's dual bound for applying separation */
3159  SCIP_Bool usessubscip, /**< does the separator use a secondary SCIP instance? */
3160  SCIP_Bool delay, /**< should separator be delayed, if other separators found cuts? */
3161  SCIP_DECL_SEPAEXECLP ((*sepaexeclp)), /**< LP solution separation method of separator */
3162  SCIP_DECL_SEPAEXECSOL ((*sepaexecsol)), /**< arbitrary primal solution separation method of separator */
3163  SCIP_SEPADATA* sepadata /**< separator data */
3164  );
3165 
3166 /** sets copy method of separator */
3167 extern
3169  SCIP* scip, /**< SCIP data structure */
3170  SCIP_SEPA* sepa, /**< separator */
3171  SCIP_DECL_SEPACOPY ((*sepacopy)) /**< copy method of separator or NULL if you don't want to copy your plugin into sub-SCIPs */
3172  );
3173 
3174 /** sets destructor method of separator */
3175 extern
3177  SCIP* scip, /**< SCIP data structure */
3178  SCIP_SEPA* sepa, /**< separator */
3179  SCIP_DECL_SEPAFREE ((*sepafree)) /**< destructor of separator */
3180  );
3181 
3182 /** sets initialization method of separator */
3183 extern
3185  SCIP* scip, /**< SCIP data structure */
3186  SCIP_SEPA* sepa, /**< separator */
3187  SCIP_DECL_SEPAINIT ((*sepainit)) /**< initialize separator */
3188  );
3189 
3190 /** sets deinitialization method of separator */
3191 extern
3193  SCIP* scip, /**< SCIP data structure */
3194  SCIP_SEPA* sepa, /**< separator */
3195  SCIP_DECL_SEPAEXIT ((*sepaexit)) /**< deinitialize separator */
3196  );
3197 
3198 /** sets solving process initialization method of separator */
3199 extern
3201  SCIP* scip, /**< SCIP data structure */
3202  SCIP_SEPA* sepa, /**< separator */
3203  SCIP_DECL_SEPAINITSOL ((*sepainitsol)) /**< solving process initialization method of separator */
3204  );
3205 
3206 /** sets solving process deinitialization method of separator */
3207 extern
3209  SCIP* scip, /**< SCIP data structure */
3210  SCIP_SEPA* sepa, /**< separator */
3211  SCIP_DECL_SEPAEXITSOL ((*sepaexitsol)) /**< solving process deinitialization method of separator */
3212  );
3213 
3214 /** returns the separator of the given name, or NULL if not existing */
3215 extern
3217  SCIP* scip, /**< SCIP data structure */
3218  const char* name /**< name of separator */
3219  );
3220 
3221 /** returns the array of currently available separators */
3222 extern
3224  SCIP* scip /**< SCIP data structure */
3225  );
3226 
3227 /** returns the number of currently available separators */
3228 extern
3229 int SCIPgetNSepas(
3230  SCIP* scip /**< SCIP data structure */
3231  );
3232 
3233 /** sets the priority of a separator */
3234 extern
3236  SCIP* scip, /**< SCIP data structure */
3237  SCIP_SEPA* sepa, /**< separator */
3238  int priority /**< new priority of the separator */
3239  );
3240 
3241 /** creates a propagator and includes it in SCIP.
3242  *
3243  * @note method has all propagator callbacks as arguments and is thus changed every time a new
3244  * callback is added in future releases; consider using SCIPincludePropBasic() and setter functions
3245  * if you seek for a method which is less likely to change in future releases
3246  */
3247 extern
3249  SCIP* scip, /**< SCIP data structure */
3250  const char* name, /**< name of propagator */
3251  const char* desc, /**< description of propagator */
3252  int priority, /**< priority of the propagator (>= 0: before, < 0: after constraint handlers) */
3253  int freq, /**< frequency for calling propagator */
3254  SCIP_Bool delay, /**< should propagator be delayed, if other propagators found reductions? */
3255  SCIP_PROPTIMING timingmask, /**< positions in the node solving loop where propagator should be executed */
3256  int presolpriority, /**< presolving priority of the propagator (>= 0: before, < 0: after constraint handlers) */
3257  int presolmaxrounds, /**< maximal number of presolving rounds the propagator participates in (-1: no limit) */
3258  SCIP_PRESOLTIMING presoltiming, /**< timing mask of the propagator's presolving method */
3259  SCIP_DECL_PROPCOPY ((*propcopy)), /**< copy method of propagator or NULL if you don't want to copy your plugin into sub-SCIPs */
3260  SCIP_DECL_PROPFREE ((*propfree)), /**< destructor of propagator */
3261  SCIP_DECL_PROPINIT ((*propinit)), /**< initialize propagator */
3262  SCIP_DECL_PROPEXIT ((*propexit)), /**< deinitialize propagator */
3263  SCIP_DECL_PROPINITPRE ((*propinitpre)), /**< presolving initialization method of propagator */
3264  SCIP_DECL_PROPEXITPRE ((*propexitpre)), /**< presolving deinitialization method of propagator */
3265  SCIP_DECL_PROPINITSOL ((*propinitsol)), /**< solving process initialization method of propagator */
3266  SCIP_DECL_PROPEXITSOL ((*propexitsol)), /**< solving process deinitialization method of propagator */
3267  SCIP_DECL_PROPPRESOL ((*proppresol)), /**< presolving method */
3268  SCIP_DECL_PROPEXEC ((*propexec)), /**< execution method of propagator */
3269  SCIP_DECL_PROPRESPROP ((*propresprop)), /**< propagation conflict resolving method */
3270  SCIP_PROPDATA* propdata /**< propagator data */
3271  );
3272 
3273 /** creates a propagator and includes it in SCIP. All non-fundamental (or optional) callbacks will be set to NULL.
3274  * Optional callbacks can be set via specific setter functions, see SCIPsetPropInit(), SCIPsetPropExit(),
3275  * SCIPsetPropCopy(), SCIPsetPropFree(), SCIPsetPropInitsol(), SCIPsetPropExitsol(),
3276  * SCIPsetPropInitpre(), SCIPsetPropExitpre(), SCIPsetPropPresol(), and SCIPsetPropResprop().
3277  *
3278  * @note if you want to set all callbacks with a single method call, consider using SCIPincludeProp() instead
3279  */
3280 extern
3282  SCIP* scip, /**< SCIP data structure */
3283  SCIP_PROP** propptr, /**< reference to a propagator pointer, or NULL */
3284  const char* name, /**< name of propagator */
3285  const char* desc, /**< description of propagator */
3286  int priority, /**< priority of the propagator (>= 0: before, < 0: after constraint handlers) */
3287  int freq, /**< frequency for calling propagator */
3288  SCIP_Bool delay, /**< should propagator be delayed, if other propagators found reductions? */
3289  SCIP_PROPTIMING timingmask, /**< positions in the node solving loop where propagators should be executed */
3290  SCIP_DECL_PROPEXEC ((*propexec)), /**< execution method of propagator */
3291  SCIP_PROPDATA* propdata /**< propagator data */
3292  );
3293 
3294 /** sets copy method of propagator */
3295 extern
3297  SCIP* scip, /**< SCIP data structure */
3298  SCIP_PROP* prop, /**< propagator */
3299  SCIP_DECL_PROPCOPY ((*propcopy)) /**< copy method of propagator or NULL if you don't want to copy your plugin into sub-SCIPs */
3300  );
3301 
3302 /** sets destructor method of propagator */
3303 extern
3305  SCIP* scip, /**< SCIP data structure */
3306  SCIP_PROP* prop, /**< propagator */
3307  SCIP_DECL_PROPFREE ((*propfree)) /**< destructor of propagator */
3308  );
3309 
3310 /** sets initialization method of propagator */
3311 extern
3313  SCIP* scip, /**< SCIP data structure */
3314  SCIP_PROP* prop, /**< propagator */
3315  SCIP_DECL_PROPINIT ((*propinit)) /**< initialize propagator */
3316  );
3317 
3318 /** sets deinitialization method of propagator */
3319 extern
3321  SCIP* scip, /**< SCIP data structure */
3322  SCIP_PROP* prop, /**< propagator */
3323  SCIP_DECL_PROPEXIT ((*propexit)) /**< deinitialize propagator */
3324  );
3325 
3326 /** sets solving process initialization method of propagator */
3327 extern
3329  SCIP* scip, /**< SCIP data structure */
3330  SCIP_PROP* prop, /**< propagator */
3331  SCIP_DECL_PROPINITSOL((*propinitsol)) /**< solving process initialization method of propagator */
3332  );
3333 
3334 /** sets solving process deinitialization method of propagator */
3335 extern
3337  SCIP* scip, /**< SCIP data structure */
3338  SCIP_PROP* prop, /**< propagator */
3339  SCIP_DECL_PROPEXITSOL ((*propexitsol)) /**< solving process deinitialization method of propagator */
3340  );
3341 
3342 /** sets preprocessing initialization method of propagator */
3343 extern
3345  SCIP* scip, /**< SCIP data structure */
3346  SCIP_PROP* prop, /**< propagator */
3347  SCIP_DECL_PROPINITPRE((*propinitpre)) /**< preprocessing initialization method of propagator */
3348  );
3349 
3350 /** sets preprocessing deinitialization method of propagator */
3351 extern
3353  SCIP* scip, /**< SCIP data structure */
3354  SCIP_PROP* prop, /**< propagator */
3355  SCIP_DECL_PROPEXITPRE((*propexitpre)) /**< preprocessing deinitialization method of propagator */
3356  );
3357 
3358 /** sets presolving method of propagator */
3359 extern
3361  SCIP* scip, /**< SCIP data structure */
3362  SCIP_PROP* prop, /**< propagator */
3363  SCIP_DECL_PROPPRESOL((*proppresol)), /**< presolving method of propagator */
3364  int presolpriority, /**< presolving priority of the propagator (>= 0: before, < 0: after constraint handlers) */
3365  int presolmaxrounds, /**< maximal number of presolving rounds the propagator participates in (-1: no limit) */
3366  SCIP_PRESOLTIMING presoltiming /**< timing mask of the propagator's presolving method */
3367  );
3368 
3369 /** sets propagation conflict resolving callback of propagator */
3370 extern
3372  SCIP* scip, /**< SCIP data structure */
3373  SCIP_PROP* prop, /**< propagator */
3374  SCIP_DECL_PROPRESPROP ((*propresprop)) /**< propagation conflict resolving callback */
3375  );
3376 
3377 /** returns the propagator of the given name, or NULL if not existing */
3378 extern
3380  SCIP* scip, /**< SCIP data structure */
3381  const char* name /**< name of propagator */
3382  );
3383 
3384 /** returns the array of currently available propagators */
3385 extern
3387  SCIP* scip /**< SCIP data structure */
3388  );
3389 
3390 /** returns the number of currently available propagators */
3391 extern
3392 int SCIPgetNProps(
3393  SCIP* scip /**< SCIP data structure */
3394  );
3395 
3396 /** sets the priority of a propagator */
3397 extern
3399  SCIP* scip, /**< SCIP data structure */
3400  SCIP_PROP* prop, /**< propagator */
3401  int priority /**< new priority of the propagator */
3402  );
3403 
3404 /** sets the presolving priority of a propagator */
3405 extern
3407  SCIP* scip, /**< SCIP data structure */
3408  SCIP_PROP* prop, /**< propagator */
3409  int presolpriority /**< new presol priority of the propagator */
3410  );
3411 
3412 
3413 /** creates a primal heuristic and includes it in SCIP.
3414  *
3415  * @note method has all heuristic callbacks as arguments and is thus changed every time a new
3416  * callback is added in future releases; consider using SCIPincludeHeurBasic() and setter functions
3417  * if you seek for a method which is less likely to change in future releases
3418  *
3419  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
3420  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
3421  *
3422  * @pre This method can be called if @p scip is in one of the following stages:
3423  * - \ref SCIP_STAGE_INIT
3424  * - \ref SCIP_STAGE_PROBLEM
3425  */
3426 extern
3428  SCIP* scip, /**< SCIP data structure */
3429  const char* name, /**< name of primal heuristic */
3430  const char* desc, /**< description of primal heuristic */
3431  char dispchar, /**< display character of primal heuristic */
3432  int priority, /**< priority of the primal heuristic */
3433  int freq, /**< frequency for calling primal heuristic */
3434  int freqofs, /**< frequency offset for calling primal heuristic */
3435  int maxdepth, /**< maximal depth level to call heuristic at (-1: no limit) */
3436  unsigned int timingmask, /**< positions in the node solving loop where heuristic should be executed;
3437  * see definition of SCIP_HeurTiming for possible values */
3438  SCIP_Bool usessubscip, /**< does the heuristic use a secondary SCIP instance? */
3439  SCIP_DECL_HEURCOPY ((*heurcopy)), /**< copy method of primal heuristic or NULL if you don't want to copy your plugin into sub-SCIPs */
3440  SCIP_DECL_HEURFREE ((*heurfree)), /**< destructor of primal heuristic */
3441  SCIP_DECL_HEURINIT ((*heurinit)), /**< initialize primal heuristic */
3442  SCIP_DECL_HEUREXIT ((*heurexit)), /**< deinitialize primal heuristic */
3443  SCIP_DECL_HEURINITSOL ((*heurinitsol)), /**< solving process initialization method of primal heuristic */
3444  SCIP_DECL_HEUREXITSOL ((*heurexitsol)), /**< solving process deinitialization method of primal heuristic */
3445  SCIP_DECL_HEUREXEC ((*heurexec)), /**< execution method of primal heuristic */
3446  SCIP_HEURDATA* heurdata /**< primal heuristic data */
3447  );
3448 
3449 /** creates a primal heuristic and includes it in SCIP with its most fundamental callbacks.
3450  * All non-fundamental (or optional) callbacks
3451  * as, e. g., init and exit callbacks, will be set to NULL.
3452  * Optional callbacks can be set via specific setter functions, see SCIPsetHeurCopy(), SCIPsetHeurFree(),
3453  * SCIPsetHeurInit(), SCIPsetHeurExit(), SCIPsetHeurInitsol(), and SCIPsetHeurExitsol()
3454  *
3455 * @note if you want to set all callbacks with a single method call, consider using SCIPincludeHeur() instead
3456  */
3457 extern
3459  SCIP* scip, /**< SCIP data structure */
3460  SCIP_HEUR** heur, /**< pointer to the heuristic */
3461  const char* name, /**< name of primal heuristic */
3462  const char* desc, /**< description of primal heuristic */
3463  char dispchar, /**< display character of primal heuristic */
3464  int priority, /**< priority of the primal heuristic */
3465  int freq, /**< frequency for calling primal heuristic */
3466  int freqofs, /**< frequency offset for calling primal heuristic */
3467  int maxdepth, /**< maximal depth level to call heuristic at (-1: no limit) */
3468  unsigned int timingmask, /**< positions in the node solving loop where heuristic should be executed;
3469  * see definition of SCIP_HeurTiming for possible values */
3470  SCIP_Bool usessubscip, /**< does the heuristic use a secondary SCIP instance? */
3471  SCIP_DECL_HEUREXEC ((*heurexec)), /**< execution method of primal heuristic */
3472  SCIP_HEURDATA* heurdata /**< primal heuristic data */
3473  );
3474 
3475 /** sets copy method of primal heuristic */
3476 extern
3478  SCIP* scip, /**< SCIP data structure */
3479  SCIP_HEUR* heur, /**< primal heuristic */
3480  SCIP_DECL_HEURCOPY ((*heurcopy)) /**< copy method of primal heuristic or NULL if you don't want to copy your plugin into sub-SCIPs */
3481  );
3482 
3483 /** sets destructor method of primal heuristic */
3484 extern
3486  SCIP* scip, /**< SCIP data structure */
3487  SCIP_HEUR* heur, /**< primal heuristic */
3488  SCIP_DECL_HEURFREE ((*heurfree)) /**< destructor of primal heuristic */
3489  );
3490 
3491 /** sets initialization method of primal heuristic */
3492 extern
3494  SCIP* scip, /**< SCIP data structure */
3495  SCIP_HEUR* heur, /**< primal heuristic */
3496  SCIP_DECL_HEURINIT ((*heurinit)) /**< initialize primal heuristic */
3497  );
3498 
3499 /** sets deinitialization method of primal heuristic */
3500 extern
3502  SCIP* scip, /**< SCIP data structure */
3503  SCIP_HEUR* heur, /**< primal heuristic */
3504  SCIP_DECL_HEUREXIT ((*heurexit)) /**< deinitialize primal heuristic */
3505  );
3506 
3507 /** sets solving process initialization method of primal heuristic */
3508 extern
3510  SCIP* scip, /**< SCIP data structure */
3511  SCIP_HEUR* heur, /**< primal heuristic */
3512  SCIP_DECL_HEURINITSOL ((*heurinitsol)) /**< solving process initialization method of primal heuristic */
3513  );
3514 
3515 /** sets solving process deinitialization method of primal heuristic */
3516 extern
3518  SCIP* scip, /**< SCIP data structure */
3519  SCIP_HEUR* heur, /**< primal heuristic */
3520  SCIP_DECL_HEUREXITSOL ((*heurexitsol)) /**< solving process deinitialization method of primal heuristic */
3521  );
3522 
3523 /** returns the primal heuristic of the given name, or NULL if not existing */
3524 extern
3526  SCIP* scip, /**< SCIP data structure */
3527  const char* name /**< name of primal heuristic */
3528  );
3529 
3530 /** returns the array of currently available primal heuristics */
3531 extern
3533  SCIP* scip /**< SCIP data structure */
3534  );
3535 
3536 /** returns the number of currently available primal heuristics */
3537 extern
3538 int SCIPgetNHeurs(
3539  SCIP* scip /**< SCIP data structure */
3540  );
3541 
3542 /** sets the priority of a primal heuristic */
3543 extern
3545  SCIP* scip, /**< SCIP data structure */
3546  SCIP_HEUR* heur, /**< primal heuristic */
3547  int priority /**< new priority of the primal heuristic */
3548  );
3549 
3550 /** creates a tree compression and includes it in SCIP.
3551  *
3552  * @note method has all compression callbacks as arguments and is thus changed every time a new
3553  * callback is added in future releases; consider using SCIPincludeComprBasic() and setter functions
3554  * if you seek for a method which is less likely to change in future releases
3555  */
3556 extern
3558  SCIP* scip, /**< SCIP data structure */
3559  const char* name, /**< name of tree compression */
3560  const char* desc, /**< description of tree compression */
3561  int priority, /**< priority of the tree compression */
3562  int minnnodes, /**< minimal number of nodes to call compression */
3563  SCIP_DECL_COMPRCOPY ((*comprcopy)), /**< copy method of tree compression or NULL if you don't want to copy your plugin into sub-SCIPs */
3564  SCIP_DECL_COMPRFREE ((*comprfree)), /**< destructor of tree compression */
3565  SCIP_DECL_COMPRINIT ((*comprinit)), /**< initialize tree compression */
3566  SCIP_DECL_COMPREXIT ((*comprexit)), /**< deinitialize tree compression */
3567  SCIP_DECL_COMPRINITSOL ((*comprinitsol)), /**< solving process initialization method of tree compression */
3568  SCIP_DECL_COMPREXITSOL ((*comprexitsol)), /**< solving process deinitialization method of tree compression */
3569  SCIP_DECL_COMPREXEC ((*comprexec)), /**< execution method of tree compression */
3570  SCIP_COMPRDATA* comprdata /**< tree compression data */
3571  );
3572 
3573 /** creates a tree compression and includes it in SCIP with its most fundamental callbacks.
3574  * All non-fundamental (or optional) callbacks
3575  * as, e. g., init and exit callbacks, will be set to NULL.
3576  * Optional callbacks can be set via specific setter functions, see SCIPsetComprCopy(), SCIPsetComprFree(),
3577  * SCIPsetComprInit(), SCIPsetComprExit(), SCIPsetComprInitsol(), and SCIPsetComprExitsol()
3578  *
3579  * @note if you want to set all callbacks with a single method call, consider using SCIPincludeCompr() instead
3580  */
3581 extern
3583  SCIP* scip, /**< SCIP data structure */
3584  SCIP_COMPR** compr, /**< pointer to tree compression */
3585  const char* name, /**< name of tree compression */
3586  const char* desc, /**< description of tree compression */
3587  int priority, /**< priority of the tree compression */
3588  int minnnodes, /**< minimal number of nodes to call the compression */
3589  SCIP_DECL_COMPREXEC ((*comprexec)), /**< execution method of tree compression */
3590  SCIP_COMPRDATA* comprdata /**< tree compression data */
3591  );
3592 
3593 /** sets copy method of tree compression */
3594 extern
3596  SCIP* scip, /**< SCIP data structure */
3597  SCIP_COMPR* compr, /**< tree compression */
3598  SCIP_DECL_COMPRCOPY ((*comprcopy)) /**< copy method of tree compression or NULL if you don't want to copy your plugin into sub-SCIPs */
3599  );
3600 
3601 /** sets destructor method of tree compression */
3602 extern
3604  SCIP* scip, /**< SCIP data structure */
3605  SCIP_COMPR* compr, /**< tree compression */
3606  SCIP_DECL_COMPRFREE ((*comprfree)) /**< destructor of tree compression */
3607  );
3608 
3609 /** sets initialization method of tree compression */
3610 extern
3612  SCIP* scip, /**< SCIP data structure */
3613  SCIP_COMPR* compr, /**< tree compression */
3614  SCIP_DECL_COMPRINIT ((*comprinit)) /**< initialize tree compression */
3615  );
3616 
3617 /** sets deinitialization method of tree compression */
3618 extern
3620  SCIP* scip, /**< SCIP data structure */
3621  SCIP_COMPR* compr, /**< tree compression */
3622  SCIP_DECL_COMPREXIT ((*comprexit)) /**< deinitialize tree compression */
3623  );
3624 
3625 /** sets solving process initialization method of tree compression */
3626 extern
3628  SCIP* scip, /**< SCIP data structure */
3629  SCIP_COMPR* compr, /**< tree compression */
3630  SCIP_DECL_COMPRINITSOL ((*comprinitsol)) /**< solving process initialization method of tree compression */
3631  );
3632 
3633 /** sets solving process deinitialization method of tree compression */
3634 extern
3636  SCIP* scip, /**< SCIP data structure */
3637  SCIP_COMPR* compr, /**< tree compression */
3638  SCIP_DECL_COMPREXITSOL ((*comprexitsol)) /**< solving process deinitialization method of tree compression */
3639  );
3640 
3641 /** returns the tree compression of the given name, or NULL if not existing */
3642 extern
3644  SCIP* scip, /**< SCIP data structure */
3645  const char* name /**< name of tree compression */
3646  );
3647 
3648 /** returns the array of currently available tree compression */
3649 extern
3651  SCIP* scip /**< SCIP data structure */
3652  );
3653 
3654 /** returns the number of currently available tree compression */
3655 extern
3656 int SCIPgetNCompr(
3657  SCIP* scip /**< SCIP data structure */
3658  );
3659 
3660 /** set the priority of a tree compression method */
3662  SCIP* scip, /**< SCIP data structure */
3663  SCIP_COMPR* compr, /**< compression */
3664  int priority /**< new priority of the tree compression */
3665  );
3666 
3667 /** create a diving set associated with a primal heuristic. The primal heuristic needs to be included
3668  * before this method can be called. The diveset is installed in the array of divesets of the heuristic
3669  * and can be retrieved later by accessing SCIPheurGetDivesets()
3670  *
3671  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
3672  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
3673  *
3674  * @pre This method can be called if @p scip is in one of the following stages:
3675  * - \ref SCIP_STAGE_INIT
3676  * - \ref SCIP_STAGE_PROBLEM
3677  */
3678 extern
3680  SCIP* scip, /**< SCIP data structure */
3681  SCIP_DIVESET** diveset, /**< pointer to created diving heuristic settings, or NULL if not needed */
3682  SCIP_HEUR* heur, /**< primal heuristic to which the diveset belongs */
3683  const char* name, /**< name for the diveset, or NULL if the name of the heuristic should be used */
3684  SCIP_Real minreldepth, /**< minimal relative depth to start diving */
3685  SCIP_Real maxreldepth, /**< maximal relative depth to start diving */
3686  SCIP_Real maxlpiterquot, /**< maximal fraction of diving LP iterations compared to node LP iterations */
3687  SCIP_Real maxdiveubquot, /**< maximal quotient (curlowerbound - lowerbound)/(cutoffbound - lowerbound)
3688  * where diving is performed (0.0: no limit) */
3689  SCIP_Real maxdiveavgquot, /**< maximal quotient (curlowerbound - lowerbound)/(avglowerbound - lowerbound)
3690  * where diving is performed (0.0: no limit) */
3691  SCIP_Real maxdiveubquotnosol, /**< maximal UBQUOT when no solution was found yet (0.0: no limit) */
3692  SCIP_Real maxdiveavgquotnosol,/**< maximal AVGQUOT when no solution was found yet (0.0: no limit) */
3693  SCIP_Real lpresolvedomchgquot,/**< percentage of immediate domain changes during probing to trigger LP resolve */
3694  int lpsolvefreq, /**< LP solve frequency for (0: only if enough domain reductions are found by propagation)*/
3695  int maxlpiterofs, /**< additional number of allowed LP iterations */
3696  SCIP_Bool backtrack, /**< use one level of backtracking if infeasibility is encountered? */
3697  SCIP_Bool onlylpbranchcands, /**< should only LP branching candidates be considered instead of the slower but
3698  * more general constraint handler diving variable selection? */
3699  SCIP_Bool specificsos1score, /**< should SOS1 variables be scored by the diving heuristics specific score function;
3700  * otherwise use the score function of the SOS1 constraint handler */
3701  SCIP_DECL_DIVESETGETSCORE((*divesetgetscore)) /**< method for candidate score and rounding direction */
3702 
3703  );
3704 
3705 /** creates an event handler and includes it in SCIP
3706  *
3707  * @note method has all event handler callbacks as arguments and is thus changed every time a new
3708  * callback is added in future releases; consider using SCIPincludeEventhdlrBasic() and setter functions
3709  * if you seek for a method which is less likely to change in future releases
3710  */
3711 extern
3713  SCIP* scip, /**< SCIP data structure */
3714  const char* name, /**< name of event handler */
3715  const char* desc, /**< description of event handler */
3716  SCIP_DECL_EVENTCOPY ((*eventcopy)), /**< copy method of event handler or NULL if you don't want to copy your plugin into sub-SCIPs */
3717  SCIP_DECL_EVENTFREE ((*eventfree)), /**< destructor of event handler */
3718  SCIP_DECL_EVENTINIT ((*eventinit)), /**< initialize event handler */
3719  SCIP_DECL_EVENTEXIT ((*eventexit)), /**< deinitialize event handler */
3720  SCIP_DECL_EVENTINITSOL((*eventinitsol)), /**< solving process initialization method of event handler */
3721  SCIP_DECL_EVENTEXITSOL((*eventexitsol)), /**< solving process deinitialization method of event handler */
3722  SCIP_DECL_EVENTDELETE ((*eventdelete)), /**< free specific event data */
3723  SCIP_DECL_EVENTEXEC ((*eventexec)), /**< execute event handler */
3724  SCIP_EVENTHDLRDATA* eventhdlrdata /**< event handler data */
3725  );
3726 
3727 /** creates an event handler and includes it in SCIP with all its non-fundamental callbacks set
3728  * to NULL; if needed, non-fundamental callbacks can be set afterwards via setter functions
3729  * SCIPsetEventhdlrCopy(), SCIPsetEventhdlrFree(), SCIPsetEventhdlrInit(), SCIPsetEventhdlrExit(),
3730  * SCIPsetEventhdlrInitsol(), SCIPsetEventhdlrExitsol(), and SCIPsetEventhdlrDelete()
3731  *
3732  * @note if you want to set all callbacks with a single method call, consider using SCIPincludeEventhdlr() instead
3733  */
3734 extern
3736  SCIP* scip, /**< SCIP data structure */
3737  SCIP_EVENTHDLR** eventhdlrptr, /**< reference to an event handler, or NULL */
3738  const char* name, /**< name of event handler */
3739  const char* desc, /**< description of event handler */
3740  SCIP_DECL_EVENTEXEC ((*eventexec)), /**< execute event handler */
3741  SCIP_EVENTHDLRDATA* eventhdlrdata /**< event handler data */
3742  );
3743 
3744 /** sets copy callback of the event handler */
3745 extern
3747  SCIP* scip, /**< scip instance */
3748  SCIP_EVENTHDLR* eventhdlr, /**< event handler */
3749  SCIP_DECL_EVENTCOPY ((*eventcopy)) /**< copy callback of the event handler */
3750  );
3751 
3752 /** sets deinitialization callback of the event handler */
3753 extern
3755  SCIP* scip, /**< scip instance */
3756  SCIP_EVENTHDLR* eventhdlr, /**< event handler */
3757  SCIP_DECL_EVENTFREE ((*eventfree)) /**< deinitialization callback of the event handler */
3758  );
3759 
3760 /** sets initialization callback of the event handler */
3761 extern
3763  SCIP* scip, /**< scip instance */
3764  SCIP_EVENTHDLR* eventhdlr, /**< event handler */
3765  SCIP_DECL_EVENTINIT ((*eventinit)) /**< initialize event handler */
3766  );
3767 
3768 /** sets deinitialization callback of the event handler */
3769 extern
3771  SCIP* scip, /**< scip instance */
3772  SCIP_EVENTHDLR* eventhdlr, /**< event handler */
3773  SCIP_DECL_EVENTEXIT ((*eventexit)) /**< deinitialize event handler */
3774  );
3775 
3776 /** sets solving process initialization callback of the event handler */
3777 extern
3779  SCIP* scip, /**< scip instance */
3780  SCIP_EVENTHDLR* eventhdlr, /**< event handler */
3781  SCIP_DECL_EVENTINITSOL((*eventinitsol)) /**< solving process initialization callback of event handler */
3782  );
3783 
3784 /** sets solving process deinitialization callback of the event handler */
3785 extern
3787  SCIP* scip, /**< scip instance */
3788  SCIP_EVENTHDLR* eventhdlr, /**< event handler */
3789  SCIP_DECL_EVENTEXITSOL((*eventexitsol)) /**< solving process deinitialization callback of event handler */
3790  );
3791 
3792 /** sets callback of the event handler to free specific event data */
3793 extern
3795  SCIP* scip, /**< scip instance */
3796  SCIP_EVENTHDLR* eventhdlr, /**< event handler */
3797  SCIP_DECL_EVENTDELETE ((*eventdelete)) /**< free specific event data */
3798  );
3799 
3800 /** returns the event handler of the given name, or NULL if not existing */
3801 extern
3803  SCIP* scip, /**< SCIP data structure */
3804  const char* name /**< name of event handler */
3805  );
3806 
3807 /** returns the array of currently available event handlers */
3808 extern
3810  SCIP* scip /**< SCIP data structure */
3811  );
3812 
3813 /** returns the number of currently available event handlers */
3814 extern
3815 int SCIPgetNEventhdlrs(
3816  SCIP* scip /**< SCIP data structure */
3817  );
3818 
3819 /** creates a node selector and includes it in SCIP.
3820  *
3821  * @note method has all node selector callbacks as arguments and is thus changed every time a new
3822  * callback is added in future releases; consider using SCIPincludeNodeselBasic() and setter functions
3823  * if you seek for a method which is less likely to change in future releases
3824  */
3825 extern
3827  SCIP* scip, /**< SCIP data structure */
3828  const char* name, /**< name of node selector */
3829  const char* desc, /**< description of node selector */
3830  int stdpriority, /**< priority of the node selector in standard mode */
3831  int memsavepriority, /**< priority of the node selector in memory saving mode */
3832  SCIP_DECL_NODESELCOPY ((*nodeselcopy)), /**< copy method of node selector or NULL if you don't want to copy your plugin into sub-SCIPs */
3833  SCIP_DECL_NODESELFREE ((*nodeselfree)), /**< destructor of node selector */
3834  SCIP_DECL_NODESELINIT ((*nodeselinit)), /**< initialize node selector */
3835  SCIP_DECL_NODESELEXIT ((*nodeselexit)), /**< deinitialize node selector */
3836  SCIP_DECL_NODESELINITSOL((*nodeselinitsol)),/**< solving process initialization method of node selector */
3837  SCIP_DECL_NODESELEXITSOL((*nodeselexitsol)),/**< solving process deinitialization method of node selector */
3838  SCIP_DECL_NODESELSELECT((*nodeselselect)),/**< node selection method */
3839  SCIP_DECL_NODESELCOMP ((*nodeselcomp)), /**< node comparison method */
3840  SCIP_NODESELDATA* nodeseldata /**< node selector data */
3841  );
3842 
3843 /** Creates a node selector and includes it in SCIP with its most fundamental callbacks. All non-fundamental
3844  * (or optional) callbacks as, e.g., init and exit callbacks, will be set to NULL.
3845  * Optional callbacks can be set via specific setter functions, see SCIPsetNodeselCopy(), SCIPsetNodeselFree(),
3846  * SCIPsetNodeselInit(), SCIPsetNodeselExit(), SCIPsetNodeselInitsol(), and SCIPsetNodeselExitsol()
3847  *
3848  * @note if you want to set all callbacks with a single method call, consider using SCIPincludeNodesel() instead
3849  */
3850 extern
3852  SCIP* scip, /**< SCIP data structure */
3853  SCIP_NODESEL** nodesel, /**< reference to a node selector, or NULL */
3854  const char* name, /**< name of node selector */
3855  const char* desc, /**< description of node selector */
3856  int stdpriority, /**< priority of the node selector in standard mode */
3857  int memsavepriority, /**< priority of the node selector in memory saving mode */
3858  SCIP_DECL_NODESELSELECT((*nodeselselect)),/**< node selection method */
3859  SCIP_DECL_NODESELCOMP ((*nodeselcomp)), /**< node comparison method */
3860  SCIP_NODESELDATA* nodeseldata /**< node selector data */
3861  );
3862 
3863 /** sets copy method of node selector */
3864 extern
3866  SCIP* scip, /**< SCIP data structure */
3867  SCIP_NODESEL* nodesel, /**< node selector */
3868  SCIP_DECL_NODESELCOPY ((*nodeselcopy)) /**< copy method of node selector or NULL if you don't want to copy your plugin into sub-SCIPs */
3869  );
3870 
3871 /** sets destructor method of node selector */
3872 extern
3874  SCIP* scip, /**< SCIP data structure */
3875  SCIP_NODESEL* nodesel, /**< node selector */
3876  SCIP_DECL_NODESELFREE ((*nodeselfree)) /**< destructor of node selector */
3877  );
3878 
3879 /** sets initialization method of node selector */
3880 extern
3882  SCIP* scip, /**< SCIP data structure */
3883  SCIP_NODESEL* nodesel, /**< node selector */
3884  SCIP_DECL_NODESELINIT ((*nodeselinit)) /**< initialize node selector */
3885  );
3886 
3887 /** sets deinitialization method of node selector */
3888 extern
3890  SCIP* scip, /**< SCIP data structure */
3891  SCIP_NODESEL* nodesel, /**< node selector */
3892  SCIP_DECL_NODESELEXIT ((*nodeselexit)) /**< deinitialize node selector */
3893  );
3894 
3895 /** sets solving process initialization method of node selector */
3896 extern
3898  SCIP* scip, /**< SCIP data structure */
3899  SCIP_NODESEL* nodesel, /**< node selector */
3900  SCIP_DECL_NODESELINITSOL ((*nodeselinitsol))/**< solving process initialization method of node selector */
3901  );
3902 
3903 /** sets solving process deinitialization method of node selector */
3904 extern
3906  SCIP* scip, /**< SCIP data structure */
3907  SCIP_NODESEL* nodesel, /**< node selector */
3908  SCIP_DECL_NODESELEXITSOL ((*nodeselexitsol))/**< solving process deinitialization method of node selector */
3909  );
3910 
3911 /** returns the node selector of the given name, or NULL if not existing */
3912 extern
3914  SCIP* scip, /**< SCIP data structure */
3915  const char* name /**< name of node selector */
3916  );
3917 
3918 /** returns the array of currently available node selectors */
3919 extern
3921  SCIP* scip /**< SCIP data structure */
3922  );
3923 
3924 /** returns the number of currently available node selectors */
3925 extern
3926 int SCIPgetNNodesels(
3927  SCIP* scip /**< SCIP data structure */
3928  );
3929 
3930 /** sets the priority of a node selector in standard mode */
3931 extern
3933  SCIP* scip, /**< SCIP data structure */
3934  SCIP_NODESEL* nodesel, /**< node selector */
3935  int priority /**< new standard priority of the node selector */
3936  );
3937 
3938 /** sets the priority of a node selector in memory saving mode */
3939 extern
3941  SCIP* scip, /**< SCIP data structure */
3942  SCIP_NODESEL* nodesel, /**< node selector */
3943  int priority /**< new memory saving priority of the node selector */
3944  );
3945 
3946 /** returns the currently used node selector */
3947 extern
3949  SCIP* scip /**< SCIP data structure */
3950  );
3951 
3952 /** creates a branching rule and includes it in SCIP
3953  *
3954  * @note method has all branching rule callbacks as arguments and is thus changed every time a new
3955  * callback is added in future releases; consider using SCIPincludeBranchruleBasic() and setter functions
3956  * if you seek for a method which is less likely to change in future releases
3957  */
3958 extern
3960  SCIP* scip, /**< SCIP data structure */
3961  const char* name, /**< name of branching rule */
3962  const char* desc, /**< description of branching rule */
3963  int priority, /**< priority of the branching rule */
3964  int maxdepth, /**< maximal depth level, up to which this branching rule should be used (or -1) */
3965  SCIP_Real maxbounddist, /**< maximal relative distance from current node's dual bound to primal bound
3966  * compared to best node's dual bound for applying branching rule
3967  * (0.0: only on current best node, 1.0: on all nodes) */
3968  SCIP_DECL_BRANCHCOPY ((*branchcopy)), /**< copy method of branching rule or NULL if you don't want to copy your plugin into sub-SCIPs */
3969  SCIP_DECL_BRANCHFREE ((*branchfree)), /**< destructor of branching rule */
3970  SCIP_DECL_BRANCHINIT ((*branchinit)), /**< initialize branching rule */
3971  SCIP_DECL_BRANCHEXIT ((*branchexit)), /**< deinitialize branching rule */
3972  SCIP_DECL_BRANCHINITSOL((*branchinitsol)),/**< solving process initialization method of branching rule */
3973  SCIP_DECL_BRANCHEXITSOL((*branchexitsol)),/**< solving process deinitialization method of branching rule */
3974  SCIP_DECL_BRANCHEXECLP((*branchexeclp)), /**< branching execution method for fractional LP solutions */
3975  SCIP_DECL_BRANCHEXECEXT((*branchexecext)),/**< branching execution method for external candidates */
3976  SCIP_DECL_BRANCHEXECPS((*branchexecps)), /**< branching execution method for not completely fixed pseudo solutions */
3977  SCIP_BRANCHRULEDATA* branchruledata /**< branching rule data */
3978  );
3979 
3980 /** creates a branching rule and includes it in SCIP. All non-fundamental (or optional) callbacks will be set to NULL.
3981  * Optional callbacks can be set via specific setter functions, see SCIPsetBranchruleInit(), SCIPsetBranchruleExit(),
3982  * SCIPsetBranchruleCopy(), SCIPsetBranchruleFree(), SCIPsetBranchruleInitsol(), SCIPsetBranchruleExitsol(),
3983  * SCIPsetBranchruleExecLp(), SCIPsetBranchruleExecExt(), and SCIPsetBranchruleExecPs().
3984  *
3985  * @note if you want to set all callbacks with a single method call, consider using SCIPincludeBranchrule() instead
3986  */
3987 extern
3989  SCIP* scip, /**< SCIP data structure */
3990  SCIP_BRANCHRULE** branchruleptr, /**< pointer to branching rule, or NULL */
3991  const char* name, /**< name of branching rule */
3992  const char* desc, /**< description of branching rule */
3993  int priority, /**< priority of the branching rule */
3994  int maxdepth, /**< maximal depth level, up to which this branching rule should be used (or -1) */
3995  SCIP_Real maxbounddist, /**< maximal relative distance from current node's dual bound to primal bound
3996  * compared to best node's dual bound for applying branching rule
3997  * (0.0: only on current best node, 1.0: on all nodes) */
3998  SCIP_BRANCHRULEDATA* branchruledata /**< branching rule data */
3999  );
4000 
4001 /** sets copy method of branching rule */
4002 extern
4004  SCIP* scip, /**< SCIP data structure */
4005  SCIP_BRANCHRULE* branchrule, /**< branching rule */
4006  SCIP_DECL_BRANCHCOPY ((*branchcopy)) /**< copy method of branching rule or NULL if you don't want to copy your plugin into sub-SCIPs */
4007  );
4008 
4009 /** sets destructor method of branching rule */
4010 extern
4012  SCIP* scip, /**< SCIP data structure */
4013  SCIP_BRANCHRULE* branchrule, /**< branching rule */
4014  SCIP_DECL_BRANCHFREE ((*branchfree)) /**< destructor of branching rule */
4015  );
4016 
4017 /** sets initialization method of branching rule */
4018 extern
4020  SCIP* scip, /**< SCIP data structure */
4021  SCIP_BRANCHRULE* branchrule, /**< branching rule */
4022  SCIP_DECL_BRANCHINIT ((*branchinit)) /**< initialize branching rule */
4023  );
4024 
4025 /** sets deinitialization method of branching rule */
4026 extern
4028  SCIP* scip, /**< SCIP data structure */
4029  SCIP_BRANCHRULE* branchrule, /**< branching rule */
4030  SCIP_DECL_BRANCHEXIT ((*branchexit)) /**< deinitialize branching rule */
4031  );
4032 
4033 /** sets solving process initialization method of branching rule */
4034 extern
4036  SCIP* scip, /**< SCIP data structure */
4037  SCIP_BRANCHRULE* branchrule, /**< branching rule */
4038  SCIP_DECL_BRANCHINITSOL((*branchinitsol)) /**< solving process initialization method of branching rule */
4039  );
4040 
4041 /** sets solving process deinitialization method of branching rule */
4042 extern
4044  SCIP* scip, /**< SCIP data structure */
4045  SCIP_BRANCHRULE* branchrule, /**< branching rule */
4046  SCIP_DECL_BRANCHEXITSOL((*branchexitsol)) /**< solving process deinitialization method of branching rule */
4047  );
4048 
4049 /** sets branching execution method for fractional LP solutions */
4050 extern
4052  SCIP* scip, /**< SCIP data structure */
4053  SCIP_BRANCHRULE* branchrule, /**< branching rule */
4054  SCIP_DECL_BRANCHEXECLP((*branchexeclp)) /**< branching execution method for fractional LP solutions */
4055  );
4056 
4057 /** sets branching execution method for external candidates */
4058 extern
4060  SCIP* scip, /**< SCIP data structure */
4061  SCIP_BRANCHRULE* branchrule, /**< branching rule */
4062  SCIP_DECL_BRANCHEXECEXT((*branchexecext)) /**< branching execution method for external candidates */
4063  );
4064 
4065 /** sets branching execution method for not completely fixed pseudo solutions */
4066 extern
4068  SCIP* scip, /**< SCIP data structure */
4069  SCIP_BRANCHRULE* branchrule, /**< branching rule */
4070  SCIP_DECL_BRANCHEXECPS((*branchexecps)) /**< branching execution method for not completely fixed pseudo solutions */
4071  );
4072 
4073 /** returns the branching rule of the given name, or NULL if not existing */
4074 extern
4076  SCIP* scip, /**< SCIP data structure */
4077  const char* name /**< name of branching rule */
4078  );
4079 
4080 /** returns the array of currently available branching rules */
4081 extern
4083  SCIP* scip /**< SCIP data structure */
4084  );
4085 
4086 /** returns the number of currently available branching rules */
4087 extern
4089  SCIP* scip /**< SCIP data structure */
4090  );
4091 
4092 /** sets the priority of a branching rule */
4093 extern
4095  SCIP* scip, /**< SCIP data structure */
4096  SCIP_BRANCHRULE* branchrule, /**< branching rule */
4097  int priority /**< new priority of the branching rule */
4098  );
4099 
4100 /** sets maximal depth level, up to which this branching rule should be used (-1 for no limit) */
4101 extern
4103  SCIP* scip, /**< SCIP data structure */
4104  SCIP_BRANCHRULE* branchrule, /**< branching rule */
4105  int maxdepth /**< new maxdepth of the branching rule */
4106  );
4107 
4108 /** sets maximal relative distance from current node's dual bound to primal bound for applying branching rule */
4109 extern
4111  SCIP* scip, /**< SCIP data structure */
4112  SCIP_BRANCHRULE* branchrule, /**< branching rule */
4113  SCIP_Real maxbounddist /**< new maxbounddist of the branching rule */
4114  );
4115 
4116 /** creates a display column and includes it in SCIP */
4117 extern
4119  SCIP* scip, /**< SCIP data structure */
4120  const char* name, /**< name of display column */
4121  const char* desc, /**< description of display column */
4122  const char* header, /**< head line of display column */
4123  SCIP_DISPSTATUS dispstatus, /**< display activation status of display column */
4124  SCIP_DECL_DISPCOPY ((*dispcopy)), /**< copy method of display column or NULL if you don't want to copy your plugin into sub-SCIPs */
4125  SCIP_DECL_DISPFREE ((*dispfree)), /**< destructor of display column */
4126  SCIP_DECL_DISPINIT ((*dispinit)), /**< initialize display column */
4127  SCIP_DECL_DISPEXIT ((*dispexit)), /**< deinitialize display column */
4128  SCIP_DECL_DISPINITSOL ((*dispinitsol)), /**< solving process initialization method of display column */
4129  SCIP_DECL_DISPEXITSOL ((*dispexitsol)), /**< solving process deinitialization method of display column */
4130  SCIP_DECL_DISPOUTPUT ((*dispoutput)), /**< output method */
4131  SCIP_DISPDATA* dispdata, /**< display column data */
4132  int width, /**< width of display column (no. of chars used) */
4133  int priority, /**< priority of display column */
4134  int position, /**< relative position of display column */
4135  SCIP_Bool stripline /**< should the column be separated with a line from its right neighbor? */
4136  );
4137 
4138 /** returns the display column of the given name, or NULL if not existing */
4139 extern
4141  SCIP* scip, /**< SCIP data structure */
4142  const char* name /**< name of display column */
4143  );
4144 
4145 /** returns the array of currently available display columns */
4146 extern
4148  SCIP* scip /**< SCIP data structure */
4149  );
4150 
4151 /** returns the number of currently available display columns */
4152 extern
4153 int SCIPgetNDisps(
4154  SCIP* scip /**< SCIP data structure */
4155  );
4156 
4157 /** automatically selects display columns for being shown w.r.t. the display width parameter */
4158 extern
4160  SCIP* scip /**< SCIP data structure */
4161  );
4162 
4163 /** includes an NLPI in SCIP */
4164 extern
4166  SCIP* scip, /**< SCIP data structure */
4167  SCIP_NLPI* nlpi /**< NLPI data structure */
4168  );
4169 
4170 /** returns the NLPI of the given name, or NULL if not existing */
4171 extern
4173  SCIP* scip, /**< SCIP data structure */
4174  const char* name /**< name of NLPI */
4175  );
4176 
4177 /** returns the array of currently available NLPIs (sorted by priority) */
4178 extern
4180  SCIP* scip /**< SCIP data structure */
4181  );
4182 
4183 /** returns the number of currently available NLPIs */
4184 extern
4185 int SCIPgetNNlpis(
4186  SCIP* scip /**< SCIP data structure */
4187  );
4188 
4189 /** sets the priority of an NLPI */
4190 extern
4192  SCIP* scip, /**< SCIP data structure */
4193  SCIP_NLPI* nlpi, /**< NLPI */
4194  int priority /**< new priority of the NLPI */
4195  );
4196 
4197 /** includes information about an external code linked into the SCIP library */
4198 extern
4200  SCIP* scip, /**< SCIP data structure */
4201  const char* name, /**< name of external code */
4202  const char* description /**< description of external code, or NULL */
4203  );
4204 
4205 /** returns an array of names of currently included external codes */
4206 extern
4208  SCIP* scip /**< SCIP data structure */
4209  );
4210 
4211 /** returns an array of the descriptions of currently included external codes
4212  *
4213  * @note some descriptions may be NULL
4214  */
4215 extern
4217  SCIP* scip /**< SCIP data structure */
4218  );
4219 
4220 /** returns the number of currently included information on external codes */
4221 extern
4223  SCIP* scip /**< SCIP data structure */
4224  );
4225 
4226 /** prints information on external codes to a file stream via the message handler system
4227  *
4228  * @note If the message handler is set to a NULL pointer nothing will be printed
4229  */
4230 extern
4232  SCIP* scip, /**< SCIP data structure */
4233  FILE* file /**< output file (or NULL for standard output) */
4234  );
4235 
4236 /**@} */
4237 
4238 
4239 
4240 
4241 /*
4242  * user interactive dialog methods
4243  */
4244 
4245 /**@name User Interactive Dialog Methods */
4246 /**@{ */
4247 
4248 /** creates and includes dialog
4249  *
4250  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
4251  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4252  */
4253 extern
4255  SCIP* scip, /**< SCIP data structure */
4256  SCIP_DIALOG** dialog, /**< pointer to store the dialog */
4257  SCIP_DECL_DIALOGCOPY ((*dialogcopy)), /**< copy method of dialog or NULL if you don't want to copy your plugin into sub-SCIPs */
4258  SCIP_DECL_DIALOGEXEC ((*dialogexec)), /**< execution method of dialog */
4259  SCIP_DECL_DIALOGDESC ((*dialogdesc)), /**< description output method of dialog, or NULL */
4260  SCIP_DECL_DIALOGFREE ((*dialogfree)), /**< destructor of dialog to free user data, or NULL */
4261  const char* name, /**< name of dialog: command name appearing in parent's dialog menu */
4262  const char* desc, /**< description of dialog used if description output method is NULL */
4263  SCIP_Bool issubmenu, /**< is the dialog a submenu? */
4264  SCIP_DIALOGDATA* dialogdata /**< user defined dialog data */
4265  );
4266 
4267 /** returns if the dialog already exists
4268  *
4269  * @return TRUE is returned if the dialog exits, otherwise FALSE.
4270  */
4271 extern
4273  SCIP* scip, /**< SCIP data structure */
4274  SCIP_DIALOG* dialog /**< dialog */
4275  );
4276 
4277 /** captures a dialog
4278  *
4279  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4280  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4281  */
4282 extern
4284  SCIP* scip, /**< SCIP data structure */
4285  SCIP_DIALOG* dialog /**< dialog */
4286  );
4287 
4288 /** releases a dialog
4289  *
4290  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4291  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4292  */
4293 extern
4295  SCIP* scip, /**< SCIP data structure */
4296  SCIP_DIALOG** dialog /**< pointer to the dialog */
4297  );
4298 
4299 /** makes given dialog the root dialog of SCIP's interactive user shell; captures dialog and releases former root dialog
4300  *
4301  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4302  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4303  */
4304 extern
4306  SCIP* scip, /**< SCIP data structure */
4307  SCIP_DIALOG* dialog /**< dialog to be the root */
4308  );
4309 
4310 /** returns the root dialog of SCIP's interactive user shell
4311  *
4312  * @return the root dialog of SCIP's interactive user shell is returned.
4313  */
4314 extern
4316  SCIP* scip /**< SCIP data structure */
4317  );
4318 
4319 /** adds a sub dialog to the given dialog as menu entry and captures it
4320  *
4321  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4322  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4323  */
4324 extern
4326  SCIP* scip, /**< SCIP data structure */
4327  SCIP_DIALOG* dialog, /**< dialog to extend, or NULL for root dialog */
4328  SCIP_DIALOG* subdialog /**< subdialog to add as menu entry in dialog */
4329  );
4330 
4331 /** adds a single line of input which is treated as if the user entered the command line
4332  *
4333  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4334  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4335  */
4336 extern
4338  SCIP* scip, /**< SCIP data structure */
4339  const char* inputline /**< input line to add */
4340  );
4341 
4342 /** adds a single line of input to the command history which can be accessed with the cursor keys
4343  *
4344  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4345  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4346  */
4347 extern
4349  SCIP* scip, /**< SCIP data structure */
4350  const char* inputline /**< input line to add */
4351  );
4352 
4353 /** starts interactive mode of SCIP by executing the root dialog
4354  *
4355  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4356  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4357  *
4358  * @pre This method can be called if @p scip is in one of the following stages:
4359  * - \ref SCIP_STAGE_INIT
4360  * - \ref SCIP_STAGE_FREE
4361  *
4362  * @post After calling this method \SCIP reaches one of the following stages depending on if and when the
4363  * interactive shell was closed:
4364  * - \ref SCIP_STAGE_PROBLEM if the interactive shell was closed after the problem was created
4365  * - \ref SCIP_STAGE_TRANSFORMED if the interactive shell was closed after the problem was transformed
4366  * - \ref SCIP_STAGE_PRESOLVING if the interactive shell was closed during presolving
4367  * - \ref SCIP_STAGE_PRESOLVED if the interactive shell was closed after presolve
4368  * - \ref SCIP_STAGE_SOLVING if the interactive shell was closed during the tree search
4369  * - \ref SCIP_STAGE_SOLVED if the interactive shell was closed after the problem was solved
4370  * - \ref SCIP_STAGE_FREE if the interactive shell was closed after the problem was freed
4371  *
4372  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
4373  */
4374 extern
4376  SCIP* scip /**< SCIP data structure */
4377  );
4378 
4379 /**@} */
4380 
4381 
4382 
4383 
4384 /*
4385  * global problem methods
4386  */
4387 
4388 /**@name Global Problem Methods */
4389 /**@{ */
4390 
4391 /** creates empty problem and initializes all solving data structures (the objective sense is set to MINIMIZE)
4392  * If the problem type requires the use of variable pricers, these pricers should be added to the problem with calls
4393  * to SCIPactivatePricer(). These pricers are automatically deactivated, when the problem is freed.
4394  *
4395  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4396  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4397  *
4398  * @pre This method can be called if @p scip is in one of the following stages:
4399  * - \ref SCIP_STAGE_INIT
4400  * - \ref SCIP_STAGE_PROBLEM
4401  * - \ref SCIP_STAGE_TRANSFORMED
4402  * - \ref SCIP_STAGE_PRESOLVING
4403  * - \ref SCIP_STAGE_PRESOLVED
4404  * - \ref SCIP_STAGE_SOLVING
4405  * - \ref SCIP_STAGE_SOLVED
4406  * - \ref SCIP_STAGE_FREE
4407  *
4408  * @post After calling this method, \SCIP reaches the following stage:
4409  * - \ref SCIP_STAGE_PROBLEM
4410  */
4411 extern
4413  SCIP* scip, /**< SCIP data structure */
4414  const char* name, /**< problem name */
4415  SCIP_DECL_PROBDELORIG ((*probdelorig)), /**< frees user data of original problem */
4416  SCIP_DECL_PROBTRANS ((*probtrans)), /**< creates user data of transformed problem by transforming original user data */
4417  SCIP_DECL_PROBDELTRANS((*probdeltrans)), /**< frees user data of transformed problem */
4418  SCIP_DECL_PROBINITSOL ((*probinitsol)), /**< solving process initialization method of transformed data */
4419  SCIP_DECL_PROBEXITSOL ((*probexitsol)), /**< solving process deinitialization method of transformed data */
4420  SCIP_DECL_PROBCOPY ((*probcopy)), /**< copies user data if you want to copy it to a subscip, or NULL */
4421  SCIP_PROBDATA* probdata /**< user problem data set by the reader */
4422  );
4423 
4424 /** creates empty problem and initializes all solving data structures (the objective sense is set to MINIMIZE)
4425  * all callback methods will be set to NULL and can be set afterwards, if needed, via SCIPsetProbDelorig(),
4426  * SCIPsetProbTrans(), SCIPsetProbDeltrans(), SCIPsetProbInitsol(), SCIPsetProbExitsol(), and
4427  * SCIPsetProbCopy()
4428  * If the problem type requires the use of variable pricers, these pricers should be added to the problem with calls
4429  * to SCIPactivatePricer(). These pricers are automatically deactivated, when the problem is freed.
4430  *
4431  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4432  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4433  *
4434  * @pre This method can be called if @p scip is in one of the following stages:
4435  * - \ref SCIP_STAGE_INIT
4436  * - \ref SCIP_STAGE_PROBLEM
4437  * - \ref SCIP_STAGE_TRANSFORMED
4438  * - \ref SCIP_STAGE_PRESOLVING
4439  * - \ref SCIP_STAGE_PRESOLVED
4440  * - \ref SCIP_STAGE_SOLVING
4441  * - \ref SCIP_STAGE_SOLVED
4442  * - \ref SCIP_STAGE_FREE
4443  *
4444  * @post After calling this method, \SCIP reaches the following stage:
4445  * - \ref SCIP_STAGE_PROBLEM
4446  */
4447 extern
4449  SCIP* scip, /**< SCIP data structure */
4450  const char* name /**< problem name */
4451  );
4452 
4453 /** sets callback to free user data of original problem
4454  *
4455  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4456  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4457  *
4458  * @pre This method can be called if @p scip is in one of the following stages:
4459  * - \ref SCIP_STAGE_PROBLEM
4460  */
4462  SCIP* scip, /**< SCIP data structure */
4463  SCIP_DECL_PROBDELORIG ((*probdelorig)) /**< frees user data of original problem */
4464  );
4465 
4466 /** sets callback to create user data of transformed problem by transforming original user data
4467  *
4468  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4469  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4470  *
4471  * @pre This method can be called if @p scip is in one of the following stages:
4472  * - \ref SCIP_STAGE_PROBLEM
4473  */
4474 extern
4476  SCIP* scip, /**< SCIP data structure */
4477  SCIP_DECL_PROBTRANS ((*probtrans)) /**< creates user data of transformed problem by transforming original user data */
4478  );
4479 
4480 /** sets callback to free user data of transformed problem
4481  *
4482  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4483  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4484  *
4485  * @pre This method can be called if @p scip is in one of the following stages:
4486  * - \ref SCIP_STAGE_PROBLEM
4487  */
4488 extern
4490  SCIP* scip, /**< SCIP data structure */
4491  SCIP_DECL_PROBDELTRANS((*probdeltrans)) /**< frees user data of transformed problem */
4492  );
4493 
4494 /** sets solving process initialization callback of transformed data
4495  *
4496  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4497  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4498  *
4499  * @pre This method can be called if @p scip is in one of the following stages:
4500  * - \ref SCIP_STAGE_PROBLEM
4501  */
4502 extern
4504  SCIP* scip, /**< SCIP data structure */
4505  SCIP_DECL_PROBINITSOL ((*probinitsol)) /**< solving process initialization method of transformed data */
4506  );
4507 
4508 /** sets solving process deinitialization callback of transformed data
4509  *
4510  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4511  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4512  *
4513  * @pre This method can be called if @p scip is in one of the following stages:
4514  * - \ref SCIP_STAGE_PROBLEM
4515  */
4516 extern
4518  SCIP* scip, /**< SCIP data structure */
4519  SCIP_DECL_PROBEXITSOL ((*probexitsol)) /**< solving process deinitialization method of transformed data */
4520  );
4521 
4522 /** sets callback to copy user data to a subscip
4523  *
4524  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4525  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4526  *
4527  * @pre This method can be called if @p scip is in one of the following stages:
4528  * - \ref SCIP_STAGE_PROBLEM
4529  */
4530 extern
4532  SCIP* scip, /**< SCIP data structure */
4533  SCIP_DECL_PROBCOPY ((*probcopy)) /**< copies user data if you want to copy it to a subscip, or NULL */
4534  );
4535 
4536 /** reads problem from file and initializes all solving data structures
4537  *
4538  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4539  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4540  *
4541  * @pre This method can be called if @p scip is in one of the following stages:
4542  * - \ref SCIP_STAGE_INIT
4543  * - \ref SCIP_STAGE_PROBLEM
4544  * - \ref SCIP_STAGE_TRANSFORMED
4545  * - \ref SCIP_STAGE_INITPRESOLVE
4546  * - \ref SCIP_STAGE_PRESOLVING
4547  * - \ref SCIP_STAGE_EXITPRESOLVE
4548  * - \ref SCIP_STAGE_PRESOLVED
4549  * - \ref SCIP_STAGE_SOLVING
4550  * - \ref SCIP_STAGE_EXITSOLVE
4551  *
4552  * @post After the method was called, \SCIP is in one of the following stages:
4553  * -\ref SCIP_STAGE_INIT if reading failed (usually, when a SCIP_READERROR occurs)
4554  * - ref SCIP_STAGE_PROBLEM if the problem file was successfully read
4555  */
4556 extern
4558  SCIP* scip, /**< SCIP data structure */
4559  const char* filename, /**< problem file name */
4560  const char* extension /**< extension of the desired file reader,
4561  * or NULL if file extension should be used */
4562  );
4563 
4564 /** writes original problem to file
4565  *
4566  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4567  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4568  *
4569  * @pre This method can be called if @p scip is in one of the following stages:
4570  * - \ref SCIP_STAGE_PROBLEM
4571  * - \ref SCIP_STAGE_TRANSFORMING
4572  * - \ref SCIP_STAGE_TRANSFORMED
4573  * - \ref SCIP_STAGE_INITPRESOLVE
4574  * - \ref SCIP_STAGE_PRESOLVING
4575  * - \ref SCIP_STAGE_EXITPRESOLVE
4576  * - \ref SCIP_STAGE_PRESOLVED
4577  * - \ref SCIP_STAGE_INITSOLVE
4578  * - \ref SCIP_STAGE_SOLVING
4579  * - \ref SCIP_STAGE_SOLVED
4580  * - \ref SCIP_STAGE_EXITSOLVE
4581  * - \ref SCIP_STAGE_FREETRANS
4582  */
4583 extern
4585  SCIP* scip, /**< SCIP data structure */
4586  const char* filename, /**< output file (or NULL for standard output) */
4587  const char* extension, /**< extension of the desired file reader,
4588  * or NULL if file extension should be used */
4589  SCIP_Bool genericnames /**< use generic variable and constraint names? */
4590  );
4591 
4592 /** writes transformed problem which are valid in the current node to file
4593  *
4594  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4595  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4596  *
4597  * @pre This method can be called if @p scip is in one of the following stages:
4598  * - \ref SCIP_STAGE_TRANSFORMED
4599  * - \ref SCIP_STAGE_INITPRESOLVE
4600  * - \ref SCIP_STAGE_PRESOLVING
4601  * - \ref SCIP_STAGE_EXITPRESOLVE
4602  * - \ref SCIP_STAGE_PRESOLVED
4603  * - \ref SCIP_STAGE_INITSOLVE
4604  * - \ref SCIP_STAGE_SOLVING
4605  * - \ref SCIP_STAGE_SOLVED
4606  * - \ref SCIP_STAGE_EXITSOLVE
4607  *
4608  * @note If you want the write all constraints (including the once which are redundant for example), you need to set
4609  * the parameter <write/allconss> to TRUE
4610  */
4611 extern
4613  SCIP* scip, /**< SCIP data structure */
4614  const char* filename, /**< output file (or NULL for standard output) */
4615  const char* extension, /**< extension of the desired file reader,
4616  * or NULL if file extension should be used */
4617  SCIP_Bool genericnames /**< using generic variable and constraint names? */
4618  );
4619 
4620 /** frees problem and solution process data
4621  *
4622  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4623  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4624  *
4625  * @pre This method can be called if @p scip is in one of the following stages:
4626  * - \ref SCIP_STAGE_INIT
4627  * - \ref SCIP_STAGE_PROBLEM
4628  * - \ref SCIP_STAGE_TRANSFORMED
4629  * - \ref SCIP_STAGE_PRESOLVING
4630  * - \ref SCIP_STAGE_PRESOLVED
4631  * - \ref SCIP_STAGE_SOLVING
4632  * - \ref SCIP_STAGE_SOLVED
4633  * - \ref SCIP_STAGE_FREE
4634  *
4635  * @post After this method was called, SCIP is in the following stage:
4636  * - \ref SCIP_STAGE_INIT
4637  */
4638 extern
4640  SCIP* scip /**< SCIP data structure */
4641  );
4642 
4643 /** permutes parts of the problem data structure
4644  *
4645  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4646  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4647  *
4648  * @pre This method can be called if @p scip is in one of the following stages:
4649  * - \ref SCIP_STAGE_PROBLEM
4650  * - \ref SCIP_STAGE_TRANSFORMED
4651  */
4652 extern
4654  SCIP* scip, /**< SCIP data structure */
4655  unsigned int randseed, /**< seed value for random generator */
4656  SCIP_Bool permuteconss, /**< should the list of constraints in each constraint handler be permuted? */
4657  SCIP_Bool permutebinvars, /**< should the list of binary variables be permuted? */
4658  SCIP_Bool permuteintvars, /**< should the list of integer variables be permuted? */
4659  SCIP_Bool permuteimplvars, /**< should the list of implicit integer variables be permuted? */
4660  SCIP_Bool permutecontvars /**< should the list of continuous integer variables be permuted? */
4661  );
4662 
4663 /** gets user problem data
4664  *
4665  * @return a SCIP_PROBDATA pointer, or NULL if no problem data was allocated
4666  *
4667  * @pre This method can be called if @p scip is in one of the following stages:
4668  * - \ref SCIP_STAGE_PROBLEM
4669  * - \ref SCIP_STAGE_TRANSFORMING
4670  * - \ref SCIP_STAGE_TRANSFORMED
4671  * - \ref SCIP_STAGE_INITPRESOLVE
4672  * - \ref SCIP_STAGE_PRESOLVING
4673  * - \ref SCIP_STAGE_EXITPRESOLVE
4674  * - \ref SCIP_STAGE_PRESOLVED
4675  * - \ref SCIP_STAGE_INITSOLVE
4676  * - \ref SCIP_STAGE_SOLVING
4677  * - \ref SCIP_STAGE_SOLVED
4678  * - \ref SCIP_STAGE_EXITSOLVE
4679  * - \ref SCIP_STAGE_FREETRANS
4680  */
4681 extern
4683  SCIP* scip /**< SCIP data structure */
4684  );
4685 
4686 /** sets user problem data
4687  *
4688  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4689  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4690  *
4691  * @pre This method can be called if @p scip is in one of the following stages:
4692  * - \ref SCIP_STAGE_PROBLEM
4693  * - \ref SCIP_STAGE_TRANSFORMING
4694  * - \ref SCIP_STAGE_TRANSFORMED
4695  * - \ref SCIP_STAGE_INITPRESOLVE
4696  * - \ref SCIP_STAGE_PRESOLVING
4697  * - \ref SCIP_STAGE_EXITPRESOLVE
4698  * - \ref SCIP_STAGE_PRESOLVED
4699  * - \ref SCIP_STAGE_INITSOLVE
4700  * - \ref SCIP_STAGE_SOLVING
4701  * - \ref SCIP_STAGE_SOLVED
4702  * - \ref SCIP_STAGE_EXITSOLVE
4703  * - \ref SCIP_STAGE_FREETRANS
4704  */
4705 extern
4707  SCIP* scip, /**< SCIP data structure */
4708  SCIP_PROBDATA* probdata /**< user problem data to use */
4709  );
4710 
4711 /** returns name of the current problem instance
4712  *
4713  * @return name of the current problem instance
4714  *
4715  * @pre This method can be called if @p scip is in one of the following stages:
4716  * - \ref SCIP_STAGE_PROBLEM
4717  * - \ref SCIP_STAGE_TRANSFORMING
4718  * - \ref SCIP_STAGE_TRANSFORMED
4719  * - \ref SCIP_STAGE_INITPRESOLVE
4720  * - \ref SCIP_STAGE_PRESOLVING
4721  * - \ref SCIP_STAGE_EXITPRESOLVE
4722  * - \ref SCIP_STAGE_PRESOLVED
4723  * - \ref SCIP_STAGE_INITSOLVE
4724  * - \ref SCIP_STAGE_SOLVING
4725  * - \ref SCIP_STAGE_SOLVED
4726  * - \ref SCIP_STAGE_EXITSOLVE
4727  * - \ref SCIP_STAGE_FREETRANS
4728  */
4729 extern
4730 const char* SCIPgetProbName(
4731  SCIP* scip /**< SCIP data structure */
4732  );
4733 
4734 /** sets name of the current problem instance
4735  *
4736  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4737  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4738  *
4739  * @pre This method can be called if @p scip is in one of the following stages:
4740  * - \ref SCIP_STAGE_PROBLEM
4741  * - \ref SCIP_STAGE_TRANSFORMING
4742  * - \ref SCIP_STAGE_TRANSFORMED
4743  * - \ref SCIP_STAGE_INITPRESOLVE
4744  * - \ref SCIP_STAGE_PRESOLVING
4745  * - \ref SCIP_STAGE_EXITPRESOLVE
4746  * - \ref SCIP_STAGE_PRESOLVED
4747  * - \ref SCIP_STAGE_INITSOLVE
4748  * - \ref SCIP_STAGE_SOLVING
4749  * - \ref SCIP_STAGE_SOLVED
4750  * - \ref SCIP_STAGE_EXITSOLVE
4751  * - \ref SCIP_STAGE_FREETRANS
4752  */
4753 extern
4755  SCIP* scip, /**< SCIP data structure */
4756  const char* name /**< name to be set */
4757  );
4758 
4759 /** returns objective sense of original problem
4760  *
4761  * @return objective sense of original problem
4762  *
4763  * @pre This method can be called if @p scip is in one of the following stages:
4764  * - \ref SCIP_STAGE_PROBLEM
4765  * - \ref SCIP_STAGE_TRANSFORMING
4766  * - \ref SCIP_STAGE_TRANSFORMED
4767  * - \ref SCIP_STAGE_INITPRESOLVE
4768  * - \ref SCIP_STAGE_PRESOLVING
4769  * - \ref SCIP_STAGE_EXITPRESOLVE
4770  * - \ref SCIP_STAGE_PRESOLVED
4771  * - \ref SCIP_STAGE_INITSOLVE
4772  * - \ref SCIP_STAGE_SOLVING
4773  * - \ref SCIP_STAGE_SOLVED
4774  * - \ref SCIP_STAGE_EXITSOLVE
4775  * - \ref SCIP_STAGE_FREETRANS
4776  */
4777 extern
4779  SCIP* scip /**< SCIP data structure */
4780  );
4781 
4782 /** sets objective sense of problem
4783  *
4784  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4785  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4786  *
4787  * @pre This method can be called if @p scip is in one of the following stages:
4788  * - \ref SCIP_STAGE_PROBLEM
4789  */
4790 extern
4792  SCIP* scip, /**< SCIP data structure */
4793  SCIP_OBJSENSE objsense /**< new objective sense */
4794  );
4795 
4796 /** adds offset of objective function
4797  *
4798  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4799  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4800  *
4801  * @pre This method can be called if @p scip is in one of the following stages:
4802  * - \ref SCIP_STAGE_PRESOLVING
4803  */
4804 extern
4806  SCIP* scip, /**< SCIP data structure */
4807  SCIP_Real addval /**< value to add to objective offset */
4808  );
4809 
4810 /** adds offset of objective function to original problem and to all existing solution in original space
4811  *
4812  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4813  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4814  *
4815  * @pre This method can be called if @p scip is in one of the following stages:
4816  * - \ref SCIP_STAGE_PROBLEM
4817  */
4818 extern
4820  SCIP* scip, /**< SCIP data structure */
4821  SCIP_Real addval /**< value to add to objective offset */
4822  );
4823 
4824 /** returns the objective offset of the original problem
4825  *
4826  * @return the objective offset of the original problem
4827  *
4828  * @pre This method can be called if @p scip is in one of the following stages:
4829  * - \ref SCIP_STAGE_PROBLEM
4830  * - \ref SCIP_STAGE_TRANSFORMING
4831  * - \ref SCIP_STAGE_TRANSFORMED
4832  * - \ref SCIP_STAGE_INITPRESOLVE
4833  * - \ref SCIP_STAGE_PRESOLVING
4834  * - \ref SCIP_STAGE_EXITPRESOLVE
4835  * - \ref SCIP_STAGE_PRESOLVED
4836  * - \ref SCIP_STAGE_INITSOLVE
4837  * - \ref SCIP_STAGE_SOLVING
4838  * - \ref SCIP_STAGE_SOLVED
4839  */
4840 extern
4842  SCIP* scip /**< SCIP data structure */
4843  );
4844 
4845 /** returns the objective scale of the original problem
4846  *
4847  * @return the objective scale of the original problem
4848  *
4849  * @pre This method can be called if @p scip is in one of the following stages:
4850  * - \ref SCIP_STAGE_PROBLEM
4851  * - \ref SCIP_STAGE_TRANSFORMING
4852  * - \ref SCIP_STAGE_TRANSFORMED
4853  * - \ref SCIP_STAGE_INITPRESOLVE
4854  * - \ref SCIP_STAGE_PRESOLVING
4855  * - \ref SCIP_STAGE_EXITPRESOLVE
4856  * - \ref SCIP_STAGE_PRESOLVED
4857  * - \ref SCIP_STAGE_INITSOLVE
4858  * - \ref SCIP_STAGE_SOLVING
4859  * - \ref SCIP_STAGE_SOLVED
4860  */
4861 extern
4863  SCIP* scip /**< SCIP data structure */
4864  );
4865 
4866 /** returns the objective offset of the transformed problem
4867  *
4868  * @return the objective offset of the transformed problem
4869  *
4870  * @pre This method can be called if @p scip is in one of the following stages:
4871  * - \ref SCIP_STAGE_TRANSFORMED
4872  * - \ref SCIP_STAGE_INITPRESOLVE
4873  * - \ref SCIP_STAGE_PRESOLVING
4874  * - \ref SCIP_STAGE_EXITPRESOLVE
4875  * - \ref SCIP_STAGE_PRESOLVED
4876  * - \ref SCIP_STAGE_INITSOLVE
4877  * - \ref SCIP_STAGE_SOLVING
4878  * - \ref SCIP_STAGE_SOLVED
4879  */
4880 extern
4882  SCIP* scip /**< SCIP data structure */
4883  );
4884 
4885 /** returns the objective scale of the transformed problem
4886  *
4887  * @return the objective scale of the transformed problem
4888  *
4889  * @pre This method can be called if @p scip is in one of the following stages:
4890  * - \ref SCIP_STAGE_TRANSFORMED
4891  * - \ref SCIP_STAGE_INITPRESOLVE
4892  * - \ref SCIP_STAGE_PRESOLVING
4893  * - \ref SCIP_STAGE_EXITPRESOLVE
4894  * - \ref SCIP_STAGE_PRESOLVED
4895  * - \ref SCIP_STAGE_INITSOLVE
4896  * - \ref SCIP_STAGE_SOLVING
4897  * - \ref SCIP_STAGE_SOLVED
4898  */
4899 extern
4901  SCIP* scip /**< SCIP data structure */
4902  );
4903 
4904 /** sets limit on objective function, such that only solutions better than this limit are accepted
4905  *
4906  * @note SCIP will only look for solutions with a strictly better objective value, thus, e.g., prune
4907  * all branch-and-bound nodes with dual bound equal or worse to the objective limit.
4908  * However, SCIP will also collect solutions with objective value worse than the objective limit and
4909  * use them to run improvement heuristics on them.
4910  * @note If SCIP can prove that there exists no solution with a strictly better objective value, the solving status
4911  * will normally be infeasible (the objective limit is interpreted as part of the problem).
4912  * The only exception is that by chance, SCIP found a solution with the same objective value and thus
4913  * proved the optimality of this solution, resulting in solution status optimal.
4914  *
4915  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4916  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4917  *
4918  * @pre This method can be called if @p scip is in one of the following stages:
4919  * - \ref SCIP_STAGE_PROBLEM
4920  * - \ref SCIP_STAGE_TRANSFORMED
4921  * - \ref SCIP_STAGE_INITPRESOLVE
4922  * - \ref SCIP_STAGE_PRESOLVING
4923  * - \ref SCIP_STAGE_EXITPRESOLVE
4924  * - \ref SCIP_STAGE_PRESOLVED
4925  * - \ref SCIP_STAGE_SOLVING
4926  */
4927 extern
4929  SCIP* scip, /**< SCIP data structure */
4930  SCIP_Real objlimit /**< new primal objective limit */
4931  );
4932 
4933 /** returns current limit on objective function
4934  *
4935  * @return the current objective limit of the original problem
4936  *
4937  * @pre This method can be called if @p scip is in one of the following stages:
4938  * - \ref SCIP_STAGE_PROBLEM
4939  * - \ref SCIP_STAGE_TRANSFORMING
4940  * - \ref SCIP_STAGE_TRANSFORMED
4941  * - \ref SCIP_STAGE_INITPRESOLVE
4942  * - \ref SCIP_STAGE_PRESOLVING
4943  * - \ref SCIP_STAGE_EXITPRESOLVE
4944  * - \ref SCIP_STAGE_PRESOLVED
4945  * - \ref SCIP_STAGE_INITSOLVE
4946  * - \ref SCIP_STAGE_SOLVING
4947  * - \ref SCIP_STAGE_SOLVED
4948  */
4949 extern
4951  SCIP* scip /**< SCIP data structure */
4952  );
4953 
4954 /** informs SCIP, that the objective value is always integral in every feasible solution
4955  *
4956  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4957  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4958  *
4959  * @pre This method can be called if @p scip is in one of the following stages:
4960  * - \ref SCIP_STAGE_PROBLEM
4961  * - \ref SCIP_STAGE_TRANSFORMING
4962  * - \ref SCIP_STAGE_INITPRESOLVE
4963  * - \ref SCIP_STAGE_EXITPRESOLVE
4964  * - \ref SCIP_STAGE_SOLVING
4965  */
4966 extern
4968  SCIP* scip /**< SCIP data structure */
4969  );
4970 
4971 /** returns whether the objective value is known to be integral in every feasible solution
4972  *
4973  * @return TRUE, if objective value is known to be always integral, otherwise FALSE
4974  *
4975  * @pre This method can be called if @p scip is in one of the following stages:
4976  * - \ref SCIP_STAGE_PROBLEM
4977  * - \ref SCIP_STAGE_TRANSFORMING
4978  * - \ref SCIP_STAGE_INITPRESOLVE
4979  * - \ref SCIP_STAGE_PRESOLVING
4980  * - \ref SCIP_STAGE_EXITPRESOLVE
4981  * - \ref SCIP_STAGE_PRESOLVED
4982  * - \ref SCIP_STAGE_SOLVING
4983  */
4984 extern
4986  SCIP* scip /**< SCIP data structure */
4987  );
4988 
4989 /** returns the Euclidean norm of the objective function vector (available only for transformed problem)
4990  *
4991  * @return the Euclidean norm of the transformed objective function vector
4992  *
4993  * @pre This method can be called if @p scip is in one of the following stages:
4994  * - \ref SCIP_STAGE_TRANSFORMED
4995  * - \ref SCIP_STAGE_INITPRESOLVE
4996  * - \ref SCIP_STAGE_PRESOLVING
4997  * - \ref SCIP_STAGE_EXITPRESOLVE
4998  * - \ref SCIP_STAGE_PRESOLVED
4999  * - \ref SCIP_STAGE_INITSOLVE
5000  * - \ref SCIP_STAGE_SOLVING
5001  * - \ref SCIP_STAGE_SOLVED
5002  * - \ref SCIP_STAGE_EXITSOLVE
5003  */
5004 extern
5006  SCIP* scip /**< SCIP data structure */
5007  );
5008 
5009 /** adds variable to the problem
5010  *
5011  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5012  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5013  *
5014  * @pre This method can be called if @p scip is in one of the following stages:
5015  * - \ref SCIP_STAGE_PROBLEM
5016  * - \ref SCIP_STAGE_TRANSFORMING
5017  * - \ref SCIP_STAGE_INITPRESOLVE
5018  * - \ref SCIP_STAGE_PRESOLVING
5019  * - \ref SCIP_STAGE_EXITPRESOLVE
5020  * - \ref SCIP_STAGE_PRESOLVED
5021  * - \ref SCIP_STAGE_SOLVING
5022  */
5023 extern
5025  SCIP* scip, /**< SCIP data structure */
5026  SCIP_VAR* var /**< variable to add */
5027  );
5028 
5029 /** adds variable to the problem and uses it as pricing candidate to enter the LP
5030  *
5031  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5032  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5033  *
5034  * @pre This method can only be called if @p scip is in stage \ref SCIP_STAGE_SOLVING
5035  */
5036 extern
5038  SCIP* scip, /**< SCIP data structure */
5039  SCIP_VAR* var, /**< variable to add */
5040  SCIP_Real score /**< pricing score of variable (the larger, the better the variable) */
5041  );
5042 
5043 /** removes variable from the problem
5044  *
5045  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5046  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5047  *
5048  * @pre This method can be called if @p scip is in one of the following stages:
5049  * - \ref SCIP_STAGE_PROBLEM
5050  * - \ref SCIP_STAGE_TRANSFORMING
5051  * - \ref SCIP_STAGE_TRANSFORMED
5052  * - \ref SCIP_STAGE_PRESOLVING
5053  * - \ref SCIP_STAGE_PRESOLVED
5054  * - \ref SCIP_STAGE_SOLVING
5055  * - \ref SCIP_STAGE_EXITSOLVE
5056  * - \ref SCIP_STAGE_FREETRANS
5057  */
5058 extern
5060  SCIP* scip, /**< SCIP data structure */
5061  SCIP_VAR* var, /**< variable to delete */
5062  SCIP_Bool* deleted /**< pointer to store whether variable was successfully marked to be deleted */
5063  );
5064 
5065 /** gets variables of the problem along with the numbers of different variable types; data may become invalid after
5066  * calls to SCIPchgVarType(), SCIPfixVar(), SCIPaggregateVars(), and SCIPmultiaggregateVar()
5067  *
5068  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5069  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5070  *
5071  * @pre This method can be called if @p scip is in one of the following stages:
5072  * - \ref SCIP_STAGE_PROBLEM
5073  * - \ref SCIP_STAGE_TRANSFORMED
5074  * - \ref SCIP_STAGE_INITPRESOLVE
5075  * - \ref SCIP_STAGE_PRESOLVING
5076  * - \ref SCIP_STAGE_EXITPRESOLVE
5077  * - \ref SCIP_STAGE_PRESOLVED
5078  * - \ref SCIP_STAGE_INITSOLVE
5079  * - \ref SCIP_STAGE_SOLVING
5080  * - \ref SCIP_STAGE_SOLVED
5081  * - \ref SCIP_STAGE_EXITSOLVE
5082  *
5083  * @note Variables in the vars array are ordered: binaries first, then integers, implicit integers and continuous last.
5084  */
5085 extern
5087  SCIP* scip, /**< SCIP data structure */
5088  SCIP_VAR*** vars, /**< pointer to store variables array or NULL if not needed */
5089  int* nvars, /**< pointer to store number of variables or NULL if not needed */
5090  int* nbinvars, /**< pointer to store number of binary variables or NULL if not needed */
5091  int* nintvars, /**< pointer to store number of integer variables or NULL if not needed */
5092  int* nimplvars, /**< pointer to store number of implicit integral vars or NULL if not needed */
5093  int* ncontvars /**< pointer to store number of continuous variables or NULL if not needed */
5094  );
5095 
5096 /** gets array with active problem variables
5097  *
5098  * @return array with active problem variables
5099  *
5100  * @pre This method can be called if @p scip is in one of the following stages:
5101  * - \ref SCIP_STAGE_PROBLEM
5102  * - \ref SCIP_STAGE_TRANSFORMED
5103  * - \ref SCIP_STAGE_INITPRESOLVE
5104  * - \ref SCIP_STAGE_PRESOLVING
5105  * - \ref SCIP_STAGE_EXITPRESOLVE
5106  * - \ref SCIP_STAGE_PRESOLVED
5107  * - \ref SCIP_STAGE_INITSOLVE
5108  * - \ref SCIP_STAGE_SOLVING
5109  * - \ref SCIP_STAGE_SOLVED
5110  * - \ref SCIP_STAGE_EXITSOLVE
5111  *
5112  * @warning If your are using the methods which add or change bound of variables (e.g., SCIPchgVarType(), SCIPfixVar(),
5113  * SCIPaggregateVars(), and SCIPmultiaggregateVar()), it can happen that the internal variable array (which is
5114  * accessed via this method) gets resized and/or resorted. This can invalid the data pointer which is returned
5115  * by this method.
5116  *
5117  * @note Variables in the array are ordered: binaries first, then integers, implicit integers and continuous last.
5118  */
5119 extern
5121  SCIP* scip /**< SCIP data structure */
5122  );
5123 
5124 /** gets number of active problem variables
5125  *
5126  * @return the number of active problem variables
5127  *
5128  * @pre This method can be called if @p scip is in one of the following stages:
5129  * - \ref SCIP_STAGE_PROBLEM
5130  * - \ref SCIP_STAGE_TRANSFORMED
5131  * - \ref SCIP_STAGE_INITPRESOLVE
5132  * - \ref SCIP_STAGE_PRESOLVING
5133  * - \ref SCIP_STAGE_EXITPRESOLVE
5134  * - \ref SCIP_STAGE_PRESOLVED
5135  * - \ref SCIP_STAGE_INITSOLVE
5136  * - \ref SCIP_STAGE_SOLVING
5137  * - \ref SCIP_STAGE_SOLVED
5138  * - \ref SCIP_STAGE_EXITSOLVE
5139  */
5140 extern
5141 int SCIPgetNVars(
5142  SCIP* scip /**< SCIP data structure */
5143  );
5144 
5145 /** gets number of binary active problem variables
5146  *
5147  * @return the number of binary active problem variables
5148  *
5149  * @pre This method can be called if @p scip is in one of the following stages:
5150  * - \ref SCIP_STAGE_PROBLEM
5151  * - \ref SCIP_STAGE_TRANSFORMED
5152  * - \ref SCIP_STAGE_INITPRESOLVE
5153  * - \ref SCIP_STAGE_PRESOLVING
5154  * - \ref SCIP_STAGE_EXITPRESOLVE
5155  * - \ref SCIP_STAGE_PRESOLVED
5156  * - \ref SCIP_STAGE_INITSOLVE
5157  * - \ref SCIP_STAGE_SOLVING
5158  * - \ref SCIP_STAGE_SOLVED
5159  * - \ref SCIP_STAGE_EXITSOLVE
5160  */
5161 extern
5162 int SCIPgetNBinVars(
5163  SCIP* scip /**< SCIP data structure */
5164  );
5165 
5166 /** gets number of integer active problem variables
5167  *
5168  * @return the number of integer active problem variables
5169  *
5170  * @pre This method can be called if @p scip is in one of the following stages:
5171  * - \ref SCIP_STAGE_PROBLEM
5172  * - \ref SCIP_STAGE_TRANSFORMED
5173  * - \ref SCIP_STAGE_INITPRESOLVE
5174  * - \ref SCIP_STAGE_PRESOLVING
5175  * - \ref SCIP_STAGE_EXITPRESOLVE
5176  * - \ref SCIP_STAGE_PRESOLVED
5177  * - \ref SCIP_STAGE_INITSOLVE
5178  * - \ref SCIP_STAGE_SOLVING
5179  * - \ref SCIP_STAGE_SOLVED
5180  * - \ref SCIP_STAGE_EXITSOLVE
5181  */
5182 extern
5183 int SCIPgetNIntVars(
5184  SCIP* scip /**< SCIP data structure */
5185  );
5186 
5187 /** gets number of implicit integer active problem variables
5188  *
5189  * @return the number of implicit integer active problem variables
5190  *
5191  * @pre This method can be called if @p scip is in one of the following stages:
5192  * - \ref SCIP_STAGE_PROBLEM
5193  * - \ref SCIP_STAGE_TRANSFORMED
5194  * - \ref SCIP_STAGE_INITPRESOLVE
5195  * - \ref SCIP_STAGE_PRESOLVING
5196  * - \ref SCIP_STAGE_EXITPRESOLVE
5197  * - \ref SCIP_STAGE_PRESOLVED
5198  * - \ref SCIP_STAGE_INITSOLVE
5199  * - \ref SCIP_STAGE_SOLVING
5200  * - \ref SCIP_STAGE_SOLVED
5201  * - \ref SCIP_STAGE_EXITSOLVE
5202  */
5203 extern
5204 int SCIPgetNImplVars(
5205  SCIP* scip /**< SCIP data structure */
5206  );
5207 
5208 /** gets number of continuous active problem variables
5209  *
5210  * @return the number of continuous active problem variables
5211  *
5212  * @pre This method can be called if @p scip is in one of the following stages:
5213  * - \ref SCIP_STAGE_PROBLEM
5214  * - \ref SCIP_STAGE_TRANSFORMED
5215  * - \ref SCIP_STAGE_INITPRESOLVE
5216  * - \ref SCIP_STAGE_PRESOLVING
5217  * - \ref SCIP_STAGE_EXITPRESOLVE
5218  * - \ref SCIP_STAGE_PRESOLVED
5219  * - \ref SCIP_STAGE_INITSOLVE
5220  * - \ref SCIP_STAGE_SOLVING
5221  * - \ref SCIP_STAGE_SOLVED
5222  * - \ref SCIP_STAGE_EXITSOLVE
5223  */
5224 extern
5225 int SCIPgetNContVars(
5226  SCIP* scip /**< SCIP data structure */
5227  );
5228 
5229 /** gets number of active problem variables with a non-zero objective coefficient
5230  *
5231  * @note In case of the original problem the number of variables is counted. In case of the transformed problem the
5232  * number of variables is just returned since it is stored internally
5233  *
5234  * @return the number of active problem variables with a non-zero objective coefficient
5235  *
5236  * @pre This method can be called if @p scip is in one of the following stages:
5237  * - \ref SCIP_STAGE_PROBLEM
5238  * - \ref SCIP_STAGE_TRANSFORMED
5239  * - \ref SCIP_STAGE_INITPRESOLVE
5240  * - \ref SCIP_STAGE_PRESOLVING
5241  * - \ref SCIP_STAGE_EXITPRESOLVE
5242  * - \ref SCIP_STAGE_PRESOLVED
5243  * - \ref SCIP_STAGE_INITSOLVE
5244  * - \ref SCIP_STAGE_SOLVING
5245  * - \ref SCIP_STAGE_SOLVED
5246  */
5247 extern
5248 int SCIPgetNObjVars(
5249  SCIP* scip /**< SCIP data structure */
5250  );
5251 
5252 /** gets array with fixed and aggregated problem variables; data may become invalid after
5253  * calls to SCIPfixVar(), SCIPaggregateVars(), and SCIPmultiaggregateVar()
5254  *
5255  * @return an array with fixed and aggregated problem variables; data may become invalid after
5256  * calls to SCIPfixVar(), SCIPaggregateVars(), and SCIPmultiaggregateVar()
5257  *
5258  * @pre This method can be called if @p scip is in one of the following stages:
5259  * - \ref SCIP_STAGE_PROBLEM
5260  * - \ref SCIP_STAGE_TRANSFORMED
5261  * - \ref SCIP_STAGE_INITPRESOLVE
5262  * - \ref SCIP_STAGE_PRESOLVING
5263  * - \ref SCIP_STAGE_EXITPRESOLVE
5264  * - \ref SCIP_STAGE_PRESOLVED
5265  * - \ref SCIP_STAGE_INITSOLVE
5266  * - \ref SCIP_STAGE_SOLVING
5267  * - \ref SCIP_STAGE_SOLVED
5268  */
5269 extern
5271  SCIP* scip /**< SCIP data structure */
5272  );
5273 
5274 /** gets number of fixed or aggregated problem variables
5275  *
5276  * @return the number of fixed or aggregated problem variables
5277  *
5278  * @pre This method can be called if @p scip is in one of the following stages:
5279  * - \ref SCIP_STAGE_PROBLEM
5280  * - \ref SCIP_STAGE_TRANSFORMED
5281  * - \ref SCIP_STAGE_INITPRESOLVE
5282  * - \ref SCIP_STAGE_PRESOLVING
5283  * - \ref SCIP_STAGE_EXITPRESOLVE
5284  * - \ref SCIP_STAGE_PRESOLVED
5285  * - \ref SCIP_STAGE_INITSOLVE
5286  * - \ref SCIP_STAGE_SOLVING
5287  * - \ref SCIP_STAGE_SOLVED
5288  */
5289 extern
5290 int SCIPgetNFixedVars(
5291  SCIP* scip /**< SCIP data structure */
5292  );
5293 
5294 /** gets variables of the original problem along with the numbers of different variable types; data may become invalid
5295  * after a call to SCIPchgVarType()
5296  *
5297  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5298  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5299  *
5300  * @pre This method can be called if @p scip is in one of the following stages:
5301  * - \ref SCIP_STAGE_PROBLEM
5302  * - \ref SCIP_STAGE_TRANSFORMING
5303  * - \ref SCIP_STAGE_TRANSFORMED
5304  * - \ref SCIP_STAGE_INITPRESOLVE
5305  * - \ref SCIP_STAGE_PRESOLVING
5306  * - \ref SCIP_STAGE_EXITPRESOLVE
5307  * - \ref SCIP_STAGE_PRESOLVED
5308  * - \ref SCIP_STAGE_INITSOLVE
5309  * - \ref SCIP_STAGE_SOLVING
5310  * - \ref SCIP_STAGE_SOLVED
5311  * - \ref SCIP_STAGE_EXITSOLVE
5312  * - \ref SCIP_STAGE_FREETRANS
5313  */
5314 extern
5316  SCIP* scip, /**< SCIP data structure */
5317  SCIP_VAR*** vars, /**< pointer to store variables array or NULL if not needed */
5318  int* nvars, /**< pointer to store number of variables or NULL if not needed */
5319  int* nbinvars, /**< pointer to store number of binary variables or NULL if not needed */
5320  int* nintvars, /**< pointer to store number of integer variables or NULL if not needed */
5321  int* nimplvars, /**< pointer to store number of implicit integral vars or NULL if not needed */
5322  int* ncontvars /**< pointer to store number of continuous variables or NULL if not needed */
5323  );
5324 
5325 /** gets array with original problem variables; data may become invalid after
5326  * a call to SCIPchgVarType()
5327  *
5328  * @return an array with original problem variables; data may become invalid after
5329  * a call to SCIPchgVarType()
5330  *
5331  * @pre This method can be called if @p scip is in one of the following stages:
5332  * - \ref SCIP_STAGE_PROBLEM
5333  * - \ref SCIP_STAGE_TRANSFORMING
5334  * - \ref SCIP_STAGE_TRANSFORMED
5335  * - \ref SCIP_STAGE_INITPRESOLVE
5336  * - \ref SCIP_STAGE_PRESOLVING
5337  * - \ref SCIP_STAGE_EXITPRESOLVE
5338  * - \ref SCIP_STAGE_PRESOLVED
5339  * - \ref SCIP_STAGE_INITSOLVE
5340  * - \ref SCIP_STAGE_SOLVING
5341  * - \ref SCIP_STAGE_SOLVED
5342  * - \ref SCIP_STAGE_EXITSOLVE
5343  * - \ref SCIP_STAGE_FREETRANS
5344  */
5345 extern
5347  SCIP* scip /**< SCIP data structure */
5348  );
5349 
5350 /** gets number of original problem variables
5351  *
5352  * @return the number of original problem variables
5353  *
5354  * @pre This method can be called if @p scip is in one of the following stages:
5355  * - \ref SCIP_STAGE_PROBLEM
5356  * - \ref SCIP_STAGE_TRANSFORMING
5357  * - \ref SCIP_STAGE_TRANSFORMED
5358  * - \ref SCIP_STAGE_INITPRESOLVE
5359  * - \ref SCIP_STAGE_PRESOLVING
5360  * - \ref SCIP_STAGE_EXITPRESOLVE
5361  * - \ref SCIP_STAGE_PRESOLVED
5362  * - \ref SCIP_STAGE_INITSOLVE
5363  * - \ref SCIP_STAGE_SOLVING
5364  * - \ref SCIP_STAGE_SOLVED
5365  * - \ref SCIP_STAGE_EXITSOLVE
5366  * - \ref SCIP_STAGE_FREETRANS
5367  */
5368 extern
5369 int SCIPgetNOrigVars(
5370  SCIP* scip /**< SCIP data structure */
5371  );
5372 
5373 /** gets number of binary variables in the original problem
5374  *
5375  * @return the number of binary variables in the original problem
5376  *
5377  * @pre This method can be called if @p scip is in one of the following stages:
5378  * - \ref SCIP_STAGE_PROBLEM
5379  * - \ref SCIP_STAGE_TRANSFORMING
5380  * - \ref SCIP_STAGE_TRANSFORMED
5381  * - \ref SCIP_STAGE_INITPRESOLVE
5382  * - \ref SCIP_STAGE_PRESOLVING
5383  * - \ref SCIP_STAGE_EXITPRESOLVE
5384  * - \ref SCIP_STAGE_PRESOLVED
5385  * - \ref SCIP_STAGE_INITSOLVE
5386  * - \ref SCIP_STAGE_SOLVING
5387  * - \ref SCIP_STAGE_SOLVED
5388  * - \ref SCIP_STAGE_EXITSOLVE
5389  * - \ref SCIP_STAGE_FREETRANS
5390  */
5391 extern
5393  SCIP* scip /**< SCIP data structure */
5394  );
5395 
5396 /** gets the number of integer variables in the original problem
5397  *
5398  * @return the number of integer variables in the original problem
5399  *
5400  * @pre This method can be called if @p scip is in one of the following stages:
5401  * - \ref SCIP_STAGE_PROBLEM
5402  * - \ref SCIP_STAGE_TRANSFORMING
5403  * - \ref SCIP_STAGE_TRANSFORMED
5404  * - \ref SCIP_STAGE_INITPRESOLVE
5405  * - \ref SCIP_STAGE_PRESOLVING
5406  * - \ref SCIP_STAGE_EXITPRESOLVE
5407  * - \ref SCIP_STAGE_PRESOLVED
5408  * - \ref SCIP_STAGE_INITSOLVE
5409  * - \ref SCIP_STAGE_SOLVING
5410  * - \ref SCIP_STAGE_SOLVED
5411  * - \ref SCIP_STAGE_EXITSOLVE
5412  * - \ref SCIP_STAGE_FREETRANS
5413  */
5414 extern
5416  SCIP* scip /**< SCIP data structure */
5417  );
5418 
5419 /** gets number of implicit integer variables in the original problem
5420  *
5421  * @return the number of implicit integer variables in the original problem
5422  *
5423  * @pre This method can be called if @p scip is in one of the following stages:
5424  * - \ref SCIP_STAGE_PROBLEM
5425  * - \ref SCIP_STAGE_TRANSFORMING
5426  * - \ref SCIP_STAGE_TRANSFORMED
5427  * - \ref SCIP_STAGE_INITPRESOLVE
5428  * - \ref SCIP_STAGE_PRESOLVING
5429  * - \ref SCIP_STAGE_EXITPRESOLVE
5430  * - \ref SCIP_STAGE_PRESOLVED
5431  * - \ref SCIP_STAGE_INITSOLVE
5432  * - \ref SCIP_STAGE_SOLVING
5433  * - \ref SCIP_STAGE_SOLVED
5434  * - \ref SCIP_STAGE_EXITSOLVE
5435  * - \ref SCIP_STAGE_FREETRANS
5436  */
5437 extern
5439  SCIP* scip /**< SCIP data structure */
5440  );
5441 
5442 /** gets number of continuous variables in the original problem
5443  *
5444  * @return the number of continuous variables in the original problem
5445  *
5446  * @pre This method can be called if @p scip is in one of the following stages:
5447  * - \ref SCIP_STAGE_PROBLEM
5448  * - \ref SCIP_STAGE_TRANSFORMING
5449  * - \ref SCIP_STAGE_TRANSFORMED
5450  * - \ref SCIP_STAGE_INITPRESOLVE
5451  * - \ref SCIP_STAGE_PRESOLVING
5452  * - \ref SCIP_STAGE_EXITPRESOLVE
5453  * - \ref SCIP_STAGE_PRESOLVED
5454  * - \ref SCIP_STAGE_INITSOLVE
5455  * - \ref SCIP_STAGE_SOLVING
5456  * - \ref SCIP_STAGE_SOLVED
5457  * - \ref SCIP_STAGE_EXITSOLVE
5458  * - \ref SCIP_STAGE_FREETRANS
5459  */
5460 extern
5462  SCIP* scip /**< SCIP data structure */
5463  );
5464 
5465 /** gets number of all problem variables created during creation and solving of problem;
5466  * this includes also variables that were deleted in the meantime
5467  *
5468  * @return the number of all problem variables created during creation and solving of problem;
5469  * this includes also variables that were deleted in the meantime
5470  *
5471  * @pre This method can be called if @p scip is in one of the following stages:
5472  * - \ref SCIP_STAGE_PROBLEM
5473  * - \ref SCIP_STAGE_TRANSFORMING
5474  * - \ref SCIP_STAGE_TRANSFORMED
5475  * - \ref SCIP_STAGE_INITPRESOLVE
5476  * - \ref SCIP_STAGE_PRESOLVING
5477  * - \ref SCIP_STAGE_EXITPRESOLVE
5478  * - \ref SCIP_STAGE_PRESOLVED
5479  * - \ref SCIP_STAGE_INITSOLVE
5480  * - \ref SCIP_STAGE_SOLVING
5481  * - \ref SCIP_STAGE_SOLVED
5482  * - \ref SCIP_STAGE_EXITSOLVE
5483  * - \ref SCIP_STAGE_FREETRANS
5484  */
5485 extern
5486 int SCIPgetNTotalVars(
5487  SCIP* scip /**< SCIP data structure */
5488  );
5489 
5490 /** gets variables of the original or transformed problem along with the numbers of different variable types;
5491  * the returned problem space (original or transformed) corresponds to the given solution;
5492  * data may become invalid after calls to SCIPchgVarType(), SCIPfixVar(), SCIPaggregateVars(), and
5493  * SCIPmultiaggregateVar()
5494  *
5495  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5496  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5497  *
5498  * @pre This method can be called if @p scip is in one of the following stages:
5499  * - \ref SCIP_STAGE_PROBLEM
5500  * - \ref SCIP_STAGE_TRANSFORMED
5501  * - \ref SCIP_STAGE_INITPRESOLVE
5502  * - \ref SCIP_STAGE_PRESOLVING
5503  * - \ref SCIP_STAGE_EXITPRESOLVE
5504  * - \ref SCIP_STAGE_PRESOLVED
5505  * - \ref SCIP_STAGE_INITSOLVE
5506  * - \ref SCIP_STAGE_SOLVING
5507  * - \ref SCIP_STAGE_SOLVED
5508  */
5509 extern
5511  SCIP* scip, /**< SCIP data structure */
5512  SCIP_SOL* sol, /**< primal solution that selects the problem space, NULL for current solution */
5513  SCIP_VAR*** vars, /**< pointer to store variables array or NULL if not needed */
5514  int* nvars, /**< pointer to store number of variables or NULL if not needed */
5515  int* nbinvars, /**< pointer to store number of binary variables or NULL if not needed */
5516  int* nintvars, /**< pointer to store number of integer variables or NULL if not needed */
5517  int* nimplvars, /**< pointer to store number of implicit integral vars or NULL if not needed */
5518  int* ncontvars /**< pointer to store number of continuous variables or NULL if not needed */
5519  );
5520 
5521 /** returns variable of given name in the problem, or NULL if not existing
5522  *
5523  * @return variable of given name in the problem, or NULL if not existing
5524  *
5525  * @pre This method can be called if @p scip is in one of the following stages:
5526  * - \ref SCIP_STAGE_PROBLEM
5527  * - \ref SCIP_STAGE_TRANSFORMING
5528  * - \ref SCIP_STAGE_TRANSFORMED
5529  * - \ref SCIP_STAGE_INITPRESOLVE
5530  * - \ref SCIP_STAGE_PRESOLVING
5531  * - \ref SCIP_STAGE_EXITPRESOLVE
5532  * - \ref SCIP_STAGE_PRESOLVED
5533  * - \ref SCIP_STAGE_INITSOLVE
5534  * - \ref SCIP_STAGE_SOLVING
5535  * - \ref SCIP_STAGE_SOLVED
5536  * - \ref SCIP_STAGE_EXITSOLVE
5537  * - \ref SCIP_STAGE_FREETRANS
5538  */
5539 extern
5541  SCIP* scip, /**< SCIP data structure */
5542  const char* name /**< name of variable to find */
5543  );
5544 
5545 /** returns TRUE iff all potential variables exist in the problem, and FALSE, if there may be additional variables,
5546  * that will be added in pricing and improve the objective value
5547  *
5548  * @return TRUE, if all potential variables exist in the problem; FALSE, otherwise
5549  *
5550  * @pre This method can be called if @p scip is in one of the following stages:
5551  * - \ref SCIP_STAGE_TRANSFORMING
5552  * - \ref SCIP_STAGE_TRANSFORMED
5553  * - \ref SCIP_STAGE_INITPRESOLVE
5554  * - \ref SCIP_STAGE_PRESOLVING
5555  * - \ref SCIP_STAGE_EXITPRESOLVE
5556  * - \ref SCIP_STAGE_PRESOLVED
5557  * - \ref SCIP_STAGE_INITSOLVE
5558  * - \ref SCIP_STAGE_SOLVING
5559  * - \ref SCIP_STAGE_SOLVED
5560  * - \ref SCIP_STAGE_EXITSOLVE
5561  * - \ref SCIP_STAGE_FREETRANS
5562  */
5563 extern
5565  SCIP* scip /**< SCIP data structure */
5566  );
5567 
5568 /** adds constraint to the problem; if constraint is only valid locally, it is added to the local subproblem of the
5569  * current node (and all of its subnodes); otherwise it is added to the global problem;
5570  * if a local constraint is added at the root node, it is automatically upgraded into a global constraint
5571  *
5572  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5573  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5574  *
5575  * @pre This method can be called if @p scip is in one of the following stages:
5576  * - \ref SCIP_STAGE_PROBLEM
5577  * - \ref SCIP_STAGE_INITPRESOLVE
5578  * - \ref SCIP_STAGE_PRESOLVING
5579  * - \ref SCIP_STAGE_EXITPRESOLVE
5580  * - \ref SCIP_STAGE_PRESOLVED
5581  * - \ref SCIP_STAGE_INITSOLVE
5582  * - \ref SCIP_STAGE_SOLVING
5583  * - \ref SCIP_STAGE_EXITSOLVE
5584  */
5585 extern
5587  SCIP* scip, /**< SCIP data structure */
5588  SCIP_CONS* cons /**< constraint to add */
5589  );
5590 
5591 /** globally removes constraint from all subproblems; removes constraint from the constraint set change data of the
5592  * node, where it was added, or from the problem, if it was a problem constraint
5593  *
5594  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5595  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5596  *
5597  * @pre This method can be called if @p scip is in one of the following stages:
5598  * - \ref SCIP_STAGE_PROBLEM
5599  * - \ref SCIP_STAGE_INITPRESOLVE
5600  * - \ref SCIP_STAGE_PRESOLVING
5601  * - \ref SCIP_STAGE_EXITPRESOLVE
5602  * - \ref SCIP_STAGE_INITSOLVE
5603  * - \ref SCIP_STAGE_SOLVING
5604  */
5605 extern
5607  SCIP* scip, /**< SCIP data structure */
5608  SCIP_CONS* cons /**< constraint to delete */
5609  );
5610 
5611 /** returns original constraint of given name in the problem, or NULL if not existing
5612  *
5613  * @return original constraint of given name in the problem, or NULL if not existing
5614  *
5615  * @pre This method can be called if @p scip is in one of the following stages:
5616  * - \ref SCIP_STAGE_PROBLEM
5617  * - \ref SCIP_STAGE_TRANSFORMING
5618  * - \ref SCIP_STAGE_TRANSFORMED
5619  * - \ref SCIP_STAGE_INITPRESOLVE
5620  * - \ref SCIP_STAGE_PRESOLVING
5621  * - \ref SCIP_STAGE_EXITPRESOLVE
5622  * - \ref SCIP_STAGE_INITSOLVE
5623  * - \ref SCIP_STAGE_SOLVING
5624  * - \ref SCIP_STAGE_SOLVED
5625  * - \ref SCIP_STAGE_EXITSOLVE
5626  * - \ref SCIP_STAGE_FREETRANS */
5627 extern
5629  SCIP* scip, /**< SCIP data structure */
5630  const char* name /**< name of constraint to find */
5631  );
5632 
5633 /** returns constraint of given name in the problem, or NULL if not existing
5634  *
5635  * @return constraint of given name in the problem, or NULL if not existing
5636  *
5637  * @pre This method can be called if @p scip is in one of the following stages:
5638  * - \ref SCIP_STAGE_PROBLEM
5639  * - \ref SCIP_STAGE_TRANSFORMING
5640  * - \ref SCIP_STAGE_TRANSFORMED
5641  * - \ref SCIP_STAGE_INITPRESOLVE
5642  * - \ref SCIP_STAGE_PRESOLVING
5643  * - \ref SCIP_STAGE_EXITPRESOLVE
5644  * - \ref SCIP_STAGE_PRESOLVED
5645  * - \ref SCIP_STAGE_INITSOLVE
5646  * - \ref SCIP_STAGE_SOLVING
5647  * - \ref SCIP_STAGE_SOLVED
5648  * - \ref SCIP_STAGE_EXITSOLVE
5649  * - \ref SCIP_STAGE_FREETRANS
5650  */
5651 extern
5653  SCIP* scip, /**< SCIP data structure */
5654  const char* name /**< name of constraint to find */
5655  );
5656 
5657 /** gets number of upgraded constraints
5658  *
5659  * @return number of upgraded constraints
5660  *
5661  * @pre This method can be called if @p scip is in one of the following stages:
5662  * - \ref SCIP_STAGE_PROBLEM
5663  * - \ref SCIP_STAGE_TRANSFORMED
5664  * - \ref SCIP_STAGE_INITPRESOLVE
5665  * - \ref SCIP_STAGE_PRESOLVING
5666  * - \ref SCIP_STAGE_PRESOLVED
5667  * - \ref SCIP_STAGE_EXITPRESOLVE
5668  * - \ref SCIP_STAGE_SOLVING
5669  * - \ref SCIP_STAGE_SOLVED
5670  */
5671 extern
5672 int SCIPgetNUpgrConss(
5673  SCIP* scip /**< SCIP data structure */
5674  );
5675 
5676 /** gets total number of globally valid constraints currently in the problem
5677  *
5678  * @return total number of globally valid constraints currently in the problem
5679  *
5680  * @pre This method can be called if @p scip is in one of the following stages:
5681  * - \ref SCIP_STAGE_PROBLEM
5682  * - \ref SCIP_STAGE_TRANSFORMED
5683  * - \ref SCIP_STAGE_INITPRESOLVE
5684  * - \ref SCIP_STAGE_PRESOLVING
5685  * - \ref SCIP_STAGE_EXITPRESOLVE
5686  * - \ref SCIP_STAGE_PRESOLVED
5687  * - \ref SCIP_STAGE_INITSOLVE
5688  * - \ref SCIP_STAGE_SOLVING
5689  * - \ref SCIP_STAGE_SOLVED
5690  */
5691 extern
5692 int SCIPgetNConss(
5693  SCIP* scip /**< SCIP data structure */
5694  );
5695 
5696 /** gets array of globally valid constraints currently in the problem
5697  *
5698  * @return array of globally valid constraints currently in the problem
5699  *
5700  * @pre This method can be called if @p scip is in one of the following stages:
5701  * - \ref SCIP_STAGE_PROBLEM
5702  * - \ref SCIP_STAGE_TRANSFORMED
5703  * - \ref SCIP_STAGE_INITPRESOLVE
5704  * - \ref SCIP_STAGE_PRESOLVING
5705  * - \ref SCIP_STAGE_EXITPRESOLVE
5706  * - \ref SCIP_STAGE_PRESOLVED
5707  * - \ref SCIP_STAGE_SOLVING
5708  * - \ref SCIP_STAGE_SOLVED
5709  *
5710  * @warning If your are using the method SCIPaddCons(), it can happen that the internal constraint array (which is
5711  * accessed via this method) gets resized. This can invalid the pointer which is returned by this method.
5712  */
5713 extern
5715  SCIP* scip /**< SCIP data structure */
5716  );
5717 
5718 /** gets total number of constraints in the original problem
5719  *
5720  * @return total number of constraints in the original problem
5721  *
5722  * @pre This method can be called if @p scip is in one of the following stages:
5723  * - \ref SCIP_STAGE_PROBLEM
5724  * - \ref SCIP_STAGE_TRANSFORMING
5725  * - \ref SCIP_STAGE_TRANSFORMED
5726  * - \ref SCIP_STAGE_INITPRESOLVE
5727  * - \ref SCIP_STAGE_PRESOLVING
5728  * - \ref SCIP_STAGE_EXITPRESOLVE
5729  * - \ref SCIP_STAGE_PRESOLVED
5730  * - \ref SCIP_STAGE_INITSOLVE
5731  * - \ref SCIP_STAGE_SOLVING
5732  * - \ref SCIP_STAGE_SOLVED
5733  * - \ref SCIP_STAGE_EXITSOLVE
5734  * - \ref SCIP_STAGE_FREETRANS
5735  */
5736 extern
5737 int SCIPgetNOrigConss(
5738  SCIP* scip /**< SCIP data structure */
5739  );
5740 
5741 /** gets array of constraints in the original problem
5742  *
5743  * @return array of constraints in the original problem
5744  *
5745  * @pre This method can be called if @p scip is in one of the following stages:
5746  * - \ref SCIP_STAGE_PROBLEM
5747  * - \ref SCIP_STAGE_TRANSFORMING
5748  * - \ref SCIP_STAGE_TRANSFORMED
5749  * - \ref SCIP_STAGE_INITPRESOLVE
5750  * - \ref SCIP_STAGE_PRESOLVING
5751  * - \ref SCIP_STAGE_EXITPRESOLVE
5752  * - \ref SCIP_STAGE_PRESOLVED
5753  * - \ref SCIP_STAGE_INITSOLVE
5754  * - \ref SCIP_STAGE_SOLVING
5755  * - \ref SCIP_STAGE_SOLVED
5756  * - \ref SCIP_STAGE_EXITSOLVE
5757  * - \ref SCIP_STAGE_FREETRANS
5758  */
5759 extern
5761  SCIP* scip /**< SCIP data structure */
5762  );
5763 
5764 /** computes the number of check constraint in the current node (loop over all constraint handler and cumulates the
5765  * number of check constraints)
5766  *
5767  * @return returns the number of check constraints
5768  *
5769  * @pre This method can be called if @p scip is in one of the following stages:
5770  * - \ref SCIP_STAGE_TRANSFORMED
5771  * - \ref SCIP_STAGE_INITPRESOLVE
5772  * - \ref SCIP_STAGE_PRESOLVING
5773  * - \ref SCIP_STAGE_EXITPRESOLVE
5774  * - \ref SCIP_STAGE_PRESOLVED
5775  * - \ref SCIP_STAGE_INITSOLVE
5776  * - \ref SCIP_STAGE_SOLVING
5777  */
5778 extern
5779 int SCIPgetNCheckConss(
5780  SCIP* scip /**< SCIP data structure */
5781  );
5782 
5783 /**@} */
5784 
5785 
5786 
5787 
5788 /*
5789  * local subproblem methods
5790  */
5791 
5792 /**@name Local Subproblem Methods */
5793 /**@{ */
5794 
5795 /** adds constraint to the given node (and all of its subnodes), even if it is a global constraint;
5796  * It is sometimes desirable to add the constraint to a more local node (i.e., a node of larger depth) even if
5797  * the constraint is also valid higher in the tree, for example, if one wants to produce a constraint which is
5798  * only active in a small part of the tree although it is valid in a larger part.
5799  * In this case, one should pass the more global node where the constraint is valid as "validnode".
5800  * Note that the same constraint cannot be added twice to the branching tree with different "validnode" parameters.
5801  * If the constraint is valid at the same node as it is inserted (the usual case), one should pass NULL as "validnode".
5802  * If the "validnode" is the root node, it is automatically upgraded into a global constraint, but still only added to
5803  * the given node. If a local constraint is added to the root node, it is added to the global problem instead.
5804  *
5805  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5806  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5807  *
5808  * @pre this method can be called in one of the following stages of the SCIP solving process:
5809  * - \ref SCIP_STAGE_INITPRESOLVE
5810  * - \ref SCIP_STAGE_PRESOLVING
5811  * - \ref SCIP_STAGE_EXITPRESOLVE
5812  * - \ref SCIP_STAGE_SOLVING
5813  */
5814 extern
5816  SCIP* scip, /**< SCIP data structure */
5817  SCIP_NODE* node, /**< node to add constraint to */
5818  SCIP_CONS* cons, /**< constraint to add */
5819  SCIP_NODE* validnode /**< node at which the constraint is valid, or NULL */
5820  );
5821 
5822 /** adds constraint locally to the current node (and all of its subnodes), even if it is a global constraint;
5823  * It is sometimes desirable to add the constraint to a more local node (i.e., a node of larger depth) even if
5824  * the constraint is also valid higher in the tree, for example, if one wants to produce a constraint which is
5825  * only active in a small part of the tree although it is valid in a larger part.
5826  *
5827  * If the constraint is valid at the same node as it is inserted (the usual case), one should pass NULL as "validnode".
5828  * If the "validnode" is the root node, it is automatically upgraded into a global constraint, but still only added to
5829  * the given node. If a local constraint is added to the root node, it is added to the global problem instead.
5830  *
5831  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5832  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5833  *
5834  * @pre this method can be called in one of the following stages of the SCIP solving process:
5835  * - \ref SCIP_STAGE_INITPRESOLVE
5836  * - \ref SCIP_STAGE_PRESOLVING
5837  * - \ref SCIP_STAGE_EXITPRESOLVE
5838  * - \ref SCIP_STAGE_SOLVING
5839  *
5840  * @note The same constraint cannot be added twice to the branching tree with different "validnode" parameters. This is
5841  * the case due internal data structures and performance issues. In such a case you should try to realize your
5842  * issue using the method SCIPdisableCons() and SCIPenableCons() and control these via the event system of SCIP.
5843  */
5844 extern
5846  SCIP* scip, /**< SCIP data structure */
5847  SCIP_CONS* cons, /**< constraint to add */
5848  SCIP_NODE* validnode /**< node at which the constraint is valid, or NULL */
5849  );
5850 
5851 /** disables constraint's separation, enforcing, and propagation capabilities at the given node (and all subnodes);
5852  * if the method is called at the root node, the constraint is globally deleted from the problem;
5853  * the constraint deletion is being remembered at the given node, s.t. after leaving the node's subtree, the constraint
5854  * is automatically enabled again, and after entering the node's subtree, it is automatically disabled;
5855  * this may improve performance because redundant checks on this constraint are avoided, but it consumes memory;
5856  * alternatively, use SCIPdisableCons()
5857  *
5858  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5859  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5860  *
5861  * @pre this method can be called in one of the following stages of the SCIP solving process:
5862  * - \ref SCIP_STAGE_INITPRESOLVE
5863  * - \ref SCIP_STAGE_PRESOLVING
5864  * - \ref SCIP_STAGE_EXITPRESOLVE
5865  * - \ref SCIP_STAGE_SOLVING
5866  */
5867 extern
5869  SCIP* scip, /**< SCIP data structure */
5870  SCIP_NODE* node, /**< node to disable constraint in */
5871  SCIP_CONS* cons /**< constraint to locally delete */
5872  );
5873 
5874 /** disables constraint's separation, enforcing, and propagation capabilities at the current node (and all subnodes);
5875  * if the method is called during problem modification or at the root node, the constraint is globally deleted from
5876  * the problem;
5877  * the constraint deletion is being remembered at the current node, s.t. after leaving the current subtree, the
5878  * constraint is automatically enabled again, and after reentering the current node's subtree, it is automatically
5879  * disabled again;
5880  * this may improve performance because redundant checks on this constraint are avoided, but it consumes memory;
5881  * alternatively, use SCIPdisableCons()
5882  *
5883  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5884  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5885  *
5886  * @pre this method can be called in one of the following stages of the SCIP solving process:
5887  * - \ref SCIP_STAGE_PROBLEM
5888  * - \ref SCIP_STAGE_INITPRESOLVE
5889  * - \ref SCIP_STAGE_PRESOLVING
5890  * - \ref SCIP_STAGE_EXITPRESOLVE
5891  * - \ref SCIP_STAGE_SOLVING
5892  */
5893 extern
5895  SCIP* scip, /**< SCIP data structure */
5896  SCIP_CONS* cons /**< constraint to locally delete */
5897  );
5898 
5899 /** gets estimate of best primal solution w.r.t. original problem contained in current subtree
5900  *
5901  * @return estimate of best primal solution w.r.t. original problem contained in current subtree
5902  *
5903  * @pre this method can be called in one of the following stages of the SCIP solving process:
5904  * - \ref SCIP_STAGE_SOLVING
5905  */
5906 extern
5908  SCIP* scip /**< SCIP data structure */
5909  );
5910 
5911 /** gets estimate of best primal solution w.r.t. transformed problem contained in current subtree
5912  *
5913  * @return estimate of best primal solution w.r.t. transformed problem contained in current subtree
5914  *
5915  * @pre this method can be called in one of the following stages of the SCIP solving process:
5916  * - \ref SCIP_STAGE_SOLVING
5917  */
5918 extern
5920  SCIP* scip /**< SCIP data structure */
5921  );
5922 
5923 /** gets dual bound of current node
5924  *
5925  * @return dual bound of current node
5926  *
5927  * @pre this method can be called in one of the following stages of the SCIP solving process:
5928  * - \ref SCIP_STAGE_SOLVING
5929  */
5930 extern
5932  SCIP* scip /**< SCIP data structure */
5933  );
5934 
5935 /** gets lower bound of current node in transformed problem
5936  *
5937  * @return lower bound of current node in transformed problem
5938  *
5939  * @pre this method can be called in one of the following stages of the SCIP solving process:
5940  * - \ref SCIP_STAGE_SOLVING
5941  */
5942 extern
5944  SCIP* scip /**< SCIP data structure */
5945  );
5946 
5947 /** gets dual bound of given node
5948  *
5949  * @return dual bound of a given node
5950  *
5951  * @pre this method can be called in one of the following stages of the SCIP solving process:
5952  * - \ref SCIP_STAGE_SOLVING
5953  */
5954 extern
5956  SCIP* scip, /**< SCIP data structure */
5957  SCIP_NODE* node /**< node to get dual bound for */
5958  );
5959 
5960 /** gets lower bound of given node in transformed problem
5961  *
5962  * @return lower bound of given node in transformed problem
5963  *
5964  * @pre this method can be called in one of the following stages of the SCIP solving process:
5965  * - \ref SCIP_STAGE_SOLVING
5966  */
5967 extern
5969  SCIP* scip, /**< SCIP data structure */
5970  SCIP_NODE* node /**< node to get dual bound for */
5971  );
5972 
5973 /** if given value is tighter (larger for minimization, smaller for maximization) than the current node's dual bound (in
5974  * original problem space), sets the current node's dual bound to the new value
5975  *
5976  * @note the given new bound has to be a dual bound, i.e., it has to be valid for the original problem.
5977  *
5978  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5979  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5980  *
5981  * @pre this method can be called in one of the following stages of the SCIP solving process:
5982  * - \ref SCIP_STAGE_PROBLEM
5983  * - \ref SCIP_STAGE_PRESOLVING
5984  * - \ref SCIP_STAGE_PRESOLVED
5985  * - \ref SCIP_STAGE_SOLVING
5986  */
5987 extern
5989  SCIP* scip, /**< SCIP data structure */
5990  SCIP_Real newbound /**< new dual bound for the node (if it's tighter than the old one) */
5991  );
5992 
5993 /** if given value is larger than the current node's lower bound (in transformed problem), sets the current node's
5994  * lower bound to the new value
5995  *
5996  * @note the given new bound has to be a lower bound, i.e., it has to be valid for the transformed problem.
5997  *
5998  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5999  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6000  *
6001  * @pre this method can be called in one of the following stages of the SCIP solving process:
6002  * - \ref SCIP_STAGE_PRESOLVING
6003  * - \ref SCIP_STAGE_PRESOLVED
6004  * - \ref SCIP_STAGE_SOLVING
6005  */
6006 extern
6008  SCIP* scip, /**< SCIP data structure */
6009  SCIP_Real newbound /**< new lower bound for the node (if it's larger than the old one) */
6010  );
6011 
6012 /** if given value is tighter (larger for minimization, smaller for maximization) than the node's dual bound,
6013  * sets the node's dual bound to the new value
6014  *
6015  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6016  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6017  *
6018  * @pre this method can be called in one of the following stages of the SCIP solving process:
6019  * - \ref SCIP_STAGE_SOLVING
6020  */
6021 extern
6023  SCIP* scip, /**< SCIP data structure */
6024  SCIP_NODE* node, /**< node to update dual bound for */
6025  SCIP_Real newbound /**< new dual bound for the node (if it's tighter than the old one) */
6026  );
6027 
6028 /** if given value is larger than the node's lower bound (in transformed problem), sets the node's lower bound
6029  * to the new value
6030  *
6031  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6032  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6033  *
6034  * @pre this method can be called in one of the following stages of the SCIP solving process:
6035  * - \ref SCIP_STAGE_SOLVING
6036  */
6037 extern
6039  SCIP* scip, /**< SCIP data structure */
6040  SCIP_NODE* node, /**< node to update lower bound for */
6041  SCIP_Real newbound /**< new lower bound for the node (if it's larger than the old one) */
6042  );
6043 
6044 /** change the node selection priority of the given child
6045  *
6046  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6047  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6048  *
6049  * @pre this method can be called in one of the following stages of the SCIP solving process:
6050  * - \ref SCIP_STAGE_SOLVING
6051  */
6052 extern
6054  SCIP* scip, /**< SCIP data structure */
6055  SCIP_NODE* child, /**< child to update the node selection priority */
6056  SCIP_Real priority /**< node selection priority value */
6057  );
6058 
6059 /**@} */
6060 
6061 
6062 
6063 
6064 /*
6065  * solve methods
6066  */
6067 
6068 /**@name Solve Methods */
6069 /**@{ */
6070 
6071 /** initializes solving data structures and transforms problem
6072  *
6073  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6074  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6075  *
6076  * @pre This method can be called if @p scip is in one of the following stages:
6077  * - \ref SCIP_STAGE_PROBLEM
6078  * - \ref SCIP_STAGE_TRANSFORMED
6079  * - \ref SCIP_STAGE_INITPRESOLVE
6080  * - \ref SCIP_STAGE_PRESOLVING
6081  * - \ref SCIP_STAGE_EXITPRESOLVE
6082  * - \ref SCIP_STAGE_PRESOLVED
6083  * - \ref SCIP_STAGE_INITSOLVE
6084  * - \ref SCIP_STAGE_SOLVING
6085  * - \ref SCIP_STAGE_SOLVED
6086  * - \ref SCIP_STAGE_EXITSOLVE
6087  * - \ref SCIP_STAGE_FREETRANS
6088  * - \ref SCIP_STAGE_FREE
6089  *
6090  * @post When calling this method in the \ref SCIP_STAGE_PROBLEM stage, the \SCIP stage is changed to \ref
6091  * SCIP_STAGE_TRANSFORMED; otherwise, the stage is not changed
6092  *
6093  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
6094  */
6095 extern
6097  SCIP* scip /**< SCIP data structure */
6098  );
6099 
6100 /** transforms and presolves problem
6101  *
6102  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6103  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6104  *
6105  * @pre This method can be called if @p scip is in one of the following stages:
6106  * - \ref SCIP_STAGE_PROBLEM
6107  * - \ref SCIP_STAGE_TRANSFORMED
6108  * - \ref SCIP_STAGE_PRESOLVING
6109  * - \ref SCIP_STAGE_PRESOLVED
6110  *
6111  * @post After calling this method \SCIP reaches one of the following stages:
6112  * - \ref SCIP_STAGE_PRESOLVING if the presolving process was interrupted
6113  * - \ref SCIP_STAGE_PRESOLVED if the presolving process was finished and did not solve the problem
6114  * - \ref SCIP_STAGE_SOLVED if the problem was solved during presolving
6115  *
6116  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
6117  */
6118 extern
6120  SCIP* scip /**< SCIP data structure */
6121  );
6122 
6123 /** transforms, presolves, and solves problem
6124  *
6125  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6126  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6127  *
6128  * @pre This method can be called if @p scip is in one of the following stages:
6129  * - \ref SCIP_STAGE_PROBLEM
6130  * - \ref SCIP_STAGE_TRANSFORMED
6131  * - \ref SCIP_STAGE_PRESOLVING
6132  * - \ref SCIP_STAGE_PRESOLVED
6133  * - \ref SCIP_STAGE_SOLVING
6134  * - \ref SCIP_STAGE_SOLVED
6135  *
6136  * @post After calling this method \SCIP reaches one of the following stages depending on if and when the solution
6137  * process was interrupted:
6138 
6139  * - \ref SCIP_STAGE_PRESOLVING if the solution process was interrupted during presolving
6140  * - \ref SCIP_STAGE_SOLVING if the solution process was interrupted during the tree search
6141  * - \ref SCIP_STAGE_SOLVED if the solving process was not interrupted
6142  *
6143  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
6144  */
6145 extern
6147  SCIP* scip /**< SCIP data structure */
6148  );
6149 
6150 /** frees branch and bound tree and all solution process data; statistics, presolving data and transformed problem is
6151  * preserved
6152  *
6153  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6154  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6155  *
6156  * @pre This method can be called if @p scip is in one of the following stages:
6157  * - \ref SCIP_STAGE_INIT
6158  * - \ref SCIP_STAGE_PROBLEM
6159  * - \ref SCIP_STAGE_TRANSFORMED
6160  * - \ref SCIP_STAGE_PRESOLVING
6161  * - \ref SCIP_STAGE_PRESOLVED
6162  * - \ref SCIP_STAGE_SOLVING
6163  * - \ref SCIP_STAGE_SOLVED
6164  *
6165  * @post If this method is called in \SCIP stage \ref SCIP_STAGE_INIT or \ref SCIP_STAGE_PROBLEM, the stage of
6166  * \SCIP is not changed; otherwise, the \SCIP stage is changed to \ref SCIP_STAGE_TRANSFORMED
6167  *
6168  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
6169  */
6170 extern
6172  SCIP* scip, /**< SCIP data structure */
6173  SCIP_Bool restart /**< should certain data be preserved for improved restarting? */
6174  );
6175 
6176 /** frees all solution process data including presolving and transformed problem, only original problem is kept
6177  *
6178  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6179  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6180  *
6181  * @pre This method can be called if @p scip is in one of the following stages:
6182  * - \ref SCIP_STAGE_INIT
6183  * - \ref SCIP_STAGE_PROBLEM
6184  * - \ref SCIP_STAGE_TRANSFORMED
6185  * - \ref SCIP_STAGE_PRESOLVING
6186  * - \ref SCIP_STAGE_PRESOLVED
6187  * - \ref SCIP_STAGE_SOLVING
6188  * - \ref SCIP_STAGE_SOLVED
6189  *
6190  * @post After calling this method \SCIP reaches one of the following stages:
6191  * - \ref SCIP_STAGE_INIT if the method was called from \SCIP stage \ref SCIP_STAGE_INIT
6192  * - \ref SCIP_STAGE_PROBLEM if the method was called from any other of the allowed stages
6193  *
6194  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
6195  */
6196 extern
6198  SCIP* scip /**< SCIP data structure */
6199  );
6200 
6201 /** informs \SCIP that the solving process should be interrupted as soon as possible (e.g., after the current node has
6202  * been solved)
6203  *
6204  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6205  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6206  *
6207  * @pre This method can be called if @p scip is in one of the following stages:
6208  * - \ref SCIP_STAGE_PROBLEM
6209  * - \ref SCIP_STAGE_TRANSFORMING
6210  * - \ref SCIP_STAGE_TRANSFORMED
6211  * - \ref SCIP_STAGE_INITPRESOLVE
6212  * - \ref SCIP_STAGE_PRESOLVING
6213  * - \ref SCIP_STAGE_EXITPRESOLVE
6214  * - \ref SCIP_STAGE_PRESOLVED
6215  * - \ref SCIP_STAGE_SOLVING
6216  * - \ref SCIP_STAGE_SOLVED
6217  * - \ref SCIP_STAGE_EXITSOLVE
6218  * - \ref SCIP_STAGE_FREETRANS
6219  *
6220  * @note the \SCIP stage does not get changed
6221  */
6222 extern
6224  SCIP* scip /**< SCIP data structure */
6225  );
6226 
6227 /** informs SCIP that the solving process should be restarted as soon as possible (e.g., after the current node has
6228  * been solved)
6229  *
6230  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6231  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6232  *
6233  * @pre This method can be called if @p scip is in one of the following stages:
6234  * - \ref SCIP_STAGE_INITPRESOLVE
6235  * - \ref SCIP_STAGE_PRESOLVING
6236  * - \ref SCIP_STAGE_EXITPRESOLVE
6237  * - \ref SCIP_STAGE_SOLVING
6238  *
6239  * @note the \SCIP stage does not get changed
6240  */
6241 extern
6243  SCIP* scip /**< SCIP data structure */
6244  );
6245 
6246 /** include specific heuristics and branching rules for reoptimization
6247  *
6248  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6249  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6250  *
6251  * @pre This method can be called if @p scip is in one of the following stages:
6252  * - \ref SCIP_STAGE_PROBLEM
6253  */
6254 extern
6256  SCIP* scip, /**< SCIP data structure */
6257  SCIP_Bool enable /**< enable reoptimization */
6258  );
6259 
6260 /** returns whether reoptimization is enabledor not */
6261 extern
6263  SCIP* scip /**< SCIP data structure */
6264  );
6265 
6266 /** returns the stored solutions corresponding to a given run */
6267 extern
6269  SCIP* scip, /**< SCIP data structue */
6270  int run, /**< number of the run */
6271  SCIP_SOL** sols, /**< array to store solutions */
6272  int allocmem, /**< allocated size of the array */
6273  int* nsols /**< number of solutions */
6274  );
6275 
6276 /** mark all stored solutions as not updated */
6277 extern
6279  SCIP* scip /**< SCIP data structure */
6280  );
6281 
6282 /** check if the reoptimization process should be restarted
6283  *
6284  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6285  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6286  *
6287  * @pre This method can be called if @p scip is in one of the following stages:
6288  * - \ref SCIP_STAGE_TRANSFORMED
6289  * - \ref SCIP_STAGE_SOLVING
6290  */
6291 extern
6293  SCIP* scip, /**< SCIP data structure */
6294  SCIP_NODE* node, /**< current node of the branch and bound tree (or NULL) */
6295  SCIP_Bool* restart /**< pointer to store of the reoptimitation process should be restarted */
6296  );
6297 
6298 /** save bound change based on dual information in the reoptimization tree
6299  *
6300  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6301  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6302  *
6303  * @pre This method can be called if @p scip is in one of the following stages:
6304  * - \ref SCIP_STAGE_SOLVING
6305  * - \ref SCIP_STAGE_SOLVED
6306  */
6307 extern
6309  SCIP* scip, /**< SCIP data structure */
6310  SCIP_NODE* node, /**< node of the search tree */
6311  SCIP_VAR* var, /**< variable whose bound changed */
6312  SCIP_Real newbound, /**< new bound of the variable */
6313  SCIP_Real oldbound /**< old bound of the variable */
6314  );
6315 
6316 /** returns the optimal solution of the last iteration or NULL of none exists */
6317 extern
6319  SCIP* scip /**< SCIP data structure */
6320  );
6321 
6322 /** returns the objective coefficent of a given variable in a previous iteration
6323  *
6324  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6325  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6326  *
6327  * @pre This method can be called if @p scip is in one of the following stages:
6328  * - \ref SCIP_STAGE_PRESOLVING
6329  * - \ref SCIP_STAGE_SOLVING
6330  */
6331 extern
6333  SCIP* scip, /**< SCIP data structure */
6334  SCIP_VAR* var, /**< variable */
6335  int run, /**< number of the run */
6336  SCIP_Real* objcoef /**< pointer to store the objective coefficient */
6337  );
6338 
6339 /** returns whether we are in the restarting phase
6340  *
6341  * @return TRUE, if we are in the restarting phase; FALSE, otherwise
6342  *
6343  * @pre This method can be called if @p scip is in one of the following stages:
6344  * - \ref SCIP_STAGE_INITPRESOLVE
6345  * - \ref SCIP_STAGE_PRESOLVING
6346  * - \ref SCIP_STAGE_EXITPRESOLVE
6347  * - \ref SCIP_STAGE_PRESOLVED
6348  * - \ref SCIP_STAGE_INITSOLVE
6349  * - \ref SCIP_STAGE_SOLVING
6350  * - \ref SCIP_STAGE_SOLVED
6351  * - \ref SCIP_STAGE_EXITSOLVE
6352  * - \ref SCIP_STAGE_FREETRANS
6353  */
6354 extern
6356  SCIP* scip /**< SCIP data structure */
6357  );
6358 
6359 /**@} */
6360 
6361 
6362 
6363 
6364 /*
6365  * variable methods
6366  */
6367 
6368 /**@name Variable Methods */
6369 /**@{ */
6370 
6371 /** creates and captures problem variable; if variable is of integral type, fractional bounds are automatically rounded;
6372  * an integer variable with bounds zero and one is automatically converted into a binary variable;
6373  *
6374  * @warning When doing column generation and the original problem is a maximization problem, notice that SCIP will
6375  * transform the problem into a minimization problem by multiplying the objective function by -1. Thus, the
6376  * original objective function value of variables created during the solving process has to be multiplied by
6377  * -1, too.
6378  *
6379  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6380  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6381  *
6382  * @pre This method can be called if @p scip is in one of the following stages:
6383  * - \ref SCIP_STAGE_PROBLEM
6384  * - \ref SCIP_STAGE_TRANSFORMING
6385  * - \ref SCIP_STAGE_INITPRESOLVE
6386  * - \ref SCIP_STAGE_PRESOLVING
6387  * - \ref SCIP_STAGE_EXITPRESOLVE
6388  * - \ref SCIP_STAGE_PRESOLVED
6389  * - \ref SCIP_STAGE_SOLVING
6390  *
6391  * @note the variable gets captured, hence at one point you have to release it using the method SCIPreleaseVar()
6392  */
6393 extern
6395  SCIP* scip, /**< SCIP data structure */
6396  SCIP_VAR** var, /**< pointer to variable object */
6397  const char* name, /**< name of variable, or NULL for automatic name creation */
6398  SCIP_Real lb, /**< lower bound of variable */
6399  SCIP_Real ub, /**< upper bound of variable */
6400  SCIP_Real obj, /**< objective function value */
6401  SCIP_VARTYPE vartype, /**< type of variable */
6402  SCIP_Bool initial, /**< should var's column be present in the initial root LP? */
6403  SCIP_Bool removable, /**< is var's column removable from the LP (due to aging or cleanup)? */
6404  SCIP_DECL_VARDELORIG ((*vardelorig)), /**< frees user data of original variable, or NULL */
6405  SCIP_DECL_VARTRANS ((*vartrans)), /**< creates transformed user data by transforming original user data, or NULL */
6406  SCIP_DECL_VARDELTRANS ((*vardeltrans)), /**< frees user data of transformed variable, or NULL */
6407  SCIP_DECL_VARCOPY ((*varcopy)), /**< copies variable data if wanted to subscip, or NULL */
6408  SCIP_VARDATA* vardata /**< user data for this specific variable, or NULL */
6409  );
6410 
6411 /** creates and captures problem variable with optional callbacks and variable data set to NULL, which can be set
6412  * afterwards using SCIPvarSetDelorigData(), SCIPvarSetTransData(),
6413  * SCIPvarSetDeltransData(), SCIPvarSetCopy(), and SCIPvarSetData(); sets variable flags initial=TRUE
6414  * and removable = FALSE, which can be adjusted by using SCIPvarSetInitial() and SCIPvarSetRemovable(), resp.;
6415  * if variable is of integral type, fractional bounds are automatically rounded;
6416  * an integer variable with bounds zero and one is automatically converted into a binary variable;
6417  *
6418  * @warning When doing column generation and the original problem is a maximization problem, notice that SCIP will
6419  * transform the problem into a minimization problem by multiplying the objective function by -1. Thus, the
6420  * original objective function value of variables created during the solving process has to be multiplied by
6421  * -1, too.
6422  *
6423  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6424  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6425  *
6426  * @pre This method can be called if @p scip is in one of the following stages:
6427  * - \ref SCIP_STAGE_PROBLEM
6428  * - \ref SCIP_STAGE_TRANSFORMING
6429  * - \ref SCIP_STAGE_INITPRESOLVE
6430  * - \ref SCIP_STAGE_PRESOLVING
6431  * - \ref SCIP_STAGE_EXITPRESOLVE
6432  * - \ref SCIP_STAGE_PRESOLVED
6433  * - \ref SCIP_STAGE_SOLVING
6434  *
6435  * @note the variable gets captured, hence at one point you have to release it using the method SCIPreleaseVar()
6436  */
6437 extern
6439  SCIP* scip, /**< SCIP data structure */
6440  SCIP_VAR** var, /**< pointer to variable object */
6441  const char* name, /**< name of variable, or NULL for automatic name creation */
6442  SCIP_Real lb, /**< lower bound of variable */
6443  SCIP_Real ub, /**< upper bound of variable */
6444  SCIP_Real obj, /**< objective function value */
6445  SCIP_VARTYPE vartype /**< type of variable */
6446  );
6447 
6448 /** outputs the variable name to the file stream
6449  *
6450  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6451  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6452  *
6453  * @pre This method can be called if @p scip is in one of the following stages:
6454  * - \ref SCIP_STAGE_PROBLEM
6455  * - \ref SCIP_STAGE_TRANSFORMING
6456  * - \ref SCIP_STAGE_TRANSFORMED
6457  * - \ref SCIP_STAGE_INITPRESOLVE
6458  * - \ref SCIP_STAGE_PRESOLVING
6459  * - \ref SCIP_STAGE_EXITPRESOLVE
6460  * - \ref SCIP_STAGE_PRESOLVED
6461  * - \ref SCIP_STAGE_INITSOLVE
6462  * - \ref SCIP_STAGE_SOLVING
6463  * - \ref SCIP_STAGE_SOLVED
6464  * - \ref SCIP_STAGE_EXITSOLVE
6465  * - \ref SCIP_STAGE_FREETRANS
6466  */
6467 extern
6469  SCIP* scip, /**< SCIP data structure */
6470  FILE* file, /**< output file, or NULL for stdout */
6471  SCIP_VAR* var, /**< variable to output */
6472  SCIP_Bool type /**< should the variable type be also posted */
6473  );
6474 
6475 /** print the given list of variables to output stream separated by the given delimiter character;
6476  *
6477  * i. e. the variables x1, x2, ..., xn with given delimiter ',' are written as: <x1>, <x2>, ..., <xn>;
6478  *
6479  * the method SCIPparseVarsList() can parse such a string
6480  *
6481  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6482  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6483  *
6484  * @pre This method can be called if @p scip is in one of the following stages:
6485  * - \ref SCIP_STAGE_PROBLEM
6486  * - \ref SCIP_STAGE_TRANSFORMING
6487  * - \ref SCIP_STAGE_TRANSFORMED
6488  * - \ref SCIP_STAGE_INITPRESOLVE
6489  * - \ref SCIP_STAGE_PRESOLVING
6490  * - \ref SCIP_STAGE_EXITPRESOLVE
6491  * - \ref SCIP_STAGE_PRESOLVED
6492  * - \ref SCIP_STAGE_INITSOLVE
6493  * - \ref SCIP_STAGE_SOLVING
6494  * - \ref SCIP_STAGE_SOLVED
6495  * - \ref SCIP_STAGE_EXITSOLVE
6496  * - \ref SCIP_STAGE_FREETRANS
6497  *
6498  * @note The printing process is done via the message handler system.
6499  */
6500 extern
6502  SCIP* scip, /**< SCIP data structure */
6503  FILE* file, /**< output file, or NULL for stdout */
6504  SCIP_VAR** vars, /**< variable array to output */
6505  int nvars, /**< number of variables */
6506  SCIP_Bool type, /**< should the variable type be also posted */
6507  char delimiter /**< character which is used for delimitation */
6508  );
6509 
6510 /** print the given variables and coefficients as linear sum in the following form
6511  * c1 <x1> + c2 <x2> ... + cn <xn>
6512  *
6513  * This string can be parsed by the method SCIPparseVarsLinearsum().
6514  *
6515  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6516  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6517  *
6518  * @pre This method can be called if @p scip is in one of the following stages:
6519  * - \ref SCIP_STAGE_PROBLEM
6520  * - \ref SCIP_STAGE_TRANSFORMING
6521  * - \ref SCIP_STAGE_TRANSFORMED
6522  * - \ref SCIP_STAGE_INITPRESOLVE
6523  * - \ref SCIP_STAGE_PRESOLVING
6524  * - \ref SCIP_STAGE_EXITPRESOLVE
6525  * - \ref SCIP_STAGE_PRESOLVED
6526  * - \ref SCIP_STAGE_INITSOLVE
6527  * - \ref SCIP_STAGE_SOLVING
6528  * - \ref SCIP_STAGE_SOLVED
6529  * - \ref SCIP_STAGE_EXITSOLVE
6530  * - \ref SCIP_STAGE_FREETRANS
6531  *
6532  * @note The printing process is done via the message handler system.
6533  */
6534 extern
6536  SCIP* scip, /**< SCIP data structure */
6537  FILE* file, /**< output file, or NULL for stdout */
6538  SCIP_VAR** vars, /**< variable array to output */
6539  SCIP_Real* vals, /**< array of coefficients or NULL if all coefficients are 1.0 */
6540  int nvars, /**< number of variables */
6541  SCIP_Bool type /**< should the variable type be also posted */
6542  );
6543 
6544 /** print the given monomials as polynomial in the following form
6545  * c1 <x11>^e11 <x12>^e12 ... <x1n>^e1n + c2 <x21>^e21 <x22>^e22 ... + ... + cn <xn1>^en1 ...
6546  *
6547  * This string can be parsed by the method SCIPparseVarsPolynomial().
6548  *
6549  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6550  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6551  *
6552  * @pre This method can be called if @p scip is in one of the following stages:
6553  * - \ref SCIP_STAGE_PROBLEM
6554  * - \ref SCIP_STAGE_TRANSFORMING
6555  * - \ref SCIP_STAGE_TRANSFORMED
6556  * - \ref SCIP_STAGE_INITPRESOLVE
6557  * - \ref SCIP_STAGE_PRESOLVING
6558  * - \ref SCIP_STAGE_EXITPRESOLVE
6559  * - \ref SCIP_STAGE_PRESOLVED
6560  * - \ref SCIP_STAGE_INITSOLVE
6561  * - \ref SCIP_STAGE_SOLVING
6562  * - \ref SCIP_STAGE_SOLVED
6563  * - \ref SCIP_STAGE_EXITSOLVE
6564  * - \ref SCIP_STAGE_FREETRANS
6565  *
6566  * @note The printing process is done via the message handler system.
6567  */
6568 extern
6570  SCIP* scip, /**< SCIP data structure */
6571  FILE* file, /**< output file, or NULL for stdout */
6572  SCIP_VAR*** monomialvars, /**< arrays with variables for each monomial */
6573  SCIP_Real** monomialexps, /**< arrays with variable exponents, or NULL if always 1.0 */
6574  SCIP_Real* monomialcoefs, /**< array with monomial coefficients */
6575  int* monomialnvars, /**< array with number of variables for each monomial */
6576  int nmonomials, /**< number of monomials */
6577  SCIP_Bool type /**< should the variable type be also posted */
6578  );
6579 
6580 /** parses variable information (in cip format) out of a string; if the parsing process was successful a variable is
6581  * created and captured; if variable is of integral type, fractional bounds are automatically rounded; an integer
6582  * variable with bounds zero and one is automatically converted into a binary variable
6583  *
6584  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6585  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6586  *
6587  * @pre This method can be called if @p scip is in one of the following stages:
6588  * - \ref SCIP_STAGE_PROBLEM
6589  * - \ref SCIP_STAGE_TRANSFORMING
6590  * - \ref SCIP_STAGE_INITPRESOLVE
6591  * - \ref SCIP_STAGE_PRESOLVING
6592  * - \ref SCIP_STAGE_EXITPRESOLVE
6593  * - \ref SCIP_STAGE_PRESOLVED
6594  * - \ref SCIP_STAGE_SOLVING
6595  */
6596 extern
6598  SCIP* scip, /**< SCIP data structure */
6599  SCIP_VAR** var, /**< pointer to store the problem variable */
6600  const char* str, /**< string to parse */
6601  SCIP_Bool initial, /**< should var's column be present in the initial root LP? */
6602  SCIP_Bool removable, /**< is var's column removable from the LP (due to aging or cleanup)? */
6603  SCIP_DECL_VARCOPY ((*varcopy)), /**< copies variable data if wanted to subscip, or NULL */
6604  SCIP_DECL_VARDELORIG ((*vardelorig)), /**< frees user data of original variable */
6605  SCIP_DECL_VARTRANS ((*vartrans)), /**< creates transformed user data by transforming original user data */
6606  SCIP_DECL_VARDELTRANS ((*vardeltrans)), /**< frees user data of transformed variable */
6607  SCIP_VARDATA* vardata, /**< user data for this specific variable */
6608  char** endptr, /**< pointer to store the final string position if successfully */
6609  SCIP_Bool* success /**< pointer store if the paring process was successful */
6610  );
6611 
6612 /** parses the given string for a variable name and stores the variable in the corresponding pointer if such a variable
6613  * exits and returns the position where the parsing stopped
6614  *
6615  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6616  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6617  *
6618  * @pre This method can be called if @p scip is in one of the following stages:
6619  * - \ref SCIP_STAGE_PROBLEM
6620  * - \ref SCIP_STAGE_TRANSFORMING
6621  * - \ref SCIP_STAGE_INITPRESOLVE
6622  * - \ref SCIP_STAGE_PRESOLVING
6623  * - \ref SCIP_STAGE_EXITPRESOLVE
6624  * - \ref SCIP_STAGE_PRESOLVED
6625  * - \ref SCIP_STAGE_SOLVING
6626  */
6627 extern
6629  SCIP* scip, /**< SCIP data structure */
6630  const char* str, /**< string to parse */
6631  SCIP_VAR** var, /**< pointer to store the problem variable, or NULL if it does not exit */
6632  char** endptr /**< pointer to store the final string position if successfully */
6633  );
6634 
6635 /** parse the given string as variable list (here ',' is the delimiter)) (<x1>, <x2>, ..., <xn>) (see
6636  * SCIPwriteVarsList() ); if it was successful, the pointer success is set to TRUE
6637  *
6638  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6639  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6640  *
6641  * @pre This method can be called if @p scip is in one of the following stages:
6642  * - \ref SCIP_STAGE_PROBLEM
6643  * - \ref SCIP_STAGE_TRANSFORMING
6644  * - \ref SCIP_STAGE_INITPRESOLVE
6645  * - \ref SCIP_STAGE_PRESOLVING
6646  * - \ref SCIP_STAGE_EXITPRESOLVE
6647  * - \ref SCIP_STAGE_PRESOLVED
6648  * - \ref SCIP_STAGE_SOLVING
6649  *
6650  * @note the pointer success in only set to FALSE in the case that a variable with a parsed variable name does not exist
6651  *
6652  * @note If the number of (parsed) variables is greater than the available slots in the variable array, nothing happens
6653  * except that the required size is stored in the corresponding integer; the reason for this approach is that we
6654  * cannot reallocate memory, since we do not know how the memory has been allocated (e.g., by a C++ 'new' or SCIP
6655  * memory functions).
6656  */
6657 extern
6659  SCIP* scip, /**< SCIP data structure */
6660  const char* str, /**< string to parse */
6661  SCIP_VAR** vars, /**< array to store the parsed variable */
6662  int* nvars, /**< pointer to store number of parsed variables */
6663  int varssize, /**< size of the variable array */
6664  int* requiredsize, /**< pointer to store the required array size for the active variables */
6665  char** endptr, /**< pointer to store the final string position if successfully */
6666  char delimiter, /**< character which is used for delimitation */
6667  SCIP_Bool* success /**< pointer to store the whether the parsing was successfully or not */
6668  );
6669 
6670 /** parse the given string as linear sum of variables and coefficients (c1 <x1> + c2 <x2> + ... + cn <xn>)
6671  * (see SCIPwriteVarsLinearsum() ); if it was successful, the pointer success is set to TRUE
6672  *
6673  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6674  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6675  *
6676  * @pre This method can be called if @p scip is in one of the following stages:
6677  * - \ref SCIP_STAGE_PROBLEM
6678  * - \ref SCIP_STAGE_TRANSFORMING
6679  * - \ref SCIP_STAGE_INITPRESOLVE
6680  * - \ref SCIP_STAGE_PRESOLVING
6681  * - \ref SCIP_STAGE_EXITPRESOLVE
6682  * - \ref SCIP_STAGE_PRESOLVED
6683  * - \ref SCIP_STAGE_SOLVING
6684  *
6685  * @note the pointer success in only set to FALSE in the case that a variable with a parsed variable name does not exist
6686  *
6687  * @note If the number of (parsed) variables is greater than the available slots in the variable array, nothing happens
6688  * except that the required size is stored in the corresponding integer; the reason for this approach is that we
6689  * cannot reallocate memory, since we do not know how the memory has been allocated (e.g., by a C++ 'new' or SCIP
6690  * memory functions).
6691  */
6692 extern
6694  SCIP* scip, /**< SCIP data structure */
6695  const char* str, /**< string to parse */
6696  SCIP_VAR** vars, /**< array to store the parsed variables */
6697  SCIP_Real* vals, /**< array to store the parsed coefficients */
6698  int* nvars, /**< pointer to store number of parsed variables */
6699  int varssize, /**< size of the variable array */
6700  int* requiredsize, /**< pointer to store the required array size for the active variables */
6701  char** endptr, /**< pointer to store the final string position if successfully */
6702  SCIP_Bool* success /**< pointer to store the whether the parsing was successfully or not */
6703  );
6704 
6705 /** parse the given string as polynomial of variables and coefficients
6706  * (c1 <x11>^e11 <x12>^e12 ... <x1n>^e1n + c2 <x21>^e21 <x22>^e22 ... + ... + cn <xn1>^en1 ...)
6707  * (see SCIPwriteVarsPolynomial()); if it was successful, the pointer success is set to TRUE
6708  *
6709  * The user has to call SCIPfreeParseVarsPolynomialData(scip, monomialvars, monomialexps,
6710  * monomialcoefs, monomialnvars, *nmonomials) short after SCIPparseVarsPolynomial to free all the
6711  * allocated memory again. Do not keep the arrays created by SCIPparseVarsPolynomial around, since
6712  * they use buffer memory that is intended for short term use only.
6713  *
6714  * Parsing is stopped at the end of string (indicated by the \\0-character) or when no more monomials
6715  * are recognized.
6716  *
6717  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6718  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6719  *
6720  * @pre This method can be called if @p scip is in one of the following stages:
6721  * - \ref SCIP_STAGE_PROBLEM
6722  * - \ref SCIP_STAGE_TRANSFORMING
6723  * - \ref SCIP_STAGE_INITPRESOLVE
6724  * - \ref SCIP_STAGE_PRESOLVING
6725  * - \ref SCIP_STAGE_EXITPRESOLVE
6726  * - \ref SCIP_STAGE_PRESOLVED
6727  * - \ref SCIP_STAGE_SOLVING
6728  */
6729 extern
6731  SCIP* scip, /**< SCIP data structure */
6732  const char* str, /**< string to parse */
6733  SCIP_VAR**** monomialvars, /**< pointer to store arrays with variables for each monomial */
6734  SCIP_Real*** monomialexps, /**< pointer to store arrays with variable exponents */
6735  SCIP_Real** monomialcoefs, /**< pointer to store array with monomial coefficients */
6736  int** monomialnvars, /**< pointer to store array with number of variables for each monomial */
6737  int* nmonomials, /**< pointer to store number of parsed monomials */
6738  char** endptr, /**< pointer to store the final string position if successfully */
6739  SCIP_Bool* success /**< pointer to store the whether the parsing was successfully or not */
6740  );
6741 
6742 /** frees memory allocated when parsing a polynomial from a string
6743  *
6744  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6745  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6746  *
6747  * @pre This method can be called if @p scip is in one of the following stages:
6748  * - \ref SCIP_STAGE_PROBLEM
6749  * - \ref SCIP_STAGE_TRANSFORMING
6750  * - \ref SCIP_STAGE_INITPRESOLVE
6751  * - \ref SCIP_STAGE_PRESOLVING
6752  * - \ref SCIP_STAGE_EXITPRESOLVE
6753  * - \ref SCIP_STAGE_PRESOLVED
6754  * - \ref SCIP_STAGE_SOLVING
6755  */
6756 extern
6758  SCIP* scip, /**< SCIP data structure */
6759  SCIP_VAR**** monomialvars, /**< pointer to store arrays with variables for each monomial */
6760  SCIP_Real*** monomialexps, /**< pointer to store arrays with variable exponents */
6761  SCIP_Real** monomialcoefs, /**< pointer to store array with monomial coefficients */
6762  int** monomialnvars, /**< pointer to store array with number of variables for each monomial */
6763  int nmonomials /**< pointer to store number of parsed monomials */
6764  );
6765 
6766 /** increases usage counter of variable
6767  *
6768  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6769  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6770  *
6771  * @pre This method can be called if @p scip is in one of the following stages:
6772  * - \ref SCIP_STAGE_PROBLEM
6773  * - \ref SCIP_STAGE_TRANSFORMING
6774  * - \ref SCIP_STAGE_TRANSFORMED
6775  * - \ref SCIP_STAGE_INITPRESOLVE
6776  * - \ref SCIP_STAGE_PRESOLVING
6777  * - \ref SCIP_STAGE_EXITPRESOLVE
6778  * - \ref SCIP_STAGE_PRESOLVED
6779  * - \ref SCIP_STAGE_INITSOLVE
6780  * - \ref SCIP_STAGE_SOLVING
6781  * - \ref SCIP_STAGE_SOLVED
6782  * - \ref SCIP_STAGE_EXITSOLVE
6783  */
6784 extern
6786  SCIP* scip, /**< SCIP data structure */
6787  SCIP_VAR* var /**< variable to capture */
6788  );
6789 
6790 /** decreases usage counter of variable, if the usage pointer reaches zero the variable gets freed
6791  *
6792  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6793  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6794  *
6795  * @pre This method can be called if @p scip is in one of the following stages:
6796  * - \ref SCIP_STAGE_PROBLEM
6797  * - \ref SCIP_STAGE_TRANSFORMING
6798  * - \ref SCIP_STAGE_TRANSFORMED
6799  * - \ref SCIP_STAGE_INITPRESOLVE
6800  * - \ref SCIP_STAGE_PRESOLVING
6801  * - \ref SCIP_STAGE_EXITPRESOLVE
6802  * - \ref SCIP_STAGE_PRESOLVED
6803  * - \ref SCIP_STAGE_INITSOLVE
6804  * - \ref SCIP_STAGE_SOLVING
6805  * - \ref SCIP_STAGE_SOLVED
6806  * - \ref SCIP_STAGE_EXITSOLVE
6807  * - \ref SCIP_STAGE_FREETRANS
6808  *
6809  * @note the pointer of the variable will be NULLed
6810  */
6811 extern
6813  SCIP* scip, /**< SCIP data structure */
6814  SCIP_VAR** var /**< pointer to variable */
6815  );
6816 
6817 /** changes the name of a variable
6818  *
6819  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6820  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6821  *
6822  * @pre This method can only be called if @p scip is in stage \ref SCIP_STAGE_PROBLEM
6823  *
6824  * @note to get the current name of a variable, use SCIPvarGetName() from pub_var.h
6825  */
6826 extern
6828  SCIP* scip, /**< SCIP data structure */
6829  SCIP_VAR* var, /**< variable */
6830  const char* name /**< new name of constraint */
6831  );
6832 
6833 /** gets and captures transformed variable of a given variable; if the variable is not yet transformed,
6834  * a new transformed variable for this variable is created
6835  *
6836  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6837  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6838  *
6839  * @pre This method can be called if @p scip is in one of the following stages:
6840  * - \ref SCIP_STAGE_TRANSFORMING
6841  * - \ref SCIP_STAGE_TRANSFORMED
6842  * - \ref SCIP_STAGE_INITPRESOLVE
6843  * - \ref SCIP_STAGE_PRESOLVING
6844  * - \ref SCIP_STAGE_EXITPRESOLVE
6845  * - \ref SCIP_STAGE_PRESOLVED
6846  * - \ref SCIP_STAGE_INITSOLVE
6847  * - \ref SCIP_STAGE_SOLVING
6848  */
6849 extern
6851  SCIP* scip, /**< SCIP data structure */
6852  SCIP_VAR* var, /**< variable to get/create transformed variable for */
6853  SCIP_VAR** transvar /**< pointer to store the transformed variable */
6854  );
6855 
6856 /** gets and captures transformed variables for an array of variables;
6857  * if a variable of the array is not yet transformed, a new transformed variable for this variable is created;
6858  * it is possible to call this method with vars == transvars
6859  *
6860  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6861  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6862  *
6863  * @pre This method can be called if @p scip is in one of the following stages:
6864  * - \ref SCIP_STAGE_TRANSFORMING
6865  * - \ref SCIP_STAGE_TRANSFORMED
6866  * - \ref SCIP_STAGE_INITPRESOLVE
6867  * - \ref SCIP_STAGE_PRESOLVING
6868  * - \ref SCIP_STAGE_EXITPRESOLVE
6869  * - \ref SCIP_STAGE_PRESOLVED
6870  * - \ref SCIP_STAGE_INITSOLVE
6871  * - \ref SCIP_STAGE_SOLVING
6872  */
6873 extern
6875  SCIP* scip, /**< SCIP data structure */
6876  int nvars, /**< number of variables to get/create transformed variables for */
6877  SCIP_VAR** vars, /**< array with variables to get/create transformed variables for */
6878  SCIP_VAR** transvars /**< array to store the transformed variables */
6879  );
6880 
6881 /** gets corresponding transformed variable of a given variable;
6882  * returns NULL as transvar, if transformed variable is not yet existing
6883  *
6884  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6885  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6886  *
6887  * @pre This method can be called if @p scip is in one of the following stages:
6888  * - \ref SCIP_STAGE_TRANSFORMING
6889  * - \ref SCIP_STAGE_TRANSFORMED
6890  * - \ref SCIP_STAGE_INITPRESOLVE
6891  * - \ref SCIP_STAGE_PRESOLVING
6892  * - \ref SCIP_STAGE_EXITPRESOLVE
6893  * - \ref SCIP_STAGE_PRESOLVED
6894  * - \ref SCIP_STAGE_INITSOLVE
6895  * - \ref SCIP_STAGE_SOLVING
6896  * - \ref SCIP_STAGE_SOLVED
6897  * - \ref SCIP_STAGE_EXITSOLVE
6898  * - \ref SCIP_STAGE_FREETRANS
6899  */
6900 extern
6902  SCIP* scip, /**< SCIP data structure */
6903  SCIP_VAR* var, /**< variable to get transformed variable for */
6904  SCIP_VAR** transvar /**< pointer to store the transformed variable */
6905  );
6906 
6907 /** gets corresponding transformed variables for an array of variables;
6908  * stores NULL in a transvars slot, if the transformed variable is not yet existing;
6909  * it is possible to call this method with vars == transvars, but remember that variables that are not
6910  * yet transformed will be replaced with NULL
6911  *
6912  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6913  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6914  *
6915  * @pre This method can be called if @p scip is in one of the following stages:
6916  * - \ref SCIP_STAGE_TRANSFORMING
6917  * - \ref SCIP_STAGE_TRANSFORMED
6918  * - \ref SCIP_STAGE_INITPRESOLVE
6919  * - \ref SCIP_STAGE_PRESOLVING
6920  * - \ref SCIP_STAGE_EXITPRESOLVE
6921  * - \ref SCIP_STAGE_PRESOLVED
6922  * - \ref SCIP_STAGE_INITSOLVE
6923  * - \ref SCIP_STAGE_SOLVING
6924  * - \ref SCIP_STAGE_SOLVED
6925  * - \ref SCIP_STAGE_EXITSOLVE
6926  * - \ref SCIP_STAGE_FREETRANS
6927  */
6928 extern
6930  SCIP* scip, /**< SCIP data structure */
6931  int nvars, /**< number of variables to get transformed variables for */
6932  SCIP_VAR** vars, /**< array with variables to get transformed variables for */
6933  SCIP_VAR** transvars /**< array to store the transformed variables */
6934  );
6935 
6936 /** gets negated variable x' = lb + ub - x of variable x; negated variable is created, if not yet existing
6937  *
6938  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6939  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6940  *
6941  * @pre This method can be called if @p scip is in one of the following stages:
6942  * - \ref SCIP_STAGE_PROBLEM
6943  * - \ref SCIP_STAGE_TRANSFORMING
6944  * - \ref SCIP_STAGE_TRANSFORMED
6945  * - \ref SCIP_STAGE_INITPRESOLVE
6946  * - \ref SCIP_STAGE_PRESOLVING
6947  * - \ref SCIP_STAGE_EXITPRESOLVE
6948  * - \ref SCIP_STAGE_PRESOLVED
6949  * - \ref SCIP_STAGE_INITSOLVE
6950  * - \ref SCIP_STAGE_SOLVING
6951  * - \ref SCIP_STAGE_SOLVED
6952  * - \ref SCIP_STAGE_EXITSOLVE
6953  * - \ref SCIP_STAGE_FREETRANS
6954  */
6955 extern
6957  SCIP* scip, /**< SCIP data structure */
6958  SCIP_VAR* var, /**< variable to get negated variable for */
6959  SCIP_VAR** negvar /**< pointer to store the negated variable */
6960  );
6961 
6962 /** gets negated variables x' = lb + ub - x of variables x; negated variables are created, if not yet existing
6963  *
6964  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6965  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6966  *
6967  * @pre This method can be called if @p scip is in one of the following stages:
6968  * - \ref SCIP_STAGE_PROBLEM
6969  * - \ref SCIP_STAGE_TRANSFORMING
6970  * - \ref SCIP_STAGE_TRANSFORMED
6971  * - \ref SCIP_STAGE_INITPRESOLVE
6972  * - \ref SCIP_STAGE_PRESOLVING
6973  * - \ref SCIP_STAGE_EXITPRESOLVE
6974  * - \ref SCIP_STAGE_PRESOLVED
6975  * - \ref SCIP_STAGE_INITSOLVE
6976  * - \ref SCIP_STAGE_SOLVING
6977  * - \ref SCIP_STAGE_SOLVED
6978  * - \ref SCIP_STAGE_EXITSOLVE
6979  * - \ref SCIP_STAGE_FREETRANS
6980  */
6981 extern
6983  SCIP* scip, /**< SCIP data structure */
6984  int nvars, /**< number of variables to get negated variables for */
6985  SCIP_VAR** vars, /**< array of variables to get negated variables for */
6986  SCIP_VAR** negvars /**< array to store the negated variables */
6987  );
6988 
6989 /** gets a binary variable that is equal to the given binary variable, and that is either active, fixed, or
6990  * multi-aggregated, or the negated variable of an active, fixed, or multi-aggregated variable
6991  *
6992  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6993  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6994  *
6995  * @pre This method can be called if @p scip is in one of the following stages:
6996  * - \ref SCIP_STAGE_PROBLEM
6997  * - \ref SCIP_STAGE_TRANSFORMED
6998  * - \ref SCIP_STAGE_INITPRESOLVE
6999  * - \ref SCIP_STAGE_PRESOLVING
7000  * - \ref SCIP_STAGE_EXITPRESOLVE
7001  * - \ref SCIP_STAGE_PRESOLVED
7002  * - \ref SCIP_STAGE_INITSOLVE
7003  * - \ref SCIP_STAGE_SOLVING
7004  * - \ref SCIP_STAGE_SOLVED
7005  * - \ref SCIP_STAGE_EXITSOLVE
7006  */
7007 extern
7009  SCIP* scip, /**< SCIP data structure */
7010  SCIP_VAR* var, /**< binary variable to get binary representative for */
7011  SCIP_VAR** repvar, /**< pointer to store the binary representative */
7012  SCIP_Bool* negated /**< pointer to store whether the negation of an active variable was returned */
7013  );
7014 
7015 /** gets binary variables that are equal to the given binary variables, and which are either active, fixed, or
7016  * multi-aggregated, or the negated variables of active, fixed, or multi-aggregated variables
7017  *
7018  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7019  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7020  *
7021  * @pre This method can be called if @p scip is in one of the following stages:
7022  * - \ref SCIP_STAGE_PROBLEM
7023  * - \ref SCIP_STAGE_TRANSFORMED
7024  * - \ref SCIP_STAGE_INITPRESOLVE
7025  * - \ref SCIP_STAGE_PRESOLVING
7026  * - \ref SCIP_STAGE_EXITPRESOLVE
7027  * - \ref SCIP_STAGE_PRESOLVED
7028  * - \ref SCIP_STAGE_INITSOLVE
7029  * - \ref SCIP_STAGE_SOLVING
7030  * - \ref SCIP_STAGE_SOLVED
7031  * - \ref SCIP_STAGE_EXITSOLVE
7032  */
7033 extern
7035  SCIP* scip, /**< SCIP data structure */
7036  int nvars, /**< number of binary variables to get representatives for */
7037  SCIP_VAR** vars, /**< binary variables to get binary representatives for */
7038  SCIP_VAR** repvars, /**< array to store the binary representatives */
7039  SCIP_Bool* negated /**< array to store whether the negation of an active variable was returned */
7040  );
7041 
7042 /** flattens aggregation graph of multi-aggregated variable in order to avoid exponential recursion later on
7043  *
7044  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7045  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7046  *
7047  * @pre This method can be called if @p scip is in one of the following stages:
7048  * - \ref SCIP_STAGE_INITPRESOLVE
7049  * - \ref SCIP_STAGE_PRESOLVING
7050  * - \ref SCIP_STAGE_EXITPRESOLVE
7051  * - \ref SCIP_STAGE_PRESOLVED
7052  * - \ref SCIP_STAGE_INITSOLVE
7053  * - \ref SCIP_STAGE_SOLVING
7054  * - \ref SCIP_STAGE_SOLVED
7055  */
7056 extern
7058  SCIP* scip, /**< SCIP data structure */
7059  SCIP_VAR* var /**< problem variable */
7060  );
7061 
7062 /** Transforms a given linear sum of variables, that is a_1*x_1 + ... + a_n*x_n + c into a corresponding linear sum of
7063  * active variables, that is b_1*y_1 + ... + b_m*y_m + d.
7064  *
7065  * If the number of needed active variables is greater than the available slots in the variable array, nothing happens
7066  * except that the required size is stored in the corresponding variable (requiredsize). Otherwise, the active variable
7067  * representation is stored in the variable array, scalar array and constant.
7068  *
7069  * The reason for this approach is that we cannot reallocate memory, since we do not know how the memory has been
7070  * allocated (e.g., by a C++ 'new' or SCIP functions).
7071  *
7072  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7073  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7074  *
7075  * @pre This method can be called if @p scip is in one of the following stages:
7076  * - \ref SCIP_STAGE_TRANSFORMED
7077  * - \ref SCIP_STAGE_INITPRESOLVE
7078  * - \ref SCIP_STAGE_PRESOLVING
7079  * - \ref SCIP_STAGE_EXITPRESOLVE
7080  * - \ref SCIP_STAGE_PRESOLVED
7081  * - \ref SCIP_STAGE_INITSOLVE
7082  * - \ref SCIP_STAGE_SOLVING
7083  * - \ref SCIP_STAGE_SOLVED
7084  * - \ref SCIP_STAGE_EXITSOLVE
7085  * - \ref SCIP_STAGE_FREETRANS
7086  *
7087  * @note The resulting linear sum is stored into the given variable array, scalar array, and constant. That means the
7088  * given entries are overwritten.
7089  *
7090  * @note That method can be used to convert a single variables into variable space of active variables. Therefore call
7091  * the method with the linear sum 1.0*x + 0.0.
7092  */
7093 extern
7095  SCIP* scip, /**< SCIP data structure */
7096  SCIP_VAR** vars, /**< variable array x_1, ..., x_n in the linear sum which will be
7097  * overwritten by the variable array y_1, ..., y_m in the linear sum
7098  * w.r.t. active variables */
7099  SCIP_Real* scalars, /**< scalars a_1, ..., a_n in linear sum which will be overwritten to the
7100  * scalars b_1, ..., b_m in the linear sum of the active variables */
7101  int* nvars, /**< pointer to number of variables in the linear sum which will be
7102  * overwritten by the number of variables in the linear sum corresponding
7103  * to the active variables */
7104  int varssize, /**< available slots in vars and scalars array which is needed to check if
7105  * the array are large enough for the linear sum w.r.t. active
7106  * variables */
7107  SCIP_Real* constant, /**< pointer to constant c in linear sum a_1*x_1 + ... + a_n*x_n + c which
7108  * will chnage to constant d in the linear sum b_1*y_1 + ... + b_m*y_m +
7109  * d w.r.t. the active variables */
7110  int* requiredsize, /**< pointer to store the required array size for the linear sum w.r.t. the
7111  * active variables */
7112  SCIP_Bool mergemultiples /**< should multiple occurrences of a var be replaced by a single coeff? */
7113  );
7114 
7115 /** transforms given variable, scalar and constant to the corresponding active, fixed, or
7116  * multi-aggregated variable, scalar and constant; if the variable resolves to a fixed variable,
7117  * "scalar" will be 0.0 and the value of the sum will be stored in "constant"; a multi-aggregation
7118  * with only one active variable (this can happen due to fixings after the multi-aggregation),
7119  * is treated like an aggregation; if the multi-aggregation constant is infinite, "scalar" will be 0.0
7120  *
7121  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7122  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7123  *
7124  * @pre This method can be called if @p scip is in one of the following stages:
7125  * - \ref SCIP_STAGE_TRANSFORMED
7126  * - \ref SCIP_STAGE_INITPRESOLVE
7127  * - \ref SCIP_STAGE_PRESOLVING
7128  * - \ref SCIP_STAGE_EXITPRESOLVE
7129  * - \ref SCIP_STAGE_PRESOLVED
7130  * - \ref SCIP_STAGE_INITSOLVE
7131  * - \ref SCIP_STAGE_SOLVING
7132  * - \ref SCIP_STAGE_SOLVED
7133  * - \ref SCIP_STAGE_EXITSOLVE
7134  * - \ref SCIP_STAGE_FREETRANS
7135  */
7136 extern
7138  SCIP* scip, /**< SCIP data structure */
7139  SCIP_VAR** var, /**< pointer to problem variable x in sum a*x + c */
7140  SCIP_Real* scalar, /**< pointer to scalar a in sum a*x + c */
7141  SCIP_Real* constant /**< pointer to constant c in sum a*x + c */
7142  );
7143 
7144 /** return for given variables all their active counterparts; all active variables will be pairwise different
7145  * @note It does not hold that the first output variable is the active variable for the first input variable.
7146  *
7147  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7148  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7149  *
7150  * @pre This method can be called if @p scip is in one of the following stages:
7151  * - \ref SCIP_STAGE_TRANSFORMED
7152  * - \ref SCIP_STAGE_INITPRESOLVE
7153  * - \ref SCIP_STAGE_PRESOLVING
7154  * - \ref SCIP_STAGE_EXITPRESOLVE
7155  * - \ref SCIP_STAGE_PRESOLVED
7156  * - \ref SCIP_STAGE_INITSOLVE
7157  * - \ref SCIP_STAGE_SOLVING
7158  * - \ref SCIP_STAGE_SOLVED
7159  * - \ref SCIP_STAGE_EXITSOLVE
7160  * - \ref SCIP_STAGE_FREETRANS
7161  */
7162 extern
7164  SCIP* scip, /**< SCIP data structure */
7165  SCIP_VAR** vars, /**< variable array with given variables and as output all active
7166  * variables, if enough slots exist */
7167  int* nvars, /**< number of given variables, and as output number of active variables,
7168  * if enough slots exist */
7169  int varssize, /**< available slots in vars array */
7170  int* requiredsize /**< pointer to store the required array size for the active variables */
7171  );
7172 
7173 /** returns the reduced costs of the variable in the current node's LP relaxation;
7174  * the current node has to have a feasible LP.
7175  *
7176  * returns SCIP_INVALID if the variable is active but not in the current LP;
7177  * returns 0 if the variable has been aggregated out or fixed in presolving.
7178  *
7179  * @pre This method can only be called if @p scip is in stage \ref SCIP_STAGE_SOLVING
7180  */
7181 extern
7183  SCIP* scip, /**< SCIP data structure */
7184  SCIP_VAR* var /**< variable to get reduced costs, should be a column in current node LP */
7185  );
7186 
7187 /** returns the implied reduced costs of the variable in the current node's LP relaxation;
7188  * the current node has to have a feasible LP.
7189  *
7190  * returns SCIP_INVALID if the variable is active but not in the current LP;
7191  * returns 0 if the variable has been aggregated out or fixed in presolving.
7192  *
7193  * @pre This method can only be called if @p scip is in stage \ref SCIP_STAGE_SOLVING
7194  */
7195 extern
7197  SCIP* scip, /**< SCIP data structure */
7198  SCIP_VAR* var, /**< variable to get reduced costs, should be a column in current node LP */
7199  SCIP_Bool varfixing /**< FALSE if for x == 0, TRUE for x == 1 */
7200  );
7201 
7202 /** returns the Farkas coefficient of the variable in the current node's LP relaxation;
7203  * the current node has to have an infeasible LP.
7204  *
7205  * returns SCIP_INVALID if the variable is active but not in the current LP;
7206  * returns 0 if the variable has been aggregated out or fixed in presolving.
7207  *
7208  * @pre This method can only be called if @p scip is in stage \ref SCIP_STAGE_SOLVING
7209  */
7210 extern
7212  SCIP* scip, /**< SCIP data structure */
7213  SCIP_VAR* var /**< variable to get reduced costs, should be a column in current node LP */
7214  );
7215 
7216 /** gets solution value for variable in current node
7217  *
7218  * @return solution value for variable in current node
7219  *
7220  * @pre This method can be called if @p scip is in one of the following stages:
7221  * - \ref SCIP_STAGE_PRESOLVED
7222  * - \ref SCIP_STAGE_SOLVING
7223  */
7224 extern
7226  SCIP* scip, /**< SCIP data structure */
7227  SCIP_VAR* var /**< variable to get solution value for */
7228  );
7229 
7230 /** gets solution values of multiple variables in current node
7231  *
7232  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7233  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7234  *
7235  * @pre This method can be called if @p scip is in one of the following stages:
7236  * - \ref SCIP_STAGE_PRESOLVED
7237  * - \ref SCIP_STAGE_SOLVING
7238  */
7239 extern
7241  SCIP* scip, /**< SCIP data structure */
7242  int nvars, /**< number of variables to get solution value for */
7243  SCIP_VAR** vars, /**< array with variables to get value for */
7244  SCIP_Real* vals /**< array to store solution values of variables */
7245  );
7246 
7247 /** sets the solution value of all variables in the global relaxation solution to zero
7248  *
7249  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7250  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7251  *
7252  * @pre This method can be called if @p scip is in one of the following stages:
7253  * - \ref SCIP_STAGE_PRESOLVED
7254  * - \ref SCIP_STAGE_SOLVING
7255  */
7256 extern
7258  SCIP* scip /**< SCIP data structure */
7259  );
7260 
7261 /** sets the value of the given variable in the global relaxation solution;
7262  * this solution can be filled by the relaxation handlers and can be used by heuristics and for separation;
7263  * You can use SCIPclearRelaxSolVals() to set all values to zero, initially;
7264  * after setting all solution values, you have to call SCIPmarkRelaxSolValid()
7265  * to inform SCIP that the stored solution is valid
7266  *
7267  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7268  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7269  *
7270  * @pre This method can be called if @p scip is in one of the following stages:
7271  * - \ref SCIP_STAGE_PRESOLVED
7272  * - \ref SCIP_STAGE_SOLVING
7273  */
7274 extern
7276  SCIP* scip, /**< SCIP data structure */
7277  SCIP_VAR* var, /**< variable to set value for */
7278  SCIP_Real val /**< solution value of variable */
7279  );
7280 
7281 /** sets the values of the given variables in the global relaxation solution;
7282  * this solution can be filled by the relaxation handlers and can be used by heuristics and for separation;
7283  * the solution is automatically cleared, s.t. all other variables get value 0.0
7284  *
7285  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7286  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7287  *
7288  * @pre This method can be called if @p scip is in one of the following stages:
7289  * - \ref SCIP_STAGE_PRESOLVED
7290  * - \ref SCIP_STAGE_SOLVING
7291  */
7292 extern
7294  SCIP* scip, /**< SCIP data structure */
7295  int nvars, /**< number of variables to set relaxation solution value for */
7296  SCIP_VAR** vars, /**< array with variables to set value for */
7297  SCIP_Real* vals /**< array with solution values of variables */
7298  );
7299 
7300 /** sets the values of the variables in the global relaxation solution to the values
7301  * in the given primal solution; the relaxation solution can be filled by the relaxation hanlders
7302  * and might be used by heuristics and for separation
7303  *
7304  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7305  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7306  *
7307  * @pre This method can be called if @p scip is in one of the following stages:
7308  * - \ref SCIP_STAGE_PRESOLVED
7309  * - \ref SCIP_STAGE_SOLVING
7310  */
7311 extern
7313  SCIP* scip, /**< SCIP data structure */
7314  SCIP_SOL* sol /**< primal relaxation solution */
7315  );
7316 
7317 /** returns whether the relaxation solution is valid
7318  *
7319  * @return TRUE, if the relaxation solution is valid; FALSE, otherwise
7320  *
7321  * @pre This method can be called if @p scip is in one of the following stages:
7322  * - \ref SCIP_STAGE_PRESOLVED
7323  * - \ref SCIP_STAGE_SOLVING
7324  */
7325 extern
7327  SCIP* scip /**< SCIP data structure */
7328  );
7329 
7330 /** informs SCIP, that the relaxation solution is valid
7331  *
7332  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7333  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7334  *
7335  * @pre This method can be called if @p scip is in one of the following stages:
7336  * - \ref SCIP_STAGE_PRESOLVED
7337  * - \ref SCIP_STAGE_SOLVING
7338  */
7339 extern
7341  SCIP* scip /**< SCIP data structure */
7342  );
7343 
7344 /** informs SCIP, that the relaxation solution is invalid
7345  *
7346  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7347  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7348  *
7349  * @pre This method can be called if @p scip is in one of the following stages:
7350  * - \ref SCIP_STAGE_PRESOLVED
7351  * - \ref SCIP_STAGE_SOLVING
7352  */
7353 extern
7355  SCIP* scip /**< SCIP data structure */
7356  );
7357 
7358 /** gets the relaxation solution value of the given variable
7359  *
7360  * @return the relaxation solution value of the given variable
7361  *
7362  * @pre This method can be called if @p scip is in one of the following stages:
7363  * - \ref SCIP_STAGE_PRESOLVED
7364  * - \ref SCIP_STAGE_SOLVING
7365  */
7366 extern
7368  SCIP* scip, /**< SCIP data structure */
7369  SCIP_VAR* var /**< variable to get value for */
7370  );
7371 
7372 /** gets the relaxation solution objective value
7373  *
7374  * @return the objective value of the relaxation solution
7375  *
7376  * @pre This method can be called if @p scip is in one of the following stages:
7377  * - \ref SCIP_STAGE_PRESOLVED
7378  * - \ref SCIP_STAGE_SOLVING
7379  */
7380 extern
7382  SCIP* scip /**< SCIP data structure */
7383  );
7384 
7385 /** start strong branching - call before any strong branching
7386  *
7387  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7388  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7389  *
7390  * @pre This method can be called if @p scip is in one of the following stages:
7391  * - \ref SCIP_STAGE_PRESOLVED
7392  * - \ref SCIP_STAGE_SOLVING
7393  *
7394  * @note if propagation is enabled, strong branching is not done directly on the LP, but probing nodes are created
7395  * which allow to perform propagation but also creates some overhead
7396  */
7397 extern
7399  SCIP* scip, /**< SCIP data structure */
7400  SCIP_Bool enablepropagation /**< should propagation be done before solving the strong branching LP? */
7401  );
7402 
7403 /** end strong branching - call after any strong branching
7404  *
7405  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7406  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7407  *
7408  * @pre This method can be called if @p scip is in one of the following stages:
7409  * - \ref SCIP_STAGE_PRESOLVED
7410  * - \ref SCIP_STAGE_SOLVING
7411  */
7412 extern
7414  SCIP* scip /**< SCIP data structure */
7415  );
7416 
7417 /** gets strong branching information on column variable with fractional value
7418  *
7419  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7420  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7421  *
7422  * @pre This method can be called if @p scip is in one of the following stages:
7423  * - \ref SCIP_STAGE_PRESOLVED
7424  * - \ref SCIP_STAGE_SOLVING
7425  */
7426 extern
7428  SCIP* scip, /**< SCIP data structure */
7429  SCIP_VAR* var, /**< variable to get strong branching values for */
7430  int itlim, /**< iteration limit for strong branchings */
7431  SCIP_Real* down, /**< stores dual bound after branching column down */
7432  SCIP_Real* up, /**< stores dual bound after branching column up */
7433  SCIP_Bool* downvalid, /**< stores whether the returned down value is a valid dual bound, or NULL;
7434  * otherwise, it can only be used as an estimate value */
7435  SCIP_Bool* upvalid, /**< stores whether the returned up value is a valid dual bound, or NULL;
7436  * otherwise, it can only be used as an estimate value */
7437  SCIP_Bool* downinf, /**< pointer to store whether the downwards branch is infeasible, or NULL */
7438  SCIP_Bool* upinf, /**< pointer to store whether the upwards branch is infeasible, or NULL */
7439  SCIP_Bool* downconflict, /**< pointer to store whether a conflict constraint was created for an
7440  * infeasible downwards branch, or NULL */
7441  SCIP_Bool* upconflict, /**< pointer to store whether a conflict constraint was created for an
7442  * infeasible upwards branch, or NULL */
7443  SCIP_Bool* lperror /**< pointer to store whether an unresolved LP error occurred or the
7444  * solving process should be stopped (e.g., due to a time limit) */
7445  );
7446 
7447 /** gets strong branching information with previous domain propagation on column variable
7448  *
7449  * Before calling this method, the strong branching mode must have been activated by calling SCIPstartStrongbranch();
7450  * after strong branching was done for all candidate variables, the strong branching mode must be ended by
7451  * SCIPendStrongbranch(). Since this method applies domain propagation before strongbranching, propagation has to be be
7452  * enabled in the SCIPstartStrongbranch() call.
7453  *
7454  * Before solving the strong branching LP, domain propagation can be performed. The number of propagation rounds
7455  * can be specified by the parameter @p maxproprounds.
7456  *
7457  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7458  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7459  *
7460  * @pre This method can be called if @p scip is in one of the following stages:
7461  * - \ref SCIP_STAGE_PRESOLVED
7462  * - \ref SCIP_STAGE_SOLVING
7463  *
7464  * @warning When using this method, LP banching candidates and solution values must be copied beforehand, because
7465  * they are updated w.r.t. the strong branching LP solution.
7466  */
7467 extern
7469  SCIP* scip, /**< SCIP data structure */
7470  SCIP_VAR* var, /**< variable to get strong branching values for */
7471  SCIP_Real solval, /**< value of the variable in the current LP solution */
7472  SCIP_Real lpobjval, /**< LP objective value of the current LP solution */
7473  int itlim, /**< iteration limit for strong branchings */
7474  int maxproprounds, /**< maximum number of propagation rounds (-1: no limit, -2: parameter
7475  * settings) */
7476  SCIP_Real* down, /**< stores dual bound after branching column down */
7477  SCIP_Real* up, /**< stores dual bound after branching column up */
7478  SCIP_Bool* downvalid, /**< stores whether the returned down value is a valid dual bound, or NULL;
7479  * otherwise, it can only be used as an estimate value */
7480  SCIP_Bool* upvalid, /**< stores whether the returned up value is a valid dual bound, or NULL;
7481  * otherwise, it can only be used as an estimate value */
7482  SCIP_Longint* ndomredsdown, /**< pointer to store the number of domain reductions down, or NULL */
7483  SCIP_Longint* ndomredsup, /**< pointer to store the number of domain reductions up, or NULL */
7484  SCIP_Bool* downinf, /**< pointer to store whether the downwards branch is infeasible, or NULL */
7485  SCIP_Bool* upinf, /**< pointer to store whether the upwards branch is infeasible, or NULL */
7486  SCIP_Bool* downconflict, /**< pointer to store whether a conflict constraint was created for an
7487  * infeasible downwards branch, or NULL */
7488  SCIP_Bool* upconflict, /**< pointer to store whether a conflict constraint was created for an
7489  * infeasible upwards branch, or NULL */
7490  SCIP_Bool* lperror, /**< pointer to store whether an unresolved LP error occurred or the
7491  * solving process should be stopped (e.g., due to a time limit) */
7492  SCIP_Real* newlbs, /**< array to store valid lower bounds for all active variables, or NULL */
7493  SCIP_Real* newubs /**< array to store valid upper bounds for all active variables, or NULL */
7494  );
7495 
7496 /** gets strong branching information on column variable x with integral LP solution value (val); that is, the down branch
7497  * is (val -1.0) and the up brach ins (val +1.0)
7498  *
7499  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7500  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7501  *
7502  * @pre This method can be called if @p scip is in one of the following stages:
7503  * - \ref SCIP_STAGE_PRESOLVED
7504  * - \ref SCIP_STAGE_SOLVING
7505  *
7506  * @note If the integral LP solution value is the lower or upper bound of the variable, the corresponding branch will be
7507  * marked as infeasible. That is, the valid pointer and the infeasible pointer are set to TRUE.
7508  */
7509 extern
7511  SCIP* scip, /**< SCIP data structure */
7512  SCIP_VAR* var, /**< variable to get strong branching values for */
7513  int itlim, /**< iteration limit for strong branchings */
7514  SCIP_Real* down, /**< stores dual bound after branching column down */
7515  SCIP_Real* up, /**< stores dual bound after branching column up */
7516  SCIP_Bool* downvalid, /**< stores whether the returned down value is a valid dual bound, or NULL;
7517  * otherwise, it can only be used as an estimate value */
7518  SCIP_Bool* upvalid, /**< stores whether the returned up value is a valid dual bound, or NULL;
7519  * otherwise, it can only be used as an estimate value */
7520  SCIP_Bool* downinf, /**< pointer to store whether the downwards branch is infeasible, or NULL */
7521  SCIP_Bool* upinf, /**< pointer to store whether the upwards branch is infeasible, or NULL */
7522  SCIP_Bool* downconflict, /**< pointer to store whether a conflict constraint was created for an
7523  * infeasible downwards branch, or NULL */
7524  SCIP_Bool* upconflict, /**< pointer to store whether a conflict constraint was created for an
7525  * infeasible upwards branch, or NULL */
7526  SCIP_Bool* lperror /**< pointer to store whether an unresolved LP error occurred or the
7527  * solving process should be stopped (e.g., due to a time limit) */
7528  );
7529 
7530 /** gets strong branching information on column variables with fractional values
7531  *
7532  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7533  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7534  *
7535  * @pre This method can be called if @p scip is in one of the following stages:
7536  * - \ref SCIP_STAGE_PRESOLVED
7537  * - \ref SCIP_STAGE_SOLVING
7538  */
7539 extern
7541  SCIP* scip, /**< SCIP data structure */
7542  SCIP_VAR** vars, /**< variables to get strong branching values for */
7543  int nvars, /**< number of variables */
7544  int itlim, /**< iteration limit for strong branchings */
7545  SCIP_Real* down, /**< stores dual bounds after branching variables down */
7546  SCIP_Real* up, /**< stores dual bounds after branching variables up */
7547  SCIP_Bool* downvalid, /**< stores whether the returned down values are valid dual bounds, or NULL;
7548  * otherwise, they can only be used as an estimate value */
7549  SCIP_Bool* upvalid, /**< stores whether the returned up values are valid dual bounds, or NULL;
7550  * otherwise, they can only be used as an estimate value */
7551  SCIP_Bool* downinf, /**< array to store whether the downward branches are infeasible, or NULL */
7552  SCIP_Bool* upinf, /**< array to store whether the upward branches are infeasible, or NULL */
7553  SCIP_Bool* downconflict, /**< array to store whether conflict constraints were created for
7554  * infeasible downward branches, or NULL */
7555  SCIP_Bool* upconflict, /**< array to store whether conflict constraints were created for
7556  * infeasible upward branches, or NULL */
7557  SCIP_Bool* lperror /**< pointer to store whether an unresolved LP error occurred or the
7558  * solving process should be stopped (e.g., due to a time limit) */
7559  );
7560 
7561 /** gets strong branching information on column variables with integral values
7562  *
7563  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7564  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7565  *
7566  * @pre This method can be called if @p scip is in one of the following stages:
7567  * - \ref SCIP_STAGE_PRESOLVED
7568  * - \ref SCIP_STAGE_SOLVING
7569  */
7570 extern
7572  SCIP* scip, /**< SCIP data structure */
7573  SCIP_VAR** vars, /**< variables to get strong branching values for */
7574  int nvars, /**< number of variables */
7575  int itlim, /**< iteration limit for strong branchings */
7576  SCIP_Real* down, /**< stores dual bounds after branching variables down */
7577  SCIP_Real* up, /**< stores dual bounds after branching variables up */
7578  SCIP_Bool* downvalid, /**< stores whether the returned down values are valid dual bounds, or NULL;
7579  * otherwise, they can only be used as an estimate value */
7580  SCIP_Bool* upvalid, /**< stores whether the returned up values are valid dual bounds, or NULL;
7581  * otherwise, they can only be used as an estimate value */
7582  SCIP_Bool* downinf, /**< array to store whether the downward branches are infeasible, or NULL */
7583  SCIP_Bool* upinf, /**< array to store whether the upward branches are infeasible, or NULL */
7584  SCIP_Bool* downconflict, /**< array to store whether conflict constraints were created for
7585  * infeasible downward branches, or NULL */
7586  SCIP_Bool* upconflict, /**< array to store whether conflict constraints were created for
7587  * infeasible upward branches, or NULL */
7588  SCIP_Bool* lperror /**< pointer to store whether an unresolved LP error occurred or the
7589  * solving process should be stopped (e.g., due to a time limit) */
7590  );
7591 
7592 /** gets strong branching information on COLUMN variable of the last SCIPgetVarStrongbranch() call;
7593  * returns values of SCIP_INVALID, if strong branching was not yet called on the given variable;
7594  * keep in mind, that the returned old values may have nothing to do with the current LP solution
7595  *
7596  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7597  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7598  *
7599  * @pre This method can be called if @p scip is in one of the following stages:
7600  * - \ref SCIP_STAGE_SOLVING
7601  * - \ref SCIP_STAGE_SOLVED
7602  */
7603 extern
7605  SCIP* scip, /**< SCIP data structure */
7606  SCIP_VAR* var, /**< variable to get last strong branching values for */
7607  SCIP_Real* down, /**< stores dual bound after branching column down, or NULL */
7608  SCIP_Real* up, /**< stores dual bound after branching column up, or NULL */
7609  SCIP_Bool* downvalid, /**< stores whether the returned down value is a valid dual bound, or NULL;
7610  * otherwise, it can only be used as an estimate value */
7611  SCIP_Bool* upvalid, /**< stores whether the returned up value is a valid dual bound, or NULL;
7612  * otherwise, it can only be used as an estimate value */
7613  SCIP_Real* solval, /**< stores LP solution value of variable at last strong branching call, or NULL */
7614  SCIP_Real* lpobjval /**< stores LP objective value at last strong branching call, or NULL */
7615  );
7616 
7617 /** gets node number of the last node in current branch and bound run, where strong branching was used on the
7618  * given variable, or -1 if strong branching was never applied to the variable in current run
7619  *
7620  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7621  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7622  *
7623  * @pre This method can be called if @p scip is in one of the following stages:
7624  * - \ref SCIP_STAGE_TRANSFORMING
7625  * - \ref SCIP_STAGE_TRANSFORMED
7626  * - \ref SCIP_STAGE_INITPRESOLVE
7627  * - \ref SCIP_STAGE_PRESOLVING
7628  * - \ref SCIP_STAGE_EXITPRESOLVE
7629  * - \ref SCIP_STAGE_PRESOLVED
7630  * - \ref SCIP_STAGE_INITSOLVE
7631  * - \ref SCIP_STAGE_SOLVING
7632  * - \ref SCIP_STAGE_SOLVED
7633  * - \ref SCIP_STAGE_EXITSOLVE
7634  */
7635 extern
7637  SCIP* scip, /**< SCIP data structure */
7638  SCIP_VAR* var /**< variable to get last strong branching node for */
7639  );
7640 
7641 /** if strong branching was already applied on the variable at the current node, returns the number of LPs solved after
7642  * the LP where the strong branching on this variable was applied;
7643  * if strong branching was not yet applied on the variable at the current node, returns INT_MAX
7644  *
7645  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7646  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7647  *
7648  * @pre This method can be called if @p scip is in one of the following stages:
7649  * - \ref SCIP_STAGE_TRANSFORMING
7650  * - \ref SCIP_STAGE_TRANSFORMED
7651  * - \ref SCIP_STAGE_INITPRESOLVE
7652  * - \ref SCIP_STAGE_PRESOLVING
7653  * - \ref SCIP_STAGE_EXITPRESOLVE
7654  * - \ref SCIP_STAGE_PRESOLVED
7655  * - \ref SCIP_STAGE_INITSOLVE
7656  * - \ref SCIP_STAGE_SOLVING
7657  * - \ref SCIP_STAGE_SOLVED
7658  * - \ref SCIP_STAGE_EXITSOLVE
7659  */
7660 extern
7662  SCIP* scip, /**< SCIP data structure */
7663  SCIP_VAR* var /**< variable to get strong branching LP age for */
7664  );
7665 
7666 /** gets number of times, strong branching was applied in current run on the given variable
7667  *
7668  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7669  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7670  *
7671  * @pre This method can be called if @p scip is in one of the following stages:
7672  * - \ref SCIP_STAGE_TRANSFORMING
7673  * - \ref SCIP_STAGE_TRANSFORMED
7674  * - \ref SCIP_STAGE_INITPRESOLVE
7675  * - \ref SCIP_STAGE_PRESOLVING
7676  * - \ref SCIP_STAGE_EXITPRESOLVE
7677  * - \ref SCIP_STAGE_PRESOLVED
7678  * - \ref SCIP_STAGE_INITSOLVE
7679  * - \ref SCIP_STAGE_SOLVING
7680  * - \ref SCIP_STAGE_SOLVED
7681  * - \ref SCIP_STAGE_EXITSOLVE
7682  */
7683 extern
7685  SCIP* scip, /**< SCIP data structure */
7686  SCIP_VAR* var /**< variable to get last strong branching node for */
7687  );
7688 
7689 /** adds given values to lock numbers of variable for rounding
7690  *
7691  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7692  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7693  *
7694  * @pre This method can be called if @p scip is in one of the following stages:
7695  * - \ref SCIP_STAGE_PROBLEM
7696  * - \ref SCIP_STAGE_TRANSFORMING
7697  * - \ref SCIP_STAGE_TRANSFORMED
7698  * - \ref SCIP_STAGE_INITPRESOLVE
7699  * - \ref SCIP_STAGE_PRESOLVING
7700  * - \ref SCIP_STAGE_EXITPRESOLVE
7701  * - \ref SCIP_STAGE_PRESOLVED
7702  * - \ref SCIP_STAGE_INITSOLVE
7703  * - \ref SCIP_STAGE_SOLVING
7704  * - \ref SCIP_STAGE_EXITSOLVE
7705  * - \ref SCIP_STAGE_FREETRANS
7706  */
7707 extern
7709  SCIP* scip, /**< SCIP data structure */
7710  SCIP_VAR* var, /**< problem variable */
7711  int nlocksdown, /**< modification in number of rounding down locks */
7712  int nlocksup /**< modification in number of rounding up locks */
7713  );
7714 
7715 /** locks rounding of variable with respect to the lock status of the constraint and its negation;
7716  * this method should be called whenever the lock status of a variable in a constraint changes, for example if
7717  * the coefficient of the variable changed its sign or if the left or right hand sides of the constraint were
7718  * added or removed
7719  *
7720  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7721  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7722  *
7723  * @pre This method can be called if @p scip is in one of the following stages:
7724  * - \ref SCIP_STAGE_PROBLEM
7725  * - \ref SCIP_STAGE_TRANSFORMING
7726  * - \ref SCIP_STAGE_INITPRESOLVE
7727  * - \ref SCIP_STAGE_PRESOLVING
7728  * - \ref SCIP_STAGE_EXITPRESOLVE
7729  * - \ref SCIP_STAGE_INITSOLVE
7730  * - \ref SCIP_STAGE_SOLVING
7731  * - \ref SCIP_STAGE_EXITSOLVE
7732  * - \ref SCIP_STAGE_FREETRANS
7733  */
7734 extern
7736  SCIP* scip, /**< SCIP data structure */
7737  SCIP_VAR* var, /**< problem variable */
7738  SCIP_CONS* cons, /**< constraint */
7739  SCIP_Bool lockdown, /**< should the rounding be locked in downwards direction? */
7740  SCIP_Bool lockup /**< should the rounding be locked in upwards direction? */
7741  );
7742 
7743 /** unlocks rounding of variable with respect to the lock status of the constraint and its negation;
7744  * this method should be called whenever the lock status of a variable in a constraint changes, for example if
7745  * the coefficient of the variable changed its sign or if the left or right hand sides of the constraint were
7746  * added or removed
7747  *
7748  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7749  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7750  *
7751  * @pre This method can be called if @p scip is in one of the following stages:
7752  * - \ref SCIP_STAGE_PROBLEM
7753  * - \ref SCIP_STAGE_TRANSFORMING
7754  * - \ref SCIP_STAGE_INITPRESOLVE
7755  * - \ref SCIP_STAGE_PRESOLVING
7756  * - \ref SCIP_STAGE_EXITPRESOLVE
7757  * - \ref SCIP_STAGE_INITSOLVE
7758  * - \ref SCIP_STAGE_SOLVING
7759  * - \ref SCIP_STAGE_EXITSOLVE
7760  * - \ref SCIP_STAGE_FREETRANS
7761  */
7762 extern
7764  SCIP* scip, /**< SCIP data structure */
7765  SCIP_VAR* var, /**< problem variable */
7766  SCIP_CONS* cons, /**< constraint */
7767  SCIP_Bool lockdown, /**< should the rounding be locked in downwards direction? */
7768  SCIP_Bool lockup /**< should the rounding be locked in upwards direction? */
7769  );
7770 
7771 /** changes variable's objective value
7772  *
7773  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7774  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7775  *
7776  * @pre This method can be called if @p scip is in one of the following stages:
7777  * - \ref SCIP_STAGE_PROBLEM
7778  * - \ref SCIP_STAGE_TRANSFORMING
7779  * - \ref SCIP_STAGE_PRESOLVING
7780  */
7781 extern
7783  SCIP* scip, /**< SCIP data structure */
7784  SCIP_VAR* var, /**< variable to change the objective value for */
7785  SCIP_Real newobj /**< new objective value */
7786  );
7787 
7788 /** adds value to variable's objective value
7789  *
7790  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7791  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7792  *
7793  * @pre This method can be called if @p scip is in one of the following stages:
7794  * - \ref SCIP_STAGE_PROBLEM
7795  * - \ref SCIP_STAGE_TRANSFORMING
7796  * - \ref SCIP_STAGE_PRESOLVING
7797  */
7798 extern
7800  SCIP* scip, /**< SCIP data structure */
7801  SCIP_VAR* var, /**< variable to change the objective value for */
7802  SCIP_Real addobj /**< additional objective value */
7803  );
7804 
7805 /** returns the adjusted (i.e. rounded, if the given variable is of integral type) lower bound value;
7806  * does not change the bounds of the variable
7807  *
7808  * @return adjusted lower bound for the given variable; the bound of the variable is not changed
7809  *
7810  * @pre This method can be called if @p scip is in one of the following stages:
7811  * - \ref SCIP_STAGE_PROBLEM
7812  * - \ref SCIP_STAGE_TRANSFORMING
7813  * - \ref SCIP_STAGE_TRANSFORMED
7814  * - \ref SCIP_STAGE_INITPRESOLVE
7815  * - \ref SCIP_STAGE_PRESOLVING
7816  * - \ref SCIP_STAGE_EXITPRESOLVE
7817  * - \ref SCIP_STAGE_PRESOLVED
7818  * - \ref SCIP_STAGE_INITSOLVE
7819  * - \ref SCIP_STAGE_SOLVING
7820  * - \ref SCIP_STAGE_SOLVED
7821  * - \ref SCIP_STAGE_EXITSOLVE
7822  * - \ref SCIP_STAGE_FREETRANS
7823  */
7824 extern
7826  SCIP* scip, /**< SCIP data structure */
7827  SCIP_VAR* var, /**< variable to adjust the bound for */
7828  SCIP_Real lb /**< lower bound value to adjust */
7829  );
7830 
7831 /** returns the adjusted (i.e. rounded, if the given variable is of integral type) upper bound value;
7832  * does not change the bounds of the variable
7833  *
7834  * @return adjusted upper bound for the given variable; the bound of the variable is not changed
7835  *
7836  * @pre This method can be called if @p scip is in one of the following stages:
7837  * - \ref SCIP_STAGE_PROBLEM
7838  * - \ref SCIP_STAGE_TRANSFORMING
7839  * - \ref SCIP_STAGE_TRANSFORMED
7840  * - \ref SCIP_STAGE_INITPRESOLVE
7841  * - \ref SCIP_STAGE_PRESOLVING
7842  * - \ref SCIP_STAGE_EXITPRESOLVE
7843  * - \ref SCIP_STAGE_PRESOLVED
7844  * - \ref SCIP_STAGE_INITSOLVE
7845  * - \ref SCIP_STAGE_SOLVING
7846  * - \ref SCIP_STAGE_SOLVED
7847  * - \ref SCIP_STAGE_EXITSOLVE
7848  * - \ref SCIP_STAGE_FREETRANS
7849  */
7850 extern
7852  SCIP* scip, /**< SCIP data structure */
7853  SCIP_VAR* var, /**< variable to adjust the bound for */
7854  SCIP_Real ub /**< upper bound value to adjust */
7855  );
7856 
7857 /** depending on SCIP's stage, changes lower bound of variable in the problem, in preprocessing, or in current node;
7858  * if possible, adjusts bound to integral value; doesn't store any inference information in the bound change, such
7859  * that in conflict analysis, this change is treated like a branching decision
7860  *
7861  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
7862  * SCIPgetVars()) gets resorted.
7863  *
7864  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7865  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7866  *
7867  * @pre This method can be called if @p scip is in one of the following stages:
7868  * - \ref SCIP_STAGE_PROBLEM
7869  * - \ref SCIP_STAGE_TRANSFORMING
7870  * - \ref SCIP_STAGE_PRESOLVING
7871  * - \ref SCIP_STAGE_SOLVING
7872  *
7873  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
7874  */
7875 extern
7877  SCIP* scip, /**< SCIP data structure */
7878  SCIP_VAR* var, /**< variable to change the bound for */
7879  SCIP_Real newbound /**< new value for bound */
7880  );
7881 
7882 /** depending on SCIP's stage, changes upper bound of variable in the problem, in preprocessing, or in current node;
7883  * if possible, adjusts bound to integral value; doesn't store any inference information in the bound change, such
7884  * that in conflict analysis, this change is treated like a branching decision
7885  *
7886  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
7887  * SCIPgetVars()) gets resorted.
7888  *
7889  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7890  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7891  *
7892  * @pre This method can be called if @p scip is in one of the following stages:
7893  * - \ref SCIP_STAGE_PROBLEM
7894  * - \ref SCIP_STAGE_TRANSFORMING
7895  * - \ref SCIP_STAGE_PRESOLVING
7896  * - \ref SCIP_STAGE_SOLVING
7897  *
7898  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
7899  */
7900 extern
7902  SCIP* scip, /**< SCIP data structure */
7903  SCIP_VAR* var, /**< variable to change the bound for */
7904  SCIP_Real newbound /**< new value for bound */
7905  );
7906 
7907 /** changes lower bound of variable in the given node; if possible, adjust bound to integral value; doesn't store any
7908  * inference information in the bound change, such that in conflict analysis, this change is treated like a branching
7909  * decision
7910  *
7911  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7912  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7913  *
7914  * @pre This method can only be called if @p scip is in stage \ref SCIP_STAGE_SOLVING
7915  */
7916 extern
7918  SCIP* scip, /**< SCIP data structure */
7919  SCIP_NODE* node, /**< node to change bound at, or NULL for current node */
7920  SCIP_VAR* var, /**< variable to change the bound for */
7921  SCIP_Real newbound /**< new value for bound */
7922  );
7923 
7924 /** changes upper bound of variable in the given node; if possible, adjust bound to integral value; doesn't store any
7925  * inference information in the bound change, such that in conflict analysis, this change is treated like a branching
7926  * decision
7927  *
7928  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7929  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7930  *
7931  * @pre This method can only be called if @p scip is in stage \ref SCIP_STAGE_SOLVING
7932  */
7933 extern
7935  SCIP* scip, /**< SCIP data structure */
7936  SCIP_NODE* node, /**< node to change bound at, or NULL for current node */
7937  SCIP_VAR* var, /**< variable to change the bound for */
7938  SCIP_Real newbound /**< new value for bound */
7939  );
7940 
7941 /** changes global lower bound of variable; if possible, adjust bound to integral value; also tightens the local bound,
7942  * if the global bound is better than the local bound
7943  *
7944  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
7945  * SCIPgetVars()) gets resorted.
7946  *
7947  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7948  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7949  *
7950  * @pre This method can be called if @p scip is in one of the following stages:
7951  * - \ref SCIP_STAGE_PROBLEM
7952  * - \ref SCIP_STAGE_TRANSFORMING
7953  * - \ref SCIP_STAGE_PRESOLVING
7954  * - \ref SCIP_STAGE_SOLVING
7955  *
7956  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
7957  */
7958 extern
7960  SCIP* scip, /**< SCIP data structure */
7961  SCIP_VAR* var, /**< variable to change the bound for */
7962  SCIP_Real newbound /**< new value for bound */
7963  );
7964 
7965 /** changes global upper bound of variable; if possible, adjust bound to integral value; also tightens the local bound,
7966  * if the global bound is better than the local bound
7967  *
7968  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
7969  * SCIPgetVars()) gets resorted.
7970  *
7971  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7972  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7973  *
7974  * @pre This method can be called if @p scip is in one of the following stages:
7975  * - \ref SCIP_STAGE_PROBLEM
7976  * - \ref SCIP_STAGE_TRANSFORMING
7977  * - \ref SCIP_STAGE_PRESOLVING
7978  * - \ref SCIP_STAGE_SOLVING
7979  *
7980  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
7981  */
7982 extern
7984  SCIP* scip, /**< SCIP data structure */
7985  SCIP_VAR* var, /**< variable to change the bound for */
7986  SCIP_Real newbound /**< new value for bound */
7987  );
7988 
7989 /** changes lazy lower bound of the variable, this is only possible if the variable is not in the LP yet
7990  *
7991  * lazy bounds are bounds, that are enforced by constraints and the objective function; hence, these bounds do not need
7992  * to be put into the LP explicitly.
7993  *
7994  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7995  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7996  *
7997  * @pre This method can be called if @p scip is in one of the following stages:
7998  * - \ref SCIP_STAGE_PROBLEM
7999  * - \ref SCIP_STAGE_TRANSFORMING
8000  * - \ref SCIP_STAGE_TRANSFORMED
8001  * - \ref SCIP_STAGE_PRESOLVING
8002  * - \ref SCIP_STAGE_SOLVING
8003  *
8004  * @note lazy bounds are useful for branch-and-price since the corresponding variable bounds are not part of the LP
8005  */
8006 extern
8008  SCIP* scip, /**< SCIP data structure */
8009  SCIP_VAR* var, /**< problem variable */
8010  SCIP_Real lazylb /**< the lazy lower bound to be set */
8011  );
8012 
8013 /** changes lazy upper bound of the variable, this is only possible if the variable is not in the LP yet
8014  *
8015  * lazy bounds are bounds, that are enforced by constraints and the objective function; hence, these bounds do not need
8016  * to be put into the LP explicitly.
8017  *
8018  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8019  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8020  *
8021  * @pre This method can be called if @p scip is in one of the following stages:
8022  * - \ref SCIP_STAGE_PROBLEM
8023  * - \ref SCIP_STAGE_TRANSFORMING
8024  * - \ref SCIP_STAGE_TRANSFORMED
8025  * - \ref SCIP_STAGE_PRESOLVING
8026  * - \ref SCIP_STAGE_SOLVING
8027  *
8028  * @note lazy bounds are useful for branch-and-price since the corresponding variable bounds are not part of the LP
8029  */
8030 extern
8032  SCIP* scip, /**< SCIP data structure */
8033  SCIP_VAR* var, /**< problem variable */
8034  SCIP_Real lazyub /**< the lazy lower bound to be set */
8035  );
8036 
8037 /** changes lower bound of variable in preprocessing or in the current node, if the new bound is tighter
8038  * (w.r.t. bound strengthening epsilon) than the current bound; if possible, adjusts bound to integral value;
8039  * doesn't store any inference information in the bound change, such that in conflict analysis, this change
8040  * is treated like a branching decision
8041  *
8042  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
8043  * SCIPgetVars()) gets resorted.
8044  *
8045  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8046  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8047  *
8048  * @pre This method can be called if @p scip is in one of the following stages:
8049  * - \ref SCIP_STAGE_PROBLEM
8050  * - \ref SCIP_STAGE_PRESOLVING
8051  * - \ref SCIP_STAGE_SOLVING
8052  *
8053  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
8054  */
8055 extern
8057  SCIP* scip, /**< SCIP data structure */
8058  SCIP_VAR* var, /**< variable to change the bound for */
8059  SCIP_Real newbound, /**< new value for bound */
8060  SCIP_Bool force, /**< force tightening even if below bound strengthening tolerance */
8061  SCIP_Bool* infeasible, /**< pointer to store whether the new domain is empty */
8062  SCIP_Bool* tightened /**< pointer to store whether the bound was tightened, or NULL */
8063  );
8064 
8065 /** changes upper bound of variable in preprocessing or in the current node, if the new bound is tighter
8066  * (w.r.t. bound strengthening epsilon) than the current bound; if possible, adjusts bound to integral value;
8067  * doesn't store any inference information in the bound change, such that in conflict analysis, this change
8068  * is treated like a branching decision
8069  *
8070  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
8071  * SCIPgetVars()) gets resorted.
8072  *
8073  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8074  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8075  *
8076  * @pre This method can be called if @p scip is in one of the following stages:
8077  * - \ref SCIP_STAGE_PROBLEM
8078  * - \ref SCIP_STAGE_PRESOLVING
8079  * - \ref SCIP_STAGE_SOLVING
8080  *
8081  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
8082  */
8083 extern
8085  SCIP* scip, /**< SCIP data structure */
8086  SCIP_VAR* var, /**< variable to change the bound for */
8087  SCIP_Real newbound, /**< new value for bound */
8088  SCIP_Bool force, /**< force tightening even if below bound strengthening tolerance */
8089  SCIP_Bool* infeasible, /**< pointer to store whether the new domain is empty */
8090  SCIP_Bool* tightened /**< pointer to store whether the bound was tightened, or NULL */
8091  );
8092 
8093 /** fixes variable in preprocessing or in the current node, if the new bound is tighter (w.r.t. bound strengthening
8094  * epsilon) than the current bound; if possible, adjusts bound to integral value; the given inference constraint is
8095  * stored, such that the conflict analysis is able to find out the reason for the deduction of the bound change
8096  *
8097  * @note In presolving stage when not in probing mode the variable will be fixed directly, otherwise this method
8098  * changes first the lowerbound by calling SCIPinferVarLbCons and second the upperbound by calling
8099  * SCIPinferVarUbCons
8100  *
8101  * @note If SCIP is in presolving stage, it can happen that the internal variable array (which get be accessed via
8102  * SCIPgetVars()) gets resorted.
8103  *
8104  * @note During presolving, an integer variable which bound changes to {0,1} is upgraded to a binary variable.
8105  */
8106 extern
8108  SCIP* scip, /**< SCIP data structure */
8109  SCIP_VAR* var, /**< variable to change the bound for */
8110  SCIP_Real fixedval, /**< new value for fixation */
8111  SCIP_CONS* infercons, /**< constraint that deduced the bound change */
8112  int inferinfo, /**< user information for inference to help resolving the conflict */
8113  SCIP_Bool force, /**< force tightening even if below bound strengthening tolerance */
8114  SCIP_Bool* infeasible, /**< pointer to store whether the bound change is infeasible */
8115  SCIP_Bool* tightened /**< pointer to store whether the bound was tightened, or NULL */
8116  );
8117 
8118 /** changes lower bound of variable in preprocessing or in the current node, if the new bound is tighter
8119  * (w.r.t. bound strengthening epsilon) than the current bound; if possible, adjusts bound to integral value;
8120  * the given inference constraint is stored, such that the conflict analysis is able to find out the reason
8121  * for the deduction of the bound change
8122  *
8123  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
8124  * SCIPgetVars()) gets resorted.
8125  *
8126  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8127  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8128  *
8129  * @pre This method can be called if @p scip is in one of the following stages:
8130  * - \ref SCIP_STAGE_PROBLEM
8131  * - \ref SCIP_STAGE_PRESOLVING
8132  * - \ref SCIP_STAGE_SOLVING
8133  *
8134  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
8135  */
8136 extern
8138  SCIP* scip, /**< SCIP data structure */
8139  SCIP_VAR* var, /**< variable to change the bound for */
8140  SCIP_Real newbound, /**< new value for bound */
8141  SCIP_CONS* infercons, /**< constraint that deduced the bound change, or NULL */
8142  int inferinfo, /**< user information for inference to help resolving the conflict */
8143  SCIP_Bool force, /**< force tightening even if below bound strengthening tolerance */
8144  SCIP_Bool* infeasible, /**< pointer to store whether the bound change is infeasible */
8145  SCIP_Bool* tightened /**< pointer to store whether the bound was tightened, or NULL */
8146  );
8147 
8148 /** changes upper bound of variable in preprocessing or in the current node, if the new bound is tighter
8149  * (w.r.t. bound strengthening epsilon) than the current bound; if possible, adjusts bound to integral value;
8150  * the given inference constraint is stored, such that the conflict analysis is able to find out the reason
8151  * for the deduction of the bound change
8152  *
8153  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
8154  * SCIPgetVars()) gets resorted.
8155  *
8156  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8157  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8158  *
8159  * @pre This method can be called if @p scip is in one of the following stages:
8160  * - \ref SCIP_STAGE_PROBLEM
8161  * - \ref SCIP_STAGE_PRESOLVING
8162  * - \ref SCIP_STAGE_SOLVING
8163  *
8164  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
8165  */
8166 extern
8168  SCIP* scip, /**< SCIP data structure */
8169  SCIP_VAR* var, /**< variable to change the bound for */
8170  SCIP_Real newbound, /**< new value for bound */
8171  SCIP_CONS* infercons, /**< constraint that deduced the bound change */
8172  int inferinfo, /**< user information for inference to help resolving the conflict */
8173  SCIP_Bool force, /**< force tightening even if below bound strengthening tolerance */
8174  SCIP_Bool* infeasible, /**< pointer to store whether the bound change is infeasible */
8175  SCIP_Bool* tightened /**< pointer to store whether the bound was tightened, or NULL */
8176  );
8177 
8178 /** depending on SCIP's stage, fixes binary variable in the problem, in preprocessing, or in current node;
8179  * the given inference constraint is stored, such that the conflict analysis is able to find out the reason for the
8180  * deduction of the fixing
8181  *
8182  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8183  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8184  *
8185  * @pre This method can be called if @p scip is in one of the following stages:
8186  * - \ref SCIP_STAGE_PROBLEM
8187  * - \ref SCIP_STAGE_PRESOLVING
8188  * - \ref SCIP_STAGE_SOLVING
8189  */
8190 extern
8192  SCIP* scip, /**< SCIP data structure */
8193  SCIP_VAR* var, /**< binary variable to fix */
8194  SCIP_Bool fixedval, /**< value to fix binary variable to */
8195  SCIP_CONS* infercons, /**< constraint that deduced the fixing */
8196  int inferinfo, /**< user information for inference to help resolving the conflict */
8197  SCIP_Bool* infeasible, /**< pointer to store whether the fixing is infeasible */
8198  SCIP_Bool* tightened /**< pointer to store whether the fixing tightened the local bounds, or NULL */
8199  );
8200 
8201 /** fixes variable in preprocessing or in the current node, if the new bound is tighter (w.r.t. bound strengthening
8202  * epsilon) than the current bound; if possible, adjusts bound to integral value; the given inference constraint is
8203  * stored, such that the conflict analysis is able to find out the reason for the deduction of the bound change
8204  *
8205  * @note In presolving stage when not in probing mode the variable will be fixed directly, otherwise this method
8206  * changes first the lowerbound by calling SCIPinferVarLbProp and second the upperbound by calling
8207  * SCIPinferVarUbProp
8208  *
8209  * @note If SCIP is in presolving stage, it can happen that the internal variable array (which get be accessed via
8210  * SCIPgetVars()) gets resorted.
8211  *
8212  * @note During presolving, an integer variable which bound changes to {0,1} is upgraded to a binary variable.
8213  */
8214 extern
8216  SCIP* scip, /**< SCIP data structure */
8217  SCIP_VAR* var, /**< variable to change the bound for */
8218  SCIP_Real fixedval, /**< new value for fixation */
8219  SCIP_PROP* inferprop, /**< propagator that deduced the bound change */
8220  int inferinfo, /**< user information for inference to help resolving the conflict */
8221  SCIP_Bool force, /**< force tightening even if below bound strengthening tolerance */
8222  SCIP_Bool* infeasible, /**< pointer to store whether the bound change is infeasible */
8223  SCIP_Bool* tightened /**< pointer to store whether the bound was tightened, or NULL */
8224  );
8225 
8226 /** changes lower bound of variable in preprocessing or in the current node, if the new bound is tighter
8227  * (w.r.t. bound strengthening epsilon) than the current bound; if possible, adjusts bound to integral value;
8228  * the given inference propagator is stored, such that the conflict analysis is able to find out the reason
8229  * for the deduction of the bound change
8230  *
8231  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
8232  * SCIPgetVars()) gets resorted.
8233  *
8234  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8235  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8236  *
8237  * @pre This method can be called if @p scip is in one of the following stages:
8238  * - \ref SCIP_STAGE_PROBLEM
8239  * - \ref SCIP_STAGE_PRESOLVING
8240  * - \ref SCIP_STAGE_SOLVING
8241  *
8242  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
8243  */
8244 extern
8246  SCIP* scip, /**< SCIP data structure */
8247  SCIP_VAR* var, /**< variable to change the bound for */
8248  SCIP_Real newbound, /**< new value for bound */
8249  SCIP_PROP* inferprop, /**< propagator that deduced the bound change, or NULL */
8250  int inferinfo, /**< user information for inference to help resolving the conflict */
8251  SCIP_Bool force, /**< force tightening even if below bound strengthening tolerance */
8252  SCIP_Bool* infeasible, /**< pointer to store whether the bound change is infeasible */
8253  SCIP_Bool* tightened /**< pointer to store whether the bound was tightened, or NULL */
8254  );
8255 
8256 /** changes upper bound of variable in preprocessing or in the current node, if the new bound is tighter
8257  * (w.r.t. bound strengthening epsilon) than the current bound; if possible, adjusts bound to integral value;
8258  * the given inference propagator is stored, such that the conflict analysis is able to find out the reason
8259  * for the deduction of the bound change
8260  *
8261  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
8262  * SCIPgetVars()) gets resorted.
8263  *
8264  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8265  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8266  *
8267  * @pre This method can be called if @p scip is in one of the following stages:
8268  * - \ref SCIP_STAGE_PROBLEM
8269  * - \ref SCIP_STAGE_PRESOLVING
8270  * - \ref SCIP_STAGE_SOLVING
8271  *
8272  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
8273  */
8274 extern
8276  SCIP* scip, /**< SCIP data structure */
8277  SCIP_VAR* var, /**< variable to change the bound for */
8278  SCIP_Real newbound, /**< new value for bound */
8279  SCIP_PROP* inferprop, /**< propagator that deduced the bound change */
8280  int inferinfo, /**< user information for inference to help resolving the conflict */
8281  SCIP_Bool force, /**< force tightening even if below bound strengthening tolerance */
8282  SCIP_Bool* infeasible, /**< pointer to store whether the bound change is infeasible */
8283  SCIP_Bool* tightened /**< pointer to store whether the bound was tightened, or NULL */
8284  );
8285 
8286 /** depending on SCIP's stage, fixes binary variable in the problem, in preprocessing, or in current node;
8287  * the given inference propagator is stored, such that the conflict analysis is able to find out the reason for the
8288  * deduction of the fixing
8289  *
8290  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8291  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8292  *
8293  * @pre This method can be called if @p scip is in one of the following stages:
8294  * - \ref SCIP_STAGE_PROBLEM
8295  * - \ref SCIP_STAGE_PRESOLVING
8296  * - \ref SCIP_STAGE_PRESOLVED
8297  * - \ref SCIP_STAGE_SOLVING
8298  */
8299 extern
8301  SCIP* scip, /**< SCIP data structure */
8302  SCIP_VAR* var, /**< binary variable to fix */
8303  SCIP_Bool fixedval, /**< value to fix binary variable to */
8304  SCIP_PROP* inferprop, /**< propagator that deduced the fixing */
8305  int inferinfo, /**< user information for inference to help resolving the conflict */
8306  SCIP_Bool* infeasible, /**< pointer to store whether the fixing is infeasible */
8307  SCIP_Bool* tightened /**< pointer to store whether the fixing tightened the local bounds, or NULL */
8308  );
8309 
8310 /** changes global lower bound of variable in preprocessing or in the current node, if the new bound is tighter
8311  * (w.r.t. bound strengthening epsilon) than the current global bound; if possible, adjusts bound to integral value;
8312  * also tightens the local bound, if the global bound is better than the local bound
8313  *
8314  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
8315  * SCIPgetVars()) gets resorted.
8316  *
8317  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8318  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8319  *
8320  * @pre This method can be called if @p scip is in one of the following stages:
8321  * - \ref SCIP_STAGE_PROBLEM
8322  * - \ref SCIP_STAGE_TRANSFORMING
8323  * - \ref SCIP_STAGE_PRESOLVING
8324  * - \ref SCIP_STAGE_SOLVING
8325  *
8326  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
8327  */
8328 extern
8330  SCIP* scip, /**< SCIP data structure */
8331  SCIP_VAR* var, /**< variable to change the bound for */
8332  SCIP_Real newbound, /**< new value for bound */
8333  SCIP_Bool force, /**< force tightening even if below bound strengthening tolerance */
8334  SCIP_Bool* infeasible, /**< pointer to store whether the new domain is empty */
8335  SCIP_Bool* tightened /**< pointer to store whether the bound was tightened, or NULL */
8336  );
8337 
8338 /** changes global upper bound of variable in preprocessing or in the current node, if the new bound is tighter
8339  * (w.r.t. bound strengthening epsilon) than the current global bound; if possible, adjusts bound to integral value;
8340  * also tightens the local bound, if the global bound is better than the local bound
8341  *
8342  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
8343  * SCIPgetVars()) gets resorted.
8344  *
8345  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8346  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8347  *
8348  * @pre This method can be called if @p scip is in one of the following stages:
8349  * - \ref SCIP_STAGE_PROBLEM
8350  * - \ref SCIP_STAGE_TRANSFORMING
8351  * - \ref SCIP_STAGE_PRESOLVING
8352  * - \ref SCIP_STAGE_SOLVING
8353  *
8354  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
8355  */
8356 extern
8358  SCIP* scip, /**< SCIP data structure */
8359  SCIP_VAR* var, /**< variable to change the bound for */
8360  SCIP_Real newbound, /**< new value for bound */
8361  SCIP_Bool force, /**< force tightening even if below bound strengthening tolerance */
8362  SCIP_Bool* infeasible, /**< pointer to store whether the new domain is empty */
8363  SCIP_Bool* tightened /**< pointer to store whether the bound was tightened, or NULL */
8364  );
8365 
8366 /** for a multi-aggregated variable, returns the global lower bound computed by adding the global bounds from all aggregation variables
8367  *
8368  * This global bound may be tighter than the one given by SCIPvarGetLbGlobal, since the latter is not updated if bounds of aggregation variables are changing
8369  * calling this function for a non-multi-aggregated variable results in a call to SCIPvarGetLbGlobal.
8370  *
8371  * @return the global lower bound computed by adding the global bounds from all aggregation variables
8372  */
8373 extern
8375  SCIP* scip, /**< SCIP data structure */
8376  SCIP_VAR* var /**< variable to compute the bound for */
8377  );
8378 
8379 /** for a multi-aggregated variable, returns the global upper bound computed by adding the global bounds from all aggregation variables
8380  *
8381  * This global bound may be tighter than the one given by SCIPvarGetUbGlobal, since the latter is not updated if bounds of aggregation variables are changing
8382  * calling this function for a non-multi-aggregated variable results in a call to SCIPvarGetUbGlobal.
8383  *
8384  * @return the global upper bound computed by adding the global bounds from all aggregation variables
8385  */
8386 extern
8388  SCIP* scip, /**< SCIP data structure */
8389  SCIP_VAR* var /**< variable to compute the bound for */
8390  );
8391 
8392 /** for a multi-aggregated variable, returns the local lower bound computed by adding the local bounds from all aggregation variables
8393  *
8394  * This local bound may be tighter than the one given by SCIPvarGetLbLocal, since the latter is not updated if bounds of aggregation variables are changing
8395  * calling this function for a non-multi-aggregated variable results in a call to SCIPvarGetLbLocal.
8396  *
8397  * @return the local lower bound computed by adding the global bounds from all aggregation variables
8398  */
8399 extern
8401  SCIP* scip, /**< SCIP data structure */
8402  SCIP_VAR* var /**< variable to compute the bound for */
8403  );
8404 
8405 /** for a multi-aggregated variable, returns the local upper bound computed by adding the local bounds from all aggregation variables
8406  *
8407  * This local bound may be tighter than the one given by SCIPvarGetUbLocal, since the latter is not updated if bounds of aggregation variables are changing
8408  * calling this function for a non-multi-aggregated variable results in a call to SCIPvarGetUbLocal.
8409  *
8410  * @return the local upper bound computed by adding the global bounds from all aggregation variables
8411  */
8412 extern
8414  SCIP* scip, /**< SCIP data structure */
8415  SCIP_VAR* var /**< variable to compute the bound for */
8416  );
8417 
8418 #ifdef NDEBUG
8419 
8420 /* In optimized mode, the function calls are overwritten by defines to reduce the number of function calls and
8421  * speed up the algorithms.
8422  */
8423 
8424 #define SCIPcomputeVarLbGlobal(scip, var) (SCIPvarGetStatus(var) == SCIP_VARSTATUS_MULTAGGR ? SCIPvarGetMultaggrLbGlobal(var, (scip)->set) : SCIPvarGetLbGlobal(var))
8425 #define SCIPcomputeVarUbGlobal(scip, var) (SCIPvarGetStatus(var) == SCIP_VARSTATUS_MULTAGGR ? SCIPvarGetMultaggrUbGlobal(var, (scip)->set) : SCIPvarGetUbGlobal(var))
8426 #define SCIPcomputeVarLbLocal(scip, var) (SCIPvarGetStatus(var) == SCIP_VARSTATUS_MULTAGGR ? SCIPvarGetMultaggrLbLocal(var, (scip)->set) : SCIPvarGetLbLocal(var))
8427 #define SCIPcomputeVarUbLocal(scip, var) (SCIPvarGetStatus(var) == SCIP_VARSTATUS_MULTAGGR ? SCIPvarGetMultaggrUbLocal(var, (scip)->set) : SCIPvarGetUbLocal(var))
8428 
8429 #endif
8430 
8431 /** returns solution value and index of variable lower bound that is closest to the variable's value in the given primal
8432  * solution or current LP solution if no primal solution is given; returns an index of -1 if no variable lower bound is
8433  * available
8434  *
8435  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8436  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8437  *
8438  * @pre This method can only be called if @p scip is in stage \ref SCIP_STAGE_SOLVING
8439  */
8440 extern
8442  SCIP* scip, /**< SCIP data structure */
8443  SCIP_VAR* var, /**< active problem variable */
8444  SCIP_SOL* sol, /**< primal solution, or NULL for LP solution */
8445  SCIP_Real* closestvlb, /**< pointer to store the value of the closest variable lower bound */
8446  int* closestvlbidx /**< pointer to store the index of the closest variable lower bound */
8447  );
8448 
8449 /** returns solution value and index of variable upper bound that is closest to the variable's value in the given primal solution;
8450  * or current LP solution if no primal solution is given; returns an index of -1 if no variable upper bound is available
8451  *
8452  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8453  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8454  *
8455  * @pre This method can only be called if @p scip is in stage \ref SCIP_STAGE_SOLVING
8456  */
8457 extern
8459  SCIP* scip, /**< SCIP data structure */
8460  SCIP_VAR* var, /**< active problem variable */
8461  SCIP_SOL* sol, /**< primal solution, or NULL for LP solution */
8462  SCIP_Real* closestvub, /**< pointer to store the value of the closest variable lower bound */
8463  int* closestvubidx /**< pointer to store the index of the closest variable lower bound */
8464  );
8465 
8466 /** informs variable x about a globally valid variable lower bound x >= b*z + d with integer variable z;
8467  * if z is binary, the corresponding valid implication for z is also added;
8468  * if z is non-continuous and 1/b not too small, the corresponding valid upper/lower bound
8469  * z <= (x-d)/b or z >= (x-d)/b (depending on the sign of of b) is added, too;
8470  * improves the global bounds of the variable and the vlb variable if possible
8471  *
8472  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8473  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8474  *
8475  * @pre This method can be called if @p scip is in one of the following stages:
8476  * - \ref SCIP_STAGE_PRESOLVING
8477  * - \ref SCIP_STAGE_PRESOLVED
8478  * - \ref SCIP_STAGE_SOLVING
8479  */
8480 extern
8482  SCIP* scip, /**< SCIP data structure */
8483  SCIP_VAR* var, /**< problem variable */
8484  SCIP_VAR* vlbvar, /**< variable z in x >= b*z + d */
8485  SCIP_Real vlbcoef, /**< coefficient b in x >= b*z + d */
8486  SCIP_Real vlbconstant, /**< constant d in x >= b*z + d */
8487  SCIP_Bool* infeasible, /**< pointer to store whether an infeasibility was detected */
8488  int* nbdchgs /**< pointer to store the number of performed bound changes, or NULL */
8489  );
8490 
8491 
8492 /** informs variable x about a globally valid variable upper bound x <= b*z + d with integer variable z;
8493  * if z is binary, the corresponding valid implication for z is also added;
8494  * if z is non-continuous and 1/b not too small, the corresponding valid lower/upper bound
8495  * z >= (x-d)/b or z <= (x-d)/b (depending on the sign of of b) is added, too;
8496  * improves the global bounds of the variable and the vlb variable if possible
8497  *
8498  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8499  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8500  *
8501  * @pre This method can be called if @p scip is in one of the following stages:
8502  * - \ref SCIP_STAGE_PRESOLVING
8503  * - \ref SCIP_STAGE_PRESOLVED
8504  * - \ref SCIP_STAGE_SOLVING
8505  */
8506 extern
8508  SCIP* scip, /**< SCIP data structure */
8509  SCIP_VAR* var, /**< problem variable */
8510  SCIP_VAR* vubvar, /**< variable z in x <= b*z + d */
8511  SCIP_Real vubcoef, /**< coefficient b in x <= b*z + d */
8512  SCIP_Real vubconstant, /**< constant d in x <= b*z + d */
8513  SCIP_Bool* infeasible, /**< pointer to store whether an infeasibility was detected */
8514  int* nbdchgs /**< pointer to store the number of performed bound changes, or NULL */
8515  );
8516 
8517 /** informs binary variable x about a globally valid implication: x == 0 or x == 1 ==> y <= b or y >= b;
8518  * also adds the corresponding implication or variable bound to the implied variable;
8519  * if the implication is conflicting, the variable is fixed to the opposite value;
8520  * if the variable is already fixed to the given value, the implication is performed immediately;
8521  * if the implication is redundant with respect to the variables' global bounds, it is ignored
8522  *
8523  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8524  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8525  *
8526  * @pre This method can be called if @p scip is in one of the following stages:
8527  * - \ref SCIP_STAGE_TRANSFORMED
8528  * - \ref SCIP_STAGE_PRESOLVING
8529  * - \ref SCIP_STAGE_PRESOLVED
8530  * - \ref SCIP_STAGE_SOLVING
8531  */
8532 extern
8534  SCIP* scip, /**< SCIP data structure */
8535  SCIP_VAR* var, /**< problem variable */
8536  SCIP_Bool varfixing, /**< FALSE if y should be added in implications for x == 0, TRUE for x == 1 */
8537  SCIP_VAR* implvar, /**< variable y in implication y <= b or y >= b */
8538  SCIP_BOUNDTYPE impltype, /**< type of implication y <= b (SCIP_BOUNDTYPE_UPPER)
8539  * or y >= b (SCIP_BOUNDTYPE_LOWER) */
8540  SCIP_Real implbound, /**< bound b in implication y <= b or y >= b */
8541  SCIP_Bool* infeasible, /**< pointer to store whether an infeasibility was detected */
8542  int* nbdchgs /**< pointer to store the number of performed bound changes, or NULL */
8543  );
8544 
8545 /** adds a clique information to SCIP, stating that at most one of the given binary variables can be set to 1;
8546  * if a variable appears twice in the same clique, the corresponding implications are performed
8547  *
8548  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8549  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8550  *
8551  * @pre This method can be called if @p scip is in one of the following stages:
8552  * - \ref SCIP_STAGE_TRANSFORMED
8553  * - \ref SCIP_STAGE_PRESOLVING
8554  * - \ref SCIP_STAGE_PRESOLVED
8555  * - \ref SCIP_STAGE_SOLVING
8556  */
8557 extern
8559  SCIP* scip, /**< SCIP data structure */
8560  SCIP_VAR** vars, /**< binary variables in the clique from which at most one can be set to 1 */
8561  SCIP_Bool* values, /**< values of the variables in the clique; NULL to use TRUE for all vars */
8562  int nvars, /**< number of variables in the clique */
8563  SCIP_Bool isequation, /**< is the clique an equation or an inequality? */
8564  SCIP_Bool* infeasible, /**< pointer to store whether an infeasibility was detected */
8565  int* nbdchgs /**< pointer to store the number of performed bound changes, or NULL */
8566  );
8567 
8568 /** calculates a partition of the given set of binary variables into cliques;
8569  * afterwards the output array contains one value for each variable, such that two variables got the same value iff they
8570  * were assigned to the same clique;
8571  * the first variable is always assigned to clique 0, and a variable can only be assigned to clique i if at least one of
8572  * the preceding variables was assigned to clique i-1;
8573  * for each clique at most 1 variables can be set to TRUE in a feasible solution;
8574  *
8575  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8576  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8577  *
8578  * @pre This method can be called if @p scip is in one of the following stages:
8579  * - \ref SCIP_STAGE_INITPRESOLVE
8580  * - \ref SCIP_STAGE_PRESOLVING
8581  * - \ref SCIP_STAGE_EXITPRESOLVE
8582  * - \ref SCIP_STAGE_PRESOLVED
8583  * - \ref SCIP_STAGE_SOLVING
8584  */
8585 extern
8587  SCIP*const scip, /**< SCIP data structure */
8588  SCIP_VAR**const vars, /**< binary variables in the clique from which at most one can be set to 1 */
8589  int const nvars, /**< number of variables in the clique */
8590  int*const cliquepartition, /**< array of length nvars to store the clique partition */
8591  int*const ncliques /**< pointer to store the number of cliques actually contained in the partition */
8592  );
8593 
8594 /** calculates a partition of the given set of binary variables into negated cliques;
8595  * afterwards the output array contains one value for each variable, such that two variables got the same value iff they
8596  * were assigned to the same negated clique;
8597  * the first variable is always assigned to clique 0 and a variable can only be assigned to clique i if at least one of
8598  * the preceding variables was assigned to clique i-1;
8599  * for each clique with n_c variables at least n_c-1 variables can be set to TRUE in a feasible solution;
8600  *
8601  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8602  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8603  *
8604  * @pre This method can be called if @p scip is in one of the following stages:
8605  * - \ref SCIP_STAGE_INITPRESOLVE
8606  * - \ref SCIP_STAGE_PRESOLVING
8607  * - \ref SCIP_STAGE_EXITPRESOLVE
8608  * - \ref SCIP_STAGE_PRESOLVED
8609  * - \ref SCIP_STAGE_SOLVING
8610  */
8611 extern
8613  SCIP*const scip, /**< SCIP data structure */
8614  SCIP_VAR**const vars, /**< binary variables in the clique from which at most one can be set to 1 */
8615  int const nvars, /**< number of variables in the clique */
8616  int*const cliquepartition, /**< array of length nvars to store the clique partition */
8617  int*const ncliques /**< pointer to store the number of cliques actually contained in the partition */
8618  );
8619 
8620 /** force SCIP to clean up all cliques; cliques do not get automatically cleaned up after presolving. Use
8621  * this method to prevent inactive variables in cliques when retrieved via SCIPgetCliques()
8622  *
8623  * @return SCIP_OKAY if everything worked, otherwise a suitable error code is passed
8624  *
8625  * @pre This method can be called if @p scip is in one of the following stages:
8626  * - \ref SCIP_STAGE_TRANSFORMED
8627  * - \ref SCIP_STAGE_INITPRESOLVE
8628  * - \ref SCIP_STAGE_PRESOLVING
8629  * - \ref SCIP_STAGE_EXITPRESOLVE
8630  * - \ref SCIP_STAGE_PRESOLVED
8631  * - \ref SCIP_STAGE_INITSOLVE
8632  * - \ref SCIP_STAGE_SOLVING
8633  * - \ref SCIP_STAGE_SOLVED
8634  * - \ref SCIP_STAGE_EXITSOLVE
8635  */
8636 extern
8638  SCIP* scip, /**< SCIP data structure */
8639  SCIP_Bool* infeasible /**< pointer to store if cleanup detected infeasibility */
8640  );
8641 
8642 /** gets the number of cliques in the clique table
8643  *
8644  * @return number of cliques in the clique table
8645  *
8646  * @pre This method can be called if @p scip is in one of the following stages:
8647  * - \ref SCIP_STAGE_TRANSFORMED
8648  * - \ref SCIP_STAGE_INITPRESOLVE
8649  * - \ref SCIP_STAGE_PRESOLVING
8650  * - \ref SCIP_STAGE_EXITPRESOLVE
8651  * - \ref SCIP_STAGE_PRESOLVED
8652  * - \ref SCIP_STAGE_INITSOLVE
8653  * - \ref SCIP_STAGE_SOLVING
8654  * - \ref SCIP_STAGE_SOLVED
8655  * - \ref SCIP_STAGE_EXITSOLVE
8656  */
8657 extern
8658 int SCIPgetNCliques(
8659  SCIP* scip /**< SCIP data structure */
8660  );
8661 
8662 /** gets the array of cliques in the clique table
8663  *
8664  * @return array of cliques in the clique table
8665  *
8666  * @pre This method can be called if @p scip is in one of the following stages:
8667  * - \ref SCIP_STAGE_TRANSFORMED
8668  * - \ref SCIP_STAGE_INITPRESOLVE
8669  * - \ref SCIP_STAGE_PRESOLVING
8670  * - \ref SCIP_STAGE_EXITPRESOLVE
8671  * - \ref SCIP_STAGE_PRESOLVED
8672  * - \ref SCIP_STAGE_INITSOLVE
8673  * - \ref SCIP_STAGE_SOLVING
8674  * - \ref SCIP_STAGE_SOLVED
8675  * - \ref SCIP_STAGE_EXITSOLVE
8676  */
8677 extern
8679  SCIP* scip /**< SCIP data structure */
8680  );
8681 
8682 /** returns whether there is a clique that contains both given variable/value pairs;
8683  * the variables must be active binary variables;
8684  * if regardimplics is FALSE, only the cliques in the clique table are looked at;
8685  * if regardimplics is TRUE, both the cliques and the implications of the implication graph are regarded
8686  *
8687  * @return TRUE, if there is a clique that contains both variable/clique pairs; FALSE, otherwise
8688  *
8689  * @pre This method can be called if @p scip is in one of the following stages:
8690  * - \ref SCIP_STAGE_TRANSFORMED
8691  * - \ref SCIP_STAGE_INITPRESOLVE
8692  * - \ref SCIP_STAGE_PRESOLVING
8693  * - \ref SCIP_STAGE_EXITPRESOLVE
8694  * - \ref SCIP_STAGE_PRESOLVED
8695  * - \ref SCIP_STAGE_INITSOLVE
8696  * - \ref SCIP_STAGE_SOLVING
8697  * - \ref SCIP_STAGE_SOLVED
8698  * - \ref SCIP_STAGE_EXITSOLVE
8699  *
8700  * @note a variable with it's negated variable are NOT! in a clique
8701  * @note a variable with itself are in a clique
8702  */
8703 extern
8705  SCIP* scip, /**< SCIP data structure */
8706  SCIP_VAR* var1, /**< first variable */
8707  SCIP_Bool value1, /**< value of first variable */
8708  SCIP_VAR* var2, /**< second variable */
8709  SCIP_Bool value2, /**< value of second variable */
8710  SCIP_Bool regardimplics /**< should the implication graph also be searched for a clique? */
8711  );
8712 
8713 /** writes the clique graph to a gml file
8714  *
8715  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8716  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8717  *
8718  * @pre This method can be called if @p scip is in one of the following stages:
8719  * - \ref SCIP_STAGE_TRANSFORMED
8720  * - \ref SCIP_STAGE_INITPRESOLVE
8721  * - \ref SCIP_STAGE_PRESOLVING
8722  * - \ref SCIP_STAGE_EXITPRESOLVE
8723  * - \ref SCIP_STAGE_PRESOLVED
8724  * - \ref SCIP_STAGE_INITSOLVE
8725  * - \ref SCIP_STAGE_SOLVING
8726  * - \ref SCIP_STAGE_SOLVED
8727  * - \ref SCIP_STAGE_EXITSOLVE
8728  *
8729  * @note there can be duplicated arcs in the output file
8730  *
8731  * If @p writenodeweights is true, only nodes corresponding to variables that have a fractional value and only edges
8732  * between such nodes are written.
8733  */
8734 extern
8736  SCIP* scip, /**< SCIP data structure */
8737  const char* fname, /**< name of file */
8738  SCIP_Bool writenodeweights /**< should we write weights of nodes? */
8739  );
8740 
8741 /** Removes (irrelevant) variable from all its global structures, i.e. cliques, implications and variable bounds.
8742  * This is an advanced method which should be used with care.
8743  *
8744  * @return SCIP_OKAY if everything worked, otherwise a suitable error code is passed
8745  *
8746  * @pre This method can be called if @p scip is in one of the following stages:
8747  * - \ref SCIP_STAGE_TRANSFORMED
8748  * - \ref SCIP_STAGE_INITPRESOLVE
8749  * - \ref SCIP_STAGE_PRESOLVING
8750  * - \ref SCIP_STAGE_EXITPRESOLVE
8751  * - \ref SCIP_STAGE_PRESOLVED
8752  * - \ref SCIP_STAGE_INITSOLVE
8753  * - \ref SCIP_STAGE_SOLVING
8754  * - \ref SCIP_STAGE_SOLVED
8755  * - \ref SCIP_STAGE_EXITSOLVE
8756  */
8757 extern
8759  SCIP* scip, /**< SCIP data structure */
8760  SCIP_VAR* var /**< variable to remove from global structures */
8761  );
8762 
8763 /** sets the branch factor of the variable; this value can be used in the branching methods to scale the score
8764  * values of the variables; higher factor leads to a higher probability that this variable is chosen for branching
8765  *
8766  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8767  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8768  *
8769  * @pre This method can be called if @p scip is in one of the following stages:
8770  * - \ref SCIP_STAGE_PROBLEM
8771  * - \ref SCIP_STAGE_TRANSFORMING
8772  * - \ref SCIP_STAGE_TRANSFORMED
8773  * - \ref SCIP_STAGE_INITPRESOLVE
8774  * - \ref SCIP_STAGE_PRESOLVING
8775  * - \ref SCIP_STAGE_EXITPRESOLVE
8776  * - \ref SCIP_STAGE_PRESOLVED
8777  * - \ref SCIP_STAGE_SOLVING
8778  */
8779 extern
8781  SCIP* scip, /**< SCIP data structure */
8782  SCIP_VAR* var, /**< problem variable */
8783  SCIP_Real branchfactor /**< factor to weigh variable's branching score with */
8784  );
8785 
8786 /** scales the branch factor of the variable with the given value
8787  *
8788  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8789  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8790  *
8791  * @pre This method can be called if @p scip is in one of the following stages:
8792  * - \ref SCIP_STAGE_PROBLEM
8793  * - \ref SCIP_STAGE_TRANSFORMING
8794  * - \ref SCIP_STAGE_TRANSFORMED
8795  * - \ref SCIP_STAGE_INITPRESOLVE
8796  * - \ref SCIP_STAGE_PRESOLVING
8797  * - \ref SCIP_STAGE_EXITPRESOLVE
8798  * - \ref SCIP_STAGE_PRESOLVED
8799  * - \ref SCIP_STAGE_SOLVING
8800  */
8801 extern
8803  SCIP* scip, /**< SCIP data structure */
8804  SCIP_VAR* var, /**< problem variable */
8805  SCIP_Real scale /**< factor to scale variable's branching factor with */
8806  );
8807 
8808 /** adds the given value to the branch factor of the variable
8809  *
8810  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8811  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8812  *
8813  * @pre This method can be called if @p scip is in one of the following stages:
8814  * - \ref SCIP_STAGE_PROBLEM
8815  * - \ref SCIP_STAGE_TRANSFORMING
8816  * - \ref SCIP_STAGE_TRANSFORMED
8817  * - \ref SCIP_STAGE_INITPRESOLVE
8818  * - \ref SCIP_STAGE_PRESOLVING
8819  * - \ref SCIP_STAGE_EXITPRESOLVE
8820  * - \ref SCIP_STAGE_PRESOLVED
8821  * - \ref SCIP_STAGE_SOLVING
8822  */
8823 extern
8825  SCIP* scip, /**< SCIP data structure */
8826  SCIP_VAR* var, /**< problem variable */
8827  SCIP_Real addfactor /**< value to add to the branch factor of the variable */
8828  );
8829 
8830 /** sets the branch priority of the variable; variables with higher branch priority are always preferred to variables
8831  * with lower priority in selection of branching variable
8832  *
8833  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8834  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8835  *
8836  * @pre This method can be called if @p scip is in one of the following stages:
8837  * - \ref SCIP_STAGE_PROBLEM
8838  * - \ref SCIP_STAGE_TRANSFORMING
8839  * - \ref SCIP_STAGE_TRANSFORMED
8840  * - \ref SCIP_STAGE_INITPRESOLVE
8841  * - \ref SCIP_STAGE_PRESOLVING
8842  * - \ref SCIP_STAGE_EXITPRESOLVE
8843  * - \ref SCIP_STAGE_PRESOLVED
8844  * - \ref SCIP_STAGE_SOLVING
8845  *
8846  * @note the default branching priority is 0
8847  */
8848 extern
8850  SCIP* scip, /**< SCIP data structure */
8851  SCIP_VAR* var, /**< problem variable */
8852  int branchpriority /**< branch priority of the variable */
8853  );
8854 
8855 /** changes the branch priority of the variable to the given value, if it is larger than the current priority
8856  *
8857  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8858  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8859  *
8860  * @pre This method can be called if @p scip is in one of the following stages:
8861  * - \ref SCIP_STAGE_PROBLEM
8862  * - \ref SCIP_STAGE_TRANSFORMING
8863  * - \ref SCIP_STAGE_TRANSFORMED
8864  * - \ref SCIP_STAGE_INITPRESOLVE
8865  * - \ref SCIP_STAGE_PRESOLVING
8866  * - \ref SCIP_STAGE_EXITPRESOLVE
8867  * - \ref SCIP_STAGE_PRESOLVED
8868  * - \ref SCIP_STAGE_SOLVING
8869  */
8870 extern
8872  SCIP* scip, /**< SCIP data structure */
8873  SCIP_VAR* var, /**< problem variable */
8874  int branchpriority /**< new branch priority of the variable, if it is larger than current priority */
8875  );
8876 
8877 /** adds the given value to the branch priority of the variable
8878  *
8879  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8880  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8881  *
8882  * @pre This method can be called if @p scip is in one of the following stages:
8883  * - \ref SCIP_STAGE_PROBLEM
8884  * - \ref SCIP_STAGE_TRANSFORMING
8885  * - \ref SCIP_STAGE_TRANSFORMED
8886  * - \ref SCIP_STAGE_INITPRESOLVE
8887  * - \ref SCIP_STAGE_PRESOLVING
8888  * - \ref SCIP_STAGE_EXITPRESOLVE
8889  * - \ref SCIP_STAGE_PRESOLVED
8890  * - \ref SCIP_STAGE_SOLVING
8891  */
8892 extern
8894  SCIP* scip, /**< SCIP data structure */
8895  SCIP_VAR* var, /**< problem variable */
8896  int addpriority /**< value to add to the branch priority of the variable */
8897  );
8898 
8899 /** sets the branch direction of the variable (-1: prefer downwards branch, 0: automatic selection, +1: prefer upwards
8900  * branch)
8901  *
8902  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8903  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8904  *
8905  * @pre This method can be called if @p scip is in one of the following stages:
8906  * - \ref SCIP_STAGE_PROBLEM
8907  * - \ref SCIP_STAGE_TRANSFORMING
8908  * - \ref SCIP_STAGE_TRANSFORMED
8909  * - \ref SCIP_STAGE_INITPRESOLVE
8910  * - \ref SCIP_STAGE_PRESOLVING
8911  * - \ref SCIP_STAGE_EXITPRESOLVE
8912  * - \ref SCIP_STAGE_PRESOLVED
8913  * - \ref SCIP_STAGE_SOLVING
8914  */
8915 extern
8917  SCIP* scip, /**< SCIP data structure */
8918  SCIP_VAR* var, /**< problem variable */
8919  SCIP_BRANCHDIR branchdirection /**< preferred branch direction of the variable (downwards, upwards, auto) */
8920  );
8921 
8922 /** changes type of variable in the problem;
8923  *
8924  * @warning This type change might change the variable array returned from SCIPgetVars() and SCIPgetVarsData();
8925  *
8926  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8927  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8928  *
8929  * @pre This method can be called if @p scip is in one of the following stages:
8930  * - \ref SCIP_STAGE_PROBLEM
8931  * - \ref SCIP_STAGE_TRANSFORMING
8932  * - \ref SCIP_STAGE_PRESOLVING
8933  *
8934  * @note If SCIP is already beyond the SCIP_STAGE_PROBLEM and a original variable is passed, the variable type of the
8935  * corresponding transformed variable is changed; the type of the original variable does not change
8936  *
8937  * @note If the type changes from a continuous variable to a non-continuous variable the bounds of the variable get
8938  * adjusted w.r.t. to integrality information
8939  */
8940 extern
8942  SCIP* scip, /**< SCIP data structure */
8943  SCIP_VAR* var, /**< variable to change the bound for */
8944  SCIP_VARTYPE vartype, /**< new type of variable */
8945  SCIP_Bool* infeasible /**< pointer to store whether an infeasibility was detected (, due to
8946  * integrality condition of the new variable type) */
8947  );
8948 
8949 /** in problem creation and solving stage, both bounds of the variable are set to the given value;
8950  * in presolving stage, the variable is converted into a fixed variable, and bounds are changed respectively;
8951  * conversion into a fixed variable changes the vars array returned from SCIPgetVars() and SCIPgetVarsData(),
8952  * and also renders arrays returned from the SCIPvarGetImpl...() methods invalid
8953  *
8954  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8955  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8956  *
8957  * @pre This method can be called if @p scip is in one of the following stages:
8958  * - \ref SCIP_STAGE_PROBLEM
8959  * - \ref SCIP_STAGE_PRESOLVING
8960  * - \ref SCIP_STAGE_SOLVING
8961  */
8962 extern
8964  SCIP* scip, /**< SCIP data structure */
8965  SCIP_VAR* var, /**< variable to fix */
8966  SCIP_Real fixedval, /**< value to fix variable to */
8967  SCIP_Bool* infeasible, /**< pointer to store whether the fixing is infeasible */
8968  SCIP_Bool* fixed /**< pointer to store whether the fixing was performed (variable was unfixed) */
8969  );
8970 
8971 /** From a given equality a*x + b*y == c, aggregates one of the variables and removes it from the set of
8972  * active problem variables. This changes the vars array returned from SCIPgetVars() and SCIPgetVarsData(),
8973  * and also renders the arrays returned from the SCIPvarGetImpl...() methods for the two variables invalid.
8974  * In the first step, the equality is transformed into an equality with active problem variables
8975  * a'*x' + b'*y' == c'. If x' == y', this leads to the detection of redundancy if a' == -b' and c' == 0,
8976  * of infeasibility, if a' == -b' and c' != 0, or to a variable fixing x' == c'/(a'+b') (and possible
8977  * infeasibility) otherwise.
8978  * In the second step, the variable to be aggregated is chosen among x' and y', prefering a less strict variable
8979  * type as aggregation variable (i.e. continuous variables are preferred over implicit integers, implicit integers
8980  * over integers, and integers over binaries). If none of the variables is continuous, it is tried to find an integer
8981  * aggregation (i.e. integral coefficients a'' and b'', such that a''*x' + b''*y' == c''). This can lead to
8982  * the detection of infeasibility (e.g. if c'' is fractional), or to a rejection of the aggregation (denoted by
8983  * aggregated == FALSE), if the resulting integer coefficients are too large and thus numerically instable.
8984  *
8985  * The output flags have the following meaning:
8986  * - infeasible: the problem is infeasible
8987  * - redundant: the equality can be deleted from the constraint set
8988  * - aggregated: the aggregation was successfully performed (the variables were not aggregated before)
8989  *
8990  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8991  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8992  *
8993  * @pre This method can only be called if @p scip is in stage \ref SCIP_STAGE_PRESOLVING
8994  */
8995 extern
8997  SCIP* scip, /**< SCIP data structure */
8998  SCIP_VAR* varx, /**< variable x in equality a*x + b*y == c */
8999  SCIP_VAR* vary, /**< variable y in equality a*x + b*y == c */
9000  SCIP_Real scalarx, /**< multiplier a in equality a*x + b*y == c */
9001  SCIP_Real scalary, /**< multiplier b in equality a*x + b*y == c */
9002  SCIP_Real rhs, /**< right hand side c in equality a*x + b*y == c */
9003  SCIP_Bool* infeasible, /**< pointer to store whether the aggregation is infeasible */
9004  SCIP_Bool* redundant, /**< pointer to store whether the equality is (now) redundant */
9005  SCIP_Bool* aggregated /**< pointer to store whether the aggregation was successful */
9006  );
9007 
9008 /** converts variable into multi-aggregated variable; this changes the variable array returned from
9009  * SCIPgetVars() and SCIPgetVarsData();
9010  *
9011  * @warning The integrality condition is not checked anymore on the multi-aggregated variable. You must not
9012  * multi-aggregate an integer variable without being sure, that integrality on the aggregation variables
9013  * implies integrality on the aggregated variable.
9014  *
9015  * The output flags have the following meaning:
9016  * - infeasible: the problem is infeasible
9017  * - aggregated: the aggregation was successfully performed (the variables were not aggregated before)
9018  *
9019  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9020  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9021  *
9022  * @pre This method can only be called if @p scip is in stage \ref SCIP_STAGE_PRESOLVING
9023  */
9024 extern
9026  SCIP* scip, /**< SCIP data structure */
9027  SCIP_VAR* var, /**< variable x to aggregate */
9028  int naggvars, /**< number n of variables in aggregation x = a_1*y_1 + ... + a_n*y_n + c */
9029  SCIP_VAR** aggvars, /**< variables y_i in aggregation x = a_1*y_1 + ... + a_n*y_n + c */
9030  SCIP_Real* scalars, /**< multipliers a_i in aggregation x = a_1*y_1 + ... + a_n*y_n + c */
9031  SCIP_Real constant, /**< constant shift c in aggregation x = a_1*y_1 + ... + a_n*y_n + c */
9032  SCIP_Bool* infeasible, /**< pointer to store whether the aggregation is infeasible */
9033  SCIP_Bool* aggregated /**< pointer to store whether the aggregation was successful */
9034  );
9035 
9036 /** returns whether aggregation of variables is not allowed */
9037 extern
9039  SCIP* scip /**< SCIP data structure */
9040  );
9041 
9042 /** returns whether multi-aggregation is disabled */
9043 extern
9045  SCIP* scip /**< SCIP data structure */
9046  );
9047 
9048 /** returns whether variable is not allowed to be multi-aggregated */
9049 extern
9051  SCIP* scip, /**< SCIP data structure */
9052  SCIP_VAR* var /**< variable x to aggregate */
9053  );
9054 
9055 /** returns whether dual reductions propagation methods and presolvers is allowed */
9056 extern
9058  SCIP* scip /**< SCIP data structure */
9059  );
9060 
9061 /** returns whether propagation w.r.t. current objective is allowed */
9062 extern
9064  SCIP* scip /**< SCIP data structure */
9065  );
9066 
9067 /** marks the variable that it must not be multi-aggregated
9068  *
9069  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9070  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9071  *
9072  * @pre This method can be called if @p scip is in one of the following stages:
9073  * - \ref SCIP_STAGE_INIT
9074  * - \ref SCIP_STAGE_PROBLEM
9075  * - \ref SCIP_STAGE_TRANSFORMING
9076  * - \ref SCIP_STAGE_TRANSFORMED
9077  * - \ref SCIP_STAGE_INITPRESOLVE
9078  * - \ref SCIP_STAGE_PRESOLVING
9079  * - \ref SCIP_STAGE_EXITPRESOLVE
9080  *
9081  * @note There exists no "unmark" method since it has to be ensured that if a plugin requires that a variable is not
9082  * multi-aggregated that this is will be the case.
9083  */
9084 extern
9086  SCIP* scip, /**< SCIP data structure */
9087  SCIP_VAR* var /**< variable to delete */
9088  );
9089 
9090 /** enables the collection of statistics for a variable
9091  *
9092  * @pre This method can be called if @p scip is in one of the following stages:
9093  * - \ref SCIP_STAGE_PROBLEM
9094  * - \ref SCIP_STAGE_INITPRESOLVE
9095  * - \ref SCIP_STAGE_PRESOLVING
9096  * - \ref SCIP_STAGE_EXITPRESOLVE
9097  * - \ref SCIP_STAGE_SOLVING
9098  * - \ref SCIP_STAGE_SOLVED
9099  */
9100 extern
9102  SCIP* scip /**< SCIP data structure */
9103  );
9104 
9105 /** disables the collection of any statistic for a variable
9106  *
9107  * @pre This method can be called if @p scip is in one of the following stages:
9108  * - \ref SCIP_STAGE_PROBLEM
9109  * - \ref SCIP_STAGE_INITPRESOLVE
9110  * - \ref SCIP_STAGE_PRESOLVING
9111  * - \ref SCIP_STAGE_EXITPRESOLVE
9112  * - \ref SCIP_STAGE_SOLVING
9113  * - \ref SCIP_STAGE_SOLVED
9114  */
9115 extern
9117  SCIP* scip /**< SCIP data structure */
9118  );
9119 
9120 /** updates the pseudo costs of the given variable and the global pseudo costs after a change of "solvaldelta" in the
9121  * variable's solution value and resulting change of "objdelta" in the in the LP's objective value;
9122  * the update is ignored, if the objective value difference is infinite
9123  *
9124  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9125  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9126  *
9127  * @pre This method can be called if @p scip is in one of the following stages:
9128  * - \ref SCIP_STAGE_SOLVING
9129  * - \ref SCIP_STAGE_SOLVED
9130  */
9131 extern
9133  SCIP* scip, /**< SCIP data structure */
9134  SCIP_VAR* var, /**< problem variable */
9135  SCIP_Real solvaldelta, /**< difference of variable's new LP value - old LP value */
9136  SCIP_Real objdelta, /**< difference of new LP's objective value - old LP's objective value */
9137  SCIP_Real weight /**< weight in (0,1] of this update in pseudo cost sum */
9138  );
9139 
9140 /** gets the variable's pseudo cost value for the given change of the variable's LP value
9141  *
9142  * @return the variable's pseudo cost value for the given change of the variable's LP value
9143  *
9144  * @pre This method can be called if @p scip is in one of the following stages:
9145  * - \ref SCIP_STAGE_INITPRESOLVE
9146  * - \ref SCIP_STAGE_PRESOLVING
9147  * - \ref SCIP_STAGE_EXITPRESOLVE
9148  * - \ref SCIP_STAGE_PRESOLVED
9149  * - \ref SCIP_STAGE_INITSOLVE
9150  * - \ref SCIP_STAGE_SOLVING
9151  * - \ref SCIP_STAGE_SOLVED
9152  */
9153 extern
9155  SCIP* scip, /**< SCIP data structure */
9156  SCIP_VAR* var, /**< problem variable */
9157  SCIP_Real solvaldelta /**< difference of variable's new LP value - old LP value */
9158  );
9159 
9160 /** gets the variable's pseudo cost value for the given change of the variable's LP value,
9161  * only using the pseudo cost information of the current run
9162  *
9163  * @return the variable's pseudo cost value for the given change of the variable's LP value,
9164  * only using the pseudo cost information of the current run
9165  *
9166  * @pre This method can be called if @p scip is in one of the following stages:
9167  * - \ref SCIP_STAGE_INITPRESOLVE
9168  * - \ref SCIP_STAGE_PRESOLVING
9169  * - \ref SCIP_STAGE_EXITPRESOLVE
9170  * - \ref SCIP_STAGE_PRESOLVED
9171  * - \ref SCIP_STAGE_INITSOLVE
9172  * - \ref SCIP_STAGE_SOLVING
9173  * - \ref SCIP_STAGE_SOLVED
9174  */
9175 extern
9177  SCIP* scip, /**< SCIP data structure */
9178  SCIP_VAR* var, /**< problem variable */
9179  SCIP_Real solvaldelta /**< difference of variable's new LP value - old LP value */
9180  );
9181 
9182 /** gets the variable's pseudo cost value for the given direction
9183  *
9184  * @return the variable's pseudo cost value for the given direction
9185  *
9186  * @pre This method can be called if @p scip is in one of the following stages:
9187  * - \ref SCIP_STAGE_INITPRESOLVE
9188  * - \ref SCIP_STAGE_PRESOLVING
9189  * - \ref SCIP_STAGE_EXITPRESOLVE
9190  * - \ref SCIP_STAGE_PRESOLVED
9191  * - \ref SCIP_STAGE_INITSOLVE
9192  * - \ref SCIP_STAGE_SOLVING
9193  * - \ref SCIP_STAGE_SOLVED
9194  */
9195 extern
9197  SCIP* scip, /**< SCIP data structure */
9198  SCIP_VAR* var, /**< problem variable */
9199  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
9200  );
9201 
9202 /** gets the variable's pseudo cost value for the given direction,
9203  * only using the pseudo cost information of the current run
9204  *
9205  * @return the variable's pseudo cost value for the given direction,
9206  * only using the pseudo cost information of the current run
9207  *
9208  * @pre This method can be called if @p scip is in one of the following stages:
9209  * - \ref SCIP_STAGE_INITPRESOLVE
9210  * - \ref SCIP_STAGE_PRESOLVING
9211  * - \ref SCIP_STAGE_EXITPRESOLVE
9212  * - \ref SCIP_STAGE_PRESOLVED
9213  * - \ref SCIP_STAGE_INITSOLVE
9214  * - \ref SCIP_STAGE_SOLVING
9215  * - \ref SCIP_STAGE_SOLVED
9216  */
9217 extern
9219  SCIP* scip, /**< SCIP data structure */
9220  SCIP_VAR* var, /**< problem variable */
9221  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
9222  );
9223 
9224 /** gets the variable's (possible fractional) number of pseudo cost updates for the given direction
9225  *
9226  * @return the variable's (possible fractional) number of pseudo cost updates for the given direction
9227  *
9228  * @pre This method can be called if @p scip is in one of the following stages:
9229  * - \ref SCIP_STAGE_INITPRESOLVE
9230  * - \ref SCIP_STAGE_PRESOLVING
9231  * - \ref SCIP_STAGE_EXITPRESOLVE
9232  * - \ref SCIP_STAGE_PRESOLVED
9233  * - \ref SCIP_STAGE_INITSOLVE
9234  * - \ref SCIP_STAGE_SOLVING
9235  * - \ref SCIP_STAGE_SOLVED
9236  */
9237 extern
9239  SCIP* scip, /**< SCIP data structure */
9240  SCIP_VAR* var, /**< problem variable */
9241  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
9242  );
9243 
9244 /** gets the variable's (possible fractional) number of pseudo cost updates for the given direction,
9245  * only using the pseudo cost information of the current run
9246  *
9247  * @return the variable's (possible fractional) number of pseudo cost updates for the given direction,
9248  * only using the pseudo cost information of the current run
9249  *
9250  * @pre This method can be called if @p scip is in one of the following stages:
9251  * - \ref SCIP_STAGE_INITPRESOLVE
9252  * - \ref SCIP_STAGE_PRESOLVING
9253  * - \ref SCIP_STAGE_EXITPRESOLVE
9254  * - \ref SCIP_STAGE_PRESOLVED
9255  * - \ref SCIP_STAGE_INITSOLVE
9256  * - \ref SCIP_STAGE_SOLVING
9257  * - \ref SCIP_STAGE_SOLVED
9258  */
9259 extern
9261  SCIP* scip, /**< SCIP data structure */
9262  SCIP_VAR* var, /**< problem variable */
9263  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
9264  );
9265 
9266 /** get pseudo cost variance of the variable, either for entire solve or only for current branch and bound run
9267  *
9268  * @return returns the (corrected) variance of pseudo code information collected so far.
9269  *
9270  * @pre This method can be called if @p scip is in one of the following stages:
9271  * - \ref SCIP_STAGE_INITPRESOLVE
9272  * - \ref SCIP_STAGE_PRESOLVING
9273  * - \ref SCIP_STAGE_EXITPRESOLVE
9274  * - \ref SCIP_STAGE_PRESOLVED
9275  * - \ref SCIP_STAGE_INITSOLVE
9276  * - \ref SCIP_STAGE_SOLVING
9277  * - \ref SCIP_STAGE_SOLVED
9278  */
9279 extern
9281  SCIP* scip, /**< SCIP data structure */
9282  SCIP_VAR* var, /**< problem variable */
9283  SCIP_BRANCHDIR dir, /**< branching direction (downwards, or upwards) */
9284  SCIP_Bool onlycurrentrun /**< only for pseudo costs of current branch and bound run */
9285  );
9286 
9287 /** calculates a confidence bound for this variable under the assumption of normally distributed pseudo costs
9288  *
9289  * The confidence bound \f$ \theta \geq 0\f$ denotes the interval borders \f$ [X - \theta, \ X + \theta]\f$, which contains
9290  * the true pseudo costs of the variable, i.e., the expected value of the normal distribution, with a probability
9291  * of 2 * clevel - 1.
9292  *
9293  * @return value of confidence bound for this variable
9294  */
9295 extern
9297  SCIP* scip, /**< SCIP data structure */
9298  SCIP_VAR* var, /**< variable in question */
9299  SCIP_BRANCHDIR dir, /**< the branching direction for the confidence bound */
9300  SCIP_Bool onlycurrentrun, /**< should only the current run be taken into account */
9301  SCIP_CONFIDENCELEVEL clevel /**< confidence level for the interval */
9302  );
9303 
9304 /** check if variable pseudo-costs have a significant difference in location. The significance depends on
9305  * the choice of \p clevel and on the kind of tested hypothesis. The one-sided hypothesis, which
9306  * should be rejected, is that fracy * mu_y >= fracx * mu_x, where mu_y and mu_x denote the
9307  * unknown location means of the underlying pseudo-cost distributions of x and y.
9308  *
9309  * This method is applied best if variable x has a better pseudo-cost score than y. The method hypothesizes that y were actually
9310  * better than x (despite the current information), meaning that y can be expected to yield branching
9311  * decisions as least as good as x in the long run. If the method returns TRUE, the current history information is
9312  * sufficient to safely rely on the alternative hypothesis that x yields indeed a better branching score (on average)
9313  * than y.
9314  *
9315  * @note The order of x and y matters for the one-sided hypothesis
9316  *
9317  * @note set \p onesided to FALSE if you are not sure which variable is better. The hypothesis tested then reads
9318  * fracy * mu_y == fracx * mu_x vs the alternative hypothesis fracy * mu_y != fracx * mu_x.
9319  *
9320  * @return TRUE if the hypothesis can be safely rejected at the given confidence level
9321  */
9322 extern
9324  SCIP* scip, /**< SCIP data structure */
9325  SCIP_VAR* varx, /**< variable x */
9326  SCIP_Real fracx, /**< the fractionality of variable x */
9327  SCIP_VAR* vary, /**< variable y */
9328  SCIP_Real fracy, /**< the fractionality of variable y */
9329  SCIP_BRANCHDIR dir, /**< branching direction */
9330  SCIP_CONFIDENCELEVEL clevel, /**< confidence level for rejecting hypothesis */
9331  SCIP_Bool onesided /**< should a one-sided hypothesis y >= x be tested? */
9332  );
9333 
9334 /** tests at a given confidence level whether the variable pseudo-costs only have a small probability to
9335  * exceed a \p threshold. This is useful to determine if past observations provide enough evidence
9336  * to skip an expensive strong-branching step if there is already a candidate that has been proven to yield an improvement
9337  * of at least \p threshold.
9338  *
9339  * @note use \p clevel to adjust the level of confidence. For SCIP_CONFIDENCELEVEL_MIN, the method returns TRUE if
9340  * the estimated probability to exceed \p threshold is less than 25 %.
9341  *
9342  * @see SCIP_Confidencelevel for a list of available levels. The used probability limits refer to the one-sided levels
9343  * of confidence.
9344  *
9345  * @return TRUE if the variable pseudo-cost probabilistic model is likely to be smaller than \p threshold
9346  * at the given confidence level \p clevel.
9347  */
9348 extern
9350  SCIP* scip, /**< SCIP data structure */
9351  SCIP_VAR* var, /**< variable x */
9352  SCIP_Real frac, /**< the fractionality of variable x */
9353  SCIP_Real threshold, /**< the threshold to test against */
9354  SCIP_BRANCHDIR dir, /**< branching direction */
9355  SCIP_CONFIDENCELEVEL clevel /**< confidence level for rejecting hypothesis */
9356  );
9357 
9358 /** check if the current pseudo cost relative error in a direction violates the given threshold. The Relative
9359  * Error is calculated at a specific confidence level
9360  *
9361  * @return TRUE if relative error in variable pseudo costs is smaller than \p threshold
9362  */
9363 extern
9365  SCIP* scip, /**< SCIP data structure */
9366  SCIP_VAR* var, /**< variable in question */
9367  SCIP_Real threshold, /**< threshold for relative errors to be considered reliable (enough) */
9368  SCIP_CONFIDENCELEVEL clevel /**< a given confidence level */
9369  );
9370 
9371 /** gets the variable's pseudo cost score value for the given LP solution value
9372  *
9373  * @return the variable's pseudo cost score value for the given LP solution value
9374  *
9375  * @pre This method can be called if @p scip is in one of the following stages:
9376  * - \ref SCIP_STAGE_INITPRESOLVE
9377  * - \ref SCIP_STAGE_PRESOLVING
9378  * - \ref SCIP_STAGE_EXITPRESOLVE
9379  * - \ref SCIP_STAGE_PRESOLVED
9380  * - \ref SCIP_STAGE_INITSOLVE
9381  * - \ref SCIP_STAGE_SOLVING
9382  * - \ref SCIP_STAGE_SOLVED
9383  */
9384 extern
9386  SCIP* scip, /**< SCIP data structure */
9387  SCIP_VAR* var, /**< problem variable */
9388  SCIP_Real solval /**< variable's LP solution value */
9389  );
9390 
9391 /** gets the variable's pseudo cost score value for the given LP solution value,
9392  * only using the pseudo cost information of the current run
9393  *
9394  * @return the variable's pseudo cost score value for the given LP solution value,
9395  * only using the pseudo cost information of the current run
9396  *
9397  * @pre This method can be called if @p scip is in one of the following stages:
9398  * - \ref SCIP_STAGE_INITPRESOLVE
9399  * - \ref SCIP_STAGE_PRESOLVING
9400  * - \ref SCIP_STAGE_EXITPRESOLVE
9401  * - \ref SCIP_STAGE_PRESOLVED
9402  * - \ref SCIP_STAGE_INITSOLVE
9403  * - \ref SCIP_STAGE_SOLVING
9404  * - \ref SCIP_STAGE_SOLVED
9405  */
9406 extern
9408  SCIP* scip, /**< SCIP data structure */
9409  SCIP_VAR* var, /**< problem variable */
9410  SCIP_Real solval /**< variable's LP solution value */
9411  );
9412 
9413 /** returns the variable's VSIDS value
9414  *
9415  * @return the variable's VSIDS value
9416  *
9417  * @pre This method can be called if @p scip is in one of the following stages:
9418  * - \ref SCIP_STAGE_INITPRESOLVE
9419  * - \ref SCIP_STAGE_PRESOLVING
9420  * - \ref SCIP_STAGE_EXITPRESOLVE
9421  * - \ref SCIP_STAGE_PRESOLVED
9422  * - \ref SCIP_STAGE_INITSOLVE
9423  * - \ref SCIP_STAGE_SOLVING
9424  * - \ref SCIP_STAGE_SOLVED
9425  */
9426 extern
9428  SCIP* scip, /**< SCIP data structure */
9429  SCIP_VAR* var, /**< problem variable */
9430  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
9431  );
9432 
9433 /** returns the variable's VSIDS value only using conflicts of the current run
9434  *
9435  * @return the variable's VSIDS value only using conflicts of the current run
9436  *
9437  * @pre This method can be called if @p scip is in one of the following stages:
9438  * - \ref SCIP_STAGE_INITPRESOLVE
9439  * - \ref SCIP_STAGE_PRESOLVING
9440  * - \ref SCIP_STAGE_EXITPRESOLVE
9441  * - \ref SCIP_STAGE_PRESOLVED
9442  * - \ref SCIP_STAGE_INITSOLVE
9443  * - \ref SCIP_STAGE_SOLVING
9444  * - \ref SCIP_STAGE_SOLVED
9445  */
9446 extern
9448  SCIP* scip, /**< SCIP data structure */
9449  SCIP_VAR* var, /**< problem variable */
9450  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
9451  );
9452 
9453 /** returns the variable's conflict score value
9454  *
9455  * @return the variable's conflict score value
9456  *
9457  * @pre This method can be called if @p scip is in one of the following stages:
9458  * - \ref SCIP_STAGE_INITPRESOLVE
9459  * - \ref SCIP_STAGE_PRESOLVING
9460  * - \ref SCIP_STAGE_EXITPRESOLVE
9461  * - \ref SCIP_STAGE_PRESOLVED
9462  * - \ref SCIP_STAGE_INITSOLVE
9463  * - \ref SCIP_STAGE_SOLVING
9464  * - \ref SCIP_STAGE_SOLVED
9465  */
9466 extern
9468  SCIP* scip, /**< SCIP data structure */
9469  SCIP_VAR* var /**< problem variable */
9470  );
9471 
9472 /** returns the variable's conflict score value only using conflicts of the current run
9473  *
9474  * @return the variable's conflict score value only using conflicts of the current run
9475  *
9476  * @pre This method can be called if @p scip is in one of the following stages:
9477  * - \ref SCIP_STAGE_INITPRESOLVE
9478  * - \ref SCIP_STAGE_PRESOLVING
9479  * - \ref SCIP_STAGE_EXITPRESOLVE
9480  * - \ref SCIP_STAGE_PRESOLVED
9481  * - \ref SCIP_STAGE_INITSOLVE
9482  * - \ref SCIP_STAGE_SOLVING
9483  * - \ref SCIP_STAGE_SOLVED
9484  */
9485 extern
9487  SCIP* scip, /**< SCIP data structure */
9488  SCIP_VAR* var /**< problem variable */
9489  );
9490 
9491 /** returns the variable's conflict length score
9492  *
9493  * @return the variable's conflict length score
9494  *
9495  * @pre This method can be called if @p scip is in one of the following stages:
9496  * - \ref SCIP_STAGE_INITPRESOLVE
9497  * - \ref SCIP_STAGE_PRESOLVING
9498  * - \ref SCIP_STAGE_EXITPRESOLVE
9499  * - \ref SCIP_STAGE_PRESOLVED
9500  * - \ref SCIP_STAGE_INITSOLVE
9501  * - \ref SCIP_STAGE_SOLVING
9502  * - \ref SCIP_STAGE_SOLVED
9503  */
9504 extern
9506  SCIP* scip, /**< SCIP data structure */
9507  SCIP_VAR* var /**< problem variable */
9508  );
9509 
9510 /** returns the variable's conflict length score only using conflicts of the current run
9511  *
9512  * @return the variable's conflict length score only using conflicts of the current run
9513  *
9514  * @pre This method can be called if @p scip is in one of the following stages:
9515  * - \ref SCIP_STAGE_INITPRESOLVE
9516  * - \ref SCIP_STAGE_PRESOLVING
9517  * - \ref SCIP_STAGE_EXITPRESOLVE
9518  * - \ref SCIP_STAGE_PRESOLVED
9519  * - \ref SCIP_STAGE_INITSOLVE
9520  * - \ref SCIP_STAGE_SOLVING
9521  * - \ref SCIP_STAGE_SOLVED
9522  */
9523 extern
9525  SCIP* scip, /**< SCIP data structure */
9526  SCIP_VAR* var /**< problem variable */
9527  );
9528 
9529 /** returns the variable's average conflict length
9530  *
9531  * @return the variable's average conflict length
9532  *
9533  * @pre This method can be called if @p scip is in one of the following stages:
9534  * - \ref SCIP_STAGE_INITPRESOLVE
9535  * - \ref SCIP_STAGE_PRESOLVING
9536  * - \ref SCIP_STAGE_EXITPRESOLVE
9537  * - \ref SCIP_STAGE_PRESOLVED
9538  * - \ref SCIP_STAGE_INITSOLVE
9539  * - \ref SCIP_STAGE_SOLVING
9540  * - \ref SCIP_STAGE_SOLVED
9541  */
9542 extern
9544  SCIP* scip, /**< SCIP data structure */
9545  SCIP_VAR* var, /**< problem variable */
9546  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
9547  );
9548 
9549 /** returns the variable's average conflict length only using conflicts of the current run
9550  *
9551  * @return the variable's average conflict length only using conflicts of the current run
9552  *
9553  * @pre This method can be called if @p scip is in one of the following stages:
9554  * - \ref SCIP_STAGE_INITPRESOLVE
9555  * - \ref SCIP_STAGE_PRESOLVING
9556  * - \ref SCIP_STAGE_EXITPRESOLVE
9557  * - \ref SCIP_STAGE_PRESOLVED
9558  * - \ref SCIP_STAGE_INITSOLVE
9559  * - \ref SCIP_STAGE_SOLVING
9560  * - \ref SCIP_STAGE_SOLVED
9561  */
9562 extern
9564  SCIP* scip, /**< SCIP data structure */
9565  SCIP_VAR* var, /**< problem variable */
9566  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
9567  );
9568 
9569 /** returns the average number of inferences found after branching on the variable in given direction;
9570  * if branching on the variable in the given direction was yet evaluated, the average number of inferences
9571  * over all variables for branching in the given direction is returned
9572  *
9573  * @return the average number of inferences found after branching on the variable in given direction
9574  *
9575  * @pre This method can be called if @p scip is in one of the following stages:
9576  * - \ref SCIP_STAGE_INITPRESOLVE
9577  * - \ref SCIP_STAGE_PRESOLVING
9578  * - \ref SCIP_STAGE_EXITPRESOLVE
9579  * - \ref SCIP_STAGE_PRESOLVED
9580  * - \ref SCIP_STAGE_INITSOLVE
9581  * - \ref SCIP_STAGE_SOLVING
9582  * - \ref SCIP_STAGE_SOLVED
9583  */
9584 extern
9586  SCIP* scip, /**< SCIP data structure */
9587  SCIP_VAR* var, /**< problem variable */
9588  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
9589  );
9590 
9591 /** returns the average number of inferences found after branching on the variable in given direction in the current run;
9592  * if branching on the variable in the given direction was yet evaluated, the average number of inferences
9593  * over all variables for branching in the given direction is returned
9594  *
9595  * @return the average number of inferences found after branching on the variable in given direction in the current run
9596  *
9597  * @pre This method can be called if @p scip is in one of the following stages:
9598  * - \ref SCIP_STAGE_INITPRESOLVE
9599  * - \ref SCIP_STAGE_PRESOLVING
9600  * - \ref SCIP_STAGE_EXITPRESOLVE
9601  * - \ref SCIP_STAGE_PRESOLVED
9602  * - \ref SCIP_STAGE_INITSOLVE
9603  * - \ref SCIP_STAGE_SOLVING
9604  * - \ref SCIP_STAGE_SOLVED
9605  */
9606 extern
9608  SCIP* scip, /**< SCIP data structure */
9609  SCIP_VAR* var, /**< problem variable */
9610  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
9611  );
9612 
9613 /** returns the variable's average inference score value
9614  *
9615  * @return the variable's average inference score value
9616  *
9617  * @pre This method can be called if @p scip is in one of the following stages:
9618  * - \ref SCIP_STAGE_INITPRESOLVE
9619  * - \ref SCIP_STAGE_PRESOLVING
9620  * - \ref SCIP_STAGE_EXITPRESOLVE
9621  * - \ref SCIP_STAGE_PRESOLVED
9622  * - \ref SCIP_STAGE_INITSOLVE
9623  * - \ref SCIP_STAGE_SOLVING
9624  * - \ref SCIP_STAGE_SOLVED
9625  */
9626 extern
9628  SCIP* scip, /**< SCIP data structure */
9629  SCIP_VAR* var /**< problem variable */
9630  );
9631 
9632 /** returns the variable's average inference score value only using inferences of the current run
9633  *
9634  * @return the variable's average inference score value only using inferences of the current run
9635  *
9636  * @pre This method can be called if @p scip is in one of the following stages:
9637  * - \ref SCIP_STAGE_INITPRESOLVE
9638  * - \ref SCIP_STAGE_PRESOLVING
9639  * - \ref SCIP_STAGE_EXITPRESOLVE
9640  * - \ref SCIP_STAGE_PRESOLVED
9641  * - \ref SCIP_STAGE_INITSOLVE
9642  * - \ref SCIP_STAGE_SOLVING
9643  * - \ref SCIP_STAGE_SOLVED
9644  */
9645 extern
9647  SCIP* scip, /**< SCIP data structure */
9648  SCIP_VAR* var /**< problem variable */
9649  );
9650 
9651 /** initializes the upwards and downwards pseudocosts, conflict scores, conflict lengths, inference scores, cutoff scores
9652  * of a variable to the given values
9653  *
9654  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9655  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9656  *
9657  * @pre This method can be called if @p scip is in one of the following stages:
9658  * - \ref SCIP_STAGE_TRANSFORMED
9659  * - \ref SCIP_STAGE_INITPRESOLVE
9660  * - \ref SCIP_STAGE_PRESOLVING
9661  * - \ref SCIP_STAGE_EXITPRESOLVE
9662  * - \ref SCIP_STAGE_PRESOLVED
9663  * - \ref SCIP_STAGE_INITSOLVE
9664  * - \ref SCIP_STAGE_SOLVING
9665  */
9666 extern
9668  SCIP* scip, /**< SCIP data structure */
9669  SCIP_VAR* var, /**< variable which should be initialized */
9670  SCIP_Real downpscost, /**< value to which pseudocosts for downwards branching should be initialized */
9671  SCIP_Real uppscost, /**< value to which pseudocosts for upwards branching should be initialized */
9672  SCIP_Real downvsids, /**< value to which VSIDS score for downwards branching should be initialized */
9673  SCIP_Real upvsids, /**< value to which VSIDS score for upwards branching should be initialized */
9674  SCIP_Real downconflen, /**< value to which conflict length score for downwards branching should be initialized */
9675  SCIP_Real upconflen, /**< value to which conflict length score for upwards branching should be initialized */
9676  SCIP_Real downinfer, /**< value to which inference counter for downwards branching should be initialized */
9677  SCIP_Real upinfer, /**< value to which inference counter for upwards branching should be initialized */
9678  SCIP_Real downcutoff, /**< value to which cutoff counter for downwards branching should be initialized */
9679  SCIP_Real upcutoff /**< value to which cutoff counter for upwards branching should be initialized */
9680  );
9681 
9682 /** initializes the upwards and downwards conflict scores, conflict lengths, inference scores, cutoff scores of a
9683  * variable w.r.t. a value by the given values (SCIP_VALUEHISTORY)
9684  *
9685  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9686  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9687  *
9688  * @pre This method can be called if @p scip is in one of the following stages:
9689  * - \ref SCIP_STAGE_TRANSFORMED
9690  * - \ref SCIP_STAGE_INITPRESOLVE
9691  * - \ref SCIP_STAGE_PRESOLVING
9692  * - \ref SCIP_STAGE_EXITPRESOLVE
9693  * - \ref SCIP_STAGE_PRESOLVED
9694  * - \ref SCIP_STAGE_INITSOLVE
9695  * - \ref SCIP_STAGE_SOLVING
9696  */
9697 extern
9699  SCIP* scip, /**< SCIP data structure */
9700  SCIP_VAR* var, /**< variable which should be initialized */
9701  SCIP_Real value, /**< domain value, or SCIP_UNKNOWN */
9702  SCIP_Real downvsids, /**< value to which VSIDS score for downwards branching should be initialized */
9703  SCIP_Real upvsids, /**< value to which VSIDS score for upwards branching should be initialized */
9704  SCIP_Real downconflen, /**< value to which conflict length score for downwards branching should be initialized */
9705  SCIP_Real upconflen, /**< value to which conflict length score for upwards branching should be initialized */
9706  SCIP_Real downinfer, /**< value to which inference counter for downwards branching should be initialized */
9707  SCIP_Real upinfer, /**< value to which inference counter for upwards branching should be initialized */
9708  SCIP_Real downcutoff, /**< value to which cutoff counter for downwards branching should be initialized */
9709  SCIP_Real upcutoff /**< value to which cutoff counter for upwards branching should be initialized */
9710  );
9711 
9712 /** returns the average number of cutoffs found after branching on the variable in given direction;
9713  * if branching on the variable in the given direction was yet evaluated, the average number of cutoffs
9714  * over all variables for branching in the given direction is returned
9715  *
9716  * @return the average number of cutoffs found after branching on the variable in given direction
9717  *
9718  * @pre This method can be called if @p scip is in one of the following stages:
9719  * - \ref SCIP_STAGE_INITPRESOLVE
9720  * - \ref SCIP_STAGE_PRESOLVING
9721  * - \ref SCIP_STAGE_EXITPRESOLVE
9722  * - \ref SCIP_STAGE_PRESOLVED
9723  * - \ref SCIP_STAGE_INITSOLVE
9724  * - \ref SCIP_STAGE_SOLVING
9725  * - \ref SCIP_STAGE_SOLVED
9726  */
9727 extern
9729  SCIP* scip, /**< SCIP data structure */
9730  SCIP_VAR* var, /**< problem variable */
9731  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
9732  );
9733 
9734 /** returns the average number of cutoffs found after branching on the variable in given direction in the current run;
9735  * if branching on the variable in the given direction was yet evaluated, the average number of cutoffs
9736  * over all variables for branching in the given direction is returned
9737  *
9738  * @return the average number of cutoffs found after branching on the variable in given direction in the current run
9739  *
9740  * @pre This method can be called if @p scip is in one of the following stages:
9741  * - \ref SCIP_STAGE_INITPRESOLVE
9742  * - \ref SCIP_STAGE_PRESOLVING
9743  * - \ref SCIP_STAGE_EXITPRESOLVE
9744  * - \ref SCIP_STAGE_PRESOLVED
9745  * - \ref SCIP_STAGE_INITSOLVE
9746  * - \ref SCIP_STAGE_SOLVING
9747  * - \ref SCIP_STAGE_SOLVED
9748  */
9749 extern
9751  SCIP* scip, /**< SCIP data structure */
9752  SCIP_VAR* var, /**< problem variable */
9753  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
9754  );
9755 
9756 /** returns the variable's average cutoff score value
9757  *
9758  * @return the variable's average cutoff score value
9759  *
9760  * @pre This method can be called if @p scip is in one of the following stages:
9761  * - \ref SCIP_STAGE_INITPRESOLVE
9762  * - \ref SCIP_STAGE_PRESOLVING
9763  * - \ref SCIP_STAGE_EXITPRESOLVE
9764  * - \ref SCIP_STAGE_PRESOLVED
9765  * - \ref SCIP_STAGE_INITSOLVE
9766  * - \ref SCIP_STAGE_SOLVING
9767  * - \ref SCIP_STAGE_SOLVED
9768  */
9769 extern
9771  SCIP* scip, /**< SCIP data structure */
9772  SCIP_VAR* var /**< problem variable */
9773  );
9774 
9775 /** returns the variable's average cutoff score value, only using cutoffs of the current run
9776  *
9777  * @return the variable's average cutoff score value, only using cutoffs of the current run
9778  *
9779  * @pre This method can be called if @p scip is in one of the following stages:
9780  * - \ref SCIP_STAGE_INITPRESOLVE
9781  * - \ref SCIP_STAGE_PRESOLVING
9782  * - \ref SCIP_STAGE_EXITPRESOLVE
9783  * - \ref SCIP_STAGE_PRESOLVED
9784  * - \ref SCIP_STAGE_INITSOLVE
9785  * - \ref SCIP_STAGE_SOLVING
9786  * - \ref SCIP_STAGE_SOLVED
9787  */
9788 extern
9790  SCIP* scip, /**< SCIP data structure */
9791  SCIP_VAR* var /**< problem variable */
9792  );
9793 
9794 /** returns the variable's average inference/cutoff score value, weighting the cutoffs of the variable with the given
9795  * factor
9796  *
9797  * @return the variable's average inference/cutoff score value
9798  *
9799  * @pre This method can be called if @p scip is in one of the following stages:
9800  * - \ref SCIP_STAGE_INITPRESOLVE
9801  * - \ref SCIP_STAGE_PRESOLVING
9802  * - \ref SCIP_STAGE_EXITPRESOLVE
9803  * - \ref SCIP_STAGE_PRESOLVED
9804  * - \ref SCIP_STAGE_INITSOLVE
9805  * - \ref SCIP_STAGE_SOLVING
9806  * - \ref SCIP_STAGE_SOLVED
9807  */
9808 extern
9810  SCIP* scip, /**< SCIP data structure */
9811  SCIP_VAR* var, /**< problem variable */
9812  SCIP_Real cutoffweight /**< factor to weigh average number of cutoffs in branching score */
9813  );
9814 
9815 /** returns the variable's average inference/cutoff score value, weighting the cutoffs of the variable with the given
9816  * factor, only using inferences and cutoffs of the current run
9817  *
9818  * @return the variable's average inference/cutoff score value, only using inferences and cutoffs of the current run
9819  *
9820  * @pre This method can be called if @p scip is in one of the following stages:
9821  * - \ref SCIP_STAGE_INITPRESOLVE
9822  * - \ref SCIP_STAGE_PRESOLVING
9823  * - \ref SCIP_STAGE_EXITPRESOLVE
9824  * - \ref SCIP_STAGE_PRESOLVED
9825  * - \ref SCIP_STAGE_INITSOLVE
9826  * - \ref SCIP_STAGE_SOLVING
9827  * - \ref SCIP_STAGE_SOLVED
9828  */
9829 extern
9831  SCIP* scip, /**< SCIP data structure */
9832  SCIP_VAR* var, /**< problem variable */
9833  SCIP_Real cutoffweight /**< factor to weigh average number of cutoffs in branching score */
9834  );
9835 
9836 /** outputs variable information to file stream via the message system
9837  *
9838  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9839  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9840  *
9841  * @pre This method can be called if @p scip is in one of the following stages:
9842  * - \ref SCIP_STAGE_PROBLEM
9843  * - \ref SCIP_STAGE_TRANSFORMING
9844  * - \ref SCIP_STAGE_TRANSFORMED
9845  * - \ref SCIP_STAGE_INITPRESOLVE
9846  * - \ref SCIP_STAGE_PRESOLVING
9847  * - \ref SCIP_STAGE_EXITPRESOLVE
9848  * - \ref SCIP_STAGE_PRESOLVED
9849  * - \ref SCIP_STAGE_INITSOLVE
9850  * - \ref SCIP_STAGE_SOLVING
9851  * - \ref SCIP_STAGE_SOLVED
9852  * - \ref SCIP_STAGE_EXITSOLVE
9853  * - \ref SCIP_STAGE_FREETRANS
9854  *
9855  * @note If the message handler is set to a NULL pointer nothing will be printed
9856  */
9857 extern
9859  SCIP* scip, /**< SCIP data structure */
9860  SCIP_VAR* var, /**< problem variable */
9861  FILE* file /**< output file (or NULL for standard output) */
9862  );
9863 
9864 /**@} */
9865 
9866 
9867 
9868 
9869 /*
9870  * conflict analysis methods
9871  */
9872 
9873 /**@name Conflict Analysis Methods */
9874 /**@{ */
9875 
9876 /** return TRUE if conflict analysis is applicable; In case the function return FALSE there is no need to initialize the
9877  * conflict analysis since it will not be applied
9878  *
9879  * @return return TRUE if conflict analysis is applicable; In case the function return FALSE there is no need to initialize the
9880  * conflict analysis since it will not be applied
9881  *
9882  * @pre This method can be called if SCIP is in one of the following stages:
9883  * - \ref SCIP_STAGE_INITPRESOLVE
9884  * - \ref SCIP_STAGE_PRESOLVING
9885  * - \ref SCIP_STAGE_EXITPRESOLVE
9886  * - \ref SCIP_STAGE_SOLVING
9887  *
9888  * @note SCIP stage does not get changed
9889  */
9890 extern
9892  SCIP* scip /**< SCIP data structure */
9893  );
9894 
9895 /** initializes the conflict analysis by clearing the conflict candidate queue; this method must be called before you
9896  * enter the conflict variables by calling SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPaddConflictBd(),
9897  * SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb(), SCIPaddConflictRelaxedBd(), or SCIPaddConflictBinvar();
9898  *
9899  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9900  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9901  *
9902  * @pre This method can be called if SCIP is in one of the following stages:
9903  * - \ref SCIP_STAGE_PRESOLVING
9904  * - \ref SCIP_STAGE_SOLVING
9905  *
9906  * @note SCIP stage does not get changed
9907  */
9908 extern
9910  SCIP* scip /**< SCIP data structure */
9911  );
9912 
9913 /** adds lower bound of variable at the time of the given bound change index to the conflict analysis' candidate storage;
9914  * this method should be called in one of the following two cases:
9915  * 1. Before calling the SCIPanalyzeConflict() method, SCIPaddConflictLb() should be called for each lower bound
9916  * that led to the conflict (e.g. the infeasibility of globally or locally valid constraint).
9917  * 2. In the propagation conflict resolving method of a constraint handler, SCIPaddConflictLb() should be called
9918  * for each lower bound, whose current assignment led to the deduction of the given conflict bound.
9919  *
9920  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9921  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9922  *
9923  * @pre This method can be called if SCIP is in one of the following stages:
9924  * - \ref SCIP_STAGE_PRESOLVING
9925  * - \ref SCIP_STAGE_SOLVING
9926  *
9927  * @note SCIP stage does not get changed
9928  */
9929 extern
9931  SCIP* scip, /**< SCIP data structure */
9932  SCIP_VAR* var, /**< variable whose lower bound should be added to conflict candidate queue */
9933  SCIP_BDCHGIDX* bdchgidx /**< bound change index representing time on path to current node, when the
9934  * conflicting bound was valid, NULL for current local bound */
9935  );
9936 
9937 /** adds lower bound of variable at the time of the given bound change index to the conflict analysis' candidate storage
9938  * with the additional information of a relaxed lower bound; this relaxed lower bound is the one which would be enough
9939  * to explain a certain bound change;
9940  * this method should be called in one of the following two cases:
9941  * 1. Before calling the SCIPanalyzeConflict() method, SCIPaddConflictRelaxedLb() should be called for each (relaxed) lower bound
9942  * that led to the conflict (e.g. the infeasibility of globally or locally valid constraint).
9943  * 2. In the propagation conflict resolving method of a constraint handler, SCIPaddConflictRelexedLb() should be called
9944  * for each (relaxed) lower bound, whose current assignment led to the deduction of the given conflict bound.
9945  *
9946  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9947  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9948  *
9949  * @pre This method can be called if SCIP is in one of the following stages:
9950  * - \ref SCIP_STAGE_PRESOLVING
9951  * - \ref SCIP_STAGE_SOLVING
9952  *
9953  * @note SCIP stage does not get changed
9954  */
9955 extern
9957  SCIP* scip, /**< SCIP data structure */
9958  SCIP_VAR* var, /**< variable whose lower bound should be added to conflict candidate queue */
9959  SCIP_BDCHGIDX* bdchgidx, /**< bound change index representing time on path to current node, when the
9960  * conflicting bound was valid, NULL for current local bound */
9961  SCIP_Real relaxedlb /**< the relaxed lower bound */
9962  );
9963 
9964 /** adds upper bound of variable at the time of the given bound change index to the conflict analysis' candidate storage;
9965  * this method should be called in one of the following two cases:
9966  * 1. Before calling the SCIPanalyzeConflict() method, SCIPaddConflictUb() should be called for each upper bound that
9967  * led to the conflict (e.g. the infeasibility of globally or locally valid constraint).
9968  * 2. In the propagation conflict resolving method of a constraint handler, SCIPaddConflictUb() should be called for
9969  * each upper bound, whose current assignment led to the deduction of the given conflict bound.
9970  *
9971  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9972  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9973  *
9974  * @pre This method can be called if SCIP is in one of the following stages:
9975  * - \ref SCIP_STAGE_PRESOLVING
9976  * - \ref SCIP_STAGE_SOLVING
9977  *
9978  * @note SCIP stage does not get changed
9979  */
9980 extern
9982  SCIP* scip, /**< SCIP data structure */
9983  SCIP_VAR* var, /**< variable whose upper bound should be added to conflict candidate queue */
9984  SCIP_BDCHGIDX* bdchgidx /**< bound change index representing time on path to current node, when the
9985  * conflicting bound was valid, NULL for current local bound */
9986  );
9987 
9988 /** adds upper bound of variable at the time of the given bound change index to the conflict analysis' candidate storage
9989  * with the additional information of a relaxed upper bound; this relaxed upper bound is the one which would be enough
9990  * to explain a certain bound change;
9991  * this method should be called in one of the following two cases:
9992  * 1. Before calling the SCIPanalyzeConflict() method, SCIPaddConflictRelaxedUb() should be called for each (relaxed) upper
9993  * bound that led to the conflict (e.g. the infeasibility of globally or locally valid constraint).
9994  * 2. In the propagation conflict resolving method of a constraint handler, SCIPaddConflictRelaxedUb() should be
9995  * called for each (relaxed) upper bound, whose current assignment led to the deduction of the given conflict
9996  * bound.
9997  *
9998  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9999  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10000  *
10001  * @pre This method can be called if SCIP is in one of the following stages:
10002  * - \ref SCIP_STAGE_PRESOLVING
10003  * - \ref SCIP_STAGE_SOLVING
10004  *
10005  * @note SCIP stage does not get changed
10006  */
10007 extern
10009  SCIP* scip, /**< SCIP data structure */
10010  SCIP_VAR* var, /**< variable whose upper bound should be added to conflict candidate queue */
10011  SCIP_BDCHGIDX* bdchgidx, /**< bound change index representing time on path to current node, when the
10012  * conflicting bound was valid, NULL for current local bound */
10013  SCIP_Real relaxedub /**< the relaxed upper bound */
10014  );
10015 
10016 /** adds lower or upper bound of variable at the time of the given bound change index to the conflict analysis' candidate
10017  * storage; this method should be called in one of the following two cases:
10018  * 1. Before calling the SCIPanalyzeConflict() method, SCIPaddConflictBd() should be called for each bound
10019  * that led to the conflict (e.g. the infeasibility of globally or locally valid constraint).
10020  * 2. In the propagation conflict resolving method of a constraint handler, SCIPaddConflictBd() should be called
10021  * for each bound, whose current assignment led to the deduction of the given conflict bound.
10022  *
10023  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10024  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10025  *
10026  * @pre This method can be called if SCIP is in one of the following stages:
10027  * - \ref SCIP_STAGE_PRESOLVING
10028  * - \ref SCIP_STAGE_SOLVING
10029  *
10030  * @note SCIP stage does not get changed
10031  */
10032 extern
10034  SCIP* scip, /**< SCIP data structure */
10035  SCIP_VAR* var, /**< variable whose upper bound should be added to conflict candidate queue */
10036  SCIP_BOUNDTYPE boundtype, /**< the type of the conflicting bound (lower or upper bound) */
10037  SCIP_BDCHGIDX* bdchgidx /**< bound change index representing time on path to current node, when the
10038  * conflicting bound was valid, NULL for current local bound */
10039  );
10040 
10041 /** adds lower or upper bound of variable at the time of the given bound change index to the conflict analysis'
10042  * candidate storage; with the additional information of a relaxed upper bound; this relaxed upper bound is the one
10043  * which would be enough to explain a certain bound change;
10044  * this method should be called in one of the following two cases:
10045  * 1. Before calling the SCIPanalyzeConflict() method, SCIPaddConflictRelaxedBd() should be called for each (relaxed)
10046  * bound that led to the conflict (e.g. the infeasibility of globally or locally valid constraint).
10047  * 2. In the propagation conflict resolving method of a constraint handler, SCIPaddConflictRelaxedBd() should be
10048  * called for each (relaxed) bound, whose current assignment led to the deduction of the given conflict bound.
10049  *
10050  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10051  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10052  *
10053  * @pre This method can be called if SCIP is in one of the following stages:
10054  * - \ref SCIP_STAGE_PRESOLVING
10055  * - \ref SCIP_STAGE_SOLVING
10056  *
10057  * @note SCIP stage does not get changed
10058  */
10059 extern
10061  SCIP* scip, /**< SCIP data structure */
10062  SCIP_VAR* var, /**< variable whose upper bound should be added to conflict candidate queue */
10063  SCIP_BOUNDTYPE boundtype, /**< the type of the conflicting bound (lower or upper bound) */
10064  SCIP_BDCHGIDX* bdchgidx, /**< bound change index representing time on path to current node, when the
10065  * conflicting bound was valid, NULL for current local bound */
10066  SCIP_Real relaxedbd /**< the relaxed bound */
10067  );
10068 
10069 /** adds changed bound of fixed binary variable to the conflict analysis' candidate storage;
10070  * this method should be called in one of the following two cases:
10071  * 1. Before calling the SCIPanalyzeConflict() method, SCIPaddConflictBinvar() should be called for each fixed binary
10072  * variable that led to the conflict (e.g. the infeasibility of globally or locally valid constraint).
10073  * 2. In the propagation conflict resolving method of a constraint handler, SCIPaddConflictBinvar() should be called
10074  * for each binary variable, whose current fixing led to the deduction of the given conflict bound.
10075  *
10076  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10077  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10078  *
10079  * @pre This method can be called if SCIP is in one of the following stages:
10080  * - \ref SCIP_STAGE_PRESOLVING
10081  * - \ref SCIP_STAGE_SOLVING
10082  *
10083  * @note SCIP stage does not get changed
10084  */
10085 extern
10087  SCIP* scip, /**< SCIP data structure */
10088  SCIP_VAR* var /**< binary variable whose changed bound should be added to conflict queue */
10089  );
10090 
10091 /** checks if the given variable is already part of the current conflict set or queued for resolving with the same or
10092  * even stronger bound
10093  *
10094  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10095  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10096  *
10097  * @pre This method can be called if SCIP is in one of the following stages:
10098  * - \ref SCIP_STAGE_PRESOLVING
10099  * - \ref SCIP_STAGE_SOLVING
10100  *
10101  * @note SCIP stage does not get changed
10102  */
10103 extern
10105  SCIP* scip, /**< SCIP data structure */
10106  SCIP_VAR* var, /**< variable whose upper bound should be added to conflict candidate queue */
10107  SCIP_BOUNDTYPE boundtype, /**< the type of the conflicting bound (lower or upper bound) */
10108  SCIP_BDCHGIDX* bdchgidx, /**< bound change index representing time on path to current node, when the
10109  * conflicting bound was valid, NULL for current local bound */
10110  SCIP_Bool* used /**< pointer to store if the variable is already used */
10111  );
10112 
10113 /** returns the conflict lower bound if the variable is present in the current conflict set; otherwise the global lower
10114  * bound
10115  *
10116  * @return returns the conflict lower bound if the variable is present in the current conflict set; otherwise the global lower
10117  * bound
10118  *
10119  * @pre This method can be called if SCIP is in one of the following stages:
10120  * - \ref SCIP_STAGE_PRESOLVING
10121  * - \ref SCIP_STAGE_SOLVING
10122  *
10123  * @note SCIP stage does not get changed
10124  */
10125 extern
10127  SCIP* scip, /**< SCIP data structure */
10128  SCIP_VAR* var /**< problem variable */
10129  );
10130 
10131 /** returns the conflict upper bound if the variable is present in the current conflict set; otherwise minus global
10132  * upper bound
10133  *
10134  * @return returns the conflict upper bound if the variable is present in the current conflict set; otherwise minus global
10135  * upper bound
10136  *
10137  * @pre This method can be called if SCIP is in one of the following stages:
10138  * - \ref SCIP_STAGE_PRESOLVING
10139  * - \ref SCIP_STAGE_SOLVING
10140  *
10141  * @note SCIP stage does not get changed
10142  */
10143 extern
10145  SCIP* scip, /**< SCIP data structure */
10146  SCIP_VAR* var /**< problem variable */
10147  );
10148 
10149 /** analyzes conflict bounds that were added after a call to SCIPinitConflictAnalysis() with calls to
10150  * SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPaddConflictBd(), SCIPaddConflictRelaxedLb(),
10151  * SCIPaddConflictRelaxedUb(), SCIPaddConflictRelaxedBd(), or SCIPaddConflictBinvar(); on success, calls the conflict
10152  * handlers to create a conflict constraint out of the resulting conflict set; the given valid depth must be a depth
10153  * level, at which the conflict set defined by calls to SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPaddConflictBd(),
10154  * SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb(), SCIPaddConflictRelaxedBd(), and SCIPaddConflictBinvar() is
10155  * valid for the whole subtree; if the conflict was found by a violated constraint, use SCIPanalyzeConflictCons()
10156  * instead of SCIPanalyzeConflict() to make sure, that the correct valid depth is used
10157  *
10158  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10159  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10160  *
10161  * @pre This method can be called if SCIP is in one of the following stages:
10162  * - \ref SCIP_STAGE_PRESOLVING
10163  * - \ref SCIP_STAGE_SOLVING
10164  *
10165  * @note SCIP stage does not get changed
10166  */
10167 extern
10169  SCIP* scip, /**< SCIP data structure */
10170  int validdepth, /**< minimal depth level at which the initial conflict set is valid */
10171  SCIP_Bool* success /**< pointer to store whether a conflict constraint was created, or NULL */
10172  );
10173 
10174 /** analyzes conflict bounds that were added with calls to SCIPaddConflictLb(), SCIPaddConflictUb(),
10175  * SCIPaddConflictBd(), SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb(), SCIPaddConflictRelaxedBd(), or
10176  * SCIPaddConflictBinvar(); on success, calls the conflict handlers to create a conflict constraint out of the
10177  * resulting conflict set; the given constraint must be the constraint that detected the conflict, i.e. the constraint
10178  * that is infeasible in the local bounds of the initial conflict set (defined by calls to SCIPaddConflictLb(),
10179  * SCIPaddConflictUb(), SCIPaddConflictBd(), SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb(),
10180  * SCIPaddConflictRelaxedBd(), and SCIPaddConflictBinvar())
10181  *
10182  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10183  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10184  *
10185  * @pre This method can be called if SCIP is in one of the following stages:
10186  * - \ref SCIP_STAGE_PRESOLVING
10187  * - \ref SCIP_STAGE_SOLVING
10188  *
10189  * @note SCIP stage does not get changed
10190  */
10191 extern
10193  SCIP* scip, /**< SCIP data structure */
10194  SCIP_CONS* cons, /**< constraint that detected the conflict */
10195  SCIP_Bool* success /**< pointer to store whether a conflict constraint was created, or NULL */
10196  );
10197 
10198 /**@} */
10199 
10200 
10201 
10202 
10203 /*
10204  * constraint methods
10205  */
10206 
10207 /**@name Constraint Methods */
10208 /**@{ */
10209 
10210 /** creates and captures a constraint of the given constraint handler
10211  *
10212  * @warning If a constraint is marked to be checked for feasibility but not to be enforced, a LP or pseudo solution may
10213  * be declared feasible even if it violates this particular constraint. This constellation should only be
10214  * used, if no LP or pseudo solution can violate the constraint -- e.g. if a local constraint is redundant due
10215  * to the variable's local bounds.
10216  *
10217  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10218  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10219  *
10220  * @pre This method can be called if @p scip is in one of the following stages:
10221  * - \ref SCIP_STAGE_PROBLEM
10222  * - \ref SCIP_STAGE_TRANSFORMING
10223  * - \ref SCIP_STAGE_INITPRESOLVE
10224  * - \ref SCIP_STAGE_PRESOLVING
10225  * - \ref SCIP_STAGE_EXITPRESOLVE
10226  * - \ref SCIP_STAGE_PRESOLVED
10227  * - \ref SCIP_STAGE_INITSOLVE
10228  * - \ref SCIP_STAGE_SOLVING
10229  * - \ref SCIP_STAGE_EXITSOLVE
10230  *
10231  * @note the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
10232  */
10233 extern
10235  SCIP* scip, /**< SCIP data structure */
10236  SCIP_CONS** cons, /**< pointer to constraint */
10237  const char* name, /**< name of constraint */
10238  SCIP_CONSHDLR* conshdlr, /**< constraint handler for this constraint */
10239  SCIP_CONSDATA* consdata, /**< data for this specific constraint */
10240  SCIP_Bool initial, /**< should the LP relaxation of constraint be in the initial LP?
10241  * Usually set to TRUE. Set to FALSE for 'lazy constraints'. */
10242  SCIP_Bool separate, /**< should the constraint be separated during LP processing?
10243  * Usually set to TRUE. */
10244  SCIP_Bool enforce, /**< should the constraint be enforced during node processing?
10245  * TRUE for model constraints, FALSE for additional, redundant constraints. */
10246  SCIP_Bool check, /**< should the constraint be checked for feasibility?
10247  * TRUE for model constraints, FALSE for additional, redundant constraints. */
10248  SCIP_Bool propagate, /**< should the constraint be propagated during node processing?
10249  * Usually set to TRUE. */
10250  SCIP_Bool local, /**< is constraint only valid locally?
10251  * Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. */
10252  SCIP_Bool modifiable, /**< is constraint modifiable (subject to column generation)?
10253  * Usually set to FALSE. In column generation applications, set to TRUE if pricing
10254  * adds coefficients to this constraint. */
10255  SCIP_Bool dynamic, /**< is constraint subject to aging?
10256  * Usually set to FALSE. Set to TRUE for own cuts which
10257  * are separated as constraints. */
10258  SCIP_Bool removable, /**< should the relaxation be removed from the LP due to aging or cleanup?
10259  * Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'. */
10260  SCIP_Bool stickingatnode /**< should the constraint always be kept at the node where it was added, even
10261  * if it may be moved to a more global node?
10262  * Usually set to FALSE. Set to TRUE to for constraints that represent node data. */
10263  );
10264 
10265 /** parses constraint information (in cip format) out of a string; if the parsing process was successful a constraint is
10266  * creates and captures;
10267  *
10268  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10269  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10270  *
10271  * @pre This method can be called if @p scip is in one of the following stages:
10272  * - \ref SCIP_STAGE_PROBLEM
10273  * - \ref SCIP_STAGE_TRANSFORMING
10274  * - \ref SCIP_STAGE_INITPRESOLVE
10275  * - \ref SCIP_STAGE_PRESOLVING
10276  * - \ref SCIP_STAGE_EXITPRESOLVE
10277  * - \ref SCIP_STAGE_PRESOLVED
10278  * - \ref SCIP_STAGE_SOLVING
10279  * - \ref SCIP_STAGE_EXITSOLVE
10280  *
10281  * @warning If a constraint is marked to be checked for feasibility but not to be enforced, a LP or pseudo solution may
10282  * be declared feasible even if it violates this particular constraint. This constellation should only be
10283  * used, if no LP or pseudo solution can violate the constraint -- e.g. if a local constraint is redundant due
10284  * to the variable's local bounds.
10285  */
10286 extern
10288  SCIP* scip, /**< SCIP data structure */
10289  SCIP_CONS** cons, /**< pointer to store constraint */
10290  const char* str, /**< string to parse for constraint */
10291  SCIP_Bool initial, /**< should the LP relaxation of constraint be in the initial LP?
10292  * Usually set to TRUE. Set to FALSE for 'lazy constraints'. */
10293  SCIP_Bool separate, /**< should the constraint be separated during LP processing?
10294  * Usually set to TRUE. */
10295  SCIP_Bool enforce, /**< should the constraint be enforced during node processing?
10296  * TRUE for model constraints, FALSE for additional, redundant constraints. */
10297  SCIP_Bool check, /**< should the constraint be checked for feasibility?
10298  * TRUE for model constraints, FALSE for additional, redundant constraints. */
10299  SCIP_Bool propagate, /**< should the constraint be propagated during node processing?
10300  * Usually set to TRUE. */
10301  SCIP_Bool local, /**< is constraint only valid locally?
10302  * Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. */
10303  SCIP_Bool modifiable, /**< is constraint modifiable (subject to column generation)?
10304  * Usually set to FALSE. In column generation applications, set to TRUE if pricing
10305  * adds coefficients to this constraint. */
10306  SCIP_Bool dynamic, /**< is constraint subject to aging?
10307  * Usually set to FALSE. Set to TRUE for own cuts which
10308  * are separated as constraints. */
10309  SCIP_Bool removable, /**< should the relaxation be removed from the LP due to aging or cleanup?
10310  * Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'. */
10311  SCIP_Bool stickingatnode, /**< should the constraint always be kept at the node where it was added, even
10312  * if it may be moved to a more global node?
10313  * Usually set to FALSE. Set to TRUE to for constraints that represent node data. */
10314  SCIP_Bool* success /**< pointer to store if the paring process was successful */
10315  );
10316 
10317 /** increases usage counter of constraint
10318  *
10319  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10320  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10321  *
10322  * @pre This method can be called if @p scip is in one of the following stages:
10323  * - \ref SCIP_STAGE_PROBLEM
10324  * - \ref SCIP_STAGE_TRANSFORMING
10325  * - \ref SCIP_STAGE_TRANSFORMED
10326  * - \ref SCIP_STAGE_INITPRESOLVE
10327  * - \ref SCIP_STAGE_PRESOLVING
10328  * - \ref SCIP_STAGE_EXITPRESOLVE
10329  * - \ref SCIP_STAGE_PRESOLVED
10330  * - \ref SCIP_STAGE_INITSOLVE
10331  * - \ref SCIP_STAGE_SOLVING
10332  * - \ref SCIP_STAGE_SOLVED
10333  */
10334 extern
10336  SCIP* scip, /**< SCIP data structure */
10337  SCIP_CONS* cons /**< constraint to capture */
10338  );
10339 
10340 /** decreases usage counter of constraint, if the usage pointer reaches zero the constraint gets freed
10341  *
10342  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10343  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10344  *
10345  * @pre This method can be called if @p scip is in one of the following stages:
10346  * - \ref SCIP_STAGE_PROBLEM
10347  * - \ref SCIP_STAGE_TRANSFORMING
10348  * - \ref SCIP_STAGE_TRANSFORMED
10349  * - \ref SCIP_STAGE_INITPRESOLVE
10350  * - \ref SCIP_STAGE_PRESOLVING
10351  * - \ref SCIP_STAGE_EXITPRESOLVE
10352  * - \ref SCIP_STAGE_PRESOLVED
10353  * - \ref SCIP_STAGE_INITSOLVE
10354  * - \ref SCIP_STAGE_SOLVING
10355  * - \ref SCIP_STAGE_SOLVED
10356  * - \ref SCIP_STAGE_EXITSOLVE
10357  * - \ref SCIP_STAGE_FREETRANS
10358  *
10359  * @note the pointer of the constraint will be NULLed
10360  */
10361 extern
10363  SCIP* scip, /**< SCIP data structure */
10364  SCIP_CONS** cons /**< pointer to constraint */
10365  );
10366 
10367 /** change constraint name
10368  *
10369  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10370  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10371  *
10372  * @pre This method can be called if @p scip is in one of the following stages:
10373  * - \ref SCIP_STAGE_PROBLEM
10374  *
10375  * @note to get the current name of a constraint, use SCIPconsGetName() from pub_cons.h
10376  */
10377 extern
10379  SCIP* scip, /**< SCIP data structure */
10380  SCIP_CONS* cons, /**< constraint */
10381  const char* name /**< new name of constraint */
10382  );
10383 
10384 /** sets the initial flag of the given constraint
10385  *
10386  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10387  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10388  *
10389  * @pre This method can be called if @p scip is in one of the following stages:
10390  * - \ref SCIP_STAGE_PROBLEM
10391  * - \ref SCIP_STAGE_TRANSFORMING
10392  * - \ref SCIP_STAGE_PRESOLVING
10393  * - \ref SCIP_STAGE_PRESOLVED
10394  * - \ref SCIP_STAGE_SOLVING
10395  */
10396 extern
10398  SCIP* scip, /**< SCIP data structure */
10399  SCIP_CONS* cons, /**< constraint */
10400  SCIP_Bool initial /**< new value */
10401  );
10402 
10403 /** sets the separate flag of the given constraint
10404  *
10405  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10406  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10407  *
10408  * @pre This method can be called if @p scip is in one of the following stages:
10409  * - \ref SCIP_STAGE_PROBLEM
10410  * - \ref SCIP_STAGE_TRANSFORMING
10411  * - \ref SCIP_STAGE_PRESOLVING
10412  * - \ref SCIP_STAGE_PRESOLVED
10413  * - \ref SCIP_STAGE_SOLVING
10414  */
10415 extern
10417  SCIP* scip, /**< SCIP data structure */
10418  SCIP_CONS* cons, /**< constraint */
10419  SCIP_Bool separate /**< new value */
10420  );
10421 
10422 /** sets the enforce flag of the given constraint
10423  *
10424  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10425  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10426  *
10427  * @pre This method can be called if @p scip is in one of the following stages:
10428  * - \ref SCIP_STAGE_PROBLEM
10429  * - \ref SCIP_STAGE_TRANSFORMING
10430  * - \ref SCIP_STAGE_PRESOLVING
10431  * - \ref SCIP_STAGE_PRESOLVED
10432  * - \ref SCIP_STAGE_SOLVING
10433  */
10434 extern
10436  SCIP* scip, /**< SCIP data structure */
10437  SCIP_CONS* cons, /**< constraint */
10438  SCIP_Bool enforce /**< new value */
10439  );
10440 
10441 /** sets the check flag of the given constraint
10442  *
10443  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10444  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10445  *
10446  * @pre This method can be called if @p scip is in one of the following stages:
10447  * - \ref SCIP_STAGE_PROBLEM
10448  * - \ref SCIP_STAGE_TRANSFORMING
10449  * - \ref SCIP_STAGE_PRESOLVING
10450  * - \ref SCIP_STAGE_PRESOLVED
10451  * - \ref SCIP_STAGE_SOLVING
10452  */
10453 extern
10455  SCIP* scip, /**< SCIP data structure */
10456  SCIP_CONS* cons, /**< constraint */
10457  SCIP_Bool check /**< new value */
10458  );
10459 
10460 /** sets the propagate flag of the given constraint
10461  *
10462  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10463  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10464  *
10465  * @pre This method can be called if @p scip is in one of the following stages:
10466  * - \ref SCIP_STAGE_PROBLEM
10467  * - \ref SCIP_STAGE_TRANSFORMING
10468  * - \ref SCIP_STAGE_PRESOLVING
10469  * - \ref SCIP_STAGE_PRESOLVED
10470  * - \ref SCIP_STAGE_SOLVING
10471  */
10472 extern
10474  SCIP* scip, /**< SCIP data structure */
10475  SCIP_CONS* cons, /**< constraint */
10476  SCIP_Bool propagate /**< new value */
10477  );
10478 
10479 /** sets the local flag of the given constraint
10480  *
10481  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10482  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10483  *
10484  * @pre This method can be called if @p scip is in one of the following stages:
10485  * - \ref SCIP_STAGE_PROBLEM
10486  * - \ref SCIP_STAGE_TRANSFORMING
10487  * - \ref SCIP_STAGE_INITPRESOLVE
10488  * - \ref SCIP_STAGE_PRESOLVING
10489  * - \ref SCIP_STAGE_PRESOLVED
10490  * - \ref SCIP_STAGE_INITSOLVE
10491  * - \ref SCIP_STAGE_SOLVING
10492  */
10493 extern
10495  SCIP* scip, /**< SCIP data structure */
10496  SCIP_CONS* cons, /**< constraint */
10497  SCIP_Bool local /**< new value */
10498  );
10499 
10500 /** sets the modifiable flag of the given constraint
10501  *
10502  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10503  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10504  *
10505  * @pre This method can be called if @p scip is in one of the following stages:
10506  * - \ref SCIP_STAGE_PROBLEM
10507  * - \ref SCIP_STAGE_TRANSFORMING
10508  * - \ref SCIP_STAGE_PRESOLVING
10509  * - \ref SCIP_STAGE_PRESOLVED
10510  * - \ref SCIP_STAGE_SOLVING
10511  * - \ref SCIP_STAGE_EXITSOLVE
10512  */
10513 extern
10515  SCIP* scip, /**< SCIP data structure */
10516  SCIP_CONS* cons, /**< constraint */
10517  SCIP_Bool modifiable /**< new value */
10518  );
10519 
10520 /** sets the dynamic flag of the given constraint
10521  *
10522  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10523  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10524  *
10525  * @pre This method can be called if @p scip is in one of the following stages:
10526  * - \ref SCIP_STAGE_PROBLEM
10527  * - \ref SCIP_STAGE_TRANSFORMING
10528  * - \ref SCIP_STAGE_PRESOLVING
10529  * - \ref SCIP_STAGE_PRESOLVED
10530  * - \ref SCIP_STAGE_SOLVING
10531  */
10532 extern
10534  SCIP* scip, /**< SCIP data structure */
10535  SCIP_CONS* cons, /**< constraint */
10536  SCIP_Bool dynamic /**< new value */
10537  );
10538 
10539 /** sets the removable flag of the given constraint
10540  *
10541  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10542  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10543  *
10544  * @pre This method can be called if @p scip is in one of the following stages:
10545  * - \ref SCIP_STAGE_PROBLEM
10546  * - \ref SCIP_STAGE_TRANSFORMING
10547  * - \ref SCIP_STAGE_PRESOLVING
10548  * - \ref SCIP_STAGE_PRESOLVED
10549  * - \ref SCIP_STAGE_SOLVING
10550  */
10551 extern
10553  SCIP* scip, /**< SCIP data structure */
10554  SCIP_CONS* cons, /**< constraint */
10555  SCIP_Bool removable /**< new value */
10556  );
10557 
10558 /** sets the stickingatnode flag of the given constraint
10559  *
10560  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10561  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10562  *
10563  * @pre This method can be called if @p scip is in one of the following stages:
10564  * - \ref SCIP_STAGE_PROBLEM
10565  * - \ref SCIP_STAGE_TRANSFORMING
10566  * - \ref SCIP_STAGE_PRESOLVING
10567  * - \ref SCIP_STAGE_PRESOLVED
10568  * - \ref SCIP_STAGE_SOLVING
10569  */
10570 extern
10572  SCIP* scip, /**< SCIP data structure */
10573  SCIP_CONS* cons, /**< constraint */
10574  SCIP_Bool stickingatnode /**< new value */
10575  );
10576 
10577 /** updates the flags of the first constraint according to the ones of the second constraint
10578  *
10579  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10580  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10581  *
10582  * @pre This method can be called if @p scip is in one of the following stages:
10583  * - \ref SCIP_STAGE_PROBLEM
10584  * - \ref SCIP_STAGE_TRANSFORMING
10585  * - \ref SCIP_STAGE_PRESOLVING
10586  * - \ref SCIP_STAGE_PRESOLVED
10587  * - \ref SCIP_STAGE_SOLVING
10588  */
10589 extern
10591  SCIP* scip, /**< SCIP data structure */
10592  SCIP_CONS* cons0, /**< constraint that should stay */
10593  SCIP_CONS* cons1 /**< constraint that should be deleted */
10594  );
10595 
10596 /** gets and captures transformed constraint of a given constraint; if the constraint is not yet transformed,
10597  * a new transformed constraint for this constraint is created
10598  *
10599  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10600  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10601  *
10602  * @pre This method can be called if @p scip is in one of the following stages:
10603  * - \ref SCIP_STAGE_TRANSFORMING
10604  * - \ref SCIP_STAGE_TRANSFORMED
10605  * - \ref SCIP_STAGE_INITPRESOLVE
10606  * - \ref SCIP_STAGE_PRESOLVING
10607  * - \ref SCIP_STAGE_EXITPRESOLVE
10608  * - \ref SCIP_STAGE_PRESOLVED
10609  * - \ref SCIP_STAGE_INITSOLVE
10610  * - \ref SCIP_STAGE_SOLVING
10611  */
10612 extern
10614  SCIP* scip, /**< SCIP data structure */
10615  SCIP_CONS* cons, /**< constraint to get/create transformed constraint for */
10616  SCIP_CONS** transcons /**< pointer to store the transformed constraint */
10617  );
10618 
10619 /** gets and captures transformed constraints for an array of constraints;
10620  * if a constraint in the array is not yet transformed, a new transformed constraint for this constraint is created;
10621  * it is possible to call this method with conss == transconss
10622  *
10623  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10624  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10625  *
10626  * @pre This method can be called if @p scip is in one of the following stages:
10627  * - \ref SCIP_STAGE_TRANSFORMING
10628  * - \ref SCIP_STAGE_TRANSFORMED
10629  * - \ref SCIP_STAGE_INITPRESOLVE
10630  * - \ref SCIP_STAGE_PRESOLVING
10631  * - \ref SCIP_STAGE_EXITPRESOLVE
10632  * - \ref SCIP_STAGE_PRESOLVED
10633  * - \ref SCIP_STAGE_INITSOLVE
10634  * - \ref SCIP_STAGE_SOLVING
10635  */
10636 extern
10638  SCIP* scip, /**< SCIP data structure */
10639  int nconss, /**< number of constraints to get/create transformed constraints for */
10640  SCIP_CONS** conss, /**< array with constraints to get/create transformed constraints for */
10641  SCIP_CONS** transconss /**< array to store the transformed constraints */
10642  );
10643 
10644 /** gets corresponding transformed constraint of a given constraint;
10645  * returns NULL as transcons, if transformed constraint is not yet existing
10646  *
10647  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10648  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10649  *
10650  * @pre This method can be called if @p scip is in one of the following stages:
10651  * - \ref SCIP_STAGE_TRANSFORMING
10652  * - \ref SCIP_STAGE_TRANSFORMED
10653  * - \ref SCIP_STAGE_INITPRESOLVE
10654  * - \ref SCIP_STAGE_PRESOLVING
10655  * - \ref SCIP_STAGE_EXITPRESOLVE
10656  * - \ref SCIP_STAGE_PRESOLVED
10657  * - \ref SCIP_STAGE_INITSOLVE
10658  * - \ref SCIP_STAGE_SOLVING
10659  * - \ref SCIP_STAGE_SOLVED
10660  * - \ref SCIP_STAGE_EXITSOLVE
10661  * - \ref SCIP_STAGE_FREETRANS
10662  */
10663 extern
10665  SCIP* scip, /**< SCIP data structure */
10666  SCIP_CONS* cons, /**< constraint to get the transformed constraint for */
10667  SCIP_CONS** transcons /**< pointer to store the transformed constraint */
10668  );
10669 
10670 /** gets corresponding transformed constraints for an array of constraints;
10671  * stores NULL in a transconss slot, if the transformed constraint is not yet existing;
10672  * it is possible to call this method with conss == transconss, but remember that constraints that are not
10673  * yet transformed will be replaced with NULL
10674  *
10675  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10676  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10677  *
10678  * @pre This method can be called if @p scip is in one of the following stages:
10679  * - \ref SCIP_STAGE_TRANSFORMING
10680  * - \ref SCIP_STAGE_TRANSFORMED
10681  * - \ref SCIP_STAGE_INITPRESOLVE
10682  * - \ref SCIP_STAGE_PRESOLVING
10683  * - \ref SCIP_STAGE_EXITPRESOLVE
10684  * - \ref SCIP_STAGE_PRESOLVED
10685  * - \ref SCIP_STAGE_INITSOLVE
10686  * - \ref SCIP_STAGE_SOLVING
10687  * - \ref SCIP_STAGE_SOLVED
10688  * - \ref SCIP_STAGE_EXITSOLVE
10689  * - \ref SCIP_STAGE_FREETRANS
10690  */
10691 extern
10693  SCIP* scip, /**< SCIP data structure */
10694  int nconss, /**< number of constraints to get the transformed constraints for */
10695  SCIP_CONS** conss, /**< constraints to get the transformed constraints for */
10696  SCIP_CONS** transconss /**< array to store the transformed constraints */
10697  );
10698 
10699 /** adds given value to age of constraint, but age can never become negative;
10700  * should be called
10701  * - in constraint separation, if no cut was found for this constraint,
10702  * - in constraint enforcing, if constraint was feasible, and
10703  * - in constraint propagation, if no domain reduction was deduced;
10704  *
10705  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10706  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10707  *
10708  * @pre This method can be called if @p scip is in one of the following stages:
10709  * - \ref SCIP_STAGE_TRANSFORMED
10710  * - \ref SCIP_STAGE_PRESOLVING
10711  * - \ref SCIP_STAGE_PRESOLVED
10712  * - \ref SCIP_STAGE_SOLVING
10713  * - \ref SCIP_STAGE_SOLVED
10714  */
10715 extern
10717  SCIP* scip, /**< SCIP data structure */
10718  SCIP_CONS* cons, /**< constraint */
10719  SCIP_Real deltaage /**< value to add to the constraint's age */
10720  );
10721 
10722 /** increases age of constraint by 1.0;
10723  * should be called
10724  * - in constraint separation, if no cut was found for this constraint,
10725  * - in constraint enforcing, if constraint was feasible, and
10726  * - in constraint propagation, if no domain reduction was deduced;
10727  *
10728  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10729  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10730  *
10731  * @pre This method can be called if @p scip is in one of the following stages:
10732  * - \ref SCIP_STAGE_TRANSFORMED
10733  * - \ref SCIP_STAGE_PRESOLVING
10734  * - \ref SCIP_STAGE_PRESOLVED
10735  * - \ref SCIP_STAGE_SOLVING
10736  * - \ref SCIP_STAGE_SOLVED
10737  */
10738 extern
10740  SCIP* scip, /**< SCIP data structure */
10741  SCIP_CONS* cons /**< constraint */
10742  );
10743 
10744 /** resets age of constraint to zero;
10745  * should be called
10746  * - in constraint separation, if a cut was found for this constraint,
10747  * - in constraint enforcing, if the constraint was violated, and
10748  * - in constraint propagation, if a domain reduction was deduced;
10749  *
10750  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10751  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10752  *
10753  * @pre This method can be called if @p scip is in one of the following stages:
10754  * - \ref SCIP_STAGE_TRANSFORMED
10755  * - \ref SCIP_STAGE_PRESOLVING
10756  * - \ref SCIP_STAGE_PRESOLVED
10757  * - \ref SCIP_STAGE_SOLVING
10758  * - \ref SCIP_STAGE_SOLVED
10759  */
10760 extern
10762  SCIP* scip, /**< SCIP data structure */
10763  SCIP_CONS* cons /**< constraint */
10764  );
10765 
10766 /** enables constraint's separation, propagation, and enforcing capabilities
10767  *
10768  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10769  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10770  *
10771  * @pre This method can be called if @p scip is in one of the following stages:
10772  * - \ref SCIP_STAGE_TRANSFORMED
10773  * - \ref SCIP_STAGE_PRESOLVING
10774  * - \ref SCIP_STAGE_PRESOLVED
10775  * - \ref SCIP_STAGE_INITSOLVE
10776  * - \ref SCIP_STAGE_SOLVING
10777  * - \ref SCIP_STAGE_SOLVED
10778  */
10779 extern
10781  SCIP* scip, /**< SCIP data structure */
10782  SCIP_CONS* cons /**< constraint */
10783  );
10784 
10785 /** disables constraint's separation, propagation, and enforcing capabilities, s.t. the constraint is not propagated,
10786  * separated, and enforced anymore until it is enabled again with a call to SCIPenableCons();
10787  * in contrast to SCIPdelConsLocal() and SCIPdelConsNode(), the disabling is not associated to a node in the tree and
10788  * does not consume memory; therefore, the constraint is neither automatically enabled on leaving the node nor
10789  * automatically disabled again on entering the node again;
10790  * note that the constraints enforcing capabilities are necessary for the solution's feasibility, if the constraint
10791  * is a model constraint; that means, you must be sure that the constraint cannot be violated in the current subtree,
10792  * and you have to enable it again manually by calling SCIPenableCons(), if this subtree is left (e.g. by using
10793  * an appropriate event handler that watches the corresponding variables' domain changes)
10794  *
10795  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10796  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10797  *
10798  * @pre This method can be called if @p scip is in one of the following stages:
10799  * - \ref SCIP_STAGE_TRANSFORMED
10800  * - \ref SCIP_STAGE_INITPRESOLVE
10801  * - \ref SCIP_STAGE_PRESOLVING
10802  * - \ref SCIP_STAGE_PRESOLVED
10803  * - \ref SCIP_STAGE_INITSOLVE
10804  * - \ref SCIP_STAGE_SOLVING
10805  * - \ref SCIP_STAGE_SOLVED
10806  */
10807 extern
10809  SCIP* scip, /**< SCIP data structure */
10810  SCIP_CONS* cons /**< constraint */
10811  );
10812 
10813 /** enables constraint's separation capabilities
10814  *
10815  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10816  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10817  *
10818  * @pre This method can be called if @p scip is in one of the following stages:
10819  * - \ref SCIP_STAGE_TRANSFORMED
10820  * - \ref SCIP_STAGE_PRESOLVING
10821  * - \ref SCIP_STAGE_PRESOLVED
10822  * - \ref SCIP_STAGE_INITSOLVE
10823  * - \ref SCIP_STAGE_SOLVING
10824  * - \ref SCIP_STAGE_SOLVED
10825  */
10826 extern
10828  SCIP* scip, /**< SCIP data structure */
10829  SCIP_CONS* cons /**< constraint */
10830  );
10831 
10832 /** disables constraint's separation capabilities s.t. the constraint is not propagated anymore until the separation
10833  * is enabled again with a call to SCIPenableConsSeparation(); in contrast to SCIPdelConsLocal() and SCIPdelConsNode(),
10834  * the disabling is not associated to a node in the tree and does not consume memory; therefore, the constraint
10835  * is neither automatically enabled on leaving the node nor automatically disabled again on entering the node again
10836  *
10837  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10838  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10839  *
10840  * @pre This method can be called if @p scip is in one of the following stages:
10841  * - \ref SCIP_STAGE_TRANSFORMED
10842  * - \ref SCIP_STAGE_PRESOLVING
10843  * - \ref SCIP_STAGE_PRESOLVED
10844  * - \ref SCIP_STAGE_INITSOLVE
10845  * - \ref SCIP_STAGE_SOLVING
10846  * - \ref SCIP_STAGE_SOLVED
10847  */
10848 extern
10850  SCIP* scip, /**< SCIP data structure */
10851  SCIP_CONS* cons /**< constraint */
10852  );
10853 
10854 /** enables constraint's propagation capabilities
10855  *
10856  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10857  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10858  *
10859  * @pre This method can be called if @p scip is in one of the following stages:
10860  * - \ref SCIP_STAGE_TRANSFORMED
10861  * - \ref SCIP_STAGE_INITPRESOLVE
10862  * - \ref SCIP_STAGE_PRESOLVING
10863  * - \ref SCIP_STAGE_EXITPRESOLVE
10864  * - \ref SCIP_STAGE_PRESOLVED
10865  * - \ref SCIP_STAGE_INITSOLVE
10866  * - \ref SCIP_STAGE_SOLVING
10867  * - \ref SCIP_STAGE_SOLVED
10868  */
10869 extern
10871  SCIP* scip, /**< SCIP data structure */
10872  SCIP_CONS* cons /**< constraint */
10873  );
10874 
10875 /** disables constraint's propagation capabilities s.t. the constraint is not propagated anymore until the propagation
10876  * is enabled again with a call to SCIPenableConsPropagation(); in contrast to SCIPdelConsLocal() and SCIPdelConsNode(),
10877  * the disabling is not associated to a node in the tree and does not consume memory; therefore, the constraint
10878  * is neither automatically enabled on leaving the node nor automatically disabled again on entering the node again
10879  *
10880  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10881  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10882  *
10883  * @pre This method can be called if @p scip is in one of the following stages:
10884  * - \ref SCIP_STAGE_TRANSFORMED
10885  * - \ref SCIP_STAGE_INITPRESOLVE
10886  * - \ref SCIP_STAGE_PRESOLVING
10887  * - \ref SCIP_STAGE_EXITPRESOLVE
10888  * - \ref SCIP_STAGE_PRESOLVED
10889  * - \ref SCIP_STAGE_INITSOLVE
10890  * - \ref SCIP_STAGE_SOLVING
10891  * - \ref SCIP_STAGE_SOLVED
10892  */
10893 extern
10895  SCIP* scip, /**< SCIP data structure */
10896  SCIP_CONS* cons /**< constraint */
10897  );
10898 
10899 
10900 /** marks constraint to be propagated
10901  *
10902  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10903  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10904  *
10905  * @pre This method can be called if @p scip is in one of the following stages:
10906  * - \ref SCIP_STAGE_TRANSFORMED
10907  * - \ref SCIP_STAGE_PRESOLVING
10908  * - \ref SCIP_STAGE_EXITPRESOLVE
10909  * - \ref SCIP_STAGE_PRESOLVED
10910  * - \ref SCIP_STAGE_INITSOLVE
10911  * - \ref SCIP_STAGE_SOLVING
10912  * - \ref SCIP_STAGE_SOLVED
10913  *
10914  * @note if a constraint is marked to be propagated, the age of the constraint will be ignored for propagation
10915  */
10916 extern
10918  SCIP* scip, /**< SCIP data structure */
10919  SCIP_CONS* cons /**< constraint */
10920  );
10921 
10922 /** unmarks the constraint to be propagated
10923  *
10924  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10925  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10926  *
10927  * @pre This method can be called if @p scip is in one of the following stages:
10928  * - \ref SCIP_STAGE_TRANSFORMED
10929  * - \ref SCIP_STAGE_PRESOLVING
10930  * - \ref SCIP_STAGE_EXITPRESOLVE
10931  * - \ref SCIP_STAGE_PRESOLVED
10932  * - \ref SCIP_STAGE_INITSOLVE
10933  * - \ref SCIP_STAGE_SOLVING
10934  * - \ref SCIP_STAGE_SOLVED
10935  */
10936 extern
10938  SCIP* scip, /**< SCIP data structure */
10939  SCIP_CONS* cons /**< constraint */
10940  );
10941 
10942 /** adds given values to lock status of the constraint and updates the rounding locks of the involved variables
10943  *
10944  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10945  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10946  *
10947  * @pre This method can be called if @p scip is in one of the following stages:
10948  * - \ref SCIP_STAGE_PROBLEM
10949  * - \ref SCIP_STAGE_TRANSFORMING
10950  * - \ref SCIP_STAGE_INITPRESOLVE
10951  * - \ref SCIP_STAGE_PRESOLVING
10952  * - \ref SCIP_STAGE_EXITPRESOLVE
10953  * - \ref SCIP_STAGE_INITSOLVE
10954  * - \ref SCIP_STAGE_SOLVING
10955  * - \ref SCIP_STAGE_EXITSOLVE
10956  * - \ref SCIP_STAGE_FREETRANS
10957  */
10958 extern
10960  SCIP* scip, /**< SCIP data structure */
10961  SCIP_CONS* cons, /**< constraint */
10962  int nlockspos, /**< increase in number of rounding locks for constraint */
10963  int nlocksneg /**< increase in number of rounding locks for constraint's negation */
10964  );
10965 
10966 /** checks single constraint for feasibility of the given solution
10967  *
10968  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10969  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10970  *
10971  * @pre This method can be called if @p scip is in one of the following stages:
10972  * - \ref SCIP_STAGE_TRANSFORMED
10973  * - \ref SCIP_STAGE_INITPRESOLVE
10974  * - \ref SCIP_STAGE_PRESOLVING
10975  * - \ref SCIP_STAGE_EXITPRESOLVE
10976  * - \ref SCIP_STAGE_PRESOLVED
10977  * - \ref SCIP_STAGE_INITSOLVE
10978  * - \ref SCIP_STAGE_SOLVING
10979  * - \ref SCIP_STAGE_SOLVED
10980  */
10981 extern
10983  SCIP* scip, /**< SCIP data structure */
10984  SCIP_CONS* cons, /**< constraint to check */
10985  SCIP_SOL* sol, /**< primal CIP solution */
10986  SCIP_Bool checkintegrality, /**< has integrality to be checked? */
10987  SCIP_Bool checklprows, /**< have current LP rows (both local and global) to be checked? */
10988  SCIP_Bool printreason, /**< should the reason for the violation be printed? */
10989  SCIP_RESULT* result /**< pointer to store the result of the callback method */
10990  );
10991 
10992 /** enforces single constraint for a given pseudo solution
10993  *
10994  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10995  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10996  *
10997  * @pre This method can be called if @p scip is in one of the following stages:
10998  * - \ref SCIP_STAGE_SOLVING
10999  *
11000  * @note This is an advanced method and should be used with caution. It may only be called for constraints that were not
11001  * added to SCIP beforehand.
11002  */
11003 extern
11005  SCIP* scip, /**< SCIP data structure */
11006  SCIP_CONS* cons, /**< constraint to enforce */
11007  SCIP_Bool solinfeasible, /**< was the solution already declared infeasible by a constraint handler? */
11008  SCIP_Bool objinfeasible, /**< is the solution infeasible anyway due to violating lower objective bound? */
11009  SCIP_RESULT* result /**< pointer to store the result of the callback method */
11010  );
11011 
11012 /** enforces single constraint for a given LP solution
11013  *
11014  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11015  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11016  *
11017  * @pre This method can be called if @p scip is in one of the following stages:
11018  * - \ref SCIP_STAGE_SOLVING
11019  *
11020  * @note This is an advanced method and should be used with caution. It may only be called for constraints that were not
11021  * added to SCIP beforehand.
11022  */
11023 extern
11025  SCIP* scip, /**< SCIP data structure */
11026  SCIP_CONS* cons, /**< constraint to enforce */
11027  SCIP_Bool solinfeasible, /**< was the solution already declared infeasible by a constraint handler? */
11028  SCIP_RESULT* result /**< pointer to store the result of the callback method */
11029  );
11030 
11031 /** calls LP initialization method for single constraint
11032  *
11033  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11034  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11035  *
11036  * @pre This method can be called if @p scip is in one of the following stages:
11037  * - \ref SCIP_STAGE_SOLVING
11038  *
11039  * @note This is an advanced method and should be used with caution. It may only be called for constraints that were not
11040  * added to SCIP beforehand.
11041  */
11042 extern
11044  SCIP* scip, /**< SCIP data structure */
11045  SCIP_CONS* cons /**< constraint to initialize */
11046  );
11047 
11048 /** calls separation method of single constraint for LP solution
11049  *
11050  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11051  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11052  *
11053  * @pre This method can be called if @p scip is in one of the following stages:
11054  * - \ref SCIP_STAGE_SOLVING
11055  *
11056  * @note This is an advanced method and should be used with caution.
11057  */
11058 extern
11060  SCIP* scip, /**< SCIP data structure */
11061  SCIP_CONS* cons, /**< constraint to separate */
11062  SCIP_RESULT* result /**< pointer to store the result of the separation call */
11063  );
11064 
11065 /** calls separation method of single constraint for given primal solution
11066  *
11067  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11068  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11069  *
11070  * @pre This method can be called if @p scip is in one of the following stages:
11071  * - \ref SCIP_STAGE_SOLVING
11072  *
11073  * @note This is an advanced method and should be used with caution.
11074  */
11075 extern
11077  SCIP* scip, /**< SCIP data structure */
11078  SCIP_CONS* cons, /**< constraint to separate */
11079  SCIP_SOL* sol, /**< primal solution that should be separated*/
11080  SCIP_RESULT* result /**< pointer to store the result of the separation call */
11081  );
11082 
11083 /** calls domain propagation method of single constraint
11084  *
11085  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11086  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11087  *
11088  * @pre This method can be called if @p scip is in one of the following stages:
11089  * - \ref SCIP_STAGE_PRESOLVING
11090  * - \ref SCIP_STAGE_SOLVING
11091  *
11092  * @note This is an advanced method and should be used with caution.
11093  */
11094 extern
11096  SCIP* scip, /**< SCIP data structure */
11097  SCIP_CONS* cons, /**< constraint to propagate */
11098  SCIP_PROPTIMING proptiming, /**< current point in the node solving loop */
11099  SCIP_RESULT* result /**< pointer to store the result of the callback method */
11100  );
11101 
11102 /** resolves propagation conflict of single constraint
11103  *
11104  *
11105  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11106  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11107  *
11108  * @pre This method can be called if @p scip is in one of the following stages:
11109  * - \ref SCIP_STAGE_PRESOLVING
11110  * - \ref SCIP_STAGE_SOLVING
11111  *
11112  * @note This is an advanced method and should be used with caution. It may only be called for constraints that were not
11113  * added to SCIP beforehand.
11114  */
11115 extern
11117  SCIP* scip, /**< SCIP data structure */
11118  SCIP_CONS* cons, /**< constraint to resolve conflict for */
11119  SCIP_VAR* infervar, /**< the conflict variable whose bound change has to be resolved */
11120  int inferinfo, /**< the user information passed to the corresponding SCIPinferVarLbCons() or SCIPinferVarUbCons() call */
11121  SCIP_BOUNDTYPE boundtype, /**< the type of the changed bound (lower or upper bound) */
11122  SCIP_BDCHGIDX* bdchgidx, /**< the index of the bound change, representing the point of time where the change took place */
11123  SCIP_Real relaxedbd, /**< the relaxed bound which is sufficient to be explained */
11124  SCIP_RESULT* result /**< pointer to store the result of the callback method */
11125  );
11126 
11127 /** presolves of single constraint
11128  *
11129  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11130  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11131  *
11132  * @pre This method can be called if @p scip is in one of the following stages:
11133  * - \ref SCIP_STAGE_PRESOLVING
11134  *
11135  * @note This is an advanced method and should be used with caution.
11136  */
11137 extern
11139  SCIP* scip, /**< SCIP data structure */
11140  SCIP_CONS* cons, /**< constraint to presolve */
11141  int nrounds, /**< number of presolving rounds already done */
11142  SCIP_PRESOLTIMING presoltiming, /**< presolving timing(s) to be performed */
11143  int nnewfixedvars, /**< number of variables fixed since the last call to the presolving method */
11144  int nnewaggrvars, /**< number of variables aggregated since the last call to the presolving method */
11145  int nnewchgvartypes, /**< number of variable type changes since the last call to the presolving method */
11146  int nnewchgbds, /**< number of variable bounds tightened since the last call to the presolving method */
11147  int nnewholes, /**< number of domain holes added since the last call to the presolving method */
11148  int nnewdelconss, /**< number of deleted constraints since the last call to the presolving method */
11149  int nnewaddconss, /**< number of added constraints since the last call to the presolving method */
11150  int nnewupgdconss, /**< number of upgraded constraints since the last call to the presolving method */
11151  int nnewchgcoefs, /**< number of changed coefficients since the last call to the presolving method */
11152  int nnewchgsides, /**< number of changed left or right hand sides since the last call to the presolving method */
11153  int* nfixedvars, /**< pointer to count total number of variables fixed of all presolvers */
11154  int* naggrvars, /**< pointer to count total number of variables aggregated of all presolvers */
11155  int* nchgvartypes, /**< pointer to count total number of variable type changes of all presolvers */
11156  int* nchgbds, /**< pointer to count total number of variable bounds tightened of all presolvers */
11157  int* naddholes, /**< pointer to count total number of domain holes added of all presolvers */
11158  int* ndelconss, /**< pointer to count total number of deleted constraints of all presolvers */
11159  int* naddconss, /**< pointer to count total number of added constraints of all presolvers */
11160  int* nupgdconss, /**< pointer to count total number of upgraded constraints of all presolvers */
11161  int* nchgcoefs, /**< pointer to count total number of changed coefficients of all presolvers */
11162  int* nchgsides, /**< pointer to count total number of changed left/right hand sides of all presolvers */
11163  SCIP_RESULT* result /**< pointer to store the result of the callback method */
11164  );
11165 
11166 /** calls constraint activation notification method of single constraint
11167  *
11168  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11169  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11170  *
11171  * @pre This method can be called if @p scip is in one of the following stages:
11172  * - \ref SCIP_STAGE_TRANSFORMING
11173  *
11174  * @note This is an advanced method and should be used with caution. It may only be called for constraints that were not
11175  * added to SCIP beforehand.
11176  */
11177 extern
11179  SCIP* scip, /**< SCIP data structure */
11180  SCIP_CONS* cons /**< constraint to notify */
11181  );
11182 
11183 /** calls constraint deactivation notification method of single constraint
11184  *
11185  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11186  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11187  *
11188  * @pre This method can be called if @p scip is in one of the following stages:
11189  * - \ref SCIP_STAGE_PRESOLVING
11190  * - \ref SCIP_STAGE_SOLVING
11191  *
11192  * @note This is an advanced method and should be used with caution. It may only be called for constraints that were not
11193  * added to SCIP beforehand.
11194  */
11195 extern
11197  SCIP* scip, /**< SCIP data structure */
11198  SCIP_CONS* cons /**< constraint to notify */
11199  );
11200 
11201 /** outputs constraint information to file stream via the message handler system
11202  *
11203  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11204  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11205  *
11206  * @pre This method can be called if @p scip is in one of the following stages:
11207  * - \ref SCIP_STAGE_PROBLEM
11208  * - \ref SCIP_STAGE_TRANSFORMING
11209  * - \ref SCIP_STAGE_TRANSFORMED
11210  * - \ref SCIP_STAGE_INITPRESOLVE
11211  * - \ref SCIP_STAGE_PRESOLVING
11212  * - \ref SCIP_STAGE_EXITPRESOLVE
11213  * - \ref SCIP_STAGE_PRESOLVED
11214  * - \ref SCIP_STAGE_INITSOLVE
11215  * - \ref SCIP_STAGE_SOLVING
11216  * - \ref SCIP_STAGE_SOLVED
11217  * - \ref SCIP_STAGE_EXITSOLVE
11218  * - \ref SCIP_STAGE_FREETRANS
11219  *
11220  * @note If the message handler is set to a NULL pointer nothing will be printed.
11221  * @note The file stream will not be flushed directly, this can be achieved by calling SCIPinfoMessage() printing a
11222  * newline character.
11223  */
11224 extern
11226  SCIP* scip, /**< SCIP data structure */
11227  SCIP_CONS* cons, /**< constraint */
11228  FILE* file /**< output file (or NULL for standard output) */
11229  );
11230 
11231 /** method to collect the variables of a constraint
11232  *
11233  * If the number of variables is greater than the available slots in the variable array, nothing happens except that
11234  * the success point is set to FALSE. With the method SCIPgetConsNVars() it is possible to get the number of variables
11235  * a constraint has in its scope.
11236  *
11237  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11238  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11239  *
11240  * @pre This method can be called if @p scip is in one of the following stages:
11241  * - \ref SCIP_STAGE_PROBLEM
11242  * - \ref SCIP_STAGE_TRANSFORMING
11243  * - \ref SCIP_STAGE_TRANSFORMED
11244  * - \ref SCIP_STAGE_INITPRESOLVE
11245  * - \ref SCIP_STAGE_PRESOLVING
11246  * - \ref SCIP_STAGE_EXITPRESOLVE
11247  * - \ref SCIP_STAGE_PRESOLVED
11248  * - \ref SCIP_STAGE_INITSOLVE
11249  * - \ref SCIP_STAGE_SOLVING
11250  * - \ref SCIP_STAGE_SOLVED
11251  * - \ref SCIP_STAGE_EXITSOLVE
11252  * - \ref SCIP_STAGE_FREETRANS
11253  *
11254  * @note The success pointer indicates if all variables were copied into the vars arrray.
11255  *
11256  * @note It might be that a constraint handler does not support this functionality, in that case the success pointer is
11257  * set to FALSE.
11258  */
11259 extern
11261  SCIP* scip, /**< SCIP data structure */
11262  SCIP_CONS* cons, /**< constraint for which the variables are wanted */
11263  SCIP_VAR** vars, /**< array to store the involved variable of the constraint */
11264  int varssize, /**< available slots in vars array which is needed to check if the array is large enough */
11265  SCIP_Bool* success /**< pointer to store whether the variables are successfully copied */
11266  );
11267 
11268 /** methed to collect the number of variables of a constraint
11269  *
11270  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11271  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11272  *
11273  * @pre This method can be called if @p scip is in one of the following stages:
11274  * - \ref SCIP_STAGE_PROBLEM
11275  * - \ref SCIP_STAGE_TRANSFORMING
11276  * - \ref SCIP_STAGE_TRANSFORMED
11277  * - \ref SCIP_STAGE_INITPRESOLVE
11278  * - \ref SCIP_STAGE_PRESOLVING
11279  * - \ref SCIP_STAGE_EXITPRESOLVE
11280  * - \ref SCIP_STAGE_PRESOLVED
11281  * - \ref SCIP_STAGE_INITSOLVE
11282  * - \ref SCIP_STAGE_SOLVING
11283  * - \ref SCIP_STAGE_SOLVED
11284  * - \ref SCIP_STAGE_EXITSOLVE
11285  * - \ref SCIP_STAGE_FREETRANS
11286  *
11287  * @note The success pointer indicates if the contraint handler was able to return the number of variables
11288  *
11289  * @note It might be that a constraint handler does not support this functionality, in that case the success pointer is
11290  * set to FALSE
11291  */
11292 extern
11294  SCIP* scip, /**< SCIP data structure */
11295  SCIP_CONS* cons, /**< constraint for which the number of variables is wanted */
11296  int* nvars, /**< pointer to store the number of variables */
11297  SCIP_Bool* success /**< pointer to store whether the constraint successfully returned the number of variables */
11298  );
11299 
11300 /**@} */
11301 
11302 
11303 
11304 
11305 /*
11306  * LP methods
11307  */
11308 
11309 /**@name LP Methods */
11310 /**@{ */
11311 
11312 /** returns, whether the LP was or is to be solved in the current node
11313  *
11314  * @return whether the LP was or is to be solved in the current node.
11315  *
11316  * @pre This method can be called if @p scip is in one of the following stages:
11317  * - \ref SCIP_STAGE_SOLVING
11318  *
11319  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11320  */
11321 extern
11323  SCIP* scip /**< SCIP data structure */
11324  );
11325 
11326 /** returns, whether the LP of the current node is already constructed
11327  *
11328  * @return whether the LP of the current node is already constructed.
11329  *
11330  * @pre This method can be called if @p scip is in one of the following stages:
11331  * - \ref SCIP_STAGE_SOLVING
11332  *
11333  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11334  */
11335 extern
11337  SCIP* scip /**< SCIP data structure */
11338  );
11339 
11340 /** makes sure that the LP of the current node is loaded and may be accessed through the LP information methods
11341  *
11342  * @warning Contructing the LP might change the amount of variables known in the transformed problem and therefore also
11343  * the variables array of SCIP (returned by SCIPgetVars() and SCIPgetVarsData()), so it might be necessary to
11344  * call one of the later method after this one
11345  *
11346  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11347  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11348  *
11349  * @pre This method can be called if @p scip is in one of the following stages:
11350  * - \ref SCIP_STAGE_SOLVING
11351  *
11352  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11353  */
11354 extern
11356  SCIP* scip, /**< SCIP data structure */
11357  SCIP_Bool* cutoff /**< pointer to store whether the node can be cut off */
11358  );
11359 
11360 /** makes sure that the LP of the current node is flushed
11361  *
11362  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11363  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11364  *
11365  * @pre This method can be called if @p scip is in one of the following stages:
11366  * - \ref SCIP_STAGE_SOLVING
11367  *
11368  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11369  */
11370 extern
11372  SCIP* scip /**< SCIP data structure */
11373  );
11374 
11375 /** gets solution status of current LP
11376  *
11377  * @return the solution status of current LP.
11378  *
11379  * @pre This method can be called if @p scip is in one of the following stages:
11380  * - \ref SCIP_STAGE_SOLVING
11381  *
11382  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11383  */
11384 extern
11386  SCIP* scip /**< SCIP data structure */
11387  );
11388 
11389 /** returns whether the current lp is a relaxation of the current problem and its optimal objective value is a local lower bound
11390  *
11391  * @return whether the current lp is a relaxation of the current problem and its optimal objective value is a local lower bound.
11392  *
11393  * @pre This method can be called if @p scip is in one of the following stages:
11394  * - \ref SCIP_STAGE_SOLVING
11395  *
11396  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11397  */
11398 extern
11400  SCIP* scip /**< SCIP data structure */
11401  );
11402 
11403 /** gets objective value of current LP (which is the sum of column and loose objective value)
11404  *
11405  * @return the objective value of current LP (which is the sum of column and loose objective value).
11406  *
11407  * @pre This method can be called if @p scip is in one of the following stages:
11408  * - \ref SCIP_STAGE_SOLVING
11409  *
11410  * @note This method returns the objective value of the current LP solution, which might be primal or dual infeasible
11411  * if a limit was hit during solving. It must not be used as a dual bound if the LP solution status returned by
11412  * SCIPgetLPSolstat() is SCIP_LPSOLSTAT_ITERLIMIT or SCIP_LPSOLSTAT_TIMELIMIT.
11413  *
11414  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11415  */
11416 extern
11418  SCIP* scip /**< SCIP data structure */
11419  );
11420 
11421 /** gets part of objective value of current LP that results from COLUMN variables only
11422  *
11423  * @return the part of objective value of current LP that results from COLUMN variables only.
11424  *
11425  * @pre This method can be called if @p scip is in one of the following stages:
11426  * - \ref SCIP_STAGE_SOLVING
11427  *
11428  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11429  */
11430 extern
11432  SCIP* scip /**< SCIP data structure */
11433  );
11434 
11435 /** gets part of objective value of current LP that results from LOOSE variables only
11436  *
11437  * @return part of objective value of current LP that results from LOOSE variables only.
11438  *
11439  * @pre This method can be called if @p scip is in one of the following stages:
11440  * - \ref SCIP_STAGE_SOLVING
11441  *
11442  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11443  */
11444 extern
11446  SCIP* scip /**< SCIP data structure */
11447  );
11448 
11449 /** gets the global pseudo objective value; that is all variables set to their best (w.r.t. the objective
11450  * function) global bound
11451  *
11452  * @return the global pseudo objective value; that is all variables set to their best (w.r.t. the objective
11453  * function) global bound.
11454  *
11455  * @pre This method can be called if @p scip is in one of the following stages:
11456  * - \ref SCIP_STAGE_INITPRESOLVE
11457  * - \ref SCIP_STAGE_PRESOLVING
11458  * - \ref SCIP_STAGE_EXITPRESOLVE
11459  * - \ref SCIP_STAGE_PRESOLVED
11460  * - \ref SCIP_STAGE_INITSOLVE
11461  * - \ref SCIP_STAGE_SOLVING
11462  *
11463  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11464  */
11465 extern
11467  SCIP* scip /**< SCIP data structure */
11468  );
11469 
11470 /** gets the pseudo objective value for the current search node; that is all variables set to their best (w.r.t. the
11471  * objective function) local bound
11472  *
11473  * @return the pseudo objective value for the current search node; that is all variables set to their best (w.r.t. the
11474  * objective function) local bound.
11475  *
11476  * @pre This method can be called if @p scip is in one of the following stages:
11477  * - \ref SCIP_STAGE_INITPRESOLVE
11478  * - \ref SCIP_STAGE_PRESOLVING
11479  * - \ref SCIP_STAGE_EXITPRESOLVE
11480  * - \ref SCIP_STAGE_PRESOLVED
11481  * - \ref SCIP_STAGE_INITSOLVE
11482  * - \ref SCIP_STAGE_SOLVING
11483  *
11484  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11485  */
11486 extern
11488  SCIP* scip /**< SCIP data structure */
11489  );
11490 
11491 /** returns whether the root lp is a relaxation of the problem and its optimal objective value is a global lower bound
11492  *
11493  * @return whether the root lp is a relaxation of the problem and its optimal objective value is a global lower bound.
11494  *
11495  * @pre This method can be called if @p scip is in one of the following stages:
11496  * - \ref SCIP_STAGE_SOLVING
11497  *
11498  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11499  */
11500 extern
11502  SCIP* scip /**< SCIP data structure */
11503  );
11504 
11505 /** gets the objective value of the root node LP or SCIP_INVALID if the root node LP was not (yet) solved
11506  *
11507  * @return the objective value of the root node LP or SCIP_INVALID if the root node LP was not (yet) solved.
11508  *
11509  * @pre This method can be called if @p scip is in one of the following stages:
11510  * - \ref SCIP_STAGE_INITPRESOLVE
11511  * - \ref SCIP_STAGE_PRESOLVING
11512  * - \ref SCIP_STAGE_EXITPRESOLVE
11513  * - \ref SCIP_STAGE_SOLVING
11514  *
11515  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11516  */
11517 extern
11519  SCIP* scip /**< SCIP data structure */
11520  );
11521 
11522 /** gets part of the objective value of the root node LP that results from COLUMN variables only;
11523  * returns SCIP_INVALID if the root node LP was not (yet) solved
11524  *
11525  * @return the part of the objective value of the root node LP that results from COLUMN variables only;
11526  * or SCIP_INVALID if the root node LP was not (yet) solved.
11527  *
11528  * @pre This method can be called if @p scip is in one of the following stages:
11529  * - \ref SCIP_STAGE_INITPRESOLVE
11530  * - \ref SCIP_STAGE_PRESOLVING
11531  * - \ref SCIP_STAGE_EXITPRESOLVE
11532  * - \ref SCIP_STAGE_SOLVING
11533  *
11534  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11535  */
11536 extern
11538  SCIP* scip /**< SCIP data structure */
11539  );
11540 
11541 /** gets part of the objective value of the root node LP that results from LOOSE variables only;
11542  * returns SCIP_INVALID if the root node LP was not (yet) solved
11543  *
11544  * @return the part of the objective value of the root node LP that results from LOOSE variables only;
11545  * or SCIP_INVALID if the root node LP was not (yet) solved.
11546  *
11547  * @pre This method can be called if @p scip is in one of the following stages:
11548  * - \ref SCIP_STAGE_INITPRESOLVE
11549  * - \ref SCIP_STAGE_PRESOLVING
11550  * - \ref SCIP_STAGE_EXITPRESOLVE
11551  * - \ref SCIP_STAGE_SOLVING
11552  *
11553  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11554  */
11555 extern
11557  SCIP* scip /**< SCIP data structure */
11558  );
11559 
11560 /** gets current LP columns along with the current number of LP columns
11561  *
11562  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11563  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11564  *
11565  * @pre This method can be called if @p scip is in one of the following stages:
11566  * - \ref SCIP_STAGE_SOLVING
11567  *
11568  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11569  */
11570 extern
11572  SCIP* scip, /**< SCIP data structure */
11573  SCIP_COL*** cols, /**< pointer to store the array of LP columns, or NULL */
11574  int* ncols /**< pointer to store the number of LP columns, or NULL */
11575  );
11576 
11577 /** gets current LP columns
11578  *
11579  * @return the current LP columns.
11580  *
11581  * @pre This method can be called if @p scip is in one of the following stages:
11582  * - \ref SCIP_STAGE_SOLVING
11583  *
11584  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11585  */
11586 extern
11588  SCIP* scip /**< SCIP data structure */
11589  );
11590 
11591 /** gets current number of LP columns
11592  *
11593  * @return the current number of LP columns.
11594  *
11595  * @pre This method can be called if @p scip is in one of the following stages:
11596  * - \ref SCIP_STAGE_SOLVING
11597  *
11598  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11599  */
11600 extern
11601 int SCIPgetNLPCols(
11602  SCIP* scip /**< SCIP data structure */
11603  );
11604 
11605 /** gets current LP rows along with the current number of LP rows
11606  *
11607  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11608  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11609  *
11610  * @pre This method can be called if @p scip is in one of the following stages:
11611  * - \ref SCIP_STAGE_SOLVING
11612  *
11613  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11614  */
11615 extern
11617  SCIP* scip, /**< SCIP data structure */
11618  SCIP_ROW*** rows, /**< pointer to store the array of LP rows, or NULL */
11619  int* nrows /**< pointer to store the number of LP rows, or NULL */
11620  );
11621 
11622 /** gets current LP rows
11623  *
11624  * @return the current LP rows.
11625  *
11626  * @pre This method can be called if @p scip is in one of the following stages:
11627  * - \ref SCIP_STAGE_SOLVING
11628  *
11629  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11630  */
11631 extern
11633  SCIP* scip /**< SCIP data structure */
11634  );
11635 
11636 /** gets current number of LP rows
11637  *
11638  * @return the current number of LP rows.
11639  *
11640  * @pre This method can be called if @p scip is in one of the following stages:
11641  * - \ref SCIP_STAGE_SOLVING
11642  *
11643  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11644  */
11645 extern
11646 int SCIPgetNLPRows(
11647  SCIP* scip /**< SCIP data structure */
11648  );
11649 
11650 /** returns TRUE iff all columns, i.e. every variable with non-empty column w.r.t. all ever created rows, are present
11651  * in the LP, and FALSE, if there are additional already existing columns, that may be added to the LP in pricing
11652  *
11653  * @return TRUE iff all columns, i.e. every variable with non-empty column w.r.t. all ever created rows, are present
11654  * in the LP, and FALSE, if there are additional already existing columns, that may be added to the LP in pricing.
11655  *
11656  * @pre This method can be called if @p scip is in one of the following stages:
11657  * - \ref SCIP_STAGE_SOLVING
11658  *
11659  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11660  */
11661 extern
11663  SCIP* scip /**< SCIP data structure */
11664  );
11665 
11666 /** returns whether the current LP solution is basic, i.e. is defined by a valid simplex basis
11667  *
11668  * @return whether the current LP solution is basic, i.e. is defined by a valid simplex basis.
11669  *
11670  * @pre This method can be called if @p scip is in one of the following stages:
11671  * - \ref SCIP_STAGE_SOLVING
11672  *
11673  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11674  */
11675 extern
11677  SCIP* scip /**< SCIP data structure */
11678  );
11679 
11680 /** gets all indices of basic columns and rows: index i >= 0 corresponds to column i, index i < 0 to row -i-1
11681  *
11682  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11683  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11684  *
11685  * @pre This method can be called if @p scip is in one of the following stages:
11686  * - \ref SCIP_STAGE_SOLVING
11687  *
11688  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11689  */
11690 extern
11692  SCIP* scip, /**< SCIP data structure */
11693  int* basisind /**< pointer to store basis indices ready to keep number of rows entries */
11694  );
11695 
11696 /** gets a row from the inverse basis matrix B^-1
11697  *
11698  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11699  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11700  *
11701  * @pre This method can be called if @p scip is in one of the following stages:
11702  * - \ref SCIP_STAGE_SOLVING
11703  *
11704  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11705  */
11706 extern
11708  SCIP* scip, /**< SCIP data structure */
11709  int r, /**< row number */
11710  SCIP_Real* coefs, /**< array to store the coefficients of the row */
11711  int* inds, /**< array to store the non-zero indices, or NULL */
11712  int* ninds /**< pointer to store the number of non-zero indices, or NULL
11713  * (-1: if we do not store sparsity informations) */
11714  );
11715 
11716 /** gets a column from the inverse basis matrix B^-1
11717  *
11718  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11719  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11720  *
11721  * @pre This method can be called if @p scip is in one of the following stages:
11722  * - \ref SCIP_STAGE_SOLVING
11723  *
11724  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11725  */
11726 extern
11728  SCIP* scip, /**< SCIP data structure */
11729  int c, /**< column number of B^-1; this is NOT the number of the column in the LP
11730  * returned by SCIPcolGetLPPos(); you have to call SCIPgetBasisInd()
11731  * to get the array which links the B^-1 column numbers to the row and
11732  * column numbers of the LP! c must be between 0 and nrows-1, since the
11733  * basis has the size nrows * nrows */
11734  SCIP_Real* coefs, /**< array to store the coefficients of the column */
11735  int* inds, /**< array to store the non-zero indices, or NULL */
11736  int* ninds /**< pointer to store the number of non-zero indices, or NULL
11737  * (-1: if we do not store sparsity informations) */
11738  );
11739 
11740 /** gets a row from the product of inverse basis matrix B^-1 and coefficient matrix A (i.e. from B^-1 * A)
11741  *
11742  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11743  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11744  *
11745  * @pre This method can be called if @p scip is in one of the following stages:
11746  * - \ref SCIP_STAGE_SOLVING
11747  *
11748  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11749  */
11750 extern
11752  SCIP* scip, /**< SCIP data structure */
11753  int r, /**< row number */
11754  SCIP_Real* binvrow, /**< row in B^-1 from prior call to SCIPgetLPBInvRow(), or NULL */
11755  SCIP_Real* coefs, /**< array to store the coefficients of the row */
11756  int* inds, /**< array to store the non-zero indices, or NULL */
11757  int* ninds /**< pointer to store the number of non-zero indices, or NULL
11758  * (-1: if we do not store sparsity informations) */
11759  );
11760 
11761 /** gets a column from the product of inverse basis matrix B^-1 and coefficient matrix A (i.e. from B^-1 * A),
11762  * i.e., it computes B^-1 * A_c with A_c being the c'th column of A
11763  *
11764  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11765  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11766  *
11767  * @pre This method can be called if @p scip is in one of the following stages:
11768  * - \ref SCIP_STAGE_SOLVING
11769  *
11770  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11771  */
11772 extern
11774  SCIP* scip, /**< SCIP data structure */
11775  int c, /**< column number which can be accessed by SCIPcolGetLPPos() */
11776  SCIP_Real* coefs, /**< array to store the coefficients of the column */
11777  int* inds, /**< array to store the non-zero indices, or NULL */
11778  int* ninds /**< pointer to store the number of non-zero indices, or NULL
11779  * (-1: if we do not store sparsity informations) */
11780  );
11781 
11782 /** calculates a weighted sum of all LP rows; for negative weights, the left and right hand side of the corresponding
11783  * LP row are swapped in the summation
11784  *
11785  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11786  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11787  *
11788  * @pre This method can be called if @p scip is in one of the following stages:
11789  * - \ref SCIP_STAGE_SOLVING
11790  *
11791  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11792  */
11793 extern
11795  SCIP* scip, /**< SCIP data structure */
11796  SCIP_Real* weights, /**< row weights in row summation */
11797  SCIP_REALARRAY* sumcoef, /**< array to store sum coefficients indexed by variables' probindex */
11798  SCIP_Real* sumlhs, /**< pointer to store the left hand side of the row summation */
11799  SCIP_Real* sumrhs /**< pointer to store the right hand side of the row summation */
11800  );
11801 
11802 /** calculates a MIR cut out of the weighted sum of LP rows; The weights of modifiable rows are set to 0.0, because these
11803  * rows cannot participate in a MIR cut.
11804  *
11805  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11806  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11807  *
11808  * @pre This method can be called if @p scip is in one of the following stages:
11809  * - \ref SCIP_STAGE_SOLVING
11810  *
11811  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11812  */
11813 extern
11815  SCIP* scip, /**< SCIP data structure */
11816  SCIP_SOL* sol, /**< the solution that should be separated, or NULL for LP solution */
11817  SCIP_Real boundswitch, /**< fraction of domain up to which lower bound is used in transformation */
11818  SCIP_Bool usevbds, /**< should variable bounds be used in bound transformation? */
11819  SCIP_Bool allowlocal, /**< should local information allowed to be used, resulting in a local cut? */
11820  SCIP_Bool fixintegralrhs, /**< should complementation tried to be adjusted such that rhs gets fractional? */
11821  int* boundsfortrans, /**< bounds that should be used for transformed variables: vlb_idx/vub_idx,
11822  * -1 for global lb/ub, -2 for local lb/ub, or -3 for using closest bound;
11823  * NULL for using closest bound for all variables */
11824  SCIP_BOUNDTYPE* boundtypesfortrans, /**< type of bounds that should be used for transformed variables;
11825  * NULL for using closest bound for all variables */
11826  int maxmksetcoefs, /**< maximal number of nonzeros allowed in aggregated base inequality */
11827  SCIP_Real maxweightrange, /**< maximal valid range max(|weights|)/min(|weights|) of row weights */
11828  SCIP_Real minfrac, /**< minimal fractionality of rhs to produce MIR cut for */
11829  SCIP_Real maxfrac, /**< maximal fractionality of rhs to produce MIR cut for */
11830  SCIP_Real* weights, /**< row weights in row summation; some weights might be set to zero */
11831  SCIP_Real maxweight, /**< largest magnitude of weights; set to -1.0 if sparsity information is
11832  * unknown */
11833  int* weightinds, /**< sparsity pattern of weights; size nrowinds; NULL if sparsity info is
11834  * unknown */
11835  int nweightinds, /**< number of nonzeros in weights; -1 if rowinds is NULL */
11836  int rowlensum, /**< total number of non-zeros in used rows (row associated with nonzero weight coefficient); -1 if unknown */
11837  int* sidetypes, /**< specify row side type (-1 = lhs, 0 = unkown, 1 = rhs) or NULL for automatic choices */
11838  SCIP_Real scale, /**< additional scaling factor multiplied to all rows */
11839  SCIP_Real* mksetcoefs, /**< array to store mixed knapsack set coefficients: size nvars; or NULL */
11840  SCIP_Bool* mksetcoefsvalid, /**< pointer to store whether mixed knapsack set coefficients are valid; or NULL */
11841  SCIP_Real* mircoef, /**< array to store MIR coefficients: must be of size SCIPgetNVars() */
11842  SCIP_Real* mirrhs, /**< pointer to store the right hand side of the MIR row */
11843  SCIP_Real* cutactivity, /**< pointer to store the activity of the resulting cut */
11844  SCIP_Bool* success, /**< pointer to store whether the returned coefficients are a valid MIR cut */
11845  SCIP_Bool* cutislocal, /**< pointer to store whether the returned cut is only valid locally */
11846  int* cutrank /**< pointer to store the rank of the returned cut; or NULL */
11847  );
11848 
11849 /** calculates a strong CG cut out of the weighted sum of LP rows; The weights of modifiable rows are set to 0.0, because these
11850  * rows cannot participate in a MIR cut.
11851  *
11852  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11853  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11854  *
11855  * @pre This method can be called if @p scip is in one of the following stages:
11856  * - \ref SCIP_STAGE_SOLVING
11857  *
11858  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11859  */
11860 extern
11862  SCIP* scip, /**< SCIP data structure */
11863  SCIP_Real boundswitch, /**< fraction of domain up to which lower bound is used in transformation */
11864  SCIP_Bool usevbds, /**< should variable bounds be used in bound transformation? */
11865  SCIP_Bool allowlocal, /**< should local information allowed to be used, resulting in a local cut? */
11866  int maxmksetcoefs, /**< maximal number of nonzeros allowed in aggregated base inequality */
11867  SCIP_Real maxweightrange, /**< maximal valid range max(|weights|)/min(|weights|) of row weights */
11868  SCIP_Real minfrac, /**< minimal fractionality of rhs to produce strong CG cut for */
11869  SCIP_Real maxfrac, /**< maximal fractionality of rhs to produce strong CG cut for */
11870  SCIP_Real* weights, /**< row weights in row summation; some weights might be set to zero */
11871  int* inds, /**< indices of non-zero entries in weights array, or NULL */
11872  int ninds, /**< number of indices of non-zero entries in weights array, -1 if inds is
11873  * NULL */
11874  SCIP_Real scale, /**< additional scaling factor multiplied to all rows */
11875  SCIP_Real* mircoef, /**< array to store strong CG coefficients: must be of size SCIPgetNVars() */
11876  SCIP_Real* mirrhs, /**< pointer to store the right hand side of the strong CG row */
11877  SCIP_Real* cutactivity, /**< pointer to store the activity of the resulting cut */
11878  SCIP_Bool* success, /**< pointer to store whether the returned coefficients are a valid strong CG cut */
11879  SCIP_Bool* cutislocal, /**< pointer to store whether the returned cut is only valid locally */
11880  int* cutrank /**< pointer to store the rank of the returned cut; or NULL */
11881  );
11882 
11883 /** writes current LP to a file
11884  *
11885  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11886  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11887  *
11888  * @pre This method can be called if @p scip is in one of the following stages:
11889  * - \ref SCIP_STAGE_SOLVING
11890  *
11891  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11892  */
11893 extern
11895  SCIP* scip, /**< SCIP data structure */
11896  const char* filename /**< file name */
11897  );
11898 
11899 /** writes MIP relaxation of the current branch-and-bound node to a file
11900  *
11901  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11902  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11903  *
11904  * @pre This method can be called if @p scip is in one of the following stages:
11905  * - \ref SCIP_STAGE_SOLVING
11906  *
11907  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11908  */
11909 extern
11911  SCIP* scip, /**< SCIP data structure */
11912  const char* filename, /**< file name */
11913  SCIP_Bool genericnames, /**< should generic names like x_i and row_j be used in order to avoid
11914  * troubles with reserved symbols? */
11915  SCIP_Bool origobj, /**< should the original objective function be used? */
11916  SCIP_Bool lazyconss /**< output removable rows as lazy constraints? */
11917  );
11918 
11919 /** gets the LP interface of SCIP;
11920  * with the LPI you can use all of the methods defined in lpi/lpi.h;
11921  *
11922  * @warning You have to make sure, that the full internal state of the LPI does not change or is recovered completely
11923  * after the end of the method that uses the LPI. In particular, if you manipulate the LP or its solution
11924  * (e.g. by calling one of the SCIPlpiAdd...() or one of the SCIPlpiSolve...() methods), you have to check in
11925  * advance with SCIPlpiWasSolved() whether the LP is currently solved. If this is the case, you have to make
11926  * sure, the internal solution status is recovered completely at the end of your method. This can be achieved
11927  * by getting the LPI state before applying any LPI manipulations with SCIPlpiGetState() and restoring it
11928  * afterwards with SCIPlpiSetState() and SCIPlpiFreeState(). Additionally you have to resolve the LP with the
11929  * appropriate SCIPlpiSolve...() call in order to reinstall the internal solution status.
11930  *
11931  * @warning Make also sure, that all parameter values that you have changed are set back to their original values.
11932  *
11933  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11934  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11935  *
11936  * @pre This method can be called if @p scip is in one of the following stages:
11937  * - \ref SCIP_STAGE_TRANSFORMED
11938  * - \ref SCIP_STAGE_INITPRESOLVE
11939  * - \ref SCIP_STAGE_PRESOLVING
11940  * - \ref SCIP_STAGE_EXITPRESOLVE
11941  * - \ref SCIP_STAGE_PRESOLVED
11942  * - \ref SCIP_STAGE_INITSOLVE
11943  * - \ref SCIP_STAGE_SOLVING
11944  * - \ref SCIP_STAGE_SOLVED
11945  * - \ref SCIP_STAGE_EXITSOLVE
11946  *
11947  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11948  */
11949 extern
11951  SCIP* scip, /**< SCIP data structure */
11952  SCIP_LPI** lpi /**< pointer to store the LP interface */
11953  );
11954 
11955 /** Displays quality information about the current LP solution. An LP solution need to be available. Information printed
11956  * is subject to what the LP solver supports
11957  *
11958  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11959  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11960  *
11961  * @pre This method can be called if @p scip is in one of the following stages:
11962  * - \ref SCIP_STAGE_INIT
11963  * - \ref SCIP_STAGE_PROBLEM
11964  * - \ref SCIP_STAGE_TRANSFORMED
11965  * - \ref SCIP_STAGE_INITPRESOLVE
11966  * - \ref SCIP_STAGE_PRESOLVING
11967  * - \ref SCIP_STAGE_EXITPRESOLVE
11968  * - \ref SCIP_STAGE_PRESOLVED
11969  * - \ref SCIP_STAGE_SOLVING
11970  * - \ref SCIP_STAGE_SOLVED
11971  * - \ref SCIP_STAGE_FREE
11972  *
11973  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11974  *
11975  * @note The printing process is done via the message handler system.
11976  */
11977 extern
11979  SCIP* scip, /**< SCIP data structure */
11980  FILE* file /**< output file (or NULL for standard output) */
11981  );
11982 
11983 /** compute relative interior point to current LP
11984  * @see SCIPlpComputeRelIntPoint
11985  *
11986  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11987  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11988  *
11989  * @pre This method can be called if @p scip is in one of the following stages:
11990  * - \ref SCIP_STAGE_TRANSFORMED
11991  * - \ref SCIP_STAGE_INITPRESOLVE
11992  * - \ref SCIP_STAGE_PRESOLVING
11993  * - \ref SCIP_STAGE_EXITPRESOLVE
11994  * - \ref SCIP_STAGE_PRESOLVED
11995  * - \ref SCIP_STAGE_SOLVING
11996  * - \ref SCIP_STAGE_SOLVED
11997  *
11998  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11999  */
12000 extern
12002  SCIP* scip, /**< SCIP data structure */
12003  SCIP_Bool relaxrows, /**< should the rows be relaxed */
12004  SCIP_Bool inclobjcutoff, /**< should a row for the objective cutoff be included */
12005  SCIP_Real timelimit, /**< time limit for LP solver */
12006  int iterlimit, /**< iteration limit for LP solver */
12007  SCIP_SOL** point /**< relative interior point on exit */
12008  );
12009 
12010 /**@} */
12011 
12012 
12013 
12014 /*
12015  * LP column methods
12016  */
12017 
12018 /**@name LP Column Methods */
12019 /**@{ */
12020 
12021 /** returns the reduced costs of a column in the last (feasible) LP
12022  *
12023  * @return the reduced costs of a column in the last (feasible) LP
12024  *
12025  * @pre this method can be called in one of the following stages of the SCIP solving process:
12026  * - \ref SCIP_STAGE_SOLVING
12027  */
12028 extern
12030  SCIP* scip, /**< SCIP data structure */
12031  SCIP_COL* col /**< LP column */
12032  );
12033 
12034 /** returns the Farkas coefficient of a column in the last (infeasible) LP
12035  *
12036  * @return the Farkas coefficient of a column in the last (infeasible) LP
12037  *
12038  * @pre this method can be called in one of the following stages of the SCIP solving process:
12039  * - \ref SCIP_STAGE_SOLVING
12040  */
12041 extern
12043  SCIP* scip, /**< SCIP data structure */
12044  SCIP_COL* col /**< LP column */
12045  );
12046 
12047 /** marks a column to be not removable from the LP in the current node
12048  *
12049  * @pre this method can be called in the following stage of the SCIP solving process:
12050  * - \ref SCIP_STAGE_SOLVING
12051  */
12052 extern
12054  SCIP* scip, /**< SCIP data structure */
12055  SCIP_COL* col /**< LP column */
12056  );
12057 
12058 /**@} */
12059 
12060 
12061 
12062 
12063 /*
12064  * LP row methods
12065  */
12066 
12067 /**@name LP Row Methods */
12068 /**@{ */
12069 
12070 /** creates and captures an LP row from a constraint handler
12071  *
12072  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12073  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12074  *
12075  * @pre this method can be called in one of the following stages of the SCIP solving process:
12076  * - \ref SCIP_STAGE_INITSOLVE
12077  * - \ref SCIP_STAGE_SOLVING
12078  */
12079 extern
12081  SCIP* scip, /**< SCIP data structure */
12082  SCIP_ROW** row, /**< pointer to row */
12083  SCIP_CONSHDLR* conshdlr, /**< constraint handler that creates the row */
12084  const char* name, /**< name of row */
12085  int len, /**< number of nonzeros in the row */
12086  SCIP_COL** cols, /**< array with columns of row entries */
12087  SCIP_Real* vals, /**< array with coefficients of row entries */
12088  SCIP_Real lhs, /**< left hand side of row */
12089  SCIP_Real rhs, /**< right hand side of row */
12090  SCIP_Bool local, /**< is row only valid locally? */
12091  SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
12092  SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
12093  );
12094 
12095 /** creates and captures an LP row from a separator
12096  *
12097  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12098  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12099  *
12100  * @pre this method can be called in one of the following stages of the SCIP solving process:
12101  * - \ref SCIP_STAGE_INITSOLVE
12102  * - \ref SCIP_STAGE_SOLVING
12103  */
12104 extern
12106  SCIP* scip, /**< SCIP data structure */
12107  SCIP_ROW** row, /**< pointer to row */
12108  SCIP_SEPA* sepa, /**< separator that creates the row */
12109  const char* name, /**< name of row */
12110  int len, /**< number of nonzeros in the row */
12111  SCIP_COL** cols, /**< array with columns of row entries */
12112  SCIP_Real* vals, /**< array with coefficients of row entries */
12113  SCIP_Real lhs, /**< left hand side of row */
12114  SCIP_Real rhs, /**< right hand side of row */
12115  SCIP_Bool local, /**< is row only valid locally? */
12116  SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
12117  SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
12118  );
12119 
12120 /** creates and captures an LP row from an unspecified source
12121  *
12122  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12123  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12124  *
12125  * @pre this method can be called in one of the following stages of the SCIP solving process:
12126  * - \ref SCIP_STAGE_INITSOLVE
12127  * - \ref SCIP_STAGE_SOLVING
12128  */
12129 extern
12131  SCIP* scip, /**< SCIP data structure */
12132  SCIP_ROW** row, /**< pointer to row */
12133  const char* name, /**< name of row */
12134  int len, /**< number of nonzeros in the row */
12135  SCIP_COL** cols, /**< array with columns of row entries */
12136  SCIP_Real* vals, /**< array with coefficients of row entries */
12137  SCIP_Real lhs, /**< left hand side of row */
12138  SCIP_Real rhs, /**< right hand side of row */
12139  SCIP_Bool local, /**< is row only valid locally? */
12140  SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
12141  SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
12142  );
12143 
12144 /** creates and captures an LP row
12145  *
12146  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12147  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12148  *
12149  * @pre this method can be called in one of the following stages of the SCIP solving process:
12150  * - \ref SCIP_STAGE_INITSOLVE
12151  * - \ref SCIP_STAGE_SOLVING
12152  *
12153  * @deprecated Please use SCIPcreateRowCons() or SCIPcreateRowSepa() when calling from a constraint handler or separator in order
12154  * to facilitate correct statistics. If the call is from neither a constraint handler or separator, use SCIPcreateRowUnspec().
12155  */
12156 extern
12158  SCIP* scip, /**< SCIP data structure */
12159  SCIP_ROW** row, /**< pointer to row */
12160  const char* name, /**< name of row */
12161  int len, /**< number of nonzeros in the row */
12162  SCIP_COL** cols, /**< array with columns of row entries */
12163  SCIP_Real* vals, /**< array with coefficients of row entries */
12164  SCIP_Real lhs, /**< left hand side of row */
12165  SCIP_Real rhs, /**< right hand side of row */
12166  SCIP_Bool local, /**< is row only valid locally? */
12167  SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
12168  SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
12169  );
12170 
12171 /** creates and captures an LP row without any coefficients from a constraint handler
12172  *
12173  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12174  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12175  *
12176  * @pre this method can be called in one of the following stages of the SCIP solving process:
12177  * - \ref SCIP_STAGE_INITSOLVE
12178  * - \ref SCIP_STAGE_SOLVING
12179  */
12180 extern
12182  SCIP* scip, /**< SCIP data structure */
12183  SCIP_ROW** row, /**< pointer to row */
12184  SCIP_CONSHDLR* conshdlr, /**< constraint handler that creates the row */
12185  const char* name, /**< name of row */
12186  SCIP_Real lhs, /**< left hand side of row */
12187  SCIP_Real rhs, /**< right hand side of row */
12188  SCIP_Bool local, /**< is row only valid locally? */
12189  SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
12190  SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
12191  );
12192 
12193 /** creates and captures an LP row without any coefficients from a separator
12194  *
12195  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12196  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12197  *
12198  * @pre this method can be called in one of the following stages of the SCIP solving process:
12199  * - \ref SCIP_STAGE_INITSOLVE
12200  * - \ref SCIP_STAGE_SOLVING
12201  */
12202 extern
12204  SCIP* scip, /**< SCIP data structure */
12205  SCIP_ROW** row, /**< pointer to row */
12206  SCIP_SEPA* sepa, /**< separator that creates the row */
12207  const char* name, /**< name of row */
12208  SCIP_Real lhs, /**< left hand side of row */
12209  SCIP_Real rhs, /**< right hand side of row */
12210  SCIP_Bool local, /**< is row only valid locally? */
12211  SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
12212  SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
12213  );
12214 
12215 /** creates and captures an LP row without any coefficients from an unspecified source
12216  *
12217  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12218  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12219  *
12220  * @pre this method can be called in one of the following stages of the SCIP solving process:
12221  * - \ref SCIP_STAGE_INITSOLVE
12222  * - \ref SCIP_STAGE_SOLVING
12223  */
12224 extern
12226  SCIP* scip, /**< SCIP data structure */
12227  SCIP_ROW** row, /**< pointer to row */
12228  const char* name, /**< name of row */
12229  SCIP_Real lhs, /**< left hand side of row */
12230  SCIP_Real rhs, /**< right hand side of row */
12231  SCIP_Bool local, /**< is row only valid locally? */
12232  SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
12233  SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
12234  );
12235 
12236 /** creates and captures an LP row without any coefficients
12237  *
12238  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12239  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12240  *
12241  * @pre this method can be called in one of the following stages of the SCIP solving process:
12242  * - \ref SCIP_STAGE_INITSOLVE
12243  * - \ref SCIP_STAGE_SOLVING
12244  *
12245  * @deprecated Please use SCIPcreateEmptyRowCons() or SCIPcreateEmptyRowSepa() when calling from a constraint handler or separator in order
12246  * to facilitate correct statistics. If the call is from neither a constraint handler or separator, use SCIPcreateEmptyRowUnspec().
12247  */
12248 extern
12250  SCIP* scip, /**< SCIP data structure */
12251  SCIP_ROW** row, /**< pointer to row */
12252  const char* name, /**< name of row */
12253  SCIP_Real lhs, /**< left hand side of row */
12254  SCIP_Real rhs, /**< right hand side of row */
12255  SCIP_Bool local, /**< is row only valid locally? */
12256  SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
12257  SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
12258  );
12259 
12260 /** increases usage counter of LP row
12261  *
12262  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12263  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12264  *
12265  * @pre this method can be called in one of the following stages of the SCIP solving process:
12266  * - \ref SCIP_STAGE_INITSOLVE
12267  * - \ref SCIP_STAGE_SOLVING
12268  */
12269 extern
12271  SCIP* scip, /**< SCIP data structure */
12272  SCIP_ROW* row /**< row to capture */
12273  );
12274 
12275 /** decreases usage counter of LP row, and frees memory if necessary
12276  *
12277  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12278  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12279  *
12280  * @pre this method can be called in one of the following stages of the SCIP solving process:
12281  * - \ref SCIP_STAGE_INITSOLVE
12282  * - \ref SCIP_STAGE_SOLVING
12283  * - \ref SCIP_STAGE_EXITSOLVE
12284  */
12285 extern
12287  SCIP* scip, /**< SCIP data structure */
12288  SCIP_ROW** row /**< pointer to LP row */
12289  );
12290 
12291 /** changes left hand side of LP row
12292  *
12293  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12294  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12295  *
12296  * @pre this method can be called in one of the following stages of the SCIP solving process:
12297  * - \ref SCIP_STAGE_INITSOLVE
12298  * - \ref SCIP_STAGE_SOLVING
12299  */
12300 extern
12302  SCIP* scip, /**< SCIP data structure */
12303  SCIP_ROW* row, /**< LP row */
12304  SCIP_Real lhs /**< new left hand side */
12305  );
12306 
12307 /** changes right hand side of LP row
12308  *
12309  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12310  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12311  *
12312  * @pre this method can be called in one of the following stages of the SCIP solving process:
12313  * - \ref SCIP_STAGE_INITSOLVE
12314  * - \ref SCIP_STAGE_SOLVING
12315  */
12316 extern
12318  SCIP* scip, /**< SCIP data structure */
12319  SCIP_ROW* row, /**< LP row */
12320  SCIP_Real rhs /**< new right hand side */
12321  );
12322 
12323 /** informs row, that all subsequent additions of variables to the row should be cached and not directly applied;
12324  * after all additions were applied, SCIPflushRowExtensions() must be called;
12325  * while the caching of row extensions is activated, information methods of the row give invalid results;
12326  * caching should be used, if a row is build with SCIPaddVarToRow() calls variable by variable to increase
12327  * the performance
12328  *
12329  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12330  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12331  *
12332  * @pre this method can be called in one of the following stages of the SCIP solving process:
12333  * - \ref SCIP_STAGE_INITSOLVE
12334  * - \ref SCIP_STAGE_SOLVING
12335  */
12336 extern
12338  SCIP* scip, /**< SCIP data structure */
12339  SCIP_ROW* row /**< LP row */
12340  );
12341 
12342 /** flushes all cached row extensions after a call of SCIPcacheRowExtensions() and merges coefficients with
12343  * equal columns into a single coefficient
12344  *
12345  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12346  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12347  *
12348  * @pre this method can be called in one of the following stages of the SCIP solving process:
12349  * - \ref SCIP_STAGE_INITSOLVE
12350  * - \ref SCIP_STAGE_SOLVING
12351  */
12352 extern
12354  SCIP* scip, /**< SCIP data structure */
12355  SCIP_ROW* row /**< LP row */
12356  );
12357 
12358 /** resolves variable to columns and adds them with the coefficient to the row
12359  *
12360  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12361  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12362  *
12363  * @pre this method can be called in one of the following stages of the SCIP solving process:
12364  * - \ref SCIP_STAGE_INITSOLVE
12365  * - \ref SCIP_STAGE_SOLVING
12366  *
12367  * @note In case calling this method in the enforcement process of an lp solution, it might be that some variables,
12368  * that were not yet in the LP (e.g. dynamic columns) will change their lp solution value returned by SCIP.
12369  * For example, a variable, which has a negative objective value, that has no column in the lp yet, is in the lp solution
12370  * on its upper bound (variables with status SCIP_VARSTATUS_LOOSE are in an lp solution on it's best bound), but
12371  * creating the column, changes the solution value (variable than has status SCIP_VARSTATUS_COLUMN, and the
12372  * initialization sets the lp solution value) to 0.0. (This leads to the conclusion that, if a constraint was
12373  * violated, the linear relaxation might not be violated anymore.)
12374  */
12375 extern
12377  SCIP* scip, /**< SCIP data structure */
12378  SCIP_ROW* row, /**< LP row */
12379  SCIP_VAR* var, /**< problem variable */
12380  SCIP_Real val /**< value of coefficient */
12381  );
12382 
12383 /** resolves variables to columns and adds them with the coefficients to the row;
12384  * this method caches the row extensions and flushes them afterwards to gain better performance
12385  *
12386  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12387  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12388  *
12389  * @pre this method can be called in one of the following stages of the SCIP solving process:
12390  * - \ref SCIP_STAGE_INITSOLVE
12391  * - \ref SCIP_STAGE_SOLVING
12392  */
12393 extern
12395  SCIP* scip, /**< SCIP data structure */
12396  SCIP_ROW* row, /**< LP row */
12397  int nvars, /**< number of variables to add to the row */
12398  SCIP_VAR** vars, /**< problem variables to add */
12399  SCIP_Real* vals /**< values of coefficients */
12400  );
12401 
12402 /** resolves variables to columns and adds them with the same single coefficient to the row;
12403  * this method caches the row extensions and flushes them afterwards to gain better performance
12404  *
12405  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12406  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12407  *
12408  * @pre this method can be called in one of the following stages of the SCIP solving process:
12409  * - \ref SCIP_STAGE_INITSOLVE
12410  * - \ref SCIP_STAGE_SOLVING
12411  */
12412 extern
12414  SCIP* scip, /**< SCIP data structure */
12415  SCIP_ROW* row, /**< LP row */
12416  int nvars, /**< number of variables to add to the row */
12417  SCIP_VAR** vars, /**< problem variables to add */
12418  SCIP_Real val /**< unique value of all coefficients */
12419  );
12420 
12421 /** tries to find a value, such that all row coefficients, if scaled with this value become integral
12422  *
12423  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12424  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12425  *
12426  * @pre this method can be called in one of the following stages of the SCIP solving process:
12427  * - \ref SCIP_STAGE_INITSOLVE
12428  * - \ref SCIP_STAGE_SOLVING
12429  */
12430 extern
12432  SCIP* scip, /**< SCIP data structure */
12433  SCIP_ROW* row, /**< LP row */
12434  SCIP_Real mindelta, /**< minimal relative allowed difference of scaled coefficient s*c and integral i */
12435  SCIP_Real maxdelta, /**< maximal relative allowed difference of scaled coefficient s*c and integral i */
12436  SCIP_Longint maxdnom, /**< maximal denominator allowed in rational numbers */
12437  SCIP_Real maxscale, /**< maximal allowed scalar */
12438  SCIP_Bool usecontvars, /**< should the coefficients of the continuous variables also be made integral? */
12439  SCIP_Real* intscalar, /**< pointer to store scalar that would make the coefficients integral, or NULL */
12440  SCIP_Bool* success /**< stores whether returned value is valid */
12441  );
12442 
12443 /** tries to scale row, s.t. all coefficients (of integer variables) become integral
12444  *
12445  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12446  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12447  *
12448  * @pre this method can be called in one of the following stages of the SCIP solving process:
12449  * - \ref SCIP_STAGE_INITSOLVE
12450  * - \ref SCIP_STAGE_SOLVING
12451  */
12452 extern
12454  SCIP* scip, /**< SCIP data structure */
12455  SCIP_ROW* row, /**< LP row */
12456  SCIP_Real mindelta, /**< minimal relative allowed difference of scaled coefficient s*c and integral i */
12457  SCIP_Real maxdelta, /**< maximal relative allowed difference of scaled coefficient s*c and integral i */
12458  SCIP_Longint maxdnom, /**< maximal denominator allowed in rational numbers */
12459  SCIP_Real maxscale, /**< maximal value to scale row with */
12460  SCIP_Bool usecontvars, /**< should the coefficients of the continuous variables also be made integral? */
12461  SCIP_Bool* success /**< stores whether row could be made rational */
12462  );
12463 
12464 /** marks a row to be not removable from the LP in the current node
12465  *
12466  * @pre this method can be called in the following stage of the SCIP solving process:
12467  * - \ref SCIP_STAGE_SOLVING
12468  */
12469 extern
12471  SCIP* scip, /**< SCIP data structure */
12472  SCIP_ROW* row /**< LP row */
12473  );
12474 
12475 /** returns minimal absolute value of row vector's non-zero coefficients
12476  *
12477  * @return minimal absolute value of row vector's non-zero coefficients
12478  *
12479  * @pre this method can be called in one of the following stages of the SCIP solving process:
12480  * - \ref SCIP_STAGE_INITSOLVE
12481  * - \ref SCIP_STAGE_SOLVING
12482  */
12483 extern
12485  SCIP* scip, /**< SCIP data structure */
12486  SCIP_ROW* row /**< LP row */
12487  );
12488 
12489 /** returns maximal absolute value of row vector's non-zero coefficients
12490  *
12491  * @return maximal absolute value of row vector's non-zero coefficients
12492  *
12493  * @pre this method can be called in one of the following stages of the SCIP solving process:
12494  * - \ref SCIP_STAGE_INITSOLVE
12495  * - \ref SCIP_STAGE_SOLVING
12496  */
12497 extern
12499  SCIP* scip, /**< SCIP data structure */
12500  SCIP_ROW* row /**< LP row */
12501  );
12502 
12503 /** returns the minimal activity of a row w.r.t. the column's bounds
12504  *
12505  * @return the minimal activity of a row w.r.t. the column's bounds
12506  *
12507  * @pre this method can be called in one of the following stages of the SCIP solving process:
12508  * - \ref SCIP_STAGE_SOLVING
12509  */
12510 extern
12512  SCIP* scip, /**< SCIP data structure */
12513  SCIP_ROW* row /**< LP row */
12514  );
12515 
12516 /** returns the maximal activity of a row w.r.t. the column's bounds
12517  *
12518  * @return the maximal activity of a row w.r.t. the column's bounds
12519  *
12520  * @pre this method can be called in one of the following stages of the SCIP solving process:
12521  * - \ref SCIP_STAGE_SOLVING
12522  */
12523 extern
12525  SCIP* scip, /**< SCIP data structure */
12526  SCIP_ROW* row /**< LP row */
12527  );
12528 
12529 /** recalculates the activity of a row in the last LP solution
12530  *
12531  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12532  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12533  *
12534  * @pre this method can be called in one of the following stages of the SCIP solving process:
12535  * - \ref SCIP_STAGE_SOLVING
12536  */
12537 extern
12539  SCIP* scip, /**< SCIP data structure */
12540  SCIP_ROW* row /**< LP row */
12541  );
12542 
12543 /** returns the activity of a row in the last LP solution
12544  *
12545  * @return activity of a row in the last LP solution
12546  *
12547  * @pre this method can be called in one of the following stages of the SCIP solving process:
12548  * - \ref SCIP_STAGE_SOLVING
12549  */
12550 extern
12552  SCIP* scip, /**< SCIP data structure */
12553  SCIP_ROW* row /**< LP row */
12554  );
12555 
12556 /** returns the feasibility of a row in the last LP solution
12557  *
12558  * @return the feasibility of a row in the last LP solution: negative value means infeasibility
12559  *
12560  * @pre this method can be called in one of the following stages of the SCIP solving process:
12561  * - \ref SCIP_STAGE_SOLVING
12562  */
12563 extern
12565  SCIP* scip, /**< SCIP data structure */
12566  SCIP_ROW* row /**< LP row */
12567  );
12568 
12569 /** recalculates the activity of a row for the current pseudo solution
12570  *
12571  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12572  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12573  *
12574  * @pre this method can be called in one of the following stages of the SCIP solving process:
12575  * - \ref SCIP_STAGE_SOLVING
12576  */
12577 extern
12579  SCIP* scip, /**< SCIP data structure */
12580  SCIP_ROW* row /**< LP row */
12581  );
12582 
12583 /** returns the activity of a row for the current pseudo solution
12584  *
12585  * @return the activity of a row for the current pseudo solution
12586  *
12587  * @pre this method can be called in one of the following stages of the SCIP solving process:
12588  * - \ref SCIP_STAGE_SOLVING
12589  */
12590 extern
12592  SCIP* scip, /**< SCIP data structure */
12593  SCIP_ROW* row /**< LP row */
12594  );
12595 
12596 /** returns the feasibility of a row for the current pseudo solution: negative value means infeasibility
12597  *
12598  * @return the feasibility of a row for the current pseudo solution: negative value means infeasibility
12599  *
12600  * @pre this method can be called in one of the following stages of the SCIP solving process:
12601  * - \ref SCIP_STAGE_SOLVING
12602  */
12603 extern
12605  SCIP* scip, /**< SCIP data structure */
12606  SCIP_ROW* row /**< LP row */
12607  );
12608 
12609 /** recalculates the activity of a row in the last LP or pseudo solution
12610  *
12611  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12612  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12613  *
12614  * @pre this method can be called in one of the following stages of the SCIP solving process:
12615  * - \ref SCIP_STAGE_SOLVING
12616  */
12617 extern
12619  SCIP* scip, /**< SCIP data structure */
12620  SCIP_ROW* row /**< LP row */
12621  );
12622 
12623 /** returns the activity of a row in the last LP or pseudo solution
12624  *
12625  * @return the activity of a row in the last LP or pseudo solution
12626  *
12627  * @pre this method can be called in one of the following stages of the SCIP solving process:
12628  * - \ref SCIP_STAGE_SOLVING
12629  */
12630 extern
12632  SCIP* scip, /**< SCIP data structure */
12633  SCIP_ROW* row /**< LP row */
12634  );
12635 
12636 /** returns the feasibility of a row in the last LP or pseudo solution
12637  *
12638  * @return the feasibility of a row in the last LP or pseudo solution
12639  *
12640  * @pre this method can be called in one of the following stages of the SCIP solving process:
12641  * - \ref SCIP_STAGE_SOLVING
12642  */
12643 extern
12645  SCIP* scip, /**< SCIP data structure */
12646  SCIP_ROW* row /**< LP row */
12647  );
12648 
12649 /** returns the activity of a row for the given primal solution
12650  *
12651  * @return the activitiy of a row for the given primal solution
12652  *
12653  * @pre this method can be called in one of the following stages of the SCIP solving process:
12654  * - \ref SCIP_STAGE_SOLVING
12655  */
12656 extern
12658  SCIP* scip, /**< SCIP data structure */
12659  SCIP_ROW* row, /**< LP row */
12660  SCIP_SOL* sol /**< primal CIP solution */
12661  );
12662 
12663 /** returns the feasibility of a row for the given primal solution
12664  *
12665  * @return the feasibility of a row for the given primal solution
12666  *
12667  * @pre this method can be called in one of the following stages of the SCIP solving process:
12668  * - \ref SCIP_STAGE_SOLVING
12669  */
12670 extern
12672  SCIP* scip, /**< SCIP data structure */
12673  SCIP_ROW* row, /**< LP row */
12674  SCIP_SOL* sol /**< primal CIP solution */
12675  );
12676 
12677 /** output row to file stream via the message handler system
12678  *
12679  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12680  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12681  *
12682  * @pre this method can be called in one of the following stages of the SCIP solving process:
12683  * - \ref SCIP_STAGE_INITSOLVE
12684  * - \ref SCIP_STAGE_SOLVING
12685  * - \ref SCIP_STAGE_SOLVED
12686  * - \ref SCIP_STAGE_EXITSOLVE
12687  */
12688 extern
12690  SCIP* scip, /**< SCIP data structure */
12691  SCIP_ROW* row, /**< LP row */
12692  FILE* file /**< output file (or NULL for standard output) */
12693  );
12694 
12695 /**@} */
12696 
12697 
12698 /*
12699  * NLP methods
12700  */
12701 
12702 /**@name NLP Methods */
12703 /**@{ */
12704 
12705 /** returns whether the NLP relaxation has been enabled
12706  *
12707  * If the NLP relaxation is enabled, then SCIP will construct the NLP relaxation when the solving process is about to begin.
12708  * To check whether an NLP is existing, use SCIPisNLPConstructed().
12709  *
12710  * @pre This method can be called if SCIP is in one of the following stages:
12711  * - \ref SCIP_STAGE_INITPRESOLVE
12712  * - \ref SCIP_STAGE_PRESOLVING
12713  * - \ref SCIP_STAGE_EXITPRESOLVE
12714  * - \ref SCIP_STAGE_PRESOLVED
12715  * - \ref SCIP_STAGE_INITSOLVE
12716  * - \ref SCIP_STAGE_SOLVING
12717  *
12718  * @see SCIPenableNLP
12719  */
12720 extern
12722  SCIP* scip /**< SCIP data structure */
12723  );
12724 
12725 /** marks that there are constraints that are representable by nonlinear rows
12726  *
12727  * This method should be called by a constraint handler if it has constraints that have a representation as nonlinear rows.
12728  *
12729  * The function should be called before the branch-and-bound process is initialized, e.g., when presolve is exiting.
12730  *
12731  * @pre This method can be called if SCIP is in one of the following stages:
12732  * - \ref SCIP_STAGE_INITPRESOLVE
12733  * - \ref SCIP_STAGE_PRESOLVING
12734  * - \ref SCIP_STAGE_EXITPRESOLVE
12735  * - \ref SCIP_STAGE_PRESOLVED
12736  * - \ref SCIP_STAGE_INITSOLVE
12737  * - \ref SCIP_STAGE_SOLVING
12738  */
12739 extern
12740 void SCIPenableNLP(
12741  SCIP* scip /**< SCIP data structure */
12742  );
12743 
12744 /** returns, whether an NLP has been constructed
12745  *
12746  * @pre This method can be called if SCIP is in one of the following stages:
12747  * - \ref SCIP_STAGE_INITSOLVE
12748  * - \ref SCIP_STAGE_SOLVING
12749  */
12750 extern
12752  SCIP* scip /**< SCIP data structure */
12753  );
12754 
12755 /** returns whether the NLP has a continuous variable in a nonlinear term
12756  *
12757  * @pre This method can be called if SCIP is in one of the following stages:
12758  * - \ref SCIP_STAGE_INITSOLVE
12759  * - \ref SCIP_STAGE_SOLVING
12760  */
12761 extern
12763  SCIP* scip /**< SCIP data structure */
12764  );
12765 
12766 /** gets current NLP variables along with the current number of NLP variables
12767  *
12768  * @pre This method can be called if SCIP is in one of the following stages:
12769  * - \ref SCIP_STAGE_INITSOLVE
12770  * - \ref SCIP_STAGE_SOLVING
12771  */
12772 extern
12774  SCIP* scip, /**< SCIP data structure */
12775  SCIP_VAR*** vars, /**< pointer to store the array of NLP variables, or NULL */
12776  int* nvars /**< pointer to store the number of NLP variables, or NULL */
12777  );
12778 
12779 /** gets array with variables of the NLP
12780  *
12781  * @pre This method can be called if SCIP is in one of the following stages:
12782  * - \ref SCIP_STAGE_INITSOLVE
12783  * - \ref SCIP_STAGE_SOLVING
12784  */
12785 extern
12787  SCIP* scip /**< SCIP data structure */
12788  );
12789 
12790 /** gets current number of variables in NLP
12791  *
12792  * @pre This method can be called if SCIP is in one of the following stages:
12793  * - \ref SCIP_STAGE_INITSOLVE
12794  * - \ref SCIP_STAGE_SOLVING
12795  */
12796 extern
12797 int SCIPgetNNLPVars(
12798  SCIP* scip /**< SCIP data structure */
12799  );
12800 
12801 /** computes for each variables the number of NLP rows in which the variable appears in a nonlinear var
12802  *
12803  * @pre This method can be called if SCIP is in one of the following stages:
12804  * - \ref SCIP_STAGE_INITSOLVE
12805  * - \ref SCIP_STAGE_SOLVING
12806  */
12807 extern
12809  SCIP* scip, /**< SCIP data structure */
12810  int* nlcount /**< an array of length at least SCIPnlpGetNVars() to store nonlinearity counts of variables */
12811  );
12812 
12813 /** returns dual solution values associated with lower bounds of NLP variables
12814  *
12815  * @pre This method can be called if SCIP is in one of the following stages:
12816  * - \ref SCIP_STAGE_INITSOLVE
12817  * - \ref SCIP_STAGE_SOLVING
12818  */
12819 extern
12821  SCIP* scip /**< SCIP data structure */
12822  );
12823 
12824 /** returns dual solution values associated with upper bounds of NLP variables
12825  *
12826  * @pre This method can be called if SCIP is in one of the following stages:
12827  * - \ref SCIP_STAGE_INITSOLVE
12828  * - \ref SCIP_STAGE_SOLVING
12829  */
12830 extern
12832  SCIP* scip /**< SCIP data structure */
12833  );
12834 
12835 /** gets current NLP nonlinear rows along with the current number of NLP nonlinear rows
12836  *
12837  * @pre This method can be called if SCIP is in one of the following stages:
12838  * - \ref SCIP_STAGE_INITSOLVE
12839  * - \ref SCIP_STAGE_SOLVING
12840  */
12841 extern
12843  SCIP* scip, /**< SCIP data structure */
12844  SCIP_NLROW*** nlrows, /**< pointer to store the array of NLP nonlinear rows, or NULL */
12845  int* nnlrows /**< pointer to store the number of NLP nonlinear rows, or NULL */
12846  );
12847 
12848 /** gets array with nonlinear rows of the NLP
12849  *
12850  * @pre This method can be called if SCIP is in one of the following stages:
12851  * - \ref SCIP_STAGE_INITSOLVE
12852  * - \ref SCIP_STAGE_SOLVING
12853  */
12854 extern
12856  SCIP* scip /**< SCIP data structure */
12857  );
12858 
12859 /** gets current number of nonlinear rows in NLP
12860  *
12861  * @pre This method can be called if SCIP is in one of the following stages:
12862  * - \ref SCIP_STAGE_INITSOLVE
12863  * - \ref SCIP_STAGE_SOLVING
12864  */
12865 extern
12866 int SCIPgetNNLPNlRows(
12867  SCIP* scip /**< SCIP data structure */
12868  );
12869 
12870 /** adds a nonlinear row to the NLP. This row is captured by the NLP.
12871  *
12872  * @pre This method can be called if SCIP is in one of the following stages:
12873  * - \ref SCIP_STAGE_INITSOLVE
12874  * - \ref SCIP_STAGE_SOLVING
12875  */
12876 extern
12878  SCIP* scip, /**< SCIP data structure */
12879  SCIP_NLROW* nlrow /**< nonlinear row to add to NLP */
12880  );
12881 
12882 /** makes sure that the NLP of the current node is flushed
12883  *
12884  * @pre This method can be called if SCIP is in one of the following stages:
12885  * - \ref SCIP_STAGE_INITSOLVE
12886  * - \ref SCIP_STAGE_SOLVING
12887  */
12888 extern
12890  SCIP* scip /**< SCIP data structure */
12891  );
12892 
12893 /** sets or clears initial primal guess for NLP solution (start point for NLP solver)
12894  *
12895  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12896  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12897  *
12898  * @pre This method can be called if SCIP is in one of the following stages:
12899  * - \ref SCIP_STAGE_INITSOLVE
12900  * - \ref SCIP_STAGE_SOLVING
12901  */
12902 extern
12904  SCIP* scip, /**< SCIP data structure */
12905  SCIP_Real* initialguess /**< values of initial guess (corresponding to variables from SCIPgetNLPVarsData), or NULL to use no start point */
12906  );
12907 
12908 /** sets initial primal guess for NLP solution (start point for NLP solver)
12909  *
12910  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12911  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12912  *
12913  * @pre This method can be called if SCIP is in one of the following stages:
12914  * - \ref SCIP_STAGE_INITSOLVE
12915  * - \ref SCIP_STAGE_SOLVING
12916  */
12917 extern
12919  SCIP* scip, /**< SCIP data structure */
12920  SCIP_SOL* sol /**< solution which values should be taken as initial guess, or NULL for LP solution */
12921  );
12922 
12923 /** solves the current NLP
12924  *
12925  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12926  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12927  *
12928  * @pre This method can be called if SCIP is in one of the following stages:
12929  * - \ref SCIP_STAGE_INITSOLVE
12930  * - \ref SCIP_STAGE_SOLVING
12931  */
12932 extern
12934  SCIP* scip /**< SCIP data structure */
12935  );
12936 
12937 /** gets solution status of current NLP
12938  *
12939  * @pre This method can be called if SCIP is in one of the following stages:
12940  * - \ref SCIP_STAGE_INITSOLVE
12941  * - \ref SCIP_STAGE_SOLVING
12942  */
12943 extern
12945  SCIP* scip /**< SCIP data structure */
12946  );
12947 
12948 /** gets termination status of last NLP solve
12949  *
12950  * @pre This method can be called if SCIP is in one of the following stages:
12951  * - \ref SCIP_STAGE_INITSOLVE
12952  * - \ref SCIP_STAGE_SOLVING
12953  */
12954 extern
12956  SCIP* scip /**< SCIP data structure */
12957  );
12958 
12959 /** gives statistics (number of iterations, solving time, ...) of last NLP solve
12960  *
12961  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12962  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12963  *
12964  * @pre This method can be called if SCIP is in one of the following stages:
12965  * - \ref SCIP_STAGE_INITSOLVE
12966  * - \ref SCIP_STAGE_SOLVING
12967  */
12968 extern
12970  SCIP* scip, /**< SCIP data structure */
12971  SCIP_NLPSTATISTICS* statistics /**< pointer to store statistics */
12972  );
12973 
12974 /** gets objective value of current NLP
12975  *
12976  * @pre This method can be called if SCIP is in one of the following stages:
12977  * - \ref SCIP_STAGE_INITSOLVE
12978  * - \ref SCIP_STAGE_SOLVING
12979  */
12980 extern
12982  SCIP* scip /**< SCIP data structure */
12983  );
12984 
12985 /** indicates whether a feasible solution for the current NLP is available
12986  * thus, returns whether the solution status <= feasible
12987  *
12988  * @pre This method can be called if SCIP is in one of the following stages:
12989  * - \ref SCIP_STAGE_INITSOLVE
12990  * - \ref SCIP_STAGE_SOLVING
12991  */
12992 extern
12994  SCIP* scip /**< SCIP data structure */
12995  );
12996 
12997 /** gets fractional variables of last NLP solution along with solution values and fractionalities
12998  *
12999  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13000  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13001  *
13002  * @pre This method can be called if SCIP is in one of the following stages:
13003  * - \ref SCIP_STAGE_INITSOLVE
13004  * - \ref SCIP_STAGE_SOLVING
13005  */
13006 extern
13008  SCIP* scip, /**< SCIP data structure */
13009  SCIP_VAR*** fracvars, /**< pointer to store the array of NLP fractional variables, or NULL */
13010  SCIP_Real** fracvarssol, /**< pointer to store the array of NLP fractional variables solution values, or NULL */
13011  SCIP_Real** fracvarsfrac, /**< pointer to store the array of NLP fractional variables fractionalities, or NULL */
13012  int* nfracvars, /**< pointer to store the number of NLP fractional variables , or NULL */
13013  int* npriofracvars /**< pointer to store the number of NLP fractional variables with maximal branching priority, or NULL */
13014  );
13015 
13016 /** gets integer parameter of NLP
13017  *
13018  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13019  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13020  *
13021  * @pre This method can be called if SCIP is in one of the following stages:
13022  * - \ref SCIP_STAGE_INITSOLVE
13023  * - \ref SCIP_STAGE_SOLVING
13024  */
13025 extern
13027  SCIP* scip, /**< SCIP data structure */
13028  SCIP_NLPPARAM type, /**< parameter number */
13029  int* ival /**< pointer to store the parameter value */
13030  );
13031 
13032 /** sets integer parameter of NLP
13033  *
13034  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13035  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13036  *
13037  * @pre This method can be called if SCIP is in one of the following stages:
13038  * - \ref SCIP_STAGE_INITSOLVE
13039  * - \ref SCIP_STAGE_SOLVING
13040  */
13041 extern
13043  SCIP* scip, /**< SCIP data structure */
13044  SCIP_NLPPARAM type, /**< parameter number */
13045  int ival /**< parameter value */
13046  );
13047 
13048 /** gets floating point parameter of NLP
13049  *
13050  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13051  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13052  *
13053  * @pre This method can be called if SCIP is in one of the following stages:
13054  * - \ref SCIP_STAGE_INITSOLVE
13055  * - \ref SCIP_STAGE_SOLVING
13056  */
13057 extern
13059  SCIP* scip, /**< SCIP data structure */
13060  SCIP_NLPPARAM type, /**< parameter number */
13061  SCIP_Real* dval /**< pointer to store the parameter value */
13062  );
13063 
13064 /** sets floating point parameter of NLP
13065  *
13066  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13067  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13068  *
13069  * @pre This method can be called if SCIP is in one of the following stages:
13070  * - \ref SCIP_STAGE_INITSOLVE
13071  * - \ref SCIP_STAGE_SOLVING
13072  */
13073 extern
13075  SCIP* scip, /**< SCIP data structure */
13076  SCIP_NLPPARAM type, /**< parameter number */
13077  SCIP_Real dval /**< parameter value */
13078  );
13079 
13080 /** gets string parameter of NLP
13081  *
13082  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13083  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13084  *
13085  * @pre This method can be called if SCIP is in one of the following stages:
13086  * - \ref SCIP_STAGE_INITSOLVE
13087  * - \ref SCIP_STAGE_SOLVING
13088  */
13089 extern
13091  SCIP* scip, /**< SCIP data structure */
13092  SCIP_NLPPARAM type, /**< parameter number */
13093  const char** sval /**< pointer to store the parameter value */
13094  );
13095 
13096 /** sets string parameter of NLP
13097  *
13098  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13099  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13100  *
13101  * @pre This method can be called if SCIP is in one of the following stages:
13102  * - \ref SCIP_STAGE_INITSOLVE
13103  * - \ref SCIP_STAGE_SOLVING
13104  */
13105 extern
13107  SCIP* scip, /**< SCIP data structure */
13108  SCIP_NLPPARAM type, /**< parameter number */
13109  const char* sval /**< parameter value */
13110  );
13111 
13112 /** writes current NLP to a file
13113  *
13114  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13115  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13116  *
13117  * @pre This method can be called if SCIP is in one of the following stages:
13118  * - \ref SCIP_STAGE_INITSOLVE
13119  * - \ref SCIP_STAGE_SOLVING
13120  */
13121 extern
13123  SCIP* scip, /**< SCIP data structure */
13124  const char* filename /**< file name */
13125  );
13126 
13127 /** gets the NLP interface and problem used by the SCIP NLP;
13128  * with the NLPI and its problem you can use all of the methods defined in nlpi/nlpi.h;
13129  *
13130  * @warning You have to make sure, that the full internal state of the NLPI does not change or is recovered completely
13131  * after the end of the method that uses the NLPI. In particular, if you manipulate the NLP or its solution
13132  * (e.g. by calling one of the SCIPnlpiAdd...() or the SCIPnlpiSolve() method), you have to check in advance
13133  * whether the NLP is currently solved. If this is the case, you have to make sure, the internal solution
13134  * status is recovered completely at the end of your method. Additionally you have to resolve the NLP with
13135  * SCIPnlpiSolve() in order to reinstall the internal solution status.
13136  *
13137  * @warning Make also sure, that all parameter values that you have changed are set back to their original values.
13138  *
13139  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13140  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13141  *
13142  * @pre This method can be called if SCIP is in one of the following stages:
13143  * - \ref SCIP_STAGE_INITSOLVE
13144  * - \ref SCIP_STAGE_SOLVING
13145  */
13146 extern
13148  SCIP* scip, /**< SCIP data structure */
13149  SCIP_NLPI** nlpi, /**< pointer to store the NLP solver interface */
13150  SCIP_NLPIPROBLEM** nlpiproblem /**< pointer to store the NLP solver interface problem */
13151  );
13152 
13153 /**@} */
13154 
13155 
13156 /*
13157  * NLP diving methods
13158  */
13159 
13160 /**@name NLP Diving Methods */
13161 /**@{ */
13162 
13163 /** initiates NLP diving making methods SCIPchgVarObjDiveNLP(), SCIPchgVarBoundsDiveNLP(), SCIPchgVarsBoundsDiveNLP(), and SCIPsolveDiveNLP() available
13164  *
13165  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13166  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13167  *
13168  * @pre This method can be called if SCIP is in one of the following stages:
13169  * - \ref SCIP_STAGE_INITSOLVE
13170  * - \ref SCIP_STAGE_SOLVING
13171  */
13172 extern
13174  SCIP* scip /**< SCIP data structure */
13175  );
13176 
13177 /** ends NLP diving
13178  *
13179  * Resets changes made by SCIPchgVarObjDiveNLP(), SCIPchgVarBoundsDiveNLP(), and SCIPchgVarsBoundsDiveNLP().
13180  *
13181  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13182  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13183  *
13184  * @pre This method can be called if SCIP is in one of the following stages:
13185  * - \ref SCIP_STAGE_INITSOLVE
13186  * - \ref SCIP_STAGE_SOLVING
13187  */
13188 extern
13190  SCIP* scip /**< SCIP data structure */
13191  );
13192 
13193 /** changes linear objective coefficient of a variable in diving NLP
13194  *
13195  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13196  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13197  *
13198  * @pre This method can be called if SCIP is in one of the following stages:
13199  * - \ref SCIP_STAGE_INITSOLVE
13200  * - \ref SCIP_STAGE_SOLVING
13201  */
13202 extern
13204  SCIP* scip, /**< SCIP data structure */
13205  SCIP_VAR* var, /**< variable which coefficient to change */
13206  SCIP_Real coef /**< new value for coefficient */
13207  );
13208 
13209 /** changes bounds of a variable in diving NLP
13210  *
13211  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13212  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13213  *
13214  * @pre This method can be called if SCIP is in one of the following stages:
13215  * - \ref SCIP_STAGE_INITSOLVE
13216  * - \ref SCIP_STAGE_SOLVING
13217  */
13218 extern
13220  SCIP* scip, /**< SCIP data structure */
13221  SCIP_VAR* var, /**< variable which bounds to change */
13222  SCIP_Real lb, /**< new lower bound */
13223  SCIP_Real ub /**< new upper bound */
13224  );
13225 
13226 /** changes bounds of a set of variables in diving NLP
13227  *
13228  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13229  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13230  *
13231  * @pre This method can be called if SCIP is in one of the following stages:
13232  * - \ref SCIP_STAGE_INITSOLVE
13233  * - \ref SCIP_STAGE_SOLVING
13234  */
13235 extern
13237  SCIP* scip, /**< SCIP data structure */
13238  int nvars, /**< number of variables which bounds to changes */
13239  SCIP_VAR** vars, /**< variables which bounds to change */
13240  SCIP_Real* lbs, /**< new lower bounds */
13241  SCIP_Real* ubs /**< new upper bounds */
13242  );
13243 
13244 /** solves diving NLP
13245  *
13246  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13247  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13248  *
13249  * @pre This method can be called if SCIP is in one of the following stages:
13250  * - \ref SCIP_STAGE_INITSOLVE
13251  * - \ref SCIP_STAGE_SOLVING
13252  */
13253 extern
13255  SCIP* scip /**< SCIP data structure */
13256  );
13257 
13258 /**@} */
13259 
13260 
13261 /*
13262  * NLP nonlinear row methods
13263  */
13264 
13265 /**@name NLP Nonlinear Row Methods */
13266 /**@{ */
13267 
13268 /** creates and captures an NLP row
13269  *
13270  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13271  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13272  *
13273  * @pre This method can be called if SCIP is in one of the following stages:
13274  * - \ref SCIP_STAGE_PRESOLVED
13275  * - \ref SCIP_STAGE_INITSOLVE
13276  * - \ref SCIP_STAGE_SOLVING
13277  */
13278 extern
13280  SCIP* scip, /**< SCIP data structure */
13281  SCIP_NLROW** nlrow, /**< buffer to store pointer to nonlinear row */
13282  const char* name, /**< name of nonlinear row */
13283  SCIP_Real constant, /**< constant */
13284  int nlinvars, /**< number of linear variables */
13285  SCIP_VAR** linvars, /**< linear variables, or NULL if nlinvars == 0 */
13286  SCIP_Real* lincoefs, /**< linear coefficients, or NULL if nlinvars == 0 */
13287  int nquadvars, /**< number of variables in quadratic term */
13288  SCIP_VAR** quadvars, /**< variables in quadratic terms, or NULL if nquadvars == 0 */
13289  int nquadelems, /**< number of elements in quadratic term */
13290  SCIP_QUADELEM* quadelems, /**< elements (i.e., monomials) in quadratic term, or NULL if nquadelems == 0 */
13291  SCIP_EXPRTREE* expression, /**< nonlinear expression, or NULL */
13292  SCIP_Real lhs, /**< left hand side */
13293  SCIP_Real rhs /**< right hand side */
13294  );
13295 
13296 /** creates and captures an NLP nonlinear row without any coefficients
13297  *
13298  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13299  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13300  *
13301  * @pre This method can be called if SCIP is in one of the following stages:
13302  * - \ref SCIP_STAGE_PRESOLVED
13303  * - \ref SCIP_STAGE_INITSOLVE
13304  * - \ref SCIP_STAGE_SOLVING
13305  */
13306 extern
13308  SCIP* scip, /**< SCIP data structure */
13309  SCIP_NLROW** nlrow, /**< pointer to nonlinear row */
13310  const char* name, /**< name of nonlinear row */
13311  SCIP_Real lhs, /**< left hand side */
13312  SCIP_Real rhs /**< right hand side */
13313  );
13314 
13315 /** creates and captures an NLP row from a linear row
13316  *
13317  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13318  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13319  *
13320  * @pre This method can be called if SCIP is in one of the following stages:
13321  * - \ref SCIP_STAGE_PRESOLVED
13322  * - \ref SCIP_STAGE_INITSOLVE
13323  * - \ref SCIP_STAGE_SOLVING
13324  */
13325 extern
13327  SCIP* scip, /**< SCIP data structure */
13328  SCIP_NLROW** nlrow, /**< pointer to nonlinear row */
13329  SCIP_ROW* row /**< the linear row to copy */
13330  );
13331 
13332 /** increases usage counter of NLP nonlinear row
13333  *
13334  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13335  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13336  *
13337  * @pre This method can be called if SCIP is in one of the following stages:
13338  * - \ref SCIP_STAGE_PRESOLVED
13339  * - \ref SCIP_STAGE_INITSOLVE
13340  * - \ref SCIP_STAGE_SOLVING
13341  */
13342 extern
13344  SCIP* scip, /**< SCIP data structure */
13345  SCIP_NLROW* nlrow /**< nonlinear row to capture */
13346  );
13347 
13348 /** decreases usage counter of NLP nonlinear row, and frees memory if necessary
13349  *
13350  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13351  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13352  *
13353  * @pre This method can be called if SCIP is in one of the following stages:
13354  * - \ref SCIP_STAGE_PRESOLVED
13355  * - \ref SCIP_STAGE_INITSOLVE
13356  * - \ref SCIP_STAGE_SOLVING
13357  * - \ref SCIP_STAGE_EXITSOLVE
13358  */
13359 extern
13361  SCIP* scip, /**< SCIP data structure */
13362  SCIP_NLROW** nlrow /**< pointer to nonlinear row */
13363  );
13364 
13365 /** changes left hand side of NLP nonlinear row
13366  *
13367  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13368  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13369  *
13370  * @pre This method can be called if SCIP is in one of the following stages:
13371  * - \ref SCIP_STAGE_PRESOLVED
13372  * - \ref SCIP_STAGE_INITSOLVE
13373  * - \ref SCIP_STAGE_SOLVING
13374  */
13375 extern
13377  SCIP* scip, /**< SCIP data structure */
13378  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
13379  SCIP_Real lhs /**< new left hand side */
13380  );
13381 
13382 /** changes right hand side of NLP nonlinear row
13383  *
13384  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13385  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13386  *
13387  * @pre This method can be called if SCIP is in one of the following stages:
13388  * - \ref SCIP_STAGE_PRESOLVED
13389  * - \ref SCIP_STAGE_INITSOLVE
13390  * - \ref SCIP_STAGE_SOLVING
13391  */
13392 extern
13394  SCIP* scip, /**< SCIP data structure */
13395  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
13396  SCIP_Real rhs /**< new right hand side */
13397  );
13398 
13399 /** changes constant of NLP nonlinear row
13400  *
13401  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13402  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13403  *
13404  * @pre This method can be called if SCIP is in one of the following stages:
13405  * - \ref SCIP_STAGE_PRESOLVED
13406  * - \ref SCIP_STAGE_INITSOLVE
13407  * - \ref SCIP_STAGE_SOLVING
13408  */
13409 extern
13411  SCIP* scip, /**< SCIP data structure */
13412  SCIP_NLROW* nlrow, /**< NLP row */
13413  SCIP_Real constant /**< new value for constant */
13414  );
13415 
13416 /** adds variable with a linear coefficient to the nonlinear row
13417  *
13418  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13419  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13420  *
13421  * @pre This method can be called if SCIP is in one of the following stages:
13422  * - \ref SCIP_STAGE_PRESOLVED
13423  * - \ref SCIP_STAGE_INITSOLVE
13424  * - \ref SCIP_STAGE_SOLVING
13425  */
13426 extern
13428  SCIP* scip, /**< SCIP data structure */
13429  SCIP_NLROW* nlrow, /**< NLP row */
13430  SCIP_VAR* var, /**< problem variable */
13431  SCIP_Real val /**< value of coefficient in linear part of row */
13432  );
13433 
13434 /** adds variables with linear coefficients to the row
13435  *
13436  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13437  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13438  *
13439  * @pre This method can be called if SCIP is in one of the following stages:
13440  * - \ref SCIP_STAGE_PRESOLVED
13441  * - \ref SCIP_STAGE_INITSOLVE
13442  * - \ref SCIP_STAGE_SOLVING
13443  */
13444 extern
13446  SCIP* scip, /**< SCIP data structure */
13447  SCIP_NLROW* nlrow, /**< NLP row */
13448  int nvars, /**< number of variables to add to the row */
13449  SCIP_VAR** vars, /**< problem variables to add */
13450  SCIP_Real* vals /**< values of coefficients in linear part of row */
13451  );
13452 
13453 /** changes linear coefficient of a variables in a row
13454  *
13455  * Setting the coefficient to 0.0 means that it is removed from the row
13456  * the variable does not need to exists before.
13457  *
13458  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13459  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13460  *
13461  * @pre This method can be called if SCIP is in one of the following stages:
13462  * - \ref SCIP_STAGE_PRESOLVED
13463  * - \ref SCIP_STAGE_INITSOLVE
13464  * - \ref SCIP_STAGE_SOLVING
13465  */
13466 extern
13468  SCIP* scip, /**< SCIP data structure */
13469  SCIP_NLROW* nlrow, /**< NLP row */
13470  SCIP_VAR* var, /**< variable */
13471  SCIP_Real coef /**< new value of coefficient */
13472  );
13473 
13474 /** adds quadratic variable to the nonlinear row
13475  *
13476  * After adding a quadratic variable, it can be used to add quadratic elements.
13477  *
13478  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13479  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13480  *
13481  * @pre This method can be called if SCIP is in one of the following stages:
13482  * - \ref SCIP_STAGE_PRESOLVED
13483  * - \ref SCIP_STAGE_INITSOLVE
13484  * - \ref SCIP_STAGE_SOLVING
13485  */
13486 extern
13488  SCIP* scip, /**< SCIP data structure */
13489  SCIP_NLROW* nlrow, /**< NLP row */
13490  SCIP_VAR* var /**< problem variable */
13491  );
13492 
13493 /** adds quadratic variables to the nonlinear row
13494  *
13495  * After adding quadratic variables, they can be used to add quadratic elements.
13496  *
13497  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13498  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13499  *
13500  * @pre This method can be called if SCIP is in one of the following stages:
13501  * - \ref SCIP_STAGE_PRESOLVED
13502  * - \ref SCIP_STAGE_INITSOLVE
13503  * - \ref SCIP_STAGE_SOLVING
13504  */
13505 extern
13507  SCIP* scip, /**< SCIP data structure */
13508  SCIP_NLROW* nlrow, /**< NLP row */
13509  int nvars, /**< number of problem variables */
13510  SCIP_VAR** vars /**< problem variables */
13511  );
13512 
13513 /** add a quadratic element to the nonlinear row
13514  *
13515  * Variable indices of the quadratic element need to be relative to quadratic variables array of row.
13516  *
13517  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13518  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13519  *
13520  * @pre This method can be called if SCIP is in one of the following stages:
13521  * - \ref SCIP_STAGE_PRESOLVED
13522  * - \ref SCIP_STAGE_INITSOLVE
13523  * - \ref SCIP_STAGE_SOLVING
13524  */
13525 extern
13527  SCIP* scip, /**< SCIP data structure */
13528  SCIP_NLROW* nlrow, /**< NLP row */
13529  SCIP_QUADELEM quadelem /**< quadratic element */
13530  );
13531 
13532 /** adds quadratic elements to the nonlinear row
13533  *
13534  * Variable indices of the quadratic elements need to be relative to quadratic variables array of row.
13535  *
13536  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13537  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13538  *
13539  * @pre This method can be called if SCIP is in one of the following stages:
13540  * - \ref SCIP_STAGE_PRESOLVED
13541  * - \ref SCIP_STAGE_INITSOLVE
13542  * - \ref SCIP_STAGE_SOLVING
13543  */
13544 extern
13546  SCIP* scip, /**< SCIP data structure */
13547  SCIP_NLROW* nlrow, /**< NLP row */
13548  int nquadelems, /**< number of quadratic elements */
13549  SCIP_QUADELEM* quadelems /**< quadratic elements */
13550  );
13551 
13552 /** changes coefficient in quadratic part of a row
13553  *
13554  * Setting the coefficient in the quadelement to 0.0 means that it is removed from the row
13555  * the element does not need to exists before.
13556  *
13557  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13558  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13559  *
13560  * @pre This method can be called if SCIP is in one of the following stages:
13561  * - \ref SCIP_STAGE_PRESOLVED
13562  * - \ref SCIP_STAGE_INITSOLVE
13563  * - \ref SCIP_STAGE_SOLVING
13564  */
13565 extern
13567  SCIP* scip, /**< SCIP data structure */
13568  SCIP_NLROW* nlrow, /**< NLP row */
13569  SCIP_QUADELEM quadelement /**< new quadratic element, or update for existing one */
13570  );
13571 
13572 /** sets or deletes expression tree in the nonlinear row
13573  *
13574  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13575  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13576  *
13577  * @pre This method can be called if SCIP is in one of the following stages:
13578  * - \ref SCIP_STAGE_PRESOLVED
13579  * - \ref SCIP_STAGE_INITSOLVE
13580  * - \ref SCIP_STAGE_SOLVING
13581  */
13582 extern
13584  SCIP* scip, /**< SCIP data structure */
13585  SCIP_NLROW* nlrow, /**< NLP row */
13586  SCIP_EXPRTREE* exprtree /**< expression tree, or NULL */
13587  );
13588 
13589 /** sets a parameter of expression tree in the nonlinear row
13590  *
13591  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13592  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13593  *
13594  * @pre This method can be called if SCIP is in one of the following stages:
13595  * - \ref SCIP_STAGE_PRESOLVED
13596  * - \ref SCIP_STAGE_INITSOLVE
13597  * - \ref SCIP_STAGE_SOLVING
13598  */
13599 extern
13601  SCIP* scip, /**< SCIP data structure */
13602  SCIP_NLROW* nlrow, /**< NLP row */
13603  int paramidx, /**< index of parameter in expression tree */
13604  SCIP_Real paramval /**< new value of parameter in expression tree */
13605  );
13606 
13607 /** sets parameters of expression tree in the nonlinear row
13608  *
13609  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13610  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13611  *
13612  * @pre This method can be called if SCIP is in one of the following stages:
13613  * - \ref SCIP_STAGE_PRESOLVED
13614  * - \ref SCIP_STAGE_INITSOLVE
13615  * - \ref SCIP_STAGE_SOLVING
13616  */
13617 extern
13619  SCIP* scip, /**< SCIP data structure */
13620  SCIP_NLROW* nlrow, /**< NLP row */
13621  SCIP_Real* paramvals /**< new values of parameter in expression tree */
13622  );
13623 
13624 /** recalculates the activity of a nonlinear row in the last NLP solution
13625  *
13626  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13627  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13628  *
13629  * @pre This method can be called if SCIP is in one of the following stages:
13630  * - \ref SCIP_STAGE_PRESOLVED
13631  * - \ref SCIP_STAGE_INITSOLVE
13632  * - \ref SCIP_STAGE_SOLVING
13633  */
13634 extern
13636  SCIP* scip, /**< SCIP data structure */
13637  SCIP_NLROW* nlrow /**< NLP nonlinear row */
13638  );
13639 
13640 /** returns the activity of a nonlinear row in the last NLP solution
13641  *
13642  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13643  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13644  *
13645  * @pre This method can be called if SCIP is in one of the following stages:
13646  * - \ref SCIP_STAGE_INITSOLVE
13647  * - \ref SCIP_STAGE_SOLVING
13648  */
13649 extern
13651  SCIP* scip, /**< SCIP data structure */
13652  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
13653  SCIP_Real* activity /**< pointer to store activity value */
13654  );
13655 
13656 /** gives the feasibility of a nonlinear row in the last NLP solution: negative value means infeasibility
13657  *
13658  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13659  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13660  *
13661  * @pre This method can be called if SCIP is in one of the following stages:
13662  * - \ref SCIP_STAGE_INITSOLVE
13663  * - \ref SCIP_STAGE_SOLVING
13664  */
13665 extern
13667  SCIP* scip, /**< SCIP data structure */
13668  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
13669  SCIP_Real* feasibility /**< pointer to store feasibility value */
13670  );
13671 
13672 /** recalculates the activity of a nonlinear row for the current pseudo solution
13673  *
13674  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13675  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13676  *
13677  * @pre This method can be called if SCIP is in one of the following stages:
13678  * - \ref SCIP_STAGE_INITSOLVE
13679  * - \ref SCIP_STAGE_SOLVING
13680  */
13681 extern
13683  SCIP* scip, /**< SCIP data structure */
13684  SCIP_NLROW* nlrow /**< NLP nonlinear row */
13685  );
13686 
13687 /** gives the activity of a nonlinear row for the current pseudo solution
13688  *
13689  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13690  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13691  *
13692  * @pre This method can be called if SCIP is in one of the following stages:
13693  * - \ref SCIP_STAGE_INITSOLVE
13694  * - \ref SCIP_STAGE_SOLVING
13695  */
13696 extern
13698  SCIP* scip, /**< SCIP data structure */
13699  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
13700  SCIP_Real* pseudoactivity /**< pointer to store pseudo activity value */
13701  );
13702 
13703 /** gives the feasibility of a nonlinear row for the current pseudo solution: negative value means infeasibility
13704  *
13705  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13706  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13707  *
13708  * @pre This method can be called if SCIP is in one of the following stages:
13709  * - \ref SCIP_STAGE_INITSOLVE
13710  * - \ref SCIP_STAGE_SOLVING
13711  */
13712 extern
13714  SCIP* scip, /**< SCIP data structure */
13715  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
13716  SCIP_Real* pseudofeasibility /**< pointer to store pseudo feasibility value */
13717  );
13718 
13719 /** recalculates the activity of a nonlinear row in the last NLP or pseudo solution
13720  *
13721  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13722  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13723  *
13724  * @pre This method can be called if SCIP is in one of the following stages:
13725  * - \ref SCIP_STAGE_INITSOLVE
13726  * - \ref SCIP_STAGE_SOLVING
13727  */
13728 extern
13730  SCIP* scip, /**< SCIP data structure */
13731  SCIP_NLROW* nlrow /**< NLP nonlinear row */
13732  );
13733 
13734 /** gives the activity of a nonlinear row in the last NLP or pseudo solution
13735  *
13736  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13737  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13738  *
13739  * @pre This method can be called if SCIP is in one of the following stages:
13740  * - \ref SCIP_STAGE_INITSOLVE
13741  * - \ref SCIP_STAGE_SOLVING
13742  */
13743 extern
13745  SCIP* scip, /**< SCIP data structure */
13746  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
13747  SCIP_Real* activity /**< pointer to store activity value */
13748  );
13749 
13750 /** gives the feasibility of a nonlinear row in the last NLP or pseudo solution
13751  *
13752  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13753  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13754  *
13755  * @pre This method can be called if SCIP is in one of the following stages:
13756  * - \ref SCIP_STAGE_INITSOLVE
13757  * - \ref SCIP_STAGE_SOLVING
13758  */
13759 extern
13761  SCIP* scip, /**< SCIP data structure */
13762  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
13763  SCIP_Real* feasibility /**< pointer to store feasibility value */
13764  );
13765 
13766 /** gives the activity of a nonlinear row for the given primal solution or NLP solution or pseudo solution
13767  *
13768  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13769  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13770  *
13771  * @pre This method can be called if SCIP is in one of the following stages:
13772  * - \ref SCIP_STAGE_INITSOLVE
13773  * - \ref SCIP_STAGE_SOLVING
13774  */
13775 extern
13777  SCIP* scip, /**< SCIP data structure */
13778  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
13779  SCIP_SOL* sol, /**< primal CIP solution, or NULL for NLP solution of pseudo solution */
13780  SCIP_Real* activity /**< pointer to store activity value */
13781  );
13782 
13783 /** gives the feasibility of a nonlinear row for the given primal solution
13784  *
13785  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13786  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13787  *
13788  * @pre This method can be called if SCIP is in one of the following stages:
13789  * - \ref SCIP_STAGE_INITSOLVE
13790  * - \ref SCIP_STAGE_SOLVING
13791  */
13792 extern
13794  SCIP* scip, /**< SCIP data structure */
13795  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
13796  SCIP_SOL* sol, /**< primal CIP solution */
13797  SCIP_Real* feasibility /**< pointer to store feasibility value */
13798  );
13799 
13800 /** gives the minimal and maximal activity of a nonlinear row w.r.t. the variable's bounds
13801  *
13802  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13803  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13804  *
13805  * @pre This method can be called if SCIP is in one of the following stages:
13806  * - \ref SCIP_STAGE_PRESOLVED
13807  * - \ref SCIP_STAGE_INITSOLVE
13808  * - \ref SCIP_STAGE_SOLVING
13809  */
13810 extern
13812  SCIP* scip, /**< SCIP data structure */
13813  SCIP_NLROW* nlrow, /**< NLP row */
13814  SCIP_Real* minactivity, /**< buffer to store minimal activity, or NULL */
13815  SCIP_Real* maxactivity /**< buffer to store maximal activity, or NULL */
13816  );
13817 
13818 /** output nonlinear row to file stream
13819  *
13820  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13821  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13822  *
13823  * @pre This method can be called if SCIP is in one of the following stages:
13824  * - \ref SCIP_STAGE_PRESOLVED
13825  * - \ref SCIP_STAGE_INITSOLVE
13826  * - \ref SCIP_STAGE_SOLVING
13827  */
13828 extern
13830  SCIP* scip, /**< SCIP data structure */
13831  SCIP_NLROW* nlrow, /**< NLP row */
13832  FILE* file /**< output file (or NULL for standard output) */
13833  );
13834 
13835 /**@} */
13836 
13837 /**@name Expression tree methods */
13838 /**@{ */
13839 
13840 /** replaces array of variables in expression tree by corresponding transformed variables
13841  *
13842  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13843  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13844  *
13845  * @pre This method can be called if @p scip is in one of the following stages:
13846  * - \ref SCIP_STAGE_TRANSFORMING
13847  * - \ref SCIP_STAGE_TRANSFORMED
13848  * - \ref SCIP_STAGE_INITPRESOLVE
13849  * - \ref SCIP_STAGE_PRESOLVING
13850  * - \ref SCIP_STAGE_EXITPRESOLVE
13851  * - \ref SCIP_STAGE_PRESOLVED
13852  * - \ref SCIP_STAGE_INITSOLVE
13853  * - \ref SCIP_STAGE_SOLVING
13854  * - \ref SCIP_STAGE_SOLVED
13855  * - \ref SCIP_STAGE_EXITSOLVE
13856  * - \ref SCIP_STAGE_FREETRANS
13857  *
13858  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
13859  */
13860 extern
13862  SCIP* scip, /**< SCIP data structure */
13863  SCIP_EXPRTREE* tree /**< expression tree */
13864  );
13865 
13866 /** evaluates an expression tree for a primal solution or LP solution
13867  *
13868  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13869  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13870  *
13871  * @pre This method can be called if @p scip is in one of the following stages:
13872  * - \ref SCIP_STAGE_PROBLEM
13873  * - \ref SCIP_STAGE_TRANSFORMING
13874  * - \ref SCIP_STAGE_TRANSFORMED
13875  * - \ref SCIP_STAGE_INITPRESOLVE
13876  * - \ref SCIP_STAGE_PRESOLVING
13877  * - \ref SCIP_STAGE_EXITPRESOLVE
13878  * - \ref SCIP_STAGE_PRESOLVED
13879  * - \ref SCIP_STAGE_INITSOLVE
13880  * - \ref SCIP_STAGE_SOLVING
13881  * - \ref SCIP_STAGE_SOLVED
13882  * - \ref SCIP_STAGE_EXITSOLVE
13883  * - \ref SCIP_STAGE_FREETRANS
13884  *
13885  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
13886  */
13887 extern
13889  SCIP* scip, /**< SCIP data structure */
13890  SCIP_EXPRTREE* tree, /**< expression tree */
13891  SCIP_SOL* sol, /**< a solution, or NULL for current LP solution */
13892  SCIP_Real* val /**< buffer to store value */
13893  );
13894 
13895 /** evaluates an expression tree w.r.t. current global bounds
13896  *
13897  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13898  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13899  *
13900  * @pre This method can be called if @p scip is in one of the following stages:
13901  * - \ref SCIP_STAGE_PROBLEM
13902  * - \ref SCIP_STAGE_TRANSFORMING
13903  * - \ref SCIP_STAGE_TRANSFORMED
13904  * - \ref SCIP_STAGE_INITPRESOLVE
13905  * - \ref SCIP_STAGE_PRESOLVING
13906  * - \ref SCIP_STAGE_EXITPRESOLVE
13907  * - \ref SCIP_STAGE_PRESOLVED
13908  * - \ref SCIP_STAGE_INITSOLVE
13909  * - \ref SCIP_STAGE_SOLVING
13910  * - \ref SCIP_STAGE_SOLVED
13911  * - \ref SCIP_STAGE_EXITSOLVE
13912  * - \ref SCIP_STAGE_FREETRANS
13913  *
13914  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
13915  */
13916 extern
13918  SCIP* scip, /**< SCIP data structure */
13919  SCIP_EXPRTREE* tree, /**< expression tree */
13920  SCIP_Real infinity, /**< value to use for infinity */
13921  SCIP_INTERVAL* val /**< buffer to store result */
13922  );
13923 
13924 /** evaluates an expression tree w.r.t. current local bounds
13925  *
13926  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13927  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13928  *
13929  * @pre This method can be called if @p scip is in one of the following stages:
13930  * - \ref SCIP_STAGE_PROBLEM
13931  * - \ref SCIP_STAGE_TRANSFORMING
13932  * - \ref SCIP_STAGE_TRANSFORMED
13933  * - \ref SCIP_STAGE_INITPRESOLVE
13934  * - \ref SCIP_STAGE_PRESOLVING
13935  * - \ref SCIP_STAGE_EXITPRESOLVE
13936  * - \ref SCIP_STAGE_PRESOLVED
13937  * - \ref SCIP_STAGE_INITSOLVE
13938  * - \ref SCIP_STAGE_SOLVING
13939  * - \ref SCIP_STAGE_SOLVED
13940  * - \ref SCIP_STAGE_EXITSOLVE
13941  * - \ref SCIP_STAGE_FREETRANS
13942  *
13943  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
13944  */
13945 extern
13947  SCIP* scip, /**< SCIP data structure */
13948  SCIP_EXPRTREE* tree, /**< expression tree */
13949  SCIP_Real infinity, /**< value to use for infinity */
13950  SCIP_INTERVAL* val /**< buffer to store result */
13951  );
13952 
13953 /**@} */
13954 
13955 
13956 /*
13957  * cutting plane methods
13958  */
13959 
13960 /**@name Cutting Plane Methods */
13961 /**@{ */
13962 
13963 /** returns efficacy of the cut with respect to the given primal solution or the current LP solution:
13964  * e = -feasibility/norm
13965  *
13966  * @return the efficacy of the cut with respect to the given primal solution or the current LP solution:
13967  * e = -feasibility/norm
13968  *
13969  * @pre This method can be called if @p scip is in one of the following stages:
13970  * - \ref SCIP_STAGE_SOLVING
13971  */
13972 extern
13974  SCIP* scip, /**< SCIP data structure */
13975  SCIP_SOL* sol, /**< primal CIP solution, or NULL for current LP solution */
13976  SCIP_ROW* cut /**< separated cut */
13977  );
13978 
13979 /** returns whether the cut's efficacy with respect to the given primal solution or the current LP solution is greater
13980  * than the minimal cut efficacy
13981  *
13982  * @return TRUE if the cut's efficacy with respect to the given primal solution or the current LP solution is greater
13983  * than the minimal cut efficacy, otherwise FALSE
13984  *
13985  * @pre This method can be called if @p scip is in one of the following stages:
13986  * - \ref SCIP_STAGE_SOLVING
13987  */
13988 extern
13990  SCIP* scip, /**< SCIP data structure */
13991  SCIP_SOL* sol, /**< primal CIP solution, or NULL for current LP solution */
13992  SCIP_ROW* cut /**< separated cut */
13993  );
13994 
13995 /** checks, if the given cut's efficacy is larger than the minimal cut efficacy
13996  *
13997  * @return TRUE if the given cut's efficacy is larger than the minimal cut efficacy, otherwise FALSE
13998  */
13999 extern
14001  SCIP* scip, /**< SCIP data structure */
14002  SCIP_Real efficacy /**< efficacy of the cut */
14003  );
14004 
14005 /** calculates the efficacy norm of the given vector, which depends on the "separating/efficacynorm" parameter
14006  *
14007  * @return the efficacy norm of the given vector, which depends on the "separating/efficacynorm" parameter
14008  */
14009 extern
14011  SCIP* scip, /**< SCIP data structure */
14012  SCIP_Real* vals, /**< array of values */
14013  int nvals /**< number of values */
14014  );
14015 
14016 /** indicates whether a cut is applicable
14017  *
14018  * If the cut has only one variable and this method returns FALSE, it may
14019  * still be possible that the cut can be added to the LP (as a row instead
14020  * of a boundchange), but it will be a very weak cut. The user is asked
14021  * to avoid such cuts.
14022  *
14023  * @pre This method can be called if @p scip is in one of the following stages:
14024  * - \ref SCIP_STAGE_SOLVING
14025  *
14026  * @return whether the cut is modifiable, not a bound change, or a bound change that changes bounds by at least epsilon
14027  */
14028 extern
14030  SCIP* scip, /**< SCIP data structure */
14031  SCIP_ROW* cut /**< separated cut */
14032  );
14033 
14034 /** adds cut to separation storage
14035  *
14036  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14037  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14038  *
14039  * @pre This method can be called if @p scip is in one of the following stages:
14040  * - \ref SCIP_STAGE_SOLVING
14041  */
14042 extern
14044  SCIP* scip, /**< SCIP data structure */
14045  SCIP_SOL* sol, /**< primal solution that was separated, or NULL for LP solution */
14046  SCIP_ROW* cut, /**< separated cut */
14047  SCIP_Bool forcecut, /**< should the cut be forced to enter the LP? */
14048  SCIP_Bool* infeasible /**< pointer to store whether cut has been detected to be infeasible for local bounds */
14049  );
14050 
14051 /** if not already existing, adds row to global cut pool
14052  *
14053  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14054  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14055  *
14056  * @pre This method can be called if @p scip is in one of the following stages:
14057  * - \ref SCIP_STAGE_SOLVING
14058  */
14059 extern
14061  SCIP* scip, /**< SCIP data structure */
14062  SCIP_ROW* row /**< cutting plane to add */
14063  );
14064 
14065 /** removes the row from the global cut pool
14066  *
14067  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14068  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14069  *
14070  * @pre This method can be called if @p scip is in one of the following stages:
14071  * - \ref SCIP_STAGE_SOLVING
14072  */
14073 extern
14075  SCIP* scip, /**< SCIP data structure */
14076  SCIP_ROW* row /**< cutting plane to add */
14077  );
14078 
14079 /** gets current cuts in the global cut pool
14080  *
14081  * @return the current cuts in the global cut pool
14082  *
14083  * @pre This method can be called if @p scip is in one of the following stages:
14084  * - \ref SCIP_STAGE_SOLVING
14085  * - \ref SCIP_STAGE_SOLVED
14086  * - \ref SCIP_STAGE_EXITSOLVE
14087  */
14088 extern
14090  SCIP* scip /**< SCIP data structure */
14091  );
14092 
14093 /** gets current number of rows in the global cut pool
14094  *
14095  * @return the current number of rows in the global cut pool
14096  *
14097  * @pre This method can be called if @p scip is in one of the following stages:
14098  * - \ref SCIP_STAGE_SOLVING
14099  * - \ref SCIP_STAGE_SOLVED
14100  * - \ref SCIP_STAGE_EXITSOLVE
14101  */
14102 extern
14103 int SCIPgetNPoolCuts(
14104  SCIP* scip /**< SCIP data structure */
14105  );
14106 
14107 /** gets the global cut pool used by SCIP
14108  *
14109  * @return the global cut pool used by SCIP
14110  *
14111  * @pre This method can be called if @p scip is in one of the following stages:
14112  * - \ref SCIP_STAGE_SOLVING
14113  * - \ref SCIP_STAGE_SOLVED
14114  * - \ref SCIP_STAGE_EXITSOLVE
14115  */
14116 extern
14118  SCIP* scip /**< SCIP data structure */
14119  );
14120 
14121 /** creates a cut pool
14122  *
14123  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14124  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14125  *
14126  * @pre This method can be called if @p scip is in one of the following stages:
14127  * - \ref SCIP_STAGE_TRANSFORMING
14128  * - \ref SCIP_STAGE_TRANSFORMED
14129  * - \ref SCIP_STAGE_INITPRESOLVE
14130  * - \ref SCIP_STAGE_PRESOLVING
14131  * - \ref SCIP_STAGE_EXITPRESOLVE
14132  * - \ref SCIP_STAGE_PRESOLVED
14133  * - \ref SCIP_STAGE_INITSOLVE
14134  * - \ref SCIP_STAGE_SOLVING
14135  */
14136 extern
14138  SCIP* scip, /**< SCIP data structure */
14139  SCIP_CUTPOOL** cutpool, /**< pointer to store cut pool */
14140  int agelimit /**< maximum age a cut can reach before it is deleted from the pool */
14141  );
14142 
14143 /** frees a cut pool
14144  *
14145  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14146  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14147  *
14148  * @pre This method can be called if @p scip is in one of the following stages:
14149  * - \ref SCIP_STAGE_TRANSFORMING
14150  * - \ref SCIP_STAGE_TRANSFORMED
14151  * - \ref SCIP_STAGE_INITPRESOLVE
14152  * - \ref SCIP_STAGE_PRESOLVING
14153  * - \ref SCIP_STAGE_EXITPRESOLVE
14154  * - \ref SCIP_STAGE_PRESOLVED
14155  * - \ref SCIP_STAGE_INITSOLVE
14156  * - \ref SCIP_STAGE_SOLVING
14157  * - \ref SCIP_STAGE_SOLVED
14158  * - \ref SCIP_STAGE_EXITSOLVE
14159  * - \ref SCIP_STAGE_FREETRANS
14160  */
14161 extern
14163  SCIP* scip, /**< SCIP data structure */
14164  SCIP_CUTPOOL** cutpool /**< pointer to store cut pool */
14165  );
14166 
14167 /** if not already existing, adds row to a cut pool and captures it
14168  *
14169  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14170  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14171  *
14172  * @pre This method can be called if @p scip is in one of the following stages:
14173  * - \ref SCIP_STAGE_INITSOLVE
14174  * - \ref SCIP_STAGE_SOLVING
14175  */
14176 extern
14178  SCIP* scip, /**< SCIP data structure */
14179  SCIP_CUTPOOL* cutpool, /**< cut pool */
14180  SCIP_ROW* row /**< cutting plane to add */
14181  );
14182 
14183 /** adds row to a cut pool and captures it; doesn't check for multiple cuts
14184  *
14185  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14186  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14187  *
14188  * @pre This method can be called if @p scip is in one of the following stages:
14189  * - \ref SCIP_STAGE_INITSOLVE
14190  * - \ref SCIP_STAGE_SOLVING
14191  */
14192 extern
14194  SCIP* scip, /**< SCIP data structure */
14195  SCIP_CUTPOOL* cutpool, /**< cut pool */
14196  SCIP_ROW* row /**< cutting plane to add */
14197  );
14198 
14199 /** removes the LP row from a cut pool
14200  *
14201  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14202  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14203  *
14204  * @pre This method can be called if @p scip is in one of the following stages:
14205  * - \ref SCIP_STAGE_INITSOLVE
14206  * - \ref SCIP_STAGE_SOLVING
14207  * - \ref SCIP_STAGE_SOLVED
14208  */
14209 extern
14211  SCIP* scip, /**< SCIP data structure */
14212  SCIP_CUTPOOL* cutpool, /**< cut pool */
14213  SCIP_ROW* row /**< row to remove */
14214  );
14215 
14216 /** separates cuts from a cut pool
14217  *
14218  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14219  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14220  *
14221  * @pre This method can be called if @p scip is in one of the following stages:
14222  * - \ref SCIP_STAGE_SOLVING
14223  */
14224 extern
14226  SCIP* scip, /**< SCIP data structure */
14227  SCIP_CUTPOOL* cutpool, /**< cut pool */
14228  SCIP_RESULT* result /**< pointer to store the result of the separation call */
14229  );
14230 
14231 /** separates cuts w.r.t. given solution from a cut pool
14232  *
14233  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14234  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14235  *
14236  * @pre This method can be called if @p scip is in one of the following stages:
14237  * - \ref SCIP_STAGE_SOLVING
14238  */
14239 extern
14241  SCIP* scip, /**< SCIP data structure */
14242  SCIP_CUTPOOL* cutpool, /**< cut pool */
14243  SCIP_SOL* sol, /**< solution to be separated */
14244  SCIP_RESULT* result /**< pointer to store the result of the separation call */
14245  );
14246 
14247 /** if not already existing, adds row to the delayed global cut pool
14248  *
14249  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14250  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14251  *
14252  * @pre This method can be called if @p scip is the stages \ref SCIP_STAGE_SOLVING
14253  */
14254 extern
14256  SCIP* scip, /**< SCIP data structure */
14257  SCIP_ROW* row /**< cutting plane to add */
14258  );
14259 
14260 /** removes the row from the delayed global cut pool
14261  *
14262  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14263  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14264  *
14265  * @pre This method can be called if @p scip is the stages \ref SCIP_STAGE_SOLVING
14266  */
14267 extern
14269  SCIP* scip, /**< SCIP data structure */
14270  SCIP_ROW* row /**< cutting plane to add */
14271  );
14272 
14273 /** gets current cuts in the delayed global cut pool
14274  *
14275  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14276  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14277  *
14278  * @pre This method can be called if @p scip is the stages \ref SCIP_STAGE_SOLVING
14279  */
14280 extern
14282  SCIP* scip /**< SCIP data structure */
14283  );
14284 
14285 /** gets current number of rows in the delayed global cut pool
14286  *
14287  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14288  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14289  *
14290  * @pre This method can be called if @p scip is the stages \ref SCIP_STAGE_SOLVING
14291  */
14292 extern
14294  SCIP* scip /**< SCIP data structure */
14295  );
14296 
14297 /** gets the delayed global cut pool used by SCIP
14298  *
14299  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14300  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14301  *
14302  * @pre This method can be called if @p scip is the stages \ref SCIP_STAGE_SOLVING
14303  */
14304 extern
14306  SCIP* scip /**< SCIP data structure */
14307  );
14308 
14309 /** separates the given primal solution or the current LP solution by calling the separators and constraint handlers'
14310  * separation methods;
14311  * the generated cuts are stored in the separation storage and can be accessed with the methods SCIPgetCuts() and
14312  * SCIPgetNCuts();
14313  * after evaluating the cuts, you have to call SCIPclearCuts() in order to remove the cuts from the
14314  * separation storage;
14315  * it is possible to call SCIPseparateSol() multiple times with different solutions and evaluate the found cuts
14316  * afterwards
14317  *
14318  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14319  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14320  *
14321  * @pre This method can be called if @p scip is in one of the following stages:
14322  * - \ref SCIP_STAGE_SOLVING
14323  */
14324 extern
14326  SCIP* scip, /**< SCIP data structure */
14327  SCIP_SOL* sol, /**< primal solution that should be separated, or NULL for LP solution */
14328  SCIP_Bool pretendroot, /**< should the cut separators be called as if we are at the root node? */
14329  SCIP_Bool onlydelayed, /**< should only separators be called that were delayed in the previous round? */
14330  SCIP_Bool* delayed, /**< pointer to store whether a separator was delayed */
14331  SCIP_Bool* cutoff /**< pointer to store whether the node can be cut off */
14332  );
14333 
14334 /** gets the array of cuts currently stored in the separation storage
14335  *
14336  * @return the array of cuts currently stored in the separation storage
14337  *
14338  * @pre This method can be called if @p scip is in one of the following stages:
14339  * - \ref SCIP_STAGE_PRESOLVED
14340  * - \ref SCIP_STAGE_SOLVING
14341  * - \ref SCIP_STAGE_SOLVED
14342  */
14343 extern
14345  SCIP* scip /**< SCIP data structure */
14346  );
14347 
14348 /** get current number of cuts in the separation storage
14349  *
14350  * @return the current number of cuts in the separation storage
14351  *
14352  * @pre This method can be called if @p scip is in one of the following stages:
14353  * - \ref SCIP_STAGE_PRESOLVED
14354  * - \ref SCIP_STAGE_SOLVING
14355  * - \ref SCIP_STAGE_SOLVED
14356  */
14357 extern
14358 int SCIPgetNCuts(
14359  SCIP* scip /**< SCIP data structure */
14360  );
14361 
14362 /** clears the separation storage
14363  *
14364  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14365  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14366  *
14367  * @pre This method can be called if @p scip is in one of the following stages:
14368  * - \ref SCIP_STAGE_SOLVING
14369  */
14370 extern
14372  SCIP* scip /**< SCIP data structure */
14373  );
14374 
14375 /** removes cuts that are inefficacious w.r.t. the current LP solution from separation storage without adding the cuts to the LP
14376  *
14377  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14378  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14379  *
14380  * @pre This method can be called if @p scip is in one of the following stages:
14381  * - \ref SCIP_STAGE_SOLVING
14382  */
14383 extern
14385  SCIP* scip /**< SCIP data structure */
14386  );
14387 
14388 /** returns current factor on cut infeasibility to limit feasibility tolerance for relaxation solver
14389  *
14390  * Gives value of separating/feastolfac parameter.
14391  *
14392  * @return factor on cut infeasibility to limit feasibility tolerance for relaxation solver
14393  *
14394  * @pre This method can be called if @p scip is in one of the following stages:
14395  * - \ref SCIP_STAGE_SOLVING
14396  */
14397 extern
14399  SCIP* scip /**< SCIP data structure */
14400  );
14401 
14402 /**@} */
14403 
14404 
14405 
14406 
14407 /*
14408  * LP diving methods
14409  */
14410 
14411 /**@name LP Diving Methods */
14412 /**@{ */
14413 
14414 /** initiates LP diving, making methods SCIPchgVarObjDive(), SCIPchgVarLbDive(), and SCIPchgVarUbDive() available
14415  *
14416  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14417  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14418  *
14419  * @pre This method can be called if @p scip is in one of the following stages:
14420  * - \ref SCIP_STAGE_SOLVING
14421  *
14422  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14423  *
14424  * @note diving is allowed even if the current LP is not flushed, not solved, or not solved to optimality; be aware
14425  * that solving the (first) diving LP may take longer than expect and that the latter two cases could stem from
14426  * numerical troubles during the last LP solve; because of this, most users will want to call this method only if
14427  * SCIPgetLPSolstat(scip) == SCIP_LPSOLSTAT_OPTIMAL
14428  */
14429 extern
14431  SCIP* scip /**< SCIP data structure */
14432  );
14433 
14434 /** quits LP diving and resets bounds and objective values of columns to the current node's values
14435  *
14436  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14437  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14438  *
14439  * @pre This method can be called if @p scip is in one of the following stages:
14440  * - \ref SCIP_STAGE_SOLVING
14441  *
14442  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14443  */
14444 extern
14446  SCIP* scip /**< SCIP data structure */
14447  );
14448 
14449 /** changes cutoffbound in current dive
14450  *
14451  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14452  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14453  *
14454  * @pre This method can be called if @p scip is in one of the following stages:
14455  * - \ref SCIP_STAGE_SOLVING
14456  *
14457  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14458  */
14459 extern
14461  SCIP* scip, /**< SCIP data structure */
14462  SCIP_Real newcutoffbound /**< new cutoffbound */
14463  );
14464 
14465 /** changes variable's objective value in current dive
14466  *
14467  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14468  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14469  *
14470  * @pre This method can be called if @p scip is in one of the following stages:
14471  * - \ref SCIP_STAGE_SOLVING
14472  *
14473  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14474  */
14475 extern
14477  SCIP* scip, /**< SCIP data structure */
14478  SCIP_VAR* var, /**< variable to change the objective value for */
14479  SCIP_Real newobj /**< new objective value */
14480  );
14481 
14482 /** changes variable's lower bound in current dive
14483  *
14484  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14485  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14486  *
14487  * @pre This method can be called if @p scip is in one of the following stages:
14488  * - \ref SCIP_STAGE_SOLVING
14489  *
14490  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14491  */
14492 extern
14494  SCIP* scip, /**< SCIP data structure */
14495  SCIP_VAR* var, /**< variable to change the bound for */
14496  SCIP_Real newbound /**< new value for bound */
14497  );
14498 
14499 /** changes variable's upper bound in current dive
14500  *
14501  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14502  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14503  *
14504  * @pre This method can be called if @p scip is in one of the following stages:
14505  * - \ref SCIP_STAGE_SOLVING
14506  *
14507  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14508  */
14509 extern
14511  SCIP* scip, /**< SCIP data structure */
14512  SCIP_VAR* var, /**< variable to change the bound for */
14513  SCIP_Real newbound /**< new value for bound */
14514  );
14515 
14516 /** adds a row to the LP in current dive
14517  *
14518  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14519  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14520  *
14521  * @pre This method can be called if @p scip is in one of the following stages:
14522  * - \ref SCIP_STAGE_SOLVING
14523  *
14524  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14525  */
14526 extern
14528  SCIP* scip, /**< SCIP data structure */
14529  SCIP_ROW* row /**< row to be added */
14530  );
14531 
14532 /** changes row lhs in current dive, change will be undone after diving ends, for permanent changes use SCIPchgRowLhs()
14533  *
14534  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14535  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14536  *
14537  * @pre This method can be called if @p scip is in one of the following stages:
14538  * - \ref SCIP_STAGE_SOLVING
14539  *
14540  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14541  */
14542 extern
14544  SCIP* scip, /**< SCIP data structure */
14545  SCIP_ROW* row, /**< row to change the lhs for */
14546  SCIP_Real newlhs /**< new value for lhs */
14547  );
14548 
14549 /** changes row rhs in current dive, change will be undone after diving ends, for permanent changes use SCIPchgRowRhs()
14550  *
14551  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14552  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14553  *
14554  * @pre This method can be called if @p scip is in one of the following stages:
14555  * - \ref SCIP_STAGE_SOLVING
14556  *
14557  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14558  */
14559 extern
14561  SCIP* scip, /**< SCIP data structure */
14562  SCIP_ROW* row, /**< row to change the lhs for */
14563  SCIP_Real newrhs /**< new value for rhs */
14564  );
14565 
14566 /** gets variable's objective value in current dive
14567  *
14568  * @return the variable's objective value in current dive.
14569  *
14570  * @pre This method can be called if @p scip is in one of the following stages:
14571  * - \ref SCIP_STAGE_SOLVING
14572  *
14573  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14574  */
14575 extern
14577  SCIP* scip, /**< SCIP data structure */
14578  SCIP_VAR* var /**< variable to get the bound for */
14579  );
14580 
14581 /** gets variable's lower bound in current dive
14582  *
14583  * @return the variable's lower bound in current dive.
14584  *
14585  * @pre This method can be called if @p scip is in one of the following stages:
14586  * - \ref SCIP_STAGE_SOLVING
14587  *
14588  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14589  */
14590 extern
14592  SCIP* scip, /**< SCIP data structure */
14593  SCIP_VAR* var /**< variable to get the bound for */
14594  );
14595 
14596 /** gets variable's upper bound in current dive
14597  *
14598  * @return the variable's upper bound in current dive.
14599  *
14600  * @pre This method can be called if @p scip is in one of the following stages:
14601  * - \ref SCIP_STAGE_SOLVING
14602  *
14603  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14604  */
14605 extern
14607  SCIP* scip, /**< SCIP data structure */
14608  SCIP_VAR* var /**< variable to get the bound for */
14609  );
14610 /** solves the LP of the current dive; no separation or pricing is applied
14611  *
14612  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14613  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14614  *
14615  * @pre This method can be called if @p scip is in one of the following stages:
14616  * - \ref SCIP_STAGE_SOLVING
14617  *
14618  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14619  *
14620  * @note be aware that the LP solve may take longer than expected if SCIPgetLPSolstat(scip) != SCIP_LPSOLSTAT_OPTIMAL,
14621  * compare the explanation of SCIPstartDive()
14622  */
14623 extern
14625  SCIP* scip, /**< SCIP data structure */
14626  int itlim, /**< maximal number of LP iterations to perform, or -1 for no limit */
14627  SCIP_Bool* lperror, /**< pointer to store whether an unresolved LP error occurred */
14628  SCIP_Bool* cutoff /**< pointer to store whether the diving LP was infeasible or the objective
14629  * limit was reached (or NULL, if not needed) */
14630  );
14631 
14632 /** returns the number of the node in the current branch and bound run, where the last LP was solved in diving
14633  * or probing mode
14634  *
14635  * @return the number of the node in the current branch and bound run, where the last LP was solved in diving
14636  * or probing mode.
14637  *
14638  * @pre This method can be called if @p scip is in one of the following stages:
14639  * - \ref SCIP_STAGE_TRANSFORMING
14640  * - \ref SCIP_STAGE_TRANSFORMED
14641  * - \ref SCIP_STAGE_INITPRESOLVE
14642  * - \ref SCIP_STAGE_PRESOLVING
14643  * - \ref SCIP_STAGE_EXITPRESOLVE
14644  * - \ref SCIP_STAGE_PRESOLVED
14645  * - \ref SCIP_STAGE_INITSOLVE
14646  * - \ref SCIP_STAGE_SOLVING
14647  * - \ref SCIP_STAGE_SOLVED
14648  * - \ref SCIP_STAGE_EXITSOLVE
14649  * - \ref SCIP_STAGE_FREETRANS
14650  *
14651  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14652  */
14653 extern
14655  SCIP* scip /**< SCIP data structure */
14656  );
14657 
14658 /** returns whether we are in diving mode
14659  *
14660  * @return whether we are in diving mode.
14661  *
14662  * @pre This method can be called if @p scip is in one of the following stages:
14663  * - \ref SCIP_STAGE_TRANSFORMING
14664  * - \ref SCIP_STAGE_TRANSFORMED
14665  * - \ref SCIP_STAGE_INITPRESOLVE
14666  * - \ref SCIP_STAGE_PRESOLVING
14667  * - \ref SCIP_STAGE_EXITPRESOLVE
14668  * - \ref SCIP_STAGE_PRESOLVED
14669  * - \ref SCIP_STAGE_INITSOLVE
14670  * - \ref SCIP_STAGE_SOLVING
14671  * - \ref SCIP_STAGE_SOLVED
14672  * - \ref SCIP_STAGE_EXITSOLVE
14673  * - \ref SCIP_STAGE_FREETRANS
14674  *
14675  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14676  */
14677 extern
14679  SCIP* scip /**< SCIP data structure */
14680  );
14681 
14682 /**@} */
14683 
14684 
14685 
14686 
14687 /*
14688  * probing methods
14689  */
14690 
14691 /**@name Probing Methods */
14692 /**@{ */
14693 
14694 /** returns whether we are in probing mode; probing mode is activated via SCIPstartProbing() and stopped
14695  * via SCIPendProbing()
14696  *
14697  * @return TRUE, if SCIP is currently in probing mode, otherwise FALSE
14698  *
14699  * @pre This method can be called if @p scip is in one of the following stages:
14700  * - \ref SCIP_STAGE_TRANSFORMED
14701  * - \ref SCIP_STAGE_INITPRESOLVE
14702  * - \ref SCIP_STAGE_PRESOLVING
14703  * - \ref SCIP_STAGE_EXITPRESOLVE
14704  * - \ref SCIP_STAGE_PRESOLVED
14705  * - \ref SCIP_STAGE_INITSOLVE
14706  * - \ref SCIP_STAGE_SOLVING
14707  * - \ref SCIP_STAGE_SOLVED
14708  * - \ref SCIP_STAGE_EXITSOLVE
14709  */
14710 extern
14712  SCIP* scip /**< SCIP data structure */
14713  );
14714 
14715 /** initiates probing, making methods SCIPnewProbingNode(), SCIPbacktrackProbing(), SCIPchgVarLbProbing(),
14716  * SCIPchgVarUbProbing(), SCIPfixVarProbing(), SCIPpropagateProbing(), and SCIPsolveProbingLP() available
14717  *
14718  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14719  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14720  *
14721  * @pre This method can be called if @p scip is in one of the following stages:
14722  * - \ref SCIP_STAGE_PRESOLVING
14723  * - \ref SCIP_STAGE_SOLVING
14724  *
14725  * @note The collection of variable statistics is turned off during probing. If these statistics should be collected
14726  * during probing use the method SCIPenableVarHistory() to turn the collection explicitly on.
14727  */
14728 extern
14730  SCIP* scip /**< SCIP data structure */
14731  );
14732 
14733 /** creates a new probing sub node, whose changes can be undone by backtracking to a higher node in the probing path
14734  * with a call to SCIPbacktrackProbing();
14735  * using a sub node for each set of probing bound changes can improve conflict analysis
14736  *
14737  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14738  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14739  *
14740  * @pre This method can be called if @p scip is in one of the following stages:
14741  * - \ref SCIP_STAGE_PRESOLVING
14742  * - \ref SCIP_STAGE_SOLVING
14743  */
14744 extern
14746  SCIP* scip /**< SCIP data structure */
14747  );
14748 
14749 /** returns the current probing depth
14750  *
14751  * @return the probing depth, i.e. the number of probing sub nodes existing in the probing path
14752  *
14753  * @pre This method can be called if @p scip is in one of the following stages:
14754  * - \ref SCIP_STAGE_PRESOLVING
14755  * - \ref SCIP_STAGE_SOLVING
14756  */
14757 extern
14759  SCIP* scip /**< SCIP data structure */
14760  );
14761 
14762 /** undoes all changes to the problem applied in probing up to the given probing depth;
14763  * the changes of the probing node of the given probing depth are the last ones that remain active;
14764  * changes that were applied before calling SCIPnewProbingNode() cannot be undone
14765  *
14766  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14767  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14768  *
14769  * @pre This method can be called if @p scip is in one of the following stages:
14770  * - \ref SCIP_STAGE_PRESOLVING
14771  * - \ref SCIP_STAGE_SOLVING
14772  */
14773 extern
14775  SCIP* scip, /**< SCIP data structure */
14776  int probingdepth /**< probing depth of the node in the probing path that should be reactivated */
14777  );
14778 
14779 /** quits probing and resets bounds and constraints to the focus node's environment
14780  *
14781  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14782  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14783  *
14784  * @pre This method can be called if @p scip is in one of the following stages:
14785  * - \ref SCIP_STAGE_PRESOLVING
14786  * - \ref SCIP_STAGE_SOLVING
14787  */
14788 extern
14790  SCIP* scip /**< SCIP data structure */
14791  );
14792 
14793 /** injects a change of variable's lower bound into current probing node; the same can also be achieved with a call to
14794  * SCIPchgVarLb(), but in this case, the bound change would be treated like a deduction instead of a branching decision
14795  *
14796  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14797  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14798  *
14799  * @pre This method can be called if @p scip is in one of the following stages:
14800  * - \ref SCIP_STAGE_PRESOLVING
14801  * - \ref SCIP_STAGE_SOLVING
14802  */
14803 extern
14805  SCIP* scip, /**< SCIP data structure */
14806  SCIP_VAR* var, /**< variable to change the bound for */
14807  SCIP_Real newbound /**< new value for bound */
14808  );
14809 
14810 /** injects a change of variable's upper bound into current probing node; the same can also be achieved with a call to
14811  * SCIPchgVarUb(), but in this case, the bound change would be treated like a deduction instead of a branching decision
14812  *
14813  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14814  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14815  *
14816  * @pre This method can be called if @p scip is in one of the following stages:
14817  * - \ref SCIP_STAGE_PRESOLVING
14818  * - \ref SCIP_STAGE_SOLVING
14819  */
14820 extern
14822  SCIP* scip, /**< SCIP data structure */
14823  SCIP_VAR* var, /**< variable to change the bound for */
14824  SCIP_Real newbound /**< new value for bound */
14825  );
14826 
14827 /** gets variable's objective value in current probing
14828  *
14829  * @return the variable's objective value in current probing.
14830  *
14831  * @pre This method can be called if @p scip is in one of the following stages:
14832  * - \ref SCIP_STAGE_SOLVING
14833  *
14834  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14835  */
14836 extern
14838  SCIP* scip, /**< SCIP data structure */
14839  SCIP_VAR* var /**< variable to get the bound for */
14840  );
14841 
14842 /** injects a change of variable's bounds into current probing node to fix the variable to the specified value;
14843  * the same can also be achieved with a call to SCIPfixVar(), but in this case, the bound changes would be treated
14844  * like deductions instead of branching decisions
14845  *
14846  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14847  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14848  *
14849  * @pre This method can be called if @p scip is in one of the following stages:
14850  * - \ref SCIP_STAGE_PRESOLVING
14851  * - \ref SCIP_STAGE_SOLVING
14852  */
14853 extern
14855  SCIP* scip, /**< SCIP data structure */
14856  SCIP_VAR* var, /**< variable to change the bound for */
14857  SCIP_Real fixedval /**< value to fix variable to */
14858  );
14859 
14860 /** changes (column) variable's objective value during probing mode
14861  *
14862  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14863  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14864  *
14865  * @pre This method can be called if @p scip is in one of the following stages:
14866  * - \ref SCIP_STAGE_PRESOLVING
14867  * - \ref SCIP_STAGE_SOLVING
14868  *
14869  * @pre The variable needs to be a column variable.
14870  */
14871 extern
14873  SCIP* scip, /**< SCIP data structure */
14874  SCIP_VAR* var, /**< variable to change the objective for */
14875  SCIP_Real newobj /**< new objective function value */
14876  );
14877 
14878 /** applies domain propagation on the probing sub problem, that was changed after SCIPstartProbing() was called;
14879  * the propagated domains of the variables can be accessed with the usual bound accessing calls SCIPvarGetLbLocal()
14880  * and SCIPvarGetUbLocal(); the propagation is only valid locally, i.e. the local bounds as well as the changed
14881  * bounds due to SCIPchgVarLbProbing(), SCIPchgVarUbProbing(), and SCIPfixVarProbing() are used for propagation
14882  *
14883  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14884  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14885  *
14886  * @pre This method can be called if @p scip is in one of the following stages:
14887  * - \ref SCIP_STAGE_PRESOLVING
14888  * - \ref SCIP_STAGE_SOLVING
14889  */
14890 extern
14892  SCIP* scip, /**< SCIP data structure */
14893  int maxproprounds, /**< maximal number of propagation rounds (-1: no limit, 0: parameter settings) */
14894  SCIP_Bool* cutoff, /**< pointer to store whether the probing node can be cut off */
14895  SCIP_Longint* ndomredsfound /**< pointer to store the number of domain reductions found, or NULL */
14896  );
14897 
14898 /** applies domain propagation on the probing sub problem, that was changed after SCIPstartProbing() was called;
14899  * only propagations of the binary variables fixed at the current probing node that are triggered by the implication
14900  * graph and the clique table are applied;
14901  * the propagated domains of the variables can be accessed with the usual bound accessing calls SCIPvarGetLbLocal()
14902  * and SCIPvarGetUbLocal(); the propagation is only valid locally, i.e. the local bounds as well as the changed
14903  * bounds due to SCIPchgVarLbProbing(), SCIPchgVarUbProbing(), and SCIPfixVarProbing() are used for propagation
14904  *
14905  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14906  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14907  *
14908  * @pre This method can be called if @p scip is in one of the following stages:
14909  * - \ref SCIP_STAGE_PRESOLVING
14910  * - \ref SCIP_STAGE_SOLVING
14911  */
14912 extern
14914  SCIP* scip, /**< SCIP data structure */
14915  SCIP_Bool* cutoff /**< pointer to store whether the probing node can be cut off */
14916  );
14917 
14918 /** solves the LP at the current probing node (cannot be applied at preprocessing stage);
14919  * no separation or pricing is applied
14920  *
14921  * The LP has to be constructed before (you can use SCIPisLPConstructed() or SCIPconstructLP()).
14922  *
14923  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14924  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14925  *
14926  * @pre This method can be called if @p scip is in one of the following stages:
14927  * - \ref SCIP_STAGE_SOLVING
14928  */
14929 extern
14931  SCIP* scip, /**< SCIP data structure */
14932  int itlim, /**< maximal number of LP iterations to perform, or -1 for no limit */
14933  SCIP_Bool* lperror, /**< pointer to store whether an unresolved LP error occurred */
14934  SCIP_Bool* cutoff /**< pointer to store whether the probing LP was infeasible or the objective
14935  * limit was reached (or NULL, if not needed) */
14936  );
14937 
14938 /** solves the LP at the current probing node (cannot be applied at preprocessing stage) and applies pricing
14939  * until the LP is solved to optimality; no separation is applied
14940  *
14941  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed . See \ref
14942  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14943  *
14944  * @pre This method can be called if @p scip is in one of the following stages:
14945  * - \ref SCIP_STAGE_SOLVING
14946  */
14947 extern
14949  SCIP* scip, /**< SCIP data structure */
14950  SCIP_Bool pretendroot, /**< should the pricers be called as if we are at the root node? */
14951  SCIP_Bool displayinfo, /**< should info lines be displayed after each pricing round? */
14952  int maxpricerounds, /**< maximal number of pricing rounds (-1: no limit);
14953  * a finite limit means that the LP might not be solved to optimality! */
14954  SCIP_Bool* lperror, /**< pointer to store whether an unresolved LP error occurred */
14955  SCIP_Bool* cutoff /**< pointer to store whether the probing LP was infeasible or the objective
14956  * limit was reached (or NULL, if not needed) */
14957 
14958  );
14959 
14960 /** adds a row to the LP in the current probing node
14961  *
14962  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14963  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14964  *
14965  * @pre This method can be called if @p scip is in one of the following stages:
14966  * - \ref SCIP_STAGE_SOLVING
14967  *
14968  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14969  */
14970 extern
14972  SCIP* scip, /**< SCIP data structure */
14973  SCIP_ROW* row /**< row to be added */
14974  );
14975 
14976 /** applies the cuts in the separation storage to the LP and clears the storage afterwards;
14977  * this method can only be applied during probing; the user should resolve the probing LP afterwards
14978  * in order to get a new solution
14979  *
14980  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14981  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14982  *
14983  * @pre This method can be called if @p scip is in one of the following stages:
14984  * - \ref SCIP_STAGE_SOLVING
14985  */
14986 extern
14988  SCIP* scip, /**< SCIP data structure */
14989  SCIP_Bool* cutoff /**< pointer to store whether an empty domain was created */
14990  );
14991 
14992 /** stores the candidate score and preferred rounding direction for a candidate variable */
14993 extern
14995  SCIP* scip, /**< SCIP data structure */
14996  SCIP_DIVESET* diveset, /**< general diving settings */
14997  SCIP_DIVETYPE divetype, /**< represents different methods for a dive set to explore the next children */
14998  SCIP_VAR* divecand, /**< the candidate for which the branching direction is requested */
14999  SCIP_Real divecandsol, /**< LP solution value of the candidate */
15000  SCIP_Real divecandfrac, /**< fractionality of the candidate */
15001  SCIP_Real* candscore, /**< pointer to store the candidate score */
15002  SCIP_Bool* roundup /**< pointer to store whether preferred direction for diving is upwards */
15003  );
15004 
15005 /** update diveset LP statistics, should be called after every LP solved by this diving heuristic */
15006 extern
15008  SCIP* scip, /**< SCIP data structure */
15009  SCIP_DIVESET* diveset, /**< diving settings */
15010  SCIP_Longint niterstoadd /**< additional number of LP iterations to be added */
15011  );
15012 
15013 /** update diveset statistics and global diveset statistics */
15014 extern
15016  SCIP* scip, /**< SCIP data structure */
15017  SCIP_DIVESET* diveset, /**< diveset to be reset */
15018  int nprobingnodes, /**< the number of probing nodes explored this time */
15019  int nbacktracks, /**< the number of backtracks during probing this time */
15020  SCIP_Longint nsolsfound, /**< the number of solutions found */
15021  SCIP_Longint nbestsolsfound, /**< the number of best solutions found */
15022  SCIP_Bool leavewassol /**< was a solution found at the leaf? */
15023  );
15024 
15025 /** enforces a probing/diving solution by suggesting bound changes that maximize the score w.r.t. the current diving settings
15026  *
15027  * the process is guided by the enforcement priorities of the constraint handlers and the scoring mechanism provided by
15028  * the dive set.
15029  * Constraint handlers may suggest diving bound changes in decreasing order of their enforcement priority, based on the
15030  * solution values in the solution @p sol and the current local bounds of the variables. A diving bound change
15031  * is a triple (variable,branching direction,value) and is used inside SCIPperformGenericDivingAlgorithm().
15032  *
15033  * After a successful call, SCIP holds two arrays of suggested dive bound changes, one for the preferred child
15034  * and one for the alternative.
15035  *
15036  * @see SCIPgetDiveBoundChangeData() for retrieving the dive bound change suggestions.
15037  *
15038  * The method stops after the first constraint handler was successful
15039  *
15040  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15041  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15042  *
15043  * @pre This method can be called if @p scip is in one of the following stages:
15044  * - \ref SCIP_STAGE_SOLVING
15045  *
15046  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15047  */
15048 extern
15050  SCIP* scip, /**< SCIP data structure */
15051  SCIP_DIVESET* diveset, /**< diving settings to control scoring */
15052  SCIP_SOL* sol, /**< current solution of diving mode */
15053  SCIP_Bool* success, /**< pointer to store whether constraint handler successfully found a variable */
15054  SCIP_Bool* infeasible /**< pointer to store whether the current node was detected to be infeasible */
15055  );
15056 
15057 /** adds a diving bound change to the diving bound change storage of SCIP together with the information if this is a
15058  * bound change for the preferred direction or not
15059  *
15060  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15061  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15062  *
15063  * @pre This method can be called if @p scip is in one of the following stages:
15064  * - \ref SCIP_STAGE_SOLVING
15065  *
15066  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15067  */
15068 extern
15070  SCIP* scip, /**< SCIP data structure */
15071  SCIP_VAR* var, /**< variable to apply the bound change to */
15072  SCIP_BRANCHDIR dir, /**< direction of the bound change */
15073  SCIP_Real value, /**< value to adjust this variable bound to */
15074  SCIP_Bool preferred /**< is this a bound change for the preferred child? */
15075  );
15076 
15077 /** get the dive bound change data for the preferred or the alternative direction
15078  *
15079  * @pre This method can be called if @p scip is in one of the following stages:
15080  * - \ref SCIP_STAGE_SOLVING
15081  *
15082  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15083  */
15084 extern
15086  SCIP* scip, /**< SCIP data structure */
15087  SCIP_VAR*** variables, /**< pointer to store variables for the specified direction */
15088  SCIP_BRANCHDIR** directions, /**< pointer to store the branching directions */
15089  SCIP_Real** values, /**< pointer to store bound change values */
15090  int* ndivebdchgs, /**< pointer to store the number of dive bound changes */
15091  SCIP_Bool preferred /**< should the dive bound changes for the preferred child be output? */
15092  );
15093 
15094 /** clear the dive bound change data structures
15095  *
15096  * @pre This method can be called if @p scip is in one of the following stages:
15097  * - \ref SCIP_STAGE_SOLVING
15098  *
15099  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15100  */
15101 extern
15103  SCIP* scip /**< SCIP data structure */
15104  );
15105 
15106 /**@} */
15107 
15108 /*
15109  * branching methods
15110  */
15111 
15112 /**@name Branching Methods */
15113 /**@{ */
15114 
15115 /** gets branching candidates for LP solution branching (fractional variables) along with solution values,
15116  * fractionalities, and number of branching candidates; The number of branching candidates does NOT
15117  * account for fractional implicit integer variables which should not be used for branching decisions.
15118  *
15119  * Fractional implicit integer variables are stored at the positions *nlpcands to *nlpcands + *nfracimplvars - 1
15120  *
15121  * branching rules should always select the branching candidate among the first npriolpcands of the candidate
15122  * list
15123  *
15124  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15125  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15126  *
15127  * @pre This method can be called if @p scip is in one of the following stages:
15128  * - \ref SCIP_STAGE_SOLVING
15129  *
15130  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15131  */
15132 extern
15134  SCIP* scip, /**< SCIP data structure */
15135  SCIP_VAR*** lpcands, /**< pointer to store the array of LP branching candidates, or NULL */
15136  SCIP_Real** lpcandssol, /**< pointer to store the array of LP candidate solution values, or NULL */
15137  SCIP_Real** lpcandsfrac, /**< pointer to store the array of LP candidate fractionalities, or NULL */
15138  int* nlpcands, /**< pointer to store the number of LP branching candidates, or NULL */
15139  int* npriolpcands, /**< pointer to store the number of candidates with maximal priority, or NULL */
15140  int* nfracimplvars /**< pointer to store the number of fractional implicit integer variables, or NULL */
15141  );
15142 
15143 /** gets number of branching candidates for LP solution branching (number of fractional variables)
15144  *
15145  * @return the number of branching candidates for LP solution branching (number of fractional variables).
15146  *
15147  * @pre This method can be called if @p scip is in one of the following stages:
15148  * - \ref SCIP_STAGE_SOLVING
15149  *
15150  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15151  */
15152 extern
15154  SCIP* scip /**< SCIP data structure */
15155  );
15156 
15157 /** gets number of branching candidates with maximal priority for LP solution branching
15158  *
15159  * @return the number of branching candidates with maximal priority for LP solution branching.
15160  *
15161  * @pre This method can be called if @p scip is in one of the following stages:
15162  * - \ref SCIP_STAGE_SOLVING
15163  *
15164  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15165  */
15166 extern
15168  SCIP* scip /**< SCIP data structure */
15169  );
15170 
15171 /** gets external branching candidates along with solution values, scores, and number of branching candidates;
15172  * these branching candidates can be used by relaxations or nonlinear constraint handlers
15173  * branching rules should always select the branching candidate among the first nprioexterncands of the candidate
15174  * list
15175  *
15176  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15177  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15178  *
15179  * @pre This method can be called if @p scip is in one of the following stages:
15180  * - \ref SCIP_STAGE_SOLVING
15181  *
15182  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15183  *
15184  * @note Candidate variables with maximal priority are ordered: binaries first, then integers, implicit integers and
15185  * continuous last.
15186  */
15187 extern
15189  SCIP* scip, /**< SCIP data structure */
15190  SCIP_VAR*** externcands, /**< pointer to store the array of extern branching candidates, or NULL */
15191  SCIP_Real** externcandssol, /**< pointer to store the array of extern candidate solution values, or NULL */
15192  SCIP_Real** externcandsscore, /**< pointer to store the array of extern candidate scores, or NULL */
15193  int* nexterncands, /**< pointer to store the number of extern branching candidates, or NULL */
15194  int* nprioexterncands, /**< pointer to store the number of candidates with maximal priority, or NULL */
15195  int* nprioexternbins, /**< pointer to store the number of binary candidates with maximal priority, or NULL */
15196  int* nprioexternints, /**< pointer to store the number of integer candidates with maximal priority, or NULL */
15197  int* nprioexternimpls /**< pointer to store the number of implicit integer candidates with maximal priority,
15198  * or NULL */
15199  );
15200 
15201 /** gets number of external branching candidates
15202  *
15203  * @return the number of external branching candidates.
15204  *
15205  * @pre This method can be called if @p scip is in one of the following stages:
15206  * - \ref SCIP_STAGE_SOLVING
15207  *
15208  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15209  */
15210 extern
15212  SCIP* scip /**< SCIP data structure */
15213  );
15214 
15215 /** gets number of external branching candidates with maximal branch priority
15216  *
15217  * @return the number of external branching candidates with maximal branch priority.
15218  *
15219  * @pre This method can be called if @p scip is in one of the following stages:
15220  * - \ref SCIP_STAGE_SOLVING
15221  *
15222  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15223  */
15224 extern
15226  SCIP* scip /**< SCIP data structure */
15227  );
15228 
15229 /** gets number of binary external branching candidates with maximal branch priority
15230  *
15231  * @return the number of binary external branching candidates with maximal branch priority.
15232  *
15233  * @pre This method can be called if @p scip is in one of the following stages:
15234  * - \ref SCIP_STAGE_SOLVING
15235  *
15236  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15237  */
15238 extern
15240  SCIP* scip /**< SCIP data structure */
15241  );
15242 
15243 /** gets number of integer external branching candidates with maximal branch priority
15244  *
15245  * @return the number of integer external branching candidates with maximal branch priority.
15246  *
15247  * @pre This method can be called if @p scip is in one of the following stages:
15248  * - \ref SCIP_STAGE_SOLVING
15249  *
15250  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15251  */
15252 extern
15254  SCIP* scip /**< SCIP data structure */
15255  );
15256 
15257 /** gets number of implicit integer external branching candidates with maximal branch priority
15258  *
15259  * @return the number of implicit integer external branching candidates with maximal branch priority.
15260  *
15261  * @pre This method can be called if @p scip is in one of the following stages:
15262  * - \ref SCIP_STAGE_SOLVING
15263  *
15264  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15265  */
15266 extern
15268  SCIP* scip /**< SCIP data structure */
15269  );
15270 
15271 /** gets number of continuous external branching candidates with maximal branch priority
15272  *
15273  * @return the number of continuous external branching candidates with maximal branch priority.
15274  *
15275  * @pre This method can be called if @p scip is in one of the following stages:
15276  * - \ref SCIP_STAGE_SOLVING
15277  *
15278  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15279  */
15280 extern
15282  SCIP* scip /**< SCIP data structure */
15283  );
15284 
15285 /** insert variable, its score and its solution value into the external branching candidate storage
15286  * the relative difference of the current lower and upper bounds of a continuous variable must be at least epsilon
15287  *
15288  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15289  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15290  *
15291  * @pre This method can be called if @p scip is in one of the following stages:
15292  * - \ref SCIP_STAGE_SOLVING
15293  *
15294  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15295  */
15296 extern
15298  SCIP* scip, /**< SCIP data structure */
15299  SCIP_VAR* var, /**< variable to insert */
15300  SCIP_Real score, /**< score of external candidate, e.g. infeasibility */
15301  SCIP_Real solval /**< value of the variable in the current solution */
15302  );
15303 
15304 /** removes all external candidates from the storage for external branching
15305  *
15306  * @pre This method can be called if @p scip is in one of the following stages:
15307  * - \ref SCIP_STAGE_SOLVING
15308  *
15309  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15310  */
15311 extern
15313  SCIP* scip /**< SCIP data structure */
15314  );
15315 
15316 /** checks whether the given variable is contained in the candidate storage for external branching
15317  *
15318  * @return whether the given variable is contained in the candidate storage for external branching.
15319  *
15320  * @pre This method can be called if @p scip is in one of the following stages:
15321  * - \ref SCIP_STAGE_SOLVING
15322  *
15323  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15324  */
15325 extern
15327  SCIP* scip, /**< SCIP data structure */
15328  SCIP_VAR* var /**< variable to look for */
15329  );
15330 
15331 /** gets branching candidates for pseudo solution branching (non-fixed variables) along with the number of candidates
15332  *
15333  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15334  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15335  *
15336  * @pre This method can be called if @p scip is in one of the following stages:
15337  * - \ref SCIP_STAGE_PRESOLVING
15338  * - \ref SCIP_STAGE_SOLVING
15339  *
15340  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15341  */
15342 extern
15344  SCIP* scip, /**< SCIP data structure */
15345  SCIP_VAR*** pseudocands, /**< pointer to store the array of pseudo branching candidates, or NULL */
15346  int* npseudocands, /**< pointer to store the number of pseudo branching candidates, or NULL */
15347  int* npriopseudocands /**< pointer to store the number of candidates with maximal priority, or NULL */
15348  );
15349 
15350 /** gets number of branching candidates for pseudo solution branching (non-fixed variables)
15351  *
15352  * @return the number branching candidates for pseudo solution branching (non-fixed variables).
15353  *
15354  * @pre This method can be called if @p scip is in one of the following stages:
15355  * - \ref SCIP_STAGE_PRESOLVING
15356  * - \ref SCIP_STAGE_SOLVING
15357  *
15358  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15359  */
15360 extern
15362  SCIP* scip /**< SCIP data structure */
15363  );
15364 
15365 /** gets number of branching candidates with maximal branch priority for pseudo solution branching
15366  *
15367  * @return the number of branching candidates with maximal branch priority for pseudo solution branching.
15368  *
15369  * @pre This method can be called if @p scip is in one of the following stages:
15370  * - \ref SCIP_STAGE_PRESOLVING
15371  * - \ref SCIP_STAGE_SOLVING
15372  *
15373  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15374  */
15375 extern
15377  SCIP* scip /**< SCIP data structure */
15378  );
15379 
15380 /** gets number of binary branching candidates with maximal branch priority for pseudo solution branching
15381  *
15382  * @return the number of binary branching candidates with maximal branch priority for pseudo solution branching.
15383  *
15384  * @pre This method can be called if @p scip is in one of the following stages:
15385  * - \ref SCIP_STAGE_SOLVING
15386  *
15387  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15388  */
15389 extern
15391  SCIP* scip /**< SCIP data structure */
15392  );
15393 
15394 /** gets number of integer branching candidates with maximal branch priority for pseudo solution branching
15395  *
15396  * @return the number of integer branching candidates with maximal branch priority for pseudo solution branching.
15397  *
15398  * @pre This method can be called if @p scip is in one of the following stages:
15399  * - \ref SCIP_STAGE_SOLVING
15400  *
15401  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15402  */
15403 extern
15405  SCIP* scip /**< SCIP data structure */
15406  );
15407 
15408 /** gets number of implicit integer branching candidates with maximal branch priority for pseudo solution branching
15409  *
15410  * @return the number of implicit integer branching candidates with maximal branch priority for pseudo solution branching.
15411  *
15412  * @pre This method can be called if @p scip is in one of the following stages:
15413  * - \ref SCIP_STAGE_SOLVING
15414  *
15415  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15416  */
15417 extern
15419  SCIP* scip /**< SCIP data structure */
15420  );
15421 
15422 /** calculates the branching score out of the gain predictions for a binary branching
15423  *
15424  * @return the branching score out of the gain predictions for a binary branching.
15425  *
15426  * @pre This method can be called if @p scip is in one of the following stages:
15427  * - \ref SCIP_STAGE_SOLVING
15428  *
15429  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15430  */
15431 extern
15433  SCIP* scip, /**< SCIP data structure */
15434  SCIP_VAR* var, /**< variable, of which the branching factor should be applied, or NULL */
15435  SCIP_Real downgain, /**< prediction of objective gain for rounding downwards */
15436  SCIP_Real upgain /**< prediction of objective gain for rounding upwards */
15437  );
15438 
15439 /** calculates the branching score out of the gain predictions for a branching with arbitrary many children
15440  *
15441  * @return the branching score out of the gain predictions for a branching with arbitrary many children.
15442  *
15443  * @pre This method can be called if @p scip is in one of the following stages:
15444  * - \ref SCIP_STAGE_SOLVING
15445  *
15446  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15447  */
15448 extern
15450  SCIP* scip, /**< SCIP data structure */
15451  SCIP_VAR* var, /**< variable, of which the branching factor should be applied, or NULL */
15452  int nchildren, /**< number of children that the branching will create */
15453  SCIP_Real* gains /**< prediction of objective gain for each child */
15454  );
15455 
15456 /** computes a branching point for a continuous or discrete variable
15457  *
15458  * @see SCIPbranchGetBranchingPoint
15459  *
15460  * @return the branching point for a continuous or discrete variable.
15461  *
15462  * @pre This method can be called if @p scip is in one of the following stages:
15463  * - \ref SCIP_STAGE_SOLVING
15464  *
15465  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15466  */
15467 extern
15469  SCIP* scip, /**< SCIP data structure */
15470  SCIP_VAR* var, /**< variable, of which the branching point should be computed */
15471  SCIP_Real suggestion /**< suggestion for branching point, or SCIP_INVALID if no suggestion */
15472  );
15473 
15474 /** calculates the node selection priority for moving the given variable's LP value to the given target value;
15475  * this node selection priority can be given to the SCIPcreateChild() call
15476  *
15477  * @return the node selection priority for moving the given variable's LP value to the given target value.
15478  *
15479  * @pre This method can be called if @p scip is in one of the following stages:
15480  * - \ref SCIP_STAGE_SOLVING
15481  *
15482  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15483  */
15484 extern
15486  SCIP* scip, /**< SCIP data structure */
15487  SCIP_VAR* var, /**< variable on which the branching is applied */
15488  SCIP_BRANCHDIR branchdir, /**< type of branching that was performed: upwards, downwards, or fixed;
15489  * fixed should only be used, when both bounds changed
15490  */
15491  SCIP_Real targetvalue /**< new value of the variable in the child node */
15492  );
15493 
15494 /** calculates an estimate for the objective of the best feasible solution contained in the subtree after applying the given
15495  * branching; this estimate can be given to the SCIPcreateChild() call
15496  *
15497  * @return the estimate for the objective of the best feasible solution contained in the subtree after applying the given
15498  * branching.
15499  *
15500  * @pre This method can be called if @p scip is in one of the following stages:
15501  * - \ref SCIP_STAGE_SOLVING
15502  *
15503  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15504  */
15505 extern
15507  SCIP* scip, /**< SCIP data structure */
15508  SCIP_VAR* var, /**< variable on which the branching is applied */
15509  SCIP_Real targetvalue /**< new value of the variable in the child node */
15510  );
15511 
15512 /** creates a child node of the focus node
15513  *
15514  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15515  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15516  *
15517  * @pre This method can be called if @p scip is in one of the following stages:
15518  * - \ref SCIP_STAGE_SOLVING
15519  *
15520  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15521  */
15522 extern
15524  SCIP* scip, /**< SCIP data structure */
15525  SCIP_NODE** node, /**< pointer to node data structure */
15526  SCIP_Real nodeselprio, /**< node selection priority of new node */
15527  SCIP_Real estimate /**< estimate for (transformed) objective value of best feasible solution in subtree */
15528  );
15529 
15530 /** branches on a non-continuous variable v using the current LP or pseudo solution;
15531  * if solution value x' is fractional, two child nodes will be created
15532  * (x <= floor(x'), x >= ceil(x')),
15533  * if solution value is integral, the x' is equal to lower or upper bound of the branching
15534  * variable and the bounds of v are finite, then two child nodes will be created
15535  * (x <= x'', x >= x''+1 with x'' = floor((lb + ub)/2)),
15536  * otherwise (up to) three child nodes will be created
15537  * (x <= x'-1, x == x', x >= x'+1)
15538  *
15539  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15540  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15541  *
15542  * @pre This method can be called if @p scip is in one of the following stages:
15543  * - \ref SCIP_STAGE_SOLVING
15544  *
15545  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15546  */
15547 extern
15549  SCIP* scip, /**< SCIP data structure */
15550  SCIP_VAR* var, /**< variable to branch on */
15551  SCIP_NODE** downchild, /**< pointer to return the left child with variable rounded down, or NULL */
15552  SCIP_NODE** eqchild, /**< pointer to return the middle child with variable fixed, or NULL */
15553  SCIP_NODE** upchild /**< pointer to return the right child with variable rounded up, or NULL */
15554  );
15555 
15556 /** branches a variable x using a given domain hole; two child nodes (x <= left, x >= right) are created
15557  *
15558  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15559  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15560  *
15561  * @pre This method can be called if @p scip is in one of the following stages:
15562  * - \ref SCIP_STAGE_SOLVING
15563  *
15564  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15565  */
15566 extern
15568  SCIP* scip, /**< SCIP data structure */
15569  SCIP_VAR* var, /**< variable to branch on */
15570  SCIP_Real left, /**< left side of the domain hole */
15571  SCIP_Real right, /**< right side of the domain hole */
15572  SCIP_NODE** downchild, /**< pointer to return the left child (x <= left), or NULL */
15573  SCIP_NODE** upchild /**< pointer to return the right child (x >= right), or NULL */
15574  );
15575 
15576 /** branches on a variable x using a given value x';
15577  * for continuous variables with relative domain width larger epsilon, x' must not be one of the bounds;
15578  * two child nodes (x <= x', x >= x') are created;
15579  * for integer variables, if solution value x' is fractional, two child nodes are created
15580  * (x <= floor(x'), x >= ceil(x')),
15581  * if x' is integral, three child nodes are created
15582  * (x <= x'-1, x == x', x >= x'+1)
15583  *
15584  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15585  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15586  *
15587  * @pre This method can be called if @p scip is in one of the following stages:
15588  * - \ref SCIP_STAGE_SOLVING
15589  *
15590  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15591  */
15592 extern
15594  SCIP* scip, /**< SCIP data structure */
15595  SCIP_VAR* var, /**< variable to branch on */
15596  SCIP_Real val, /**< value to branch on */
15597  SCIP_NODE** downchild, /**< pointer to return the left child with variable rounded down, or NULL */
15598  SCIP_NODE** eqchild, /**< pointer to return the middle child with variable fixed, or NULL */
15599  SCIP_NODE** upchild /**< pointer to return the right child with variable rounded up, or NULL */
15600  );
15601 
15602 /** n-ary branching on a variable x using a given value
15603  *
15604  * Branches on variable x such that up to n/2 children are created on each side of the usual branching value.
15605  * The branching value is selected as in SCIPbranchVarVal().
15606  * The parameters minwidth and widthfactor determine the domain width of the branching variable in the child nodes.
15607  * If n is odd, one child with domain width 'width' and having the branching value in the middle is created.
15608  * Otherwise, two children with domain width 'width' and being left and right of the branching value are created.
15609  * Next further nodes to the left and right are created, where width is multiplied by widthfactor with increasing distance
15610  * from the first nodes.
15611  * The initial width is calculated such that n/2 nodes are created to the left and to the right of the branching value.
15612  * If this value is below minwidth, the initial width is set to minwidth, which may result in creating less than n nodes.
15613  *
15614  * Giving a large value for widthfactor results in creating children with small domain when close to the branching value
15615  * and large domain when closer to the current variable bounds. That is, setting widthfactor to a very large value and n to 3
15616  * results in a ternary branching where the branching variable is mostly fixed in the middle child.
15617  * Setting widthfactor to 1.0 results in children where the branching variable always has the same domain width
15618  * (except for one child if the branching value is not in the middle).
15619  *
15620  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15621  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15622  *
15623  * @pre This method can be called if @p scip is in one of the following stages:
15624  * - \ref SCIP_STAGE_SOLVING
15625  *
15626  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15627  */
15628 extern
15630  SCIP* scip, /**< SCIP data structure */
15631  SCIP_VAR* var, /**< variable to branch on */
15632  SCIP_Real val, /**< value to branch on */
15633  int n, /**< attempted number of children to be created, must be >= 2 */
15634  SCIP_Real minwidth, /**< minimal domain width in children */
15635  SCIP_Real widthfactor, /**< multiplier for children domain width with increasing distance from val, must be >= 1.0 */
15636  int* nchildren /**< pointer to store number of created children, or NULL */
15637  );
15638 
15639 /** calls branching rules to branch on an LP solution; if no fractional variables exist, the result is SCIP_DIDNOTRUN;
15640  * if the branch priority of an unfixed variable is larger than the maximal branch priority of the fractional
15641  * variables, pseudo solution branching is applied on the unfixed variables with maximal branch priority
15642  *
15643  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15644  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15645  *
15646  * @pre This method can be called if @p scip is in one of the following stages:
15647  * - \ref SCIP_STAGE_SOLVING
15648  *
15649  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15650  */
15651 extern
15653  SCIP* scip, /**< SCIP data structure */
15654  SCIP_RESULT* result /**< pointer to store the result of the branching (s. branch.h) */
15655  );
15656 
15657 /** calls branching rules to branch on a external candidates; if no such candidates exist, the result is SCIP_DIDNOTRUN
15658  *
15659  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15660  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15661  *
15662  * @pre This method can be called if @p scip is in one of the following stages:
15663  * - \ref SCIP_STAGE_SOLVING
15664  *
15665  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15666  */
15667 extern
15669  SCIP* scip, /**< SCIP data structure */
15670  SCIP_RESULT* result /**< pointer to store the result of the branching (s. branch.h) */
15671  );
15672 
15673 /** calls branching rules to branch on a pseudo solution; if no unfixed variables exist, the result is SCIP_DIDNOTRUN
15674  *
15675  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15676  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15677  *
15678  * @pre This method can be called if @p scip is in one of the following stages:
15679  * - \ref SCIP_STAGE_SOLVING
15680  *
15681  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
15682  */
15683 extern
15685  SCIP* scip, /**< SCIP data structure */
15686  SCIP_RESULT* result /**< pointer to store the result of the branching (s. branch.h) */
15687  );
15688 
15689 /**@} */
15690 
15691 
15692 
15693 
15694 /*
15695  * primal solutions
15696  */
15697 
15698 /**@name Primal Solution Methods */
15699 /**@{ */
15700 
15701 /** creates a primal solution, initialized to zero
15702  *
15703  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15704  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15705  *
15706  * @pre This method can be called if SCIP is in one of the following stages:
15707  * - \ref SCIP_STAGE_PROBLEM
15708  * - \ref SCIP_STAGE_TRANSFORMING
15709  * - \ref SCIP_STAGE_TRANSFORMED
15710  * - \ref SCIP_STAGE_INITPRESOLVE
15711  * - \ref SCIP_STAGE_PRESOLVING
15712  * - \ref SCIP_STAGE_EXITPRESOLVE
15713  * - \ref SCIP_STAGE_PRESOLVED
15714  * - \ref SCIP_STAGE_INITSOLVE
15715  * - \ref SCIP_STAGE_SOLVING
15716  */
15717 extern
15719  SCIP* scip, /**< SCIP data structure */
15720  SCIP_SOL** sol, /**< pointer to store the solution */
15721  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
15722  );
15723 
15724 /** creates a primal solution, initialized to the current LP solution
15725  *
15726  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15727  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15728  *
15729  * @pre This method can be called if SCIP is in one of the following stages:
15730  * - \ref SCIP_STAGE_SOLVING
15731  */
15732 extern
15734  SCIP* scip, /**< SCIP data structure */
15735  SCIP_SOL** sol, /**< pointer to store the solution */
15736  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
15737  );
15738 
15739 /** creates a primal solution, initialized to the current NLP solution
15740  *
15741  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15742  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15743  *
15744  * @pre This method can be called if SCIP is in one of the following stages:
15745  * - \ref SCIP_STAGE_SOLVING
15746  */
15747 extern
15749  SCIP* scip, /**< SCIP data structure */
15750  SCIP_SOL** sol, /**< pointer to store the solution */
15751  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
15752  );
15753 
15754 /** creates a primal solution, initialized to the current relaxation solution
15755  *
15756  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15757  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15758  *
15759  * @pre This method can be called if SCIP is in one of the following stages:
15760  * - \ref SCIP_STAGE_SOLVING
15761  */
15762 extern
15764  SCIP* scip, /**< SCIP data structure */
15765  SCIP_SOL** sol, /**< pointer to store the solution */
15766  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
15767  );
15768 
15769 /** creates a primal solution, initialized to the current pseudo solution
15770  *
15771  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15772  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15773  *
15774  * @pre This method can be called if SCIP is in one of the following stages:
15775  * - \ref SCIP_STAGE_SOLVING
15776  */
15777 extern
15779  SCIP* scip, /**< SCIP data structure */
15780  SCIP_SOL** sol, /**< pointer to store the solution */
15781  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
15782  );
15783 
15784 /** creates a primal solution, initialized to the current LP or pseudo solution, depending on whether the LP was solved
15785  * at the current node
15786  *
15787  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15788  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15789  *
15790  * @pre This method can be called if SCIP is in one of the following stages:
15791  * - \ref SCIP_STAGE_SOLVING
15792  */
15793 extern
15795  SCIP* scip, /**< SCIP data structure */
15796  SCIP_SOL** sol, /**< pointer to store the solution */
15797  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
15798  );
15799 
15800 /** creates a primal solution, initialized to unknown values
15801  *
15802  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15803  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15804  *
15805  * @pre This method can be called if SCIP is in one of the following stages:
15806  * - \ref SCIP_STAGE_TRANSFORMING
15807  * - \ref SCIP_STAGE_TRANSFORMED
15808  * - \ref SCIP_STAGE_INITPRESOLVE
15809  * - \ref SCIP_STAGE_PRESOLVING
15810  * - \ref SCIP_STAGE_EXITPRESOLVE
15811  * - \ref SCIP_STAGE_PRESOLVED
15812  * - \ref SCIP_STAGE_INITSOLVE
15813  * - \ref SCIP_STAGE_SOLVING
15814  */
15815 extern
15817  SCIP* scip, /**< SCIP data structure */
15818  SCIP_SOL** sol, /**< pointer to store the solution */
15819  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
15820  );
15821 
15822 /** creates a primal solution living in the original problem space, initialized to zero;
15823  * a solution in original space allows to set original variables to values that would be invalid in the
15824  * transformed problem due to preprocessing fixings or aggregations
15825  *
15826  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15827  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15828  *
15829  * @pre This method can be called if SCIP is in one of the following stages:
15830  * - \ref SCIP_STAGE_PROBLEM
15831  * - \ref SCIP_STAGE_TRANSFORMING
15832  * - \ref SCIP_STAGE_TRANSFORMED
15833  * - \ref SCIP_STAGE_INITPRESOLVE
15834  * - \ref SCIP_STAGE_PRESOLVING
15835  * - \ref SCIP_STAGE_EXITPRESOLVE
15836  * - \ref SCIP_STAGE_PRESOLVED
15837  * - \ref SCIP_STAGE_INITSOLVE
15838  * - \ref SCIP_STAGE_SOLVING
15839  */
15840 extern
15842  SCIP* scip, /**< SCIP data structure */
15843  SCIP_SOL** sol, /**< pointer to store the solution */
15844  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
15845  );
15846 
15847 /** creates a copy of a primal solution; note that a copy of a linked solution is also linked and needs to be unlinked
15848  * if it should stay unaffected from changes in the LP or pseudo solution
15849  *
15850  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15851  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15852  *
15853  * @pre This method can be called if SCIP is in one of the following stages:
15854  * - \ref SCIP_STAGE_PROBLEM
15855  * - \ref SCIP_STAGE_TRANSFORMING
15856  * - \ref SCIP_STAGE_TRANSFORMED
15857  * - \ref SCIP_STAGE_INITPRESOLVE
15858  * - \ref SCIP_STAGE_PRESOLVING
15859  * - \ref SCIP_STAGE_EXITPRESOLVE
15860  * - \ref SCIP_STAGE_PRESOLVED
15861  * - \ref SCIP_STAGE_INITSOLVE
15862  * - \ref SCIP_STAGE_SOLVING
15863  */
15864 extern
15866  SCIP* scip, /**< SCIP data structure */
15867  SCIP_SOL** sol, /**< pointer to store the solution */
15868  SCIP_SOL* sourcesol /**< primal CIP solution to copy */
15869  );
15870 
15871 /** creates a copy of a solution in the original primal solution space
15872  *
15873  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15874  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15875  *
15876  * @pre This method can be called if SCIP is in one of the following stages:
15877  * - \ref SCIP_STAGE_PROBLEM
15878  * - \ref SCIP_STAGE_TRANSFORMING
15879  * - \ref SCIP_STAGE_TRANSFORMED
15880  * - \ref SCIP_STAGE_INITPRESOLVE
15881  * - \ref SCIP_STAGE_PRESOLVING
15882  * - \ref SCIP_STAGE_EXITPRESOLVE
15883  * - \ref SCIP_STAGE_PRESOLVED
15884  * - \ref SCIP_STAGE_INITSOLVE
15885  * - \ref SCIP_STAGE_SOLVING
15886  * - \ref SCIP_STAGE_SOLVED
15887  * - \ref SCIP_STAGE_EXITSOLVE
15888  * - \ref SCIP_STAGE_FREETRANS
15889  */
15890 extern
15892  SCIP* scip, /**< SCIP data structure */
15893  SCIP_SOL** sol, /**< pointer to store the solution */
15894  SCIP_SOL* sourcesol /**< primal CIP solution to copy */
15895  );
15896 
15897 /** creates a copy of a primal solution, thereby replacing infinite fixings of variables by finite values;
15898  * the copy is always defined in the original variable space;
15899  * success indicates whether the objective value of the solution was changed by removing infinite values
15900  *
15901  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15902  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15903  *
15904  * @pre This method can be called if SCIP is in one of the following stages:
15905  * - \ref SCIP_STAGE_PROBLEM
15906  * - \ref SCIP_STAGE_TRANSFORMING
15907  * - \ref SCIP_STAGE_TRANSFORMED
15908  * - \ref SCIP_STAGE_INITPRESOLVE
15909  * - \ref SCIP_STAGE_PRESOLVING
15910  * - \ref SCIP_STAGE_EXITPRESOLVE
15911  * - \ref SCIP_STAGE_PRESOLVED
15912  * - \ref SCIP_STAGE_INITSOLVE
15913  * - \ref SCIP_STAGE_SOLVING
15914  * - \ref SCIP_STAGE_SOLVED
15915  * - \ref SCIP_STAGE_EXITSOLVE
15916  */
15917 extern
15919  SCIP* scip, /**< SCIP data structure */
15920  SCIP_SOL** sol, /**< pointer to store the solution */
15921  SCIP_SOL* sourcesol, /**< primal CIP solution to copy */
15922  SCIP_Bool* success /**< does the finite solution have the same objective value? */
15923  );
15924 
15925 /** frees primal CIP solution
15926  *
15927  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15928  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15929  *
15930  * @pre This method can be called if SCIP is in one of the following stages:
15931  * - \ref SCIP_STAGE_PROBLEM
15932  * - \ref SCIP_STAGE_TRANSFORMING
15933  * - \ref SCIP_STAGE_TRANSFORMED
15934  * - \ref SCIP_STAGE_INITPRESOLVE
15935  * - \ref SCIP_STAGE_PRESOLVING
15936  * - \ref SCIP_STAGE_EXITPRESOLVE
15937  * - \ref SCIP_STAGE_PRESOLVED
15938  * - \ref SCIP_STAGE_INITSOLVE
15939  * - \ref SCIP_STAGE_SOLVING
15940  * - \ref SCIP_STAGE_SOLVED
15941  * - \ref SCIP_STAGE_EXITSOLVE
15942  * - \ref SCIP_STAGE_FREETRANS
15943  */
15944 extern
15946  SCIP* scip, /**< SCIP data structure */
15947  SCIP_SOL** sol /**< pointer to the solution */
15948  );
15949 
15950 /** links a primal solution to the current LP solution
15951  *
15952  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15953  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15954  *
15955  * @pre This method can be called if SCIP is in one of the following stages:
15956  * - \ref SCIP_STAGE_SOLVING
15957  */
15958 extern
15960  SCIP* scip, /**< SCIP data structure */
15961  SCIP_SOL* sol /**< primal solution */
15962  );
15963 
15964 /** links a primal solution to the current NLP solution
15965  *
15966  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15967  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15968  *
15969  * @pre This method can be called if SCIP is in one of the following stages:
15970  * - \ref SCIP_STAGE_SOLVING
15971  */
15972 extern
15974  SCIP* scip, /**< SCIP data structure */
15975  SCIP_SOL* sol /**< primal solution */
15976  );
15977 
15978 /** links a primal solution to the current relaxation solution
15979  *
15980  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15981  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15982  *
15983  * @pre This method can be called if SCIP is in one of the following stages:
15984  * - \ref SCIP_STAGE_SOLVING
15985  */
15986 extern
15988  SCIP* scip, /**< SCIP data structure */
15989  SCIP_SOL* sol /**< primal solution */
15990  );
15991 
15992 /** links a primal solution to the current pseudo solution
15993  *
15994  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15995  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15996  *
15997  * @pre This method can be called if SCIP is in one of the following stages:
15998  * - \ref SCIP_STAGE_PRESOLVING
15999  * - \ref SCIP_STAGE_SOLVING
16000  */
16001 extern
16003  SCIP* scip, /**< SCIP data structure */
16004  SCIP_SOL* sol /**< primal solution */
16005  );
16006 
16007 /** links a primal solution to the current LP or pseudo solution
16008  *
16009  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16010  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16011  *
16012  * @pre This method can be called if SCIP is in one of the following stages:
16013  * - \ref SCIP_STAGE_SOLVING
16014  */
16015 extern
16017  SCIP* scip, /**< SCIP data structure */
16018  SCIP_SOL* sol /**< primal solution */
16019  );
16020 
16021 /** clears a primal solution
16022  *
16023  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16024  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16025  *
16026  * @pre This method can be called if SCIP is in one of the following stages:
16027  * - \ref SCIP_STAGE_PROBLEM
16028  * - \ref SCIP_STAGE_TRANSFORMING
16029  * - \ref SCIP_STAGE_TRANSFORMED
16030  * - \ref SCIP_STAGE_INITPRESOLVE
16031  * - \ref SCIP_STAGE_PRESOLVING
16032  * - \ref SCIP_STAGE_EXITPRESOLVE
16033  * - \ref SCIP_STAGE_PRESOLVED
16034  * - \ref SCIP_STAGE_INITSOLVE
16035  * - \ref SCIP_STAGE_SOLVING
16036  * - \ref SCIP_STAGE_SOLVED
16037  * - \ref SCIP_STAGE_EXITSOLVE
16038  * - \ref SCIP_STAGE_FREETRANS
16039  */
16040 extern
16042  SCIP* scip, /**< SCIP data structure */
16043  SCIP_SOL* sol /**< primal solution */
16044  );
16045 
16046 /** stores solution values of variables in solution's own array
16047  *
16048  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16049  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16050  *
16051  * @pre This method can be called if SCIP is in one of the following stages:
16052  * - \ref SCIP_STAGE_TRANSFORMING
16053  * - \ref SCIP_STAGE_TRANSFORMED
16054  * - \ref SCIP_STAGE_PRESOLVING
16055  * - \ref SCIP_STAGE_PRESOLVED
16056  * - \ref SCIP_STAGE_INITSOLVE
16057  * - \ref SCIP_STAGE_SOLVING
16058  * - \ref SCIP_STAGE_SOLVED
16059  * - \ref SCIP_STAGE_EXITSOLVE
16060  * - \ref SCIP_STAGE_FREETRANS
16061  */
16062 extern
16064  SCIP* scip, /**< SCIP data structure */
16065  SCIP_SOL* sol /**< primal solution */
16066  );
16067 
16068 /** sets value of variable in primal CIP solution
16069  *
16070  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16071  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16072  *
16073  * @pre This method can be called if SCIP is in one of the following stages:
16074  * - \ref SCIP_STAGE_PROBLEM
16075  * - \ref SCIP_STAGE_TRANSFORMING
16076  * - \ref SCIP_STAGE_TRANSFORMED
16077  * - \ref SCIP_STAGE_INITPRESOLVE
16078  * - \ref SCIP_STAGE_PRESOLVING
16079  * - \ref SCIP_STAGE_EXITPRESOLVE
16080  * - \ref SCIP_STAGE_PRESOLVED
16081  * - \ref SCIP_STAGE_INITSOLVE
16082  * - \ref SCIP_STAGE_SOLVING
16083  * - \ref SCIP_STAGE_SOLVED
16084  * - \ref SCIP_STAGE_EXITSOLVE
16085  * - \ref SCIP_STAGE_FREETRANS
16086  */
16087 extern
16089  SCIP* scip, /**< SCIP data structure */
16090  SCIP_SOL* sol, /**< primal solution */
16091  SCIP_VAR* var, /**< variable to add to solution */
16092  SCIP_Real val /**< solution value of variable */
16093  );
16094 
16095 /** sets values of multiple variables in primal CIP solution
16096  *
16097  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16098  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16099  *
16100  * @pre This method can be called if SCIP is in one of the following stages:
16101  * - \ref SCIP_STAGE_PROBLEM
16102  * - \ref SCIP_STAGE_TRANSFORMING
16103  * - \ref SCIP_STAGE_TRANSFORMED
16104  * - \ref SCIP_STAGE_INITPRESOLVE
16105  * - \ref SCIP_STAGE_PRESOLVING
16106  * - \ref SCIP_STAGE_EXITPRESOLVE
16107  * - \ref SCIP_STAGE_PRESOLVED
16108  * - \ref SCIP_STAGE_INITSOLVE
16109  * - \ref SCIP_STAGE_SOLVING
16110  * - \ref SCIP_STAGE_SOLVED
16111  * - \ref SCIP_STAGE_EXITSOLVE
16112  * - \ref SCIP_STAGE_FREETRANS
16113  */
16114 extern
16116  SCIP* scip, /**< SCIP data structure */
16117  SCIP_SOL* sol, /**< primal solution */
16118  int nvars, /**< number of variables to set solution value for */
16119  SCIP_VAR** vars, /**< array with variables to add to solution */
16120  SCIP_Real* vals /**< array with solution values of variables */
16121  );
16122 
16123 /** increases value of variable in primal CIP solution
16124  *
16125  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16126  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16127  *
16128  * @pre This method can be called if SCIP is in one of the following stages:
16129  * - \ref SCIP_STAGE_PROBLEM
16130  * - \ref SCIP_STAGE_TRANSFORMING
16131  * - \ref SCIP_STAGE_TRANSFORMED
16132  * - \ref SCIP_STAGE_INITPRESOLVE
16133  * - \ref SCIP_STAGE_PRESOLVING
16134  * - \ref SCIP_STAGE_EXITPRESOLVE
16135  * - \ref SCIP_STAGE_PRESOLVED
16136  * - \ref SCIP_STAGE_INITSOLVE
16137  * - \ref SCIP_STAGE_SOLVING
16138  * - \ref SCIP_STAGE_SOLVED
16139  * - \ref SCIP_STAGE_EXITSOLVE
16140  * - \ref SCIP_STAGE_FREETRANS
16141  */
16142 extern
16144  SCIP* scip, /**< SCIP data structure */
16145  SCIP_SOL* sol, /**< primal solution */
16146  SCIP_VAR* var, /**< variable to increase solution value for */
16147  SCIP_Real incval /**< increment for solution value of variable */
16148  );
16149 
16150 /** returns value of variable in primal CIP solution, or in current LP/pseudo solution
16151  *
16152  * @return value of variable in primal CIP solution, or in current LP/pseudo solution
16153  *
16154  * @pre In case the solution pointer @p sol is @b NULL, that means it is asked for the LP or pseudo solution, this method
16155  * can only be called if @p scip is in the solving stage \ref SCIP_STAGE_SOLVING. In any other case, this method
16156  * can be called if @p scip is in one of the following stages:
16157  * - \ref SCIP_STAGE_PROBLEM
16158  * - \ref SCIP_STAGE_TRANSFORMING
16159  * - \ref SCIP_STAGE_TRANSFORMED
16160  * - \ref SCIP_STAGE_INITPRESOLVE
16161  * - \ref SCIP_STAGE_PRESOLVING
16162  * - \ref SCIP_STAGE_EXITPRESOLVE
16163  * - \ref SCIP_STAGE_PRESOLVED
16164  * - \ref SCIP_STAGE_INITSOLVE
16165  * - \ref SCIP_STAGE_SOLVING
16166  * - \ref SCIP_STAGE_SOLVED
16167  * - \ref SCIP_STAGE_EXITSOLVE
16168  * - \ref SCIP_STAGE_FREETRANS
16169  */
16170 extern
16172  SCIP* scip, /**< SCIP data structure */
16173  SCIP_SOL* sol, /**< primal solution, or NULL for current LP/pseudo solution */
16174  SCIP_VAR* var /**< variable to get value for */
16175  );
16176 
16177 /** gets values of multiple variables in primal CIP solution
16178  *
16179  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16180  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16181  *
16182  * @pre This method can be called if SCIP is in one of the following stages:
16183  * - \ref SCIP_STAGE_PROBLEM
16184  * - \ref SCIP_STAGE_TRANSFORMING
16185  * - \ref SCIP_STAGE_TRANSFORMED
16186  * - \ref SCIP_STAGE_INITPRESOLVE
16187  * - \ref SCIP_STAGE_PRESOLVING
16188  * - \ref SCIP_STAGE_EXITPRESOLVE
16189  * - \ref SCIP_STAGE_PRESOLVED
16190  * - \ref SCIP_STAGE_INITSOLVE
16191  * - \ref SCIP_STAGE_SOLVING
16192  * - \ref SCIP_STAGE_SOLVED
16193  * - \ref SCIP_STAGE_EXITSOLVE
16194  * - \ref SCIP_STAGE_FREETRANS
16195  */
16196 extern
16198  SCIP* scip, /**< SCIP data structure */
16199  SCIP_SOL* sol, /**< primal solution, or NULL for current LP/pseudo solution */
16200  int nvars, /**< number of variables to get solution value for */
16201  SCIP_VAR** vars, /**< array with variables to get value for */
16202  SCIP_Real* vals /**< array to store solution values of variables */
16203  );
16204 
16205 /** returns objective value of primal CIP solution w.r.t. original problem, or current LP/pseudo objective value
16206  *
16207  * @return objective value of primal CIP solution w.r.t. original problem, or current LP/pseudo objective value
16208  *
16209  * @pre This method can be called if SCIP is in one of the following stages:
16210  * - \ref SCIP_STAGE_PROBLEM
16211  * - \ref SCIP_STAGE_TRANSFORMING
16212  * - \ref SCIP_STAGE_TRANSFORMED
16213  * - \ref SCIP_STAGE_INITPRESOLVE
16214  * - \ref SCIP_STAGE_PRESOLVING
16215  * - \ref SCIP_STAGE_EXITPRESOLVE
16216  * - \ref SCIP_STAGE_PRESOLVED
16217  * - \ref SCIP_STAGE_INITSOLVE
16218  * - \ref SCIP_STAGE_SOLVING
16219  * - \ref SCIP_STAGE_SOLVED
16220  * - \ref SCIP_STAGE_EXITSOLVE
16221  * - \ref SCIP_STAGE_FREETRANS
16222  */
16223 extern
16225  SCIP* scip, /**< SCIP data structure */
16226  SCIP_SOL* sol /**< primal solution, or NULL for current LP/pseudo objective value */
16227  );
16228 
16229 /** returns transformed objective value of primal CIP solution, or transformed current LP/pseudo objective value
16230  *
16231  * @return transformed objective value of primal CIP solution, or transformed current LP/pseudo objective value
16232  *
16233  * @pre This method can be called if SCIP is in one of the following stages:
16234  * - \ref SCIP_STAGE_TRANSFORMING
16235  * - \ref SCIP_STAGE_TRANSFORMED
16236  * - \ref SCIP_STAGE_INITPRESOLVE
16237  * - \ref SCIP_STAGE_PRESOLVING
16238  * - \ref SCIP_STAGE_EXITPRESOLVE
16239  * - \ref SCIP_STAGE_PRESOLVED
16240  * - \ref SCIP_STAGE_INITSOLVE
16241  * - \ref SCIP_STAGE_SOLVING
16242  * - \ref SCIP_STAGE_SOLVED
16243  * - \ref SCIP_STAGE_EXITSOLVE
16244  * - \ref SCIP_STAGE_FREETRANS
16245  */
16246 extern
16248  SCIP* scip, /**< SCIP data structure */
16249  SCIP_SOL* sol /**< primal solution, or NULL for current LP/pseudo objective value */
16250  );
16251 
16252 /** recomputes the objective value of an original solution, e.g., when transferring solutions
16253  * from the solution pool (objective coefficients might have changed in the meantime)
16254  *
16255  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16256  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16257  *
16258  * @pre This method can be called if SCIP is in one of the following stages:
16259  * - \ref SCIP_STAGE_PRESOLVING
16260  * - \ref SCIP_STAGE_SOLVING
16261  *
16262  */
16263 extern
16265  SCIP* scip,
16266  SCIP_SOL* sol
16267  );
16268 
16269 /** maps original space objective value into transformed objective value
16270  *
16271  * @return transformed objective value
16272  *
16273  * @pre This method can be called if SCIP is in one of the following stages:
16274  * - \ref SCIP_STAGE_TRANSFORMING
16275  * - \ref SCIP_STAGE_TRANSFORMED
16276  * - \ref SCIP_STAGE_INITPRESOLVE
16277  * - \ref SCIP_STAGE_PRESOLVING
16278  * - \ref SCIP_STAGE_EXITPRESOLVE
16279  * - \ref SCIP_STAGE_PRESOLVED
16280  * - \ref SCIP_STAGE_INITSOLVE
16281  * - \ref SCIP_STAGE_SOLVING
16282  * - \ref SCIP_STAGE_SOLVED
16283  */
16284 extern
16286  SCIP* scip, /**< SCIP data structure */
16287  SCIP_Real obj /**< original space objective value to transform */
16288  );
16289 
16290 /** maps transformed objective value into original space
16291  *
16292  * @return objective value into original space
16293  *
16294  * @pre This method can be called if SCIP is in one of the following stages:
16295  * - \ref SCIP_STAGE_TRANSFORMING
16296  * - \ref SCIP_STAGE_TRANSFORMED
16297  * - \ref SCIP_STAGE_INITPRESOLVE
16298  * - \ref SCIP_STAGE_PRESOLVING
16299  * - \ref SCIP_STAGE_EXITPRESOLVE
16300  * - \ref SCIP_STAGE_PRESOLVED
16301  * - \ref SCIP_STAGE_INITSOLVE
16302  * - \ref SCIP_STAGE_SOLVING
16303  * - \ref SCIP_STAGE_SOLVED
16304  */
16305 extern
16307  SCIP* scip, /**< SCIP data structure */
16308  SCIP_Real obj /**< transformed objective value to retransform in original space */
16309  );
16310 
16311 /** gets clock time, when this solution was found
16312  *
16313  * @return clock time, when this solution was found
16314  *
16315  * @pre This method can be called if SCIP is in one of the following stages:
16316  * - \ref SCIP_STAGE_TRANSFORMING
16317  * - \ref SCIP_STAGE_TRANSFORMED
16318  * - \ref SCIP_STAGE_INITPRESOLVE
16319  * - \ref SCIP_STAGE_PRESOLVING
16320  * - \ref SCIP_STAGE_EXITPRESOLVE
16321  * - \ref SCIP_STAGE_PRESOLVED
16322  * - \ref SCIP_STAGE_INITSOLVE
16323  * - \ref SCIP_STAGE_SOLVING
16324  * - \ref SCIP_STAGE_SOLVED
16325  * - \ref SCIP_STAGE_EXITSOLVE
16326  * - \ref SCIP_STAGE_FREETRANS
16327  */
16328 extern
16330  SCIP* scip, /**< SCIP data structure */
16331  SCIP_SOL* sol /**< primal solution */
16332  );
16333 
16334 /** gets branch and bound run number, where this solution was found
16335  *
16336  * @return branch and bound run number, where this solution was found
16337  *
16338  * @pre This method can be called if SCIP is in one of the following stages:
16339  * - \ref SCIP_STAGE_TRANSFORMING
16340  * - \ref SCIP_STAGE_TRANSFORMED
16341  * - \ref SCIP_STAGE_INITPRESOLVE
16342  * - \ref SCIP_STAGE_PRESOLVING
16343  * - \ref SCIP_STAGE_EXITPRESOLVE
16344  * - \ref SCIP_STAGE_PRESOLVED
16345  * - \ref SCIP_STAGE_INITSOLVE
16346  * - \ref SCIP_STAGE_SOLVING
16347  * - \ref SCIP_STAGE_SOLVED
16348  * - \ref SCIP_STAGE_EXITSOLVE
16349  * - \ref SCIP_STAGE_FREETRANS
16350  */
16351 extern
16352 int SCIPgetSolRunnum(
16353  SCIP* scip, /**< SCIP data structure */
16354  SCIP_SOL* sol /**< primal solution */
16355  );
16356 
16357 /** gets node number of the specific branch and bound run, where this solution was found
16358  *
16359  * @return node number of the specific branch and bound run, where this solution was found
16360  *
16361  * @pre This method can be called if SCIP is in one of the following stages:
16362  * - \ref SCIP_STAGE_TRANSFORMING
16363  * - \ref SCIP_STAGE_TRANSFORMED
16364  * - \ref SCIP_STAGE_INITPRESOLVE
16365  * - \ref SCIP_STAGE_PRESOLVING
16366  * - \ref SCIP_STAGE_EXITPRESOLVE
16367  * - \ref SCIP_STAGE_PRESOLVED
16368  * - \ref SCIP_STAGE_INITSOLVE
16369  * - \ref SCIP_STAGE_SOLVING
16370  * - \ref SCIP_STAGE_SOLVED
16371  * - \ref SCIP_STAGE_EXITSOLVE
16372  * - \ref SCIP_STAGE_FREETRANS
16373  */
16374 extern
16376  SCIP* scip, /**< SCIP data structure */
16377  SCIP_SOL* sol /**< primal solution */
16378  );
16379 
16380 /** gets heuristic, that found this solution (or NULL if it's from the tree)
16381  *
16382  * @return heuristic, that found this solution (or NULL if it's from the tree)
16383  *
16384  * @pre This method can be called if SCIP is in one of the following stages:
16385  * - \ref SCIP_STAGE_TRANSFORMING
16386  * - \ref SCIP_STAGE_TRANSFORMED
16387  * - \ref SCIP_STAGE_INITPRESOLVE
16388  * - \ref SCIP_STAGE_PRESOLVING
16389  * - \ref SCIP_STAGE_EXITPRESOLVE
16390  * - \ref SCIP_STAGE_PRESOLVED
16391  * - \ref SCIP_STAGE_INITSOLVE
16392  * - \ref SCIP_STAGE_SOLVING
16393  * - \ref SCIP_STAGE_SOLVED
16394  * - \ref SCIP_STAGE_EXITSOLVE
16395  * - \ref SCIP_STAGE_FREETRANS
16396  */
16397 extern
16399  SCIP* scip, /**< SCIP data structure */
16400  SCIP_SOL* sol /**< primal solution */
16401  );
16402 
16403 /** returns whether two given solutions are exactly equal
16404  *
16405  * @return returns whether two given solutions are exactly equal
16406  *
16407  * @pre This method can be called if SCIP is in one of the following stages:
16408  * - \ref SCIP_STAGE_PROBLEM
16409  * - \ref SCIP_STAGE_TRANSFORMING
16410  * - \ref SCIP_STAGE_TRANSFORMED
16411  * - \ref SCIP_STAGE_INITPRESOLVE
16412  * - \ref SCIP_STAGE_PRESOLVING
16413  * - \ref SCIP_STAGE_EXITPRESOLVE
16414  * - \ref SCIP_STAGE_PRESOLVED
16415  * - \ref SCIP_STAGE_INITSOLVE
16416  * - \ref SCIP_STAGE_SOLVING
16417  * - \ref SCIP_STAGE_SOLVED
16418  * - \ref SCIP_STAGE_EXITSOLVE
16419  * - \ref SCIP_STAGE_FREETRANS
16420  */
16421 extern
16423  SCIP* scip, /**< SCIP data structure */
16424  SCIP_SOL* sol1, /**< first primal CIP solution */
16425  SCIP_SOL* sol2 /**< second primal CIP solution */
16426  );
16427 
16428 /** adjusts solution values of implicit integer variables in handed solution. Solution objective value is not
16429  * deteriorated by this method.
16430  *
16431  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16432  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16433  *
16434  * @pre This method can be called if SCIP is in one of the following stages:
16435  * - \ref SCIP_STAGE_SOLVING
16436  */
16437 extern
16439  SCIP* scip, /**< SCIP data structure */
16440  SCIP_SOL* sol, /**< primal CIP solution */
16441  SCIP_Bool uselprows /**< should LP row information be considered for none-objective variables */
16442  );
16443 
16444 /** outputs non-zero variables of solution in original problem space to the given file stream
16445  *
16446  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16447  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16448  *
16449  * @pre In case the solution pointer @p sol is NULL (askinking for the current LP/pseudo solution), this method can be
16450  * called if @p scip is in one of the following stages:
16451  * - \ref SCIP_STAGE_PRESOLVING
16452  * - \ref SCIP_STAGE_EXITPRESOLVE
16453  * - \ref SCIP_STAGE_PRESOLVED
16454  * - \ref SCIP_STAGE_INITSOLVE
16455  * - \ref SCIP_STAGE_SOLVING
16456  * - \ref SCIP_STAGE_SOLVED
16457  * - \ref SCIP_STAGE_EXITSOLVE
16458  *
16459  * @pre In case the solution pointer @p sol is @b not NULL, this method can be called if @p scip is in one of the
16460  * following stages:
16461  * - \ref SCIP_STAGE_PROBLEM
16462  * - \ref SCIP_STAGE_TRANSFORMED
16463  * - \ref SCIP_STAGE_INITPRESOLVE
16464  * - \ref SCIP_STAGE_PRESOLVING
16465  * - \ref SCIP_STAGE_EXITPRESOLVE
16466  * - \ref SCIP_STAGE_PRESOLVED
16467  * - \ref SCIP_STAGE_INITSOLVE
16468  * - \ref SCIP_STAGE_SOLVING
16469  * - \ref SCIP_STAGE_SOLVED
16470  * - \ref SCIP_STAGE_EXITSOLVE
16471  */
16472 extern
16474  SCIP* scip, /**< SCIP data structure */
16475  SCIP_SOL* sol, /**< primal solution, or NULL for current LP/pseudo solution */
16476  FILE* file, /**< output file (or NULL for standard output) */
16477  SCIP_Bool printzeros /**< should variables set to zero be printed? */
16478  );
16479 
16480 /** outputs non-zero variables of solution in transformed problem space to file stream
16481  *
16482  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16483  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16484  *
16485  * @pre This method can be called if SCIP is in one of the following stages:
16486  * - \ref SCIP_STAGE_TRANSFORMED
16487  * - \ref SCIP_STAGE_INITPRESOLVE
16488  * - \ref SCIP_STAGE_PRESOLVING
16489  * - \ref SCIP_STAGE_EXITPRESOLVE
16490  * - \ref SCIP_STAGE_PRESOLVED
16491  * - \ref SCIP_STAGE_INITSOLVE
16492  * - \ref SCIP_STAGE_SOLVING
16493  * - \ref SCIP_STAGE_SOLVED
16494  * - \ref SCIP_STAGE_EXITSOLVE
16495  */
16496 extern
16498  SCIP* scip, /**< SCIP data structure */
16499  SCIP_SOL* sol, /**< primal solution, or NULL for current LP/pseudo solution */
16500  FILE* file, /**< output file (or NULL for standard output) */
16501  SCIP_Bool printzeros /**< should variables set to zero be printed? */
16502  );
16503 
16504 /** outputs dual solution from LP solver to file stream
16505  *
16506  * @note This only works if no presolving has been performed, which can be checked by calling method \ref
16507  * SCIPhasPerformedPresolve().
16508  *
16509  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16510  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16511  *
16512  * @pre This method can be called if SCIP is in one of the following stages:
16513  * - \ref SCIP_STAGE_SOLVED
16514  */
16515 extern
16517  SCIP* scip, /**< SCIP data structure */
16518  FILE* file, /**< output file (or NULL for standard output) */
16519  SCIP_Bool printzeros /**< should variables set to zero be printed? */
16520  );
16521 
16522 
16523 /** outputs non-zero variables of solution representing a ray in original problem space to file stream
16524  *
16525  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16526  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16527  *
16528  * @pre This method can be called if SCIP is in one of the following stages:
16529  * - \ref SCIP_STAGE_PROBLEM
16530  * - \ref SCIP_STAGE_TRANSFORMED
16531  * - \ref SCIP_STAGE_INITPRESOLVE
16532  * - \ref SCIP_STAGE_PRESOLVING
16533  * - \ref SCIP_STAGE_EXITPRESOLVE
16534  * - \ref SCIP_STAGE_PRESOLVED
16535  * - \ref SCIP_STAGE_INITSOLVE
16536  * - \ref SCIP_STAGE_SOLVING
16537  * - \ref SCIP_STAGE_SOLVED
16538  * - \ref SCIP_STAGE_EXITSOLVE
16539  */
16540 extern
16542  SCIP* scip, /**< SCIP data structure */
16543  SCIP_SOL* sol, /**< primal solution representing ray */
16544  FILE* file, /**< output file (or NULL for standard output) */
16545  SCIP_Bool printzeros /**< should variables set to zero be printed? */
16546  );
16547 
16548 /** gets number of feasible primal solutions stored in the solution storage in case the problem is transformed;
16549  * in case the problem stage is SCIP_STAGE_PROBLEM, the number of solution in the original solution candidate
16550  * storage is returned
16551  *
16552  * @return number of feasible primal solutions stored in the solution storage in case the problem is transformed; or
16553  * number of solution in the original solution candidate storage if the problem stage is SCIP_STAGE_PROBLEM
16554  *
16555  * @pre This method can be called if SCIP is in one of the following stages:
16556  * - \ref SCIP_STAGE_PROBLEM
16557  * - \ref SCIP_STAGE_TRANSFORMED
16558  * - \ref SCIP_STAGE_INITPRESOLVE
16559  * - \ref SCIP_STAGE_PRESOLVING
16560  * - \ref SCIP_STAGE_EXITPRESOLVE
16561  * - \ref SCIP_STAGE_PRESOLVED
16562  * - \ref SCIP_STAGE_INITSOLVE
16563  * - \ref SCIP_STAGE_SOLVING
16564  * - \ref SCIP_STAGE_SOLVED
16565  * - \ref SCIP_STAGE_EXITSOLVE
16566  */
16567 extern
16568 int SCIPgetNSols(
16569  SCIP* scip /**< SCIP data structure */
16570  );
16571 
16572 /** gets array of feasible primal solutions stored in the solution storage in case the problem is transformed; in case
16573  * if the problem stage is in SCIP_STAGE_PROBLEM, it returns the number array of solution candidate stored
16574  *
16575  * @return array of feasible primal solutions
16576  *
16577  * @pre This method can be called if SCIP is in one of the following stages:
16578  * - \ref SCIP_STAGE_PROBLEM
16579  * - \ref SCIP_STAGE_TRANSFORMED
16580  * - \ref SCIP_STAGE_INITPRESOLVE
16581  * - \ref SCIP_STAGE_PRESOLVING
16582  * - \ref SCIP_STAGE_EXITPRESOLVE
16583  * - \ref SCIP_STAGE_PRESOLVED
16584  * - \ref SCIP_STAGE_INITSOLVE
16585  * - \ref SCIP_STAGE_SOLVING
16586  * - \ref SCIP_STAGE_SOLVED
16587  * - \ref SCIP_STAGE_EXITSOLVE
16588  */
16589 extern
16591  SCIP* scip /**< SCIP data structure */
16592  );
16593 
16594 /** gets best feasible primal solution found so far if the problem is transformed; in case the problem is in
16595  * SCIP_STAGE_PROBLEM it returns the best solution candidate, or NULL if no solution has been found or the candidate
16596  * store is empty;
16597  *
16598  * @return best feasible primal solution so far
16599  *
16600  * @pre This method can be called if SCIP is in one of the following stages:
16601  * - \ref SCIP_STAGE_PROBLEM
16602  * - \ref SCIP_STAGE_TRANSFORMED
16603  * - \ref SCIP_STAGE_INITPRESOLVE
16604  * - \ref SCIP_STAGE_PRESOLVING
16605  * - \ref SCIP_STAGE_EXITPRESOLVE
16606  * - \ref SCIP_STAGE_PRESOLVED
16607  * - \ref SCIP_STAGE_INITSOLVE
16608  * - \ref SCIP_STAGE_SOLVING
16609  * - \ref SCIP_STAGE_SOLVED
16610  * - \ref SCIP_STAGE_EXITSOLVE
16611  */
16612 extern
16614  SCIP* scip /**< SCIP data structure */
16615  );
16616 
16617 /** outputs best feasible primal solution found so far to file stream
16618  *
16619  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16620  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16621  *
16622  * @pre This method can be called if SCIP is in one of the following stages:
16623  * - \ref SCIP_STAGE_INIT
16624  * - \ref SCIP_STAGE_PROBLEM
16625  * - \ref SCIP_STAGE_TRANSFORMING
16626  * - \ref SCIP_STAGE_TRANSFORMED
16627  * - \ref SCIP_STAGE_INITPRESOLVE
16628  * - \ref SCIP_STAGE_PRESOLVING
16629  * - \ref SCIP_STAGE_EXITPRESOLVE
16630  * - \ref SCIP_STAGE_PRESOLVED
16631  * - \ref SCIP_STAGE_INITSOLVE
16632  * - \ref SCIP_STAGE_SOLVING
16633  * - \ref SCIP_STAGE_SOLVED
16634  * - \ref SCIP_STAGE_EXITSOLVE
16635  * - \ref SCIP_STAGE_FREE
16636  */
16637 extern
16639  SCIP* scip, /**< SCIP data structure */
16640  FILE* file, /**< output file (or NULL for standard output) */
16641  SCIP_Bool printzeros /**< should variables set to zero be printed? */
16642  );
16643 
16644 /** outputs best feasible primal solution found so far in transformed variables to file stream
16645  *
16646  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16647  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16648  *
16649  * @pre This method can be called if SCIP is in one of the following stages:
16650  * - \ref SCIP_STAGE_INIT
16651  * - \ref SCIP_STAGE_PROBLEM
16652  * - \ref SCIP_STAGE_TRANSFORMING
16653  * - \ref SCIP_STAGE_TRANSFORMED
16654  * - \ref SCIP_STAGE_INITPRESOLVE
16655  * - \ref SCIP_STAGE_PRESOLVING
16656  * - \ref SCIP_STAGE_EXITPRESOLVE
16657  * - \ref SCIP_STAGE_PRESOLVED
16658  * - \ref SCIP_STAGE_INITSOLVE
16659  * - \ref SCIP_STAGE_SOLVING
16660  * - \ref SCIP_STAGE_SOLVED
16661  * - \ref SCIP_STAGE_EXITSOLVE
16662  * - \ref SCIP_STAGE_FREE
16663  */
16664 extern
16666  SCIP* scip, /**< SCIP data structure */
16667  FILE* file, /**< output file (or NULL for standard output) */
16668  SCIP_Bool printzeros /**< should variables set to zero be printed? */
16669  );
16670 
16671 /** try to round given solution
16672  *
16673  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16674  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16675  *
16676  * @pre This method can be called if SCIP is in one of the following stages:
16677  * - \ref SCIP_STAGE_SOLVING
16678  */
16679 extern
16681  SCIP* scip, /**< SCIP data structure */
16682  SCIP_SOL* sol, /**< primal solution */
16683  SCIP_Bool* success /**< pointer to store whether rounding was successful */
16684  );
16685 
16686 /** retransforms solution to original problem space
16687  *
16688  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16689  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16690  *
16691  * @pre This method can be called if SCIP is in one of the following stages:
16692  * - \ref SCIP_STAGE_PROBLEM
16693  * - \ref SCIP_STAGE_TRANSFORMING
16694  * - \ref SCIP_STAGE_TRANSFORMED
16695  * - \ref SCIP_STAGE_INITPRESOLVE
16696  * - \ref SCIP_STAGE_PRESOLVING
16697  * - \ref SCIP_STAGE_EXITPRESOLVE
16698  * - \ref SCIP_STAGE_PRESOLVED
16699  * - \ref SCIP_STAGE_INITSOLVE
16700  * - \ref SCIP_STAGE_SOLVING
16701  * - \ref SCIP_STAGE_SOLVED
16702  * - \ref SCIP_STAGE_EXITSOLVE
16703  * - \ref SCIP_STAGE_FREETRANS
16704  */
16705 extern
16707  SCIP* scip, /**< SCIP data structure */
16708  SCIP_SOL* sol /**< primal CIP solution */
16709  );
16710 
16711 /** reads a given solution file, problem has to be transformed in advance
16712  *
16713  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16714  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16715  *
16716  * @pre This method can be called if SCIP is in one of the following stages:
16717  * - \ref SCIP_STAGE_PROBLEM
16718  * - \ref SCIP_STAGE_TRANSFORMED
16719  * - \ref SCIP_STAGE_INITPRESOLVE
16720  * - \ref SCIP_STAGE_PRESOLVING
16721  * - \ref SCIP_STAGE_EXITPRESOLVE
16722  * - \ref SCIP_STAGE_PRESOLVED
16723  * - \ref SCIP_STAGE_INITSOLVE
16724  * - \ref SCIP_STAGE_SOLVING
16725  */
16726 extern
16728  SCIP* scip, /**< SCIP data structure */
16729  const char* filename /**< name of the input file */
16730  );
16731 
16732 /** adds feasible primal solution to solution storage by copying it
16733  *
16734  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16735  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16736  *
16737  * @pre This method can be called if SCIP is in one of the following stages:
16738  * - \ref SCIP_STAGE_PROBLEM
16739  * - \ref SCIP_STAGE_TRANSFORMED
16740  * - \ref SCIP_STAGE_INITPRESOLVE
16741  * - \ref SCIP_STAGE_PRESOLVING
16742  * - \ref SCIP_STAGE_EXITPRESOLVE
16743  * - \ref SCIP_STAGE_PRESOLVED
16744  * - \ref SCIP_STAGE_SOLVING
16745  * - \ref SCIP_STAGE_FREETRANS
16746  *
16747  * @note Do not call during propagation, use heur_trysol instead.
16748  */
16749 extern
16751  SCIP* scip, /**< SCIP data structure */
16752  SCIP_SOL* sol, /**< primal CIP solution */
16753  SCIP_Bool* stored /**< stores whether given solution was good enough to keep */
16754  );
16755 
16756 /** adds primal solution to solution storage, frees the solution afterwards
16757  *
16758  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16759  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16760  *
16761  * @pre This method can be called if SCIP is in one of the following stages:
16762  * - \ref SCIP_STAGE_PROBLEM
16763  * - \ref SCIP_STAGE_TRANSFORMED
16764  * - \ref SCIP_STAGE_INITPRESOLVE
16765  * - \ref SCIP_STAGE_PRESOLVING
16766  * - \ref SCIP_STAGE_EXITPRESOLVE
16767  * - \ref SCIP_STAGE_PRESOLVED
16768  * - \ref SCIP_STAGE_SOLVING
16769  * - \ref SCIP_STAGE_FREETRANS
16770  *
16771  * @note Do not call during propagation, use heur_trysol instead.
16772  */
16773 extern
16775  SCIP* scip, /**< SCIP data structure */
16776  SCIP_SOL** sol, /**< pointer to primal CIP solution; is cleared in function call */
16777  SCIP_Bool* stored /**< stores whether given solution was good enough to keep */
16778  );
16779 
16780 /** adds current LP/pseudo solution to solution storage
16781  *
16782  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16783  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16784  *
16785  * @pre This method can be called if SCIP is in one of the following stages:
16786  * - \ref SCIP_STAGE_PRESOLVED
16787  * - \ref SCIP_STAGE_SOLVING
16788  */
16789 extern
16791  SCIP* scip, /**< SCIP data structure */
16792  SCIP_HEUR* heur, /**< heuristic that found the solution */
16793  SCIP_Bool* stored /**< stores whether given solution was good enough to keep */
16794  );
16795 
16796 /** checks solution for feasibility; if possible, adds it to storage by copying
16797  *
16798  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16799  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16800  *
16801  * @pre This method can be called if SCIP is in one of the following stages:
16802  * - \ref SCIP_STAGE_TRANSFORMED
16803  * - \ref SCIP_STAGE_INITPRESOLVE
16804  * - \ref SCIP_STAGE_PRESOLVING
16805  * - \ref SCIP_STAGE_EXITPRESOLVE
16806  * - \ref SCIP_STAGE_PRESOLVED
16807  * - \ref SCIP_STAGE_SOLVING
16808  *
16809  * @note Do not call during propagation, use heur_trysol instead.
16810  */
16811 extern
16813  SCIP* scip, /**< SCIP data structure */
16814  SCIP_SOL* sol, /**< primal CIP solution */
16815  SCIP_Bool printreason, /**< should all reasons of violations be printed? */
16816  SCIP_Bool checkbounds, /**< should the bounds of the variables be checked? */
16817  SCIP_Bool checkintegrality, /**< has integrality to be checked? */
16818  SCIP_Bool checklprows, /**< have current LP rows (both local and global) to be checked? */
16819  SCIP_Bool* stored /**< stores whether given solution was feasible and good enough to keep */
16820  );
16821 
16822 /** checks primal solution; if feasible, adds it to storage; solution is freed afterwards
16823  *
16824  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16825  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16826  *
16827  * @pre This method can be called if SCIP is in one of the following stages:
16828  * - \ref SCIP_STAGE_TRANSFORMED
16829  * - \ref SCIP_STAGE_INITPRESOLVE
16830  * - \ref SCIP_STAGE_PRESOLVING
16831  * - \ref SCIP_STAGE_EXITPRESOLVE
16832  * - \ref SCIP_STAGE_PRESOLVED
16833  * - \ref SCIP_STAGE_SOLVING
16834  *
16835  * @note Do not call during propagation, use heur_trysol instead.
16836  */
16837 extern
16839  SCIP* scip, /**< SCIP data structure */
16840  SCIP_SOL** sol, /**< pointer to primal CIP solution; is cleared in function call */
16841  SCIP_Bool printreason, /**< should all reasons of violations be printed? */
16842  SCIP_Bool checkbounds, /**< should the bounds of the variables be checked? */
16843  SCIP_Bool checkintegrality, /**< has integrality to be checked? */
16844  SCIP_Bool checklprows, /**< have current LP rows (both local and global) to be checked? */
16845  SCIP_Bool* stored /**< stores whether solution was feasible and good enough to keep */
16846  );
16847 
16848 /** checks current LP/pseudo solution for feasibility; if possible, adds it to storage
16849  *
16850  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16851  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16852  *
16853  * @pre This method can be called if SCIP is in one of the following stages:
16854  * - \ref SCIP_STAGE_PRESOLVED
16855  * - \ref SCIP_STAGE_SOLVING
16856  */
16857 extern
16859  SCIP* scip, /**< SCIP data structure */
16860  SCIP_HEUR* heur, /**< heuristic that found the solution */
16861  SCIP_Bool printreason, /**< should all reasons of violations be printed? */
16862  SCIP_Bool checkintegrality, /**< has integrality to be checked? */
16863  SCIP_Bool checklprows, /**< have current LP rows (both local and global) to be checked? */
16864  SCIP_Bool* stored /**< stores whether given solution was feasible and good enough to keep */
16865  );
16866 
16867 /** checks solution for feasibility without adding it to the solution store
16868  *
16869  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16870  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16871  *
16872  * @pre This method can be called if SCIP is in one of the following stages:
16873  * - \ref SCIP_STAGE_PROBLEM
16874  * - \ref SCIP_STAGE_TRANSFORMED
16875  * - \ref SCIP_STAGE_INITPRESOLVE
16876  * - \ref SCIP_STAGE_PRESOLVING
16877  * - \ref SCIP_STAGE_EXITPRESOLVE
16878  * - \ref SCIP_STAGE_PRESOLVED
16879  * - \ref SCIP_STAGE_INITSOLVE
16880  * - \ref SCIP_STAGE_SOLVING
16881  * - \ref SCIP_STAGE_SOLVED
16882  */
16883 extern
16885  SCIP* scip, /**< SCIP data structure */
16886  SCIP_SOL* sol, /**< primal CIP solution */
16887  SCIP_Bool printreason, /**< should all reasons of violations be printed? */
16888  SCIP_Bool checkbounds, /**< should the bounds of the variables be checked? */
16889  SCIP_Bool checkintegrality, /**< has integrality to be checked? */
16890  SCIP_Bool checklprows, /**< have current LP rows (both local and global) to be checked? */
16891  SCIP_Bool* feasible /**< stores whether given solution is feasible */
16892  );
16893 
16894 /** checks solution for feasibility in original problem without adding it to the solution store;
16895  * this method is used to double check a solution in order to validate the presolving process
16896  *
16897  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16898  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16899  *
16900  * @pre This method can be called if SCIP is in one of the following stages:
16901  * - \ref SCIP_STAGE_PROBLEM
16902  * - \ref SCIP_STAGE_TRANSFORMED
16903  * - \ref SCIP_STAGE_INITPRESOLVE
16904  * - \ref SCIP_STAGE_PRESOLVING
16905  * - \ref SCIP_STAGE_EXITPRESOLVE
16906  * - \ref SCIP_STAGE_PRESOLVED
16907  * - \ref SCIP_STAGE_INITSOLVE
16908  * - \ref SCIP_STAGE_SOLVING
16909  * - \ref SCIP_STAGE_SOLVED
16910  */
16911 extern
16913  SCIP* scip, /**< SCIP data structure */
16914  SCIP_SOL* sol, /**< primal CIP solution */
16915  SCIP_Bool* feasible, /**< stores whether given solution is feasible */
16916  SCIP_Bool printreason, /**< should the reason for the violation be printed? */
16917  SCIP_Bool completely /**< should all violations be checked? */
16918  );
16919 
16920 /** return whether a primal ray is stored that proves unboundedness of the LP relaxation
16921  *
16922  * @return return whether a primal ray is stored that proves unboundedness of the LP relaxation
16923  *
16924  * @pre This method can be called if SCIP is in one of the following stages:
16925  * - \ref SCIP_STAGE_SOLVING
16926  * - \ref SCIP_STAGE_SOLVED
16927  */
16928 extern
16930  SCIP* scip /**< SCIP data structure */
16931  );
16932 
16933 /** gets value of given variable in primal ray causing unboundedness of the LP relaxation;
16934  * should only be called if such a ray is stored (check with SCIPhasPrimalRay())
16935  *
16936  * @return value of given variable in primal ray causing unboundedness of the LP relaxation
16937  *
16938  * @pre This method can be called if SCIP is in one of the following stages:
16939  * - \ref SCIP_STAGE_SOLVING
16940  * - \ref SCIP_STAGE_SOLVED
16941  */
16942 extern
16944  SCIP* scip, /**< SCIP data structure */
16945  SCIP_VAR* var /**< variable to get value for */
16946  );
16947 
16948 /**@} */
16949 
16950 
16951 
16952 
16953 /*
16954  * event methods
16955  */
16956 
16957 /**@name Event Methods
16958  *
16959  * Events can only be caught during the operation on the transformed problem.
16960  * Events on variables can only be caught for transformed variables.
16961  * If you want to catch an event for an original variable, you have to get the corresponding transformed variable
16962  * with a call to SCIPgetTransformedVar() and catch the event on the transformed variable.
16963  */
16964 /**@{ */
16965 
16966 /** catches a global (not variable or row dependent) event
16967  *
16968  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16969  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16970  *
16971  * @pre This method can be called if @p scip is in one of the following stages:
16972  * - \ref SCIP_STAGE_TRANSFORMING
16973  * - \ref SCIP_STAGE_TRANSFORMED
16974  * - \ref SCIP_STAGE_INITPRESOLVE
16975  * - \ref SCIP_STAGE_PRESOLVING
16976  * - \ref SCIP_STAGE_EXITPRESOLVE
16977  * - \ref SCIP_STAGE_PRESOLVED
16978  * - \ref SCIP_STAGE_INITSOLVE
16979  * - \ref SCIP_STAGE_SOLVING
16980  * - \ref SCIP_STAGE_SOLVED
16981  * - \ref SCIP_STAGE_EXITSOLVE
16982  * - \ref SCIP_STAGE_FREETRANS
16983  */
16984 extern
16986  SCIP* scip, /**< SCIP data structure */
16987  SCIP_EVENTTYPE eventtype, /**< event type mask to select events to catch */
16988  SCIP_EVENTHDLR* eventhdlr, /**< event handler to process events with */
16989  SCIP_EVENTDATA* eventdata, /**< event data to pass to the event handler when processing this event */
16990  int* filterpos /**< pointer to store position of event filter entry, or NULL */
16991  );
16992 
16993 /** drops a global event (stops to track event)
16994  *
16995  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16996  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16997  *
16998  * @pre This method can be called if @p scip is in one of the following stages:
16999  * - \ref SCIP_STAGE_TRANSFORMING
17000  * - \ref SCIP_STAGE_TRANSFORMED
17001  * - \ref SCIP_STAGE_INITPRESOLVE
17002  * - \ref SCIP_STAGE_PRESOLVING
17003  * - \ref SCIP_STAGE_EXITPRESOLVE
17004  * - \ref SCIP_STAGE_PRESOLVED
17005  * - \ref SCIP_STAGE_INITSOLVE
17006  * - \ref SCIP_STAGE_SOLVING
17007  * - \ref SCIP_STAGE_SOLVED
17008  * - \ref SCIP_STAGE_EXITSOLVE
17009  * - \ref SCIP_STAGE_FREETRANS
17010  */
17011 extern
17013  SCIP* scip, /**< SCIP data structure */
17014  SCIP_EVENTTYPE eventtype, /**< event type mask of dropped event */
17015  SCIP_EVENTHDLR* eventhdlr, /**< event handler to process events with */
17016  SCIP_EVENTDATA* eventdata, /**< event data to pass to the event handler when processing this event */
17017  int filterpos /**< position of event filter entry returned by SCIPcatchEvent(), or -1 */
17018  );
17019 
17020 /** catches an objective value or domain change event on the given transformed variable
17021  *
17022  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17023  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17024  *
17025  * @pre This method can be called if @p scip is in one of the following stages:
17026  * - \ref SCIP_STAGE_TRANSFORMING
17027  * - \ref SCIP_STAGE_TRANSFORMED
17028  * - \ref SCIP_STAGE_INITPRESOLVE
17029  * - \ref SCIP_STAGE_PRESOLVING
17030  * - \ref SCIP_STAGE_EXITPRESOLVE
17031  * - \ref SCIP_STAGE_PRESOLVED
17032  * - \ref SCIP_STAGE_INITSOLVE
17033  * - \ref SCIP_STAGE_SOLVING
17034  * - \ref SCIP_STAGE_SOLVED
17035  * - \ref SCIP_STAGE_EXITSOLVE
17036  * - \ref SCIP_STAGE_FREETRANS
17037  */
17038 extern
17040  SCIP* scip, /**< SCIP data structure */
17041  SCIP_VAR* var, /**< transformed variable to catch event for */
17042  SCIP_EVENTTYPE eventtype, /**< event type mask to select events to catch */
17043  SCIP_EVENTHDLR* eventhdlr, /**< event handler to process events with */
17044  SCIP_EVENTDATA* eventdata, /**< event data to pass to the event handler when processing this event */
17045  int* filterpos /**< pointer to store position of event filter entry, or NULL */
17046  );
17047 
17048 /** drops an objective value or domain change event (stops to track event) on the given transformed variable
17049  *
17050  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17051  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17052  *
17053  * @pre This method can be called if @p scip is in one of the following stages:
17054  * - \ref SCIP_STAGE_TRANSFORMING
17055  * - \ref SCIP_STAGE_TRANSFORMED
17056  * - \ref SCIP_STAGE_INITPRESOLVE
17057  * - \ref SCIP_STAGE_PRESOLVING
17058  * - \ref SCIP_STAGE_EXITPRESOLVE
17059  * - \ref SCIP_STAGE_PRESOLVED
17060  * - \ref SCIP_STAGE_INITSOLVE
17061  * - \ref SCIP_STAGE_SOLVING
17062  * - \ref SCIP_STAGE_SOLVED
17063  * - \ref SCIP_STAGE_EXITSOLVE
17064  * - \ref SCIP_STAGE_FREETRANS
17065  */
17066 extern
17068  SCIP* scip, /**< SCIP data structure */
17069  SCIP_VAR* var, /**< transformed variable to drop event for */
17070  SCIP_EVENTTYPE eventtype, /**< event type mask of dropped event */
17071  SCIP_EVENTHDLR* eventhdlr, /**< event handler to process events with */
17072  SCIP_EVENTDATA* eventdata, /**< event data to pass to the event handler when processing this event */
17073  int filterpos /**< position of event filter entry returned by SCIPcatchVarEvent(), or -1 */
17074  );
17075 
17076 /** catches a row coefficient, constant, or side change event on the given row
17077  *
17078  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17079  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17080  *
17081  * @pre This method can be called if @p scip is in one of the following stages:
17082  * - \ref SCIP_STAGE_TRANSFORMING
17083  * - \ref SCIP_STAGE_TRANSFORMED
17084  * - \ref SCIP_STAGE_INITPRESOLVE
17085  * - \ref SCIP_STAGE_PRESOLVING
17086  * - \ref SCIP_STAGE_EXITPRESOLVE
17087  * - \ref SCIP_STAGE_PRESOLVED
17088  * - \ref SCIP_STAGE_INITSOLVE
17089  * - \ref SCIP_STAGE_SOLVING
17090  * - \ref SCIP_STAGE_SOLVED
17091  * - \ref SCIP_STAGE_EXITSOLVE
17092  * - \ref SCIP_STAGE_FREETRANS
17093  */
17094 extern
17096  SCIP* scip, /**< SCIP data structure */
17097  SCIP_ROW* row, /**< linear row to catch event for */
17098  SCIP_EVENTTYPE eventtype, /**< event type mask to select events to catch */
17099  SCIP_EVENTHDLR* eventhdlr, /**< event handler to process events with */
17100  SCIP_EVENTDATA* eventdata, /**< event data to pass to the event handler when processing this event */
17101  int* filterpos /**< pointer to store position of event filter entry, or NULL */
17102  );
17103 
17104 /** drops a row coefficient, constant, or side change event (stops to track event) on the given row
17105  *
17106  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17107  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17108  *
17109  * @pre This method can be called if @p scip is in one of the following stages:
17110  * - \ref SCIP_STAGE_TRANSFORMING
17111  * - \ref SCIP_STAGE_TRANSFORMED
17112  * - \ref SCIP_STAGE_INITPRESOLVE
17113  * - \ref SCIP_STAGE_PRESOLVING
17114  * - \ref SCIP_STAGE_EXITPRESOLVE
17115  * - \ref SCIP_STAGE_PRESOLVED
17116  * - \ref SCIP_STAGE_INITSOLVE
17117  * - \ref SCIP_STAGE_SOLVING
17118  * - \ref SCIP_STAGE_SOLVED
17119  * - \ref SCIP_STAGE_EXITSOLVE
17120  * - \ref SCIP_STAGE_FREETRANS
17121  */
17122 extern
17124  SCIP* scip, /**< SCIP data structure */
17125  SCIP_ROW* row, /**< linear row to drop event for */
17126  SCIP_EVENTTYPE eventtype, /**< event type mask of dropped event */
17127  SCIP_EVENTHDLR* eventhdlr, /**< event handler to process events with */
17128  SCIP_EVENTDATA* eventdata, /**< event data to pass to the event handler when processing this event */
17129  int filterpos /**< position of event filter entry returned by SCIPcatchVarEvent(), or -1 */
17130  );
17131 
17132 /**@} */
17133 
17134 
17135 
17136 
17137 /*
17138  * tree methods
17139  */
17140 
17141 /**@name Tree Methods */
17142 /**@{ */
17143 
17144 /** gets current node in the tree
17145  *
17146  * @return the current node of the search tree
17147  *
17148  * @pre This method can be called if @p scip is in one of the following stages:
17149  * - \ref SCIP_STAGE_INITPRESOLVE
17150  * - \ref SCIP_STAGE_PRESOLVING
17151  * - \ref SCIP_STAGE_EXITPRESOLVE
17152  * - \ref SCIP_STAGE_SOLVING
17153  */
17154 extern
17156  SCIP* scip /**< SCIP data structure */
17157  );
17158 
17159 /** gets the root node of the tree
17160  *
17161  * @return the root node of the search tree
17162  *
17163  * @pre This method can be called if @p scip is in one of the following stages:
17164  * - \ref SCIP_STAGE_INITPRESOLVE
17165  * - \ref SCIP_STAGE_PRESOLVING
17166  * - \ref SCIP_STAGE_EXITPRESOLVE
17167  * - \ref SCIP_STAGE_SOLVING
17168  */
17169 extern
17171  SCIP* scip /**< SCIP data structure */
17172  );
17173 
17174 /** gets the effective root depth, i.e., the depth of the deepest node which is part of all paths from the root node
17175  * to the unprocessed nodes.
17176  *
17177  * @return effective root depth
17178  *
17179  * @pre This method can be called if @p scip is in one of the following stages:
17180  * - \ref SCIP_STAGE_SOLVING
17181  */
17182 extern
17184  SCIP* scip /**< SCIP data structure */
17185  );
17186 
17187 /** returns whether the current node is already solved and only propagated again
17188  *
17189  * @return TRUE is returned if \SCIP performance repropagation, otherwise FALSE.
17190  *
17191  * @pre This method can be called if @p scip is in one of the following stages:
17192  * - \ref SCIP_STAGE_INITPRESOLVE
17193  * - \ref SCIP_STAGE_PRESOLVING
17194  * - \ref SCIP_STAGE_EXITPRESOLVE
17195  * - \ref SCIP_STAGE_SOLVING
17196  */
17197 extern
17199  SCIP* scip /**< SCIP data structure */
17200  );
17201 
17202 /** gets children of focus node along with the number of children
17203  *
17204  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17205  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17206  *
17207  * @pre This method can be called if @p scip is in one of the following stages:
17208  * - \ref SCIP_STAGE_SOLVING
17209  */
17210 extern
17212  SCIP* scip, /**< SCIP data structure */
17213  SCIP_NODE*** children, /**< pointer to store children array, or NULL if not needed */
17214  int* nchildren /**< pointer to store number of children, or NULL if not needed */
17215  );
17216 
17217 /** gets number of children of focus node
17218  *
17219  * @return number of children of the focus node
17220  *
17221  * @pre This method can be called if @p scip is in one of the following stages:
17222  * - \ref SCIP_STAGE_SOLVING
17223  */
17224 extern
17225 int SCIPgetNChildren(
17226  SCIP* scip /**< SCIP data structure */
17227  );
17228 
17229 /** gets siblings of focus node along with the number of siblings
17230  *
17231  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17232  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17233  *
17234  * @pre This method can be called if @p scip is in one of the following stages:
17235  * - \ref SCIP_STAGE_SOLVING
17236  */
17237 extern
17239  SCIP* scip, /**< SCIP data structure */
17240  SCIP_NODE*** siblings, /**< pointer to store siblings array, or NULL if not needed */
17241  int* nsiblings /**< pointer to store number of siblings, or NULL if not needed */
17242  );
17243 
17244 /** gets number of siblings of focus node
17245  *
17246  * @return the number of siblings of focus node
17247  *
17248  * @pre This method can be called if @p scip is in one of the following stages:
17249  * - \ref SCIP_STAGE_SOLVING
17250  */
17251 extern
17252 int SCIPgetNSiblings(
17253  SCIP* scip /**< SCIP data structure */
17254  );
17255 
17256 /** gets leaves of the tree along with the number of leaves
17257  *
17258  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17259  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17260  *
17261  * @pre This method can be called if @p scip is in one of the following stages:
17262  * - \ref SCIP_STAGE_SOLVING
17263  */
17264 extern
17266  SCIP* scip, /**< SCIP data structure */
17267  SCIP_NODE*** leaves, /**< pointer to store leaves array, or NULL if not needed */
17268  int* nleaves /**< pointer to store number of leaves, or NULL if not needed */
17269  );
17270 
17271 /** gets number of leaves in the tree
17272  *
17273  * @return the number of leaves in the tree
17274  *
17275  * @pre This method can be called if @p scip is in one of the following stages:
17276  * - \ref SCIP_STAGE_SOLVING
17277  */
17278 extern
17279 int SCIPgetNLeaves(
17280  SCIP* scip /**< SCIP data structure */
17281  );
17282 
17283 /** gets the best child of the focus node w.r.t. the node selection priority assigned by the branching rule
17284  *
17285  * @return the best child of the focus node w.r.t. the node selection priority assigned by the branching rule
17286  *
17287  * @pre This method can be called if @p scip is in one of the following stages:
17288  * - \ref SCIP_STAGE_SOLVING
17289  */
17290 extern
17292  SCIP* scip /**< SCIP data structure */
17293  );
17294 
17295 /** gets the best sibling of the focus node w.r.t. the node selection priority assigned by the branching rule
17296  *
17297  * @return the best sibling of the focus node w.r.t. the node selection priority assigned by the branching rule
17298  *
17299  * @pre This method can be called if @p scip is in one of the following stages:
17300  * - \ref SCIP_STAGE_SOLVING
17301  */
17302 extern
17304  SCIP* scip /**< SCIP data structure */
17305  );
17306 
17307 /** gets the best child of the focus node w.r.t. the node selection strategy
17308  *
17309  * @return the best child of the focus node w.r.t. the node selection strategy
17310  *
17311  * @pre This method can be called if @p scip is in one of the following stages:
17312  * - \ref SCIP_STAGE_SOLVING
17313  */
17314 extern
17316  SCIP* scip /**< SCIP data structure */
17317  );
17318 
17319 /** gets the best sibling of the focus node w.r.t. the node selection strategy
17320  *
17321  * @return the best sibling of the focus node w.r.t. the node selection strategy
17322  *
17323  * @pre This method can be called if @p scip is in one of the following stages:
17324  * - \ref SCIP_STAGE_SOLVING
17325  */
17326 extern
17328  SCIP* scip /**< SCIP data structure */
17329  );
17330 
17331 /** gets the best leaf from the node queue w.r.t. the node selection strategy
17332  *
17333  * @return the best leaf from the node queue w.r.t. the node selection strategy
17334  *
17335  * @pre This method can be called if @p scip is in one of the following stages:
17336  * - \ref SCIP_STAGE_SOLVING
17337  */
17338 extern
17340  SCIP* scip /**< SCIP data structure */
17341  );
17342 
17343 /** gets the best node from the tree (child, sibling, or leaf) w.r.t. the node selection strategy
17344  *
17345  * @return the best node from the tree (child, sibling, or leaf) w.r.t. the node selection strategy
17346  *
17347  * @pre This method can be called if @p scip is in one of the following stages:
17348  * - \ref SCIP_STAGE_SOLVING
17349  */
17350 extern
17352  SCIP* scip /**< SCIP data structure */
17353  );
17354 
17355 /** gets the node with smallest lower bound from the tree (child, sibling, or leaf)
17356  *
17357  * @return the node with smallest lower bound from the tree (child, sibling, or leaf)
17358  *
17359  * @pre This method can be called if @p scip is in one of the following stages:
17360  * - \ref SCIP_STAGE_SOLVING
17361  */
17362 extern
17364  SCIP* scip /**< SCIP data structure */
17365  );
17366 
17367 /** access to all data of open nodes (leaves, children, and siblings)
17368  *
17369  * @pre This method can be called if @p scip is in one of the following stages:
17370  * - \ref SCIP_STAGE_SOLVING
17371  */
17372 extern
17374  SCIP* scip, /**< SCIP data structure */
17375  SCIP_NODE*** leaves, /**< pointer to store the leaves, or NULL if not needed */
17376  SCIP_NODE*** children, /**< pointer to store the children, or NULL if not needed */
17377  SCIP_NODE*** siblings, /**< pointer to store the siblings, or NULL if not needed */
17378  int* nleaves, /**< pointer to store the number of leaves, or NULL */
17379  int* nchildren, /**< pointer to store the number of children, or NULL */
17380  int* nsiblings /**< pointer to store the number of siblings, or NULL */
17381  );
17382 
17383 /** cuts off node and whole sub tree from branch and bound tree
17384  *
17385  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17386  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17387  *
17388  * @pre This method can be called if @p scip is in one of the following stages:
17389  * - \ref SCIP_STAGE_SOLVING
17390  */
17391 extern
17393  SCIP* scip, /**< SCIP data structure */
17394  SCIP_NODE* node /**< node that should be cut off */
17395  );
17396 
17397 /** marks the given node to be propagated again the next time a node of its subtree is processed
17398  *
17399  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17400  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17401  *
17402  * @pre This method can be called if @p scip is in one of the following stages:
17403  * - \ref SCIP_STAGE_SOLVING
17404  */
17405 extern
17407  SCIP* scip, /**< SCIP data structure */
17408  SCIP_NODE* node /**< node that should be propagated again */
17409  );
17410 
17411 /** returns depth of first node in active path that is marked being cutoff
17412  *
17413  * @return depth of first node in active path that is marked being cutoff
17414  *
17415  * @pre This method can be called if @p scip is in one of the following stages:
17416  * - \ref SCIP_STAGE_SOLVING
17417  */
17418 extern
17419 int SCIPgetCutoffdepth(
17420  SCIP* scip /**< SCIP data structure */
17421  );
17422 
17423 /** returns depth of first node in active path that has to be propagated again
17424  *
17425  * @return depth of first node in active path that has to be propagated again
17426  *
17427  * @pre This method can be called if @p scip is in one of the following stages:
17428  * - \ref SCIP_STAGE_SOLVING
17429  */
17430 extern
17431 int SCIPgetRepropdepth(
17432  SCIP* scip /**< SCIP data structure */
17433  );
17434 
17435 /** prints all branching decisions on variables from the root to the given node
17436  *
17437  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17438  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17439  *
17440  * @pre This method can be called if @p scip is in one of the following stages:
17441  * - \ref SCIP_STAGE_SOLVING
17442  */
17443 extern
17445  SCIP* scip, /**< SCIP data structure */
17446  SCIP_NODE* node, /**< node data */
17447  FILE* file /**< output file (or NULL for standard output) */
17448  );
17449 
17450 /** sets whether the LP should be solved at the focus node
17451  *
17452  * @note In order to have an effect, this method needs to be called after a node is focused but before the LP is
17453  * solved.
17454  *
17455  * @pre This method can be called if @p scip is in one of the following stages:
17456  * - \ref SCIP_STAGE_SOLVING
17457  */
17458 extern
17459 void SCIPsetFocusnodeLP(
17460  SCIP* scip, /**< SCIP data structure */
17461  SCIP_Bool solvelp /**< should the LP be solved? */
17462  );
17463 
17464 /**@} */
17465 
17466 
17467 /*
17468  * reoptimization methods
17469  */
17470 
17471 /**@name Reoptimization Methods */
17472 /**@{ */
17473 
17474 /** return the ids of child nodes stored in the reoptimization tree
17475  *
17476  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17477  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17478  *
17479  * @pre This method can be called if @p scip is in one of the following stages:
17480  * - \ref SCIP_STAGE_PRESOLVED
17481  * - \ref SCIP_STAGE_SOLVING
17482  * - \ref SCIP_STAGE_SOLVED
17483  */
17484 extern
17486  SCIP* scip, /**< SCIP data structure */
17487  SCIP_NODE* node, /**< node of the search tree */
17488  unsigned int* ids, /**< array to store the ids of child nodes */
17489  int mem, /**< allocated memory */
17490  int* nids /**< number of child nodes */
17491  );
17492 
17493 /** return the ids of all leave nodes store in the reoptimization tree induced by the given node
17494  *
17495  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17496  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17497  *
17498  * @pre This method can be called if @p scip is in one of the following stages:
17499  * - \ref SCIP_STAGE_PRESOLVED
17500  * - \ref SCIP_STAGE_SOLVING
17501  * - \ref SCIP_STAGE_SOLVED
17502  */
17503 extern
17505  SCIP* scip, /**< SCIP data strcuture */
17506  SCIP_NODE* node, /**< node of the search tree */
17507  unsigned int* ids, /**< array of ids */
17508  int mem, /**< allocated memory */
17509  int* nids /**< number of child nodes */
17510  );
17511 
17512 /** returns the number of nodes in the reoptimization tree induced by @p node. if @p node == NULL, the method
17513  * method returns the number of nodes of the whole reoptimization tree.
17514  */
17515 extern
17516 int SCIPgetNReoptnodes(
17517  SCIP* scip, /**< SCIP data structure */
17518  SCIP_NODE* node /**< node of the search tree */
17519  );
17520 
17521 /** returns the number of leave nodes of the subtree induced by @p node. if @p node == NULL, the method
17522  * method returns the number of leaf nodes of the whole reoptimization tree.
17523  */
17524 extern
17526  SCIP* scip, /**< SCIP data structure */
17527  SCIP_NODE* node /**< node of the search tree */
17528  );
17529 
17530 /** gets the node of the reoptimization tree corresponding to the unique @p id */
17532  SCIP* scip, /**< SCIP data structure */
17533  unsigned int id /**< unique id */
17534  );
17535 
17536 /** add a variable bound change to a given reoptnode
17537  *
17538  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17539  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17540  *
17541  * @pre This method can be called if @p scip is in one of the following stages:
17542  * - \ref SCIP_STAGE_PRESOLVED
17543  * - \ref SCIP_STAGE_SOLVING
17544  * - \ref SCIP_STAGE_SOLVED
17545  */
17546 extern
17548  SCIP* scip, /**< SCIP data structure */
17549  SCIP_REOPTNODE* reoptnode, /**< node of the reoptimization tree */
17550  SCIP_VAR* var, /**< variable pointer */
17551  SCIP_Real val, /**< value of the variable */
17552  SCIP_BOUNDTYPE boundtype /**< bound type of the variable value */
17553  );
17554 
17555 /** set the @p representation as the new search frontier
17556  *
17557  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17558  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17559  *
17560  * @pre This method can be called if @p scip is in one of the following stages:
17561  * - \ref SCIP_STAGE_PRESOLVED
17562  */
17563 extern
17565  SCIP* scip, /**< SCIP data structure */
17566  SCIP_REOPTNODE** representation, /**< array of representatives */
17567  int nrepresentatives, /**< number of representatives */
17568  SCIP_Bool* success /**< pointer to store the result */
17569  );
17570 
17571 /** add stored constraint to a reoptimization node
17572  *
17573  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17574  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17575  *
17576  * @pre This method can be called if @p scip is in one of the following stages:
17577  * - \ref SCIP_STAGE_PRESOLVED
17578  */
17579 extern
17581  SCIP* scip, /**< SCIP data structure */
17582  SCIP_REOPTNODE* reoptnode, /**< node of the reoptimization tree */
17583  SCIP_VAR** vars, /**< array of variables */
17584  SCIP_Real* vals, /**< array of variable bounds */
17585  int nvars, /**< number of variables */
17586  REOPT_CONSTYPE constype /**< type of the constraint */
17587  );
17588 
17589 /** return the branching path stored in the reoptree at ID id */
17590 extern
17592  SCIP* scip, /**< SCIP data structure */
17593  SCIP_REOPTNODE* reoptnode, /**< node of the reoptimization tree */
17594  SCIP_VAR** vars, /**< array of variables */
17595  SCIP_Real* vals, /**< array of variable bounds */
17596  SCIP_BOUNDTYPE* boundtypes, /**< array of bound types */
17597  int mem, /**< allocated memory */
17598  int* nvars, /**< number of variables */
17599  int* nafterdualvars /**< number of variables directly after the first based on dual information */
17600  );
17601 
17602 /** initialize a set of empty reoptimization nodes
17603  *
17604  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17605  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17606  *
17607  * @pre This method can be called if @p scip is in one of the following stages:
17608  * - \ref SCIP_STAGE_PRESOLVED
17609  */
17610 extern
17612  SCIP* scip, /**< SCIP data structure */
17613  SCIP_REOPTNODE** representatives, /**< array of representatives */
17614  int nrepresentatives /**< number of representatives */
17615  );
17616 
17617 /** reset a set of initialized reoptimization nodes
17618  *
17619  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17620  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17621  *
17622  * @pre This method can be called if @p scip is in one of the following stages:
17623  * - \ref SCIP_STAGE_PRESOLVED
17624  */
17626  SCIP* scip, /**< SCIP data structure */
17627  SCIP_REOPTNODE** representatives, /**< array of representatives */
17628  int nrepresentatives /**< number of representatives */
17629  );
17630 
17631 /** free a set of initialized reoptimization nodes
17632  *
17633  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17634  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17635  *
17636  * @pre This method can be called if @p scip is in one of the following stages:
17637  * - \ref SCIP_STAGE_PRESOLVED
17638  */
17639 extern
17641  SCIP* scip, /**< SCIP data structure */
17642  SCIP_REOPTNODE** representatives, /**< array of representatives */
17643  int nrepresentatives /**< number of representatives */
17644  );
17645 
17646 /** reactivate the given @p reoptnode and split them into several nodes if necessary
17647  *
17648  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17649  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17650  *
17651  * @pre This method can be called if @p scip is in one of the following stages:
17652  * - \ref SCIP_STAGE_SOLVING
17653  * - \ref SCIP_STAGE_SOLVED
17654  */
17655 extern
17657  SCIP* scip, /**< SCIP data structure */
17658  SCIP_REOPTNODE* reoptnode, /**< node to reactivate */
17659  unsigned int id, /**< unique id of the reoptimization node */
17660  SCIP_Real estimate, /**< estimate of the child nodes that should be created */
17661  SCIP_NODE** childnodes, /**< array to store the created child nodes */
17662  int* ncreatedchilds, /**< pointer to store number of created child nodes */
17663  int* naddedconss, /**< pointer to store number of generated constraints */
17664  int childnodessize, /**< available size of childnodes array */
17665  SCIP_Bool* success /**< pointer store the result*/
17666  );
17667 
17668 /** remove the stored information about bound changes based in dual information
17669  *
17670  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17671  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17672  *
17673  * @pre This method can be called if @p scip is in one of the following stages:
17674  * - \ref SCIP_STAGE_SOLVING
17675  * - \ref SCIP_STAGE_SOLVED
17676  */
17677 extern
17679  SCIP* scip, /**< SCIP data structure */
17680  SCIP_NODE* node /**< node of the search tree */
17681  );
17682 
17683 /** splits the root into several nodes and moves the child nodes of the root to one of the created nodes
17684  *
17685  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17686  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17687  *
17688  * @pre This method can be called if @p scip is in one of the following stages:
17689  * - \ref SCIP_STAGE_TRANSFORMED
17690  * - \ref SCIP_STAGE_SOLVING
17691  */
17692 extern
17694  SCIP* scip, /**< SCIP data structure */
17695  int* ncreatedchilds, /**< pointer to store the number of created nodes */
17696  int* naddedconss /**< pointer to store the number added constraints */
17697  );
17698 
17699 /** returns if a node should be reoptimized */
17700 extern
17702  SCIP* scip, /**< SCIP data structure */
17703  SCIP_NODE* node /**< node of the search tree */
17704  );
17705 
17706 /** deletes the given reoptimization node
17707  *
17708  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17709  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17710  *
17711  * @pre This method can be called if @p scip is in one of the following stages:
17712  * - \ref SCIP_STAGE_SOLVING
17713  */
17714 extern
17716  SCIP* scip, /**< SCIP data structure */
17717  SCIP_REOPTNODE** reoptnode /**< node of the reoptimization tree */
17718  );
17719 
17720 /** return the similarity between two objective functions */
17721 extern
17723  SCIP* scip, /**< SCIP data structure */
17724  int run1, /**< number of run */
17725  int run2 /**< number of run */
17726  );
17727 
17728 /** check the changes of teh variable coefficient in the objective function */
17729 extern
17730 void SCIPgetVarCoefChg(
17731  SCIP* scip, /**< SCIP data structure */
17732  int varidx, /**< index of variable */
17733  SCIP_Bool* negated, /**< coefficient changed the sign */
17734  SCIP_Bool* entering, /**< coefficient gets non-zero coefficient */
17735  SCIP_Bool* leaving /**< coefficient gets zero coefficient */
17736  );
17737 
17738 /*
17739  * statistic methods
17740  */
17741 
17742 /**@name Statistic Methods */
17743 /**@{ */
17744 
17745 /** gets number of branch and bound runs performed, including the current run
17746  *
17747  * @return the number of branch and bound runs performed, including the current run
17748  *
17749  * @pre This method can be called if SCIP is in one of the following stages:
17750  * - \ref SCIP_STAGE_PROBLEM
17751  * - \ref SCIP_STAGE_TRANSFORMING
17752  * - \ref SCIP_STAGE_TRANSFORMED
17753  * - \ref SCIP_STAGE_INITPRESOLVE
17754  * - \ref SCIP_STAGE_PRESOLVING
17755  * - \ref SCIP_STAGE_EXITPRESOLVE
17756  * - \ref SCIP_STAGE_PRESOLVED
17757  * - \ref SCIP_STAGE_INITSOLVE
17758  * - \ref SCIP_STAGE_SOLVING
17759  * - \ref SCIP_STAGE_SOLVED
17760  * - \ref SCIP_STAGE_EXITSOLVE
17761  * - \ref SCIP_STAGE_FREETRANS
17762  */
17763 extern
17764 int SCIPgetNRuns(
17765  SCIP* scip /**< SCIP data structure */
17766  );
17767 
17768 /** gets number of reoptimization runs performed, including the current run
17769  *
17770  * @return the number of reoptimization runs performed, including the current run
17771  *
17772  * @pre This method can be called if SCIP is in one of the following stages:
17773  * - \ref SCIP_STAGE_PROBLEM
17774  * - \ref SCIP_STAGE_TRANSFORMING
17775  * - \ref SCIP_STAGE_TRANSFORMED
17776  * - \ref SCIP_STAGE_INITPRESOLVE
17777  * - \ref SCIP_STAGE_PRESOLVING
17778  * - \ref SCIP_STAGE_EXITPRESOLVE
17779  * - \ref SCIP_STAGE_PRESOLVED
17780  * - \ref SCIP_STAGE_INITSOLVE
17781  * - \ref SCIP_STAGE_SOLVING
17782  * - \ref SCIP_STAGE_SOLVED
17783  * - \ref SCIP_STAGE_EXITSOLVE
17784  * - \ref SCIP_STAGE_FREETRANS
17785  */
17786 extern
17787 int SCIPgetNReoptRuns(
17788  SCIP* scip /**< SCIP data structure */
17789  );
17790 
17791 /** gets number of processed nodes in current run, including the focus node
17792  *
17793  * @return the number of processed nodes in current run, including the focus node
17794  *
17795  * @pre This method can be called if SCIP is in one of the following stages:
17796  * - \ref SCIP_STAGE_PROBLEM
17797  * - \ref SCIP_STAGE_TRANSFORMING
17798  * - \ref SCIP_STAGE_TRANSFORMED
17799  * - \ref SCIP_STAGE_INITPRESOLVE
17800  * - \ref SCIP_STAGE_PRESOLVING
17801  * - \ref SCIP_STAGE_EXITPRESOLVE
17802  * - \ref SCIP_STAGE_PRESOLVED
17803  * - \ref SCIP_STAGE_INITSOLVE
17804  * - \ref SCIP_STAGE_SOLVING
17805  * - \ref SCIP_STAGE_SOLVED
17806  * - \ref SCIP_STAGE_EXITSOLVE
17807  * - \ref SCIP_STAGE_FREETRANS
17808  */
17809 extern
17811  SCIP* scip /**< SCIP data structure */
17812  );
17813 
17814 /** gets total number of processed nodes in all runs, including the focus node
17815  *
17816  * @return the total number of processed nodes in all runs, including the focus node
17817  *
17818  * @pre This method can be called if SCIP is in one of the following stages:
17819  * - \ref SCIP_STAGE_PROBLEM
17820  * - \ref SCIP_STAGE_TRANSFORMING
17821  * - \ref SCIP_STAGE_TRANSFORMED
17822  * - \ref SCIP_STAGE_INITPRESOLVE
17823  * - \ref SCIP_STAGE_PRESOLVING
17824  * - \ref SCIP_STAGE_EXITPRESOLVE
17825  * - \ref SCIP_STAGE_PRESOLVED
17826  * - \ref SCIP_STAGE_INITSOLVE
17827  * - \ref SCIP_STAGE_SOLVING
17828  * - \ref SCIP_STAGE_SOLVED
17829  * - \ref SCIP_STAGE_EXITSOLVE
17830  * - \ref SCIP_STAGE_FREETRANS
17831  */
17832 extern
17834  SCIP* scip /**< SCIP data structure */
17835  );
17836 
17837 /** gets number of nodes left in the tree (children + siblings + leaves)
17838  *
17839  * @return the number of nodes left in the tree (children + siblings + leaves)
17840  *
17841  * @pre This method can be called if SCIP is in one of the following stages:
17842  * - \ref SCIP_STAGE_PRESOLVED
17843  * - \ref SCIP_STAGE_SOLVING
17844  * - \ref SCIP_STAGE_SOLVED
17845  */
17846 extern
17847 int SCIPgetNNodesLeft(
17848  SCIP* scip /**< SCIP data structure */
17849  );
17850 
17851 /** gets total number of LPs solved so far
17852  *
17853  * @return the total number of LPs solved so far
17854  *
17855  * @pre This method can be called if SCIP is in one of the following stages:
17856  * - \ref SCIP_STAGE_PRESOLVED
17857  * - \ref SCIP_STAGE_SOLVING
17858  * - \ref SCIP_STAGE_SOLVED
17859  */
17860 extern
17862  SCIP* scip /**< SCIP data structure */
17863  );
17864 
17865 /** gets total number of iterations used so far in primal and dual simplex and barrier algorithm
17866  *
17867  * @return the total number of iterations used so far in primal and dual simplex and barrier algorithm
17868  *
17869  * @pre This method can be called if SCIP is in one of the following stages:
17870  * - \ref SCIP_STAGE_PRESOLVING
17871  * - \ref SCIP_STAGE_PRESOLVED
17872  * - \ref SCIP_STAGE_SOLVING
17873  * - \ref SCIP_STAGE_SOLVED
17874  */
17875 extern
17877  SCIP* scip /**< SCIP data structure */
17878  );
17879 
17880 /** gets total number of iterations used so far in primal and dual simplex and barrier algorithm for the root node
17881  *
17882  * @return the total number of iterations used so far in primal and dual simplex and barrier algorithm for the root node
17883  *
17884  * @pre This method can be called if SCIP is in one of the following stages:
17885  * - \ref SCIP_STAGE_PRESOLVED
17886  * - \ref SCIP_STAGE_SOLVING
17887  * - \ref SCIP_STAGE_SOLVED
17888  */
17889 extern
17891  SCIP* scip /**< SCIP data structure */
17892  );
17893 
17894 /** gets total number of iterations used in primal and dual simplex and barrier algorithm for the first LP at the root
17895  * node
17896  *
17897  * @return the total number of iterations used in primal and dual simplex and barrier algorithm for the first root LP
17898  *
17899  * @pre This method can be called if SCIP is in one of the following stages:
17900  * - \ref SCIP_STAGE_PRESOLVED
17901  * - \ref SCIP_STAGE_SOLVING
17902  * - \ref SCIP_STAGE_SOLVED
17903  */
17904 extern
17906  SCIP* scip /**< SCIP data structure */
17907  );
17908 
17909 /** gets total number of primal LPs solved so far
17910  *
17911  * @return the total number of primal LPs solved so far
17912  *
17913  * @pre This method can be called if SCIP is in one of the following stages:
17914  * - \ref SCIP_STAGE_PRESOLVED
17915  * - \ref SCIP_STAGE_SOLVING
17916  * - \ref SCIP_STAGE_SOLVED
17917  */
17918 extern
17920  SCIP* scip /**< SCIP data structure */
17921  );
17922 
17923 /** gets total number of iterations used so far in primal simplex
17924  *
17925  * @return total number of iterations used so far in primal simplex
17926  *
17927  * @pre This method can be called if SCIP is in one of the following stages:
17928  * - \ref SCIP_STAGE_PRESOLVED
17929  * - \ref SCIP_STAGE_SOLVING
17930  * - \ref SCIP_STAGE_SOLVED
17931  */
17932 extern
17934  SCIP* scip /**< SCIP data structure */
17935  );
17936 
17937 /** gets total number of dual LPs solved so far
17938  *
17939  * @return the total number of dual LPs solved so far
17940  *
17941  * @pre This method can be called if SCIP is in one of the following stages:
17942  * - \ref SCIP_STAGE_PRESOLVED
17943  * - \ref SCIP_STAGE_SOLVING
17944  * - \ref SCIP_STAGE_SOLVED
17945  */
17946 extern
17948  SCIP* scip /**< SCIP data structure */
17949  );
17950 
17951 /** gets total number of iterations used so far in dual simplex
17952  *
17953  * @return the total number of iterations used so far in dual simplex
17954  *
17955  * @pre This method can be called if SCIP is in one of the following stages:
17956  * - \ref SCIP_STAGE_PRESOLVED
17957  * - \ref SCIP_STAGE_SOLVING
17958  * - \ref SCIP_STAGE_SOLVED
17959  */
17960 extern
17962  SCIP* scip /**< SCIP data structure */
17963  );
17964 
17965 /** gets total number of barrier LPs solved so far
17966  *
17967  * @return the total number of barrier LPs solved so far
17968  *
17969  * @pre This method can be called if SCIP is in one of the following stages:
17970  * - \ref SCIP_STAGE_PRESOLVED
17971  * - \ref SCIP_STAGE_SOLVING
17972  * - \ref SCIP_STAGE_SOLVED
17973  */
17974 extern
17976  SCIP* scip /**< SCIP data structure */
17977  );
17978 
17979 /** gets total number of iterations used so far in barrier algorithm
17980  *
17981  * @return the total number of iterations used so far in barrier algorithm
17982  *
17983  * @pre This method can be called if SCIP is in one of the following stages:
17984  * - \ref SCIP_STAGE_PRESOLVED
17985  * - \ref SCIP_STAGE_SOLVING
17986  * - \ref SCIP_STAGE_SOLVED
17987  */
17988 extern
17990  SCIP* scip /**< SCIP data structure */
17991  );
17992 
17993 /** gets total number of LPs solved so far that were resolved from an advanced start basis
17994  *
17995  * @return the total number of LPs solved so far that were resolved from an advanced start basis
17996  *
17997  * @pre This method can be called if SCIP is in one of the following stages:
17998  * - \ref SCIP_STAGE_PRESOLVED
17999  * - \ref SCIP_STAGE_SOLVING
18000  * - \ref SCIP_STAGE_SOLVED
18001  */
18002 extern
18004  SCIP* scip /**< SCIP data structure */
18005  );
18006 
18007 /** gets total number of simplex iterations used so far in primal and dual simplex calls where an advanced start basis
18008  * was available
18009  *
18010  * @return the total number of simplex iterations used so far in primal and dual simplex calls where an advanced start
18011  * basis was available
18012  *
18013  * @pre This method can be called if SCIP is in one of the following stages:
18014  * - \ref SCIP_STAGE_PRESOLVED
18015  * - \ref SCIP_STAGE_SOLVING
18016  * - \ref SCIP_STAGE_SOLVED
18017  */
18018 extern
18020  SCIP* scip /**< SCIP data structure */
18021  );
18022 
18023 /** gets total number of primal LPs solved so far that were resolved from an advanced start basis
18024  *
18025  * @return the total number of primal LPs solved so far that were resolved from an advanced start basis
18026  *
18027  * @pre This method can be called if SCIP is in one of the following stages:
18028  * - \ref SCIP_STAGE_PRESOLVED
18029  * - \ref SCIP_STAGE_SOLVING
18030  * - \ref SCIP_STAGE_SOLVED
18031  */
18032 extern
18034  SCIP* scip /**< SCIP data structure */
18035  );
18036 
18037 /** gets total number of simplex iterations used so far in primal simplex calls where an advanced start basis
18038  * was available
18039  *
18040  * @return the total number of simplex iterations used so far in primal simplex calls where an advanced start
18041  * basis was available
18042  *
18043  * @pre This method can be called if SCIP is in one of the following stages:
18044  * - \ref SCIP_STAGE_PRESOLVED
18045  * - \ref SCIP_STAGE_SOLVING
18046  * - \ref SCIP_STAGE_SOLVED
18047  */
18048 extern
18050  SCIP* scip /**< SCIP data structure */
18051  );
18052 
18053 /** gets total number of dual LPs solved so far that were resolved from an advanced start basis
18054  *
18055  * @return the total number of dual LPs solved so far that were resolved from an advanced start basis
18056  *
18057  * @pre This method can be called if SCIP is in one of the following stages:
18058  * - \ref SCIP_STAGE_PRESOLVED
18059  * - \ref SCIP_STAGE_SOLVING
18060  * - \ref SCIP_STAGE_SOLVED
18061  */
18062 extern
18064  SCIP* scip /**< SCIP data structure */
18065  );
18066 
18067 /** gets total number of simplex iterations used so far in dual simplex calls where an advanced start basis
18068  * was available
18069  *
18070  * @return the total number of simplex iterations used so far in dual simplex calls where an advanced start
18071  * basis was available
18072  *
18073  * @pre This method can be called if SCIP is in one of the following stages:
18074  * - \ref SCIP_STAGE_PRESOLVED
18075  * - \ref SCIP_STAGE_SOLVING
18076  * - \ref SCIP_STAGE_SOLVED
18077  */
18078 extern
18080  SCIP* scip /**< SCIP data structure */
18081  );
18082 
18083 /** gets total number of LPs solved so far for node relaxations
18084  *
18085  * @return the total number of LPs solved so far for node relaxations
18086  *
18087  * @pre This method can be called if SCIP is in one of the following stages:
18088  * - \ref SCIP_STAGE_PRESOLVED
18089  * - \ref SCIP_STAGE_SOLVING
18090  * - \ref SCIP_STAGE_SOLVED
18091  */
18092 extern
18094  SCIP* scip /**< SCIP data structure */
18095  );
18096 
18097 /** gets total number of simplex iterations used so far for node relaxations
18098  *
18099  * @return the total number of simplex iterations used so far for node relaxations
18100  *
18101  * @pre This method can be called if SCIP is in one of the following stages:
18102  * - \ref SCIP_STAGE_PRESOLVED
18103  * - \ref SCIP_STAGE_SOLVING
18104  * - \ref SCIP_STAGE_SOLVED
18105  */
18106 extern
18108  SCIP* scip /**< SCIP data structure */
18109  );
18110 
18111 /** gets total number of LPs solved so far for initial LP in node relaxations
18112  *
18113  * @return the total number of LPs solved so far for initial LP in node relaxations
18114  *
18115  * @pre This method can be called if SCIP is in one of the following stages:
18116  * - \ref SCIP_STAGE_PRESOLVED
18117  * - \ref SCIP_STAGE_SOLVING
18118  * - \ref SCIP_STAGE_SOLVED
18119  */
18120 extern
18122  SCIP* scip /**< SCIP data structure */
18123  );
18124 
18125 /** gets total number of simplex iterations used so far for initial LP in node relaxations
18126  *
18127  * @return the total number of simplex iterations used so far for initial LP in node relaxations
18128  *
18129  * @pre This method can be called if SCIP is in one of the following stages:
18130  * - \ref SCIP_STAGE_PRESOLVED
18131  * - \ref SCIP_STAGE_SOLVING
18132  * - \ref SCIP_STAGE_SOLVED
18133  */
18134 extern
18136  SCIP* scip /**< SCIP data structure */
18137  );
18138 
18139 /** gets total number of LPs solved so far during diving and probing
18140  *
18141  * @return total number of LPs solved so far during diving and probing
18142  *
18143  * @pre This method can be called if SCIP is in one of the following stages:
18144  * - \ref SCIP_STAGE_PRESOLVED
18145  * - \ref SCIP_STAGE_SOLVING
18146  * - \ref SCIP_STAGE_SOLVED
18147  */
18148 extern
18150  SCIP* scip /**< SCIP data structure */
18151  );
18152 
18153 /** gets total number of simplex iterations used so far during diving and probing
18154  *
18155  * @return the total number of simplex iterations used so far during diving and probing
18156  *
18157  * @pre This method can be called if SCIP is in one of the following stages:
18158  * - \ref SCIP_STAGE_PRESOLVED
18159  * - \ref SCIP_STAGE_SOLVING
18160  * - \ref SCIP_STAGE_SOLVED
18161  */
18162 extern
18164  SCIP* scip /**< SCIP data structure */
18165  );
18166 
18167 /** gets total number of times, strong branching was called (each call represents solving two LPs)
18168  *
18169  * @return the total number of times, strong branching was called (each call represents solving two LPs)
18170  *
18171  * @pre This method can be called if SCIP is in one of the following stages:
18172  * - \ref SCIP_STAGE_PRESOLVED
18173  * - \ref SCIP_STAGE_SOLVING
18174  * - \ref SCIP_STAGE_SOLVED
18175  */
18176 extern
18178  SCIP* scip /**< SCIP data structure */
18179  );
18180 
18181 /** gets total number of simplex iterations used so far in strong branching
18182  *
18183  * @return the total number of simplex iterations used so far in strong branching
18184  *
18185  * @pre This method can be called if SCIP is in one of the following stages:
18186  * - \ref SCIP_STAGE_PRESOLVED
18187  * - \ref SCIP_STAGE_SOLVING
18188  * - \ref SCIP_STAGE_SOLVED
18189  */
18190 extern
18192  SCIP* scip /**< SCIP data structure */
18193  );
18194 
18195 /** gets total number of times, strong branching was called at the root node (each call represents solving two LPs)
18196  *
18197  * @return the total number of times, strong branching was called at the root node (each call represents solving two LPs)
18198  *
18199  * @pre This method can be called if SCIP is in one of the following stages:
18200  * - \ref SCIP_STAGE_PRESOLVED
18201  * - \ref SCIP_STAGE_SOLVING
18202  * - \ref SCIP_STAGE_SOLVED
18203  */
18204 extern
18206  SCIP* scip /**< SCIP data structure */
18207  );
18208 
18209 /** gets total number of simplex iterations used so far in strong branching at the root node
18210  *
18211  * @return the total number of simplex iterations used so far in strong branching at the root node
18212  *
18213  * @pre This method can be called if SCIP is in one of the following stages:
18214  * - \ref SCIP_STAGE_PRESOLVED
18215  * - \ref SCIP_STAGE_SOLVING
18216  * - \ref SCIP_STAGE_SOLVED
18217  */
18218 extern
18220  SCIP* scip /**< SCIP data structure */
18221  );
18222 
18223 /** gets number of pricing rounds performed so far at the current node
18224  *
18225  * @return the number of pricing rounds performed so far at the current node
18226  *
18227  * @pre This method can be called if SCIP is in one of the following stages:
18228  * - \ref SCIP_STAGE_SOLVING
18229  */
18230 extern
18232  SCIP* scip /**< SCIP data structure */
18233  );
18234 
18235 /** get current number of variables in the pricing store
18236  *
18237  * @return the current number of variables in the pricing store
18238  *
18239  * @pre This method can be called if SCIP is in one of the following stages:
18240  * - \ref SCIP_STAGE_PRESOLVED
18241  * - \ref SCIP_STAGE_SOLVING
18242  * - \ref SCIP_STAGE_SOLVED
18243  */
18244 extern
18245 int SCIPgetNPricevars(
18246  SCIP* scip /**< SCIP data structure */
18247  );
18248 
18249 /** get total number of pricing variables found so far
18250  *
18251  * @return the total number of pricing variables found so far
18252  *
18253  * @pre This method can be called if SCIP is in one of the following stages:
18254  * - \ref SCIP_STAGE_PRESOLVED
18255  * - \ref SCIP_STAGE_SOLVING
18256  * - \ref SCIP_STAGE_SOLVED
18257  */
18258 extern
18260  SCIP* scip /**< SCIP data structure */
18261  );
18262 
18263 /** get total number of pricing variables applied to the LPs
18264  *
18265  * @return the total number of pricing variables applied to the LPs
18266  *
18267  * @pre This method can be called if SCIP is in one of the following stages:
18268  * - \ref SCIP_STAGE_PRESOLVED
18269  * - \ref SCIP_STAGE_SOLVING
18270  * - \ref SCIP_STAGE_SOLVED
18271  */
18272 extern
18274  SCIP* scip /**< SCIP data structure */
18275  );
18276 
18277 /** gets number of separation rounds performed so far at the current node
18278  *
18279  * @return the number of separation rounds performed so far at the current node
18280  *
18281  * @pre This method can be called if SCIP is in one of the following stages:
18282  * - \ref SCIP_STAGE_SOLVING
18283  */
18284 extern
18285 int SCIPgetNSepaRounds(
18286  SCIP* scip /**< SCIP data structure */
18287  );
18288 
18289 /** get total number of cuts found so far
18290  *
18291  * @return the total number of cuts found so far
18292  *
18293  * @pre This method can be called if SCIP is in one of the following stages:
18294  * - \ref SCIP_STAGE_PRESOLVED
18295  * - \ref SCIP_STAGE_SOLVING
18296  * - \ref SCIP_STAGE_SOLVED
18297  */
18298 extern
18299 int SCIPgetNCutsFound(
18300  SCIP* scip /**< SCIP data structure */
18301  );
18302 
18303 /** get number of cuts found so far in current separation round
18304  *
18305  * @return the number of cuts found so far in current separation round
18306  *
18307  * @pre This method can be called if SCIP is in one of the following stages:
18308  * - \ref SCIP_STAGE_PRESOLVED
18309  * - \ref SCIP_STAGE_SOLVING
18310  * - \ref SCIP_STAGE_SOLVED
18311  */
18312 extern
18314  SCIP* scip /**< SCIP data structure */
18315  );
18316 
18317 /** get total number of cuts applied to the LPs
18318  *
18319  * @return the total number of cuts applied to the LPs
18320  *
18321  * @pre This method can be called if SCIP is in one of the following stages:
18322  * - \ref SCIP_STAGE_PRESOLVED
18323  * - \ref SCIP_STAGE_SOLVING
18324  * - \ref SCIP_STAGE_SOLVED
18325  */
18326 extern
18328  SCIP* scip /**< SCIP data structure */
18329  );
18330 
18331 /** get total number of constraints found in conflict analysis (conflict and reconvergence constraints)
18332  *
18333  * @return the total number of constraints found in conflict analysis (conflict and reconvergence constraints)
18334  *
18335  * @pre This method can be called if SCIP is in one of the following stages:
18336  * - \ref SCIP_STAGE_TRANSFORMED
18337  * - \ref SCIP_STAGE_INITPRESOLVE
18338  * - \ref SCIP_STAGE_PRESOLVING
18339  * - \ref SCIP_STAGE_EXITPRESOLVE
18340  * - \ref SCIP_STAGE_PRESOLVED
18341  * - \ref SCIP_STAGE_INITSOLVE
18342  * - \ref SCIP_STAGE_SOLVING
18343  * - \ref SCIP_STAGE_SOLVED
18344  * - \ref SCIP_STAGE_EXITSOLVE
18345  */
18346 extern
18348  SCIP* scip /**< SCIP data structure */
18349  );
18350 
18351 /** get number of conflict constraints found so far at the current node
18352  *
18353  * @return the number of conflict constraints found so far at the current node
18354  *
18355  * @pre This method can be called if SCIP is in one of the following stages:
18356  * - \ref SCIP_STAGE_TRANSFORMED
18357  * - \ref SCIP_STAGE_INITPRESOLVE
18358  * - \ref SCIP_STAGE_PRESOLVING
18359  * - \ref SCIP_STAGE_EXITPRESOLVE
18360  * - \ref SCIP_STAGE_PRESOLVED
18361  * - \ref SCIP_STAGE_INITSOLVE
18362  * - \ref SCIP_STAGE_SOLVING
18363  * - \ref SCIP_STAGE_SOLVED
18364  * - \ref SCIP_STAGE_EXITSOLVE
18365  */
18366 extern
18368  SCIP* scip /**< SCIP data structure */
18369  );
18370 
18371 /** get total number of conflict constraints added to the problem
18372  *
18373  * @return the total number of conflict constraints added to the problem
18374  *
18375  * @pre This method can be called if SCIP is in one of the following stages:
18376  * - \ref SCIP_STAGE_TRANSFORMED
18377  * - \ref SCIP_STAGE_INITPRESOLVE
18378  * - \ref SCIP_STAGE_PRESOLVING
18379  * - \ref SCIP_STAGE_EXITPRESOLVE
18380  * - \ref SCIP_STAGE_PRESOLVED
18381  * - \ref SCIP_STAGE_INITSOLVE
18382  * - \ref SCIP_STAGE_SOLVING
18383  * - \ref SCIP_STAGE_SOLVED
18384  * - \ref SCIP_STAGE_EXITSOLVE
18385  */
18386 extern
18388  SCIP* scip /**< SCIP data structure */
18389  );
18390 
18391 /** gets depth of current node, or -1 if no current node exists; in probing, the current node is the last probing node,
18392  * such that the depth includes the probing path
18393  *
18394  * @return the depth of current node, or -1 if no current node exists; in probing, the current node is the last probing node,
18395  * such that the depth includes the probing path
18396  *
18397  * @pre This method can be called if SCIP is in one of the following stages:
18398  * - \ref SCIP_STAGE_TRANSFORMED
18399  * - \ref SCIP_STAGE_INITPRESOLVE
18400  * - \ref SCIP_STAGE_PRESOLVING
18401  * - \ref SCIP_STAGE_EXITPRESOLVE
18402  * - \ref SCIP_STAGE_PRESOLVED
18403  * - \ref SCIP_STAGE_INITSOLVE
18404  * - \ref SCIP_STAGE_SOLVING
18405  * - \ref SCIP_STAGE_SOLVED
18406  * - \ref SCIP_STAGE_EXITSOLVE
18407  */
18408 extern
18409 int SCIPgetDepth(
18410  SCIP* scip /**< SCIP data structure */
18411  );
18412 
18413 /** gets depth of the focus node, or -1 if no focus node exists; the focus node is the currently processed node in the
18414  * branching tree, excluding the nodes of the probing path
18415  *
18416  * @return the depth of the focus node, or -1 if no focus node exists; the focus node is the currently processed node in the
18417  * branching tree, excluding the nodes of the probing path
18418  *
18419  * @pre This method can be called if SCIP is in one of the following stages:
18420  * - \ref SCIP_STAGE_TRANSFORMED
18421  * - \ref SCIP_STAGE_INITPRESOLVE
18422  * - \ref SCIP_STAGE_PRESOLVING
18423  * - \ref SCIP_STAGE_EXITPRESOLVE
18424  * - \ref SCIP_STAGE_PRESOLVED
18425  * - \ref SCIP_STAGE_INITSOLVE
18426  * - \ref SCIP_STAGE_SOLVING
18427  * - \ref SCIP_STAGE_SOLVED
18428  * - \ref SCIP_STAGE_EXITSOLVE
18429  */
18430 extern
18431 int SCIPgetFocusDepth(
18432  SCIP* scip /**< SCIP data structure */
18433  );
18434 
18435 /** gets maximal depth of all processed nodes in current branch and bound run (excluding probing nodes)
18436  *
18437  * @return the maximal depth of all processed nodes in current branch and bound run (excluding probing nodes)
18438  *
18439  * @pre This method can be called if SCIP is in one of the following stages:
18440  * - \ref SCIP_STAGE_TRANSFORMED
18441  * - \ref SCIP_STAGE_INITPRESOLVE
18442  * - \ref SCIP_STAGE_PRESOLVING
18443  * - \ref SCIP_STAGE_EXITPRESOLVE
18444  * - \ref SCIP_STAGE_PRESOLVED
18445  * - \ref SCIP_STAGE_INITSOLVE
18446  * - \ref SCIP_STAGE_SOLVING
18447  * - \ref SCIP_STAGE_SOLVED
18448  * - \ref SCIP_STAGE_EXITSOLVE
18449  */
18450 extern
18451 int SCIPgetMaxDepth(
18452  SCIP* scip /**< SCIP data structure */
18453  );
18454 
18455 /** gets maximal depth of all processed nodes over all branch and bound runs
18456  *
18457  * @return the maximal depth of all processed nodes over all branch and bound runs
18458  *
18459  * @pre This method can be called if SCIP is in one of the following stages:
18460  * - \ref SCIP_STAGE_TRANSFORMED
18461  * - \ref SCIP_STAGE_INITPRESOLVE
18462  * - \ref SCIP_STAGE_PRESOLVING
18463  * - \ref SCIP_STAGE_EXITPRESOLVE
18464  * - \ref SCIP_STAGE_PRESOLVED
18465  * - \ref SCIP_STAGE_INITSOLVE
18466  * - \ref SCIP_STAGE_SOLVING
18467  * - \ref SCIP_STAGE_SOLVED
18468  * - \ref SCIP_STAGE_EXITSOLVE
18469  */
18470 extern
18472  SCIP* scip /**< SCIP data structure */
18473  );
18474 
18475 /** gets total number of backtracks, i.e. number of times, the new node was selected from the leaves queue
18476  *
18477  * @return the total number of backtracks, i.e. number of times, the new node was selected from the leaves queue
18478  *
18479  * @pre This method can be called if SCIP is in one of the following stages:
18480  * - \ref SCIP_STAGE_TRANSFORMED
18481  * - \ref SCIP_STAGE_INITPRESOLVE
18482  * - \ref SCIP_STAGE_PRESOLVING
18483  * - \ref SCIP_STAGE_EXITPRESOLVE
18484  * - \ref SCIP_STAGE_PRESOLVED
18485  * - \ref SCIP_STAGE_INITSOLVE
18486  * - \ref SCIP_STAGE_SOLVING
18487  * - \ref SCIP_STAGE_SOLVED
18488  * - \ref SCIP_STAGE_EXITSOLVE
18489  */
18490 extern
18492  SCIP* scip /**< SCIP data structure */
18493  );
18494 
18495 /** gets current plunging depth (successive times, a child was selected as next node)
18496  *
18497  * @return the current plunging depth (successive times, a child was selected as next node)
18498  *
18499  * @pre This method can be called if SCIP is in one of the following stages:
18500  * - \ref SCIP_STAGE_PRESOLVED
18501  * - \ref SCIP_STAGE_SOLVING
18502  */
18503 extern
18504 int SCIPgetPlungeDepth(
18505  SCIP* scip /**< SCIP data structure */
18506  );
18507 
18508 /** gets total number of active constraints at the current node
18509  *
18510  * @return the total number of active constraints at the current node
18511  *
18512  * @pre This method can be called if SCIP is in one of the following stages:
18513  * - \ref SCIP_STAGE_PRESOLVED
18514  * - \ref SCIP_STAGE_SOLVING
18515  */
18516 extern
18518  SCIP* scip /**< SCIP data structure */
18519  );
18520 
18521 /** gets total number of enabled constraints at the current node
18522  *
18523  * @return the total number of enabled constraints at the current node
18524  *
18525  * @pre This method can be called if SCIP is in one of the following stages:
18526  * - \ref SCIP_STAGE_PRESOLVED
18527  * - \ref SCIP_STAGE_SOLVING
18528  */
18529 extern
18531  SCIP* scip /**< SCIP data structure */
18532  );
18533 
18534 /** gets average dual bound of all unprocessed nodes for original problem */
18535 extern
18537  SCIP* scip /**< SCIP data structure */
18538  );
18539 
18540 /** gets average lower (dual) bound of all unprocessed nodes in transformed problem
18541  *
18542  * @return the average lower (dual) bound of all unprocessed nodes in transformed problem
18543  *
18544  * @pre This method can be called if SCIP is in one of the following stages:
18545  * - \ref SCIP_STAGE_PRESOLVED
18546  * - \ref SCIP_STAGE_SOLVING
18547  * - \ref SCIP_STAGE_SOLVED
18548  */
18549 extern
18551  SCIP* scip /**< SCIP data structure */
18552  );
18553 
18554 /** gets global dual bound
18555  *
18556  * @return the global dual bound
18557  *
18558  * @pre This method can be called if SCIP is in one of the following stages:
18559  * - \ref SCIP_STAGE_PRESOLVING
18560  * - \ref SCIP_STAGE_EXITPRESOLVE
18561  * - \ref SCIP_STAGE_PRESOLVED
18562  * - \ref SCIP_STAGE_INITSOLVE
18563  * - \ref SCIP_STAGE_SOLVING
18564  * - \ref SCIP_STAGE_SOLVED
18565  */
18566 extern
18568  SCIP* scip /**< SCIP data structure */
18569  );
18570 
18571 /** gets global lower (dual) bound in transformed problem
18572  *
18573  * @return the global lower (dual) bound in transformed problem
18574  *
18575  * @pre This method can be called if SCIP is in one of the following stages:
18576  * - \ref SCIP_STAGE_PRESOLVING
18577  * - \ref SCIP_STAGE_EXITPRESOLVE
18578  * - \ref SCIP_STAGE_PRESOLVED
18579  * - \ref SCIP_STAGE_INITSOLVE
18580  * - \ref SCIP_STAGE_SOLVING
18581  * - \ref SCIP_STAGE_SOLVED
18582  */
18583 extern
18585  SCIP* scip /**< SCIP data structure */
18586  );
18587 
18588 /** gets dual bound of the root node for the original problem
18589  *
18590  * @return the dual bound of the root node for the original problem
18591  *
18592  * @pre This method can be called if SCIP is in one of the following stages:
18593  * - \ref SCIP_STAGE_PRESOLVING
18594  * - \ref SCIP_STAGE_EXITPRESOLVE
18595  * - \ref SCIP_STAGE_PRESOLVED
18596  * - \ref SCIP_STAGE_INITSOLVE
18597  * - \ref SCIP_STAGE_SOLVING
18598  * - \ref SCIP_STAGE_SOLVED
18599  */
18600 extern
18602  SCIP* scip /**< SCIP data structure */
18603  );
18604 
18605 /** gets lower (dual) bound in transformed problem of the root node
18606  *
18607  * @return the lower (dual) bound in transformed problem of the root node
18608  *
18609  * @pre This method can be called if SCIP is in one of the following stages:
18610  * - \ref SCIP_STAGE_PRESOLVING
18611  * - \ref SCIP_STAGE_EXITPRESOLVE
18612  * - \ref SCIP_STAGE_PRESOLVED
18613  * - \ref SCIP_STAGE_INITSOLVE
18614  * - \ref SCIP_STAGE_SOLVING
18615  * - \ref SCIP_STAGE_SOLVED
18616  */
18617 extern
18619  SCIP* scip /**< SCIP data structure */
18620  );
18621 
18622 /** gets dual bound for the original problem obtained by the first LP solve at the root node
18623  *
18624  * @return the dual bound for the original problem of the first LP solve at the root node
18625  *
18626  * @pre This method can be called if SCIP is in one of the following stages:
18627  * - \ref SCIP_STAGE_PRESOLVING
18628  * - \ref SCIP_STAGE_EXITPRESOLVE
18629  * - \ref SCIP_STAGE_PRESOLVED
18630  * - \ref SCIP_STAGE_INITSOLVE
18631  * - \ref SCIP_STAGE_SOLVING
18632  * - \ref SCIP_STAGE_SOLVED
18633  */
18634 extern
18636  SCIP* scip /**< SCIP data structure */
18637  );
18638 
18639 /** gets lower (dual) bound in transformed problem obtained by the first LP solve at the root node
18640  *
18641  * @return the lower (dual) bound in transformed problem obtained by first LP solve at the root node
18642  *
18643  * @pre This method can be called if SCIP is in one of the following stages:
18644  * - \ref SCIP_STAGE_PRESOLVING
18645  * - \ref SCIP_STAGE_EXITPRESOLVE
18646  * - \ref SCIP_STAGE_PRESOLVED
18647  * - \ref SCIP_STAGE_INITSOLVE
18648  * - \ref SCIP_STAGE_SOLVING
18649  * - \ref SCIP_STAGE_SOLVED
18650  */
18651 extern
18653  SCIP* scip /**< SCIP data structure */
18654  );
18655 
18656 
18657 /** gets global primal bound (objective value of best solution or user objective limit) for the original problem
18658  *
18659  * @return the global primal bound (objective value of best solution or user objective limit) for the original problem
18660  *
18661  * @pre This method can be called if SCIP is in one of the following stages:
18662  * - \ref SCIP_STAGE_TRANSFORMED
18663  * - \ref SCIP_STAGE_INITPRESOLVE
18664  * - \ref SCIP_STAGE_PRESOLVING
18665  * - \ref SCIP_STAGE_EXITPRESOLVE
18666  * - \ref SCIP_STAGE_PRESOLVED
18667  * - \ref SCIP_STAGE_INITSOLVE
18668  * - \ref SCIP_STAGE_SOLVING
18669  * - \ref SCIP_STAGE_SOLVED
18670  * - \ref SCIP_STAGE_EXITSOLVE
18671  */
18672 extern
18674  SCIP* scip /**< SCIP data structure */
18675  );
18676 
18677 /** gets global upper (primal) bound in transformed problem (objective value of best solution or user objective limit)
18678  *
18679  * @return the global upper (primal) bound in transformed problem (objective value of best solution or user objective limit)
18680  *
18681  * @pre This method can be called if SCIP is in one of the following stages:
18682  * - \ref SCIP_STAGE_TRANSFORMED
18683  * - \ref SCIP_STAGE_INITPRESOLVE
18684  * - \ref SCIP_STAGE_PRESOLVING
18685  * - \ref SCIP_STAGE_EXITPRESOLVE
18686  * - \ref SCIP_STAGE_PRESOLVED
18687  * - \ref SCIP_STAGE_INITSOLVE
18688  * - \ref SCIP_STAGE_SOLVING
18689  * - \ref SCIP_STAGE_SOLVED
18690  * - \ref SCIP_STAGE_EXITSOLVE
18691  */
18692 extern
18694  SCIP* scip /**< SCIP data structure */
18695  );
18696 
18697 /** gets global cutoff bound in transformed problem: a sub problem with lower bound larger than the cutoff
18698  * cannot contain a better feasible solution; usually, this bound is equal to the upper bound, but if the
18699  * objective value is always integral, the cutoff bound is (nearly) one less than the upper bound;
18700  * additionally, due to objective function domain propagation, the cutoff bound can be further reduced
18701  *
18702  * @return global cutoff bound in transformed problem
18703  *
18704  * @pre This method can be called if SCIP is in one of the following stages:
18705  * - \ref SCIP_STAGE_TRANSFORMED
18706  * - \ref SCIP_STAGE_INITPRESOLVE
18707  * - \ref SCIP_STAGE_PRESOLVING
18708  * - \ref SCIP_STAGE_EXITPRESOLVE
18709  * - \ref SCIP_STAGE_PRESOLVED
18710  * - \ref SCIP_STAGE_INITSOLVE
18711  * - \ref SCIP_STAGE_SOLVING
18712  * - \ref SCIP_STAGE_SOLVED
18713  * - \ref SCIP_STAGE_EXITSOLVE
18714  */
18715 extern
18717  SCIP* scip /**< SCIP data structure */
18718  );
18719 
18720 /** updates the cutoff bound
18721  *
18722  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
18723  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
18724  *
18725  * @pre This method can be called if SCIP is in one of the following stages:
18726  * - \ref SCIP_STAGE_TRANSFORMED
18727  * - \ref SCIP_STAGE_PRESOLVING
18728  * - \ref SCIP_STAGE_PRESOLVED
18729  * - \ref SCIP_STAGE_INITSOLVE
18730  * - \ref SCIP_STAGE_SOLVING
18731  *
18732  * @note the given cutoff bound has to better or equal to known one (SCIPgetCutoffbound())
18733  */
18734 extern
18736  SCIP* scip, /**< SCIP data structure */
18737  SCIP_Real cutoffbound /**< new cutoff bound */
18738  );
18739 
18740 /** returns whether the current primal bound is justified with a feasible primal solution; if not, the primal bound
18741  * was set from the user as objective limit
18742  *
18743  * @return TRUE if the current primal bound is justified with a feasible primal solution, otherwise FALSE
18744  *
18745  * @pre This method can be called if SCIP is in one of the following stages:
18746  * - \ref SCIP_STAGE_TRANSFORMED
18747  * - \ref SCIP_STAGE_INITPRESOLVE
18748  * - \ref SCIP_STAGE_PRESOLVING
18749  * - \ref SCIP_STAGE_EXITPRESOLVE
18750  * - \ref SCIP_STAGE_PRESOLVED
18751  * - \ref SCIP_STAGE_INITSOLVE
18752  * - \ref SCIP_STAGE_SOLVING
18753  * - \ref SCIP_STAGE_SOLVED
18754  * - \ref SCIP_STAGE_EXITSOLVE
18755  */
18756 extern
18758  SCIP* scip /**< SCIP data structure */
18759  );
18760 
18761 /** gets current gap |(primalbound - dualbound)/min(|primalbound|,|dualbound|)| if both bounds have same sign,
18762  * or infinity, if they have opposite sign
18763  *
18764  * @return the current gap |(primalbound - dualbound)/min(|primalbound|,|dualbound|)| if both bounds have same sign,
18765  * or infinity, if they have opposite sign
18766  *
18767  * @pre This method can be called if SCIP is in one of the following stages:
18768  * - \ref SCIP_STAGE_PRESOLVED
18769  * - \ref SCIP_STAGE_SOLVING
18770  * - \ref SCIP_STAGE_SOLVED
18771  */
18772 extern
18774  SCIP* scip /**< SCIP data structure */
18775  );
18776 
18777 /** gets current gap |(upperbound - lowerbound)/min(|upperbound|,|lowerbound|)| in transformed problem if both bounds
18778  * have same sign, or infinity, if they have opposite sign
18779  *
18780  * @return current gap |(upperbound - lowerbound)/min(|upperbound|,|lowerbound|)| in transformed problem if both bounds
18781  * have same sign, or infinity, if they have opposite sign
18782  *
18783  * @pre This method can be called if SCIP is in one of the following stages:
18784  * - \ref SCIP_STAGE_PRESOLVED
18785  * - \ref SCIP_STAGE_SOLVING
18786  * - \ref SCIP_STAGE_SOLVED
18787  */
18788 extern
18790  SCIP* scip /**< SCIP data structure */
18791  );
18792 
18793 /** gets number of feasible primal solutions found so far
18794  *
18795  * @return the number of feasible primal solutions found so far
18796  *
18797  * @pre This method can be called if SCIP is in one of the following stages:
18798  * - \ref SCIP_STAGE_TRANSFORMED
18799  * - \ref SCIP_STAGE_INITPRESOLVE
18800  * - \ref SCIP_STAGE_PRESOLVING
18801  * - \ref SCIP_STAGE_EXITPRESOLVE
18802  * - \ref SCIP_STAGE_PRESOLVED
18803  * - \ref SCIP_STAGE_INITSOLVE
18804  * - \ref SCIP_STAGE_SOLVING
18805  * - \ref SCIP_STAGE_SOLVED
18806  * - \ref SCIP_STAGE_EXITSOLVE
18807  */
18808 extern
18810  SCIP* scip /**< SCIP data structure */
18811  );
18812 
18813 /** gets number of feasible primal solutions respecting the objective limit found so far
18814  *
18815  * @return the number of feasible primal solutions respecting the objective limit found so far
18816  *
18817  * @pre This method can be called if SCIP is in one of the following stages:
18818  * - \ref SCIP_STAGE_TRANSFORMED
18819  * - \ref SCIP_STAGE_INITPRESOLVE
18820  * - \ref SCIP_STAGE_PRESOLVING
18821  * - \ref SCIP_STAGE_EXITPRESOLVE
18822  * - \ref SCIP_STAGE_PRESOLVED
18823  * - \ref SCIP_STAGE_INITSOLVE
18824  * - \ref SCIP_STAGE_SOLVING
18825  * - \ref SCIP_STAGE_SOLVED
18826  * - \ref SCIP_STAGE_EXITSOLVE
18827  */
18828 extern
18830  SCIP* scip /**< SCIP data structure */
18831  );
18832 
18833 /** gets number of feasible primal solutions found so far, that improved the primal bound at the time they were found
18834  *
18835  * @return the number of feasible primal solutions found so far, that improved the primal bound at the time they were found
18836  *
18837  * @pre This method can be called if SCIP is in one of the following stages:
18838  * - \ref SCIP_STAGE_TRANSFORMED
18839  * - \ref SCIP_STAGE_INITPRESOLVE
18840  * - \ref SCIP_STAGE_PRESOLVING
18841  * - \ref SCIP_STAGE_EXITPRESOLVE
18842  * - \ref SCIP_STAGE_PRESOLVED
18843  * - \ref SCIP_STAGE_INITSOLVE
18844  * - \ref SCIP_STAGE_SOLVING
18845  * - \ref SCIP_STAGE_SOLVED
18846  * - \ref SCIP_STAGE_EXITSOLVE
18847  */
18848 extern
18850  SCIP* scip /**< SCIP data structure */
18851  );
18852 
18853 /** gets the average pseudo cost value for the given direction over all variables
18854  *
18855  * @return the average pseudo cost value for the given direction over all variables
18856  *
18857  * @pre This method can be called if SCIP is in one of the following stages:
18858  * - \ref SCIP_STAGE_SOLVING
18859  * - \ref SCIP_STAGE_SOLVED
18860  */
18861 extern
18863  SCIP* scip, /**< SCIP data structure */
18864  SCIP_Real solvaldelta /**< difference of variable's new LP value - old LP value */
18865  );
18866 
18867 /** gets the average pseudo cost value for the given direction over all variables,
18868  * only using the pseudo cost information of the current run
18869  *
18870  * @return the average pseudo cost value for the given direction over all variables,
18871  * only using the pseudo cost information of the current run
18872  *
18873  * @pre This method can be called if SCIP is in one of the following stages:
18874  * - \ref SCIP_STAGE_SOLVING
18875  * - \ref SCIP_STAGE_SOLVED
18876  */
18877 extern
18879  SCIP* scip, /**< SCIP data structure */
18880  SCIP_Real solvaldelta /**< difference of variable's new LP value - old LP value */
18881  );
18882 
18883 /** gets the average number of pseudo cost updates for the given direction over all variables
18884  *
18885  * @return the average number of pseudo cost updates for the given direction over all variables
18886  *
18887  * @pre This method can be called if SCIP is in one of the following stages:
18888  * - \ref SCIP_STAGE_SOLVING
18889  * - \ref SCIP_STAGE_SOLVED
18890  */
18891 extern
18893  SCIP* scip, /**< SCIP data structure */
18894  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
18895  );
18896 
18897 /** gets the average number of pseudo cost updates for the given direction over all variables,
18898  * only using the pseudo cost information of the current run
18899  *
18900  * @return the average number of pseudo cost updates for the given direction over all variables,
18901  * only using the pseudo cost information of the current run
18902  *
18903  * @pre This method can be called if SCIP is in one of the following stages:
18904  * - \ref SCIP_STAGE_SOLVING
18905  * - \ref SCIP_STAGE_SOLVED
18906  */
18907 extern
18909  SCIP* scip, /**< SCIP data structure */
18910  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
18911  );
18912 
18913 /** gets the average pseudo cost score value over all variables, assuming a fractionality of 0.5
18914  *
18915  * @return the average pseudo cost score value over all variables, assuming a fractionality of 0.5
18916  *
18917  * @pre This method can be called if SCIP is in one of the following stages:
18918  * - \ref SCIP_STAGE_SOLVING
18919  * - \ref SCIP_STAGE_SOLVED
18920  */
18921 extern
18923  SCIP* scip /**< SCIP data structure */
18924  );
18925 
18926 /** gets the average pseudo cost score value over all variables, assuming a fractionality of 0.5,
18927  * only using the pseudo cost information of the current run
18928  *
18929  * @return the average pseudo cost score value over all variables, assuming a fractionality of 0.5,
18930  * only using the pseudo cost information of the current run
18931  *
18932  * @pre This method can be called if SCIP is in one of the following stages:
18933  * - \ref SCIP_STAGE_SOLVING
18934  * - \ref SCIP_STAGE_SOLVED
18935  */
18936 extern
18938  SCIP* scip /**< SCIP data structure */
18939  );
18940 
18941 /** gets the average conflict score value over all variables */
18942 extern
18944  SCIP* scip /**< SCIP data structure */
18945  );
18946 
18947 /** gets the average conflict score value over all variables, only using the pseudo cost information of the current run
18948  *
18949  * @return the average conflict score value over all variables, only using the pseudo cost information of the current run
18950  *
18951  * @pre This method can be called if SCIP is in one of the following stages:
18952  * - \ref SCIP_STAGE_SOLVING
18953  * - \ref SCIP_STAGE_SOLVED
18954  */
18955 extern
18957  SCIP* scip /**< SCIP data structure */
18958  );
18959 
18960 /** gets the average inference score value over all variables
18961  *
18962  * @return the average inference score value over all variables
18963  *
18964  * @pre This method can be called if SCIP is in one of the following stages:
18965  * - \ref SCIP_STAGE_SOLVING
18966  * - \ref SCIP_STAGE_SOLVED
18967  */
18968 extern
18970  SCIP* scip /**< SCIP data structure */
18971  );
18972 
18973 /** gets the average conflictlength score value over all variables, only using the pseudo cost information of the
18974  * current run
18975  *
18976  * @return the average conflictlength score value over all variables, only using the pseudo cost information of the
18977  * current run
18978  *
18979  * @pre This method can be called if SCIP is in one of the following stages:
18980  * - \ref SCIP_STAGE_SOLVING
18981  * - \ref SCIP_STAGE_SOLVED
18982  */
18983 extern
18985  SCIP* scip /**< SCIP data structure */
18986  );
18987 
18988 /** returns the average number of inferences found after branching in given direction over all variables
18989  *
18990  * @return the average number of inferences found after branching in given direction over all variables
18991  *
18992  * @pre This method can be called if SCIP is in one of the following stages:
18993  * - \ref SCIP_STAGE_SOLVING
18994  * - \ref SCIP_STAGE_SOLVED
18995  */
18996 extern
18998  SCIP* scip, /**< SCIP data structure */
18999  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
19000  );
19001 
19002 /** returns the average number of inferences found after branching in given direction over all variables,
19003  * only using the pseudo cost information of the current run
19004  *
19005  * @return the average number of inferences found after branching in given direction over all variables,
19006  * only using the pseudo cost information of the current run
19007  *
19008  * @pre This method can be called if SCIP is in one of the following stages:
19009  * - \ref SCIP_STAGE_SOLVING
19010  * - \ref SCIP_STAGE_SOLVED
19011  */
19012 extern
19014  SCIP* scip, /**< SCIP data structure */
19015  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
19016  );
19017 
19018 /** gets the average inference score value over all variables
19019  *
19020  * @return the average inference score value over all variables
19021  *
19022  * @pre This method can be called if SCIP is in one of the following stages:
19023  * - \ref SCIP_STAGE_SOLVING
19024  * - \ref SCIP_STAGE_SOLVED
19025  */
19026 extern
19028  SCIP* scip /**< SCIP data structure */
19029  );
19030 
19031 /** gets the average inference score value over all variables, only using the inference information information of the
19032  * current run
19033  *
19034  * @return the average inference score value over all variables, only using the inference information information of the
19035  * current run
19036  *
19037  * @pre This method can be called if SCIP is in one of the following stages:
19038  * - \ref SCIP_STAGE_SOLVING
19039  * - \ref SCIP_STAGE_SOLVED
19040  */
19041 extern
19043  SCIP* scip /**< SCIP data structure */
19044  );
19045 
19046 /** returns the average number of cutoffs found after branching in given direction over all variables
19047  *
19048  * @return the average number of cutoffs found after branching in given direction over all variables
19049  *
19050  * @pre This method can be called if SCIP is in one of the following stages:
19051  * - \ref SCIP_STAGE_SOLVING
19052  * - \ref SCIP_STAGE_SOLVED
19053  */
19054 extern
19056  SCIP* scip, /**< SCIP data structure */
19057  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
19058  );
19059 
19060 /** returns the average number of cutoffs found after branching in given direction over all variables,
19061  * only using the pseudo cost information of the current run
19062  *
19063  * @return the average number of cutoffs found after branching in given direction over all variables,
19064  * only using the pseudo cost information of the current run
19065  *
19066  * @pre This method can be called if SCIP is in one of the following stages:
19067  * - \ref SCIP_STAGE_SOLVING
19068  * - \ref SCIP_STAGE_SOLVED
19069  */
19070 extern
19072  SCIP* scip, /**< SCIP data structure */
19073  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
19074  );
19075 
19076 /** gets the average cutoff score value over all variables
19077  *
19078  * @return the average cutoff score value over all variables
19079  *
19080  * @pre This method can be called if SCIP is in one of the following stages:
19081  * - \ref SCIP_STAGE_SOLVING
19082  * - \ref SCIP_STAGE_SOLVED
19083  */
19084 extern
19086  SCIP* scip /**< SCIP data structure */
19087  );
19088 
19089 /** gets the average cutoff score value over all variables, only using the pseudo cost information of the current run
19090  *
19091  * @return the average cutoff score value over all variables, only using the pseudo cost information of the current run
19092  *
19093  * @pre This method can be called if SCIP is in one of the following stages:
19094  * - \ref SCIP_STAGE_SOLVING
19095  * - \ref SCIP_STAGE_SOLVED
19096  */
19097 extern
19099  SCIP* scip /**< SCIP data structure */
19100  );
19101 
19102 /** outputs original problem to file stream
19103  *
19104  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19105  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19106  *
19107  * @pre This method can be called if SCIP is in one of the following stages:
19108  * - \ref SCIP_STAGE_PROBLEM
19109  * - \ref SCIP_STAGE_TRANSFORMING
19110  * - \ref SCIP_STAGE_TRANSFORMED
19111  * - \ref SCIP_STAGE_INITPRESOLVE
19112  * - \ref SCIP_STAGE_PRESOLVING
19113  * - \ref SCIP_STAGE_EXITPRESOLVE
19114  * - \ref SCIP_STAGE_PRESOLVED
19115  * - \ref SCIP_STAGE_INITSOLVE
19116  * - \ref SCIP_STAGE_SOLVING
19117  * - \ref SCIP_STAGE_SOLVED
19118  * - \ref SCIP_STAGE_EXITSOLVE
19119  * - \ref SCIP_STAGE_FREETRANS
19120  */
19121 extern
19123  SCIP* scip, /**< SCIP data structure */
19124  FILE* file, /**< output file (or NULL for standard output) */
19125  const char* extension, /**< file format (or NULL for default CIP format)*/
19126  SCIP_Bool genericnames /**< using generic variable and constraint names? */
19127  );
19128 
19129 /** outputs transformed problem of the current node to file stream
19130  *
19131  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19132  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19133  *
19134  * @pre This method can be called if SCIP is in one of the following stages:
19135  * - \ref SCIP_STAGE_TRANSFORMED
19136  * - \ref SCIP_STAGE_INITPRESOLVE
19137  * - \ref SCIP_STAGE_PRESOLVING
19138  * - \ref SCIP_STAGE_EXITPRESOLVE
19139  * - \ref SCIP_STAGE_PRESOLVED
19140  * - \ref SCIP_STAGE_INITSOLVE
19141  * - \ref SCIP_STAGE_SOLVING
19142  * - \ref SCIP_STAGE_SOLVED
19143  * - \ref SCIP_STAGE_EXITSOLVE
19144  * - \ref SCIP_STAGE_FREETRANS
19145  */
19146 extern
19148  SCIP* scip, /**< SCIP data structure */
19149  FILE* file, /**< output file (or NULL for standard output) */
19150  const char* extension, /**< file format (or NULL for default CIP format)*/
19151  SCIP_Bool genericnames /**< using generic variable and constraint names? */
19152  );
19153 
19154 /** outputs solving statistics
19155  *
19156  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19157  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19158  *
19159  * @note If limits have been changed between the solution and the call to this function, the status is recomputed and
19160  * thus may to correspond to the original status.
19161  *
19162  * @pre This method can be called if SCIP is in one of the following stages:
19163  * - \ref SCIP_STAGE_INIT
19164  * - \ref SCIP_STAGE_PROBLEM
19165  * - \ref SCIP_STAGE_TRANSFORMED
19166  * - \ref SCIP_STAGE_INITPRESOLVE
19167  * - \ref SCIP_STAGE_PRESOLVING
19168  * - \ref SCIP_STAGE_EXITPRESOLVE
19169  * - \ref SCIP_STAGE_PRESOLVED
19170  * - \ref SCIP_STAGE_SOLVING
19171  * - \ref SCIP_STAGE_SOLVED
19172  */
19173 extern
19175  SCIP* scip, /**< SCIP data structure */
19176  FILE* file /**< output file (or NULL for standard output) */
19177  );
19178 
19179 /** outputs reoptimization statistics
19180  *
19181  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19182  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19183  *
19184  * @pre This method can be called if SCIP is in one of the following stages:
19185  * - \ref SCIP_STAGE_INIT
19186  * - \ref SCIP_STAGE_PROBLEM
19187  * - \ref SCIP_STAGE_TRANSFORMED
19188  * - \ref SCIP_STAGE_INITPRESOLVE
19189  * - \ref SCIP_STAGE_PRESOLVING
19190  * - \ref SCIP_STAGE_EXITPRESOLVE
19191  * - \ref SCIP_STAGE_PRESOLVED
19192  * - \ref SCIP_STAGE_SOLVING
19193  * - \ref SCIP_STAGE_SOLVED
19194  */
19195 extern
19197  SCIP* scip, /**< SCIP data structure */
19198  FILE* file /**< output file (or NULL for standard output) */
19199  );
19200 
19201 /** outputs history statistics about branchings on variables
19202  *
19203  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19204  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19205  *
19206  * @pre This method can be called if SCIP is in one of the following stages:
19207  * - \ref SCIP_STAGE_INIT
19208  * - \ref SCIP_STAGE_PROBLEM
19209  * - \ref SCIP_STAGE_TRANSFORMED
19210  * - \ref SCIP_STAGE_INITPRESOLVE
19211  * - \ref SCIP_STAGE_PRESOLVING
19212  * - \ref SCIP_STAGE_EXITPRESOLVE
19213  * - \ref SCIP_STAGE_PRESOLVED
19214  * - \ref SCIP_STAGE_SOLVING
19215  * - \ref SCIP_STAGE_SOLVED
19216  */
19217 extern
19219  SCIP* scip, /**< SCIP data structure */
19220  FILE* file /**< output file (or NULL for standard output) */
19221  );
19222 
19223 /** outputs node information display line
19224  *
19225  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19226  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19227  *
19228  * @pre This method can be called if SCIP is in one of the following stages:
19229  * - \ref SCIP_STAGE_SOLVING
19230  */
19231 extern
19233  SCIP* scip, /**< SCIP data structure */
19234  FILE* file, /**< output file (or NULL for standard output) */
19235  SCIP_VERBLEVEL verblevel, /**< minimal verbosity level to actually display the information line */
19236  SCIP_Bool endline /**< should the line be terminated with a newline symbol? */
19237  );
19238 
19239 /** gets total number of implications between variables that are stored in the implication graph
19240  *
19241  * @return the total number of implications between variables that are stored in the implication graph
19242  *
19243  * @pre This method can be called if SCIP is in one of the following stages:
19244  * - \ref SCIP_STAGE_INITPRESOLVE
19245  * - \ref SCIP_STAGE_PRESOLVING
19246  * - \ref SCIP_STAGE_EXITPRESOLVE
19247  * - \ref SCIP_STAGE_PRESOLVED
19248  * - \ref SCIP_STAGE_INITSOLVE
19249  * - \ref SCIP_STAGE_SOLVING
19250  * - \ref SCIP_STAGE_SOLVED
19251  */
19252 extern
19254  SCIP* scip /**< SCIP data structure */
19255  );
19256 
19257 /** stores conflict graph of binary variables' implications into a file, which can be used as input for the DOT tool
19258  *
19259  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19260  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19261  *
19262  * @pre This method can be called if SCIP is in one of the following stages:
19263  * - \ref SCIP_STAGE_TRANSFORMED
19264  * - \ref SCIP_STAGE_INITPRESOLVE
19265  * - \ref SCIP_STAGE_PRESOLVING
19266  * - \ref SCIP_STAGE_EXITPRESOLVE
19267  * - \ref SCIP_STAGE_PRESOLVED
19268  * - \ref SCIP_STAGE_INITSOLVE
19269  * - \ref SCIP_STAGE_SOLVING
19270  * - \ref SCIP_STAGE_SOLVED
19271  * - \ref SCIP_STAGE_EXITSOLVE
19272  *
19273  * @deprecated because binary implications are now stored as cliques
19274  */
19275 extern
19277  SCIP* scip, /**< SCIP data structure */
19278  const char* filename /**< file name, or NULL for stdout */
19279  );
19280 
19281 /**@} */
19282 
19283 
19284 
19285 
19286 /*
19287  * timing methods
19288  */
19289 
19290 /**@name Timing Methods */
19291 /**@{ */
19292 
19293 /** gets current time of day in seconds (standard time zone)
19294  *
19295  * @return the current time of day in seconds (standard time zone).
19296  */
19297 extern
19299  SCIP* scip /**< SCIP data structure */
19300  );
19301 
19302 /** creates a clock using the default clock type
19303  *
19304  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19305  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19306  */
19307 extern
19309  SCIP* scip, /**< SCIP data structure */
19310  SCIP_CLOCK** clck /**< pointer to clock timer */
19311  );
19312 
19313 /** creates a clock counting the CPU user seconds
19314  *
19315  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19316  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19317  */
19318 extern
19320  SCIP* scip, /**< SCIP data structure */
19321  SCIP_CLOCK** clck /**< pointer to clock timer */
19322  );
19323 
19324 /** creates a clock counting the wall clock seconds
19325  *
19326  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19327  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19328  */
19329 extern
19331  SCIP* scip, /**< SCIP data structure */
19332  SCIP_CLOCK** clck /**< pointer to clock timer */
19333  );
19334 
19335 /** frees a clock
19336  *
19337  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19338  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19339  */
19340 extern
19342  SCIP* scip, /**< SCIP data structure */
19343  SCIP_CLOCK** clck /**< pointer to clock timer */
19344  );
19345 
19346 /** resets the time measurement of a clock to zero and completely stops the clock
19347  *
19348  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19349  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19350  */
19351 extern
19353  SCIP* scip, /**< SCIP data structure */
19354  SCIP_CLOCK* clck /**< clock timer */
19355  );
19356 
19357 /** starts the time measurement of a clock
19358  *
19359  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19360  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19361  */
19362 extern
19364  SCIP* scip, /**< SCIP data structure */
19365  SCIP_CLOCK* clck /**< clock timer */
19366  );
19367 
19368 /** stops the time measurement of a clock
19369  *
19370  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19371  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19372  */
19373 extern
19375  SCIP* scip, /**< SCIP data structure */
19376  SCIP_CLOCK* clck /**< clock timer */
19377  );
19378 
19379 /** enables or disables all statistic clocks of SCIP concerning plugin statistics,
19380  * LP execution time, strong branching time, etc.
19381  *
19382  * Method reads the value of the parameter timing/statistictiming. In order to disable statistic timing,
19383  * set the parameter to FALSE.
19384  *
19385  * @note: The (pre-)solving time clocks which are relevant for the output during (pre-)solving
19386  * are not affected by this method
19387  *
19388  * @see: For completely disabling all timing of SCIP, consider setting the parameter timing/enabled to FALSE
19389  *
19390  * @pre This method can be called if SCIP is in one of the following stages:
19391  * - \ref SCIP_STAGE_PROBLEM
19392  * - \ref SCIP_STAGE_TRANSFORMING
19393  * - \ref SCIP_STAGE_TRANSFORMED
19394  * - \ref SCIP_STAGE_INITPRESOLVE
19395  * - \ref SCIP_STAGE_PRESOLVING
19396  * - \ref SCIP_STAGE_EXITPRESOLVE
19397  * - \ref SCIP_STAGE_PRESOLVED
19398  * - \ref SCIP_STAGE_INITSOLVE
19399  * - \ref SCIP_STAGE_SOLVING
19400  * - \ref SCIP_STAGE_SOLVED
19401  * - \ref SCIP_STAGE_EXITSOLVE
19402  * - \ref SCIP_STAGE_FREETRANS
19403  *
19404  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
19405  */
19406 extern
19408  SCIP* scip /**< SCIP data structure */
19409  );
19410 
19411 /** starts the current solving time
19412  *
19413  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19414  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19415  *
19416  * @pre This method can be called if SCIP is in one of the following stages:
19417  * - \ref SCIP_STAGE_PROBLEM
19418  * - \ref SCIP_STAGE_TRANSFORMING
19419  * - \ref SCIP_STAGE_TRANSFORMED
19420  * - \ref SCIP_STAGE_INITPRESOLVE
19421  * - \ref SCIP_STAGE_PRESOLVING
19422  * - \ref SCIP_STAGE_EXITPRESOLVE
19423  * - \ref SCIP_STAGE_PRESOLVED
19424  * - \ref SCIP_STAGE_INITSOLVE
19425  * - \ref SCIP_STAGE_SOLVING
19426  * - \ref SCIP_STAGE_SOLVED
19427  * - \ref SCIP_STAGE_EXITSOLVE
19428  * - \ref SCIP_STAGE_FREETRANS
19429  *
19430  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
19431  */
19432 extern
19434  SCIP* scip /**< SCIP data structure */
19435  );
19436 
19437 /** stops the current solving time in seconds
19438  *
19439  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19440  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19441  *
19442  * @pre This method can be called if SCIP is in one of the following stages:
19443  * - \ref SCIP_STAGE_PROBLEM
19444  * - \ref SCIP_STAGE_TRANSFORMING
19445  * - \ref SCIP_STAGE_TRANSFORMED
19446  * - \ref SCIP_STAGE_INITPRESOLVE
19447  * - \ref SCIP_STAGE_PRESOLVING
19448  * - \ref SCIP_STAGE_EXITPRESOLVE
19449  * - \ref SCIP_STAGE_PRESOLVED
19450  * - \ref SCIP_STAGE_INITSOLVE
19451  * - \ref SCIP_STAGE_SOLVING
19452  * - \ref SCIP_STAGE_SOLVED
19453  * - \ref SCIP_STAGE_EXITSOLVE
19454  * - \ref SCIP_STAGE_FREETRANS
19455  *
19456  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
19457  */
19458 extern
19460  SCIP* scip /**< SCIP data structure */
19461  );
19462 
19463 /** gets the measured time of a clock in seconds
19464  *
19465  * @return the measured time of a clock in seconds.
19466  */
19467 extern
19469  SCIP* scip, /**< SCIP data structure */
19470  SCIP_CLOCK* clck /**< clock timer */
19471  );
19472 
19473 /** sets the measured time of a clock to the given value in seconds
19474  *
19475  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19476  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19477  */
19478 extern
19480  SCIP* scip, /**< SCIP data structure */
19481  SCIP_CLOCK* clck, /**< clock timer */
19482  SCIP_Real sec /**< time in seconds to set the clock's timer to */
19483  );
19484 
19485 /** gets the current total SCIP time in seconds, possibly accumulated over several problems.
19486  *
19487  * @return the current total SCIP time in seconds, ie. the total time since the SCIP instance has been created
19488  */
19489 extern
19491  SCIP* scip /**< SCIP data structure */
19492  );
19493 
19494 /** gets the current solving time in seconds
19495  *
19496  * @return the current solving time in seconds.
19497  *
19498  * @pre This method can be called if SCIP is in one of the following stages:
19499  * - \ref SCIP_STAGE_PROBLEM
19500  * - \ref SCIP_STAGE_TRANSFORMING
19501  * - \ref SCIP_STAGE_TRANSFORMED
19502  * - \ref SCIP_STAGE_INITPRESOLVE
19503  * - \ref SCIP_STAGE_PRESOLVING
19504  * - \ref SCIP_STAGE_EXITPRESOLVE
19505  * - \ref SCIP_STAGE_PRESOLVED
19506  * - \ref SCIP_STAGE_INITSOLVE
19507  * - \ref SCIP_STAGE_SOLVING
19508  * - \ref SCIP_STAGE_SOLVED
19509  *
19510  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
19511  */
19512 extern
19514  SCIP* scip /**< SCIP data structure */
19515  );
19516 
19517 /** gets the current reading time in seconds
19518  *
19519  * @return the current reading time in seconds.
19520  *
19521  * @pre This method can be called if SCIP is in one of the following stages:
19522  * - \ref SCIP_STAGE_PROBLEM
19523  * - \ref SCIP_STAGE_TRANSFORMING
19524  * - \ref SCIP_STAGE_TRANSFORMED
19525  * - \ref SCIP_STAGE_INITPRESOLVE
19526  * - \ref SCIP_STAGE_PRESOLVING
19527  * - \ref SCIP_STAGE_EXITPRESOLVE
19528  * - \ref SCIP_STAGE_PRESOLVED
19529  * - \ref SCIP_STAGE_INITSOLVE
19530  * - \ref SCIP_STAGE_SOLVING
19531  * - \ref SCIP_STAGE_SOLVED
19532  *
19533  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
19534  */
19535 extern
19537  SCIP* scip /**< SCIP data structure */
19538  );
19539 
19540 /** gets the current presolving time in seconds
19541  *
19542  * @return the current presolving time in seconds.
19543  *
19544  * @pre This method can be called if SCIP is in one of the following stages:
19545  * - \ref SCIP_STAGE_INITPRESOLVE
19546  * - \ref SCIP_STAGE_PRESOLVING
19547  * - \ref SCIP_STAGE_EXITPRESOLVE
19548  * - \ref SCIP_STAGE_PRESOLVED
19549  * - \ref SCIP_STAGE_INITSOLVE
19550  * - \ref SCIP_STAGE_SOLVING
19551  * - \ref SCIP_STAGE_SOLVED
19552  *
19553  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
19554  */
19555 extern
19557  SCIP* scip /**< SCIP data structure */
19558  );
19559 
19560 /** gets the time need to solve the first LP in the root node
19561  *
19562  * @return the solving time for the first LP in the root node in seconds.
19563  *
19564  * @pre This method can be called if SCIP is in one of the following stages:
19565  * - \ref SCIP_STAGE_TRANSFORMING
19566  * - \ref SCIP_STAGE_TRANSFORMED
19567  * - \ref SCIP_STAGE_INITPRESOLVE
19568  * - \ref SCIP_STAGE_PRESOLVING
19569  * - \ref SCIP_STAGE_EXITPRESOLVE
19570  * - \ref SCIP_STAGE_PRESOLVED
19571  * - \ref SCIP_STAGE_INITSOLVE
19572  * - \ref SCIP_STAGE_SOLVING
19573  * - \ref SCIP_STAGE_SOLVED
19574  *
19575  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
19576  */
19577 extern
19579  SCIP* scip /**< SCIP data structure */
19580  );
19581 
19582 /**@} */
19583 
19584 
19585 
19586 
19587 /*
19588  * numeric values and comparisons
19589  */
19590 
19591 /**@name Numerical Methods */
19592 /**@{ */
19593 
19594 
19595 /** returns value treated as zero
19596  *
19597  * @return value treated as zero
19598  */
19599 extern
19601  SCIP* scip /**< SCIP data structure */
19602  );
19603 
19604 /** returns value treated as zero for sums of floating point values
19605  *
19606  * @return value treated as zero for sums of floating point values
19607  */
19608 extern
19610  SCIP* scip /**< SCIP data structure */
19611  );
19612 
19613 /** returns feasibility tolerance for constraints
19614  *
19615  * @return feasibility tolerance for constraints
19616  */
19617 extern
19619  SCIP* scip /**< SCIP data structure */
19620  );
19621 
19622 /** returns primal feasibility tolerance of LP solver
19623  *
19624  * @return primal feasibility tolerance of LP solver
19625  */
19626 extern
19628  SCIP* scip /**< SCIP data structure */
19629  );
19630 
19631 /** returns feasibility tolerance for reduced costs
19632  *
19633  * @return feasibility tolerance for reduced costs
19634  */
19635 extern
19637  SCIP* scip /**< SCIP data structure */
19638  );
19639 
19640 /** returns convergence tolerance used in barrier algorithm
19641  *
19642  * @return convergence tolerance used in barrier algorithm
19643  */
19644 extern
19646  SCIP* scip /**< SCIP data structure */
19647  );
19648 
19649 /** return the cutoff bound delta
19650  *
19651  * @return cutoff bound data
19652  */
19653 extern
19655  SCIP* scip /**< SCIP data structure */
19656  );
19657 
19658 /** sets the feasibility tolerance for constraints
19659  *
19660  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19661  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19662  */
19663 extern
19665  SCIP* scip, /**< SCIP data structure */
19666  SCIP_Real feastol /**< new feasibility tolerance for constraints */
19667  );
19668 
19669 /** sets the primal feasibility tolerance of LP solver
19670  *
19671  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19672  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19673  */
19674 extern
19676  SCIP* scip, /**< SCIP data structure */
19677  SCIP_Real lpfeastol, /**< new primal feasibility tolerance of LP solver */
19678  SCIP_Bool printnewvalue /**< should "numerics/lpfeastol = ..." be printed? */
19679  );
19680 
19681 /** sets the feasibility tolerance for reduced costs
19682  *
19683  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19684  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19685  */
19686 extern
19688  SCIP* scip, /**< SCIP data structure */
19689  SCIP_Real dualfeastol /**< new feasibility tolerance for reduced costs */
19690  );
19691 
19692 /** sets the convergence tolerance used in barrier algorithm
19693  *
19694  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19695  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19696  */
19697 extern
19699  SCIP* scip, /**< SCIP data structure */
19700  SCIP_Real barrierconvtol /**< new convergence tolerance used in barrier algorithm */
19701  );
19702 
19703 /** marks that some limit parameter was changed */
19704 extern
19706  SCIP* scip /**< SCIP data structure */
19707  );
19708 
19709 /** returns value treated as infinity */
19710 extern
19712  SCIP* scip /**< SCIP data structure */
19713  );
19714 
19715 /** returns the minimum value that is regarded as huge and should be handled separately (e.g., in activity
19716  * computation)
19717  */
19718 extern
19720  SCIP* scip /**< SCIP data structure */
19721  );
19722 
19723 /** checks, if values are in range of epsilon */
19724 extern
19726  SCIP* scip, /**< SCIP data structure */
19727  SCIP_Real val1, /**< first value to be compared */
19728  SCIP_Real val2 /**< second value to be compared */
19729  );
19730 
19731 /** checks, if val1 is (more than epsilon) lower than val2 */
19732 extern
19734  SCIP* scip, /**< SCIP data structure */
19735  SCIP_Real val1, /**< first value to be compared */
19736  SCIP_Real val2 /**< second value to be compared */
19737  );
19738 
19739 /** checks, if val1 is not (more than epsilon) greater than val2 */
19740 extern
19742  SCIP* scip, /**< SCIP data structure */
19743  SCIP_Real val1, /**< first value to be compared */
19744  SCIP_Real val2 /**< second value to be compared */
19745  );
19746 
19747 /** checks, if val1 is (more than epsilon) greater than val2 */
19748 extern
19750  SCIP* scip, /**< SCIP data structure */
19751  SCIP_Real val1, /**< first value to be compared */
19752  SCIP_Real val2 /**< second value to be compared */
19753  );
19754 
19755 /** checks, if val1 is not (more than epsilon) lower than val2 */
19756 extern
19758  SCIP* scip, /**< SCIP data structure */
19759  SCIP_Real val1, /**< first value to be compared */
19760  SCIP_Real val2 /**< second value to be compared */
19761  );
19762 
19763 /** checks, if value is (positive) infinite */
19764 extern
19766  SCIP* scip, /**< SCIP data structure */
19767  SCIP_Real val /**< value to be compared against infinity */
19768  );
19769 
19770 /** checks, if value is huge and should be handled separately (e.g., in activity computation) */
19771 extern
19773  SCIP* scip, /**< SCIP data structure */
19774  SCIP_Real val /**< value to be checked whether it is huge */
19775  );
19776 
19777 /** checks, if value is in range epsilon of 0.0 */
19778 extern
19780  SCIP* scip, /**< SCIP data structure */
19781  SCIP_Real val /**< value to process */
19782  );
19783 
19784 /** checks, if value is greater than epsilon */
19785 extern
19787  SCIP* scip, /**< SCIP data structure */
19788  SCIP_Real val /**< value to process */
19789  );
19790 
19791 /** checks, if value is lower than -epsilon */
19792 extern
19794  SCIP* scip, /**< SCIP data structure */
19795  SCIP_Real val /**< value to process */
19796  );
19797 
19798 /** checks, if value is integral within epsilon */
19799 extern
19801  SCIP* scip, /**< SCIP data structure */
19802  SCIP_Real val /**< value to process */
19803  );
19804 
19805 /** checks whether the product val * scalar is integral in epsilon scaled by scalar */
19806 extern
19808  SCIP* scip, /**< SCIP data structure */
19809  SCIP_Real val, /**< unscaled value to check for scaled integrality */
19810  SCIP_Real scalar /**< value to scale val with for checking for integrality */
19811  );
19812 
19813 /** checks, if given fractional part is smaller than epsilon */
19814 extern
19816  SCIP* scip, /**< SCIP data structure */
19817  SCIP_Real val /**< value to process */
19818  );
19819 
19820 /** rounds value + epsilon down to the next integer */
19821 extern
19823  SCIP* scip, /**< SCIP data structure */
19824  SCIP_Real val /**< value to process */
19825  );
19826 
19827 /** rounds value - epsilon up to the next integer */
19828 extern
19830  SCIP* scip, /**< SCIP data structure */
19831  SCIP_Real val /**< value to process */
19832  );
19833 
19834 /** rounds value to the nearest integer with epsilon tolerance */
19835 extern
19837  SCIP* scip, /**< SCIP data structure */
19838  SCIP_Real val /**< value to process */
19839  );
19840 
19841 /** returns fractional part of value, i.e. x - floor(x) in epsilon tolerance */
19842 extern
19844  SCIP* scip, /**< SCIP data structure */
19845  SCIP_Real val /**< value to return fractional part for */
19846  );
19847 
19848 /** checks, if values are in range of sumepsilon */
19849 extern
19851  SCIP* scip, /**< SCIP data structure */
19852  SCIP_Real val1, /**< first value to be compared */
19853  SCIP_Real val2 /**< second value to be compared */
19854  );
19855 
19856 /** checks, if val1 is (more than sumepsilon) lower than val2 */
19857 extern
19859  SCIP* scip, /**< SCIP data structure */
19860  SCIP_Real val1, /**< first value to be compared */
19861  SCIP_Real val2 /**< second value to be compared */
19862  );
19863 
19864 /** checks, if val1 is not (more than sumepsilon) greater than val2 */
19865 extern
19867  SCIP* scip, /**< SCIP data structure */
19868  SCIP_Real val1, /**< first value to be compared */
19869  SCIP_Real val2 /**< second value to be compared */
19870  );
19871 
19872 /** checks, if val1 is (more than sumepsilon) greater than val2 */
19873 extern
19875  SCIP* scip, /**< SCIP data structure */
19876  SCIP_Real val1, /**< first value to be compared */
19877  SCIP_Real val2 /**< second value to be compared */
19878  );
19879 
19880 /** checks, if val1 is not (more than sumepsilon) lower than val2 */
19881 extern
19883  SCIP* scip, /**< SCIP data structure */
19884  SCIP_Real val1, /**< first value to be compared */
19885  SCIP_Real val2 /**< second value to be compared */
19886  );
19887 
19888 /** checks, if value is in range sumepsilon of 0.0 */
19889 extern
19891  SCIP* scip, /**< SCIP data structure */
19892  SCIP_Real val /**< value to process */
19893  );
19894 
19895 /** checks, if value is greater than sumepsilon */
19896 extern
19898  SCIP* scip, /**< SCIP data structure */
19899  SCIP_Real val /**< value to process */
19900  );
19901 
19902 /** checks, if value is lower than -sumepsilon */
19903 extern
19905  SCIP* scip, /**< SCIP data structure */
19906  SCIP_Real val /**< value to process */
19907  );
19908 
19909 /** checks, if relative difference of values is in range of feasibility tolerance */
19910 extern
19912  SCIP* scip, /**< SCIP data structure */
19913  SCIP_Real val1, /**< first value to be compared */
19914  SCIP_Real val2 /**< second value to be compared */
19915  );
19916 
19917 /** checks, if relative difference val1 and val2 is lower than feasibility tolerance */
19918 extern
19920  SCIP* scip, /**< SCIP data structure */
19921  SCIP_Real val1, /**< first value to be compared */
19922  SCIP_Real val2 /**< second value to be compared */
19923  );
19924 
19925 /** checks, if relative difference of val1 and val2 is not greater than feasibility tolerance */
19926 extern
19928  SCIP* scip, /**< SCIP data structure */
19929  SCIP_Real val1, /**< first value to be compared */
19930  SCIP_Real val2 /**< second value to be compared */
19931  );
19932 
19933 /** checks, if relative difference of val1 and val2 is greater than feastol */
19934 extern
19936  SCIP* scip, /**< SCIP data structure */
19937  SCIP_Real val1, /**< first value to be compared */
19938  SCIP_Real val2 /**< second value to be compared */
19939  );
19940 
19941 /** checks, if relative difference of val1 and val2 is not lower than -feastol */
19942 extern
19944  SCIP* scip, /**< SCIP data structure */
19945  SCIP_Real val1, /**< first value to be compared */
19946  SCIP_Real val2 /**< second value to be compared */
19947  );
19948 
19949 /** checks, if value is in range feasibility tolerance of 0.0 */
19950 extern
19952  SCIP* scip, /**< SCIP data structure */
19953  SCIP_Real val /**< value to process */
19954  );
19955 
19956 /** checks, if value is greater than feasibility tolerance */
19957 extern
19959  SCIP* scip, /**< SCIP data structure */
19960  SCIP_Real val /**< value to process */
19961  );
19962 
19963 /** checks, if value is lower than -feasibility tolerance */
19964 extern
19966  SCIP* scip, /**< SCIP data structure */
19967  SCIP_Real val /**< value to process */
19968  );
19969 
19970 /** checks, if value is integral within the LP feasibility bounds */
19971 extern
19973  SCIP* scip, /**< SCIP data structure */
19974  SCIP_Real val /**< value to process */
19975  );
19976 
19977 /** checks, if given fractional part is smaller than feastol */
19978 extern
19980  SCIP* scip, /**< SCIP data structure */
19981  SCIP_Real val /**< value to process */
19982  );
19983 
19984 /** rounds value + feasibility tolerance down to the next integer */
19985 extern
19987  SCIP* scip, /**< SCIP data structure */
19988  SCIP_Real val /**< value to process */
19989  );
19990 
19991 /** rounds value - feasibility tolerance up to the next integer */
19992 extern
19994  SCIP* scip, /**< SCIP data structure */
19995  SCIP_Real val /**< value to process */
19996  );
19997 
19998 /** rounds value to the nearest integer in feasibility tolerance */
19999 extern
20001  SCIP* scip, /**< SCIP data structure */
20002  SCIP_Real val /**< value to process */
20003  );
20004 
20005 /** returns fractional part of value, i.e. x - floor(x) */
20006 extern
20008  SCIP* scip, /**< SCIP data structure */
20009  SCIP_Real val /**< value to process */
20010  );
20011 
20012 /** checks, if relative difference of values is in range of dual feasibility tolerance */
20013 extern
20015  SCIP* scip, /**< SCIP data structure */
20016  SCIP_Real val1, /**< first value to be compared */
20017  SCIP_Real val2 /**< second value to be compared */
20018  );
20019 
20020 /** checks, if relative difference val1 and val2 is lower than dual feasibility tolerance */
20021 extern
20023  SCIP* scip, /**< SCIP data structure */
20024  SCIP_Real val1, /**< first value to be compared */
20025  SCIP_Real val2 /**< second value to be compared */
20026  );
20027 
20028 /** checks, if relative difference of val1 and val2 is not greater than dual feasibility tolerance */
20029 extern
20031  SCIP* scip, /**< SCIP data structure */
20032  SCIP_Real val1, /**< first value to be compared */
20033  SCIP_Real val2 /**< second value to be compared */
20034  );
20035 
20036 /** checks, if relative difference of val1 and val2 is greater than dual feasibility tolerance */
20037 extern
20039  SCIP* scip, /**< SCIP data structure */
20040  SCIP_Real val1, /**< first value to be compared */
20041  SCIP_Real val2 /**< second value to be compared */
20042  );
20043 
20044 /** checks, if relative difference of val1 and val2 is not lower than -dual feasibility tolerance */
20045 extern
20047  SCIP* scip, /**< SCIP data structure */
20048  SCIP_Real val1, /**< first value to be compared */
20049  SCIP_Real val2 /**< second value to be compared */
20050  );
20051 
20052 /** checks, if value is in range dual feasibility tolerance of 0.0 */
20053 extern
20055  SCIP* scip, /**< SCIP data structure */
20056  SCIP_Real val /**< value to process */
20057  );
20058 
20059 /** checks, if value is greater than dual feasibility tolerance */
20060 extern
20062  SCIP* scip, /**< SCIP data structure */
20063  SCIP_Real val /**< value to process */
20064  );
20065 
20066 /** checks, if value is lower than -dual feasibility tolerance */
20067 extern
20069  SCIP* scip, /**< SCIP data structure */
20070  SCIP_Real val /**< value to process */
20071  );
20072 
20073 /** checks, if value is integral within the LP dual feasibility tolerance */
20074 extern
20076  SCIP* scip, /**< SCIP data structure */
20077  SCIP_Real val /**< value to process */
20078  );
20079 
20080 /** checks, if given fractional part is smaller than dual feasibility tolerance */
20081 extern
20083  SCIP* scip, /**< SCIP data structure */
20084  SCIP_Real val /**< value to process */
20085  );
20086 
20087 /** rounds value + dual feasibility tolerance down to the next integer */
20088 extern
20090  SCIP* scip, /**< SCIP data structure */
20091  SCIP_Real val /**< value to process */
20092  );
20093 
20094 /** rounds value - dual feasibility tolerance up to the next integer */
20095 extern
20097  SCIP* scip, /**< SCIP data structure */
20098  SCIP_Real val /**< value to process */
20099  );
20100 
20101 /** rounds value to the nearest integer in dual feasibility tolerance */
20102 extern
20104  SCIP* scip, /**< SCIP data structure */
20105  SCIP_Real val /**< value to process */
20106  );
20107 
20108 /** returns fractional part of value, i.e. x - floor(x) in dual feasibility tolerance */
20109 extern
20111  SCIP* scip, /**< SCIP data structure */
20112  SCIP_Real val /**< value to process */
20113  );
20114 
20115 /** checks, if the given new lower bound is tighter (w.r.t. bound strengthening epsilon) than the old one */
20116 extern
20118  SCIP* scip, /**< SCIP data structure */
20119  SCIP_Real newlb, /**< new lower bound */
20120  SCIP_Real oldlb, /**< old lower bound */
20121  SCIP_Real oldub /**< old upper bound */
20122  );
20123 
20124 /** checks, if the given new upper bound is tighter (w.r.t. bound strengthening epsilon) than the old one */
20126  SCIP* scip, /**< SCIP data structure */
20127  SCIP_Real newub, /**< new upper bound */
20128  SCIP_Real oldlb, /**< old lower bound */
20129  SCIP_Real oldub /**< old upper bound */
20130  );
20131 
20132 /** checks, if relative difference of values is in range of epsilon */
20133 extern
20135  SCIP* scip, /**< SCIP data structure */
20136  SCIP_Real val1, /**< first value to be compared */
20137  SCIP_Real val2 /**< second value to be compared */
20138  );
20139 
20140 /** checks, if relative difference of val1 and val2 is lower than epsilon */
20141 extern
20143  SCIP* scip, /**< SCIP data structure */
20144  SCIP_Real val1, /**< first value to be compared */
20145  SCIP_Real val2 /**< second value to be compared */
20146  );
20147 
20148 /** checks, if relative difference of val1 and val2 is not greater than epsilon */
20149 extern
20151  SCIP* scip, /**< SCIP data structure */
20152  SCIP_Real val1, /**< first value to be compared */
20153  SCIP_Real val2 /**< second value to be compared */
20154  );
20155 
20156 /** checks, if relative difference of val1 and val2 is greater than epsilon */
20157 extern
20159  SCIP* scip, /**< SCIP data structure */
20160  SCIP_Real val1, /**< first value to be compared */
20161  SCIP_Real val2 /**< second value to be compared */
20162  );
20163 
20164 /** checks, if relative difference of val1 and val2 is not lower than -epsilon */
20165 extern
20167  SCIP* scip, /**< SCIP data structure */
20168  SCIP_Real val1, /**< first value to be compared */
20169  SCIP_Real val2 /**< second value to be compared */
20170  );
20171 
20172 /** checks, if relative difference of values is in range of sumepsilon */
20173 extern
20175  SCIP* scip, /**< SCIP data structure */
20176  SCIP_Real val1, /**< first value to be compared */
20177  SCIP_Real val2 /**< second value to be compared */
20178  );
20179 
20180 /** checks, if relative difference of val1 and val2 is lower than sumepsilon */
20181 extern
20183  SCIP* scip, /**< SCIP data structure */
20184  SCIP_Real val1, /**< first value to be compared */
20185  SCIP_Real val2 /**< second value to be compared */
20186  );
20187 
20188 /** checks, if relative difference of val1 and val2 is not greater than sumepsilon */
20189 extern
20191  SCIP* scip, /**< SCIP data structure */
20192  SCIP_Real val1, /**< first value to be compared */
20193  SCIP_Real val2 /**< second value to be compared */
20194  );
20195 
20196 /** checks, if relative difference of val1 and val2 is greater than sumepsilon */
20197 extern
20199  SCIP* scip, /**< SCIP data structure */
20200  SCIP_Real val1, /**< first value to be compared */
20201  SCIP_Real val2 /**< second value to be compared */
20202  );
20203 
20204 /** checks, if relative difference of val1 and val2 is not lower than -sumepsilon */
20205 extern
20207  SCIP* scip, /**< SCIP data structure */
20208  SCIP_Real val1, /**< first value to be compared */
20209  SCIP_Real val2 /**< second value to be compared */
20210  );
20211 
20212 /** converts the given real number representing an integer to an int; in optimized mode the function gets inlined for
20213  * performance; in debug mode we check some additional conditions
20214  */
20215 extern
20217  SCIP* scip, /**< SCIP data structure */
20218  SCIP_Real real /**< double bound to convert */
20219  );
20220 
20221 /** converts the given real number representing an integer to a long integer; in optimized mode the function gets inlined for
20222  * performance; in debug mode we check some additional conditions
20223  */
20224 extern
20226  SCIP* scip, /**< SCIP data structure */
20227  SCIP_Real real /**< double bound to convert */
20228  );
20229 
20230 /** Checks, if an iteratively updated value is reliable or should be recomputed from scratch.
20231  * This is useful, if the value, e.g., the activity of a linear constraint or the pseudo objective value, gets a high
20232  * absolute value during the optimization process which is later reduced significantly. In this case, the last digits
20233  * were canceled out when increasing the value and are random after decreasing it.
20234  * We do not consider the cancellations which can occur during increasing the absolute value because they just cannot
20235  * be expressed using fixed precision floating point arithmetic, anymore.
20236  * In order to get more reliable values, the idea is to always store the last reliable value, where increasing the
20237  * absolute of the value is viewed as preserving reliability. Then, after each update, the new absolute value can be
20238  * compared against the last reliable one with this method, checking whether it was decreased by a factor of at least
20239  * "lp/recompfac" and should be recomputed.
20240  */
20241 extern
20243  SCIP* scip, /**< SCIP data structure */
20244  SCIP_Real newvalue, /**< new value after update */
20245  SCIP_Real oldvalue /**< old value, i.e., last reliable value */
20246  );
20247 
20248 #ifdef NDEBUG
20249 
20250 /* In optimized mode, the function calls are overwritten by defines to reduce the number of function calls and
20251  * speed up the algorithms.
20252  */
20253 
20254 #define SCIPinfinity(scip) SCIPsetInfinity((scip)->set)
20255 #define SCIPisInfinity(scip, val) SCIPsetIsInfinity((scip)->set, val)
20256 #define SCIPisHugeValue(scip, val) SCIPsetIsHugeValue((scip)->set, val)
20257 #define SCIPgetHugeValue(scip) SCIPsetGetHugeValue((scip)->set)
20258 #define SCIPisEQ(scip, val1, val2) SCIPsetIsEQ((scip)->set, val1, val2)
20259 #define SCIPisLT(scip, val1, val2) SCIPsetIsLT((scip)->set, val1, val2)
20260 #define SCIPisLE(scip, val1, val2) SCIPsetIsLE((scip)->set, val1, val2)
20261 #define SCIPisGT(scip, val1, val2) SCIPsetIsGT((scip)->set, val1, val2)
20262 #define SCIPisGE(scip, val1, val2) SCIPsetIsGE((scip)->set, val1, val2)
20263 #define SCIPisZero(scip, val) SCIPsetIsZero((scip)->set, val)
20264 #define SCIPisPositive(scip, val) SCIPsetIsPositive((scip)->set, val)
20265 #define SCIPisNegative(scip, val) SCIPsetIsNegative((scip)->set, val)
20266 #define SCIPisIntegral(scip, val) SCIPsetIsIntegral((scip)->set, val)
20267 #define SCIPisScalingIntegral(scip, val, scalar) SCIPsetIsScalingIntegral((scip)->set, val, scalar)
20268 #define SCIPisFracIntegral(scip, val) SCIPsetIsFracIntegral((scip)->set, val)
20269 #define SCIPfloor(scip, val) SCIPsetFloor((scip)->set, val)
20270 #define SCIPceil(scip, val) SCIPsetCeil((scip)->set, val)
20271 #define SCIPround(scip, val) SCIPsetRound((scip)->set, val)
20272 #define SCIPfrac(scip, val) SCIPsetFrac((scip)->set, val)
20273 
20274 #define SCIPisSumEQ(scip, val1, val2) SCIPsetIsSumEQ((scip)->set, val1, val2)
20275 #define SCIPisSumLT(scip, val1, val2) SCIPsetIsSumLT((scip)->set, val1, val2)
20276 #define SCIPisSumLE(scip, val1, val2) SCIPsetIsSumLE((scip)->set, val1, val2)
20277 #define SCIPisSumGT(scip, val1, val2) SCIPsetIsSumGT((scip)->set, val1, val2)
20278 #define SCIPisSumGE(scip, val1, val2) SCIPsetIsSumGE((scip)->set, val1, val2)
20279 #define SCIPisSumZero(scip, val) SCIPsetIsSumZero((scip)->set, val)
20280 #define SCIPisSumPositive(scip, val) SCIPsetIsSumPositive((scip)->set, val)
20281 #define SCIPisSumNegative(scip, val) SCIPsetIsSumNegative((scip)->set, val)
20282 
20283 #define SCIPisFeasEQ(scip, val1, val2) SCIPsetIsFeasEQ((scip)->set, val1, val2)
20284 #define SCIPisFeasLT(scip, val1, val2) SCIPsetIsFeasLT((scip)->set, val1, val2)
20285 #define SCIPisFeasLE(scip, val1, val2) SCIPsetIsFeasLE((scip)->set, val1, val2)
20286 #define SCIPisFeasGT(scip, val1, val2) SCIPsetIsFeasGT((scip)->set, val1, val2)
20287 #define SCIPisFeasGE(scip, val1, val2) SCIPsetIsFeasGE((scip)->set, val1, val2)
20288 #define SCIPisFeasZero(scip, val) SCIPsetIsFeasZero((scip)->set, val)
20289 #define SCIPisFeasPositive(scip, val) SCIPsetIsFeasPositive((scip)->set, val)
20290 #define SCIPisFeasNegative(scip, val) SCIPsetIsFeasNegative((scip)->set, val)
20291 #define SCIPisFeasIntegral(scip, val) SCIPsetIsFeasIntegral((scip)->set, val)
20292 #define SCIPisFeasFracIntegral(scip, val) SCIPsetIsFeasFracIntegral((scip)->set, val)
20293 #define SCIPfeasFloor(scip, val) SCIPsetFeasFloor((scip)->set, val)
20294 #define SCIPfeasCeil(scip, val) SCIPsetFeasCeil((scip)->set, val)
20295 #define SCIPfeasRound(scip, val) SCIPsetFeasRound((scip)->set, val)
20296 #define SCIPfeasFrac(scip, val) SCIPsetFeasFrac((scip)->set, val)
20297 
20298 #define SCIPisDualfeasEQ(scip, val1, val2) SCIPsetIsDualfeasEQ((scip)->set, val1, val2)
20299 #define SCIPisDualfeasLT(scip, val1, val2) SCIPsetIsDualfeasLT((scip)->set, val1, val2)
20300 #define SCIPisDualfeasLE(scip, val1, val2) SCIPsetIsDualfeasLE((scip)->set, val1, val2)
20301 #define SCIPisDualfeasGT(scip, val1, val2) SCIPsetIsDualfeasGT((scip)->set, val1, val2)
20302 #define SCIPisDualfeasGE(scip, val1, val2) SCIPsetIsDualfeasGE((scip)->set, val1, val2)
20303 #define SCIPisDualfeasZero(scip, val) SCIPsetIsDualfeasZero((scip)->set, val)
20304 #define SCIPisDualfeasPositive(scip, val) SCIPsetIsDualfeasPositive((scip)->set, val)
20305 #define SCIPisDualfeasNegative(scip, val) SCIPsetIsDualfeasNegative((scip)->set, val)
20306 #define SCIPisDualfeasIntegral(scip, val) SCIPsetIsDualfeasIntegral((scip)->set, val)
20307 #define SCIPisDualfeasFracIntegral(scip, val) SCIPsetIsDualfeasFracIntegral((scip)->set, val)
20308 #define SCIPdualfeasFloor(scip, val) SCIPsetDualfeasFloor((scip)->set, val)
20309 #define SCIPdualfeasCeil(scip, val) SCIPsetDualfeasCeil((scip)->set, val)
20310 #define SCIPdualfeasRound(scip, val) SCIPsetDualfeasRound((scip)->set, val)
20311 #define SCIPdualfeasFrac(scip, val) SCIPsetDualfeasFrac((scip)->set, val)
20312 
20313 #define SCIPisLbBetter(scip, newlb, oldlb, oldub) SCIPsetIsLbBetter(scip->set, newlb, oldlb, oldub)
20314 #define SCIPisUbBetter(scip, newub, oldlb, oldub) SCIPsetIsUbBetter(scip->set, newub, oldlb, oldub)
20315 
20316 #define SCIPisRelEQ(scip, val1, val2) SCIPsetIsRelEQ((scip)->set, val1, val2)
20317 #define SCIPisRelLT(scip, val1, val2) SCIPsetIsRelLT((scip)->set, val1, val2)
20318 #define SCIPisRelLE(scip, val1, val2) SCIPsetIsRelLE((scip)->set, val1, val2)
20319 #define SCIPisRelGT(scip, val1, val2) SCIPsetIsRelGT((scip)->set, val1, val2)
20320 #define SCIPisRelGE(scip, val1, val2) SCIPsetIsRelGE((scip)->set, val1, val2)
20321 
20322 #define SCIPisSumRelEQ(scip, val1, val2) SCIPsetIsSumRelEQ((scip)->set, val1, val2)
20323 #define SCIPisSumRelLT(scip, val1, val2) SCIPsetIsSumRelLT((scip)->set, val1, val2)
20324 #define SCIPisSumRelLE(scip, val1, val2) SCIPsetIsSumRelLE((scip)->set, val1, val2)
20325 #define SCIPisSumRelGT(scip, val1, val2) SCIPsetIsSumRelGT((scip)->set, val1, val2)
20326 #define SCIPisSumRelGE(scip, val1, val2) SCIPsetIsSumRelGE((scip)->set, val1, val2)
20327 #define SCIPconvertRealToInt(scip, real) ((int)((real) < 0 ? ((real) - 0.5) : ((real) + 0.5)))
20328 #define SCIPconvertRealToLongint(scip, real) ((SCIP_Longint)((real) < 0 ? ((real) - 0.5) : ((real) + 0.5)))
20329 
20330 #define SCIPisUpdateUnreliable(scip, newval, oldval) SCIPsetIsUpdateUnreliable((scip)->set, newval, oldval)
20331 #endif
20332 
20333 /** outputs a real number, or "+infinity", or "-infinity" to a file */
20334 extern
20335 void SCIPprintReal(
20336  SCIP* scip, /**< SCIP data structure */
20337  FILE* file, /**< output file (or NULL for standard output) */
20338  SCIP_Real val, /**< value to print */
20339  int width, /**< width of the field */
20340  int precision /**< number of significant digits printed */
20341  );
20342 
20343 /**@} */
20344 
20345 
20346 
20347 
20348 /*
20349  * memory management
20350  */
20351 
20352 /**@name Standard Memory Management Macros */
20353 /**@{ */
20354 
20355 #define SCIPallocMemory(scip,ptr) ( (BMSallocMemory((ptr)) == NULL) \
20356  ? SCIP_NOMEMORY : SCIP_OKAY )
20357 #define SCIPallocMemoryArray(scip,ptr,num) ( (BMSallocMemoryArray((ptr), (num)) == NULL) \
20358  ? SCIP_NOMEMORY : SCIP_OKAY )
20359 #define SCIPallocClearMemoryArray(scip,ptr,num) ( (BMSallocClearMemoryArray((ptr), (num)) == NULL) \
20360  ? SCIP_NOMEMORY : SCIP_OKAY )
20361 #define SCIPallocMemorySize(scip,ptr,size) ( (BMSallocMemorySize((ptr), (size)) == NULL) \
20362  ? SCIP_NOMEMORY : SCIP_OKAY )
20363 #define SCIPreallocMemoryArray(scip,ptr,newnum) ( (BMSreallocMemoryArray((ptr), (newnum)) == NULL) \
20364  ? SCIP_NOMEMORY : SCIP_OKAY )
20365 #define SCIPreallocMemorySize(scip,ptr,newsize) ( (BMSreallocMemorySize((ptr), (newsize)) == NULL) \
20366  ? SCIP_NOMEMORY : SCIP_OKAY )
20367 #define SCIPduplicateMemory(scip, ptr, source) ( (BMSduplicateMemory((ptr), (source)) == NULL) \
20368  ? SCIP_NOMEMORY : SCIP_OKAY )
20369 #define SCIPduplicateMemoryArray(scip, ptr, source, num) ( (BMSduplicateMemoryArray((ptr), (source), (num)) == NULL) \
20370  ? SCIP_NOMEMORY : SCIP_OKAY )
20371 #define SCIPfreeMemory(scip,ptr) BMSfreeMemory(ptr)
20372 #define SCIPfreeMemoryNull(scip,ptr) BMSfreeMemoryNull(ptr)
20373 #define SCIPfreeMemoryArray(scip,ptr) BMSfreeMemoryArray(ptr)
20374 #define SCIPfreeMemoryArrayNull(scip,ptr) BMSfreeMemoryArrayNull(ptr)
20375 #define SCIPfreeMemorySize(scip,ptr) BMSfreeMemorySize(ptr)
20376 #define SCIPfreeMemorySizeNull(scip,ptr) BMSfreeMemorySizeNull(ptr)
20377 /**@} */
20378 
20379 
20380 /**@name Block Memory Management Macros */
20381 /**@{ */
20382 
20383 #define SCIPallocBlockMemory(scip,ptr) ( (BMSallocBlockMemory(SCIPblkmem(scip), (ptr)) == NULL) \
20384  ? SCIP_NOMEMORY : SCIP_OKAY )
20385 #define SCIPallocBlockMemoryArray(scip,ptr,num) ( (BMSallocBlockMemoryArray(SCIPblkmem(scip), (ptr), (num)) == NULL) \
20386  ? SCIP_NOMEMORY : SCIP_OKAY )
20387 #define SCIPallocBlockMemorySize(scip,ptr,size) ( (BMSallocBlockMemorySize(SCIPblkmem(scip), (ptr), (size)) == NULL) \
20388  ? SCIP_NOMEMORY : SCIP_OKAY )
20389 #define SCIPallocClearBlockMemoryArray(scip,ptr,num) ( (BMSallocClearBlockMemoryArray(SCIPblkmem(scip), (ptr), (num)) == NULL) \
20390  ? SCIP_NOMEMORY : SCIP_OKAY )
20391 #define SCIPreallocBlockMemoryArray(scip,ptr,oldnum,newnum) ( (BMSreallocBlockMemoryArray(SCIPblkmem(scip), (ptr), (oldnum), (newnum)) == NULL) \
20392  ? SCIP_NOMEMORY : SCIP_OKAY )
20393 #define SCIPreallocBlockMemorySize(scip,ptr,oldsize,newsize) ( (BMSreallocBlockMemorySize(SCIPblkmem(scip), (ptr), (oldsize), (newsize)) == NULL) \
20394  ? SCIP_NOMEMORY : SCIP_OKAY )
20395 #define SCIPduplicateBlockMemory(scip, ptr, source) ( (BMSduplicateBlockMemory(SCIPblkmem(scip), (ptr), (source)) == NULL) \
20396  ? SCIP_NOMEMORY : SCIP_OKAY )
20397 #define SCIPduplicateBlockMemoryArray(scip, ptr, source, num) ( (BMSduplicateBlockMemoryArray(SCIPblkmem(scip), (ptr), (source), (num)) == NULL) \
20398  ? SCIP_NOMEMORY : SCIP_OKAY )
20399 #define SCIPensureBlockMemoryArray(scip,ptr,arraysizeptr,minsize) ( (SCIPensureBlockMemoryArray_call((scip), (void**)(ptr), sizeof(**(ptr)), (arraysizeptr), (minsize))) )
20400 #define SCIPfreeBlockMemory(scip,ptr) BMSfreeBlockMemory(SCIPblkmem(scip), (ptr))
20401 #define SCIPfreeBlockMemoryNull(scip,ptr) BMSfreeBlockMemoryNull(SCIPblkmem(scip), (ptr))
20402 #define SCIPfreeBlockMemoryArray(scip,ptr,num) BMSfreeBlockMemoryArray(SCIPblkmem(scip), (ptr), (num))
20403 #define SCIPfreeBlockMemoryArrayNull(scip,ptr,num) BMSfreeBlockMemoryArrayNull(SCIPblkmem(scip), (ptr), (num))
20404 #define SCIPfreeBlockMemorySize(scip,ptr,size) BMSfreeBlockMemorySize(SCIPblkmem(scip), (ptr), (size))
20405 #define SCIPfreeBlockMemorySizeNull(scip,ptr,size) BMSfreeBlockMemorySizeNull(SCIPblkmem(scip), (ptr), (size))
20406 /**@} */
20407 
20408 
20409 /**@name Buffer Memory Management Macros */
20410 /**@{ */
20411 
20412 #define SCIPallocBuffer(scip,ptr) ( (BMSallocBufferMemory(SCIPbuffer(scip), (ptr)) == NULL) \
20413  ? SCIP_NOMEMORY : SCIP_OKAY )
20414 #define SCIPallocBufferArray(scip,ptr,num) ( (BMSallocBufferMemoryArray(SCIPbuffer(scip), (ptr), (num)) == NULL) \
20415  ? SCIP_NOMEMORY : SCIP_OKAY )
20416 #define SCIPallocClearBufferArray(scip,ptr,num) ( (BMSallocClearBufferMemoryArray(SCIPbuffer(scip), (ptr), (num)) == NULL) \
20417  ? SCIP_NOMEMORY : SCIP_OKAY )
20418 #define SCIPreallocBufferArray(scip,ptr,num) ( (BMSreallocBufferMemoryArray(SCIPbuffer(scip), (ptr), (num)) == NULL) \
20419  ? SCIP_NOMEMORY : SCIP_OKAY )
20420 #define SCIPduplicateBuffer(scip,ptr,source) ( (BMSduplicateBufferMemory(SCIPbuffer(scip), (ptr), (source), (size_t)sizeof(**(ptr))) \
20421  ? SCIP_NOMEMORY : SCIP_OKAY )
20422 #define SCIPduplicateBufferArray(scip,ptr,source,num) ( (BMSduplicateBufferMemoryArray(SCIPbuffer(scip), (ptr), (source), (num)) == NULL) \
20423  ? SCIP_NOMEMORY : SCIP_OKAY )
20424 #define SCIPfreeBuffer(scip,ptr) BMSfreeBufferMemorySize(SCIPbuffer(scip), (ptr))
20425 #define SCIPfreeBufferNull(scip,ptr) BMSfreeBufferMemoryNull(SCIPbuffer(scip), (ptr))
20426 #define SCIPfreeBufferArray(scip,ptr) BMSfreeBufferMemoryArray(SCIPbuffer(scip), (ptr))
20427 #define SCIPfreeBufferArrayNull(scip,ptr) BMSfreeBufferMemoryArrayNull(SCIPbuffer(scip), (ptr))
20428 
20429 
20430 #define SCIPallocCleanBuffer(scip,ptr) ( (BMSallocBufferMemory(SCIPcleanbuffer(scip), (ptr)) == NULL) \
20431  ? SCIP_NOMEMORY : SCIP_OKAY )
20432 #define SCIPallocCleanBufferArray(scip,ptr,num) ( (BMSallocBufferMemoryArray(SCIPcleanbuffer(scip), (ptr), (num)) == NULL) \
20433  ? SCIP_NOMEMORY : SCIP_OKAY )
20434 #define SCIPfreeCleanBuffer(scip,ptr) BMSfreeBufferMemorySize(SCIPcleanbuffer(scip), (ptr))
20435 #define SCIPfreeCleanBufferNull(scip,ptr) BMSfreeBufferMemoryNull(SCIPcleanbuffer(scip), (ptr))
20436 #define SCIPfreeCleanBufferArray(scip,ptr) BMSfreeBufferMemoryArray(SCIPcleanbuffer(scip), (ptr))
20437 #define SCIPfreeCleanBufferArrayNull(scip,ptr) BMSfreeBufferMemoryArrayNull(SCIPcleanbuffer(scip), (ptr))
20438 
20439 /**@} */
20440 
20441 
20442 /**@name Memory Management Functions */
20443 /**@{ */
20444 
20445 /** returns block memory to use at the current time
20446  *
20447  * @return the block memory to use at the current time.
20448  */
20449 extern
20450 BMS_BLKMEM* SCIPblkmem(
20451  SCIP* scip /**< SCIP data structure */
20452  );
20453 
20454 /** returns buffer memory for short living temporary objects
20455  *
20456  * @return the buffer memory for short living temporary objects
20457  */
20458 extern
20459 BMS_BUFMEM* SCIPbuffer(
20460  SCIP* scip /**< SCIP data structure */
20461  );
20462 
20463 /** returns clean buffer memory for short living temporary objects initialized to all zero
20464  *
20465  * @return the buffer memory for short living temporary objects initialized to all zero
20466  */
20467 extern
20468 BMS_BUFMEM* SCIPcleanbuffer(
20469  SCIP* scip /**< SCIP data structure */
20470  );
20471 
20472 /** returns the total number of bytes used in block and buffer memory
20473  *
20474  * @return the total number of bytes used in block and buffer memory.
20475  */
20476 extern
20478  SCIP* scip /**< SCIP data structure */
20479  );
20480 
20481 /** returns the estimated number of bytes used by external software, e.g., the LP solver
20482  *
20483  * @return the estimated number of bytes used by external software, e.g., the LP solver.
20484  */
20485 extern
20487  SCIP* scip /**< SCIP data structure */
20488  );
20489 
20490 /** calculate memory size for dynamically allocated arrays
20491  *
20492  * @return the memory size for dynamically allocated arrays.
20493  */
20494 extern
20496  SCIP* scip, /**< SCIP data structure */
20497  int num /**< minimum number of entries to store */
20498  );
20499 
20500 /** extends a dynamically allocated block memory array to be able to store at least the given number of elements;
20501  * use SCIPensureBlockMemoryArray() define to call this method!
20502  *
20503  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
20504  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
20505  */
20506 extern
20508  SCIP* scip, /**< SCIP data structure */
20509  void** arrayptr, /**< pointer to dynamically sized array */
20510  size_t elemsize, /**< size in bytes of each element in array */
20511  int* arraysize, /**< pointer to current array size */
20512  int minsize /**< required minimal array size */
20513  );
20514 
20515 /** prints output about used memory */
20516 extern
20518  SCIP* scip /**< SCIP data structure */
20519  );
20520 
20521 /**@} */
20522 
20523 
20524 
20525 
20526 /*
20527  * dynamic arrays
20528  */
20529 
20530 /**@name Dynamic Arrays */
20531 /**@{ */
20532 
20533 /** creates a dynamic array of real values
20534  *
20535  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
20536  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
20537  */
20538 extern
20540  SCIP* scip, /**< SCIP data structure */
20541  SCIP_REALARRAY** realarray /**< pointer to store the real array */
20542  );
20543 
20544 /** frees a dynamic array of real values
20545  *
20546  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
20547  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
20548  */
20549 extern
20551  SCIP* scip, /**< SCIP data structure */
20552  SCIP_REALARRAY** realarray /**< pointer to the real array */
20553  );
20554 
20555 /** extends dynamic array to be able to store indices from minidx to maxidx
20556  *
20557  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
20558  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
20559  */
20560 extern
20562  SCIP* scip, /**< SCIP data structure */
20563  SCIP_REALARRAY* realarray, /**< dynamic real array */
20564  int minidx, /**< smallest index to allocate storage for */
20565  int maxidx /**< largest index to allocate storage for */
20566  );
20567 
20568 /** clears a dynamic real array
20569  *
20570  * @return clears a dynamic real array
20571  */
20572 extern
20574  SCIP* scip, /**< SCIP data structure */
20575  SCIP_REALARRAY* realarray /**< dynamic real array */
20576  );
20577 
20578 /** gets value of entry in dynamic array */
20579 extern
20581  SCIP* scip, /**< SCIP data structure */
20582  SCIP_REALARRAY* realarray, /**< dynamic real array */
20583  int idx /**< array index to get value for */
20584  );
20585 
20586 /** sets value of entry in dynamic array
20587  *
20588  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
20589  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
20590  */
20591 extern
20593  SCIP* scip, /**< SCIP data structure */
20594  SCIP_REALARRAY* realarray, /**< dynamic real array */
20595  int idx, /**< array index to set value for */
20596  SCIP_Real val /**< value to set array index to */
20597  );
20598 
20599 /** increases value of entry in dynamic array
20600  *
20601  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
20602  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
20603  */
20604 extern
20606  SCIP* scip, /**< SCIP data structure */
20607  SCIP_REALARRAY* realarray, /**< dynamic real array */
20608  int idx, /**< array index to increase value for */
20609  SCIP_Real incval /**< value to increase array index */
20610  );
20611 
20612 /** returns the minimal index of all stored non-zero elements
20613  *
20614  * @return the minimal index of all stored non-zero elements
20615  */
20616 extern
20618  SCIP* scip, /**< SCIP data structure */
20619  SCIP_REALARRAY* realarray /**< dynamic real array */
20620  );
20621 
20622 /** returns the maximal index of all stored non-zero elements
20623  *
20624  * @return the maximal index of all stored non-zero elements
20625  */
20626 extern
20628  SCIP* scip, /**< SCIP data structure */
20629  SCIP_REALARRAY* realarray /**< dynamic real array */
20630  );
20631 
20632 /** creates a dynamic array of int values
20633  *
20634  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
20635  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
20636  */
20637 extern
20639  SCIP* scip, /**< SCIP data structure */
20640  SCIP_INTARRAY** intarray /**< pointer to store the int array */
20641  );
20642 
20643 /** frees a dynamic array of int values
20644  *
20645  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
20646  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
20647  */
20648 extern
20650  SCIP* scip, /**< SCIP data structure */
20651  SCIP_INTARRAY** intarray /**< pointer to the int array */
20652  );
20653 
20654 /** extends dynamic array to be able to store indices from minidx to maxidx
20655  *
20656  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
20657  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
20658  */
20659 extern
20661  SCIP* scip, /**< SCIP data structure */
20662  SCIP_INTARRAY* intarray, /**< dynamic int array */
20663  int minidx, /**< smallest index to allocate storage for */
20664  int maxidx /**< largest index to allocate storage for */
20665  );
20666 
20667 /** clears a dynamic int array
20668  *
20669  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
20670  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
20671  */
20672 extern
20674  SCIP* scip, /**< SCIP data structure */
20675  SCIP_INTARRAY* intarray /**< dynamic int array */
20676  );
20677 
20678 /** gets value of entry in dynamic array
20679  *
20680  * @return value of entry in dynamic array
20681  */
20682 extern
20683 int SCIPgetIntarrayVal(
20684  SCIP* scip, /**< SCIP data structure */
20685  SCIP_INTARRAY* intarray, /**< dynamic int array */
20686  int idx /**< array index to get value for */
20687  );
20688 
20689 /** sets value of entry in dynamic array
20690  *
20691  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
20692  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
20693  */
20694 extern
20696  SCIP* scip, /**< SCIP data structure */
20697  SCIP_INTARRAY* intarray, /**< dynamic int array */
20698  int idx, /**< array index to set value for */
20699  int val /**< value to set array index to */
20700  );
20701 
20702 /** increases value of entry in dynamic array
20703  *
20704  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
20705  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
20706  */
20707 extern
20709  SCIP* scip, /**< SCIP data structure */
20710  SCIP_INTARRAY* intarray, /**< dynamic int array */
20711  int idx, /**< array index to increase value for */
20712  int incval /**< value to increase array index */
20713  );
20714 
20715 /** returns the minimal index of all stored non-zero elements
20716  *
20717  * @return the minimal index of all stored non-zero elements
20718  */
20719 extern
20721  SCIP* scip, /**< SCIP data structure */
20722  SCIP_INTARRAY* intarray /**< dynamic int array */
20723  );
20724 
20725 /** returns the maximal index of all stored non-zero elements
20726  *
20727  * @return the maximal index of all stored non-zero elements
20728  */
20729 extern
20731  SCIP* scip, /**< SCIP data structure */
20732  SCIP_INTARRAY* intarray /**< dynamic int array */
20733  );
20734 
20735 /** creates a dynamic array of bool values
20736  *
20737  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
20738  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
20739  */
20740 extern
20742  SCIP* scip, /**< SCIP data structure */
20743  SCIP_BOOLARRAY** boolarray /**< pointer to store the bool array */
20744  );
20745 
20746 /** frees a dynamic array of bool values
20747  *
20748  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
20749  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
20750  */
20751 extern
20753  SCIP* scip, /**< SCIP data structure */
20754  SCIP_BOOLARRAY** boolarray /**< pointer to the bool array */
20755  );
20756 
20757 /** extends dynamic array to be able to store indices from minidx to maxidx
20758  *
20759  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
20760  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
20761  */
20762 extern
20764  SCIP* scip, /**< SCIP data structure */
20765  SCIP_BOOLARRAY* boolarray, /**< dynamic bool array */
20766  int minidx, /**< smallest index to allocate storage for */
20767  int maxidx /**< largest index to allocate storage for */
20768  );
20769 
20770 /** clears a dynamic bool array
20771  *
20772  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
20773  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
20774  */
20775 extern
20777  SCIP* scip, /**< SCIP data structure */
20778  SCIP_BOOLARRAY* boolarray /**< dynamic bool array */
20779  );
20780 
20781 /** gets value of entry in dynamic array
20782  *
20783  * @return value of entry in dynamic array at position idx
20784  */
20785 extern
20787  SCIP* scip, /**< SCIP data structure */
20788  SCIP_BOOLARRAY* boolarray, /**< dynamic bool array */
20789  int idx /**< array index to get value for */
20790  );
20791 
20792 /** sets value of entry in dynamic array
20793  *
20794  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
20795  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
20796  */
20797 extern
20799  SCIP* scip, /**< SCIP data structure */
20800  SCIP_BOOLARRAY* boolarray, /**< dynamic bool array */
20801  int idx, /**< array index to set value for */
20802  SCIP_Bool val /**< value to set array index to */
20803  );
20804 
20805 /** returns the minimal index of all stored non-zero elements
20806  *
20807  * @return the minimal index of all stored non-zero elements
20808  */
20809 extern
20811  SCIP* scip, /**< SCIP data structure */
20812  SCIP_BOOLARRAY* boolarray /**< dynamic bool array */
20813  );
20814 
20815 /** returns the maximal index of all stored non-zero elements
20816  *
20817  * @return the maximal index of all stored non-zero elements
20818  */
20819 extern
20821  SCIP* scip, /**< SCIP data structure */
20822  SCIP_BOOLARRAY* boolarray /**< dynamic bool array */
20823  );
20824 
20825 /** creates a dynamic array of pointers
20826  *
20827  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
20828  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
20829  */
20830 extern
20832  SCIP* scip, /**< SCIP data structure */
20833  SCIP_PTRARRAY** ptrarray /**< pointer to store the int array */
20834  );
20835 
20836 /** frees a dynamic array of pointers
20837  *
20838  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
20839  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
20840  */
20841 extern
20843  SCIP* scip, /**< SCIP data structure */
20844  SCIP_PTRARRAY** ptrarray /**< pointer to the int array */
20845  );
20846 
20847 /** extends dynamic array to be able to store indices from minidx to maxidx
20848  *
20849  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
20850  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
20851  */
20852 extern
20854  SCIP* scip, /**< SCIP data structure */
20855  SCIP_PTRARRAY* ptrarray, /**< dynamic int array */
20856  int minidx, /**< smallest index to allocate storage for */
20857  int maxidx /**< largest index to allocate storage for */
20858  );
20859 
20860 /** clears a dynamic pointer array
20861  *
20862  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
20863  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
20864  */
20865 extern
20867  SCIP* scip, /**< SCIP data structure */
20868  SCIP_PTRARRAY* ptrarray /**< dynamic int array */
20869  );
20870 
20871 /** gets value of entry in dynamic array */
20872 extern
20873 void* SCIPgetPtrarrayVal(
20874  SCIP* scip, /**< SCIP data structure */
20875  SCIP_PTRARRAY* ptrarray, /**< dynamic int array */
20876  int idx /**< array index to get value for */
20877  );
20878 
20879 /** sets value of entry in dynamic array
20880  *
20881  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
20882  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
20883  */
20884 extern
20886  SCIP* scip, /**< SCIP data structure */
20887  SCIP_PTRARRAY* ptrarray, /**< dynamic int array */
20888  int idx, /**< array index to set value for */
20889  void* val /**< value to set array index to */
20890  );
20891 
20892 /** returns the minimal index of all stored non-zero elements
20893  *
20894  * @return the minimal index of all stored non-zero elements
20895  */
20896 extern
20898  SCIP* scip, /**< SCIP data structure */
20899  SCIP_PTRARRAY* ptrarray /**< dynamic ptr array */
20900  );
20901 
20902 /** returns the maximal index of all stored non-zero elements
20903  *
20904  * @return the maximal index of all stored non-zero elements
20905  */
20906 extern
20908  SCIP* scip, /**< SCIP data structure */
20909  SCIP_PTRARRAY* ptrarray /**< dynamic ptr array */
20910  );
20911 
20912 #ifdef NDEBUG
20913 
20914 /* In optimized mode, the function calls are overwritten by defines to reduce the number of function calls and
20915  * speed up the algorithms.
20916  */
20917 
20918 #define SCIPcreateRealarray(scip, realarray) SCIPrealarrayCreate(realarray, SCIPblkmem(scip))
20919 #define SCIPfreeRealarray(scip, realarray) SCIPrealarrayFree(realarray)
20920 #define SCIPextendRealarray(scip, realarray, minidx, maxidx) SCIPrealarrayExtend(realarray, (scip)->set->mem_arraygrowinit, (scip)->set->mem_arraygrowfac, minidx, maxidx)
20921 #define SCIPclearRealarray(scip, realarray) SCIPrealarrayClear(realarray)
20922 #define SCIPgetRealarrayVal(scip, realarray, idx) SCIPrealarrayGetVal(realarray, idx)
20923 #define SCIPsetRealarrayVal(scip, realarray, idx, val) SCIPrealarraySetVal(realarray, (scip)->set->mem_arraygrowinit, (scip)->set->mem_arraygrowfac, idx, val)
20924 #define SCIPincRealarrayVal(scip, realarray, idx, incval) SCIPrealarrayIncVal(realarray, (scip)->set->mem_arraygrowinit, (scip)->set->mem_arraygrowfac, idx, incval)
20925 #define SCIPgetRealarrayMinIdx(scip, realarray) SCIPrealarrayGetMinIdx(realarray)
20926 #define SCIPgetRealarrayMaxIdx(scip, realarray) SCIPrealarrayGetMaxIdx(realarray)
20927 
20928 #define SCIPcreateIntarray(scip, intarray) SCIPintarrayCreate(intarray, SCIPblkmem(scip))
20929 #define SCIPfreeIntarray(scip, intarray) SCIPintarrayFree(intarray)
20930 #define SCIPextendIntarray(scip, intarray, minidx, maxidx) SCIPintarrayExtend(intarray, (scip)->set->mem_arraygrowinit, (scip)->set->mem_arraygrowfac, minidx, maxidx)
20931 #define SCIPclearIntarray(scip, intarray) SCIPintarrayClear(intarray)
20932 #define SCIPgetIntarrayVal(scip, intarray, idx) SCIPintarrayGetVal(intarray, idx)
20933 #define SCIPsetIntarrayVal(scip, intarray, idx, val) SCIPintarraySetVal(intarray, (scip)->set->mem_arraygrowinit, (scip)->set->mem_arraygrowfac, idx, val)
20934 #define SCIPincIntarrayVal(scip, intarray, idx, incval) SCIPintarrayIncVal(intarray, (scip)->set->mem_arraygrowinit, (scip)->set->mem_arraygrowfac, idx, incval)
20935 #define SCIPgetIntarrayMinIdx(scip, intarray) SCIPintarrayGetMinIdx(intarray)
20936 #define SCIPgetIntarrayMaxIdx(scip, intarray) SCIPintarrayGetMaxIdx(intarray)
20937 
20938 #define SCIPcreateBoolarray(scip, boolarray) SCIPboolarrayCreate(boolarray, SCIPblkmem(scip))
20939 #define SCIPfreeBoolarray(scip, boolarray) SCIPboolarrayFree(boolarray)
20940 #define SCIPextendBoolarray(scip, boolarray, minidx, maxidx) SCIPboolarrayExtend(boolarray, (scip)->set->mem_arraygrowinit, (scip)->set->mem_arraygrowfac, minidx, maxidx)
20941 #define SCIPclearBoolarray(scip, boolarray) SCIPboolarrayClear(boolarray)
20942 #define SCIPgetBoolarrayVal(scip, boolarray, idx) SCIPboolarrayGetVal(boolarray, idx)
20943 #define SCIPsetBoolarrayVal(scip, boolarray, idx, val) SCIPboolarraySetVal(boolarray, (scip)->set->mem_arraygrowinit, (scip)->set->mem_arraygrowfac, idx, val)
20944 #define SCIPgetBoolarrayMinIdx(scip, boolarray) SCIPboolarrayGetMinIdx(boolarray)
20945 #define SCIPgetBoolarrayMaxIdx(scip, boolarray) SCIPboolarrayGetMaxIdx(boolarray)
20946 
20947 #define SCIPcreatePtrarray(scip, ptrarray) SCIPptrarrayCreate(ptrarray, SCIPblkmem(scip))
20948 #define SCIPfreePtrarray(scip, ptrarray) SCIPptrarrayFree(ptrarray)
20949 #define SCIPextendPtrarray(scip, ptrarray, minidx, maxidx) SCIPptrarrayExtend(ptrarray, (scip)->set->mem_arraygrowinit, (scip)->set->mem_arraygrowfac, minidx, maxidx)
20950 #define SCIPclearPtrarray(scip, ptrarray) SCIPptrarrayClear(ptrarray)
20951 #define SCIPgetPtrarrayVal(scip, ptrarray, idx) SCIPptrarrayGetVal(ptrarray, idx)
20952 #define SCIPsetPtrarrayVal(scip, ptrarray, idx, val) SCIPptrarraySetVal(ptrarray, (scip)->set->mem_arraygrowinit, (scip)->set->mem_arraygrowfac, idx, val)
20953 #define SCIPgetPtrarrayMinIdx(scip, ptrarray) SCIPptrarrayGetMinIdx(ptrarray)
20954 #define SCIPgetPtrarrayMaxIdx(scip, ptrarray) SCIPptrarrayGetMaxIdx(ptrarray)
20955 
20956 #endif
20957 
20958 /**@} */
20959 #ifdef __cplusplus
20960 }
20961 #endif
20962 
20963 #endif
SCIP_Real SCIPdualfeasCeil(SCIP *scip, SCIP_Real val)
enum SCIP_Result SCIP_RESULT
Definition: type_result.h:51
int SCIPgetNOrigIntVars(SCIP *scip)
SCIP_RETCODE SCIPsetNLPRealPar(SCIP *scip, SCIP_NLPPARAM type, SCIP_Real dval)
SCIP_Longint SCIPgetNNodes(SCIP *scip)
SCIP_RETCODE SCIPsetPresolInitpre(SCIP *scip, SCIP_PRESOL *presol, SCIP_DECL_PRESOLINITPRE((*presolinitpre)))
SCIP_CONSHDLR * SCIPfindConshdlr(SCIP *scip, const char *name)
SCIP_RETCODE SCIPunmarkConsPropagate(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPrestartSolve(SCIP *scip)
SCIP_RETCODE SCIPgetOpenNodesData(SCIP *scip, SCIP_NODE ***leaves, SCIP_NODE ***children, SCIP_NODE ***siblings, int *nleaves, int *nchildren, int *nsiblings)
SCIP_RETCODE SCIPlinkRelaxSol(SCIP *scip, SCIP_SOL *sol)
SCIP_RETCODE SCIPdeleteReoptnode(SCIP *scip, SCIP_REOPTNODE **reoptnode)
SCIP_RETCODE SCIPupdateVarBranchPriority(SCIP *scip, SCIP_VAR *var, int branchpriority)
SCIP_RETCODE SCIPsetNlRowExprtreeParam(SCIP *scip, SCIP_NLROW *nlrow, int paramidx, SCIP_Real paramval)
SCIP_Real SCIPgetConflictVarLb(SCIP *scip, SCIP_VAR *var)
struct SCIP_Nlpi SCIP_NLPI
Definition: type_nlpi.h:37
SCIP_Real SCIPgetVarImplRedcost(SCIP *scip, SCIP_VAR *var, SCIP_Bool varfixing)
SCIP_SOL * SCIPgetBestSol(SCIP *scip)
SCIP_RETCODE SCIPgetVarStrongbranchInt(SCIP *scip, SCIP_VAR *var, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, SCIP_Bool *downinf, SCIP_Bool *upinf, SCIP_Bool *downconflict, SCIP_Bool *upconflict, SCIP_Bool *lperror)
SCIP_RETCODE SCIPsetConshdlrActive(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSACTIVE((*consactive)))
SCIP_Longint SCIPgetNLimSolsFound(SCIP *scip)
void SCIPprintError(SCIP_RETCODE retcode)
#define SCIP_DECL_RELAXFREE(x)
Definition: type_relax.h:55
enum SCIP_BoundType SCIP_BOUNDTYPE
Definition: type_lp.h:50
SCIP_RETCODE SCIPstartClock(SCIP *scip, SCIP_CLOCK *clck)
char ** SCIPgetExternalCodeDescriptions(SCIP *scip)
SCIP_RETCODE SCIPcopyImplicationsCliques(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, SCIP_Bool *infeasible, int *nbdchgs, int *ncopied)
SCIP_RETCODE SCIPsetSepaInit(SCIP *scip, SCIP_SEPA *sepa, SCIP_DECL_SEPAINIT((*sepainit)))
SCIP_Real SCIPgetCutEfficacy(SCIP *scip, SCIP_SOL *sol, SCIP_ROW *cut)
SCIP_Longint SCIPgetNStrongbranchs(SCIP *scip)
SCIP_Real SCIPgetFirstLPTime(SCIP *scip)
SCIP_RETCODE SCIPsetBranchruleInit(SCIP *scip, SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHINIT((*branchinit)))
SCIP_RETCODE SCIPcreateNlRowFromRow(SCIP *scip, SCIP_NLROW **nlrow, SCIP_ROW *row)
SCIP_RETCODE SCIPapplyCutsProbing(SCIP *scip, SCIP_Bool *cutoff)
SCIP_RETCODE SCIPsetLongintParam(SCIP *scip, const char *name, SCIP_Longint value)
SCIP_COMPR ** SCIPgetComprs(SCIP *scip)
SCIP_RETCODE SCIPsetPricerPriority(SCIP *scip, SCIP_PRICER *pricer, int priority)
SCIP_RETCODE SCIPdelRowCutpool(SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_ROW *row)
struct SCIP_Dialog SCIP_DIALOG
Definition: type_dialog.h:41
SCIP_Bool SCIPisFeasGE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPdelCons(SCIP *scip, SCIP_CONS *cons)
struct SCIP_Heur SCIP_HEUR
Definition: type_heur.h:50
int SCIPgetNObjVars(SCIP *scip)
SCIP_Longint SCIPgetNDivingLPIterations(SCIP *scip)
#define SCIP_DECL_NODESELCOMP(x)
Definition: type_nodesel.h:126
SCIP_RETCODE SCIPgetConsVars(SCIP *scip, SCIP_CONS *cons, SCIP_VAR **vars, int varssize, SCIP_Bool *success)
int SCIPgetNBinVars(SCIP *scip)
struct SCIP_PresolData SCIP_PRESOLDATA
Definition: type_presol.h:37
SCIP_RETCODE SCIPsetBranchruleExit(SCIP *scip, SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXIT((*branchexit)))
#define SCIP_DECL_HEURINITSOL(x)
Definition: type_heur.h:95
SCIP_RETCODE SCIPsetNLPStringPar(SCIP *scip, SCIP_NLPPARAM type, const char *sval)
SCIP_Bool SCIPisFeasLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPincludeNlpi(SCIP *scip, SCIP_NLPI *nlpi)
#define SCIP_DECL_DISPINITSOL(x)
Definition: type_disp.h:97
int SCIPgetNRelaxs(SCIP *scip)
SCIP_RETCODE SCIPsetNodeselInitsol(SCIP *scip, SCIP_NODESEL *nodesel, SCIP_DECL_NODESELINITSOL((*nodeselinitsol)))
SCIP_RETCODE SCIPisConflictVarUsed(SCIP *scip, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool *used)
SCIP_RETCODE SCIPdeactiveCons(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPsetConflicthdlrFree(SCIP *scip, SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTFREE((*conflictfree)))
enum SCIP_NlpTermStat SCIP_NLPTERMSTAT
Definition: type_nlpi.h:85
int SCIPgetNNLPVars(SCIP *scip)
#define SCIP_DECL_EVENTDELETE(x)
Definition: type_event.h:211
SCIP_Bool SCIPisEfficacious(SCIP *scip, SCIP_Real efficacy)
SCIP_RETCODE SCIPsetNLPIntPar(SCIP *scip, SCIP_NLPPARAM type, int ival)
SCIP_Real SCIPgetClockTime(SCIP *scip, SCIP_CLOCK *clck)
SCIP_RETCODE SCIPincludePresolBasic(SCIP *scip, SCIP_PRESOL **presolptr, const char *name, const char *desc, int priority, int maxrounds, SCIP_PRESOLTIMING timing, SCIP_DECL_PRESOLEXEC((*presolexec)), SCIP_PRESOLDATA *presoldata)
SCIP_RETCODE SCIPupdateVarPseudocost(SCIP *scip, SCIP_VAR *var, SCIP_Real solvaldelta, SCIP_Real objdelta, SCIP_Real weight)
SCIP_RETCODE SCIPgetIntParam(SCIP *scip, const char *name, int *value)
SCIP_RETCODE SCIPgetProbvarLinearSum(SCIP *scip, SCIP_VAR **vars, SCIP_Real *scalars, int *nvars, int varssize, SCIP_Real *constant, int *requiredsize, SCIP_Bool mergemultiples)
SCIP_Real SCIPadjustedVarLb(SCIP *scip, SCIP_VAR *var, SCIP_Real lb)
#define SCIP_DECL_EVENTEXIT(x)
Definition: type_event.h:180
SCIP_RETCODE SCIPsetConshdlrParse(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPARSE((*consparse)))
SCIP_RETCODE SCIPgetNlRowPseudoActivity(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real *pseudoactivity)
SCIP_Real SCIPgetRowMinActivity(SCIP *scip, SCIP_ROW *row)
SCIP_Real SCIPgetTimeOfDay(SCIP *scip)
void SCIPenableVarHistory(SCIP *scip)
SCIP_RETCODE SCIPsetNlpiPriority(SCIP *scip, SCIP_NLPI *nlpi, int priority)
SCIP_Real SCIPgetReadingTime(SCIP *scip)
SCIP_Bool SCIPisUbBetter(SCIP *scip, SCIP_Real newub, SCIP_Real oldlb, SCIP_Real oldub)
SCIP_RETCODE SCIPaddVarLocks(SCIP *scip, SCIP_VAR *var, int nlocksdown, int nlocksup)
SCIP_Bool SCIPisRelEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisFeasZero(SCIP *scip, SCIP_Real val)
SCIP_Real SCIPversion(void)
public methods for branching and inference history structure
SCIP_RETCODE SCIPrecalcNlRowPseudoActivity(SCIP *scip, SCIP_NLROW *nlrow)
SCIP_RETCODE SCIPgetVarsStrongbranchesFrac(SCIP *scip, SCIP_VAR **vars, int nvars, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, SCIP_Bool *downinf, SCIP_Bool *upinf, SCIP_Bool *downconflict, SCIP_Bool *upconflict, SCIP_Bool *lperror)
SCIP_RETCODE SCIPchgVarObj(SCIP *scip, SCIP_VAR *var, SCIP_Real newobj)
SCIP_RETCODE SCIPprintSol(SCIP *scip, SCIP_SOL *sol, FILE *file, SCIP_Bool printzeros)
SCIP_Bool SCIPisDualfeasLE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Longint SCIPgetNDualLPs(SCIP *scip)
struct SCIP_DispData SCIP_DISPDATA
Definition: type_disp.h:53
struct SCIP_Cons SCIP_CONS
Definition: type_cons.h:48
int SCIPgetNProps(SCIP *scip)
public methods for branch and bound tree
SCIP_RETCODE SCIPgetNLPI(SCIP *scip, SCIP_NLPI **nlpi, SCIP_NLPIPROBLEM **nlpiproblem)
SCIP_RETCODE SCIPstartStrongbranch(SCIP *scip, SCIP_Bool enablepropagation)
type definitions for miscellaneous datastructures
timing definitions for SCIP
SCIP_VAR ** SCIPgetFixedVars(SCIP *scip)
SCIP_RETCODE SCIPcreateRowCons(SCIP *scip, SCIP_ROW **row, SCIP_CONSHDLR *conshdlr, const char *name, int len, SCIP_COL **cols, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
SCIP_Real SCIPgetOrigObjoffset(SCIP *scip)
SCIP_RETCODE SCIPcaptureRow(SCIP *scip, SCIP_ROW *row)
SCIP_RETCODE SCIPwriteVarsPolynomial(SCIP *scip, FILE *file, SCIP_VAR ***monomialvars, SCIP_Real **monomialexps, SCIP_Real *monomialcoefs, int *monomialnvars, int nmonomials, SCIP_Bool type)
SCIP_RETCODE SCIPincludeExternalCodeInformation(SCIP *scip, const char *name, const char *description)
#define SCIP_DECL_CONSLOCK(x)
Definition: type_cons.h:591
SCIP_Real SCIPgetRowSolActivity(SCIP *scip, SCIP_ROW *row, SCIP_SOL *sol)
#define SCIP_DECL_COMPREXEC(x)
Definition: type_compr.h:111
SCIP_RETCODE SCIPaddConflictBinvar(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPfreeProb(SCIP *scip)
SCIP_Real SCIPgetVarUbDive(SCIP *scip, SCIP_VAR *var)
SCIP_Bool SCIPisSumGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
int SCIPgetIntarrayMinIdx(SCIP *scip, SCIP_INTARRAY *intarray)
SCIP_RETCODE SCIPgetNlRowNLPActivity(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real *activity)
SCIP_RETCODE SCIPcreateVar(SCIP *scip, SCIP_VAR **var, const char *name, SCIP_Real lb, SCIP_Real ub, SCIP_Real obj, SCIP_VARTYPE vartype, SCIP_Bool initial, SCIP_Bool removable, SCIP_DECL_VARDELORIG((*vardelorig)), SCIP_DECL_VARTRANS((*vartrans)), SCIP_DECL_VARDELTRANS((*vardeltrans)), SCIP_DECL_VARCOPY((*varcopy)), SCIP_VARDATA *vardata)
SCIP_RETCODE SCIPprintStage(SCIP *scip, FILE *file)
type definitions for NLP management
SCIP_READER ** SCIPgetReaders(SCIP *scip)
SCIP_RETCODE SCIPactiveCons(SCIP *scip, SCIP_CONS *cons)
SCIP_Real SCIPgetHugeValue(SCIP *scip)
SCIP_RETCODE SCIPaddLongintParam(SCIP *scip, const char *name, const char *desc, SCIP_Longint *valueptr, SCIP_Bool isadvanced, SCIP_Longint defaultvalue, SCIP_Longint minvalue, SCIP_Longint maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
SCIP_RETCODE SCIPsetPropExitpre(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPEXITPRE((*propexitpre)))
SCIP_Real SCIPgetFirstLPDualboundRoot(SCIP *scip)
SCIP_RETCODE SCIPsetCharParam(SCIP *scip, const char *name, char value)
SCIP_RETCODE SCIPsetPropInit(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPINIT((*propinit)))
SCIP_RETCODE SCIPtransformVar(SCIP *scip, SCIP_VAR *var, SCIP_VAR **transvar)
#define SCIP_DECL_DIALOGCOPY(x)
Definition: type_dialog.h:53
SCIP_Real SCIPgetRelaxFeastolFactor(SCIP *scip)
struct SCIP_NlpStatistics SCIP_NLPSTATISTICS
Definition: type_nlpi.h:40
int SCIPcalcMemGrowSize(SCIP *scip, int num)
SCIP_Bool SCIPisSumRelLE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPhasPerformedPresolve(SCIP *scip)
SCIP_RETCODE SCIPsetNodeselExitsol(SCIP *scip, SCIP_NODESEL *nodesel, SCIP_DECL_NODESELEXITSOL((*nodeselexitsol)))
struct SCIP_QuadElement SCIP_QUADELEM
Definition: type_expr.h:106
SCIP_RETCODE SCIPenableReoptimization(SCIP *scip, SCIP_Bool enable)
SCIP_RETCODE SCIPrecalcRowLPActivity(SCIP *scip, SCIP_ROW *row)
SCIP_RETCODE SCIPsolveNLP(SCIP *scip)
SCIP_RETCODE SCIPchgVarName(SCIP *scip, SCIP_VAR *var, const char *name)
SCIP_Real SCIPgetVarObjProbing(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPgetLPI(SCIP *scip, SCIP_LPI **lpi)
SCIP_RETCODE SCIPsetPropCopy(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPCOPY((*propcopy)))
SCIP_PROBDATA * SCIPgetProbData(SCIP *scip)
SCIP_RETCODE SCIPsetProbName(SCIP *scip, const char *name)
SCIP_RETCODE SCIPparseCons(SCIP *scip, SCIP_CONS **cons, const char *str, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode, SCIP_Bool *success)
SCIP_RETCODE SCIPsetConflicthdlrCopy(SCIP *scip, SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTCOPY((*conflictcopy)))
#define SCIP_DECL_VARTRANS(x)
Definition: type_var.h:127
SCIP_RETCODE SCIPprintStatistics(SCIP *scip, FILE *file)
SCIP_Bool SCIPisInfinity(SCIP *scip, SCIP_Real val)
SCIP_RETCODE SCIPsetNodeselCopy(SCIP *scip, SCIP_NODESEL *nodesel, SCIP_DECL_NODESELCOPY((*nodeselcopy)))
SCIP_RETCODE SCIPtrySolFree(SCIP *scip, SCIP_SOL **sol, SCIP_Bool printreason, SCIP_Bool checkbounds, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *stored)
SCIP_Bool SCIPisSumZero(SCIP *scip, SCIP_Real val)
int SCIPgetNPrioLPBranchCands(SCIP *scip)
int SCIPgetNVars(SCIP *scip)
#define SCIP_DECL_PROBINITSOL(x)
Definition: type_prob.h:97
SCIP_Real SCIPgetVarObjDive(SCIP *scip, SCIP_VAR *var)
public methods for implications, variable bounds, and cliques
SCIP_RETCODE SCIPsetConshdlrTrans(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSTRANS((*constrans)))
SCIP_NODE * SCIPgetBestboundNode(SCIP *scip)
SCIP_RETCODE SCIPsetComprPriority(SCIP *scip, SCIP_COMPR *compr, int priority)
int SCIPgetNPrioPseudoBranchCands(SCIP *scip)
SCIP_NODE * SCIPgetBestChild(SCIP *scip)
SCIP_RETCODE SCIPdelPoolCut(SCIP *scip, SCIP_ROW *row)
int SCIPgetNContVars(SCIP *scip)
SCIP_RETCODE SCIPclearRealarray(SCIP *scip, SCIP_REALARRAY *realarray)
#define SCIP_DECL_CONSDELETE(x)
Definition: type_cons.h:187
int SCIPgetNLeaves(SCIP *scip)
#define SCIP_DECL_BRANCHEXECPS(x)
Definition: type_branch.h:161
SCIP_RETCODE SCIPgetVarSols(SCIP *scip, int nvars, SCIP_VAR **vars, SCIP_Real *vals)
SCIP_RETCODE SCIPrecalcRowActivity(SCIP *scip, SCIP_ROW *row)
SCIP_RETCODE SCIPaddConflictRelaxedBd(SCIP *scip, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Real relaxedbd)
void SCIPupdateDivesetLPStats(SCIP *scip, SCIP_DIVESET *diveset, SCIP_Longint niterstoadd)
SCIP_CUTPOOL * SCIPgetDelayedGlobalCutpool(SCIP *scip)
SCIP_RETCODE SCIPcreateNlRow(SCIP *scip, SCIP_NLROW **nlrow, const char *name, SCIP_Real constant, int nlinvars, SCIP_VAR **linvars, SCIP_Real *lincoefs, int nquadvars, SCIP_VAR **quadvars, int nquadelems, SCIP_QUADELEM *quadelems, SCIP_EXPRTREE *expression, SCIP_Real lhs, SCIP_Real rhs)
SCIP_RETCODE SCIPaddCut(SCIP *scip, SCIP_SOL *sol, SCIP_ROW *cut, SCIP_Bool forcecut, SCIP_Bool *infeasible)
SCIP_RETCODE SCIPfreeRealarray(SCIP *scip, SCIP_REALARRAY **realarray)
SCIP_RETCODE SCIPcreateNLPSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
struct SCIP_Disp SCIP_DISP
Definition: type_disp.h:52
#define SCIP_DECL_PROBDELORIG(x)
Definition: type_prob.h:55
#define SCIP_DECL_CONSINITPRE(x)
Definition: type_cons.h:114
void SCIPdialogMessage(SCIP *scip, FILE *file, const char *formatstr,...)
SCIP_Real SCIPgetSolvingTime(SCIP *scip)
SCIP_Longint SCIPgetNBestSolsFound(SCIP *scip)
SCIP_RETCODE SCIPsetSepaExit(SCIP *scip, SCIP_SEPA *sepa, SCIP_DECL_SEPAEXIT((*sepaexit)))
SCIP_RETCODE SCIPchgNlRowQuadElement(SCIP *scip, SCIP_NLROW *nlrow, SCIP_QUADELEM quadelement)
SCIP_CUTPOOL * SCIPgetGlobalCutpool(SCIP *scip)
SCIP_RETCODE SCIPaddConflictBd(SCIP *scip, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx)
SCIP_RETCODE SCIPcopyProb(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, const char *name)
SCIP_RETCODE SCIPsolveDiveNLP(SCIP *scip)
SCIP_NLPTERMSTAT SCIPgetNLPTermstat(SCIP *scip)
#define SCIP_DECL_CONSGETDIVEBDCHGS(x)
Definition: type_cons.h:837
SCIP_RETCODE SCIPupdateCutoffbound(SCIP *scip, SCIP_Real cutoffbound)
#define SCIP_DECL_CONSPRESOL(x)
Definition: type_cons.h:479
SCIP_RETCODE SCIPchgVarBranchDirection(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR branchdirection)
SCIP_RETCODE SCIPremoveVarFromGlobalStructures(SCIP *scip, SCIP_VAR *var)
struct SCIP_Compr SCIP_COMPR
Definition: type_compr.h:39
SCIP_Real SCIPgetVarAvgConflictlength(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_Longint SCIPgetNRootLPIterations(SCIP *scip)
SCIP_Real SCIPgetVarAvgInferenceCutoffScore(SCIP *scip, SCIP_VAR *var, SCIP_Real cutoffweight)
SCIP_RETCODE SCIPstartDive(SCIP *scip)
SCIP_RETCODE SCIPsetNodeselInit(SCIP *scip, SCIP_NODESEL *nodesel, SCIP_DECL_NODESELINIT((*nodeselinit)))
SCIP_LPSOLSTAT SCIPgetLPSolstat(SCIP *scip)
int SCIPgetSubscipDepth(SCIP *scip)
SCIP_RETCODE SCIPchgVarLb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
struct SCIP_ParamData SCIP_PARAMDATA
Definition: type_paramset.h:73
int SCIPgetPtrarrayMaxIdx(SCIP *scip, SCIP_PTRARRAY *ptrarray)
SCIP_Bool SCIPisEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_STATUS SCIPgetStatus(SCIP *scip)
struct SCIP_NlpiProblem SCIP_NLPIPROBLEM
Definition: type_nlpi.h:39
SCIP_Longint SCIPgetNLPIterations(SCIP *scip)
#define SCIP_DECL_CONSCHECK(x)
Definition: type_cons.h:391
int SCIPgetNOrigImplVars(SCIP *scip)
int SCIPgetNExternBranchCands(SCIP *scip)
#define SCIP_DECL_NODESELINITSOL(x)
Definition: type_nodesel.h:83
SCIP_RETCODE SCIPcreateUnknownSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
SCIP_RETCODE SCIPstartInteraction(SCIP *scip)
#define SCIP_DECL_CONSTRANS(x)
Definition: type_cons.h:197
SCIP_Longint SCIPgetNBarrierLPIterations(SCIP *scip)
int SCIPgetRealarrayMaxIdx(SCIP *scip, SCIP_REALARRAY *realarray)
SCIP_NLPI * SCIPfindNlpi(SCIP *scip, const char *name)
SCIP_RETCODE SCIPtransformConss(SCIP *scip, int nconss, SCIP_CONS **conss, SCIP_CONS **transconss)
SCIP_RETCODE SCIPaggregateVars(SCIP *scip, SCIP_VAR *varx, SCIP_VAR *vary, SCIP_Real scalarx, SCIP_Real scalary, SCIP_Real rhs, SCIP_Bool *infeasible, SCIP_Bool *redundant, SCIP_Bool *aggregated)
#define SCIP_DECL_COMPREXITSOL(x)
Definition: type_compr.h:95
struct SCIP_Row SCIP_ROW
Definition: type_lp.h:93
SCIP_RETCODE SCIPsetParam(SCIP *scip, const char *name, void *value)
SCIP_RETCODE SCIPsetConshdlrFree(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSFREE((*consfree)))
SCIP_RETCODE SCIPfreeClock(SCIP *scip, SCIP_CLOCK **clck)
SCIP_Real SCIPgetLowerbound(SCIP *scip)
SCIP_RETCODE SCIPchgChildPrio(SCIP *scip, SCIP_NODE *child, SCIP_Real priority)
SCIP_RETCODE SCIPbranchVar(SCIP *scip, SCIP_VAR *var, SCIP_NODE **downchild, SCIP_NODE **eqchild, SCIP_NODE **upchild)
SCIP_Real SCIPgetLocalTransEstimate(SCIP *scip)
struct SCIP_BranchruleData SCIP_BRANCHRULEDATA
Definition: type_branch.h:43
SCIP_Longint SCIPgetNNodeInitLPs(SCIP *scip)
SCIP_RETCODE SCIPgetLPColsData(SCIP *scip, SCIP_COL ***cols, int *ncols)
SCIP_RETCODE SCIPprintLPSolutionQuality(SCIP *scip, FILE *file)
void SCIPdisableVarHistory(SCIP *scip)
SCIP_RETCODE SCIPinferVarFixProp(SCIP *scip, SCIP_VAR *var, SCIP_Real fixedval, SCIP_PROP *inferprop, int inferinfo, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
SCIP_RETCODE SCIPwriteVarsList(SCIP *scip, FILE *file, SCIP_VAR **vars, int nvars, SCIP_Bool type, char delimiter)
SCIP_Real SCIPgetRowSolFeasibility(SCIP *scip, SCIP_ROW *row, SCIP_SOL *sol)
int SCIPgetNActiveConss(SCIP *scip)
SCIP_RETCODE SCIPprintBestSol(SCIP *scip, FILE *file, SCIP_Bool printzeros)
SCIP_Real SCIPgetAvgInferenceScore(SCIP *scip)
SCIP_Bool SCIPisSumGE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
#define SCIP_DECL_PRESOLINITPRE(x)
Definition: type_presol.h:84
SCIP_RETCODE SCIPevalExprtreeLocalBounds(SCIP *scip, SCIP_EXPRTREE *tree, SCIP_Real infinity, SCIP_INTERVAL *val)
SCIP_Real SCIPgetAvgCutoffScore(SCIP *scip)
SCIP_NODE * SCIPgetPrioSibling(SCIP *scip)
SCIP_RETCODE SCIPgetBinvarRepresentatives(SCIP *scip, int nvars, SCIP_VAR **vars, SCIP_VAR **repvars, SCIP_Bool *negated)
void SCIPgetReoptnodePath(SCIP *scip, SCIP_REOPTNODE *reoptnode, SCIP_VAR **vars, SCIP_Real *vals, SCIP_BOUNDTYPE *boundtypes, int mem, int *nvars, int *nafterdualvars)
SCIP_RETCODE SCIPresetParams(SCIP *scip)
SCIP_RETCODE SCIPaddPricedVar(SCIP *scip, SCIP_VAR *var, SCIP_Real score)
struct SCIP_Eventhdlr SCIP_EVENTHDLR
Definition: type_event.h:128
SCIP_Bool SCIPpscostThresholdProbabilityTest(SCIP *scip, SCIP_VAR *var, SCIP_Real frac, SCIP_Real threshold, SCIP_BRANCHDIR dir, SCIP_CONFIDENCELEVEL clevel)
int SCIPgetNReaders(SCIP *scip)
SCIP_RETCODE SCIPprintTransProblem(SCIP *scip, FILE *file, const char *extension, SCIP_Bool genericnames)
SCIP_RETCODE SCIPconvertCutsToConss(SCIP *scip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, int *ncutsadded)
SCIP_RETCODE SCIPcatchEvent(SCIP *scip, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)
SCIP_EVENTHDLR * SCIPfindEventhdlr(SCIP *scip, const char *name)
interface methods for specific LP solvers
struct SCIP_EventhdlrData SCIP_EVENTHDLRDATA
Definition: type_event.h:129
SCIP_RETCODE SCIPensureBlockMemoryArray_call(SCIP *scip, void **arrayptr, size_t elemsize, int *arraysize, int minsize)
SCIP_DISP ** SCIPgetDisps(SCIP *scip)
SCIP_Real SCIPgetTransObjoffset(SCIP *scip)
#define SCIP_DECL_PRICEREXIT(x)
Definition: type_pricer.h:70
SCIP_RETCODE SCIPbacktrackProbing(SCIP *scip, int probingdepth)
SCIP_RETCODE SCIPchgVarLbDive(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
SCIP_RETCODE SCIPgetVarClosestVlb(SCIP *scip, SCIP_VAR *var, SCIP_SOL *sol, SCIP_Real *closestvlb, int *closestvlbidx)
SCIP_RETCODE SCIPgetVarStrongbranchWithPropagation(SCIP *scip, SCIP_VAR *var, SCIP_Real solval, SCIP_Real lpobjval, int itlim, int maxproprounds, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, SCIP_Longint *ndomredsdown, SCIP_Longint *ndomredsup, SCIP_Bool *downinf, SCIP_Bool *upinf, SCIP_Bool *downconflict, SCIP_Bool *upconflict, SCIP_Bool *lperror, SCIP_Real *newlbs, SCIP_Real *newubs)
SCIP_RETCODE SCIPpresolCons(SCIP *scip, SCIP_CONS *cons, int nrounds, SCIP_PRESOLTIMING presoltiming, int nnewfixedvars, int nnewaggrvars, int nnewchgvartypes, int nnewchgbds, int nnewholes, int nnewdelconss, int nnewaddconss, int nnewupgdconss, int nnewchgcoefs, int nnewchgsides, int *nfixedvars, int *naggrvars, int *nchgvartypes, int *nchgbds, int *naddholes, int *ndelconss, int *naddconss, int *nupgdconss, int *nchgcoefs, int *nchgsides, SCIP_RESULT *result)
SCIP_Real SCIPgetNLPObjval(SCIP *scip)
SCIP_RETCODE SCIPaddRowCutpool(SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_ROW *row)
SCIP_Real SCIPcomputeVarUbGlobal(SCIP *scip, SCIP_VAR *var)
SCIP_Bool SCIPisPrimalboundSol(SCIP *scip)
SCIP_RETCODE SCIPcreateEmptyRowUnspec(SCIP *scip, SCIP_ROW **row, const char *name, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
SCIP_Longint SCIPgetMemExternEstim(SCIP *scip)
SCIP_Real SCIPgetOrigObjscale(SCIP *scip)
SCIP_HEUR * SCIPgetSolHeur(SCIP *scip, SCIP_SOL *sol)
SCIP_Bool SCIPisSumRelLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIPcalculatePscostConfidenceBound(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir, SCIP_Bool onlycurrentrun, SCIP_CONFIDENCELEVEL clevel)
#define SCIP_DECL_PROBDELTRANS(x)
Definition: type_prob.h:86
SCIP_RETCODE SCIPenableConsPropagation(SCIP *scip, SCIP_CONS *cons)
int SCIPgetNOrigVars(SCIP *scip)
SCIP_RETCODE SCIPchgLongintParam(SCIP *scip, SCIP_PARAM *param, SCIP_Longint value)
struct SCIP_Messagehdlr SCIP_MESSAGEHDLR
Definition: type_message.h:50
#define SCIP_DECL_BRANCHFREE(x)
Definition: type_branch.h:60
SCIP_RETCODE SCIPprintStatus(SCIP *scip, FILE *file)
SCIP_RETCODE SCIPsetConsLocal(SCIP *scip, SCIP_CONS *cons, SCIP_Bool local)
SCIP_Longint SCIPgetNBacktracks(SCIP *scip)
SCIP_RETCODE SCIPsetSolVal(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var, SCIP_Real val)
SCIP_PRESOL ** SCIPgetPresols(SCIP *scip)
SCIP_Real SCIPfeasCeil(SCIP *scip, SCIP_Real val)
SCIP_RETCODE SCIPupdateLocalLowerbound(SCIP *scip, SCIP_Real newbound)
#define SCIP_DECL_CONSRESPROP(x)
Definition: type_cons.h:530
SCIP_Real SCIPdualfeastol(SCIP *scip)
SCIP_Longint SCIPgetNDualResolveLPIterations(SCIP *scip)
SCIP_RETCODE SCIPsetPricerInitsol(SCIP *scip, SCIP_PRICER *pricer, SCIP_DECL_PRICERINITSOL((*pricerinitsol)))
SCIP_RETCODE SCIPrespropCons(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *infervar, int inferinfo, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Real relaxedbd, SCIP_RESULT *result)
SCIP_RETCODE SCIPenableOrDisableStatisticTiming(SCIP *scip)
struct SCIP_Param SCIP_PARAM
Definition: type_paramset.h:72
SCIP_Real SCIPgetGap(SCIP *scip)
struct SCIP_HashMap SCIP_HASHMAP
Definition: type_misc.h:78
SCIP_DISP * SCIPfindDisp(SCIP *scip, const char *name)
SCIP_RETCODE SCIPsetRelaxPriority(SCIP *scip, SCIP_RELAX *relax, int priority)
SCIP_RETCODE SCIPgetNlRowNLPFeasibility(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real *feasibility)
SCIP_RETCODE SCIPchgIntParam(SCIP *scip, SCIP_PARAM *param, int value)
SCIP_RETCODE SCIPaddExternBranchCand(SCIP *scip, SCIP_VAR *var, SCIP_Real score, SCIP_Real solval)
SCIP_RETCODE SCIPsetObjIntegral(SCIP *scip)
SCIP_RETCODE SCIPsolveProbingLP(SCIP *scip, int itlim, SCIP_Bool *lperror, SCIP_Bool *cutoff)
SCIP_RETCODE SCIPcomputeLPRelIntPoint(SCIP *scip, SCIP_Bool relaxrows, SCIP_Bool inclobjcutoff, SCIP_Real timelimit, int iterlimit, SCIP_SOL **point)
#define SCIP_DECL_PRESOLCOPY(x)
Definition: type_presol.h:46
SCIP_RETCODE SCIPsetPricerExit(SCIP *scip, SCIP_PRICER *pricer, SCIP_DECL_PRICEREXIT((*pricerexit)))
struct SCIP_Nodesel SCIP_NODESEL
Definition: type_nodesel.h:37
#define SCIP_DECL_PRICERINIT(x)
Definition: type_pricer.h:62
SCIP_Bool SCIPisLPConstructed(SCIP *scip)
SCIP_Bool SCIPisZero(SCIP *scip, SCIP_Real val)
SCIP_RETCODE SCIPresetClock(SCIP *scip, SCIP_CLOCK *clck)
SCIP_RETCODE SCIPrecalcNlRowActivity(SCIP *scip, SCIP_NLROW *nlrow)
SCIP_RETCODE SCIPgetProbvarSum(SCIP *scip, SCIP_VAR **var, SCIP_Real *scalar, SCIP_Real *constant)
int SCIPgetNPricevars(SCIP *scip)
SCIP_RETCODE SCIPcalcMIR(SCIP *scip, SCIP_SOL *sol, SCIP_Real boundswitch, SCIP_Bool usevbds, SCIP_Bool allowlocal, SCIP_Bool fixintegralrhs, int *boundsfortrans, SCIP_BOUNDTYPE *boundtypesfortrans, int maxmksetcoefs, SCIP_Real maxweightrange, SCIP_Real minfrac, SCIP_Real maxfrac, SCIP_Real *weights, SCIP_Real maxweight, int *weightinds, int nweightinds, int rowlensum, int *sidetypes, SCIP_Real scale, SCIP_Real *mksetcoefs, SCIP_Bool *mksetcoefsvalid, SCIP_Real *mircoef, SCIP_Real *mirrhs, SCIP_Real *cutactivity, SCIP_Bool *success, SCIP_Bool *cutislocal, int *cutrank)
struct SCIP_VarData SCIP_VARDATA
Definition: type_var.h:96
SCIP_RETCODE SCIPpermuteProb(SCIP *scip, unsigned int randseed, SCIP_Bool permuteconss, SCIP_Bool permutebinvars, SCIP_Bool permuteintvars, SCIP_Bool permuteimplvars, SCIP_Bool permutecontvars)
SCIP_RETCODE SCIPaddOrigObjoffset(SCIP *scip, SCIP_Real addval)
SCIP_RETCODE SCIPchgVarsBoundsDiveNLP(SCIP *scip, int nvars, SCIP_VAR **vars, SCIP_Real *lbs, SCIP_Real *ubs)
SCIP_RETCODE SCIPresetReoptnodeDualcons(SCIP *scip, SCIP_NODE *node)
SCIP_Real SCIPgetVarConflictlengthScoreCurrentRun(SCIP *scip, SCIP_VAR *var)
#define SCIP_DECL_RELAXINIT(x)
Definition: type_relax.h:63
SCIP_RETCODE SCIPincludeDisp(SCIP *scip, const char *name, const char *desc, const char *header, SCIP_DISPSTATUS dispstatus, SCIP_DECL_DISPCOPY((*dispcopy)), SCIP_DECL_DISPFREE((*dispfree)), SCIP_DECL_DISPINIT((*dispinit)), SCIP_DECL_DISPEXIT((*dispexit)), SCIP_DECL_DISPINITSOL((*dispinitsol)), SCIP_DECL_DISPEXITSOL((*dispexitsol)), SCIP_DECL_DISPOUTPUT((*dispoutput)), SCIP_DISPDATA *dispdata, int width, int priority, int position, SCIP_Bool stripline)
#define SCIP_DECL_RELAXINITSOL(x)
Definition: type_relax.h:82
SCIP_RETCODE SCIPchgVarUbDive(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
SCIP_RETCODE SCIPupdateNodeLowerbound(SCIP *scip, SCIP_NODE *node, SCIP_Real newbound)
struct SCIP_IntArray SCIP_INTARRAY
Definition: type_misc.h:87
int SCIPgetNConss(SCIP *scip)
SCIP_Bool SCIPisLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
int SCIPgetNConflictConssFoundNode(SCIP *scip)
SCIP_RETCODE SCIPgetNLPNlRowsData(SCIP *scip, SCIP_NLROW ***nlrows, int *nnlrows)
SCIP_RETCODE SCIPwriteParam(SCIP *scip, SCIP_PARAM *param, const char *filename, SCIP_Bool comments, SCIP_Bool onlychanged)
SCIP_RETCODE SCIPstopClock(SCIP *scip, SCIP_CLOCK *clck)
SCIP_RETCODE SCIPincludeRelax(SCIP *scip, const char *name, const char *desc, int priority, int freq, SCIP_DECL_RELAXCOPY((*relaxcopy)), SCIP_DECL_RELAXFREE((*relaxfree)), SCIP_DECL_RELAXINIT((*relaxinit)), SCIP_DECL_RELAXEXIT((*relaxexit)), SCIP_DECL_RELAXINITSOL((*relaxinitsol)), SCIP_DECL_RELAXEXITSOL((*relaxexitsol)), SCIP_DECL_RELAXEXEC((*relaxexec)), SCIP_RELAXDATA *relaxdata)
SCIP_Longint SCIPgetNNodeInitLPIterations(SCIP *scip)
SCIP_RETCODE SCIPunfixParam(SCIP *scip, const char *name)
int SCIPgetNNodesels(SCIP *scip)
struct SCIP_Clock SCIP_CLOCK
Definition: type_clock.h:40
SCIP_NODE * SCIPgetBestLeaf(SCIP *scip)
SCIP_RETCODE SCIPinterruptSolve(SCIP *scip)
SCIP_RETCODE SCIPdelConsNode(SCIP *scip, SCIP_NODE *node, SCIP_CONS *cons)
SCIP_RETCODE SCIPgetConsCopy(SCIP *sourcescip, SCIP *targetscip, SCIP_CONS *sourcecons, SCIP_CONS **targetcons, SCIP_CONSHDLR *sourceconshdlr, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, const char *name, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode, SCIP_Bool global, SCIP_Bool *success)
#define SCIP_DECL_HEURCOPY(x)
Definition: type_heur.h:60
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:53
SCIP_RETCODE SCIPaddVarBranchFactor(SCIP *scip, SCIP_VAR *var, SCIP_Real addfactor)
SCIP_Bool SCIPallowDualReds(SCIP *scip)
#define SCIP_DECL_PROPEXITPRE(x)
Definition: type_prop.h:100
#define SCIP_DECL_HEUREXEC(x)
Definition: type_heur.h:126
BMS_BUFMEM * SCIPbuffer(SCIP *scip)
SCIP_Real SCIPgetVarPseudocostVal(SCIP *scip, SCIP_VAR *var, SCIP_Real solvaldelta)
SCIP_Real SCIPgetColFarkasCoef(SCIP *scip, SCIP_COL *col)
#define SCIP_DECL_CONSGETNVARS(x)
Definition: type_cons.h:798
SCIP_ROW ** SCIPgetLPRows(SCIP *scip)
SCIP_RETCODE SCIPincludeBranchruleBasic(SCIP *scip, SCIP_BRANCHRULE **branchruleptr, const char *name, const char *desc, int priority, int maxdepth, SCIP_Real maxbounddist, SCIP_BRANCHRULEDATA *branchruledata)
SCIP_Bool SCIPisCutApplicable(SCIP *scip, SCIP_ROW *cut)
int SCIPgetNPricers(SCIP *scip)
SCIP_RETCODE SCIPaddBoolParam(SCIP *scip, const char *name, const char *desc, SCIP_Bool *valueptr, SCIP_Bool isadvanced, SCIP_Bool defaultvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
SCIP_RETCODE SCIPcreateIntarray(SCIP *scip, SCIP_INTARRAY **intarray)
SCIP_Real SCIPgetVarConflictScoreCurrentRun(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPincIntarrayVal(SCIP *scip, SCIP_INTARRAY *intarray, int idx, int incval)
SCIP_Bool SCIPisDualfeasPositive(SCIP *scip, SCIP_Real val)
SCIP_RETCODE SCIPsetClockTime(SCIP *scip, SCIP_CLOCK *clck, SCIP_Real sec)
SCIP_Bool SCIPisFeasIntegral(SCIP *scip, SCIP_Real val)
SCIP_Real SCIPgetCutoffbound(SCIP *scip)
SCIP_RETCODE SCIPaddVarsToRow(SCIP *scip, SCIP_ROW *row, int nvars, SCIP_VAR **vars, SCIP_Real *vals)
SCIP_PROP * SCIPfindProp(SCIP *scip, const char *name)
void SCIPwarningMessage(SCIP *scip, const char *formatstr,...)
SCIP_RETCODE SCIPcreateCPUClock(SCIP *scip, SCIP_CLOCK **clck)
SCIP_Bool SCIPisDualfeasZero(SCIP *scip, SCIP_Real val)
#define SCIP_DECL_VARCOPY(x)
Definition: type_var.h:170
SCIP_RETCODE SCIPsetRootDialog(SCIP *scip, SCIP_DIALOG *dialog)
enum SCIP_VerbLevel SCIP_VERBLEVEL
Definition: type_message.h:48
SCIP_Bool SCIPallColsInLP(SCIP *scip)
SCIP_VAR ** SCIPgetVars(SCIP *scip)
SCIP_RETCODE SCIPsetBranchruleExecLp(SCIP *scip, SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXECLP((*branchexeclp)))
SCIP_Real SCIPgetRowFeasibility(SCIP *scip, SCIP_ROW *row)
SCIP_RETCODE SCIPgetTransformedCons(SCIP *scip, SCIP_CONS *cons, SCIP_CONS **transcons)
int SCIPgetNParams(SCIP *scip)
SCIP_RETCODE SCIPsetConshdlrSepa(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSSEPALP((*conssepalp)), SCIP_DECL_CONSSEPASOL((*conssepasol)), int sepafreq, int sepapriority, SCIP_Bool delaysepa)
char ** SCIPgetExternalCodeNames(SCIP *scip)
void SCIPclearExternBranchCands(SCIP *scip)
SCIP_RETCODE SCIPsetSepaInitsol(SCIP *scip, SCIP_SEPA *sepa, SCIP_DECL_SEPAINITSOL((*sepainitsol)))
struct SCIP_HeurData SCIP_HEURDATA
Definition: type_heur.h:51
SCIP_RETCODE SCIPgetReoptOldObjCoef(SCIP *scip, SCIP_VAR *var, int run, SCIP_Real *objcoef)
#define SCIP_DECL_CONSEXITSOL(x)
Definition: type_cons.h:174
public methods for displaying runtime statistics
public methods for problem variables
SCIP_RETCODE SCIPfreePtrarray(SCIP *scip, SCIP_PTRARRAY **ptrarray)
SCIP_RETCODE SCIPsetConflicthdlrInitsol(SCIP *scip, SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTINITSOL((*conflictinitsol)))
SCIP_RETCODE SCIPsetMessagehdlr(SCIP *scip, SCIP_MESSAGEHDLR *messagehdlr)
SCIP_RETCODE SCIPsetPricerFree(SCIP *scip, SCIP_PRICER *pricer, SCIP_DECL_PRICERFREE((*pricerfree)))
int SCIPconvertRealToInt(SCIP *scip, SCIP_Real real)
SCIP_RETCODE SCIPinferVarUbCons(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_CONS *infercons, int inferinfo, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
struct SCIP_DialogData SCIP_DIALOGDATA
Definition: type_dialog.h:42
SCIP_Real SCIPgetAvgCutoffScoreCurrentRun(SCIP *scip)
SCIP_RETCODE SCIPsetPresolExitpre(SCIP *scip, SCIP_PRESOL *presol, SCIP_DECL_PRESOLEXITPRE((*presolexitpre)))
int SCIPgetRepropdepth(SCIP *scip)
SCIP_Real SCIPgetLowerboundRoot(SCIP *scip)
SCIP_DIALOG * SCIPgetRootDialog(SCIP *scip)
int SCIPgetNDelayedPoolCuts(SCIP *scip)
#define SCIP_DECL_BRANCHEXECEXT(x)
Definition: type_branch.h:140
int SCIPgetNCutsFoundRound(SCIP *scip)
SCIP_Real SCIPcomputeVarLbGlobal(SCIP *scip, SCIP_VAR *var)
void SCIPprintExternalCodes(SCIP *scip, FILE *file)
SCIP_Bool SCIPhasNLPSolution(SCIP *scip)
SCIP_Real SCIPdualfeasRound(SCIP *scip, SCIP_Real val)
int SCIPgetNConshdlrs(SCIP *scip)
type definitions for return codes for SCIP methods
struct SCIP_Cut SCIP_CUT
Definition: type_cutpool.h:31
SCIP_Real SCIPgetAvgDualbound(SCIP *scip)
SCIP_RETCODE SCIPchgBoolParam(SCIP *scip, SCIP_PARAM *param, SCIP_Bool value)
SCIP_RETCODE SCIPpropagateProbing(SCIP *scip, int maxproprounds, SCIP_Bool *cutoff, SCIP_Longint *ndomredsfound)
#define SCIP_DECL_PRICEREXITSOL(x)
Definition: type_pricer.h:92
unsigned int SCIP_DIVETYPE
Definition: type_heur.h:48
public methods for branching rules
SCIP_RETCODE SCIPaddNlRow(SCIP *scip, SCIP_NLROW *nlrow)
int SCIPgetNEventhdlrs(SCIP *scip)
SCIP_RETCODE SCIPaddReoptDualBndchg(SCIP *scip, SCIP_NODE *node, SCIP_VAR *var, SCIP_Real newbound, SCIP_Real oldbound)
SCIP_Real SCIPgetAvgPseudocostCurrentRun(SCIP *scip, SCIP_Real solvaldelta)
SCIP_RETCODE SCIPsetBranchruleExecPs(SCIP *scip, SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXECPS((*branchexecps)))
SCIP_Bool SCIPisDualfeasGE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
#define SCIP_DECL_SEPAEXECLP(x)
Definition: type_sepa.h:115
SCIP_RETCODE SCIPfreeBoolarray(SCIP *scip, SCIP_BOOLARRAY **boolarray)
SCIP_RETCODE SCIPinitVarValueBranchStats(SCIP *scip, SCIP_VAR *var, SCIP_Real value, SCIP_Real downvsids, SCIP_Real upvsids, SCIP_Real downconflen, SCIP_Real upconflen, SCIP_Real downinfer, SCIP_Real upinfer, SCIP_Real downcutoff, SCIP_Real upcutoff)
SCIP_RETCODE SCIPincludeEventhdlr(SCIP *scip, const char *name, const char *desc, SCIP_DECL_EVENTCOPY((*eventcopy)), SCIP_DECL_EVENTFREE((*eventfree)), SCIP_DECL_EVENTINIT((*eventinit)), SCIP_DECL_EVENTEXIT((*eventexit)), SCIP_DECL_EVENTINITSOL((*eventinitsol)), SCIP_DECL_EVENTEXITSOL((*eventexitsol)), SCIP_DECL_EVENTDELETE((*eventdelete)), SCIP_DECL_EVENTEXEC((*eventexec)), SCIP_EVENTHDLRDATA *eventhdlrdata)
SCIP_RETCODE SCIPseparateCutpool(SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_RESULT *result)
SCIP_Real SCIPepsilon(SCIP *scip)
#define SCIP_DECL_PROBCOPY(x)
Definition: type_prob.h:140
SCIP_RETCODE SCIPprintBranchingStatistics(SCIP *scip, FILE *file)
SCIP_Bool SCIPisFracIntegral(SCIP *scip, SCIP_Real val)
SCIP_RETCODE SCIPsetConsDynamic(SCIP *scip, SCIP_CONS *cons, SCIP_Bool dynamic)
SCIP_RETCODE SCIPsetReaderFree(SCIP *scip, SCIP_READER *reader, SCIP_DECL_READERFREE((*readerfree)))
enum SCIP_NlpParam SCIP_NLPPARAM
Definition: type_nlpi.h:56
SCIP_Real SCIPcutoffbounddelta(SCIP *scip)
SCIP_RETCODE SCIPsetConshdlrCopy(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), SCIP_DECL_CONSCOPY((*conscopy)))
SCIP_RETCODE SCIPaddQuadElementToNlRow(SCIP *scip, SCIP_NLROW *nlrow, SCIP_QUADELEM quadelem)
SCIP_Bool SCIPdoNotMultaggrVar(SCIP *scip, SCIP_VAR *var)
type definitions for presolvers
SCIP_Bool SCIPisNLPConstructed(SCIP *scip)
SCIP_RETCODE SCIPcalcStrongCG(SCIP *scip, SCIP_Real boundswitch, SCIP_Bool usevbds, SCIP_Bool allowlocal, int maxmksetcoefs, SCIP_Real maxweightrange, SCIP_Real minfrac, SCIP_Real maxfrac, SCIP_Real *weights, int *inds, int ninds, SCIP_Real scale, SCIP_Real *mircoef, SCIP_Real *mirrhs, SCIP_Real *cutactivity, SCIP_Bool *success, SCIP_Bool *cutislocal, int *cutrank)
SCIP_RETCODE SCIPsetRelaxCopy(SCIP *scip, SCIP_RELAX *relax, SCIP_DECL_RELAXCOPY((*relaxcopy)))
SCIP_Real SCIPgetLPObjval(SCIP *scip)
SCIP_RETCODE SCIPcopy(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, const char *suffix, SCIP_Bool global, SCIP_Bool enablepricing, SCIP_Bool passmessagehdlr, SCIP_Bool *valid)
SCIP_RETCODE SCIPcreateDiveset(SCIP *scip, SCIP_DIVESET **diveset, SCIP_HEUR *heur, const char *name, SCIP_Real minreldepth, SCIP_Real maxreldepth, SCIP_Real maxlpiterquot, SCIP_Real maxdiveubquot, SCIP_Real maxdiveavgquot, SCIP_Real maxdiveubquotnosol, SCIP_Real maxdiveavgquotnosol, SCIP_Real lpresolvedomchgquot, int lpsolvefreq, int maxlpiterofs, SCIP_Bool backtrack, SCIP_Bool onlylpbranchcands, SCIP_Bool specificsos1score, SCIP_DECL_DIVESETGETSCORE((*divesetgetscore)))
SCIP_Bool SCIPisCutEfficacious(SCIP *scip, SCIP_SOL *sol, SCIP_ROW *cut)
SCIP_Longint SCIPgetNDualResolveLPs(SCIP *scip)
SCIP_Real SCIPgetRowLPFeasibility(SCIP *scip, SCIP_ROW *row)
SCIP_RETCODE SCIPcheckStringParam(SCIP *scip, SCIP_PARAM *param, const char *value)
SCIP_Real SCIPgetRowMaxCoef(SCIP *scip, SCIP_ROW *row)
SCIP_CONSHDLR ** SCIPgetConshdlrs(SCIP *scip)
#define SCIP_DECL_BRANCHEXITSOL(x)
Definition: type_branch.h:98
SCIP_Bool SCIPisSumLE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPgetNegatedVars(SCIP *scip, int nvars, SCIP_VAR **vars, SCIP_VAR **negvars)
struct SCIP_Cutpool SCIP_CUTPOOL
Definition: type_cutpool.h:30
enum SCIP_LPSolStat SCIP_LPSOLSTAT
Definition: type_lp.h:42
SCIP_RETCODE SCIPgetNLPFracVars(SCIP *scip, SCIP_VAR ***fracvars, SCIP_Real **fracvarssol, SCIP_Real **fracvarsfrac, int *nfracvars, int *npriofracvars)
SCIP_Real SCIPgetAvgConflictScore(SCIP *scip)
SCIP_RETCODE SCIPsetBranchruleFree(SCIP *scip, SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHFREE((*branchfree)))
#define SCIP_DECL_PROPEXEC(x)
Definition: type_prop.h:202
SCIP_PARAM * SCIPgetParam(SCIP *scip, const char *name)
SCIP_Real SCIPgetAvgInferencesCurrentRun(SCIP *scip, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPsetEventhdlrInit(SCIP *scip, SCIP_EVENTHDLR *eventhdlr, SCIP_DECL_EVENTINIT((*eventinit)))
#define SCIP_DECL_PRICERCOPY(x)
Definition: type_pricer.h:46
SCIP_RETCODE SCIPbranchExtern(SCIP *scip, SCIP_RESULT *result)
int SCIPgetFocusDepth(SCIP *scip)
SCIP_RETCODE SCIPsetProbDelorig(SCIP *scip, SCIP_DECL_PROBDELORIG((*probdelorig)))
#define SCIP_DECL_DIVESETGETSCORE(x)
Definition: type_heur.h:146
SCIP_Real SCIPgetLPRootObjval(SCIP *scip)
SCIP_RETCODE SCIPwriteTransProblem(SCIP *scip, const char *filename, const char *extension, SCIP_Bool genericnames)
SCIP_RETCODE SCIPtryCurrentSol(SCIP *scip, SCIP_HEUR *heur, SCIP_Bool printreason, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *stored)
SCIP_SEPA ** SCIPgetSepas(SCIP *scip)
SCIP_RETCODE SCIPupdateNodeDualbound(SCIP *scip, SCIP_NODE *node, SCIP_Real newbound)
#define SCIP_DECL_NODESELEXITSOL(x)
Definition: type_nodesel.h:94
#define SCIP_DECL_CONFLICTEXIT(x)
Definition: type_conflict.h:76
int SCIPmajorVersion(void)
#define SCIP_DECL_COMPRINIT(x)
Definition: type_compr.h:65
SCIP_RETCODE SCIPcheckReoptRestart(SCIP *scip, SCIP_NODE *node, SCIP_Bool *restart)
SCIP_RETCODE SCIPsetReoptCompression(SCIP *scip, SCIP_REOPTNODE **representation, int nrepresentatives, SCIP_Bool *success)
SCIP_RETCODE SCIPsetPresolPriority(SCIP *scip, SCIP_PRESOL *presol, int priority)
#define SCIP_DECL_EVENTEXEC(x)
Definition: type_event.h:226
SCIP_Bool SCIPisScalingIntegral(SCIP *scip, SCIP_Real val, SCIP_Real scalar)
SCIP_Real SCIPgetDualboundRoot(SCIP *scip)
SCIP_RETCODE SCIPsetNodeselExit(SCIP *scip, SCIP_NODESEL *nodesel, SCIP_DECL_NODESELEXIT((*nodeselexit)))
int SCIPgetNEnabledConss(SCIP *scip)
#define SCIP_DECL_CONSINITLP(x)
Definition: type_cons.h:210
SCIP_RETCODE SCIPsetConshdlrEnable(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSENABLE((*consenable)))
SCIP_RETCODE SCIPincludeRelaxBasic(SCIP *scip, SCIP_RELAX **relaxptr, const char *name, const char *desc, int priority, int freq, SCIP_DECL_RELAXEXEC((*relaxexec)), SCIP_RELAXDATA *relaxdata)
SCIP_Bool SCIPallVarsInProb(SCIP *scip)
SCIP_RETCODE SCIPaddDialogEntry(SCIP *scip, SCIP_DIALOG *dialog, SCIP_DIALOG *subdialog)
type definitions for branching rules
#define SCIP_DECL_EVENTFREE(x)
Definition: type_event.h:164
SCIP_Bool SCIPisStopped(SCIP *scip)
SCIP_RETCODE SCIPaddVarBranchPriority(SCIP *scip, SCIP_VAR *var, int addpriority)
SCIP_RETCODE SCIPprintCons(SCIP *scip, SCIP_CONS *cons, FILE *file)
SCIP_VAR ** SCIPgetOrigVars(SCIP *scip)
SCIP_Bool SCIPdoNotMultaggr(SCIP *scip)
struct SCIP_ReoptNode SCIP_REOPTNODE
Definition: type_reopt.h:38
SCIP_RETCODE SCIPsetSepaFree(SCIP *scip, SCIP_SEPA *sepa, SCIP_DECL_SEPAFREE((*sepafree)))
#define SCIP_DECL_DISPCOPY(x)
Definition: type_disp.h:62
int SCIPgetNSols(SCIP *scip)
SCIP_RETCODE SCIPsetBranchruleInitsol(SCIP *scip, SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHINITSOL((*branchinitsol)))
SCIP_Real SCIPgetDualbound(SCIP *scip)
BMS_BUFMEM * SCIPcleanbuffer(SCIP *scip)
SCIP_RETCODE SCIPaddQuadElementsToNlRow(SCIP *scip, SCIP_NLROW *nlrow, int nquadelems, SCIP_QUADELEM *quadelems)
int SCIPgetNPrioExternBranchImpls(SCIP *scip)
SCIP_RETCODE SCIPparseVarsLinearsum(SCIP *scip, const char *str, SCIP_VAR **vars, SCIP_Real *vals, int *nvars, int varssize, int *requiredsize, char **endptr, SCIP_Bool *success)
int SCIPgetNSepas(SCIP *scip)
SCIP_RETCODE SCIPparseVarName(SCIP *scip, const char *str, SCIP_VAR **var, char **endptr)
SCIP_Bool SCIPisFeasPositive(SCIP *scip, SCIP_Real val)
SCIP_RETCODE SCIPcreateBoolarray(SCIP *scip, SCIP_BOOLARRAY **boolarray)
SCIP_RETCODE SCIPincludeHeur(SCIP *scip, const char *name, const char *desc, char dispchar, int priority, int freq, int freqofs, int maxdepth, unsigned int timingmask, SCIP_Bool usessubscip, SCIP_DECL_HEURCOPY((*heurcopy)), SCIP_DECL_HEURFREE((*heurfree)), SCIP_DECL_HEURINIT((*heurinit)), SCIP_DECL_HEUREXIT((*heurexit)), SCIP_DECL_HEURINITSOL((*heurinitsol)), SCIP_DECL_HEUREXITSOL((*heurexitsol)), SCIP_DECL_HEUREXEC((*heurexec)), SCIP_HEURDATA *heurdata)
SCIP_RETCODE SCIPprintNodeRootPath(SCIP *scip, SCIP_NODE *node, FILE *file)
SCIP_Real SCIPgetVectorEfficacyNorm(SCIP *scip, SCIP_Real *vals, int nvals)
SCIP_RETCODE SCIPmarkRelaxSolValid(SCIP *scip)
SCIP_NODE * SCIPgetRootNode(SCIP *scip)
#define SCIP_DECL_COMPRFREE(x)
Definition: type_compr.h:57
SCIP_RETCODE SCIPcreateCutpool(SCIP *scip, SCIP_CUTPOOL **cutpool, int agelimit)
SCIP_RETCODE SCIPsetConflicthdlrInit(SCIP *scip, SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTINIT((*conflictinit)))
SCIP_Bool SCIPisUpdateUnreliable(SCIP *scip, SCIP_Real newvalue, SCIP_Real oldvalue)
SCIP_CONS * SCIPfindOrigCons(SCIP *scip, const char *name)
enum SCIP_ParamSetting SCIP_PARAMSETTING
Definition: type_paramset.h:56
SCIP_RETCODE SCIPfreeTransform(SCIP *scip)
SCIP_RETCODE SCIPrecomputeSolObj(SCIP *scip, SCIP_SOL *sol)
SCIP_RETCODE SCIPincludeEventhdlrBasic(SCIP *scip, SCIP_EVENTHDLR **eventhdlrptr, const char *name, const char *desc, SCIP_DECL_EVENTEXEC((*eventexec)), SCIP_EVENTHDLRDATA *eventhdlrdata)
#define SCIP_DECL_NODESELINIT(x)
Definition: type_nodesel.h:64
int SCIPgetNSepaRounds(SCIP *scip)
SCIP_RETCODE SCIPaddCurrentSol(SCIP *scip, SCIP_HEUR *heur, SCIP_Bool *stored)
SCIP_Real SCIPgetSolVal(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var)
public methods for expressions, expression trees, expression graphs, and related stuff ...
SCIP_Bool SCIPisSumRelGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPinitRepresentation(SCIP *scip, SCIP_REOPTNODE **representatives, int nrepresentatives)
SCIP_RETCODE SCIPinferVarLbProp(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_PROP *inferprop, int inferinfo, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
SCIP_RETCODE SCIPsetBoolarrayVal(SCIP *scip, SCIP_BOOLARRAY *boolarray, int idx, SCIP_Bool val)
SCIP_Real SCIPgetPrimalRayVal(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPincludePresol(SCIP *scip, const char *name, const char *desc, int priority, int maxrounds, SCIP_PRESOLTIMING timing, SCIP_DECL_PRESOLCOPY((*presolcopy)), SCIP_DECL_PRESOLFREE((*presolfree)), SCIP_DECL_PRESOLINIT((*presolinit)), SCIP_DECL_PRESOLEXIT((*presolexit)), SCIP_DECL_PRESOLINITPRE((*presolinitpre)), SCIP_DECL_PRESOLEXITPRE((*presolexitpre)), SCIP_DECL_PRESOLEXEC((*presolexec)), SCIP_PRESOLDATA *presoldata)
SCIP_OBJSENSE SCIPgetObjsense(SCIP *scip)
#define SCIP_DECL_VARDELTRANS(x)
Definition: type_var.h:140
SCIP_Bool SCIPhasCurrentNodeLP(SCIP *scip)
SCIP_RETCODE SCIPcopyConss(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, SCIP_Bool enablepricing, SCIP_Bool *valid)
type definitions for LP management
#define SCIP_DECL_SEPACOPY(x)
Definition: type_sepa.h:47
SCIP_NODESEL ** SCIPgetNodesels(SCIP *scip)
SCIP_RETCODE SCIPincludeHeurBasic(SCIP *scip, SCIP_HEUR **heur, const char *name, const char *desc, char dispchar, int priority, int freq, int freqofs, int maxdepth, unsigned int timingmask, SCIP_Bool usessubscip, SCIP_DECL_HEUREXEC((*heurexec)), SCIP_HEURDATA *heurdata)
SCIP_Longint SCIPgetVarStrongbranchNode(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPcatchVarEvent(SCIP *scip, SCIP_VAR *var, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)
SCIP_RETCODE SCIPincludeConshdlrBasic(SCIP *scip, SCIP_CONSHDLR **conshdlrptr, const char *name, const char *desc, int enfopriority, int chckpriority, int eagerfreq, SCIP_Bool needscons, SCIP_DECL_CONSENFOLP((*consenfolp)), SCIP_DECL_CONSENFOPS((*consenfops)), SCIP_DECL_CONSCHECK((*conscheck)), SCIP_DECL_CONSLOCK((*conslock)), SCIP_CONSHDLRDATA *conshdlrdata)
SCIP_Bool SCIPisLbBetter(SCIP *scip, SCIP_Real newlb, SCIP_Real oldlb, SCIP_Real oldub)
int SCIPgetNPrioExternBranchCands(SCIP *scip)
SCIP_RETCODE SCIPsetRelaxInit(SCIP *scip, SCIP_RELAX *relax, SCIP_DECL_RELAXINIT((*relaxinit)))
SCIP_RETCODE SCIPenableConsSeparation(SCIP *scip, SCIP_CONS *cons)
SCIP_Real SCIPgetAvgPseudocostScoreCurrentRun(SCIP *scip)
SCIP_CONFLICTHDLR ** SCIPgetConflicthdlrs(SCIP *scip)
SCIP_RETCODE SCIPprintVar(SCIP *scip, SCIP_VAR *var, FILE *file)
SCIP_RETCODE SCIPupdateLocalDualbound(SCIP *scip, SCIP_Real newbound)
SCIP_RETCODE SCIPsetPropPresolPriority(SCIP *scip, SCIP_PROP *prop, int presolpriority)
SCIP_RETCODE SCIPsetPresolInit(SCIP *scip, SCIP_PRESOL *presol, SCIP_DECL_PRESOLINIT((*presolinit)))
SCIP_RETCODE SCIPcreatePseudoSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
#define SCIP_DECL_DIALOGDESC(x)
Definition: type_dialog.h:73
SCIP_RETCODE SCIPcreateEmptyNlRow(SCIP *scip, SCIP_NLROW **nlrow, const char *name, SCIP_Real lhs, SCIP_Real rhs)
SCIP_Bool SCIPisObjIntegral(SCIP *scip)
int SCIPgetNLPCols(SCIP *scip)
SCIP_RETCODE SCIPcutoffNode(SCIP *scip, SCIP_NODE *node)
void SCIPupdateDivesetStats(SCIP *scip, SCIP_DIVESET *diveset, int nprobingnodes, int nbacktracks, SCIP_Longint nsolsfound, SCIP_Longint nbestsolsfound, SCIP_Bool leavewassol)
void SCIPprintMemoryDiagnostic(SCIP *scip)
SCIP_RETCODE SCIPcheckSolOrig(SCIP *scip, SCIP_SOL *sol, SCIP_Bool *feasible, SCIP_Bool printreason, SCIP_Bool completely)
struct SCIP_Prop SCIP_PROP
Definition: type_prop.h:37
SCIP_Bool SCIPinProbing(SCIP *scip)
enum SCIP_BranchDir SCIP_BRANCHDIR
Definition: type_history.h:39
#define SCIP_DECL_CONSINITSOL(x)
Definition: type_cons.h:159
SCIP_RETCODE SCIPdelDelayedPoolCut(SCIP *scip, SCIP_ROW *row)
SCIP_RETCODE SCIPpropCons(SCIP *scip, SCIP_CONS *cons, SCIP_PROPTIMING proptiming, SCIP_RESULT *result)
SCIP_RETCODE SCIPincConsAge(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPanalyzeConflictCons(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *success)
SCIP_Longint SCIPgetNStrongbranchLPIterations(SCIP *scip)
SCIP_RETCODE SCIPgetSolVarsData(SCIP *scip, SCIP_SOL *sol, SCIP_VAR ***vars, int *nvars, int *nbinvars, int *nintvars, int *nimplvars, int *ncontvars)
SCIP_HEUR * SCIPfindHeur(SCIP *scip, const char *name)
SCIP_Real * SCIPgetNLPVarsUbDualsol(SCIP *scip)
void SCIPmarkColNotRemovableLocal(SCIP *scip, SCIP_COL *col)
SCIP_RETCODE SCIPcreateVarBasic(SCIP *scip, SCIP_VAR **var, const char *name, SCIP_Real lb, SCIP_Real ub, SCIP_Real obj, SCIP_VARTYPE vartype)
struct SCIP_NodeselData SCIP_NODESELDATA
Definition: type_nodesel.h:38
SCIP_RETCODE SCIPreleaseCons(SCIP *scip, SCIP_CONS **cons)
SCIP_Real SCIPgetSolTransObj(SCIP *scip, SCIP_SOL *sol)
SCIP_RETCODE SCIPwriteMIP(SCIP *scip, const char *filename, SCIP_Bool genericnames, SCIP_Bool origobj, SCIP_Bool lazyconss)
SCIP_Real SCIPgetVarVSIDSCurrentRun(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPsetPtrarrayVal(SCIP *scip, SCIP_PTRARRAY *ptrarray, int idx, void *val)
SCIP_RETCODE SCIPgetLeaves(SCIP *scip, SCIP_NODE ***leaves, int *nleaves)
SCIP_RETCODE SCIPincludeNodeselBasic(SCIP *scip, SCIP_NODESEL **nodesel, const char *name, const char *desc, int stdpriority, int memsavepriority, SCIP_DECL_NODESELSELECT((*nodeselselect)), SCIP_DECL_NODESELCOMP((*nodeselcomp)), SCIP_NODESELDATA *nodeseldata)
int SCIPgetProbingDepth(SCIP *scip)
SCIP_RETCODE SCIPremoveInefficaciousCuts(SCIP *scip)
SCIP_RETCODE SCIPgetDiveBoundChanges(SCIP *scip, SCIP_DIVESET *diveset, SCIP_SOL *sol, SCIP_Bool *success, SCIP_Bool *infeasible)
SCIP_RETCODE SCIPaddConsNode(SCIP *scip, SCIP_NODE *node, SCIP_CONS *cons, SCIP_NODE *validnode)
#define SCIP_DECL_PRESOLEXEC(x)
Definition: type_presol.h:153
SCIP_RETCODE SCIPchgDualfeastol(SCIP *scip, SCIP_Real dualfeastol)
#define SCIP_DECL_BRANCHINIT(x)
Definition: type_branch.h:68
SCIP_RETCODE SCIPcreateProbBasic(SCIP *scip, const char *name)
#define SCIP_DECL_DISPINIT(x)
Definition: type_disp.h:78
SCIP_RETCODE SCIPextendIntarray(SCIP *scip, SCIP_INTARRAY *intarray, int minidx, int maxidx)
SCIP_RETCODE SCIPgetLPRowsData(SCIP *scip, SCIP_ROW ***rows, int *nrows)
SCIP_RETCODE SCIPsepalpCons(SCIP *scip, SCIP_CONS *cons, SCIP_RESULT *result)
public methods for handling parameter settings
SCIP_Bool SCIPpressedCtrlC(SCIP *scip)
SCIP_RETCODE SCIPgetSolVals(SCIP *scip, SCIP_SOL *sol, int nvars, SCIP_VAR **vars, SCIP_Real *vals)
public methods for managing constraints
SCIP_Bool SCIPisDualfeasLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
struct SCIP_Clique SCIP_CLIQUE
Definition: type_implics.h:32
SCIP_Real SCIPadjustedVarUb(SCIP *scip, SCIP_VAR *var, SCIP_Real ub)
SCIP_RETCODE SCIPaddDialogHistoryLine(SCIP *scip, const char *inputline)
SCIP_Real SCIPgetAvgPseudocostCountCurrentRun(SCIP *scip, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPanalyzeConflict(SCIP *scip, int validdepth, SCIP_Bool *success)
SCIP_RETCODE SCIPdelConsLocal(SCIP *scip, SCIP_CONS *cons)
#define SCIP_DECL_RELAXEXIT(x)
Definition: type_relax.h:71
SCIP_RETCODE SCIPsetPricerInit(SCIP *scip, SCIP_PRICER *pricer, SCIP_DECL_PRICERINIT((*pricerinit)))
SCIP_NODE * SCIPgetBestNode(SCIP *scip)
int SCIPgetNPseudoBranchCands(SCIP *scip)
enum SCIP_Confidencelevel SCIP_CONFIDENCELEVEL
Definition: type_misc.h:44
SCIP_Real SCIPgetUpperbound(SCIP *scip)
SCIP_RETCODE SCIPgetVarStrongbranchFrac(SCIP *scip, SCIP_VAR *var, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, SCIP_Bool *downinf, SCIP_Bool *upinf, SCIP_Bool *downconflict, SCIP_Bool *upconflict, SCIP_Bool *lperror)
#define SCIP_DECL_CONSPRINT(x)
Definition: type_cons.h:682
int SCIPgetNPrioPseudoBranchBins(SCIP *scip)
SCIP_RETCODE SCIPparseVar(SCIP *scip, SCIP_VAR **var, const char *str, SCIP_Bool initial, SCIP_Bool removable, SCIP_DECL_VARCOPY((*varcopy)), SCIP_DECL_VARDELORIG((*vardelorig)), SCIP_DECL_VARTRANS((*vartrans)), SCIP_DECL_VARDELTRANS((*vardeltrans)), SCIP_VARDATA *vardata, char **endptr, SCIP_Bool *success)
int SCIPgetIntarrayVal(SCIP *scip, SCIP_INTARRAY *intarray, int idx)
int SCIPsubversion(void)
SCIP_RETCODE SCIPsetConsStickingAtNode(SCIP *scip, SCIP_CONS *cons, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPsetRealarrayVal(SCIP *scip, SCIP_REALARRAY *realarray, int idx, SCIP_Real val)
#define SCIP_DECL_CONFLICTINITSOL(x)
Definition: type_conflict.h:87
SCIP_Real SCIPgetVarConflictlengthScore(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPcaptureVar(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPsetEventhdlrExit(SCIP *scip, SCIP_EVENTHDLR *eventhdlr, SCIP_DECL_EVENTEXIT((*eventexit)))
SCIP_Real SCIPgetAvgConflictlengthScore(SCIP *scip)
SCIP_NLPSOLSTAT SCIPgetNLPSolstat(SCIP *scip)
struct SCIP_Diveset SCIP_DIVESET
Definition: type_heur.h:52
SCIP_RETCODE SCIPsetPricerExitsol(SCIP *scip, SCIP_PRICER *pricer, SCIP_DECL_PRICEREXITSOL((*pricerexitsol)))
SCIP_Longint SCIPgetNDualLPIterations(SCIP *scip)
SCIP_RETCODE SCIPcaptureCons(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPmakeRowIntegral(SCIP *scip, SCIP_ROW *row, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Real maxscale, SCIP_Bool usecontvars, SCIP_Bool *success)
#define SCIP_DECL_BRANCHCOPY(x)
Definition: type_branch.h:52
struct SCIP_Col SCIP_COL
Definition: type_lp.h:87
SCIP_Bool SCIPisDualfeasIntegral(SCIP *scip, SCIP_Real val)
SCIP_Longint SCIPgetNLPs(SCIP *scip)
SCIP_RETCODE SCIPsetConshdlrExitpre(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSEXITPRE((*consexitpre)))
#define SCIP_DECL_CONFLICTEXEC(x)
SCIP_RETCODE SCIPinitConflictAnalysis(SCIP *scip)
#define SCIP_DECL_CONSDELVARS(x)
Definition: type_cons.h:668
SCIP_RETCODE SCIPchgVarUb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
SCIP_RETCODE SCIPinferVarUbProp(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_PROP *inferprop, int inferinfo, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
void SCIPgetDiveBoundChangeData(SCIP *scip, SCIP_VAR ***variables, SCIP_BRANCHDIR **directions, SCIP_Real **values, int *ndivebdchgs, SCIP_Bool preferred)
SCIP_RETCODE SCIPsetConsEnforced(SCIP *scip, SCIP_CONS *cons, SCIP_Bool enforce)
SCIP_CUT ** SCIPgetDelayedPoolCuts(SCIP *scip)
SCIP_RETCODE SCIPcopyCuts(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, int *ncutsadded)
SCIP_RETCODE SCIPresetParam(SCIP *scip, const char *name)
SCIP_RETCODE SCIPsetRealParam(SCIP *scip, const char *name, SCIP_Real value)
type definitions for variable pricers
SCIP_RETCODE SCIPsetConsPropagated(SCIP *scip, SCIP_CONS *cons, SCIP_Bool propagate)
SCIP_RETCODE SCIPdeactivatePricer(SCIP *scip, SCIP_PRICER *pricer)
SCIP_RETCODE SCIPsetConflicthdlrPriority(SCIP *scip, SCIP_CONFLICTHDLR *conflicthdlr, int priority)
SCIP_RETCODE SCIPsetConsRemovable(SCIP *scip, SCIP_CONS *cons, SCIP_Bool removable)
SCIP_RETCODE SCIPgetLPBInvARow(SCIP *scip, int r, SCIP_Real *binvrow, SCIP_Real *coefs, int *inds, int *ninds)
SCIP_RETCODE SCIPsetReaderRead(SCIP *scip, SCIP_READER *reader, SCIP_DECL_READERREAD((*readerread)))
SCIP_Real SCIPgetRowMaxActivity(SCIP *scip, SCIP_ROW *row)
SCIP_RETCODE SCIPsetIntParam(SCIP *scip, const char *name, int value)
#define SCIP_DECL_PRESOLFREE(x)
Definition: type_presol.h:54
int SCIPgetNActivePricers(SCIP *scip)
SCIP_Bool SCIPisRelLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
int SCIPgetMaxDepth(SCIP *scip)
int SCIPgetNReoptRuns(SCIP *scip)
void SCIPenableNLP(SCIP *scip)
SCIP_RETCODE SCIPaddIntParam(SCIP *scip, const char *name, const char *desc, int *valueptr, SCIP_Bool isadvanced, int defaultvalue, int minvalue, int maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
SCIP_RETCODE SCIPcleanupCliques(SCIP *scip, SCIP_Bool *infeasible)
SCIP_RETCODE SCIPcreateFiniteSolCopy(SCIP *scip, SCIP_SOL **sol, SCIP_SOL *sourcesol, SCIP_Bool *success)
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)
int SCIPgetNReoptLeaves(SCIP *scip, SCIP_NODE *node)
SCIP_RETCODE SCIPsetHeurPriority(SCIP *scip, SCIP_HEUR *heur, int priority)
#define SCIP_DECL_PRICERFARKAS(x)
Definition: type_pricer.h:165
SCIP_RETCODE SCIPmarkConsPropagate(SCIP *scip, SCIP_CONS *cons)
type definitions for primal heuristics
#define SCIP_DECL_COMPRCOPY(x)
Definition: type_compr.h:49
SCIP_RETCODE SCIPcreateRowSepa(SCIP *scip, SCIP_ROW **row, SCIP_SEPA *sepa, const char *name, int len, SCIP_COL **cols, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
#define SCIP_DECL_CONSPARSE(x)
Definition: type_cons.h:758
enum SCIP_NlpSolStat SCIP_NLPSOLSTAT
Definition: type_nlpi.h:69
SCIP_RETCODE SCIPrecalcRowPseudoActivity(SCIP *scip, SCIP_ROW *row)
SCIP_Bool SCIPisNegative(SCIP *scip, SCIP_Real val)
SCIP_RETCODE SCIPsetConshdlrGetDiveBdChgs(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETDIVEBDCHGS((*consgetdivebdchgs)))
int SCIPgetNPrioPseudoBranchInts(SCIP *scip)
SCIP_RETCODE SCIPsetBranchruleCopy(SCIP *scip, SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHCOPY((*branchcopy)))
SCIP_RETCODE SCIPwriteImplicationConflictGraph(SCIP *scip, const char *filename)
SCIP_Bool SCIPcontainsExternBranchCand(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPaddDialogInputLine(SCIP *scip, const char *inputline)
int SCIPgetPlungeDepth(SCIP *scip)
SCIP_RETCODE SCIPsetSepaCopy(SCIP *scip, SCIP_SEPA *sepa, SCIP_DECL_SEPACOPY((*sepacopy)))
SCIP_RETCODE SCIPsetNLPInitialGuess(SCIP *scip, SCIP_Real *initialguess)
SCIP_Real SCIPgetVarAvgInferenceScoreCurrentRun(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPchgVarObjDive(SCIP *scip, SCIP_VAR *var, SCIP_Real newobj)
#define SCIP_DECL_CONSDEACTIVE(x)
Definition: type_cons.h:621
SCIP_RETCODE SCIPgetExprtreeTransformedVars(SCIP *scip, SCIP_EXPRTREE *tree)
SCIP_NODESEL * SCIPgetNodesel(SCIP *scip)
SCIP_RETCODE SCIPgetLPBInvCol(SCIP *scip, int c, SCIP_Real *coefs, int *inds, int *ninds)
#define SCIP_DECL_PRESOLEXIT(x)
Definition: type_presol.h:70
SCIP_RETCODE SCIPchgVarType(SCIP *scip, SCIP_VAR *var, SCIP_VARTYPE vartype, SCIP_Bool *infeasible)
type definitions for SCIP's main datastructure
SCIP_RETCODE SCIPgetNLPStatistics(SCIP *scip, SCIP_NLPSTATISTICS *statistics)
SCIP_Real SCIPgetPseudoObjval(SCIP *scip)
SCIP_Real SCIPgetNodeLowerbound(SCIP *scip, SCIP_NODE *node)
SCIP_Bool SCIPisSumPositive(SCIP *scip, SCIP_Real val)
SCIP_Real SCIPgetVarAvgConflictlengthCurrentRun(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPsetProbDeltrans(SCIP *scip, SCIP_DECL_PROBDELTRANS((*probdeltrans)))
SCIP_Real SCIPcalcNodeselPriority(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR branchdir, SCIP_Real targetvalue)
SCIP_RETCODE SCIPsetNlRowExprtree(SCIP *scip, SCIP_NLROW *nlrow, SCIP_EXPRTREE *exprtree)
SCIP_RETCODE SCIPgetBinvarRepresentative(SCIP *scip, SCIP_VAR *var, SCIP_VAR **repvar, SCIP_Bool *negated)
SCIP_RETCODE SCIPaddRowDive(SCIP *scip, SCIP_ROW *row)
SCIP_RETCODE SCIPsetNlRowExprtreeParams(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real *paramvals)
SCIP_NLROW ** SCIPgetNLPNlRows(SCIP *scip)
SCIP_RETCODE SCIPincludeBranchrule(SCIP *scip, const char *name, const char *desc, int priority, int maxdepth, SCIP_Real maxbounddist, SCIP_DECL_BRANCHCOPY((*branchcopy)), SCIP_DECL_BRANCHFREE((*branchfree)), SCIP_DECL_BRANCHINIT((*branchinit)), SCIP_DECL_BRANCHEXIT((*branchexit)), SCIP_DECL_BRANCHINITSOL((*branchinitsol)), SCIP_DECL_BRANCHEXITSOL((*branchexitsol)), SCIP_DECL_BRANCHEXECLP((*branchexeclp)), SCIP_DECL_BRANCHEXECEXT((*branchexecext)), SCIP_DECL_BRANCHEXECPS((*branchexecps)), SCIP_BRANCHRULEDATA *branchruledata)
SCIP_RETCODE SCIPgetNlRowActivity(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real *activity)
#define SCIP_DECL_BRANCHINITSOL(x)
Definition: type_branch.h:87
SCIP_RETCODE SCIPsetPropInitpre(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPINITPRE((*propinitpre)))
#define SCIP_DECL_EVENTINIT(x)
Definition: type_event.h:172
int SCIPgetNCompr(SCIP *scip)
SCIP_RETCODE SCIPchgNlRowRhs(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real rhs)
SCIP_RETCODE SCIPaddClique(SCIP *scip, SCIP_VAR **vars, SCIP_Bool *values, int nvars, SCIP_Bool isequation, SCIP_Bool *infeasible, int *nbdchgs)
SCIP_RETCODE SCIPcopyParamSettings(SCIP *sourcescip, SCIP *targetscip)
SCIP_RETCODE SCIPadjustImplicitSolVals(SCIP *scip, SCIP_SOL *sol, SCIP_Bool uselprows)
#define SCIP_DECL_PROPEXITSOL(x)
Definition: type_prop.h:127
struct SCIP_NlRow SCIP_NLROW
Definition: type_nlp.h:31
SCIP_Bool SCIPisInRestart(SCIP *scip)
int SCIPgetNExternalCodes(SCIP *scip)
SCIP_RETCODE SCIPsetConflicthdlrExit(SCIP *scip, SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTEXIT((*conflictexit)))
SCIP_RETCODE SCIPchgRowRhs(SCIP *scip, SCIP_ROW *row, SCIP_Real rhs)
SCIP_RETCODE SCIPrecalcNlRowNLPActivity(SCIP *scip, SCIP_NLROW *nlrow)
struct SCIP_PtrArray SCIP_PTRARRAY
Definition: type_misc.h:93
SCIP_Bool SCIPexistsDialog(SCIP *scip, SCIP_DIALOG *dialog)
int SCIPgetNPrioExternBranchBins(SCIP *scip)
#define SCIP_DECL_PROPCOPY(x)
Definition: type_prop.h:47
SCIP_RETCODE SCIPsolveProbingLPWithPricing(SCIP *scip, SCIP_Bool pretendroot, SCIP_Bool displayinfo, int maxpricerounds, SCIP_Bool *lperror, SCIP_Bool *cutoff)
SCIP_RETCODE SCIPaddReoptnodeBndchg(SCIP *scip, SCIP_REOPTNODE *reoptnode, SCIP_VAR *var, SCIP_Real val, SCIP_BOUNDTYPE boundtype)
int SCIPgetNPoolCuts(SCIP *scip)
#define SCIP_DECL_BRANCHEXECLP(x)
Definition: type_branch.h:119
SCIP_RETCODE SCIPchgNlRowConstant(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real constant)
SCIP_Bool SCIPdoNotAggr(SCIP *scip)
SCIP_RETCODE SCIPmultiaggregateVar(SCIP *scip, SCIP_VAR *var, int naggvars, SCIP_VAR **aggvars, SCIP_Real *scalars, SCIP_Real constant, SCIP_Bool *infeasible, SCIP_Bool *aggregated)
SCIP_MESSAGEHDLR * SCIPgetMessagehdlr(SCIP *scip)
struct SCIP_EventData SCIP_EVENTDATA
Definition: type_event.h:146
SCIP_RETCODE SCIPchgVarBranchFactor(SCIP *scip, SCIP_VAR *var, SCIP_Real branchfactor)
SCIP_Real SCIPgetVarAvgCutoffScoreCurrentRun(SCIP *scip, SCIP_VAR *var)
SCIP_Bool SCIPisHugeValue(SCIP *scip, SCIP_Real val)
SCIP_Real SCIPbarrierconvtol(SCIP *scip)
SCIP_Bool SCIPisLE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPaddVarVlb(SCIP *scip, SCIP_VAR *var, SCIP_VAR *vlbvar, SCIP_Real vlbcoef, SCIP_Real vlbconstant, SCIP_Bool *infeasible, int *nbdchgs)
SCIP_RETCODE SCIPsetReaderCopy(SCIP *scip, SCIP_READER *reader, SCIP_DECL_READERCOPY((*readercopy)))
SCIP_RETCODE SCIPsetBranchruleMaxdepth(SCIP *scip, SCIP_BRANCHRULE *branchrule, int maxdepth)
#define SCIP_DECL_PARAMCHGD(x)
Definition: type_paramset.h:88
SCIP_Real SCIPinfinity(SCIP *scip)
SCIP_RETCODE SCIPchgCutoffboundDive(SCIP *scip, SCIP_Real newcutoffbound)
SCIP_RETCODE SCIPgetTransformedVar(SCIP *scip, SCIP_VAR *var, SCIP_VAR **transvar)
#define SCIP_DECL_NODESELFREE(x)
Definition: type_nodesel.h:56
SCIP_RETCODE SCIPsetConshdlrDeactive(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDEACTIVE((*consdeactive)))
SCIP_EVENTHDLR ** SCIPgetEventhdlrs(SCIP *scip)
#define SCIP_DECL_RELAXCOPY(x)
Definition: type_relax.h:47
SCIP_RETCODE SCIPcalcRowIntegralScalar(SCIP *scip, SCIP_ROW *row, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Real maxscale, SCIP_Bool usecontvars, SCIP_Real *intscalar, SCIP_Bool *success)
SCIP_Real SCIPgetVarPseudocostCurrentRun(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
int SCIPgetNNLPNlRows(SCIP *scip)
SCIP_RETCODE SCIPclearRelaxSolVals(SCIP *scip)
SCIP_RETCODE SCIPincludePricer(SCIP *scip, const char *name, const char *desc, int priority, SCIP_Bool delay, SCIP_DECL_PRICERCOPY((*pricercopy)), SCIP_DECL_PRICERFREE((*pricerfree)), SCIP_DECL_PRICERINIT((*pricerinit)), SCIP_DECL_PRICEREXIT((*pricerexit)), SCIP_DECL_PRICERINITSOL((*pricerinitsol)), SCIP_DECL_PRICEREXITSOL((*pricerexitsol)), SCIP_DECL_PRICERREDCOST((*pricerredcost)), SCIP_DECL_PRICERFARKAS((*pricerfarkas)), SCIP_PRICERDATA *pricerdata)
SCIP_Bool SCIPisDualfeasFracIntegral(SCIP *scip, SCIP_Real val)
SCIP_CUT ** SCIPgetPoolCuts(SCIP *scip)
int SCIPgetNOrigBinVars(SCIP *scip)
void SCIPsetFocusnodeLP(SCIP *scip, SCIP_Bool solvelp)
#define SCIP_DECL_CONSDISABLE(x)
Definition: type_cons.h:651
SCIP_RETCODE SCIPtightenVarLb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
SCIP_RETCODE SCIPgetNlRowSolFeasibility(SCIP *scip, SCIP_NLROW *nlrow, SCIP_SOL *sol, SCIP_Real *feasibility)
struct SCIP_Reader SCIP_READER
Definition: type_reader.h:36
SCIP_RETCODE SCIPclearBoolarray(SCIP *scip, SCIP_BOOLARRAY *boolarray)
SCIP_RETCODE SCIPunlockVarCons(SCIP *scip, SCIP_VAR *var, SCIP_CONS *cons, SCIP_Bool lockdown, SCIP_Bool lockup)
SCIP_RETCODE SCIPcopyVars(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global)
SCIP_RETCODE SCIPgetNLPVarsData(SCIP *scip, SCIP_VAR ***vars, int *nvars)
SCIP_RETCODE SCIPsetProbInitsol(SCIP *scip, SCIP_DECL_PROBINITSOL((*probinitsol)))
SCIP_RETCODE SCIPenfolpCons(SCIP *scip, SCIP_CONS *cons, SCIP_Bool solinfeasible, SCIP_RESULT *result)
SCIP_CONS * SCIPfindCons(SCIP *scip, const char *name)
SCIP_ROW ** SCIPgetCuts(SCIP *scip)
SCIP_RETCODE SCIPgetStringParam(SCIP *scip, const char *name, char **value)
SCIP_RETCODE SCIPincludePricerBasic(SCIP *scip, SCIP_PRICER **pricerptr, const char *name, const char *desc, int priority, SCIP_Bool delay, SCIP_DECL_PRICERREDCOST((*pricerredcost)), SCIP_DECL_PRICERFARKAS((*pricerfarkas)), SCIP_PRICERDATA *pricerdata)
SCIP_RETCODE SCIPcatchRowEvent(SCIP *scip, SCIP_ROW *row, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)
SCIP_SEPA * SCIPfindSepa(SCIP *scip, const char *name)
SCIP_Bool SCIPsignificantVarPscostDifference(SCIP *scip, SCIP_VAR *varx, SCIP_Real fracx, SCIP_VAR *vary, SCIP_Real fracy, SCIP_BRANCHDIR dir, SCIP_CONFIDENCELEVEL clevel, SCIP_Bool onesided)
SCIP_RETCODE SCIPprintBestTransSol(SCIP *scip, FILE *file, SCIP_Bool printzeros)
SCIP_READER * SCIPfindReader(SCIP *scip, const char *name)
int SCIPgetNPresols(SCIP *scip)
SCIP_RETCODE SCIPsetPropResprop(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPRESPROP((*propresprop)))
public methods for primal CIP solutions
SCIP_RETCODE SCIPgetPseudoBranchCands(SCIP *scip, SCIP_VAR ***pseudocands, int *npseudocands, int *npriopseudocands)
SCIP_Bool SCIPisPresolveFinished(SCIP *scip)
int SCIPgetNPrioPseudoBranchImpls(SCIP *scip)
SCIP_RETCODE SCIPcopyOrigVars(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap)
SCIP_Bool SCIPisSumLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPstopSolvingTime(SCIP *scip)
SCIP_RETCODE SCIPchgRowRhsDive(SCIP *scip, SCIP_ROW *row, SCIP_Real newrhs)
SCIP_Real SCIPgetSolOrigObj(SCIP *scip, SCIP_SOL *sol)
SCIP_RETCODE SCIPcreateEmptyRowSepa(SCIP *scip, SCIP_ROW **row, SCIP_SEPA *sepa, const char *name, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
struct SCIP_ConflicthdlrData SCIP_CONFLICTHDLRDATA
Definition: type_conflict.h:40
SCIP_RETCODE SCIPmergeVariableStatistics(SCIP *sourcescip, SCIP *targetscip, SCIP_VAR **sourcevars, SCIP_VAR **targetvars, int nvars)
SCIP_Bool SCIPisRelGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPendDiveNLP(SCIP *scip)
SCIP_RETCODE SCIPincludeCompr(SCIP *scip, const char *name, const char *desc, int priority, int minnnodes, SCIP_DECL_COMPRCOPY((*comprcopy)), SCIP_DECL_COMPRFREE((*comprfree)), SCIP_DECL_COMPRINIT((*comprinit)), SCIP_DECL_COMPREXIT((*comprexit)), SCIP_DECL_COMPRINITSOL((*comprinitsol)), SCIP_DECL_COMPREXITSOL((*comprexitsol)), SCIP_DECL_COMPREXEC((*comprexec)), SCIP_COMPRDATA *comprdata)
SCIP_RETCODE SCIPwriteCliqueGraph(SCIP *scip, const char *fname, SCIP_Bool writenodeweights)
unsigned int SCIP_PRESOLTIMING
Definition: type_timing.h:50
SCIP_RETCODE SCIPaddConsLocks(SCIP *scip, SCIP_CONS *cons, int nlockspos, int nlocksneg)
SCIP_RETCODE SCIPpropagateProbingImplications(SCIP *scip, SCIP_Bool *cutoff)
SCIP_RETCODE SCIPresetRepresentation(SCIP *scip, SCIP_REOPTNODE **representatives, int nrepresentatives)
SCIP_Longint SCIPgetNNodeLPs(SCIP *scip)
SCIP_RETCODE SCIPcheckCons(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool printreason, SCIP_RESULT *result)
#define SCIP_DECL_EVENTEXITSOL(x)
Definition: type_event.h:202
SCIP_RETCODE SCIPchgFeastol(SCIP *scip, SCIP_Real feastol)
SCIP_RETCODE SCIPprintTransSol(SCIP *scip, SCIP_SOL *sol, FILE *file, SCIP_Bool printzeros)
SCIP_Real SCIPgetRelaxSolVal(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPconstructLP(SCIP *scip, SCIP_Bool *cutoff)
SCIP_RETCODE SCIPtransformProb(SCIP *scip)
int SCIPgetNCutsFound(SCIP *scip)
SCIP_RETCODE SCIPparseVarsList(SCIP *scip, const char *str, SCIP_VAR **vars, int *nvars, int varssize, int *requiredsize, char **endptr, char delimiter, SCIP_Bool *success)
SCIP_RETCODE SCIPsetRelaxFree(SCIP *scip, SCIP_RELAX *relax, SCIP_DECL_RELAXFREE((*relaxfree)))
#define SCIP_DECL_PROPINITPRE(x)
Definition: type_prop.h:85
SCIP_RETCODE SCIPsetConshdlrInit(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINIT((*consinit)))
SCIP_Longint SCIPgetNTotalNodes(SCIP *scip)
struct SCIP_ComprData SCIP_COMPRDATA
Definition: type_compr.h:40
SCIP_RETCODE SCIPsetBranchrulePriority(SCIP *scip, SCIP_BRANCHRULE *branchrule, int priority)
SCIP_Real SCIPgetVarPseudocostCountCurrentRun(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
type definitions for problem variables
#define SCIP_DECL_CONSENABLE(x)
Definition: type_cons.h:636
SCIP_RETCODE SCIPcheckSol(SCIP *scip, SCIP_SOL *sol, SCIP_Bool printreason, SCIP_Bool checkbounds, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *feasible)
SCIP_Real SCIPgetVarAvgInferences(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPaddNewRowCutpool(SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_ROW *row)
SCIP_RETCODE SCIPincludeConflicthdlr(SCIP *scip, const char *name, const char *desc, int priority, SCIP_DECL_CONFLICTCOPY((*conflictcopy)), SCIP_DECL_CONFLICTFREE((*conflictfree)), SCIP_DECL_CONFLICTINIT((*conflictinit)), SCIP_DECL_CONFLICTEXIT((*conflictexit)), SCIP_DECL_CONFLICTINITSOL((*conflictinitsol)), SCIP_DECL_CONFLICTEXITSOL((*conflictexitsol)), SCIP_DECL_CONFLICTEXEC((*conflictexec)), SCIP_CONFLICTHDLRDATA *conflicthdlrdata)
SCIP_PROP ** SCIPgetProps(SCIP *scip)
#define SCIP_DECL_CONFLICTCOPY(x)
Definition: type_conflict.h:52
SCIP_RETCODE SCIPgetNegatedVar(SCIP *scip, SCIP_VAR *var, SCIP_VAR **negvar)
SCIP_RETCODE SCIPsetConshdlrPresol(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRESOL((*conspresol)), int maxprerounds, SCIP_PRESOLTIMING presoltiming)
SCIP_Bool SCIPgetBoolarrayVal(SCIP *scip, SCIP_BOOLARRAY *boolarray, int idx)
int SCIPgetNCutsApplied(SCIP *scip)
SCIP_RETCODE SCIPbranchLP(SCIP *scip, SCIP_RESULT *result)
SCIP_RETCODE SCIPsetProbCopy(SCIP *scip, SCIP_DECL_PROBCOPY((*probcopy)))
SCIP_RETCODE SCIPaddPoolCut(SCIP *scip, SCIP_ROW *row)
SCIP_RETCODE SCIPsetConshdlrDisable(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDISABLE((*consdisable)))
SCIP_Bool SCIPisGE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
type definitions for relaxators
SCIP_Longint SCIPgetVarStrongbranchLPAge(SCIP *scip, SCIP_VAR *var)
#define SCIP_DECL_READERWRITE(x)
Definition: type_reader.h:110
SCIP_Real SCIPgetAvgConflictlengthScoreCurrentRun(SCIP *scip)
struct Scip SCIP
Definition: type_scip.h:30
#define SCIP_DECL_CONSENFOLP(x)
Definition: type_cons.h:313
SCIP_Bool SCIPisParamFixed(SCIP *scip, const char *name)
SCIP_RETCODE SCIPsetConshdlrProp(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPROP((*consprop)), int propfreq, SCIP_Bool delayprop, SCIP_PROPTIMING proptiming)
SCIP_RETCODE SCIPgetActiveVars(SCIP *scip, SCIP_VAR **vars, int *nvars, int varssize, int *requiredsize)
SCIP_RETCODE SCIPtightenVarLbGlobal(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
struct SCIP_Conflicthdlr SCIP_CONFLICTHDLR
Definition: type_conflict.h:39
SCIP_Real SCIPgetRowPseudoFeasibility(SCIP *scip, SCIP_ROW *row)
int SCIPgetNRuns(SCIP *scip)
SCIP_RETCODE SCIPwriteParams(SCIP *scip, const char *filename, SCIP_Bool comments, SCIP_Bool onlychanged)
void SCIPmarkRowNotRemovableLocal(SCIP *scip, SCIP_ROW *row)
SCIP_RETCODE SCIPchgVarUbGlobal(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
struct SCIP_ConsData SCIP_CONSDATA
Definition: type_cons.h:50
SCIP_RETCODE SCIPsetComprFree(SCIP *scip, SCIP_COMPR *compr, SCIP_DECL_COMPRFREE((*comprfree)))
type definitions for conflict analysis
SCIP_Real SCIPfloor(SCIP *scip, SCIP_Real val)
SCIP_RETCODE SCIPchgNlRowLinearCoef(SCIP *scip, SCIP_NLROW *nlrow, SCIP_VAR *var, SCIP_Real coef)
SCIP_Bool SCIPisRelGE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPgetOrigVarsData(SCIP *scip, SCIP_VAR ***vars, int *nvars, int *nbinvars, int *nintvars, int *nimplvars, int *ncontvars)
SCIP_RETCODE SCIPcopyOrig(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, const char *suffix, SCIP_Bool enablepricing, SCIP_Bool passmessagehdlr, SCIP_Bool *valid)
SCIP_SOL * SCIPgetReoptLastOptSol(SCIP *scip)
SCIP_RETCODE SCIPendProbing(SCIP *scip)
SCIP_RETCODE SCIPaddLinearCoefsToNlRow(SCIP *scip, SCIP_NLROW *nlrow, int nvars, SCIP_VAR **vars, SCIP_Real *vals)
SCIP_RETCODE SCIPfree(SCIP **scip)
type definitions for managing events
SCIP_RETCODE SCIPfixParam(SCIP *scip, const char *name)
SCIP_Bool SCIPisDualfeasEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
int SCIPgetNSiblings(SCIP *scip)
SCIP_RETCODE SCIPsetHeuristics(SCIP *scip, SCIP_PARAMSETTING paramsetting, SCIP_Bool quiet)
SCIP_RETCODE SCIPsetConshdlrInitpre(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITPRE((*consinitpre)))
SCIP_Real SCIPgetLocalLowerbound(SCIP *scip)
SCIP_RETCODE SCIPprintDualSol(SCIP *scip, FILE *file, SCIP_Bool printzeros)
SCIP_RETCODE SCIPextendPtrarray(SCIP *scip, SCIP_PTRARRAY *ptrarray, int minidx, int maxidx)
public methods for NLP management
SCIP_Longint SCIPgetNResolveLPs(SCIP *scip)
#define SCIP_DECL_CONSSEPALP(x)
Definition: type_cons.h:239
public methods for node selectors
wrapper functions to map file i/o to standard or zlib file i/o
struct SCIP_ExprTree SCIP_EXPRTREE
Definition: type_expr.h:92
#define SCIP_DECL_COMPRINITSOL(x)
Definition: type_compr.h:84
SCIP_Bool SCIPisFeasGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPreadProb(SCIP *scip, const char *filename, const char *extension)
SCIP_RETCODE SCIPincludeConflicthdlrBasic(SCIP *scip, SCIP_CONFLICTHDLR **conflicthdlrptr, const char *name, const char *desc, int priority, SCIP_DECL_CONFLICTEXEC((*conflictexec)), SCIP_CONFLICTHDLRDATA *conflicthdlrdata)
#define SCIP_DECL_PROBTRANS(x)
Definition: type_prob.h:74
SCIP_RETCODE SCIPgetVarCopy(SCIP *sourcescip, SCIP *targetscip, SCIP_VAR *sourcevar, SCIP_VAR **targetvar, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, SCIP_Bool *success)
SCIP_RETCODE SCIPgetNlRowActivityBounds(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real *minactivity, SCIP_Real *maxactivity)
SCIP_Real SCIPgetLPRootColumnObjval(SCIP *scip)
SCIP_Real SCIPdualfeasFloor(SCIP *scip, SCIP_Real val)
SCIP_Real SCIPgetTotalTime(SCIP *scip)
SCIP_Longint SCIPgetSolNodenum(SCIP *scip, SCIP_SOL *sol)
SCIP_RETCODE SCIPsetPropFree(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPFREE((*propfree)))
SCIP_Real SCIPgetLPRootLooseObjval(SCIP *scip)
#define SCIP_DECL_CONSGETVARS(x)
Definition: type_cons.h:780
SCIP_RETCODE SCIPsetRelaxSolVals(SCIP *scip, int nvars, SCIP_VAR **vars, SCIP_Real *vals)
struct SCIP_Sepa SCIP_SEPA
Definition: type_sepa.h:37
#define SCIP_DECL_CONSEXIT(x)
Definition: type_cons.h:94
SCIP_RETCODE SCIPbranchVarHole(SCIP *scip, SCIP_VAR *var, SCIP_Real left, SCIP_Real right, SCIP_NODE **downchild, SCIP_NODE **upchild)
struct SCIP_ReaderData SCIP_READERDATA
Definition: type_reader.h:37
SCIP_RETCODE SCIPclearCuts(SCIP *scip)
SCIP_Real SCIPgetVarAvgCutoffs(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
public data structures and miscellaneous methods
SCIP_RETCODE SCIPsetReaderWrite(SCIP *scip, SCIP_READER *reader, SCIP_DECL_READERWRITE((*readerwrite)))
SCIP_RETCODE SCIPincludeSepa(SCIP *scip, const char *name, const char *desc, int priority, int freq, SCIP_Real maxbounddist, SCIP_Bool usessubscip, SCIP_Bool delay, SCIP_DECL_SEPACOPY((*sepacopy)), SCIP_DECL_SEPAFREE((*sepafree)), SCIP_DECL_SEPAINIT((*sepainit)), SCIP_DECL_SEPAEXIT((*sepaexit)), SCIP_DECL_SEPAINITSOL((*sepainitsol)), SCIP_DECL_SEPAEXITSOL((*sepaexitsol)), SCIP_DECL_SEPAEXECLP((*sepaexeclp)), SCIP_DECL_SEPAEXECSOL((*sepaexecsol)), SCIP_SEPADATA *sepadata)
SCIP_RETCODE SCIPcalcCliquePartition(SCIP *const scip, SCIP_VAR **const vars, int const nvars, int *const cliquepartition, int *const ncliques)
unsigned int SCIP_EVENTTYPE
Definition: type_event.h:125
SCIP_RETCODE SCIPreleaseNlRow(SCIP *scip, SCIP_NLROW **nlrow)
struct SCIP_Sol SCIP_SOL
Definition: type_sol.h:45
SCIP_RETCODE SCIPcreateRowUnspec(SCIP *scip, SCIP_ROW **row, const char *name, int len, SCIP_COL **cols, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
int SCIPgetNReoptnodes(SCIP *scip, SCIP_NODE *node)
SCIP_PRICER * SCIPfindPricer(SCIP *scip, const char *name)
SCIP_RETCODE SCIPsetPresolExit(SCIP *scip, SCIP_PRESOL *presol, SCIP_DECL_PRESOLEXIT((*presolexit)))
SCIP_RETCODE SCIPtransformCons(SCIP *scip, SCIP_CONS *cons, SCIP_CONS **transcons)
SCIP_RETCODE SCIPgetNlRowPseudoFeasibility(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real *pseudofeasibility)
SCIP_RETCODE SCIPlinkNLPSol(SCIP *scip, SCIP_SOL *sol)
SCIP_RETCODE SCIPpresolve(SCIP *scip)
SCIP_Longint SCIPgetNSolsFound(SCIP *scip)
#define SCIP_Bool
Definition: def.h:50
#define SCIP_DECL_SEPAINIT(x)
Definition: type_sepa.h:63
int SCIPgetNPrioExternBranchConts(SCIP *scip)
#define SCIP_DECL_PRICERINITSOL(x)
Definition: type_pricer.h:81
SCIP_Real SCIPgetAvgCutoffsCurrentRun(SCIP *scip, SCIP_BRANCHDIR dir)
SCIP_Longint SCIPgetNRootStrongbranchLPIterations(SCIP *scip)
SCIP_RETCODE SCIPgetTransformedVars(SCIP *scip, int nvars, SCIP_VAR **vars, SCIP_VAR **transvars)
SCIP_RETCODE SCIPsetEventhdlrExitsol(SCIP *scip, SCIP_EVENTHDLR *eventhdlr, SCIP_DECL_EVENTEXITSOL((*eventexitsol)))
SCIP_RETCODE SCIPstartProbing(SCIP *scip)
SCIP_RETCODE SCIPdropVarEvent(SCIP *scip, SCIP_VAR *var, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)
SCIP_Real SCIPgetRowPseudoActivity(SCIP *scip, SCIP_ROW *row)
SCIP_RETCODE SCIPaddObjoffset(SCIP *scip, SCIP_Real addval)
#define SCIP_DECL_PRESOLEXITPRE(x)
Definition: type_presol.h:102
#define SCIP_DECL_PROBEXITSOL(x)
Definition: type_prob.h:110
SCIP_Bool SCIPisFeasEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
#define SCIP_DECL_NODESELEXIT(x)
Definition: type_nodesel.h:72
SCIP_RETCODE SCIPchgVarObjProbing(SCIP *scip, SCIP_VAR *var, SCIP_Real newobj)
SCIP_RETCODE SCIPaddRowProbing(SCIP *scip, SCIP_ROW *row)
SCIP_Real SCIPgetVarAvgCutoffsCurrentRun(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPaddSol(SCIP *scip, SCIP_SOL *sol, SCIP_Bool *stored)
public methods for storing cuts in a cut pool
SCIP_RETCODE SCIPsetSubscipsOff(SCIP *scip, SCIP_Bool quiet)
type definitions for input file readers
SCIP_Real SCIPgetBranchScore(SCIP *scip, SCIP_VAR *var, SCIP_Real downgain, SCIP_Real upgain)
SCIP_Bool SCIPisTransformed(SCIP *scip)
SCIP_RETCODE SCIPinferBinvarCons(SCIP *scip, SCIP_VAR *var, SCIP_Bool fixedval, SCIP_CONS *infercons, int inferinfo, SCIP_Bool *infeasible, SCIP_Bool *tightened)
struct SCIP_Relax SCIP_RELAX
Definition: type_relax.h:36
SCIP_RETCODE SCIPsetRelaxInitsol(SCIP *scip, SCIP_RELAX *relax, SCIP_DECL_RELAXINITSOL((*relaxinitsol)))
SCIP_RETCODE SCIPupdateConsFlags(SCIP *scip, SCIP_CONS *cons0, SCIP_CONS *cons1)
SCIP_Longint SCIPgetNDivingLPs(SCIP *scip)
void SCIPgetVarCoefChg(SCIP *scip, int varidx, SCIP_Bool *negated, SCIP_Bool *entering, SCIP_Bool *leaving)
SCIP_RETCODE SCIPsetPresolving(SCIP *scip, SCIP_PARAMSETTING paramsetting, SCIP_Bool quiet)
SCIP_RETCODE SCIPcreateCurrentSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
int SCIPgetNCheckConss(SCIP *scip)
SCIP_Real SCIPgetPrimalbound(SCIP *scip)
enum SCIP_Objsense SCIP_OBJSENSE
Definition: type_prob.h:41
SCIP_RETCODE SCIPsetSeparating(SCIP *scip, SCIP_PARAMSETTING paramsetting, SCIP_Bool quiet)
enum SCIP_Status SCIP_STATUS
Definition: type_stat.h:57
SCIP_Real SCIPgetAvgInferences(SCIP *scip, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPcreateCons(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_CONSHDLR *conshdlr, SCIP_CONSDATA *consdata, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
#define SCIP_DECL_DISPFREE(x)
Definition: type_disp.h:70
#define SCIP_DECL_PROPFREE(x)
Definition: type_prop.h:55
SCIP_RETCODE SCIPchgVarObjDiveNLP(SCIP *scip, SCIP_VAR *var, SCIP_Real coef)
SCIP_Bool SCIPisFeasNegative(SCIP *scip, SCIP_Real val)
SCIP_Longint SCIPgetNResolveLPIterations(SCIP *scip)
SCIP_RETCODE SCIPchgVarUbProbing(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
SCIP_Real SCIPgetVarRedcost(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPevalExprtreeGlobalBounds(SCIP *scip, SCIP_EXPRTREE *tree, SCIP_Real infinity, SCIP_INTERVAL *val)
SCIP_RETCODE SCIPsetPropInitsol(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPINITSOL((*propinitsol)))
SCIP_RETCODE SCIPsumLPRows(SCIP *scip, SCIP_Real *weights, SCIP_REALARRAY *sumcoef, SCIP_Real *sumlhs, SCIP_Real *sumrhs)
SCIP_RETCODE SCIPenfopsCons(SCIP *scip, SCIP_CONS *cons, SCIP_Bool solinfeasible, SCIP_Bool objinfeasible, SCIP_RESULT *result)
SCIP_RETCODE SCIPchgConsName(SCIP *scip, SCIP_CONS *cons, const char *name)
SCIP_RETCODE SCIPgetLPBInvACol(SCIP *scip, int c, SCIP_Real *coefs, int *inds, int *ninds)
SCIP_RETCODE SCIPincludeNodesel(SCIP *scip, const char *name, const char *desc, int stdpriority, int memsavepriority, SCIP_DECL_NODESELCOPY((*nodeselcopy)), SCIP_DECL_NODESELFREE((*nodeselfree)), SCIP_DECL_NODESELINIT((*nodeselinit)), SCIP_DECL_NODESELEXIT((*nodeselexit)), SCIP_DECL_NODESELINITSOL((*nodeselinitsol)), SCIP_DECL_NODESELEXITSOL((*nodeselexitsol)), SCIP_DECL_NODESELSELECT((*nodeselselect)), SCIP_DECL_NODESELCOMP((*nodeselcomp)), SCIP_NODESELDATA *nodeseldata)
SCIP_RETCODE SCIPsetPricerCopy(SCIP *scip, SCIP_PRICER *pricer, SCIP_DECL_PRICERCOPY((*pricercopy)))
SCIP_RETCODE SCIPfreeIntarray(SCIP *scip, SCIP_INTARRAY **intarray)
SCIP_RETCODE SCIPdelVar(SCIP *scip, SCIP_VAR *var, SCIP_Bool *deleted)
SCIP_RETCODE SCIPaddStringParam(SCIP *scip, const char *name, const char *desc, char **valueptr, SCIP_Bool isadvanced, const char *defaultvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
SCIP_RETCODE SCIPreleaseVar(SCIP *scip, SCIP_VAR **var)
SCIP_RETCODE SCIPgetCharParam(SCIP *scip, const char *name, char *value)
SCIP_RETCODE SCIPcreateProb(SCIP *scip, const char *name, SCIP_DECL_PROBDELORIG((*probdelorig)), SCIP_DECL_PROBTRANS((*probtrans)), SCIP_DECL_PROBDELTRANS((*probdeltrans)), SCIP_DECL_PROBINITSOL((*probinitsol)), SCIP_DECL_PROBEXITSOL((*probexitsol)), SCIP_DECL_PROBCOPY((*probcopy)), SCIP_PROBDATA *probdata)
SCIP_RETCODE SCIPsetBranchruleExecExt(SCIP *scip, SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXECEXT((*branchexecext)))
SCIP_RETCODE SCIPsetComprCopy(SCIP *scip, SCIP_COMPR *compr, SCIP_DECL_COMPRCOPY((*comprcopy)))
SCIP_Bool SCIPisRelLE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
#define SCIP_DECL_CONSEXITPRE(x)
Definition: type_cons.h:138
SCIP_RETCODE SCIPcreateSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
SCIP_RETCODE SCIPsetHeurExit(SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEUREXIT((*heurexit)))
SCIP_COMPR * SCIPfindCompr(SCIP *scip, const char *name)
public methods for variable pricers
#define SCIP_DECL_PRESOLINIT(x)
Definition: type_presol.h:62
SCIP_RETCODE SCIPsetComprExitsol(SCIP *scip, SCIP_COMPR *compr, SCIP_DECL_COMPREXITSOL((*comprexitsol)))
SCIP_Real SCIPgetGlobalPseudoObjval(SCIP *scip)
SCIP_RETCODE SCIPcopyOrigConss(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool enablepricing, SCIP_Bool *valid)
SCIP_STAGE SCIPgetStage(SCIP *scip)
SCIP_Real SCIPgetVarConflictScore(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPnewProbingNode(SCIP *scip)
SCIP_Real SCIPgetAvgCutoffs(SCIP *scip, SCIP_BRANCHDIR dir)
SCIP_NODE * SCIPgetBestSibling(SCIP *scip)
struct SCIP_BdChgIdx SCIP_BDCHGIDX
Definition: type_var.h:83
int SCIPgetNCuts(SCIP *scip)
public methods for LP management
SCIP_RETCODE SCIPchgLpfeastol(SCIP *scip, SCIP_Real lpfeastol, SCIP_Bool printnewvalue)
SCIP_Bool SCIPisRootLPRelax(SCIP *scip)
SCIP_RETCODE SCIPsetNodeselFree(SCIP *scip, SCIP_NODESEL *nodesel, SCIP_DECL_NODESELFREE((*nodeselfree)))
SCIP_RETCODE SCIPchgVarBranchPriority(SCIP *scip, SCIP_VAR *var, int branchpriority)
#define SCIP_DECL_PROPINITSOL(x)
Definition: type_prop.h:115
SCIP_Bool SCIPisSumNegative(SCIP *scip, SCIP_Real val)
SCIP_RETCODE SCIPaddLinearCoefToNlRow(SCIP *scip, SCIP_NLROW *nlrow, SCIP_VAR *var, SCIP_Real val)
SCIP_RETCODE SCIPcreateLPSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
int SCIPgetNConflicthdlrs(SCIP *scip)
int SCIPgetNPricevarsFound(SCIP *scip)
SCIP_Bool SCIPisIntegral(SCIP *scip, SCIP_Real val)
SCIP_RETCODE SCIPtransformVars(SCIP *scip, int nvars, SCIP_VAR **vars, SCIP_VAR **transvars)
SCIP_RETCODE SCIPcacheRowExtensions(SCIP *scip, SCIP_ROW *row)
SCIP_RETCODE SCIPsetPropPresol(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPPRESOL((*proppresol)), int presolpriority, int presolmaxrounds, SCIP_PRESOLTIMING presoltiming)
SCIP_PRESOL * SCIPfindPresol(SCIP *scip, const char *name)
SCIP_RETCODE SCIPchgVarLbGlobal(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
SCIP_RETCODE SCIPaddConflictLb(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx)
SCIP_RETCODE SCIPgetDivesetScore(SCIP *scip, SCIP_DIVESET *diveset, SCIP_DIVETYPE divetype, SCIP_VAR *divecand, SCIP_Real divecandsol, SCIP_Real divecandfrac, SCIP_Real *candscore, SCIP_Bool *roundup)
SCIP_RETCODE SCIPflattenVarAggregationGraph(SCIP *scip, SCIP_VAR *var)
SCIP_Real SCIPfeastol(SCIP *scip)
SCIP_RETCODE SCIPcreateSolCopy(SCIP *scip, SCIP_SOL **sol, SCIP_SOL *sourcesol)
SCIP_Real SCIPgetVarPseudocostScoreCurrentRun(SCIP *scip, SCIP_VAR *var, SCIP_Real solval)
SCIP_RETCODE SCIPsetSepaPriority(SCIP *scip, SCIP_SEPA *sepa, int priority)
type definitions for branch and bound tree
SCIP_Longint SCIPgetLastDivenode(SCIP *scip)
SCIP_Real SCIPgetTransGap(SCIP *scip)
SCIP_RETCODE SCIPfreeSolve(SCIP *scip, SCIP_Bool restart)
SCIP_Bool SCIPallowObjProp(SCIP *scip)
SCIP_NODE * SCIPgetCurrentNode(SCIP *scip)
SCIP_RETCODE SCIPsetBranchruleExitsol(SCIP *scip, SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXITSOL((*branchexitsol)))
#define SCIP_DECL_DIALOGFREE(x)
Definition: type_dialog.h:61
#define SCIP_DECL_COMPREXIT(x)
Definition: type_compr.h:73
SCIP_RETCODE SCIPsetConshdlrPrint(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRINT((*consprint)))
SCIP_RETCODE SCIPapplyReopt(SCIP *scip, SCIP_REOPTNODE *reoptnode, unsigned int id, SCIP_Real estimate, SCIP_NODE **childnodes, int *ncreatedchilds, int *naddedconss, int childnodessize, SCIP_Bool *success)
SCIP_NODE * SCIPgetPrioChild(SCIP *scip)
int SCIPgetNPrioExternBranchInts(SCIP *scip)
SCIP_Real SCIPgetAvgConflictScoreCurrentRun(SCIP *scip)
int SCIPgetNNlpis(SCIP *scip)
struct SCIP_Var SCIP_VAR
Definition: type_var.h:95
SCIP_NLPI ** SCIPgetNlpis(SCIP *scip)
struct SCIP_RealArray SCIP_REALARRAY
Definition: type_misc.h:84
SCIP_RETCODE SCIPaddVarImplication(SCIP *scip, SCIP_VAR *var, SCIP_Bool varfixing, SCIP_VAR *implvar, SCIP_BOUNDTYPE impltype, SCIP_Real implbound, SCIP_Bool *infeasible, int *nbdchgs)
SCIP_RETCODE SCIPfixVarProbing(SCIP *scip, SCIP_VAR *var, SCIP_Real fixedval)
SCIP_RETCODE SCIPsetPresolFree(SCIP *scip, SCIP_PRESOL *presol, SCIP_DECL_PRESOLFREE((*presolfree)))
SCIP_Real SCIPgetAvgPseudocost(SCIP *scip, SCIP_Real solvaldelta)
SCIP_RETCODE SCIPaddReoptnodeCons(SCIP *scip, SCIP_REOPTNODE *reoptnode, SCIP_VAR **vars, SCIP_Real *vals, int nvars, REOPT_CONSTYPE constype)
#define SCIP_DECL_SEPAEXITSOL(x)
Definition: type_sepa.h:93
SCIP_BRANCHRULE ** SCIPgetBranchrules(SCIP *scip)
SCIP_RETCODE SCIPaddQuadVarsToNlRow(SCIP *scip, SCIP_NLROW *nlrow, int nvars, SCIP_VAR **vars)
#define SCIP_DECL_SEPAEXECSOL(x)
Definition: type_sepa.h:138
SCIP_Real SCIPgetObjlimit(SCIP *scip)
SCIP_RETCODE SCIPwriteVarsLinearsum(SCIP *scip, FILE *file, SCIP_VAR **vars, SCIP_Real *vals, int nvars, SCIP_Bool type)
SCIP_RETCODE SCIPaddConflictRelaxedLb(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Real relaxedlb)
type definitions for clocks and timing issues
SCIP_RETCODE SCIPgetLPBasisInd(SCIP *scip, int *basisind)
SCIP_PARAM ** SCIPgetParams(SCIP *scip)
SCIP_RETCODE SCIPdisableConsSeparation(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPflushLP(SCIP *scip)
SCIP_Real SCIPgetVarAvgInferenceCutoffScoreCurrentRun(SCIP *scip, SCIP_VAR *var, SCIP_Real cutoffweight)
SCIP_RETCODE SCIPprintRay(SCIP *scip, SCIP_SOL *sol, FILE *file, SCIP_Bool printzeros)
SCIP_RETCODE SCIPsetConshdlrInitlp(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITLP((*consinitlp)))
SCIP_RETCODE SCIPsetRelaxExit(SCIP *scip, SCIP_RELAX *relax, SCIP_DECL_RELAXEXIT((*relaxexit)))
SCIP_Longint SCIPgetNPrimalResolveLPIterations(SCIP *scip)
SCIP_RETCODE SCIPgetSiblings(SCIP *scip, SCIP_NODE ***siblings, int *nsiblings)
SCIP_RETCODE SCIPgetReoptChildIDs(SCIP *scip, SCIP_NODE *node, unsigned int *ids, int mem, int *nids)
SCIP_RETCODE SCIPfreeCutpool(SCIP *scip, SCIP_CUTPOOL **cutpool)
SCIP_RETCODE SCIPaddCons(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPsetConsChecked(SCIP *scip, SCIP_CONS *cons, SCIP_Bool check)
#define SCIP_DECL_CONSENFOPS(x)
Definition: type_cons.h:356
SCIP_RETCODE SCIPcreatePtrarray(SCIP *scip, SCIP_PTRARRAY **ptrarray)
SCIP_Real SCIPgetVarPseudocostScore(SCIP *scip, SCIP_VAR *var, SCIP_Real solval)
SCIP_RETCODE SCIPreadParams(SCIP *scip, const char *filename)
SCIP_RETCODE SCIPgetVarsData(SCIP *scip, SCIP_VAR ***vars, int *nvars, int *nbinvars, int *nintvars, int *nimplvars, int *ncontvars)
SCIP_Real SCIPgetFirstLPLowerboundRoot(SCIP *scip)
SCIP_RETCODE SCIPaddQuadVarToNlRow(SCIP *scip, SCIP_NLROW *nlrow, SCIP_VAR *var)
SCIP_RETCODE SCIPextendBoolarray(SCIP *scip, SCIP_BOOLARRAY *boolarray, int minidx, int maxidx)
SCIP_CONS ** SCIPgetConss(SCIP *scip)
SCIP_RETCODE SCIPseparateSol(SCIP *scip, SCIP_SOL *sol, SCIP_Bool pretendroot, SCIP_Bool onlydelayed, SCIP_Bool *delayed, SCIP_Bool *cutoff)
SCIP_RETCODE SCIPprintRow(SCIP *scip, SCIP_ROW *row, FILE *file)
BMS_BLKMEM * SCIPblkmem(SCIP *scip)
SCIP_RETCODE SCIPaddConsAge(SCIP *scip, SCIP_CONS *cons, SCIP_Real deltaage)
SCIP_RETCODE SCIPsetConshdlrInitsol(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITSOL((*consinitsol)))
type definitions for storing and manipulating the main problem
SCIP_SOL ** SCIPgetSols(SCIP *scip)
SCIP_RETCODE SCIPinitlpCons(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPcreateChild(SCIP *scip, SCIP_NODE **node, SCIP_Real nodeselprio, SCIP_Real estimate)
void SCIPsetMessagehdlrQuiet(SCIP *scip, SCIP_Bool quiet)
SCIP_Real SCIPlpfeastol(SCIP *scip)
SCIP_RETCODE SCIPgetTransformedConss(SCIP *scip, int nconss, SCIP_CONS **conss, SCIP_CONS **transconss)
SCIP_Real SCIPgetVarLbDive(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPchgRealParam(SCIP *scip, SCIP_PARAM *param, SCIP_Real value)
int SCIPgetPtrarrayMinIdx(SCIP *scip, SCIP_PTRARRAY *ptrarray)
SCIP_Real SCIPgetBranchingPoint(SCIP *scip, SCIP_VAR *var, SCIP_Real suggestion)
#define SCIP_DECL_READERCOPY(x)
Definition: type_reader.h:46
SCIP_Real SCIPfeasRound(SCIP *scip, SCIP_Real val)
SCIP_RETCODE SCIPgetLongintParam(SCIP *scip, const char *name, SCIP_Longint *value)
enum SCIP_ParamEmphasis SCIP_PARAMEMPHASIS
Definition: type_paramset.h:70
SCIP_RETCODE SCIPcreateOrigSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
SCIP_RETCODE SCIPgetVarStrongbranchLast(SCIP *scip, SCIP_VAR *var, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, SCIP_Real *solval, SCIP_Real *lpobjval)
SCIP_RETCODE SCIPflushNLP(SCIP *scip)
SCIP_PRICER ** SCIPgetPricers(SCIP *scip)
SCIP_RETCODE SCIPrepropagateNode(SCIP *scip, SCIP_NODE *node)
SCIP_RETCODE SCIPaddConflictUb(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx)
#define SCIP_DECL_VARDELORIG(x)
Definition: type_var.h:107
SCIP_Real SCIPgetVarAvgCutoffScore(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPreadSol(SCIP *scip, const char *filename)
SCIP_RETCODE SCIPchgVarUbNode(SCIP *scip, SCIP_NODE *node, SCIP_VAR *var, SCIP_Real newbound)
SCIP_RETCODE SCIPwriteOrigProblem(SCIP *scip, const char *filename, const char *extension, SCIP_Bool genericnames)
SCIP_BRANCHRULE * SCIPfindBranchrule(SCIP *scip, const char *name)
type definitions for propagators
SCIP_Real SCIPgetVarPseudocostCount(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
#define SCIP_DECL_DIALOGEXEC(x)
Definition: type_dialog.h:87
SCIP_Longint SCIPgetMemUsed(SCIP *scip)
SCIP_Real SCIPgetReoptSimilarity(SCIP *scip, int run1, int run2)
SCIP_Real SCIPcomputeVarUbLocal(SCIP *scip, SCIP_VAR *var)
void SCIPverbMessage(SCIP *scip, SCIP_VERBLEVEL msgverblevel, FILE *file, const char *formatstr,...)
SCIP_RETCODE SCIPsetComprExit(SCIP *scip, SCIP_COMPR *compr, SCIP_DECL_COMPREXIT((*comprexit)))
SCIP_Real SCIPgetLPColumnObjval(SCIP *scip)
SCIP_Longint SCIPgetNConflictConssFound(SCIP *scip)
SCIP_VERBLEVEL SCIPgetVerbLevel(SCIP *scip)
SCIP_RETCODE SCIPgetNlRowSolActivity(SCIP *scip, SCIP_NLROW *nlrow, SCIP_SOL *sol, SCIP_Real *activity)
struct SCIP_Pricer SCIP_PRICER
Definition: type_pricer.h:35
public methods for presolvers
SCIP_RETCODE SCIPlinkCurrentSol(SCIP *scip, SCIP_SOL *sol)
SCIP_COL ** SCIPgetLPCols(SCIP *scip)
SCIP_RETCODE SCIPgetNLPIntPar(SCIP *scip, SCIP_NLPPARAM type, int *ival)
public methods for managing events
#define SCIP_DECL_DISPEXITSOL(x)
Definition: type_disp.h:108
SCIP_RETCODE SCIPinferVarFixCons(SCIP *scip, SCIP_VAR *var, SCIP_Real fixedval, SCIP_CONS *infercons, int inferinfo, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
SCIP_Bool SCIPisGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Longint SCIPgetNRootStrongbranchs(SCIP *scip)
SCIP_CLIQUE ** SCIPgetCliques(SCIP *scip)
SCIP_RETCODE SCIPcreateSolCopyOrig(SCIP *scip, SCIP_SOL **sol, SCIP_SOL *sourcesol)
int SCIPgetVarNStrongbranchs(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPprintOrigProblem(SCIP *scip, FILE *file, const char *extension, SCIP_Bool genericnames)
SCIP_RETCODE SCIPmarkDoNotMultaggrVar(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPcreateEmptyRowCons(SCIP *scip, SCIP_ROW **row, SCIP_CONSHDLR *conshdlr, const char *name, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
struct SCIP_RelaxData SCIP_RELAXDATA
Definition: type_relax.h:38
SCIP_RETCODE SCIPsetConshdlrDelvars(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDELVARS((*consdelvars)))
#define SCIP_DECL_RELAXEXEC(x)
Definition: type_relax.h:118
unsigned int SCIP_PROPTIMING
Definition: type_timing.h:64
struct SCIP_BoolArray SCIP_BOOLARRAY
Definition: type_misc.h:90
int SCIPgetNIntVars(SCIP *scip)
SCIP_Real SCIPgetTransObjscale(SCIP *scip)
SCIP_Bool SCIPisLPRelax(SCIP *scip)
struct SCIP_ProbData SCIP_PROBDATA
Definition: type_prob.h:44
SCIP_RETCODE SCIPprintReoptStatistics(SCIP *scip, FILE *file)
SCIP_RETCODE SCIPsetProbExitsol(SCIP *scip, SCIP_DECL_PROBEXITSOL((*probexitsol)))
SCIP_RETCODE SCIPretransformSol(SCIP *scip, SCIP_SOL *sol)
int SCIPgetMaxTotalDepth(SCIP *scip)
SCIP_Real SCIPgetLocalDualbound(SCIP *scip)
SCIP_RETCODE SCIPchgStringParam(SCIP *scip, SCIP_PARAM *param, const char *value)
SCIP_Real SCIPfrac(SCIP *scip, SCIP_Real val)
SCIP_RETCODE SCIPchgVarBoundsDiveNLP(SCIP *scip, SCIP_VAR *var, SCIP_Real lb, SCIP_Real ub)
SCIP_Real SCIPceil(SCIP *scip, SCIP_Real val)
void SCIPprintReal(SCIP *scip, FILE *file, SCIP_Real val, int width, int precision)
type definitions for tree compression
SCIP_Bool SCIPisSumEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPchgNlRowLhs(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real lhs)
int SCIPgetEffectiveRootDepth(SCIP *scip)
int SCIPgetNPriceRounds(SCIP *scip)
SCIP_RETCODE SCIPgetBoolParam(SCIP *scip, const char *name, SCIP_Bool *value)
SCIP_Real * SCIPgetNLPVarsLbDualsol(SCIP *scip)
#define SCIP_DECL_EVENTINITSOL(x)
Definition: type_event.h:191
#define SCIP_DECL_SEPAEXIT(x)
Definition: type_sepa.h:71
void * SCIPgetPtrarrayVal(SCIP *scip, SCIP_PTRARRAY *ptrarray, int idx)
SCIP_Real SCIPgetVarPseudocostValCurrentRun(SCIP *scip, SCIP_VAR *var, SCIP_Real solvaldelta)
SCIP_RETCODE SCIPstartSolvingTime(SCIP *scip)
int SCIPgetNLPRows(SCIP *scip)
SCIP_RETCODE SCIPinitVarBranchStats(SCIP *scip, SCIP_VAR *var, SCIP_Real downpscost, SCIP_Real uppscost, SCIP_Real downvsids, SCIP_Real upvsids, SCIP_Real downconflen, SCIP_Real upconflen, SCIP_Real downinfer, SCIP_Real upinfer, SCIP_Real downcutoff, SCIP_Real upcutoff)
SCIP_NODESEL * SCIPfindNodesel(SCIP *scip, const char *name)
SCIP_Bool SCIPhasPrimalRay(SCIP *scip)
SCIP_Real SCIPretransformObj(SCIP *scip, SCIP_Real obj)
public methods for conflict analysis handlers
SCIP_RETCODE SCIPtrySol(SCIP *scip, SCIP_SOL *sol, SCIP_Bool printreason, SCIP_Bool checkbounds, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *stored)
#define SCIP_DECL_CONSFREE(x)
Definition: type_cons.h:74
int SCIPgetNOrigConss(SCIP *scip)
SCIP_RETCODE SCIPdropRowEvent(SCIP *scip, SCIP_ROW *row, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)
SCIP_RETCODE SCIPparseVarsPolynomial(SCIP *scip, const char *str, SCIP_VAR ****monomialvars, SCIP_Real ***monomialexps, SCIP_Real **monomialcoefs, int **monomialnvars, int *nmonomials, char **endptr, SCIP_Bool *success)
SCIP_Real SCIPgetBranchScoreMultiple(SCIP *scip, SCIP_VAR *var, int nchildren, SCIP_Real *gains)
SCIP_RETCODE SCIPdisableCons(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPsetObjsense(SCIP *scip, SCIP_OBJSENSE objsense)
public methods for tree compressions
type definitions for separators
int SCIPgetNCliques(SCIP *scip)
SCIP_RETCODE SCIPsetEmphasis(SCIP *scip, SCIP_PARAMEMPHASIS paramemphasis, SCIP_Bool quiet)
#define SCIP_DECL_DISPEXIT(x)
Definition: type_disp.h:86
int SCIPminorVersion(void)
SCIP_Longint SCIPgetNNodeLPIterations(SCIP *scip)
SCIP_RETCODE SCIPincludeDialog(SCIP *scip, SCIP_DIALOG **dialog, SCIP_DECL_DIALOGCOPY((*dialogcopy)), SCIP_DECL_DIALOGEXEC((*dialogexec)), SCIP_DECL_DIALOGDESC((*dialogdesc)), SCIP_DECL_DIALOGFREE((*dialogfree)), const char *name, const char *desc, SCIP_Bool issubmenu, SCIP_DIALOGDATA *dialogdata)
#define SCIP_DECL_SEPAINITSOL(x)
Definition: type_sepa.h:82
SCIP_Bool SCIPinRepropagation(SCIP *scip)
SCIP_RETCODE SCIPchgVarLbNode(SCIP *scip, SCIP_NODE *node, SCIP_VAR *var, SCIP_Real newbound)
#define SCIP_DECL_PROPRESPROP(x)
Definition: type_prop.h:243
SCIP_Bool SCIPisPositive(SCIP *scip, SCIP_Real val)
#define SCIP_DECL_HEUREXIT(x)
Definition: type_heur.h:84
SCIP_Longint SCIPconvertRealToLongint(SCIP *scip, SCIP_Real real)
SCIP_RETCODE SCIPsolveDiveLP(SCIP *scip, int itlim, SCIP_Bool *lperror, SCIP_Bool *cutoff)
SCIP_RETCODE SCIPgetConsNVars(SCIP *scip, SCIP_CONS *cons, int *nvars, SCIP_Bool *success)
int SCIPgetNNodesLeft(SCIP *scip)
SCIP_Real SCIPgetRowLPActivity(SCIP *scip, SCIP_ROW *row)
SCIP_RELAX * SCIPfindRelax(SCIP *scip, const char *name)
SCIP_RETCODE SCIPendStrongbranch(SCIP *scip)
SCIP_Longint SCIPgetNPrimalResolveLPs(SCIP *scip)
SCIP_RETCODE SCIPinferVarLbCons(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_CONS *infercons, int inferinfo, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
SCIP_RETCODE SCIPaddCharParam(SCIP *scip, const char *name, const char *desc, char *valueptr, SCIP_Bool isadvanced, char defaultvalue, const char *allowedvalues, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
public methods for message output
SCIP_Bool SCIPisExactSolve(SCIP *scip)
SCIP_RETCODE SCIPsetBoolParam(SCIP *scip, const char *name, SCIP_Bool value)
SCIP_RETCODE SCIPincludeReaderBasic(SCIP *scip, SCIP_READER **readerptr, const char *name, const char *desc, const char *extension, SCIP_READERDATA *readerdata)
#define SCIP_DECL_HEURINIT(x)
Definition: type_heur.h:76
SCIP_RETCODE SCIPsetSepaExitsol(SCIP *scip, SCIP_SEPA *sepa, SCIP_DECL_SEPAEXITSOL((*sepaexitsol)))
SCIP_RETCODE SCIPenableCons(SCIP *scip, SCIP_CONS *cons)
SCIP_Bool SCIPisRelaxSolValid(SCIP *scip)
SCIP_RETCODE SCIPsetConshdlrDelete(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDELETE((*consdelete)))
SCIP_RETCODE SCIPsetPropExit(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPEXIT((*propexit)))
#define SCIP_DECL_CONSINIT(x)
Definition: type_cons.h:84
#define SCIP_DECL_PROPPRESOL(x)
Definition: type_prop.h:179
SCIP_RETCODE SCIPsetRelaxExitsol(SCIP *scip, SCIP_RELAX *relax, SCIP_DECL_RELAXEXITSOL((*relaxexitsol)))
SCIP_RETCODE SCIPdisableConsPropagation(SCIP *scip, SCIP_CONS *cons)
SCIP_Bool SCIPhaveVarsCommonClique(SCIP *scip, SCIP_VAR *var1, SCIP_Bool value1, SCIP_VAR *var2, SCIP_Bool value2, SCIP_Bool regardimplics)
SCIP_RETCODE SCIPbranchVarValNary(SCIP *scip, SCIP_VAR *var, SCIP_Real val, int n, SCIP_Real minwidth, SCIP_Real widthfactor, int *nchildren)
SCIP_RETCODE SCIPcopyPlugins(SCIP *sourcescip, SCIP *targetscip, SCIP_Bool copyreaders, SCIP_Bool copypricers, SCIP_Bool copyconshdlrs, SCIP_Bool copyconflicthdlrs, SCIP_Bool copypresolvers, SCIP_Bool copyrelaxators, SCIP_Bool copyseparators, SCIP_Bool copypropagators, SCIP_Bool copyheuristics, SCIP_Bool copyeventhdlrs, SCIP_Bool copynodeselectors, SCIP_Bool copybranchrules, SCIP_Bool copydisplays, SCIP_Bool copydialogs, SCIP_Bool copynlpis, SCIP_Bool passmessagehdlr, SCIP_Bool *valid)
struct SCIP_Conshdlr SCIP_CONSHDLR
Definition: type_cons.h:47
SCIP_RETCODE SCIPsetEventhdlrDelete(SCIP *scip, SCIP_EVENTHDLR *eventhdlr, SCIP_DECL_EVENTDELETE((*eventdelete)))
type definitions for handling parameter settings
SCIP_Real SCIPgetVarFarkasCoef(SCIP *scip, SCIP_VAR *var)
struct SCIP_LPi SCIP_LPI
Definition: type_lpi.h:94
enum SCIP_DispStatus SCIP_DISPSTATUS
Definition: type_disp.h:50
SCIP_RETCODE SCIPclearPtrarray(SCIP *scip, SCIP_PTRARRAY *ptrarray)
SCIP_RETCODE SCIProundSol(SCIP *scip, SCIP_SOL *sol, SCIP_Bool *success)
SCIP_RETCODE SCIPchgBarrierconvtol(SCIP *scip, SCIP_Real barrierconvtol)
SCIP_RETCODE SCIPunlinkSol(SCIP *scip, SCIP_SOL *sol)
SCIP_Bool SCIPisNLPEnabled(SCIP *scip)
#define SCIP_Real
Definition: def.h:124
SCIP_RETCODE SCIPsetConshdlrExitsol(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSEXITSOL((*consexitsol)))
type definitions for user interface dialog
int SCIPgetNPricevarsApplied(SCIP *scip)
const char * SCIPgetProbName(SCIP *scip)
SCIP_RETCODE SCIPprintNlRow(SCIP *scip, SCIP_NLROW *nlrow, FILE *file)
SCIP_RETCODE SCIPsetProbData(SCIP *scip, SCIP_PROBDATA *probdata)
enum SCIP_Stage SCIP_STAGE
Definition: type_set.h:48
public methods for relaxation handlers
SCIP_RETCODE SCIPsetEventhdlrFree(SCIP *scip, SCIP_EVENTHDLR *eventhdlr, SCIP_DECL_EVENTFREE((*eventfree)))
SCIP_Real SCIPgetPresolvingTime(SCIP *scip)
struct SCIP_PropData SCIP_PROPDATA
Definition: type_prop.h:38
result codes for SCIP callback methods
type definitions for branching and inference history
SCIP_RETCODE SCIPgetNLPRealPar(SCIP *scip, SCIP_NLPPARAM type, SCIP_Real *dval)
SCIP_RETCODE SCIPincSolVal(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var, SCIP_Real incval)
int SCIPgetCutoffdepth(SCIP *scip)
int SCIPgetDepth(SCIP *scip)
public methods for input file readers
SCIP_RETCODE SCIPsetHeurFree(SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEURFREE((*heurfree)))
SCIP_RETCODE SCIPgetLPBInvRow(SCIP *scip, int r, SCIP_Real *coefs, int *inds, int *ninds)
SCIP_RETCODE SCIPincludeConshdlr(SCIP *scip, const char *name, const char *desc, int sepapriority, int enfopriority, int chckpriority, int sepafreq, int propfreq, int eagerfreq, int maxprerounds, SCIP_Bool delaysepa, SCIP_Bool delayprop, SCIP_Bool needscons, SCIP_PROPTIMING proptiming, SCIP_PRESOLTIMING presoltiming, SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), SCIP_DECL_CONSFREE((*consfree)), SCIP_DECL_CONSINIT((*consinit)), SCIP_DECL_CONSEXIT((*consexit)), SCIP_DECL_CONSINITPRE((*consinitpre)), SCIP_DECL_CONSEXITPRE((*consexitpre)), SCIP_DECL_CONSINITSOL((*consinitsol)), SCIP_DECL_CONSEXITSOL((*consexitsol)), SCIP_DECL_CONSDELETE((*consdelete)), SCIP_DECL_CONSTRANS((*constrans)), SCIP_DECL_CONSINITLP((*consinitlp)), SCIP_DECL_CONSSEPALP((*conssepalp)), SCIP_DECL_CONSSEPASOL((*conssepasol)), SCIP_DECL_CONSENFOLP((*consenfolp)), SCIP_DECL_CONSENFOPS((*consenfops)), SCIP_DECL_CONSCHECK((*conscheck)), SCIP_DECL_CONSPROP((*consprop)), SCIP_DECL_CONSPRESOL((*conspresol)), SCIP_DECL_CONSRESPROP((*consresprop)), SCIP_DECL_CONSLOCK((*conslock)), SCIP_DECL_CONSACTIVE((*consactive)), SCIP_DECL_CONSDEACTIVE((*consdeactive)), SCIP_DECL_CONSENABLE((*consenable)), SCIP_DECL_CONSDISABLE((*consdisable)), SCIP_DECL_CONSDELVARS((*consdelvars)), SCIP_DECL_CONSPRINT((*consprint)), SCIP_DECL_CONSCOPY((*conscopy)), SCIP_DECL_CONSPARSE((*consparse)), SCIP_DECL_CONSGETVARS((*consgetvars)), SCIP_DECL_CONSGETNVARS((*consgetnvars)), SCIP_DECL_CONSGETDIVEBDCHGS((*consgetdivebdchgs)), SCIP_CONSHDLRDATA *conshdlrdata)
#define SCIP_DECL_EVENTCOPY(x)
Definition: type_event.h:156
#define SCIP_DECL_NODESELCOPY(x)
Definition: type_nodesel.h:47
SCIP_Bool SCIPisDualfeasNegative(SCIP *scip, SCIP_Real val)
SCIP_RETCODE SCIPlinkLPSol(SCIP *scip, SCIP_SOL *sol)
SCIP_RETCODE SCIPaddVarsToRowSameCoef(SCIP *scip, SCIP_ROW *row, int nvars, SCIP_VAR **vars, SCIP_Real val)
SCIP_Real SCIPgetAvgPseudocostScore(SCIP *scip)
SCIP_Bool SCIPisVarPscostRelerrorReliable(SCIP *scip, SCIP_VAR *var, SCIP_Real threshold, SCIP_CONFIDENCELEVEL clevel)
SCIP_RETCODE SCIPcheckBoolParam(SCIP *scip, SCIP_PARAM *param, SCIP_Bool value)
SCIP_RETCODE SCIPgetChildren(SCIP *scip, SCIP_NODE ***children, int *nchildren)
SCIP_RETCODE SCIPlinkPseudoSol(SCIP *scip, SCIP_SOL *sol)
SCIP_Real SCIPtransformObj(SCIP *scip, SCIP_Real obj)
#define SCIP_DECL_CONSSEPASOL(x)
Definition: type_cons.h:271
SCIP_RETCODE SCIPsetComprInit(SCIP *scip, SCIP_COMPR *compr, SCIP_DECL_COMPRINIT((*comprinit)))
#define SCIP_DECL_READERREAD(x)
Definition: type_reader.h:71
#define SCIP_DECL_HEURFREE(x)
Definition: type_heur.h:68
int SCIPgetNImplVars(SCIP *scip)
void SCIPresetReoptSolMarks(SCIP *scip)
SCIP_RETCODE SCIPsetConsSeparated(SCIP *scip, SCIP_CONS *cons, SCIP_Bool separate)
#define SCIP_DECL_CONSPROP(x)
Definition: type_cons.h:421
SCIP_RETCODE SCIPscaleVarBranchFactor(SCIP *scip, SCIP_VAR *var, SCIP_Real scale)
SCIP_RETCODE SCIPreleaseDialog(SCIP *scip, SCIP_DIALOG **dialog)
SCIP_Real SCIPgetColRedcost(SCIP *scip, SCIP_COL *col)
SCIP_RETCODE SCIPsetHeurInit(SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEURINIT((*heurinit)))
#define SCIP_DECL_CONFLICTINIT(x)
Definition: type_conflict.h:68
void SCIPinfoMessage(SCIP *scip, FILE *file, const char *formatstr,...)
SCIP_Real SCIPround(SCIP *scip, SCIP_Real val)
SCIP_RETCODE SCIPgetNLPVarsNonlinearity(SCIP *scip, int *nlcount)
SCIP_RETCODE SCIPclearIntarray(SCIP *scip, SCIP_INTARRAY *intarray)
#define SCIP_DECL_CONSACTIVE(x)
Definition: type_cons.h:606
SCIP_RETCODE SCIPsetRelaxSolVal(SCIP *scip, SCIP_VAR *var, SCIP_Real val)
int SCIPgetNHeurs(SCIP *scip)
SCIP_RETCODE SCIPsetStringParam(SCIP *scip, const char *name, const char *value)
SCIP_RETCODE SCIPchgVarLbProbing(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
SCIP_RETCODE SCIPsetNodeselStdPriority(SCIP *scip, SCIP_NODESEL *nodesel, int priority)
SCIP_RETCODE SCIPactivatePricer(SCIP *scip, SCIP_PRICER *pricer)
SCIP_RETCODE SCIPtightenVarUb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
SCIP_RETCODE SCIPchgVarUbLazy(SCIP *scip, SCIP_VAR *var, SCIP_Real lazyub)
void SCIPprintVersion(SCIP *scip, FILE *file)
SCIP_Real SCIPgetRelaxSolObj(SCIP *scip)
SCIP_RETCODE SCIPsetConshdlrGetNVars(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETNVARS((*consgetnvars)))
#define SCIP_Longint
Definition: def.h:109
int SCIPgetNUpgrConss(SCIP *scip)
SCIP_RETCODE SCIPsepasolCons(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_RESULT *result)
#define SCIP_DECL_PROPEXIT(x)
Definition: type_prop.h:71
SCIP_RETCODE SCIPsetHeurExitsol(SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEUREXITSOL((*heurexitsol)))
struct SCIP_Presol SCIP_PRESOL
Definition: type_presol.h:36
SCIP_RETCODE SCIPautoselectDisps(SCIP *scip)
SCIP_Real SCIPgetVarVSIDS(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPcreateEmptyRow(SCIP *scip, SCIP_ROW **row, const char *name, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
SCIP_RETCODE SCIPaddConsLocal(SCIP *scip, SCIP_CONS *cons, SCIP_NODE *validnode)
SCIP_RETCODE SCIPcalcNegatedCliquePartition(SCIP *const scip, SCIP_VAR **const vars, int const nvars, int *const cliquepartition, int *const ncliques)
SCIP_RETCODE SCIPgetNLPStringPar(SCIP *scip, SCIP_NLPPARAM type, const char **sval)
SCIP_RETCODE SCIPclearSol(SCIP *scip, SCIP_SOL *sol)
SCIP_Real SCIPgetSolTime(SCIP *scip, SCIP_SOL *sol)
SCIP_RETCODE SCIPcreate(SCIP **scip)
int SCIPtechVersion(void)
SCIP_Longint SCIPgetNBarrierLPs(SCIP *scip)
void SCIPclearDiveBoundChanges(SCIP *scip)
SCIP_Bool SCIPareSolsEqual(SCIP *scip, SCIP_SOL *sol1, SCIP_SOL *sol2)
SCIP_Bool SCIPisFeasLE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPsetNLPInitialGuessSol(SCIP *scip, SCIP_SOL *sol)
struct SCIP_PricerData SCIP_PRICERDATA
Definition: type_pricer.h:36
int SCIPgetNDisps(SCIP *scip)
SCIP_VAR ** SCIPgetNLPVars(SCIP *scip)
SCIP_RETCODE SCIPsetEventhdlrInitsol(SCIP *scip, SCIP_EVENTHDLR *eventhdlr, SCIP_DECL_EVENTINITSOL((*eventinitsol)))
SCIP_RETCODE SCIPcopyOrigProb(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, const char *name)
SCIP_RETCODE SCIPfreeRepresentation(SCIP *scip, SCIP_REOPTNODE **representatives, int nrepresentatives)
int SCIPgetNBranchrules(SCIP *scip)
SCIP_RETCODE SCIPchgRowLhs(SCIP *scip, SCIP_ROW *row, SCIP_Real lhs)
#define SCIP_DECL_CONSHDLRCOPY(x)
Definition: type_cons.h:66
enum SCIP_Vartype SCIP_VARTYPE
Definition: type_var.h:58
struct SCIP_ConshdlrData SCIP_CONSHDLRDATA
Definition: type_cons.h:49
void SCIPstoreSolutionGap(SCIP *scip)
SCIP_RETCODE SCIPflushRowExtensions(SCIP *scip, SCIP_ROW *row)
SCIP_RETCODE SCIPgetVarsStrongbranchesInt(SCIP *scip, SCIP_VAR **vars, int nvars, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, SCIP_Bool *downinf, SCIP_Bool *upinf, SCIP_Bool *downconflict, SCIP_Bool *upconflict, SCIP_Bool *lperror)
SCIP_RETCODE SCIPwriteNLP(SCIP *scip, const char *filename)
enum Reopt_ConsType REOPT_CONSTYPE
Definition: type_reopt.h:64
SCIP_RETCODE SCIPcaptureNlRow(SCIP *scip, SCIP_NLROW *nlrow)
#define SCIP_DECL_PRICERFREE(x)
Definition: type_pricer.h:54
SCIP_CONS ** SCIPgetOrigConss(SCIP *scip)
SCIP_RETCODE SCIPgetVarClosestVub(SCIP *scip, SCIP_VAR *var, SCIP_SOL *sol, SCIP_Real *closestvub, int *closestvubidx)
SCIP_RETCODE SCIPbranchVarVal(SCIP *scip, SCIP_VAR *var, SCIP_Real val, SCIP_NODE **downchild, SCIP_NODE **eqchild, SCIP_NODE **upchild)
SCIP_RETCODE SCIPextendRealarray(SCIP *scip, SCIP_REALARRAY *realarray, int minidx, int maxidx)
SCIP_RETCODE SCIPcreateWallClock(SCIP *scip, SCIP_CLOCK **clck)
SCIP_RETCODE SCIPincludeSepaBasic(SCIP *scip, SCIP_SEPA **sepa, const char *name, const char *desc, int priority, int freq, SCIP_Real maxbounddist, SCIP_Bool usessubscip, SCIP_Bool delay, SCIP_DECL_SEPAEXECLP((*sepaexeclp)), SCIP_DECL_SEPAEXECSOL((*sepaexecsol)), SCIP_SEPADATA *sepadata)
SCIP_Real SCIPgetVarSol(SCIP *scip, SCIP_VAR *var)
SCIP_CONFLICTHDLR * SCIPfindConflicthdlr(SCIP *scip, const char *name)
void SCIPsetMessagehdlrLogfile(SCIP *scip, const char *filename)
SCIP_Real SCIPgetConflictVarUb(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPtightenVarUbGlobal(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
void SCIPmarkLimitChanged(SCIP *scip)
SCIP_Bool SCIPisReoptEnabled(SCIP *scip)
int SCIPgetBoolarrayMinIdx(SCIP *scip, SCIP_BOOLARRAY *boolarray)
SCIP_RETCODE SCIPincludeReader(SCIP *scip, const char *name, const char *desc, const char *extension, SCIP_DECL_READERCOPY((*readercopy)), SCIP_DECL_READERFREE((*readerfree)), SCIP_DECL_READERREAD((*readerread)), SCIP_DECL_READERWRITE((*readerwrite)), SCIP_READERDATA *readerdata)
int SCIPgetNTotalVars(SCIP *scip)
SCIP_Longint SCIPgetNPrimalLPIterations(SCIP *scip)
SCIP_Longint SCIPgetNRootFirstLPIterations(SCIP *scip)
SCIP_RETCODE SCIPbranchPseudo(SCIP *scip, SCIP_RESULT *result)
SCIP_Longint SCIPgetNPrimalLPs(SCIP *scip)
SCIP_RETCODE SCIPgetReopSolsRun(SCIP *scip, int run, SCIP_SOL **sols, int allocmem, int *nsols)
SCIP_RETCODE SCIPresetConsAge(SCIP *scip, SCIP_CONS *cons)
#define SCIP_DECL_RELAXEXITSOL(x)
Definition: type_relax.h:93
SCIP_Bool SCIPisSumRelEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIPgetAvgInferenceScoreCurrentRun(SCIP *scip)
SCIP_Bool SCIPisSumRelGE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIPfeasFrac(SCIP *scip, SCIP_Real val)
public methods for separators
SCIP_RETCODE SCIPsetHeurCopy(SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEURCOPY((*heurcopy)))
#define SCIP_DECL_CONSCOPY(x)
Definition: type_cons.h:723
public methods for primal heuristics
SCIP_RETCODE SCIPendDive(SCIP *scip)
SCIP_Real SCIPsumepsilon(SCIP *scip)
SCIP_RETCODE SCIPfreeSol(SCIP *scip, SCIP_SOL **sol)
common defines and data types used in all packages of SCIP
SCIP_RETCODE SCIPsolve(SCIP *scip)
SCIP_Real SCIPgetVarAvgInferencesCurrentRun(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
#define SCIP_DECL_DISPOUTPUT(x)
Definition: type_disp.h:117
SCIP_Real SCIPgetRowMinCoef(SCIP *scip, SCIP_ROW *row)
SCIP_RETCODE SCIPincRealarrayVal(SCIP *scip, SCIP_REALARRAY *realarray, int idx, SCIP_Real incval)
SCIP_VAR * SCIPfindVar(SCIP *scip, const char *name)
SCIP_RETCODE SCIPaddVarVub(SCIP *scip, SCIP_VAR *var, SCIP_VAR *vubvar, SCIP_Real vubcoef, SCIP_Real vubconstant, SCIP_Bool *infeasible, int *nbdchgs)
SCIP_RETCODE SCIPgetRealParam(SCIP *scip, const char *name, SCIP_Real *value)
SCIP_RETCODE SCIPchgVarLbLazy(SCIP *scip, SCIP_VAR *var, SCIP_Real lazylb)
#define SCIP_DECL_CONFLICTFREE(x)
Definition: type_conflict.h:60
SCIP_RETCODE SCIPsetHeurInitsol(SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEURINITSOL((*heurinitsol)))
SCIP_RETCODE SCIPcreateRealarray(SCIP *scip, SCIP_REALARRAY **realarray)
SCIP_Real SCIPgetNodeDualbound(SCIP *scip, SCIP_NODE *node)
struct SCIP_Branchrule SCIP_BRANCHRULE
Definition: type_branch.h:42
int SCIPgetNLPBranchCands(SCIP *scip)
SCIP_RETCODE SCIPcheckCharParam(SCIP *scip, SCIP_PARAM *param, const char value)
SCIP_RETCODE SCIPsetObjlimit(SCIP *scip, SCIP_Real objlimit)
SCIP_RETCODE SCIPgetReoptLeaveIDs(SCIP *scip, SCIP_NODE *node, unsigned int *ids, int mem, int *nids)
SCIP_RETCODE SCIPreleaseRow(SCIP *scip, SCIP_ROW **row)
type definitions for node selectors
SCIP_RETCODE SCIPsetPropExitsol(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPEXITSOL((*propexitsol)))
int SCIPgetIntarrayMaxIdx(SCIP *scip, SCIP_INTARRAY *intarray)
SCIP_RETCODE SCIPdropEvent(SCIP *scip, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)
SCIP_Real SCIPgetLocalOrigEstimate(SCIP *scip)
SCIP_RETCODE SCIPaddVarObj(SCIP *scip, SCIP_VAR *var, SCIP_Real addobj)
int SCIPgetNFixedVars(SCIP *scip)
SCIP_RETCODE SCIPcreateRow(SCIP *scip, SCIP_ROW **row, const char *name, int len, SCIP_COL **cols, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
SCIP_RETCODE SCIPaddConflictRelaxedUb(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Real relaxedub)
SCIP_RETCODE SCIPcreateClock(SCIP *scip, SCIP_CLOCK **clck)
SCIP_RETCODE SCIPcaptureDialog(SCIP *scip, SCIP_DIALOG *dialog)
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)
SCIP_RETCODE SCIPseparateSolCutpool(SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_SOL *sol, SCIP_RESULT *result)
SCIP_RETCODE SCIPgetLPBranchCands(SCIP *scip, SCIP_VAR ***lpcands, SCIP_Real **lpcandssol, SCIP_Real **lpcandsfrac, int *nlpcands, int *npriolpcands, int *nfracimplvars)
#define SCIP_DECL_PRICERREDCOST(x)
Definition: type_pricer.h:130
SCIP_Real SCIPgetAvgLowerbound(SCIP *scip)
SCIP_RETCODE SCIPsetComprInitsol(SCIP *scip, SCIP_COMPR *compr, SCIP_DECL_COMPRINITSOL((*comprinitsol)))
SCIP_RETCODE SCIPevalExprtreeSol(SCIP *scip, SCIP_EXPRTREE *tree, SCIP_SOL *sol, SCIP_Real *val)
#define SCIP_DECL_HEUREXITSOL(x)
Definition: type_heur.h:106
void SCIPfreeParseVarsPolynomialData(SCIP *scip, SCIP_VAR ****monomialvars, SCIP_Real ***monomialexps, SCIP_Real **monomialcoefs, int **monomialnvars, int nmonomials)
#define SCIP_DECL_NODESELSELECT(x)
Definition: type_nodesel.h:109
int SCIPgetNOrigContVars(SCIP *scip)
SCIP_RETCODE SCIPprintDisplayLine(SCIP *scip, FILE *file, SCIP_VERBLEVEL verblevel, SCIP_Bool endline)
SCIP_Real SCIPgetVarAvgInferenceScore(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPcreateRelaxSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
SCIP_RETCODE SCIPsetEventhdlrCopy(SCIP *scip, SCIP_EVENTHDLR *eventhdlr, SCIP_DECL_EVENTCOPY((*eventcopy)))
struct SCIP_Node SCIP_NODE
Definition: type_tree.h:54
SCIP_RELAX ** SCIPgetRelaxs(SCIP *scip)
SCIP_RETCODE SCIPsetConshdlrExit(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSEXIT((*consexit)))
SCIP_RETCODE SCIPstartDiveNLP(SCIP *scip)
SCIP_RETCODE SCIPincludeComprBasic(SCIP *scip, SCIP_COMPR **compr, const char *name, const char *desc, int priority, int minnnodes, SCIP_DECL_COMPREXEC((*comprexec)), SCIP_COMPRDATA *comprdata)
SCIP_RETCODE SCIPsetConsInitial(SCIP *scip, SCIP_CONS *cons, SCIP_Bool initial)
SCIP_RETCODE SCIPsetConflicthdlrExitsol(SCIP *scip, SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTEXITSOL((*conflictexitsol)))
SCIP_Real SCIPcalcChildEstimate(SCIP *scip, SCIP_VAR *var, SCIP_Real targetvalue)
int SCIPgetBoolarrayMaxIdx(SCIP *scip, SCIP_BOOLARRAY *boolarray)
SCIP_RETCODE SCIPsetPropPriority(SCIP *scip, SCIP_PROP *prop, int priority)
SCIP_RETCODE SCIPaddRealParam(SCIP *scip, const char *name, const char *desc, SCIP_Real *valueptr, SCIP_Bool isadvanced, SCIP_Real defaultvalue, SCIP_Real minvalue, SCIP_Real maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
public methods for user interface dialog
#define SCIP_DECL_BRANCHEXIT(x)
Definition: type_branch.h:76
SCIP_RETCODE SCIPchgRowLhsDive(SCIP *scip, SCIP_ROW *row, SCIP_Real newlhs)
SCIP_Real SCIPfeasFloor(SCIP *scip, SCIP_Real val)
SCIP_RETCODE SCIPsetConsModifiable(SCIP *scip, SCIP_CONS *cons, SCIP_Bool modifiable)
SCIP_Real SCIPgetRowActivity(SCIP *scip, SCIP_ROW *row)
SCIP_RETCODE SCIPchgCharParam(SCIP *scip, SCIP_PARAM *param, char value)
SCIP_RETCODE SCIPmarkRelaxSolInvalid(SCIP *scip)
SCIP_Real SCIPgetObjNorm(SCIP *scip)
SCIP_RETCODE SCIPaddVarToRow(SCIP *scip, SCIP_ROW *row, SCIP_VAR *var, SCIP_Real val)
SCIP_RETCODE SCIPsetNodeselMemsavePriority(SCIP *scip, SCIP_NODESEL *nodesel, int priority)
int SCIPgetSolRunnum(SCIP *scip, SCIP_SOL *sol)
SCIP_RETCODE SCIPgetExternBranchCands(SCIP *scip, SCIP_VAR ***externcands, SCIP_Real **externcandssol, SCIP_Real **externcandsscore, int *nexterncands, int *nprioexterncands, int *nprioexternbins, int *nprioexternints, int *nprioexternimpls)
SCIP_RETCODE SCIPcheckLongintParam(SCIP *scip, SCIP_PARAM *param, SCIP_Longint value)
SCIP_RETCODE SCIPsetPresolCopy(SCIP *scip, SCIP_PRESOL *presol, SCIP_DECL_PRESOLCOPY((*presolcopy)))
SCIP_Real SCIPdualfeasFrac(SCIP *scip, SCIP_Real val)
SCIP_RETCODE SCIPaddVar(SCIP *scip, SCIP_VAR *var)
int SCIPgetRealarrayMinIdx(SCIP *scip, SCIP_REALARRAY *realarray)
#define SCIP_DECL_SEPAFREE(x)
Definition: type_sepa.h:55
int SCIPgetNChildren(SCIP *scip)
SCIP_Bool SCIPisLPSolBasic(SCIP *scip)
SCIP_Real SCIPgetVarPseudocost(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPgetNlRowFeasibility(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real *feasibility)
struct SCIP_SepaData SCIP_SEPADATA
Definition: type_sepa.h:38
SCIP_Bool SCIPisDualfeasGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPaddDelayedPoolCut(SCIP *scip, SCIP_ROW *row)
SCIP_Real SCIPgetAvgPseudocostCount(SCIP *scip, SCIP_BRANCHDIR dir)
SCIP_Real SCIPgetVarPseudocostVariance(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir, SCIP_Bool onlycurrentrun)
SCIP_RETCODE SCIPfixVar(SCIP *scip, SCIP_VAR *var, SCIP_Real fixedval, SCIP_Bool *infeasible, SCIP_Bool *fixed)
SCIP_Longint SCIPgetNConflictConssApplied(SCIP *scip)
SCIP_RETCODE SCIPsetProbTrans(SCIP *scip, SCIP_DECL_PROBTRANS((*probtrans)))
type definitions for constraints and constraint handlers
SCIP_HEUR ** SCIPgetHeurs(SCIP *scip)
SCIP_Real SCIPgetLPLooseObjval(SCIP *scip)
#define SCIP_DECL_READERFREE(x)
Definition: type_reader.h:55
SCIP_RETCODE SCIPlockVarCons(SCIP *scip, SCIP_VAR *var, SCIP_CONS *cons, SCIP_Bool lockdown, SCIP_Bool lockup)
public methods for propagators
SCIP_RETCODE SCIPsetConshdlrResprop(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSRESPROP((*consresprop)))
SCIP_Bool SCIPisConflictAnalysisApplicable(SCIP *scip)
SCIP_Real SCIPcomputeVarLbLocal(SCIP *scip, SCIP_VAR *var)
#define SCIP_DECL_PROPINIT(x)
Definition: type_prop.h:63
SCIP_RETCODE SCIPinferBinvarProp(SCIP *scip, SCIP_VAR *var, SCIP_Bool fixedval, SCIP_PROP *inferprop, int inferinfo, SCIP_Bool *infeasible, SCIP_Bool *tightened)
SCIP_Bool SCIPisFeasFracIntegral(SCIP *scip, SCIP_Real val)
int SCIPgetNImplications(SCIP *scip)
SCIP_REOPTNODE * SCIPgetReoptnode(SCIP *scip, unsigned int id)
SCIP_RETCODE SCIPaddSolFree(SCIP *scip, SCIP_SOL **sol, SCIP_Bool *stored)
SCIP_RETCODE SCIPwriteVarName(SCIP *scip, FILE *file, SCIP_VAR *var, SCIP_Bool type)
type definitions for specific NLP solver interfaces
SCIP_RETCODE SCIPaddDiveBoundChange(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir, SCIP_Real value, SCIP_Bool preferred)
SCIP_Bool SCIPinDive(SCIP *scip)
SCIP_RETCODE SCIPsetIntarrayVal(SCIP *scip, SCIP_INTARRAY *intarray, int idx, int val)
#define SCIP_DECL_CONFLICTEXITSOL(x)
Definition: type_conflict.h:98
SCIP_RETCODE SCIPsplitReoptRoot(SCIP *scip, int *ncreatedchilds, int *naddedconss)
SCIP_RETCODE SCIPsetBranchruleMaxbounddist(SCIP *scip, SCIP_BRANCHRULE *branchrule, SCIP_Real maxbounddist)
SCIP_Bool SCIPhasNLPContinuousNonlinearity(SCIP *scip)
SCIP_Real SCIPgetRealarrayVal(SCIP *scip, SCIP_REALARRAY *realarray, int idx)
SCIP_RETCODE SCIPsetSolVals(SCIP *scip, SCIP_SOL *sol, int nvars, SCIP_VAR **vars, SCIP_Real *vals)
SCIP_RETCODE SCIPsetConshdlrGetVars(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETVARS((*consgetvars)))
type definitions for displaying runtime statistics
SCIP_Bool SCIPreoptimizeNode(SCIP *scip, SCIP_NODE *node)
SCIP_RETCODE SCIPwriteLP(SCIP *scip, const char *filename)
SCIP_RETCODE SCIPsetRelaxSolValsSol(SCIP *scip, SCIP_SOL *sol)