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-2014 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_history.h"
58 #include "scip/type_nodesel.h"
59 #include "scip/type_presol.h"
60 #include "scip/type_pricer.h"
61 #include "scip/type_reader.h"
62 #include "scip/type_relax.h"
63 #include "scip/type_sepa.h"
64 #include "scip/type_prop.h"
65 #include "nlpi/type_nlpi.h"
66 
67 /* include public interfaces, s.t. the user only needs to include scip.h */
68 #include "scip/pub_branch.h"
69 #include "scip/pub_conflict.h"
70 #include "scip/pub_cons.h"
71 #include "scip/pub_cutpool.h"
72 #include "scip/pub_dialog.h"
73 #include "scip/pub_disp.h"
74 #include "scip/pub_event.h"
75 #include "scip/pub_fileio.h"
76 #include "scip/pub_heur.h"
77 #include "scip/pub_history.h"
78 #include "scip/pub_implics.h"
79 #include "scip/pub_lp.h"
80 #include "scip/pub_nlp.h"
81 #include "scip/pub_message.h"
82 #include "scip/pub_misc.h"
83 #include "scip/pub_nodesel.h"
84 #include "scip/pub_paramset.h"
85 #include "scip/pub_presol.h"
86 #include "scip/pub_pricer.h"
87 #include "scip/pub_reader.h"
88 #include "scip/pub_relax.h"
89 #include "scip/pub_sepa.h"
90 #include "scip/pub_prop.h"
91 #include "scip/pub_sol.h"
92 #include "scip/pub_tree.h"
93 #include "scip/pub_var.h"
94 #include "lpi/lpi.h"
95 #include "nlpi/pub_expr.h"
96 
97 /* include global presolving methods */
98 #include "scip/presolve.h"
99 
100 /* In debug mode, we include the SCIP's structure in scip.c, such that no one can access
101  * this structure except the interface methods in scip.c.
102  * In optimized mode, the structure is included in scip.h, because some of the methods
103  * are implemented as defines for performance reasons (e.g. the numerical comparisons).
104  * Additionally, the internal "set.h" is included, such that the defines in set.h are
105  * available in optimized mode.
106  */
107 #ifdef NDEBUG
108 #include "scip/struct_scip.h"
109 #include "scip/set.h"
110 #include "scip/tree.h"
111 #include "scip/misc.h"
112 #include "scip/var.h"
113 #endif
114 
115 #ifdef __cplusplus
116 extern "C" {
117 #endif
118 
119 /*
120  * miscellaneous methods
121  */
122 
123 /**@name Miscellaneous Methods */
124 /**@{ */
125 
126 /** returns complete SCIP version number in the format "major . minor tech"
127  *
128  * @return complete SCIP version
129  */
130 extern
132  void
133  );
134 
135 /** returns SCIP major version
136  *
137  * @return major SCIP version
138  */
139 extern
140 int SCIPmajorVersion(
141  void
142  );
143 
144 /** returns SCIP minor version
145  *
146  * @return minor SCIP version
147  */
148 extern
149 int SCIPminorVersion(
150  void
151  );
152 
153 /** returns SCIP technical version
154  *
155  * @return technical SCIP version
156  */
157 extern
158 int SCIPtechVersion(
159  void
160  );
161 
162 /** returns SCIP sub version number
163  *
164  * @return subversion SCIP version
165  */
166 extern
167 int SCIPsubversion(
168  void
169  );
170 
171 /** prints a version information line to a file stream via the message handler system
172  *
173  * @note If the message handler is set to a NULL pointer nothing will be printed
174  */
175 extern
176 void SCIPprintVersion(
177  SCIP* scip, /**< SCIP data structure */
178  FILE* file /**< output file (or NULL for standard output) */
179  );
180 
181 /** prints error message for the given SCIP_RETCODE via the error prints method */
182 extern
183 void SCIPprintError(
184  SCIP_RETCODE retcode /**< SCIP return code causing the error */
185  );
186 
187 /** update statistical information when a new solution was found */
188 extern
190  SCIP* scip /**< SCIP data structure */
191  );
192 
193 /**@} */
194 
195 
196 
197 
198 /*
199  * general SCIP methods
200  */
201 
202 /**@name General SCIP Methods */
203 /**@{ */
204 
205 /** creates and initializes SCIP data structures
206  *
207  * @note The SCIP default message handler is installed. Use the method SCIPsetMessagehdlr() to install your own
208  * message handler or SCIPsetMessagehdlrLogfile() and SCIPsetMessagehdlrQuiet() to write into a log
209  * file and turn off/on the display output, respectively.
210  *
211  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
212  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
213  *
214  * @post After calling this method @p scip reached the solving stage \ref SCIP_STAGE_INIT
215  *
216  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
217  */
218 extern
220  SCIP** scip /**< pointer to SCIP data structure */
221  );
222 
223 /** frees SCIP data structures
224  *
225  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
226  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
227  *
228  * @pre This method can be called if @p scip is in one of the following stages:
229  * - \ref SCIP_STAGE_INIT
230  * - \ref SCIP_STAGE_PROBLEM
231  * - \ref SCIP_STAGE_TRANSFORMED
232  * - \ref SCIP_STAGE_INITPRESOLVE
233  * - \ref SCIP_STAGE_PRESOLVING
234  * - \ref SCIP_STAGE_PRESOLVED
235  * - \ref SCIP_STAGE_EXITPRESOLVE
236  * - \ref SCIP_STAGE_SOLVING
237  * - \ref SCIP_STAGE_SOLVED
238  * - \ref SCIP_STAGE_FREE
239  *
240  * @post After calling this method \SCIP reached the solving stage \ref SCIP_STAGE_FREE
241  *
242  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
243  */
244 extern
246  SCIP** scip /**< pointer to SCIP data structure */
247  );
248 
249 /** returns current stage of SCIP
250  *
251  * @return the current SCIP stage
252  *
253  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
254  */
255 extern
257  SCIP* scip /**< SCIP data structure */
258  );
259 
260 /** outputs SCIP stage and solution status if applicable via the message handler
261  *
262  * @note If the message handler is set to a NULL pointer nothing will be printed
263  *
264  * @note If limits have been changed between the solution and the call to this function, the status is recomputed and
265  * thus may to correspond to the original status.
266  *
267  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
268  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
269  *
270  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
271  */
272 extern
274  SCIP* scip, /**< SCIP data structure */
275  FILE* file /**< output file (or NULL for standard output) */
276  );
277 
278 /** gets solution status
279  *
280  * @return SCIP solution status
281  *
282  * See \ref SCIP_Status "SCIP_STATUS" for a complete list of all possible solving status.
283  */
284 extern
286  SCIP* scip /**< SCIP data structure */
287  );
288 
289 /** outputs solution status
290  *
291  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
292  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
293  *
294  * See \ref SCIP_Status "SCIP_STATUS" for a complete list of all possible solving status.
295  */
296 extern
298  SCIP* scip, /**< SCIP data structure */
299  FILE* file /**< output file (or NULL for standard output) */
300  );
301 
302 /** returns whether the current stage belongs to the transformed problem space
303  *
304  * @return Returns TRUE if the \SCIP instance is transformed, otherwise FALSE
305  */
306 extern
308  SCIP* scip /**< SCIP data structure */
309  );
310 
311 /** returns whether the solution process should be probably correct
312  *
313  * @note This feature is not supported yet!
314  *
315  * @return Returns TRUE if \SCIP is exact solving mode, otherwise FALSE
316  */
317 extern
319  SCIP* scip /**< SCIP data structure */
320  );
321 
322 /** returns whether the presolving process would be finished given no more presolving reductions are found in this
323  * presolving round
324  *
325  * Checks whether the number of presolving rounds is not exceeded and the presolving reductions found in the current
326  * presolving round suffice to trigger another presolving round.
327  *
328  * @note if subsequent presolvers find more reductions, presolving might continue even if the method returns FALSE
329  * @note does not check whether infeasibility or unboundedness was already detected in presolving (which would result
330  * in presolving being stopped although the method returns TRUE)
331  *
332  * @return Returns TRUE if presolving is finished if no further reductions are detected
333  */
334 extern
336  SCIP* scip /**< SCIP data structure */
337  );
338 
339 /** returns whether SCIP has performed presolving during the last solve
340  *
341  * @return Returns TRUE if presolving was performed during the last solve
342  */
343 extern
345  SCIP* scip /**< SCIP data structure */
346  );
347 
348 /** returns whether the user pressed CTRL-C to interrupt the solving process
349  *
350  * @return Returns TRUE if Ctrl-C was pressed, otherwise FALSE.
351  */
352 extern
354  SCIP* scip /**< SCIP data structure */
355  );
356 
357 /** returns whether the solving process should be / was stopped before proving optimality;
358  * if the solving process should be / was stopped, the status returned by SCIPgetStatus() yields
359  * the reason for the premature abort
360  *
361  * @return Returns TRUE if solving process is stopped/interrupted, otherwise FALSE.
362  */
363 extern
365  SCIP* scip /**< SCIP data structure */
366  );
367 
368 
369 /**@} */
370 
371 
372 
373 /*
374  * message output methods
375  */
376 
377 /**@name Message Output Methods */
378 /**@{ */
379 
380 /** installs the given message handler, such that all messages are passed to this handler. A messages handler can be
381  * created via SCIPmessagehdlrCreate().
382  *
383  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
384  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
385  *
386  * @pre this method can be called in one of the following stages of the SCIP solving process:
387  * - \ref SCIP_STAGE_INIT
388  * - \ref SCIP_STAGE_PROBLEM
389  *
390  * @note The currently installed messages handler gets freed if this SCIP instance is its last user (w.r.t. capture/release).
391  */
392 extern
394  SCIP* scip, /**< SCIP data structure */
395  SCIP_MESSAGEHDLR* messagehdlr /**< message handler to install, or NULL to suppress all output */
396  );
397 
398 /** returns the currently installed message handler
399  *
400  * @return the currently installed message handler, or NULL if messages are currently suppressed
401  */
402 extern
404  SCIP* scip /**< SCIP data structure */
405  );
406 
407 /** sets the log file name for the currently installed message handler */
408 extern
410  SCIP* scip, /**< SCIP data structure */
411  const char* filename /**< name of log file, or NULL (no log) */
412  );
413 
414 /** sets the currently installed message handler to be quiet (or not) */
415 extern
417  SCIP* scip, /**< SCIP data structure */
418  SCIP_Bool quiet /**< should screen messages be suppressed? */
419  );
420 
421 /** prints a warning message via the message handler */
422 extern
423 void SCIPwarningMessage(
424  SCIP* scip, /**< SCIP data structure */
425  const char* formatstr, /**< format string like in printf() function */
426  ... /**< format arguments line in printf() function */
427  );
428 
429 /** prints a dialog message that requests user interaction or is a direct response to a user interactive command */
430 extern
431 void SCIPdialogMessage(
432  SCIP* scip, /**< SCIP data structure */
433  FILE* file, /**< file stream to print into, or NULL for stdout */
434  const char* formatstr, /**< format string like in printf() function */
435  ... /**< format arguments line in printf() function */
436  );
437 
438 /** prints a message */
439 extern
440 void SCIPinfoMessage(
441  SCIP* scip, /**< SCIP data structure */
442  FILE* file, /**< file stream to print into, or NULL for stdout */
443  const char* formatstr, /**< format string like in printf() function */
444  ... /**< format arguments line in printf() function */
445  );
446 
447 /** prints a message depending on the verbosity level */
448 extern
449 void SCIPverbMessage(
450  SCIP* scip, /**< SCIP data structure */
451  SCIP_VERBLEVEL msgverblevel, /**< verbosity level of this message */
452  FILE* file, /**< file stream to print into, or NULL for stdout */
453  const char* formatstr, /**< format string like in printf() function */
454  ... /**< format arguments line in printf() function */
455  );
456 
457 /** returns the current message verbosity level
458  *
459  * @return message verbosity level of SCIP
460  *
461  * @see \ref SCIP_VerbLevel "SCIP_VERBLEVEL" for a list of all verbosity levels
462  */
463 extern
465  SCIP* scip /**< SCIP data structure */
466  );
467 
468 
469 /**@} */
470 
471 
472 
473 
474 /*
475  * SCIP copy methods
476  */
477 
478 /**@name Copy Methods */
479 /**@{ */
480 
481 /** copies plugins from sourcescip to targetscip; in case that a constraint handler which does not need constraints
482  * cannot be copied, valid will return FALSE. All plugins can declare that, if their copy process failed, the
483  * copied SCIP instance might not represent the same problem semantics as the original.
484  * Note that in this case dual reductions might be invalid.
485  *
486  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
487  * Also, 'passmessagehdlr' should be set to FALSE.
488  * @note Do not change the source SCIP environment during the copying process
489  *
490  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
491  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
492  *
493  * @pre This method can be called if sourcescip is in one of the following stages:
494  * - \ref SCIP_STAGE_PROBLEM
495  * - \ref SCIP_STAGE_TRANSFORMED
496  * - \ref SCIP_STAGE_INITPRESOLVE
497  * - \ref SCIP_STAGE_PRESOLVING
498  * - \ref SCIP_STAGE_EXITPRESOLVE
499  * - \ref SCIP_STAGE_PRESOLVED
500  * - \ref SCIP_STAGE_INITSOLVE
501  * - \ref SCIP_STAGE_SOLVING
502  * - \ref SCIP_STAGE_SOLVED
503  *
504  * @pre This method can be called if targetscip is in one of the following stages:
505  * - \ref SCIP_STAGE_INIT
506  * - \ref SCIP_STAGE_FREE
507  *
508  * @post After calling this method targetscip reaches one of the following stages depending on if and when the solution
509  * process was interrupted:
510  * - \ref SCIP_STAGE_PROBLEM
511  *
512  * @note sourcescip stage does not get changed
513  *
514  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
515  */
516 extern
518  SCIP* sourcescip, /**< source SCIP data structure */
519  SCIP* targetscip, /**< target SCIP data structure */
520  SCIP_Bool copyreaders, /**< should the file readers be copied */
521  SCIP_Bool copypricers, /**< should the variable pricers be copied */
522  SCIP_Bool copyconshdlrs, /**< should the constraint handlers be copied */
523  SCIP_Bool copyconflicthdlrs, /**< should the conflict handlers be copied */
524  SCIP_Bool copypresolvers, /**< should the presolvers be copied */
525  SCIP_Bool copyrelaxators, /**< should the relaxation handler be copied */
526  SCIP_Bool copyseparators, /**< should the separators be copied */
527  SCIP_Bool copypropagators, /**< should the propagators be copied */
528  SCIP_Bool copyheuristics, /**< should the heuristics be copied */
529  SCIP_Bool copyeventhdlrs, /**< should the event handlers be copied */
530  SCIP_Bool copynodeselectors, /**< should the node selectors be copied */
531  SCIP_Bool copybranchrules, /**< should the branchrules be copied */
532  SCIP_Bool copydisplays, /**< should the display columns be copied */
533  SCIP_Bool copydialogs, /**< should the dialogs be copied */
534  SCIP_Bool copynlpis, /**< should the NLPIs be copied */
535  SCIP_Bool passmessagehdlr, /**< should the message handler be passed */
536  SCIP_Bool* valid /**< pointer to store whether plugins, in particular all constraint
537  * handlers which do not need constraints were validly copied */
538  );
539 
540 /** create a problem by copying the problem data of the source SCIP
541  *
542  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
543  * @note Do not change the source SCIP environment during the copying process
544  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
545  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
546  *
547  * @pre This method can be called if sourcescip is in one of the following stages:
548  * - \ref SCIP_STAGE_PROBLEM
549  * - \ref SCIP_STAGE_TRANSFORMED
550  * - \ref SCIP_STAGE_INITPRESOLVE
551  * - \ref SCIP_STAGE_PRESOLVING
552  * - \ref SCIP_STAGE_EXITPRESOLVE
553  * - \ref SCIP_STAGE_PRESOLVED
554  * - \ref SCIP_STAGE_INITSOLVE
555  * - \ref SCIP_STAGE_SOLVING
556  * - \ref SCIP_STAGE_SOLVED
557  *
558  * @pre This method can be called if targetscip is in one of the following stages:
559  * - \ref SCIP_STAGE_INIT
560  * - \ref SCIP_STAGE_FREE
561  *
562  * @post After calling this method targetscip reaches one of the following stages depending on if and when the solution
563  * process was interrupted:
564  * - \ref SCIP_STAGE_PROBLEM
565  *
566  * @note sourcescip stage does not get changed
567  *
568  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
569  */
570 extern
572  SCIP* sourcescip, /**< source SCIP data structure */
573  SCIP* targetscip, /**< target SCIP data structure */
574  SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
575  * target variables, or NULL */
576  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
577  * target constraints, or NULL */
578  SCIP_Bool global, /**< create a global or a local copy? */
579  const char* name /**< problem name */
580  );
581 
582 /** create a problem by copying the original problem data of the source SCIP
583  *
584  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
585  * @note Do not change the source SCIP environment during the copying process
586  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
587  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
588  *
589  * @pre This method can be called if sourcescip is in one of the following stages:
590  * - \ref SCIP_STAGE_PROBLEM
591  * - \ref SCIP_STAGE_TRANSFORMED
592  * - \ref SCIP_STAGE_INITPRESOLVE
593  * - \ref SCIP_STAGE_PRESOLVING
594  * - \ref SCIP_STAGE_EXITPRESOLVE
595  * - \ref SCIP_STAGE_PRESOLVED
596  * - \ref SCIP_STAGE_INITSOLVE
597  * - \ref SCIP_STAGE_SOLVING
598  * - \ref SCIP_STAGE_SOLVED
599  *
600  * @pre This method can be called if targetscip is in one of the following stages:
601  * - \ref SCIP_STAGE_INIT
602  * - \ref SCIP_STAGE_FREE
603  *
604  * @post After calling this method targetscip reaches one of the following stages depending on if and when the solution
605  * process was interrupted:
606  * - \ref SCIP_STAGE_PROBLEM
607  *
608  * @note sourcescip stage does not get changed
609  *
610  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
611  */
612 extern
614  SCIP* sourcescip, /**< source SCIP data structure */
615  SCIP* targetscip, /**< target SCIP data structure */
616  SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
617  * target variables, or NULL */
618  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
619  * target constraints, or NULL */
620  const char* name /**< problem name of target */
621  );
622 
623 /** returns copy of the source variable; if there already is a copy of the source variable in the variable hash map,
624  * it is just returned as target variable; elsewise a new variable will be created and added to the target SCIP; this
625  * created variable is added to the variable hash map and returned as target variable
626  *
627  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
628  * @note Do not change the source SCIP environment during the copying process
629  * @note if a new variable was created, this variable will be added to the target-SCIP, but it is not captured
630  *
631  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
632  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
633  *
634  * @pre This method can be called if sourcescip is in one of the following stages:
635  * - \ref SCIP_STAGE_PROBLEM
636  * - \ref SCIP_STAGE_TRANSFORMED
637  * - \ref SCIP_STAGE_INITPRESOLVE
638  * - \ref SCIP_STAGE_PRESOLVING
639  * - \ref SCIP_STAGE_EXITPRESOLVE
640  * - \ref SCIP_STAGE_PRESOLVED
641  * - \ref SCIP_STAGE_INITSOLVE
642  * - \ref SCIP_STAGE_SOLVING
643  * - \ref SCIP_STAGE_SOLVED
644  *
645  * @pre This method can be called if targetscip is in one of the following stages:
646  * - \ref SCIP_STAGE_PROBLEM
647  * - \ref SCIP_STAGE_TRANSFORMED
648  * - \ref SCIP_STAGE_INITPRESOLVE
649  * - \ref SCIP_STAGE_PRESOLVING
650  * - \ref SCIP_STAGE_EXITPRESOLVE
651  * - \ref SCIP_STAGE_SOLVING
652  *
653  * @note targetscip stage does not get changed
654  *
655  * @note sourcescip stage does not get changed
656  *
657  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
658  */
659 extern
661  SCIP* sourcescip, /**< source SCIP data structure */
662  SCIP* targetscip, /**< target SCIP data structure */
663  SCIP_VAR* sourcevar, /**< source variable */
664  SCIP_VAR** targetvar, /**< pointer to store the target variable */
665  SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables to the corresponding
666  * target variables, or NULL */
667  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
668  * target constraints, or NULL */
669  SCIP_Bool global, /**< should global or local bounds be used? */
670  SCIP_Bool* success /**< pointer to store whether the copying was successful or not */
671  );
672 
673 /** copies all active variables from source-SCIP and adds these variable to the target-SCIP; the mapping between these
674  * variables are stored in the variable hashmap, target-SCIP has to be in problem creation stage, fixed and aggregated
675  * variables do not get copied
676  *
677  * @note the variables are added to the target-SCIP but not captured
678  *
679  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
680  * @note Do not change the source SCIP environment during the copying process
681  *
682  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
683  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
684  *
685  * @pre This method can be called if sourcescip is in one of the following stages:
686  * - \ref SCIP_STAGE_PROBLEM
687  * - \ref SCIP_STAGE_TRANSFORMED
688  * - \ref SCIP_STAGE_INITPRESOLVE
689  * - \ref SCIP_STAGE_PRESOLVING
690  * - \ref SCIP_STAGE_EXITPRESOLVE
691  * - \ref SCIP_STAGE_PRESOLVED
692  * - \ref SCIP_STAGE_INITSOLVE
693  * - \ref SCIP_STAGE_SOLVING
694  * - \ref SCIP_STAGE_SOLVED
695  *
696  * @pre This method can be called if targetscip is in one of the following stages:
697  * - \ref SCIP_STAGE_PROBLEM
698  *
699  * @note sourcescip stage does not get changed
700  *
701  * @note targetscip stage does not get changed
702  *
703  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
704  */
705 extern
707  SCIP* sourcescip, /**< source SCIP data structure */
708  SCIP* targetscip, /**< target SCIP data structure */
709  SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables to the corresponding
710  * target variables, or NULL */
711  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
712  * target constraints, or NULL */
713  SCIP_Bool global /**< should global or local bounds be used? */
714  );
715 
716 /** copies all original variables from source-SCIP and adds these variable to the target-SCIP; the mapping between these
717  * variables are stored in the variable hashmap, target-SCIP has to be in problem creation stage, fixed and aggregated
718  * variables do not get copied
719  *
720  * @note the variables are added to the target-SCIP but not captured
721  *
722  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
723  * @note Do not change the source SCIP environment during the copying process
724  *
725  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
726  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
727  *
728  * @pre This method can be called if sourcescip is in one of the following stages:
729  * - \ref SCIP_STAGE_PROBLEM
730  * - \ref SCIP_STAGE_TRANSFORMED
731  * - \ref SCIP_STAGE_INITPRESOLVE
732  * - \ref SCIP_STAGE_PRESOLVING
733  * - \ref SCIP_STAGE_EXITPRESOLVE
734  * - \ref SCIP_STAGE_PRESOLVED
735  * - \ref SCIP_STAGE_INITSOLVE
736  * - \ref SCIP_STAGE_SOLVING
737  * - \ref SCIP_STAGE_SOLVED
738  *
739  * @pre This method can be called if targetscip is in one of the following stages:
740  * - \ref SCIP_STAGE_PROBLEM
741  *
742  * @note sourcescip stage does not get changed
743  *
744  * @note targetscip stage does not get changed
745  *
746  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
747  */
748 extern
750  SCIP* sourcescip, /**< source SCIP data structure */
751  SCIP* targetscip, /**< target SCIP data structure */
752  SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables to the corresponding
753  * target variables, or NULL */
754  SCIP_HASHMAP* consmap /**< a hashmap to store the mapping of source constraints to the corresponding
755  * target constraints, or NULL */
756  );
757 
758 /** returns copy of the source constraint; if there already is a copy of the source constraint in the constraint hash
759  * map, it is just returned as target constraint; elsewise a new constraint will be created; this created constraint is
760  * added to the constraint hash map and returned as target constraint; the variable map is used to map the variables of
761  * the source SCIP to the variables of the target SCIP
762  *
763  * @warning If a constraint is marked to be checked for feasibility but not to be enforced, a LP or pseudo solution may
764  * be declared feasible even if it violates this particular constraint. This constellation should only be
765  * used, if no LP or pseudo solution can violate the constraint -- e.g. if a local constraint is redundant due
766  * to the variable's local bounds.
767  *
768  * @note The constraint is not added to the target SCIP. You can check whether a constraint is added by calling
769  * SCIPconsIsAdded(). (If you mix SCIPgetConsCopy() with SCIPcopyConss() you should pay attention to what you add
770  * explicitly and what is already added.)
771  *
772  * @note The constraint is always captured, either during the creation of the copy or after finding the copy of the
773  * constraint in the constraint hash map
774  *
775  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
776  * @note Do not change the source SCIP environment during the copying process
777  *
778  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
779  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
780  *
781  * @pre This method can be called if sourcescip is in one of the following stages:
782  * - \ref SCIP_STAGE_PROBLEM
783  * - \ref SCIP_STAGE_TRANSFORMED
784  * - \ref SCIP_STAGE_INITPRESOLVE
785  * - \ref SCIP_STAGE_PRESOLVING
786  * - \ref SCIP_STAGE_EXITPRESOLVE
787  * - \ref SCIP_STAGE_PRESOLVED
788  * - \ref SCIP_STAGE_INITSOLVE
789  * - \ref SCIP_STAGE_SOLVING
790  * - \ref SCIP_STAGE_SOLVED
791  *
792  * @pre This method can be called if targetscip is in one of the following stages:
793  * - \ref SCIP_STAGE_PROBLEM
794  * - \ref SCIP_STAGE_TRANSFORMING
795  * - \ref SCIP_STAGE_INITPRESOLVE
796  * - \ref SCIP_STAGE_PRESOLVING
797  * - \ref SCIP_STAGE_EXITPRESOLVE
798  * - \ref SCIP_STAGE_PRESOLVED
799  * - \ref SCIP_STAGE_SOLVING
800  * - \ref SCIP_STAGE_EXITSOLVE
801  *
802  * @note sourcescip stage does not get changed
803  *
804  * @note targetscip stage does not get changed
805  *
806  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
807  */
808 extern
810  SCIP* sourcescip, /**< source SCIP data structure */
811  SCIP* targetscip, /**< target SCIP data structure */
812  SCIP_CONS* sourcecons, /**< source constraint of the source SCIP */
813  SCIP_CONS** targetcons, /**< pointer to store the created target constraint */
814  SCIP_CONSHDLR* sourceconshdlr, /**< source constraint handler for this constraint */
815  SCIP_HASHMAP* varmap, /**< a SCIP_HASHMAP mapping variables of the source SCIP to the corresponding
816  * variables of the target SCIP, or NULL */
817  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
818  * target constraints, or NULL */
819  const char* name, /**< name of constraint, or NULL if the name of the source constraint should be used */
820  SCIP_Bool initial, /**< should the LP relaxation of constraint be in the initial LP? */
821  SCIP_Bool separate, /**< should the constraint be separated during LP processing? */
822  SCIP_Bool enforce, /**< should the constraint be enforced during node processing? */
823  SCIP_Bool check, /**< should the constraint be checked for feasibility? */
824  SCIP_Bool propagate, /**< should the constraint be propagated during node processing? */
825  SCIP_Bool local, /**< is constraint only valid locally? */
826  SCIP_Bool modifiable, /**< is constraint modifiable (subject to column generation)? */
827  SCIP_Bool dynamic, /**< is constraint subject to aging? */
828  SCIP_Bool removable, /**< should the relaxation be removed from the LP due to aging or cleanup? */
829  SCIP_Bool stickingatnode, /**< should the constraint always be kept at the node where it was added, even
830  * if it may be moved to a more global node? */
831  SCIP_Bool global, /**< create a global or a local copy? */
832  SCIP_Bool* success /**< pointer to store whether the copying was successful or not */
833  );
834 
835 /** copies constraints from the source-SCIP and adds these to the target-SCIP; for mapping the
836  * variables between the source and the target SCIP a hash map can be given; if the variable hash
837  * map is NULL or necessary variable mapping is missing, the required variables are created in the
838  * target-SCIP and added to the hash map, if not NULL; all variables which are created are added to
839  * the target-SCIP but not (user) captured; if the constraint hash map is not NULL the mapping
840  * between the constraints of the source and target-SCIP is stored
841  *
842  * @note the constraints are added to the target-SCIP but are not (user) captured in the target SCIP. (If you mix
843  * SCIPgetConsCopy() with SCIPcopyConss() you should pay attention to what you add explicitly and what is already
844  * added.) You can check whether a constraint is added by calling SCIPconsIsAdded().
845  *
846  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
847  * @note Do not change the source SCIP environment during the copying process
848  *
849  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
850  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
851  *
852  * @pre This method can be called if sourcescip is in one of the following stages:
853  * - \ref SCIP_STAGE_PROBLEM
854  * - \ref SCIP_STAGE_TRANSFORMED
855  * - \ref SCIP_STAGE_INITPRESOLVE
856  * - \ref SCIP_STAGE_PRESOLVING
857  * - \ref SCIP_STAGE_EXITPRESOLVE
858  * - \ref SCIP_STAGE_PRESOLVED
859  * - \ref SCIP_STAGE_INITSOLVE
860  * - \ref SCIP_STAGE_SOLVING
861  * - \ref SCIP_STAGE_SOLVED
862  *
863  * @pre This method can be called if targetscip is in one of the following stages:
864  * - \ref SCIP_STAGE_PROBLEM
865  *
866  * @note sourcescip stage does not get changed
867  *
868  * @note targetscip stage does not get changed
869  *
870  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
871  */
872 extern
874  SCIP* sourcescip, /**< source SCIP data structure */
875  SCIP* targetscip, /**< target SCIP data structure */
876  SCIP_HASHMAP* varmap, /**< a SCIP_HASHMAP mapping variables of the source SCIP to the corresponding
877  * variables of the target SCIP, must not be NULL! */
878  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
879  * target constraints, or NULL */
880  SCIP_Bool global, /**< create a global or a local copy? */
881  SCIP_Bool enablepricing, /**< should pricing be enabled in copied SCIP instance?
882  * If TRUE, the modifiable flag of constraints will be copied. */
883  SCIP_Bool* valid /**< pointer to store whether all constraints were validly copied */
884  );
885 
886 /** copies all original constraints from the source-SCIP and adds these to the target-SCIP; for mapping the
887  * variables between the source and the target SCIP a hash map can be given; if the variable hash
888  * map is NULL or necessary variable mapping is missing, the required variables are created in the
889  * target-SCIP and added to the hash map, if not NULL; all variables which are created are added to
890  * the target-SCIP but not (user) captured; if the constraint hash map is not NULL the mapping
891  * between the constraints of the source and target-SCIP is stored
892  *
893  * @note the constraints are added to the target-SCIP but are not (user) captured in the target SCIP. (If you mix
894  * SCIPgetConsCopy() with SCIPcopyConss() you should pay attention to what you add explicitly and what is already
895  * added.) You can check whether a constraint is added by calling SCIPconsIsAdded().
896  *
897  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
898  * @note Do not change the source SCIP environment during the copying process
899  *
900  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
901  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
902  *
903  * @pre This method can be called if sourcescip is in one of the following stages:
904  * - \ref SCIP_STAGE_PROBLEM
905  * - \ref SCIP_STAGE_TRANSFORMED
906  * - \ref SCIP_STAGE_INITPRESOLVE
907  * - \ref SCIP_STAGE_PRESOLVING
908  * - \ref SCIP_STAGE_EXITPRESOLVE
909  * - \ref SCIP_STAGE_PRESOLVED
910  * - \ref SCIP_STAGE_INITSOLVE
911  * - \ref SCIP_STAGE_SOLVING
912  * - \ref SCIP_STAGE_SOLVED
913  *
914  * @pre This method can be called if targetscip is in one of the following stages:
915  * - \ref SCIP_STAGE_PROBLEM
916  *
917  * @note sourcescip stage does not get changed
918  *
919  * @note targetscip stage does not get changed
920  *
921  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
922  */
923 extern
925  SCIP* sourcescip, /**< source SCIP data structure */
926  SCIP* targetscip, /**< target SCIP data structure */
927  SCIP_HASHMAP* varmap, /**< a SCIP_HASHMAP mapping variables of the source SCIP to the corresponding
928  * variables of the target SCIP, or NULL */
929  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
930  * target constraints, or NULL */
931  SCIP_Bool enablepricing, /**< should pricing be enabled in copied SCIP instance?
932  * If TRUE, the modifiable flag of constraints will be copied. */
933  SCIP_Bool* valid /**< pointer to store whether all constraints were validly copied */
934  );
935 
936 /** convert all active cuts from cutpool to linear constraints
937  *
938  * @note Do not change the source SCIP environment during the copying process
939  *
940  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
941  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
942  *
943  * @pre This method can be called if SCIP is in one of the following stages:
944  * - \ref SCIP_STAGE_PROBLEM
945  * - \ref SCIP_STAGE_INITPRESOLVE
946  * - \ref SCIP_STAGE_PRESOLVING
947  * - \ref SCIP_STAGE_EXITPRESOLVE
948  * - \ref SCIP_STAGE_PRESOLVED
949  * - \ref SCIP_STAGE_SOLVING
950  * - \ref SCIP_STAGE_EXITSOLVE
951  *
952  * @note SCIP stage does not get changed
953  *
954  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
955  */
956 extern
958  SCIP* scip, /**< SCIP data structure */
959  SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
960  * target variables, or NULL */
961  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
962  * target constraints, or NULL */
963  SCIP_Bool global, /**< create a global or a local copy? */
964  int* ncutsadded /**< pointer to store number of added cuts, or NULL */
965  );
966 
967 /** copies all active cuts from cutpool of sourcescip to linear constraints in targetscip
968  *
969  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
970  * @note Do not change the source SCIP environment during the copying process
971  *
972  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
973  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
974  *
975  * @pre This method can be called if sourcescip is in one of the following stages:
976  * - \ref SCIP_STAGE_PROBLEM
977  * - \ref SCIP_STAGE_TRANSFORMED
978  * - \ref SCIP_STAGE_INITPRESOLVE
979  * - \ref SCIP_STAGE_PRESOLVING
980  * - \ref SCIP_STAGE_EXITPRESOLVE
981  * - \ref SCIP_STAGE_PRESOLVED
982  * - \ref SCIP_STAGE_SOLVING
983  * - \ref SCIP_STAGE_SOLVED
984  * - \ref SCIP_STAGE_EXITSOLVE
985  *
986  * @pre This method can be called if targetscip is in one of the following stages:
987  * - \ref SCIP_STAGE_PROBLEM
988  * - \ref SCIP_STAGE_INITPRESOLVE
989  * - \ref SCIP_STAGE_PRESOLVING
990  * - \ref SCIP_STAGE_EXITPRESOLVE
991  * - \ref SCIP_STAGE_PRESOLVED
992  * - \ref SCIP_STAGE_SOLVING
993  * - \ref SCIP_STAGE_EXITSOLVE
994  *
995  * @note sourcescip stage does not get changed
996  *
997  * @note targetscip stage does not get changed
998  *
999  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
1000  */
1001 extern
1003  SCIP* sourcescip, /**< source SCIP data structure */
1004  SCIP* targetscip, /**< target SCIP data structure */
1005  SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
1006  * target variables, or NULL */
1007  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
1008  * target constraints, or NULL */
1009  SCIP_Bool global, /**< create a global or a local copy? */
1010  int* ncutsadded /**< pointer to store number of copied cuts, or NULL */
1011  );
1012 
1013 /** copies implications and cliques of sourcescip to targetscip
1014  *
1015  * This function should be called for a targetscip in transformed stage. It can save time in presolving of the
1016  * targetscip, since implications and cliques are copied.
1017  *
1018  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
1019  * @note Do not change the source SCIP environment during the copying process
1020  *
1021  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1022  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1023  *
1024  * @pre This method can be called if sourcescip is in one of the following stages:
1025  * - \ref SCIP_STAGE_TRANSFORMED
1026  * - \ref SCIP_STAGE_INITPRESOLVE
1027  * - \ref SCIP_STAGE_PRESOLVING
1028  * - \ref SCIP_STAGE_EXITPRESOLVE
1029  * - \ref SCIP_STAGE_PRESOLVED
1030  * - \ref SCIP_STAGE_SOLVING
1031  * - \ref SCIP_STAGE_SOLVED
1032  * - \ref SCIP_STAGE_EXITSOLVE
1033  *
1034  * @pre This method can be called if targetscip is in one of the following stages:
1035  * - \ref SCIP_STAGE_TRANSFORMED
1036  * - \ref SCIP_STAGE_INITPRESOLVE
1037  * - \ref SCIP_STAGE_PRESOLVING
1038  * - \ref SCIP_STAGE_EXITPRESOLVE
1039  * - \ref SCIP_STAGE_PRESOLVED
1040  * - \ref SCIP_STAGE_INITSOLVE
1041  * - \ref SCIP_STAGE_SOLVING
1042  *
1043  * @note sourcescip stage does not get changed
1044  *
1045  * @note targetscip stage does not get changed
1046  *
1047  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
1048  */
1049 extern
1051  SCIP* sourcescip, /**< source SCIP data structure */
1052  SCIP* targetscip, /**< target SCIP data structure */
1053  SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
1054  * target variables, or NULL */
1055  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
1056  * target constraints, or NULL */
1057  SCIP_Bool global, /**< create a global or a local copy? */
1058  SCIP_Bool* infeasible, /**< pointer to store whether an infeasibility was detected */
1059  int* nbdchgs, /**< pointer to store the number of performed bound changes, or NULL */
1060  int* ncopied /**< pointer to store number of copied implications and cliques, or NULL */
1061  );
1062 
1063 /** copies parameter settings from sourcescip to targetscip
1064  *
1065  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
1066  * @note Do not change the source SCIP environment during the copying process
1067  *
1068  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1069  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1070  *
1071  * @pre This method can be called if sourcescip is in one of the following stages:
1072  * - \ref SCIP_STAGE_PROBLEM
1073  * - \ref SCIP_STAGE_TRANSFORMED
1074  * - \ref SCIP_STAGE_INITPRESOLVE
1075  * - \ref SCIP_STAGE_PRESOLVING
1076  * - \ref SCIP_STAGE_EXITPRESOLVE
1077  * - \ref SCIP_STAGE_PRESOLVED
1078  * - \ref SCIP_STAGE_INITSOLVE
1079  * - \ref SCIP_STAGE_SOLVING
1080  * - \ref SCIP_STAGE_SOLVED
1081  *
1082  * @pre This method can be called if targetscip is in one of the following stages:
1083  * - \ref SCIP_STAGE_INIT
1084  * - \ref SCIP_STAGE_PROBLEM
1085  * - \ref SCIP_STAGE_FREE
1086  *
1087  * @note sourcescip stage does not get changed
1088  *
1089  * @note targetscip stage does not get changed
1090  *
1091  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
1092  */
1093 extern
1095  SCIP* sourcescip, /**< source SCIP data structure */
1096  SCIP* targetscip /**< target SCIP data structure */
1097  );
1098 
1099 /** gets depth of current scip instance (increased by each copy call)
1100  *
1101  * @return Depth of subscip of SCIP is returned.
1102  *
1103  * @pre This method can be called if SCIP is in one of the following stages:
1104  * - \ref SCIP_STAGE_PROBLEM
1105  * - \ref SCIP_STAGE_TRANSFORMING
1106  * - \ref SCIP_STAGE_TRANSFORMED
1107  * - \ref SCIP_STAGE_INITPRESOLVE
1108  * - \ref SCIP_STAGE_PRESOLVING
1109  * - \ref SCIP_STAGE_EXITPRESOLVE
1110  * - \ref SCIP_STAGE_PRESOLVED
1111  * - \ref SCIP_STAGE_INITSOLVE
1112  * - \ref SCIP_STAGE_SOLVING
1113  * - \ref SCIP_STAGE_SOLVED
1114  * - \ref SCIP_STAGE_EXITSOLVE
1115  * - \ref SCIP_STAGE_FREETRANS
1116  *
1117  * @note SCIP stage does not get changed
1118  *
1119  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
1120  */
1121 extern
1123  SCIP* scip /**< SCIP data structure */
1124  );
1125 
1126 /** copies source SCIP to target SCIP; the copying process is done in the following order:
1127  * 1) copy the plugins
1128  * 2) copy the settings
1129  * 3) create problem data in target-SCIP and copy the problem data of the source-SCIP
1130  * 4) copy all active variables
1131  * 5) copy all constraints
1132  *
1133  * @note all variables and constraints which are created in the target-SCIP are not (user) captured
1134  *
1135  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
1136  * Also, 'passmessagehdlr' should be set to FALSE.
1137  * @note Do not change the source SCIP environment during the copying process
1138  *
1139  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1140  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1141  *
1142  * @pre This method can be called if sourcescip is in one of the following stages:
1143  * - \ref SCIP_STAGE_PROBLEM
1144  * - \ref SCIP_STAGE_TRANSFORMED
1145  * - \ref SCIP_STAGE_INITPRESOLVE
1146  * - \ref SCIP_STAGE_PRESOLVING
1147  * - \ref SCIP_STAGE_EXITPRESOLVE
1148  * - \ref SCIP_STAGE_PRESOLVED
1149  * - \ref SCIP_STAGE_INITSOLVE
1150  * - \ref SCIP_STAGE_SOLVING
1151  * - \ref SCIP_STAGE_SOLVED
1152  *
1153  * @pre This method can be called if targetscip is in one of the following stages:
1154  * - \ref SCIP_STAGE_INIT
1155  * - \ref SCIP_STAGE_FREE
1156  *
1157  * @note sourcescip stage does not get changed
1158  *
1159  * @note targetscip stage does not get changed
1160  *
1161  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
1162  */
1163 extern
1165  SCIP* sourcescip, /**< source SCIP data structure */
1166  SCIP* targetscip, /**< target SCIP data structure */
1167  SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
1168  * target variables, or NULL */
1169  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
1170  * target constraints, or NULL */
1171  const char* suffix, /**< suffix which will be added to the names of the source SCIP */
1172  SCIP_Bool global, /**< create a global or a local copy? */
1173  SCIP_Bool enablepricing, /**< should pricing be enabled in copied SCIP instance? If TRUE, pricer
1174  * plugins will be copied and activated, and the modifiable flag of
1175  * constraints will be respected. If FALSE, valid will be set to FALSE, when
1176  * there are pricers present */
1177  SCIP_Bool passmessagehdlr, /**< should the message handler be passed */
1178  SCIP_Bool* valid /**< pointer to store whether the copying was valid or not */
1179  );
1180 
1181 /** copies source SCIP original problem to target SCIP; the copying process is done in the following order:
1182  * 1) copy the plugins
1183  * 2) copy the settings
1184  * 3) create problem data in target-SCIP and copy the original problem data of the source-SCIP
1185  * 4) copy all original variables
1186  * 5) copy all original constraints
1187  *
1188  * @note all variables and constraints which are created in the target-SCIP are not (user) captured
1189  *
1190  * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
1191  * Also, 'passmessagehdlr' should be set to FALSE.
1192  * @note Do not change the source SCIP environment during the copying process
1193  *
1194  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1195  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1196  *
1197  * @pre This method can be called if sourcescip is in one of the following stages:
1198  * - \ref SCIP_STAGE_PROBLEM
1199  * - \ref SCIP_STAGE_TRANSFORMED
1200  * - \ref SCIP_STAGE_INITPRESOLVE
1201  * - \ref SCIP_STAGE_PRESOLVING
1202  * - \ref SCIP_STAGE_EXITPRESOLVE
1203  * - \ref SCIP_STAGE_PRESOLVED
1204  * - \ref SCIP_STAGE_INITSOLVE
1205  * - \ref SCIP_STAGE_SOLVING
1206  * - \ref SCIP_STAGE_SOLVED
1207  *
1208  * @pre This method can be called if targetscip is in one of the following stages:
1209  * - \ref SCIP_STAGE_INIT
1210  * - \ref SCIP_STAGE_FREE
1211  *
1212  * @note sourcescip stage does not get changed
1213  *
1214  * @note targetscip stage does not get changed
1215  *
1216  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
1217  */
1218 extern
1220  SCIP* sourcescip, /**< source SCIP data structure */
1221  SCIP* targetscip, /**< target SCIP data structure */
1222  SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
1223  * target variables, or NULL */
1224  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
1225  * target constraints, or NULL */
1226  const char* suffix, /**< suffix which will be added to the names of the target SCIP, might be empty */
1227  SCIP_Bool enablepricing, /**< should pricing be enabled in copied SCIP instance? If TRUE, pricer
1228  * plugins will be copied and activated, and the modifiable flag of
1229  * constraints will be respected. If FALSE, valid will be set to FALSE, when
1230  * there are pricers present */
1231  SCIP_Bool passmessagehdlr, /**< should the message handler be passed */
1232  SCIP_Bool* valid /**< pointer to store whether the copying was valid or not */
1233  );
1234 
1235 /**@} */
1236 
1237 /*
1238  * parameter settings
1239  */
1240 
1241 /**@name Parameter Methods */
1242 /**@{ */
1243 
1244 /** creates a SCIP_Bool parameter, sets it to its default value, and adds it to the parameter set
1245  *
1246  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1247  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1248  */
1249 extern
1251  SCIP* scip, /**< SCIP data structure */
1252  const char* name, /**< name of the parameter */
1253  const char* desc, /**< description of the parameter */
1254  SCIP_Bool* valueptr, /**< pointer to store the current parameter value, or NULL */
1255  SCIP_Bool isadvanced, /**< is this parameter an advanced parameter? */
1256  SCIP_Bool defaultvalue, /**< default value of the parameter */
1257  SCIP_DECL_PARAMCHGD ((*paramchgd)), /**< change information method of parameter */
1258  SCIP_PARAMDATA* paramdata /**< locally defined parameter specific data */
1259  );
1260 
1261 /** creates a int parameter, sets it to its default value, and adds it to the parameter set
1262  *
1263  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1264  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1265  */
1266 extern
1268  SCIP* scip, /**< SCIP data structure */
1269  const char* name, /**< name of the parameter */
1270  const char* desc, /**< description of the parameter */
1271  int* valueptr, /**< pointer to store the current parameter value, or NULL */
1272  SCIP_Bool isadvanced, /**< is this parameter an advanced parameter? */
1273  int defaultvalue, /**< default value of the parameter */
1274  int minvalue, /**< minimum value for parameter */
1275  int maxvalue, /**< maximum value for parameter */
1276  SCIP_DECL_PARAMCHGD ((*paramchgd)), /**< change information method of parameter */
1277  SCIP_PARAMDATA* paramdata /**< locally defined parameter specific data */
1278  );
1279 
1280 /** creates a SCIP_Longint parameter, sets it to its default value, and adds it to the parameter set
1281  *
1282  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1283  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1284  */
1285 extern
1287  SCIP* scip, /**< SCIP data structure */
1288  const char* name, /**< name of the parameter */
1289  const char* desc, /**< description of the parameter */
1290  SCIP_Longint* valueptr, /**< pointer to store the current parameter value, or NULL */
1291  SCIP_Bool isadvanced, /**< is this parameter an advanced parameter? */
1292  SCIP_Longint defaultvalue, /**< default value of the parameter */
1293  SCIP_Longint minvalue, /**< minimum value for parameter */
1294  SCIP_Longint maxvalue, /**< maximum value for parameter */
1295  SCIP_DECL_PARAMCHGD ((*paramchgd)), /**< change information method of parameter */
1296  SCIP_PARAMDATA* paramdata /**< locally defined parameter specific data */
1297  );
1298 
1299 /** creates a SCIP_Real parameter, sets it to its default value, and adds it to the parameter set
1300  *
1301  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1302  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1303  */
1304 extern
1306  SCIP* scip, /**< SCIP data structure */
1307  const char* name, /**< name of the parameter */
1308  const char* desc, /**< description of the parameter */
1309  SCIP_Real* valueptr, /**< pointer to store the current parameter value, or NULL */
1310  SCIP_Bool isadvanced, /**< is this parameter an advanced parameter? */
1311  SCIP_Real defaultvalue, /**< default value of the parameter */
1312  SCIP_Real minvalue, /**< minimum value for parameter */
1313  SCIP_Real maxvalue, /**< maximum value for parameter */
1314  SCIP_DECL_PARAMCHGD ((*paramchgd)), /**< change information method of parameter */
1315  SCIP_PARAMDATA* paramdata /**< locally defined parameter specific data */
1316  );
1317 
1318 /** creates a char parameter, sets it to its default value, and adds it to the parameter set
1319  *
1320  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1321  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1322  */
1323 extern
1325  SCIP* scip, /**< SCIP data structure */
1326  const char* name, /**< name of the parameter */
1327  const char* desc, /**< description of the parameter */
1328  char* valueptr, /**< pointer to store the current parameter value, or NULL */
1329  SCIP_Bool isadvanced, /**< is this parameter an advanced parameter? */
1330  char defaultvalue, /**< default value of the parameter */
1331  const char* allowedvalues, /**< array with possible parameter values, or NULL if not restricted */
1332  SCIP_DECL_PARAMCHGD ((*paramchgd)), /**< change information method of parameter */
1333  SCIP_PARAMDATA* paramdata /**< locally defined parameter specific data */
1334  );
1335 
1336 /** creates a string(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; if not NULL then *valueptr should be NULL */
1347  SCIP_Bool isadvanced, /**< is this parameter an advanced parameter? */
1348  const char* defaultvalue, /**< default value of the parameter */
1349  SCIP_DECL_PARAMCHGD ((*paramchgd)), /**< change information method of parameter */
1350  SCIP_PARAMDATA* paramdata /**< locally defined parameter specific data */
1351  );
1352 
1353 /** gets the fixing status of an existing parameter
1354  *
1355  * @return TRUE if the parameter is fixed to a value, otherwise FALSE.
1356  */
1357 extern
1359  SCIP* scip, /**< SCIP data structure */
1360  const char* name /**< name of the parameter */
1361  );
1362 
1363 /** returns the pointer to the SCIP parameter with the given name
1364  *
1365  * @return pointer to the parameter with the given name
1366  */
1367 extern
1369  SCIP* scip, /**< SCIP data structure */
1370  const char* name /**< name of the parameter */
1371  );
1372 
1373 /** gets the value of an existing SCIP_Bool parameter
1374  *
1375  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1376  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1377  */
1378 extern
1380  SCIP* scip, /**< SCIP data structure */
1381  const char* name, /**< name of the parameter */
1382  SCIP_Bool* value /**< pointer to store the parameter */
1383  );
1384 
1385 /** gets the value of an existing int parameter
1386  *
1387  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1388  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1389  */
1390 extern
1392  SCIP* scip, /**< SCIP data structure */
1393  const char* name, /**< name of the parameter */
1394  int* value /**< pointer to store the parameter */
1395  );
1396 
1397 /** gets the value of an existing SCIP_Longint parameter
1398  *
1399  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1400  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1401  */
1402 extern
1404  SCIP* scip, /**< SCIP data structure */
1405  const char* name, /**< name of the parameter */
1406  SCIP_Longint* value /**< pointer to store the parameter */
1407  );
1408 
1409 /** gets the value of an existing SCIP_Real parameter
1410  *
1411  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1412  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1413  */
1414 extern
1416  SCIP* scip, /**< SCIP data structure */
1417  const char* name, /**< name of the parameter */
1418  SCIP_Real* value /**< pointer to store the parameter */
1419  );
1420 
1421 /** gets the value of an existing char parameter
1422  *
1423  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1424  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1425  */
1426 extern
1428  SCIP* scip, /**< SCIP data structure */
1429  const char* name, /**< name of the parameter */
1430  char* value /**< pointer to store the parameter */
1431  );
1432 
1433 /** gets the value of an existing string(char*) parameter
1434  *
1435  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1436  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1437  */
1438 extern
1440  SCIP* scip, /**< SCIP data structure */
1441  const char* name, /**< name of the parameter */
1442  char** value /**< pointer to store the parameter */
1443  );
1444 
1445 /** fixes the value of an existing parameter
1446  *
1447  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1448  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1449  *
1450  * @note: Be careful with this method! Some general settings, e.g., the time or node limit, should not be fixed because
1451  * they have to be changed for sub-SCIPs.
1452  */
1453 extern
1455  SCIP* scip, /**< SCIP data structure */
1456  const char* name /**< name of the parameter */
1457  );
1458 
1459 /** unfixes the value of an existing parameter
1460  *
1461  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1462  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1463  */
1464 extern
1466  SCIP* scip, /**< SCIP data structure */
1467  const char* name /**< name of the parameter */
1468  );
1469 
1470 /** changes the value of an existing parameter
1471  *
1472  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1473  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1474  */
1475 extern
1477  SCIP* scip, /**< SCIP data structure */
1478  const char* name, /**< name of the parameter */
1479  void* value /**< new value of the parameter */
1480  );
1481 
1482 /** changes the value of an existing SCIP_Bool parameter
1483  *
1484  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1485  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1486  */
1487 extern
1489  SCIP* scip, /**< SCIP data structure */
1490  SCIP_PARAM* param, /**< parameter */
1491  SCIP_Bool value /**< new value of the parameter */
1492  );
1493 
1494 /** changes the value of an existing SCIP_Bool parameter
1495  *
1496  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1497  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1498  */
1499 extern
1501  SCIP* scip, /**< SCIP data structure */
1502  const char* name, /**< name of the parameter */
1503  SCIP_Bool value /**< new value of the parameter */
1504  );
1505 
1506 /** changes the value of an existing int parameter
1507  *
1508  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1509  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1510  */
1511 extern
1513  SCIP* scip, /**< SCIP data structure */
1514  SCIP_PARAM* param, /**< parameter */
1515  int value /**< new value of the parameter */
1516  );
1517 
1518 /** changes the value of an existing int parameter
1519  *
1520  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1521  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1522  */
1523 extern
1525  SCIP* scip, /**< SCIP data structure */
1526  const char* name, /**< name of the parameter */
1527  int value /**< new value of the parameter */
1528  );
1529 
1530 /** changes the value of an existing SCIP_Longint parameter
1531  *
1532  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1533  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1534  */
1535 extern
1537  SCIP* scip, /**< SCIP data structure */
1538  SCIP_PARAM* param, /**< parameter */
1539  SCIP_Longint value /**< new value of the parameter */
1540  );
1541 
1542 /** changes the value of an existing SCIP_Longint parameter
1543  *
1544  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1545  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1546  */
1547 extern
1549  SCIP* scip, /**< SCIP data structure */
1550  const char* name, /**< name of the parameter */
1551  SCIP_Longint value /**< new value of the parameter */
1552  );
1553 
1554 /** changes the value of an existing SCIP_Real parameter
1555  *
1556  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1557  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1558  */
1559 extern
1561  SCIP* scip, /**< SCIP data structure */
1562  SCIP_PARAM* param, /**< parameter */
1563  SCIP_Real value /**< new value of the parameter */
1564  );
1565 
1566 /** changes the value of an existing SCIP_Real parameter
1567  *
1568  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1569  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1570  */
1571 extern
1573  SCIP* scip, /**< SCIP data structure */
1574  const char* name, /**< name of the parameter */
1575  SCIP_Real value /**< new value of the parameter */
1576  );
1577 
1578 /** changes the value of an existing char parameter
1579  *
1580  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1581  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1582  */
1583 extern
1585  SCIP* scip, /**< SCIP data structure */
1586  SCIP_PARAM* param, /**< parameter */
1587  char value /**< new value of the parameter */
1588  );
1589 
1590 /** changes the value of an existing char parameter
1591  *
1592  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1593  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1594  */
1595 extern
1597  SCIP* scip, /**< SCIP data structure */
1598  const char* name, /**< name of the parameter */
1599  char value /**< new value of the parameter */
1600  );
1601 
1602 /** changes the value of an existing string(char*) parameter
1603  *
1604  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1605  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1606  */
1607 extern
1609  SCIP* scip, /**< SCIP data structure */
1610  SCIP_PARAM* param, /**< parameter */
1611  const char* value /**< new value of the parameter */
1612  );
1613 
1614 /** changes the value of an existing string(char*) parameter
1615  *
1616  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1617  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1618  */
1619 extern
1621  SCIP* scip, /**< SCIP data structure */
1622  const char* name, /**< name of the parameter */
1623  const char* value /**< new value of the parameter */
1624  );
1625 
1626 /** reads parameters from a file
1627  *
1628  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1629  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1630  */
1631 extern
1633  SCIP* scip, /**< SCIP data structure */
1634  const char* filename /**< file name */
1635  );
1636 
1637 /** writes all parameters in the parameter set to a file
1638  *
1639  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1640  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1641  */
1642 extern
1644  SCIP* scip, /**< SCIP data structure */
1645  const char* filename, /**< file name, or NULL for stdout */
1646  SCIP_Bool comments, /**< should parameter descriptions be written as comments? */
1647  SCIP_Bool onlychanged /**< should only the parameters been written, that are changed from default? */
1648  );
1649 
1650 /** resets a single parameter to its default value
1651  *
1652  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1653  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1654  */
1655 extern
1657  SCIP* scip, /**< SCIP data structure */
1658  const char* name /**< name of the parameter */
1659  );
1660 
1661 /** resets all parameters to their default values
1662  *
1663  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1664  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1665  */
1666 extern
1668  SCIP* scip /**< SCIP data structure */
1669  );
1670 
1671 /** sets parameters to
1672  *
1673  * - SCIP_PARAMEMPHASIS_DEFAULT to use default values (see also SCIPresetParams())
1674  * - SCIP_PARAMEMPHASIS_COUNTER to get feasible and "fast" counting process
1675  * - SCIP_PARAMEMPHASIS_CPSOLVER to get CP like search (e.g. no LP relaxation)
1676  * - SCIP_PARAMEMPHASIS_EASYCIP to solve easy problems fast
1677  * - SCIP_PARAMEMPHASIS_FEASIBILITY to detect feasibility fast
1678  * - SCIP_PARAMEMPHASIS_HARDLP to be capable to handle hard LPs
1679  * - SCIP_PARAMEMPHASIS_OPTIMALITY to prove optimality fast
1680  *
1681  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1682  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1683  */
1684 extern
1686  SCIP* scip, /**< SCIP data structure */
1687  SCIP_PARAMEMPHASIS paramemphasis, /**< parameter settings */
1688  SCIP_Bool quiet /**< should the parameter be set quiet (no output) */
1689  );
1690 
1691 /** sets parameters to deactivate separators and heuristics that use auxiliary SCIP instances; should be called for
1692  * auxiliary SCIP instances to avoid recursion
1693  *
1694  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1695  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1696  */
1697 extern
1699  SCIP* scip, /**< (auxiliary) SCIP data structure */
1700  SCIP_Bool quiet /**< should the parameter be set quiet (no output) */
1701  );
1702 
1703 /** sets heuristic parameters values to
1704  *
1705  * - SCIP_PARAMSETTING_DEFAULT which are the default values of all heuristic parameters
1706  * - SCIP_PARAMSETTING_FAST such that the time spend for heuristic is decreased
1707  * - SCIP_PARAMSETTING_AGGRESSIVE such that the heuristic are called more aggregative
1708  * - SCIP_PARAMSETTING_OFF which turn off all heuristics
1709  *
1710  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1711  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1712  */
1713 extern
1715  SCIP* scip, /**< SCIP data structure */
1716  SCIP_PARAMSETTING paramsetting, /**< parameter settings */
1717  SCIP_Bool quiet /**< should the parameter be set quiet (no output) */
1718  );
1719 
1720 /** sets presolving parameters to
1721  *
1722  * - SCIP_PARAMSETTING_DEFAULT which are the default values of all presolving parameters
1723  * - SCIP_PARAMSETTING_FAST such that the time spend for presolving is decreased
1724  * - SCIP_PARAMSETTING_AGGRESSIVE such that the presolving is more aggregative
1725  * - SCIP_PARAMSETTING_OFF which turn off all presolving
1726  *
1727  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1728  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1729  */
1730 extern
1732  SCIP* scip, /**< SCIP data structure */
1733  SCIP_PARAMSETTING paramsetting, /**< parameter settings */
1734  SCIP_Bool quiet /**< should the parameter be set quiet (no output) */
1735  );
1736 
1737 /** sets separating parameters to
1738  *
1739  * - SCIP_PARAMSETTING_DEFAULT which are the default values of all separating parameters
1740  * - SCIP_PARAMSETTING_FAST such that the time spend for separating is decreased
1741  * - SCIP_PARAMSETTING_AGGRESSIVE such that the separating is done more aggregative
1742  * - SCIP_PARAMSETTING_OFF which turn off all separating
1743  *
1744  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1745  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1746  */
1747 extern
1749  SCIP* scip, /**< SCIP data structure */
1750  SCIP_PARAMSETTING paramsetting, /**< parameter settings */
1751  SCIP_Bool quiet /**< should the parameter be set quiet (no output) */
1752  );
1753 
1754 /** returns the array of all available SCIP parameters
1755  *
1756  * @return SCIP_PARAM* array, containing all SCIP parameters.
1757  */
1758 extern
1760  SCIP* scip /**< SCIP data structure */
1761  );
1762 
1763 /** returns the total number of all available SCIP parameters
1764  *
1765  * @return number of all SCIP parameters.
1766  */
1767 extern
1768 int SCIPgetNParams(
1769  SCIP* scip /**< SCIP data structure */
1770  );
1771 
1772 /**@} */
1773 
1774 
1775 /*
1776  * SCIP user functionality methods: managing plugins
1777  */
1778 
1779 /**@name SCIP User Functionality Methods: Managing Plugins */
1780 /**@{ */
1781 
1782 /** creates a reader and includes it in SCIP
1783  *
1784  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1785  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1786  *
1787  * @pre This method can be called if SCIP is in one of the following stages:
1788  * - \ref SCIP_STAGE_INIT
1789  * - \ref SCIP_STAGE_PROBLEM
1790  *
1791  * @note method has all reader callbacks as arguments and is thus changed every time a new callback is added
1792  * in future releases; consider using SCIPincludeReaderBasic() and setter functions
1793  * if you seek for a method which is less likely to change in future releases
1794  */
1795 extern
1797  SCIP* scip, /**< SCIP data structure */
1798  const char* name, /**< name of reader */
1799  const char* desc, /**< description of reader */
1800  const char* extension, /**< file extension that reader processes */
1801  SCIP_DECL_READERCOPY ((*readercopy)), /**< copy method of reader or NULL if you don't want to copy your plugin into sub-SCIPs */
1802  SCIP_DECL_READERFREE ((*readerfree)), /**< destructor of reader */
1803  SCIP_DECL_READERREAD ((*readerread)), /**< read method */
1804  SCIP_DECL_READERWRITE ((*readerwrite)), /**< write method */
1805  SCIP_READERDATA* readerdata /**< reader data */
1806  );
1807 
1808 /** creates a reader and includes it in SCIP. All non-fundamental (or optional) callbacks will be set to NULL.
1809  * Optional callbacks can be set via specific setter functions, see
1810  * SCIPsetReaderCopy(), SCIPsetReaderFree(), SCIPsetReaderRead(), SCIPsetReaderWrite().
1811  *
1812  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1813  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1814  *
1815  * @pre This method can be called if SCIP is in one of the following stages:
1816  * - \ref SCIP_STAGE_INIT
1817  * - \ref SCIP_STAGE_PROBLEM
1818  *
1819  * @note if you want to set all callbacks with a single method call, consider using SCIPincludeReader() instead
1820  */
1821 extern
1823  SCIP* scip, /**< SCIP data structure */
1824  SCIP_READER** readerptr, /**< reference to reader pointer, or NULL */
1825  const char* name, /**< name of reader */
1826  const char* desc, /**< description of reader */
1827  const char* extension, /**< file extension that reader processes */
1828  SCIP_READERDATA* readerdata /**< reader data */
1829  );
1830 
1831 /** set copy method of reader
1832  *
1833  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1834  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1835  *
1836  * @pre This method can be called if SCIP is in one of the following stages:
1837  * - \ref SCIP_STAGE_INIT
1838  * - \ref SCIP_STAGE_PROBLEM
1839  */
1840 extern
1842  SCIP* scip, /**< SCIP data structure */
1843  SCIP_READER* reader, /**< reader */
1844  SCIP_DECL_READERCOPY ((*readercopy)) /**< copy method of reader or NULL if you don't want to copy your plugin into sub-SCIPs */
1845  );
1846 
1847 /** set deinitialization method of reader
1848  *
1849  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1850  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1851  *
1852  * @pre This method can be called if SCIP is in one of the following stages:
1853  * - \ref SCIP_STAGE_INIT
1854  * - \ref SCIP_STAGE_PROBLEM
1855  */
1856 extern
1858  SCIP* scip, /**< SCIP data structure */
1859  SCIP_READER* reader, /**< reader */
1860  SCIP_DECL_READERFREE ((*readerfree)) /**< destructor of reader */
1861  );
1862 
1863 /** set read method of reader
1864  *
1865  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1866  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1867  *
1868  * @pre This method can be called if SCIP is in one of the following stages:
1869  * - \ref SCIP_STAGE_INIT
1870  * - \ref SCIP_STAGE_PROBLEM
1871  */
1872 extern
1874  SCIP* scip, /**< SCIP data structure */
1875  SCIP_READER* reader, /**< reader */
1876  SCIP_DECL_READERREAD ((*readerread)) /**< read method of reader */
1877  );
1878 
1879 /** set write method of reader
1880  *
1881  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1882  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1883  *
1884  * @pre This method can be called if SCIP is in one of the following stages:
1885  * - \ref SCIP_STAGE_INIT
1886  * - \ref SCIP_STAGE_PROBLEM
1887  */
1888 extern
1890  SCIP* scip, /**< SCIP data structure */
1891  SCIP_READER* reader, /**< reader */
1892  SCIP_DECL_READERWRITE ((*readerwrite)) /**< write method of reader */
1893  );
1894 
1895 /** returns the reader of the given name, or NULL if not existing */
1896 extern
1898  SCIP* scip, /**< SCIP data structure */
1899  const char* name /**< name of reader */
1900  );
1901 
1902 /** returns the array of currently available readers */
1903 extern
1905  SCIP* scip /**< SCIP data structure */
1906  );
1907 
1908 /** returns the number of currently available readers */
1909 extern
1910 int SCIPgetNReaders(
1911  SCIP* scip /**< SCIP data structure */
1912  );
1913 
1914 /** creates a variable pricer and includes it in SCIP
1915  * To use the variable pricer for solving a problem, it first has to be activated with a call to SCIPactivatePricer().
1916  * This should be done during the problem creation stage.
1917  *
1918  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1919  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1920  *
1921  * @pre This method can be called if SCIP is in one of the following stages:
1922  * - \ref SCIP_STAGE_INIT
1923  * - \ref SCIP_STAGE_PROBLEM
1924  *
1925  * @note method has all pricer callbacks as arguments and is thus changed every time a new callback is added
1926  * in future releases; consider using SCIPincludePricerBasic() and setter functions
1927  * if you seek for a method which is less likely to change in future releases
1928  */
1929 extern
1931  SCIP* scip, /**< SCIP data structure */
1932  const char* name, /**< name of variable pricer */
1933  const char* desc, /**< description of variable pricer */
1934  int priority, /**< priority of the variable pricer */
1935  SCIP_Bool delay, /**< should the pricer be delayed until no other pricers or already existing
1936  * problem variables with negative reduced costs are found?
1937  * if this is set to FALSE it may happen that the pricer produces columns
1938  * that already exist in the problem (which are also priced in by the
1939  * default problem variable pricing in the same round) */
1940  SCIP_DECL_PRICERCOPY ((*pricercopy)), /**< copy method of variable pricer or NULL if you don't want to copy your plugin into sub-SCIPs */
1941  SCIP_DECL_PRICERFREE ((*pricerfree)), /**< destructor of variable pricer */
1942  SCIP_DECL_PRICERINIT ((*pricerinit)), /**< initialize variable pricer */
1943  SCIP_DECL_PRICEREXIT ((*pricerexit)), /**< deinitialize variable pricer */
1944  SCIP_DECL_PRICERINITSOL((*pricerinitsol)),/**< solving process initialization method of variable pricer */
1945  SCIP_DECL_PRICEREXITSOL((*pricerexitsol)),/**< solving process deinitialization method of variable pricer */
1946  SCIP_DECL_PRICERREDCOST((*pricerredcost)),/**< reduced cost pricing method of variable pricer for feasible LPs */
1947  SCIP_DECL_PRICERFARKAS((*pricerfarkas)), /**< Farkas pricing method of variable pricer for infeasible LPs */
1948  SCIP_PRICERDATA* pricerdata /**< variable pricer data */
1949  );
1950 
1951 /** creates a variable pricer and includes it in SCIP with all non-fundamental callbacks set to NULL;
1952  * if needed, these can be added afterwards via setter functions SCIPsetPricerCopy(), SCIPsetPricerFree(),
1953  * SCIPsetPricerInity(), SCIPsetPricerExit(), SCIPsetPricerInitsol(), SCIPsetPricerExitsol(),
1954  * SCIPsetPricerFarkas();
1955  *
1956  * To use the variable pricer for solving a problem, it first has to be activated with a call to SCIPactivatePricer().
1957  * This should be done during the problem creation stage.
1958  *
1959  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1960  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1961  *
1962  * @pre This method can be called if SCIP is in one of the following stages:
1963  * - \ref SCIP_STAGE_INIT
1964  * - \ref SCIP_STAGE_PROBLEM
1965  *
1966  * @note if you want to set all callbacks with a single method call, consider using SCIPincludePricer() instead
1967  */
1968 extern
1970  SCIP* scip, /**< SCIP data structure */
1971  SCIP_PRICER** pricerptr, /**< reference to a pricer, or NULL */
1972  const char* name, /**< name of variable pricer */
1973  const char* desc, /**< description of variable pricer */
1974  int priority, /**< priority of the variable pricer */
1975  SCIP_Bool delay, /**< should the pricer be delayed until no other pricers or already existing
1976  * problem variables with negative reduced costs are found?
1977  * if this is set to FALSE it may happen that the pricer produces columns
1978  * that already exist in the problem (which are also priced in by the
1979  * default problem variable pricing in the same round) */
1980  SCIP_DECL_PRICERREDCOST((*pricerredcost)),/**< reduced cost pricing method of variable pricer for feasible LPs */
1981  SCIP_DECL_PRICERFARKAS((*pricerfarkas)), /**< Farkas pricing method of variable pricer for infeasible LPs */
1982  SCIP_PRICERDATA* pricerdata /**< variable pricer data */
1983  );
1984 
1985 /** sets copy method of pricer
1986  *
1987  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1988  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1989  *
1990  * @pre This method can be called if SCIP is in one of the following stages:
1991  * - \ref SCIP_STAGE_INIT
1992  * - \ref SCIP_STAGE_PROBLEM
1993  */
1994 extern
1996  SCIP* scip, /**< SCIP data structure */
1997  SCIP_PRICER* pricer, /**< pricer */
1998  SCIP_DECL_PRICERCOPY ((*pricercopy)) /**< copy method of pricer or NULL if you don't want to copy your plugin into sub-SCIPs */
1999  );
2000 
2001 /** sets destructor method of pricer
2002  *
2003  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2004  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2005  *
2006  * @pre This method can be called if SCIP is in one of the following stages:
2007  * - \ref SCIP_STAGE_INIT
2008  * - \ref SCIP_STAGE_PROBLEM
2009  */
2010 extern
2012  SCIP* scip, /**< SCIP data structure */
2013  SCIP_PRICER* pricer, /**< pricer */
2014  SCIP_DECL_PRICERFREE ((*pricerfree)) /**< destructor of pricer */
2015  );
2016 
2017 /** sets initialization method of pricer
2018  *
2019  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2020  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2021  *
2022  * @pre This method can be called if SCIP is in one of the following stages:
2023  * - \ref SCIP_STAGE_INIT
2024  * - \ref SCIP_STAGE_PROBLEM
2025  */
2026 extern
2028  SCIP* scip, /**< SCIP data structure */
2029  SCIP_PRICER* pricer, /**< pricer */
2030  SCIP_DECL_PRICERINIT ((*pricerinit)) /**< initialize pricer */
2031  );
2032 
2033 /** sets deinitialization method of pricer
2034  *
2035  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2036  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2037  *
2038  * @pre This method can be called if SCIP is in one of the following stages:
2039  * - \ref SCIP_STAGE_INIT
2040  * - \ref SCIP_STAGE_PROBLEM
2041  */
2042 extern
2044  SCIP* scip, /**< SCIP data structure */
2045  SCIP_PRICER* pricer, /**< pricer */
2046  SCIP_DECL_PRICEREXIT ((*pricerexit)) /**< deinitialize pricer */
2047  );
2048 
2049 /** sets solving process initialization method of pricer
2050  *
2051  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2052  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2053  *
2054  * @pre This method can be called if SCIP is in one of the following stages:
2055  * - \ref SCIP_STAGE_INIT
2056  * - \ref SCIP_STAGE_PROBLEM
2057  */
2058 extern
2060  SCIP* scip, /**< SCIP data structure */
2061  SCIP_PRICER* pricer, /**< pricer */
2062  SCIP_DECL_PRICERINITSOL ((*pricerinitsol))/**< solving process initialization method of pricer */
2063  );
2064 
2065 /** sets solving process deinitialization method of pricer
2066  *
2067  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2068  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2069  *
2070  * @pre This method can be called if SCIP is in one of the following stages:
2071  * - \ref SCIP_STAGE_INIT
2072  * - \ref SCIP_STAGE_PROBLEM
2073  */
2074 extern
2076  SCIP* scip, /**< SCIP data structure */
2077  SCIP_PRICER* pricer, /**< pricer */
2078  SCIP_DECL_PRICEREXITSOL((*pricerexitsol)) /**< solving process deinitialization method of pricer */
2079  );
2080 
2081 /** returns the variable pricer of the given name, or NULL if not existing */
2082 extern
2084  SCIP* scip, /**< SCIP data structure */
2085  const char* name /**< name of variable pricer */
2086  );
2087 
2088 /** returns the array of currently available variable pricers; active pricers are in the first slots of the array */
2089 extern
2091  SCIP* scip /**< SCIP data structure */
2092  );
2093 
2094 /** returns the number of currently available variable pricers */
2095 extern
2096 int SCIPgetNPricers(
2097  SCIP* scip /**< SCIP data structure */
2098  );
2099 
2100 /** returns the number of currently active variable pricers, that are used in the LP solving loop */
2101 extern
2103  SCIP* scip /**< SCIP data structure */
2104  );
2105 
2106 /** sets the priority of a variable pricer */
2107 extern
2109  SCIP* scip, /**< SCIP data structure */
2110  SCIP_PRICER* pricer, /**< variable pricer */
2111  int priority /**< new priority of the variable pricer */
2112  );
2113 
2114 /** activates pricer to be used for the current problem
2115  * This method should be called during the problem creation stage for all pricers that are necessary to solve
2116  * the problem model.
2117  * The pricers are automatically deactivated when the problem is freed.
2118  *
2119  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2120  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2121  *
2122  * @pre This method can be called if SCIP is in one of the following stages:
2123  * - \ref SCIP_STAGE_PROBLEM
2124  */
2125 extern
2127  SCIP* scip, /**< SCIP data structure */
2128  SCIP_PRICER* pricer /**< variable pricer */
2129  );
2130 
2131 /** deactivates 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_PROBLEM
2138  * - \ref SCIP_STAGE_EXITSOLVE
2139  */
2140 extern
2142  SCIP* scip, /**< SCIP data structure */
2143  SCIP_PRICER* pricer /**< variable pricer */
2144  );
2145 
2146 /** creates a constraint handler and includes it in SCIP.
2147  *
2148  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2149  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2150  *
2151  * @pre This method can be called if SCIP is in one of the following stages:
2152  * - \ref SCIP_STAGE_INIT
2153  * - \ref SCIP_STAGE_PROBLEM
2154  *
2155  * @note method has all constraint handler callbacks as arguments and is thus changed every time a new
2156  * callback is added
2157  * in future releases; consider using SCIPincludeConshdlrBasic() and setter functions
2158  * if you seek for a method which is less likely to change in future releases
2159  */
2160 extern
2162  SCIP* scip, /**< SCIP data structure */
2163  const char* name, /**< name of constraint handler */
2164  const char* desc, /**< description of constraint handler */
2165  int sepapriority, /**< priority of the constraint handler for separation */
2166  int enfopriority, /**< priority of the constraint handler for constraint enforcing */
2167  int chckpriority, /**< priority of the constraint handler for checking feasibility (and propagation) */
2168  int sepafreq, /**< frequency for separating cuts; zero means to separate only in the root node */
2169  int propfreq, /**< frequency for propagating domains; zero means only preprocessing propagation */
2170  int eagerfreq, /**< frequency for using all instead of only the useful constraints in separation,
2171  * propagation and enforcement, -1 for no eager evaluations, 0 for first only */
2172  int maxprerounds, /**< maximal number of presolving rounds the constraint handler participates in (-1: no limit) */
2173  SCIP_Bool delaysepa, /**< should separation method be delayed, if other separators found cuts? */
2174  SCIP_Bool delayprop, /**< should propagation method be delayed, if other propagators found reductions? */
2175  SCIP_Bool delaypresol, /**< should presolving method be delayed, if other presolvers found reductions? */
2176  SCIP_Bool needscons, /**< should the constraint handler be skipped, if no constraints are available? */
2177  SCIP_PROPTIMING timingmask, /**< positions in the node solving loop where propagators should be executed */
2178  SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), /**< copy method of constraint handler or NULL if you don't want to copy your plugin into sub-SCIPs */
2179  SCIP_DECL_CONSFREE ((*consfree)), /**< destructor of constraint handler */
2180  SCIP_DECL_CONSINIT ((*consinit)), /**< initialize constraint handler */
2181  SCIP_DECL_CONSEXIT ((*consexit)), /**< deinitialize constraint handler */
2182  SCIP_DECL_CONSINITPRE ((*consinitpre)), /**< presolving initialization method of constraint handler */
2183  SCIP_DECL_CONSEXITPRE ((*consexitpre)), /**< presolving deinitialization method of constraint handler */
2184  SCIP_DECL_CONSINITSOL ((*consinitsol)), /**< solving process initialization method of constraint handler */
2185  SCIP_DECL_CONSEXITSOL ((*consexitsol)), /**< solving process deinitialization method of constraint handler */
2186  SCIP_DECL_CONSDELETE ((*consdelete)), /**< free specific constraint data */
2187  SCIP_DECL_CONSTRANS ((*constrans)), /**< transform constraint data into data belonging to the transformed problem */
2188  SCIP_DECL_CONSINITLP ((*consinitlp)), /**< initialize LP with relaxations of "initial" constraints */
2189  SCIP_DECL_CONSSEPALP ((*conssepalp)), /**< separate cutting planes for LP solution */
2190  SCIP_DECL_CONSSEPASOL ((*conssepasol)), /**< separate cutting planes for arbitrary primal solution */
2191  SCIP_DECL_CONSENFOLP ((*consenfolp)), /**< enforcing constraints for LP solutions */
2192  SCIP_DECL_CONSENFOPS ((*consenfops)), /**< enforcing constraints for pseudo solutions */
2193  SCIP_DECL_CONSCHECK ((*conscheck)), /**< check feasibility of primal solution */
2194  SCIP_DECL_CONSPROP ((*consprop)), /**< propagate variable domains */
2195  SCIP_DECL_CONSPRESOL ((*conspresol)), /**< presolving method */
2196  SCIP_DECL_CONSRESPROP ((*consresprop)), /**< propagation conflict resolving method */
2197  SCIP_DECL_CONSLOCK ((*conslock)), /**< variable rounding lock method */
2198  SCIP_DECL_CONSACTIVE ((*consactive)), /**< activation notification method */
2199  SCIP_DECL_CONSDEACTIVE((*consdeactive)), /**< deactivation notification method */
2200  SCIP_DECL_CONSENABLE ((*consenable)), /**< enabling notification method */
2201  SCIP_DECL_CONSDISABLE ((*consdisable)), /**< disabling notification method */
2202  SCIP_DECL_CONSDELVARS ((*consdelvars)), /**< variable deletion method */
2203  SCIP_DECL_CONSPRINT ((*consprint)), /**< constraint display method */
2204  SCIP_DECL_CONSCOPY ((*conscopy)), /**< constraint copying method */
2205  SCIP_DECL_CONSPARSE ((*consparse)), /**< constraint parsing method */
2206  SCIP_DECL_CONSGETVARS ((*consgetvars)), /**< constraint get variables method */
2207  SCIP_DECL_CONSGETNVARS((*consgetnvars)), /**< constraint get number of variable method */
2208  SCIP_CONSHDLRDATA* conshdlrdata /**< constraint handler data */
2209  );
2210 
2211 /** creates a constraint handler and includes it in SCIP. All non-fundamental (or optional) callbacks will be set to NULL.
2212  * Optional callbacks can be set via specific setter functions, see SCIPsetConshdlrInit(), SCIPsetConshdlrExit(),
2213  * SCIPsetConshdlrCopy(), SCIPsetConshdlrFree(), SCIPsetConshdlrInitsol(), SCIPsetConshdlrExitsol(),
2214  * SCIPsetConshdlrInitpre(), SCIPsetConshdlrExitpre(), SCIPsetConshdlrPresol(), SCIPsetConshdlrDelete(),
2215  * SCIPsetConshdlrDelvars(), SCIPsetConshdlrInitlp(), SCIPsetConshdlrActive(), SCIPsetConshdlrDeactive(),
2216  * SCIPsetConshdlrEnable(), SCIPsetConshdlrDisable(), SCIPsetConshdlrResprop(), SCIPsetConshdlrTrans(),
2217  * SCIPsetConshdlrPrint(), and SCIPsetConshdlrParse().
2218  *
2219  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2220  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2221  *
2222  * @pre This method can be called if SCIP is in one of the following stages:
2223  * - \ref SCIP_STAGE_INIT
2224  * - \ref SCIP_STAGE_PROBLEM
2225  *
2226  * @note if you want to set all callbacks with a single method call, consider using SCIPincludeConshdlr() instead
2227  */
2228 extern
2230  SCIP* scip, /**< SCIP data structure */
2231  SCIP_CONSHDLR** conshdlrptr, /**< reference to a constraint handler pointer, or NULL */
2232  const char* name, /**< name of constraint handler */
2233  const char* desc, /**< description of constraint handler */
2234  int enfopriority, /**< priority of the constraint handler for constraint enforcing */
2235  int chckpriority, /**< priority of the constraint handler for checking feasibility (and propagation) */
2236  int eagerfreq, /**< frequency for using all instead of only the useful constraints in separation,
2237  * propagation and enforcement, -1 for no eager evaluations, 0 for first only */
2238  SCIP_Bool needscons, /**< should the constraint handler be skipped, if no constraints are available? */
2239  SCIP_DECL_CONSENFOLP ((*consenfolp)), /**< enforcing constraints for LP solutions */
2240  SCIP_DECL_CONSENFOPS ((*consenfops)), /**< enforcing constraints for pseudo solutions */
2241  SCIP_DECL_CONSCHECK ((*conscheck)), /**< check feasibility of primal solution */
2242  SCIP_DECL_CONSLOCK ((*conslock)), /**< variable rounding lock method */
2243  SCIP_CONSHDLRDATA* conshdlrdata /**< constraint handler data */
2244  );
2245 
2246 /** sets all separation related callbacks/parameters of the constraint handler
2247  *
2248  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2249  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2250  *
2251  * @pre This method can be called if SCIP is in one of the following stages:
2252  * - \ref SCIP_STAGE_INIT
2253  * - \ref SCIP_STAGE_PROBLEM
2254  */
2255 extern
2257  SCIP* scip, /**< SCIP data structure */
2258  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2259  SCIP_DECL_CONSSEPALP ((*conssepalp)), /**< separate cutting planes for LP solution */
2260  SCIP_DECL_CONSSEPASOL ((*conssepasol)), /**< separate cutting planes for arbitrary primal solution */
2261  int sepafreq, /**< frequency for separating cuts; zero means to separate only in the root node */
2262  int sepapriority, /**< priority of the constraint handler for separation */
2263  SCIP_Bool delaysepa /**< should separation method be delayed, if other separators found cuts? */
2264  );
2265 
2266 /** sets both the propagation callback and the propagation frequency of the constraint handler
2267  *
2268  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2269  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2270  *
2271  * @pre This method can be called if SCIP is in one of the following stages:
2272  * - \ref SCIP_STAGE_INIT
2273  * - \ref SCIP_STAGE_PROBLEM
2274  */
2275 extern
2277  SCIP* scip, /**< SCIP data structure */
2278  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2279  SCIP_DECL_CONSPROP ((*consprop)), /**< propagate variable domains */
2280  int propfreq, /**< frequency for propagating domains; zero means only preprocessing propagation */
2281  SCIP_Bool delayprop, /**< should propagation method be delayed, if other propagators found reductions? */
2282  SCIP_PROPTIMING timingmask /**< positions in the node solving loop where propagators should be executed */
2283  );
2284 
2285 /** sets copy method of both the constraint handler and each associated constraint
2286  *
2287  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2288  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2289  *
2290  * @pre This method can be called if SCIP is in one of the following stages:
2291  * - \ref SCIP_STAGE_INIT
2292  * - \ref SCIP_STAGE_PROBLEM
2293  */
2294 extern
2296  SCIP* scip, /**< SCIP data structure */
2297  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2298  SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), /**< copy method of constraint handler or NULL if you don't want to copy your plugin into sub-SCIPs */
2299  SCIP_DECL_CONSCOPY ((*conscopy)) /**< constraint copying method */
2300  );
2301 
2302 /** sets destructor method of constraint handler
2303  *
2304  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2305  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2306  *
2307  * @pre This method can be called if SCIP is in one of the following stages:
2308  * - \ref SCIP_STAGE_INIT
2309  * - \ref SCIP_STAGE_PROBLEM
2310  */
2311 extern
2313  SCIP* scip, /**< SCIP data structure */
2314  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2315  SCIP_DECL_CONSFREE ((*consfree)) /**< destructor of constraint handler */
2316  );
2317 
2318 /** sets initialization method of constraint handler
2319  *
2320  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2321  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2322  *
2323  * @pre This method can be called if SCIP is in one of the following stages:
2324  * - \ref SCIP_STAGE_INIT
2325  * - \ref SCIP_STAGE_PROBLEM
2326  */
2327 extern
2329  SCIP* scip, /**< SCIP data structure */
2330  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2331  SCIP_DECL_CONSINIT ((*consinit)) /**< initialize constraint handler */
2332  );
2333 
2334 /** sets deinitialization method of constraint handler
2335  *
2336  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2337  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2338  *
2339  * @pre This method can be called if SCIP is in one of the following stages:
2340  * - \ref SCIP_STAGE_INIT
2341  * - \ref SCIP_STAGE_PROBLEM
2342  */
2343 extern
2345  SCIP* scip, /**< SCIP data structure */
2346  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2347  SCIP_DECL_CONSEXIT ((*consexit)) /**< deinitialize constraint handler */
2348  );
2349 
2350 /** sets solving process initialization method of 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_CONSINITSOL((*consinitsol)) /**< solving process initialization method of constraint handler */
2364  );
2365 
2366 /** sets solving process deinitialization method of constraint handler
2367  *
2368  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2369  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2370  *
2371  * @pre This method can be called if SCIP is in one of the following stages:
2372  * - \ref SCIP_STAGE_INIT
2373  * - \ref SCIP_STAGE_PROBLEM
2374  */
2375 extern
2377  SCIP* scip, /**< SCIP data structure */
2378  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2379  SCIP_DECL_CONSEXITSOL ((*consexitsol))/**< solving process deinitialization method of constraint handler */
2380  );
2381 
2382 /** sets preprocessing initialization method of constraint handler
2383  *
2384  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2385  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2386  *
2387  * @pre This method can be called if SCIP is in one of the following stages:
2388  * - \ref SCIP_STAGE_INIT
2389  * - \ref SCIP_STAGE_PROBLEM
2390  */
2391 extern
2393  SCIP* scip, /**< SCIP data structure */
2394  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2395  SCIP_DECL_CONSINITPRE((*consinitpre)) /**< preprocessing initialization method of constraint handler */
2396  );
2397 
2398 /** sets preprocessing deinitialization method of constraint handler
2399  *
2400  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2401  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2402  *
2403  * @pre This method can be called if SCIP is in one of the following stages:
2404  * - \ref SCIP_STAGE_INIT
2405  * - \ref SCIP_STAGE_PROBLEM
2406  */
2407 extern
2409  SCIP* scip, /**< SCIP data structure */
2410  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2411  SCIP_DECL_CONSEXITPRE((*consexitpre)) /**< preprocessing deinitialization method of constraint handler */
2412  );
2413 
2414 /** sets presolving method of constraint handler
2415  *
2416  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2417  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2418  *
2419  * @pre This method can be called if SCIP is in one of the following stages:
2420  * - \ref SCIP_STAGE_INIT
2421  * - \ref SCIP_STAGE_PROBLEM
2422  */
2423 extern
2425  SCIP* scip, /**< SCIP data structure */
2426  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2427  SCIP_DECL_CONSPRESOL ((*conspresol)), /**< presolving method of constraint handler */
2428  int maxprerounds, /**< maximal number of presolving rounds the constraint handler participates in (-1: no limit) */
2429  SCIP_Bool delaypresol /**< should presolving method be delayed, if other presolvers found reductions? */
2430  );
2431 
2432 /** sets method of constraint handler to free specific constraint data
2433  *
2434  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2435  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2436  *
2437  * @pre This method can be called if SCIP is in one of the following stages:
2438  * - \ref SCIP_STAGE_INIT
2439  * - \ref SCIP_STAGE_PROBLEM
2440  */
2441 extern
2443  SCIP* scip, /**< SCIP data structure */
2444  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2445  SCIP_DECL_CONSDELETE ((*consdelete)) /**< free specific constraint data */
2446  );
2447 
2448 /** sets method of constraint handler to transform constraint data into data belonging to the transformed problem
2449  *
2450  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2451  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2452  *
2453  * @pre This method can be called if SCIP is in one of the following stages:
2454  * - \ref SCIP_STAGE_INIT
2455  * - \ref SCIP_STAGE_PROBLEM
2456  */
2457 extern
2459  SCIP* scip, /**< SCIP data structure */
2460  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2461  SCIP_DECL_CONSTRANS ((*constrans)) /**< transform constraint data into data belonging to the transformed problem */
2462  );
2463 
2464 /** sets method of constraint handler to initialize LP with relaxations of "initial" constraints
2465  *
2466  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2467  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2468  *
2469  * @pre This method can be called if SCIP is in one of the following stages:
2470  * - \ref SCIP_STAGE_INIT
2471  * - \ref SCIP_STAGE_PROBLEM
2472  */
2473 extern
2475  SCIP* scip, /**< SCIP data structure */
2476  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2477  SCIP_DECL_CONSINITLP ((*consinitlp)) /**< initialize LP with relaxations of "initial" constraints */
2478  );
2479 
2480 /** sets propagation conflict resolving method of constraint handler
2481  *
2482  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2483  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2484  *
2485  * @pre This method can be called if SCIP is in one of the following stages:
2486  * - \ref SCIP_STAGE_INIT
2487  * - \ref SCIP_STAGE_PROBLEM
2488  */
2489 extern
2491  SCIP* scip, /**< SCIP data structure */
2492  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2493  SCIP_DECL_CONSRESPROP ((*consresprop)) /**< propagation conflict resolving method */
2494  );
2495 
2496 /** sets activation notification method of constraint handler
2497  *
2498  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2499  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2500  *
2501  * @pre This method can be called if SCIP is in one of the following stages:
2502  * - \ref SCIP_STAGE_INIT
2503  * - \ref SCIP_STAGE_PROBLEM
2504  */
2505 extern
2507  SCIP* scip, /**< SCIP data structure */
2508  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2509  SCIP_DECL_CONSACTIVE ((*consactive)) /**< activation notification method */
2510  );
2511 
2512 /** sets deactivation notification method of constraint handler
2513  *
2514  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2515  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2516  *
2517  * @pre This method can be called if SCIP is in one of the following stages:
2518  * - \ref SCIP_STAGE_INIT
2519  * - \ref SCIP_STAGE_PROBLEM
2520  */
2521 extern
2523  SCIP* scip, /**< SCIP data structure */
2524  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2525  SCIP_DECL_CONSDEACTIVE((*consdeactive)) /**< deactivation notification method */
2526  );
2527 
2528 /** sets enabling notification method of constraint handler
2529  *
2530  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2531  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2532  *
2533  * @pre This method can be called if SCIP is in one of the following stages:
2534  * - \ref SCIP_STAGE_INIT
2535  * - \ref SCIP_STAGE_PROBLEM
2536  */
2537 extern
2539  SCIP* scip, /**< SCIP data structure */
2540  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2541  SCIP_DECL_CONSENABLE ((*consenable)) /**< enabling notification method */
2542  );
2543 
2544 /** sets disabling notification method of constraint handler
2545  *
2546  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2547  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2548  *
2549  * @pre This method can be called if SCIP is in one of the following stages:
2550  * - \ref SCIP_STAGE_INIT
2551  * - \ref SCIP_STAGE_PROBLEM
2552  */
2553 extern
2555  SCIP* scip, /**< SCIP data structure */
2556  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2557  SCIP_DECL_CONSDISABLE ((*consdisable)) /**< disabling notification method */
2558  );
2559 
2560 /** sets variable deletion method of constraint handler
2561  *
2562  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2563  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2564  *
2565  * @pre This method can be called if SCIP is in one of the following stages:
2566  * - \ref SCIP_STAGE_INIT
2567  * - \ref SCIP_STAGE_PROBLEM
2568  */
2569 extern
2571  SCIP* scip, /**< SCIP data structure */
2572  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2573  SCIP_DECL_CONSDELVARS ((*consdelvars)) /**< variable deletion method */
2574  );
2575 
2576 /** sets constraint display method of constraint handler
2577  *
2578  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2579  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2580  *
2581  * @pre This method can be called if SCIP is in one of the following stages:
2582  * - \ref SCIP_STAGE_INIT
2583  * - \ref SCIP_STAGE_PROBLEM
2584  */
2585 extern
2587  SCIP* scip, /**< SCIP data structure */
2588  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2589  SCIP_DECL_CONSPRINT ((*consprint)) /**< constraint display method */
2590  );
2591 
2592 /** sets constraint parsing method of constraint handler
2593  *
2594  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2595  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2596  *
2597  * @pre This method can be called if SCIP is in one of the following stages:
2598  * - \ref SCIP_STAGE_INIT
2599  * - \ref SCIP_STAGE_PROBLEM
2600  */
2601 extern
2603  SCIP* scip, /**< SCIP data structure */
2604  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2605  SCIP_DECL_CONSPARSE ((*consparse)) /**< constraint parsing method */
2606  );
2607 
2608 /** sets constraint variable getter method of constraint handler
2609  *
2610  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2611  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2612  *
2613  * @pre This method can be called if SCIP is in one of the following stages:
2614  * - \ref SCIP_STAGE_INIT
2615  * - \ref SCIP_STAGE_PROBLEM
2616  */
2617 extern
2619  SCIP* scip, /**< SCIP data structure */
2620  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2621  SCIP_DECL_CONSGETVARS ((*consgetvars)) /**< constraint variable getter method */
2622  );
2623 
2624 /** sets constraint variable number getter method of constraint handler
2625  *
2626  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2627  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
2628  *
2629  * @pre This method can be called if SCIP is in one of the following stages:
2630  * - \ref SCIP_STAGE_INIT
2631  * - \ref SCIP_STAGE_PROBLEM
2632  */
2633 extern
2635  SCIP* scip, /**< SCIP data structure */
2636  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
2637  SCIP_DECL_CONSGETNVARS((*consgetnvars)) /**< constraint variable number getter method */
2638  );
2639 
2640 /** returns the constraint handler of the given name, or NULL if not existing */
2641 extern
2643  SCIP* scip, /**< SCIP data structure */
2644  const char* name /**< name of constraint handler */
2645  );
2646 
2647 /** returns the array of currently available constraint handlers */
2648 extern
2650  SCIP* scip /**< SCIP data structure */
2651  );
2652 
2653 /** returns the number of currently available constraint handlers */
2654 extern
2655 int SCIPgetNConshdlrs(
2656  SCIP* scip /**< SCIP data structure */
2657  );
2658 
2659 /** creates a conflict handler and includes it in SCIP
2660  *
2661  * @note method has all conflict handler callbacks as arguments and is thus changed every time a new
2662  * callback is added
2663  * in future releases; consider using SCIPincludeConflicthdlrBasic() and setter functions
2664  * if you seek for a method which is less likely to change in future releases
2665  */
2666 extern
2668  SCIP* scip, /**< SCIP data structure */
2669  const char* name, /**< name of conflict handler */
2670  const char* desc, /**< description of conflict handler */
2671  int priority, /**< priority of the conflict handler */
2672  SCIP_DECL_CONFLICTCOPY((*conflictcopy)), /**< copy method of conflict handler or NULL if you don't want to copy your plugin into sub-SCIPs */
2673  SCIP_DECL_CONFLICTFREE((*conflictfree)), /**< destructor of conflict handler */
2674  SCIP_DECL_CONFLICTINIT((*conflictinit)), /**< initialize conflict handler */
2675  SCIP_DECL_CONFLICTEXIT((*conflictexit)), /**< deinitialize conflict handler */
2676  SCIP_DECL_CONFLICTINITSOL((*conflictinitsol)),/**< solving process initialization method of conflict handler */
2677  SCIP_DECL_CONFLICTEXITSOL((*conflictexitsol)),/**< solving process deinitialization method of conflict handler */
2678  SCIP_DECL_CONFLICTEXEC((*conflictexec)), /**< conflict processing method of conflict handler */
2679  SCIP_CONFLICTHDLRDATA* conflicthdlrdata /**< conflict handler data */
2680  );
2681 
2682 /** creates a conflict handler and includes it in SCIP with its most fundamental callbacks. All non-fundamental
2683  * (or optional) callbacks as, e.g., init and exit callbacks, will be set to NULL.
2684  * Optional callbacks can be set via specific setter functions SCIPsetConflicthdlrCopy(), SCIPsetConflicthdlrFree(),
2685  * SCIPsetConflicthdlrInit(), SCIPsetConflicthdlrExit(), SCIPsetConflicthdlrInitsol(),
2686  * and SCIPsetConflicthdlrExitsol()
2687  *
2688  * @note if you want to set all callbacks with a single method call, consider using SCIPincludeConflicthdlr() instead
2689  */
2690 extern
2692  SCIP* scip, /**< SCIP data structure */
2693  SCIP_CONFLICTHDLR** conflicthdlrptr, /**< reference to a conflict handler pointer, or NULL */
2694  const char* name, /**< name of conflict handler */
2695  const char* desc, /**< description of conflict handler */
2696  int priority, /**< priority of the conflict handler */
2697  SCIP_DECL_CONFLICTEXEC((*conflictexec)), /**< conflict processing method of conflict handler */
2698  SCIP_CONFLICTHDLRDATA* conflicthdlrdata /**< conflict handler data */
2699  );
2700 
2701 /** set copy method of conflict handler */
2702 extern
2704  SCIP* scip, /**< SCIP data structure */
2705  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
2706  SCIP_DECL_CONFLICTCOPY((*conflictcopy)) /**< copy method of conflict handler */
2707  );
2708 
2709 /** set destructor of conflict handler */
2710 extern
2712  SCIP* scip, /**< SCIP data structure */
2713  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
2714  SCIP_DECL_CONFLICTFREE((*conflictfree)) /**< destructor of conflict handler */
2715  );
2716 
2717 /** set initialization method of conflict handler */
2718 extern
2720  SCIP* scip, /**< SCIP data structure */
2721  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
2722  SCIP_DECL_CONFLICTINIT((*conflictinit)) /**< initialize conflict handler */
2723  );
2724 
2725 /** set deinitialization method of conflict handler */
2726 extern
2728  SCIP* scip, /**< SCIP data structure */
2729  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
2730  SCIP_DECL_CONFLICTEXIT((*conflictexit)) /**< deinitialize conflict handler */
2731  );
2732 
2733 /** set solving process initialization method of conflict handler */
2734 extern
2736  SCIP* scip, /**< SCIP data structure */
2737  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
2738  SCIP_DECL_CONFLICTINITSOL((*conflictinitsol))/**< solving process initialization method of conflict handler */
2739  );
2740 
2741 /** set solving process deinitialization method of conflict handler */
2742 extern
2744  SCIP* scip, /**< SCIP data structure */
2745  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
2746  SCIP_DECL_CONFLICTEXITSOL((*conflictexitsol))/**< solving process deinitialization method of conflict handler */
2747  );
2748 
2749 /** returns the conflict handler of the given name, or NULL if not existing */
2750 extern
2752  SCIP* scip, /**< SCIP data structure */
2753  const char* name /**< name of conflict handler */
2754  );
2755 
2756 /** returns the array of currently available conflict handlers */
2757 extern
2759  SCIP* scip /**< SCIP data structure */
2760  );
2761 
2762 /** returns the number of currently available conflict handlers */
2763 extern
2765  SCIP* scip /**< SCIP data structure */
2766  );
2767 
2768 /** sets the priority of a conflict handler */
2769 extern
2771  SCIP* scip, /**< SCIP data structure */
2772  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
2773  int priority /**< new priority of the conflict handler */
2774  );
2775 
2776 /** creates a presolver and includes it in SCIP
2777  *
2778  * @note method has all presolver callbacks as arguments and is thus changed every time a new
2779  * callback is added
2780  * in future releases; consider using SCIPincludePresolBasic() and setter functions
2781  * if you seek for a method which is less likely to change in future releases
2782  */
2783 extern
2785  SCIP* scip, /**< SCIP data structure */
2786  const char* name, /**< name of presolver */
2787  const char* desc, /**< description of presolver */
2788  int priority, /**< priority of the presolver (>= 0: before, < 0: after constraint handlers) */
2789  int maxrounds, /**< maximal number of presolving rounds the presolver participates in (-1: no limit) */
2790  SCIP_Bool delay, /**< should presolver be delayed, if other presolvers found reductions? */
2791  SCIP_DECL_PRESOLCOPY ((*presolcopy)), /**< copy method of presolver or NULL if you don't want to copy your plugin into sub-SCIPs */
2792  SCIP_DECL_PRESOLFREE ((*presolfree)), /**< destructor of presolver to free user data (called when SCIP is exiting) */
2793  SCIP_DECL_PRESOLINIT ((*presolinit)), /**< initialization method of presolver (called after problem was transformed) */
2794  SCIP_DECL_PRESOLEXIT ((*presolexit)), /**< deinitialization method of presolver (called before transformed problem is freed) */
2795  SCIP_DECL_PRESOLINITPRE((*presolinitpre)),/**< presolving initialization method of presolver (called when presolving is about to begin) */
2796  SCIP_DECL_PRESOLEXITPRE((*presolexitpre)),/**< presolving deinitialization method of presolver (called after presolving has been finished) */
2797  SCIP_DECL_PRESOLEXEC ((*presolexec)), /**< execution method of presolver */
2798  SCIP_PRESOLDATA* presoldata /**< presolver data */
2799  );
2800 
2801 /** Creates a presolver and includes it in SCIP with its fundamental callback. All non-fundamental (or optional)
2802  * callbacks as, e.g., init and exit callbacks, will be set to NULL. Optional callbacks can be set via specific setter
2803  * functions. These are SCIPsetPresolCopy(), SCIPsetPresolFree(), SCIPsetPresolInit(), SCIPsetPresolExit(),
2804  * SCIPsetPresolInitpre(), and SCIPsetPresolExitPre().
2805  *
2806  * @note if you want to set all callbacks with a single method call, consider using SCIPincludePresol() instead
2807  */
2808 extern
2810  SCIP* scip, /**< SCIP data structure */
2811  SCIP_PRESOL** presolptr, /**< reference to presolver, or NULL */
2812  const char* name, /**< name of presolver */
2813  const char* desc, /**< description of presolver */
2814  int priority, /**< priority of the presolver (>= 0: before, < 0: after constraint handlers) */
2815  int maxrounds, /**< maximal number of presolving rounds the presolver participates in (-1: no limit) */
2816  SCIP_Bool delay, /**< should presolver be delayed, if other presolvers found reductions? */
2817  SCIP_DECL_PRESOLEXEC ((*presolexec)), /**< execution method of presolver */
2818  SCIP_PRESOLDATA* presoldata /**< presolver data */
2819  );
2820 
2821 /** sets copy method of presolver */
2822 extern
2824  SCIP* scip, /**< SCIP data structure */
2825  SCIP_PRESOL* presol, /**< presolver */
2826  SCIP_DECL_PRESOLCOPY ((*presolcopy)) /**< copy method of presolver or NULL if you don't want to copy your plugin into sub-SCIPs */
2827  );
2828 
2829 /** sets destructor method of presolver */
2830 extern
2832  SCIP* scip, /**< SCIP data structure */
2833  SCIP_PRESOL* presol, /**< presolver */
2834  SCIP_DECL_PRESOLFREE ((*presolfree)) /**< destructor of presolver */
2835  );
2836 
2837 /** sets initialization method of presolver */
2838 extern
2840  SCIP* scip, /**< SCIP data structure */
2841  SCIP_PRESOL* presol, /**< presolver */
2842  SCIP_DECL_PRESOLINIT ((*presolinit)) /**< initialize presolver */
2843  );
2844 
2845 /** sets deinitialization method of presolver */
2846 extern
2848  SCIP* scip, /**< SCIP data structure */
2849  SCIP_PRESOL* presol, /**< presolver */
2850  SCIP_DECL_PRESOLEXIT ((*presolexit)) /**< deinitialize presolver */
2851  );
2852 
2853 /** sets solving process initialization method of presolver */
2854 extern
2856  SCIP* scip, /**< SCIP data structure */
2857  SCIP_PRESOL* presol, /**< presolver */
2858  SCIP_DECL_PRESOLINITPRE ((*presolinitpre))/**< solving process initialization method of presolver */
2859  );
2860 
2861 /** sets solving process deinitialization method of presolver */
2863  SCIP* scip, /**< SCIP data structure */
2864  SCIP_PRESOL* presol, /**< presolver */
2865  SCIP_DECL_PRESOLEXITPRE ((*presolexitpre))/**< solving process deinitialization method of presolver */
2866  );
2867 
2868 /** returns the presolver of the given name, or NULL if not existing */
2869 extern
2871  SCIP* scip, /**< SCIP data structure */
2872  const char* name /**< name of presolver */
2873  );
2874 
2875 /** returns the array of currently available presolvers */
2876 extern
2878  SCIP* scip /**< SCIP data structure */
2879  );
2880 
2881 /** returns the number of currently available presolvers */
2882 extern
2883 int SCIPgetNPresols(
2884  SCIP* scip /**< SCIP data structure */
2885  );
2886 
2887 /** sets the priority of a presolver */
2888 extern
2890  SCIP* scip, /**< SCIP data structure */
2891  SCIP_PRESOL* presol, /**< presolver */
2892  int priority /**< new priority of the presolver */
2893  );
2894 
2895 /** creates a relaxation handler and includes it in SCIP
2896  *
2897  * @note method has all relaxation handler callbacks as arguments and is thus changed every time a new
2898  * callback is added
2899  * in future releases; consider using SCIPincludeRelaxBasic() and setter functions
2900  * if you seek for a method which is less likely to change in future releases
2901  */
2902 extern
2904  SCIP* scip, /**< SCIP data structure */
2905  const char* name, /**< name of relaxation handler */
2906  const char* desc, /**< description of relaxation handler */
2907  int priority, /**< priority of the relaxation handler (negative: after LP, non-negative: before LP) */
2908  int freq, /**< frequency for calling relaxation handler */
2909  SCIP_DECL_RELAXCOPY ((*relaxcopy)), /**< copy method of relaxation handler or NULL if you don't want to copy your plugin into sub-SCIPs */
2910  SCIP_DECL_RELAXFREE ((*relaxfree)), /**< destructor of relaxation handler */
2911  SCIP_DECL_RELAXINIT ((*relaxinit)), /**< initialize relaxation handler */
2912  SCIP_DECL_RELAXEXIT ((*relaxexit)), /**< deinitialize relaxation handler */
2913  SCIP_DECL_RELAXINITSOL((*relaxinitsol)), /**< solving process initialization method of relaxation handler */
2914  SCIP_DECL_RELAXEXITSOL((*relaxexitsol)), /**< solving process deinitialization method of relaxation handler */
2915  SCIP_DECL_RELAXEXEC ((*relaxexec)), /**< execution method of relaxation handler */
2916  SCIP_RELAXDATA* relaxdata /**< relaxation handler data */
2917  );
2918 
2919 /** creates a relaxation handler and includes it in SCIP. All non fundamental
2920  * (or optional) callbacks as, e.g., init and exit callbacks, will be set to NULL.
2921  * Optional callbacks can be set via specific setter functions, see SCIPsetRelaxInit(), SCIPsetRelaxExit(),
2922  * SCIPsetRelaxCopy(), SCIPsetRelaxFree(), SCIPsetRelaxInitsol(), and SCIPsetRelaxExitsol()
2923  *
2924  * @note if you want to set all callbacks with a single method call, consider using SCIPincludeRelax() instead
2925  */
2926 extern
2928  SCIP* scip, /**< SCIP data structure */
2929  SCIP_RELAX** relaxptr, /**< reference to relaxation pointer, or NULL */
2930  const char* name, /**< name of relaxation handler */
2931  const char* desc, /**< description of relaxation handler */
2932  int priority, /**< priority of the relaxation handler (negative: after LP, non-negative: before LP) */
2933  int freq, /**< frequency for calling relaxation handler */
2934  SCIP_DECL_RELAXEXEC ((*relaxexec)), /**< execution method of relaxation handler */
2935  SCIP_RELAXDATA* relaxdata /**< relaxation handler data */
2936  );
2937 
2938 /** sets copy method of relaxation handler */
2939 extern
2941  SCIP* scip, /**< SCIP data structure */
2942  SCIP_RELAX* relax, /**< relaxation handler */
2943  SCIP_DECL_RELAXCOPY ((*relaxcopy)) /**< copy method of relaxation handler or NULL if you don't want to copy your plugin into sub-SCIPs */
2944  );
2945 
2946 /** sets destructor method of relaxation handler */
2947 extern
2949  SCIP* scip, /**< SCIP data structure */
2950  SCIP_RELAX* relax, /**< relaxation handler */
2951  SCIP_DECL_RELAXFREE ((*relaxfree)) /**< destructor of relaxation handler */
2952  );
2953 
2954 /** sets initialization method of relaxation handler */
2955 extern
2957  SCIP* scip, /**< SCIP data structure */
2958  SCIP_RELAX* relax, /**< relaxation handler */
2959  SCIP_DECL_RELAXINIT ((*relaxinit)) /**< initialize relaxation handler */
2960  );
2961 
2962 /** sets deinitialization method of relaxation handler */
2963 extern
2965  SCIP* scip, /**< SCIP data structure */
2966  SCIP_RELAX* relax, /**< relaxation handler */
2967  SCIP_DECL_RELAXEXIT ((*relaxexit)) /**< deinitialize relaxation handler */
2968  );
2969 
2970 /** sets solving process initialization method of relaxation handler */
2971 extern
2973  SCIP* scip, /**< SCIP data structure */
2974  SCIP_RELAX* relax, /**< relaxation handler */
2975  SCIP_DECL_RELAXINITSOL((*relaxinitsol)) /**< solving process initialization method of relaxation handler */
2976  );
2977 
2978 /** sets solving process deinitialization method of relaxation handler */
2979 extern
2981  SCIP* scip, /**< SCIP data structure */
2982  SCIP_RELAX* relax, /**< relaxation handler */
2983  SCIP_DECL_RELAXEXITSOL((*relaxexitsol)) /**< solving process deinitialization method of relaxation handler */
2984  );
2985 
2986 /** returns the relaxation handler of the given name, or NULL if not existing */
2987 extern
2989  SCIP* scip, /**< SCIP data structure */
2990  const char* name /**< name of relaxation handler*/
2991  );
2992 
2993 /** returns the array of currently available relaxation handlers */
2994 extern
2996  SCIP* scip /**< SCIP data structure */
2997  );
2998 
2999 /** returns the number of currently available relaxation handlers */
3000 extern
3001 int SCIPgetNRelaxs(
3002  SCIP* scip /**< SCIP data structure */
3003  );
3004 
3005 /** sets the priority of a relaxation handler*/
3006 extern
3008  SCIP* scip, /**< SCIP data structure */
3009  SCIP_RELAX* relax, /**< relaxation handler */
3010  int priority /**< new priority of the relaxation handler */
3011  );
3012 
3013 /** creates a separator and includes it in SCIP.
3014  *
3015  * @note method has all separator callbacks as arguments and is thus changed every time a new
3016  * callback is added
3017  * in future releases; consider using SCIPincludeSepaBasic() and setter functions
3018  * if you seek for a method which is less likely to change in future releases
3019  */
3020 extern
3022  SCIP* scip, /**< SCIP data structure */
3023  const char* name, /**< name of separator */
3024  const char* desc, /**< description of separator */
3025  int priority, /**< priority of separator (>= 0: before, < 0: after constraint handlers) */
3026  int freq, /**< frequency for calling separator */
3027  SCIP_Real maxbounddist, /**< maximal relative distance from current node's dual bound to primal bound compared
3028  * to best node's dual bound for applying separation */
3029  SCIP_Bool usessubscip, /**< does the separator use a secondary SCIP instance? */
3030  SCIP_Bool delay, /**< should separator be delayed, if other separators found cuts? */
3031  SCIP_DECL_SEPACOPY ((*sepacopy)), /**< copy method of separator or NULL if you don't want to copy your plugin into sub-SCIPs */
3032  SCIP_DECL_SEPAFREE ((*sepafree)), /**< destructor of separator */
3033  SCIP_DECL_SEPAINIT ((*sepainit)), /**< initialize separator */
3034  SCIP_DECL_SEPAEXIT ((*sepaexit)), /**< deinitialize separator */
3035  SCIP_DECL_SEPAINITSOL ((*sepainitsol)), /**< solving process initialization method of separator */
3036  SCIP_DECL_SEPAEXITSOL ((*sepaexitsol)), /**< solving process deinitialization method of separator */
3037  SCIP_DECL_SEPAEXECLP ((*sepaexeclp)), /**< LP solution separation method of separator */
3038  SCIP_DECL_SEPAEXECSOL ((*sepaexecsol)), /**< arbitrary primal solution separation method of separator */
3039  SCIP_SEPADATA* sepadata /**< separator data */
3040  );
3041 
3042 /** creates a separator and includes it in SCIP with its most fundamental callbacks. All non-fundamental
3043  * (or optional) callbacks as, e.g., init and exit callbacks, will be set to NULL.
3044  * Optional callbacks can be set via specific setter functions, see SCIPsetSepaInit(), SCIPsetSepaFree(),
3045  * SCIPsetSepaInitsol(), SCIPsetSepaExitsol(), SCIPsetSepaCopy(), SCIPsetExit().
3046  *
3047  * @note if you want to set all callbacks with a single method call, consider using SCIPincludeSepa() instead
3048  */
3049 extern
3051  SCIP* scip, /**< SCIP data structure */
3052  SCIP_SEPA** sepa, /**< reference to a separator, or NULL */
3053  const char* name, /**< name of separator */
3054  const char* desc, /**< description of separator */
3055  int priority, /**< priority of separator (>= 0: before, < 0: after constraint handlers) */
3056  int freq, /**< frequency for calling separator */
3057  SCIP_Real maxbounddist, /**< maximal relative distance from current node's dual bound to primal bound compared
3058  * to best node's dual bound for applying separation */
3059  SCIP_Bool usessubscip, /**< does the separator use a secondary SCIP instance? */
3060  SCIP_Bool delay, /**< should separator be delayed, if other separators found cuts? */
3061  SCIP_DECL_SEPAEXECLP ((*sepaexeclp)), /**< LP solution separation method of separator */
3062  SCIP_DECL_SEPAEXECSOL ((*sepaexecsol)), /**< arbitrary primal solution separation method of separator */
3063  SCIP_SEPADATA* sepadata /**< separator data */
3064  );
3065 
3066 /** sets copy method of separator */
3067 extern
3069  SCIP* scip, /**< SCIP data structure */
3070  SCIP_SEPA* sepa, /**< separator */
3071  SCIP_DECL_SEPACOPY ((*sepacopy)) /**< copy method of separator or NULL if you don't want to copy your plugin into sub-SCIPs */
3072  );
3073 
3074 /** sets destructor method of separator */
3075 extern
3077  SCIP* scip, /**< SCIP data structure */
3078  SCIP_SEPA* sepa, /**< separator */
3079  SCIP_DECL_SEPAFREE ((*sepafree)) /**< destructor of separator */
3080  );
3081 
3082 /** sets initialization method of separator */
3083 extern
3085  SCIP* scip, /**< SCIP data structure */
3086  SCIP_SEPA* sepa, /**< separator */
3087  SCIP_DECL_SEPAINIT ((*sepainit)) /**< initialize separator */
3088  );
3089 
3090 /** sets deinitialization method of separator */
3091 extern
3093  SCIP* scip, /**< SCIP data structure */
3094  SCIP_SEPA* sepa, /**< separator */
3095  SCIP_DECL_SEPAEXIT ((*sepaexit)) /**< deinitialize separator */
3096  );
3097 
3098 /** sets solving process initialization method of separator */
3099 extern
3101  SCIP* scip, /**< SCIP data structure */
3102  SCIP_SEPA* sepa, /**< separator */
3103  SCIP_DECL_SEPAINITSOL ((*sepainitsol)) /**< solving process initialization method of separator */
3104  );
3105 
3106 /** sets solving process deinitialization method of separator */
3107 extern
3109  SCIP* scip, /**< SCIP data structure */
3110  SCIP_SEPA* sepa, /**< separator */
3111  SCIP_DECL_SEPAEXITSOL ((*sepaexitsol)) /**< solving process deinitialization method of separator */
3112  );
3113 
3114 /** returns the separator of the given name, or NULL if not existing */
3115 extern
3117  SCIP* scip, /**< SCIP data structure */
3118  const char* name /**< name of separator */
3119  );
3120 
3121 /** returns the array of currently available separators */
3122 extern
3124  SCIP* scip /**< SCIP data structure */
3125  );
3126 
3127 /** returns the number of currently available separators */
3128 extern
3129 int SCIPgetNSepas(
3130  SCIP* scip /**< SCIP data structure */
3131  );
3132 
3133 /** sets the priority of a separator */
3134 extern
3136  SCIP* scip, /**< SCIP data structure */
3137  SCIP_SEPA* sepa, /**< separator */
3138  int priority /**< new priority of the separator */
3139  );
3140 
3141 /** creates a propagator and includes it in SCIP.
3142  *
3143  * @note method has all propagator callbacks as arguments and is thus changed every time a new
3144  * callback is added
3145  * in future releases; consider using SCIPincludePropBasic() and setter functions
3146  * if you seek for a method which is less likely to change in future releases
3147  */
3148 extern
3150  SCIP* scip, /**< SCIP data structure */
3151  const char* name, /**< name of propagator */
3152  const char* desc, /**< description of propagator */
3153  int priority, /**< priority of the propagator (>= 0: before, < 0: after constraint handlers) */
3154  int freq, /**< frequency for calling propagator */
3155  SCIP_Bool delay, /**< should propagator be delayed, if other propagators found reductions? */
3156  SCIP_PROPTIMING timingmask, /**< positions in the node solving loop where propagators should be executed */
3157  int presolpriority, /**< priority of the propagator (>= 0: before, < 0: after constraint handlers) */
3158  int presolmaxrounds, /**< maximal number of presolving rounds the propagator participates in (-1: no limit) */
3159  SCIP_Bool presoldelay, /**< should presolving be delayed, if other presolvers found reductions? */
3160  SCIP_DECL_PROPCOPY ((*propcopy)), /**< copy method of propagator or NULL if you don't want to copy your plugin into sub-SCIPs */
3161  SCIP_DECL_PROPFREE ((*propfree)), /**< destructor of propagator */
3162  SCIP_DECL_PROPINIT ((*propinit)), /**< initialize propagator */
3163  SCIP_DECL_PROPEXIT ((*propexit)), /**< deinitialize propagator */
3164  SCIP_DECL_PROPINITPRE ((*propinitpre)), /**< presolving initialization method of propagator */
3165  SCIP_DECL_PROPEXITPRE ((*propexitpre)), /**< presolving deinitialization method of propagator */
3166  SCIP_DECL_PROPINITSOL ((*propinitsol)), /**< solving process initialization method of propagator */
3167  SCIP_DECL_PROPEXITSOL ((*propexitsol)), /**< solving process deinitialization method of propagator */
3168  SCIP_DECL_PROPPRESOL ((*proppresol)), /**< presolving method */
3169  SCIP_DECL_PROPEXEC ((*propexec)), /**< execution method of propagator */
3170  SCIP_DECL_PROPRESPROP ((*propresprop)), /**< propagation conflict resolving method */
3171  SCIP_PROPDATA* propdata /**< propagator data */
3172  );
3173 
3174 /** creates a propagator and includes it in SCIP. All non-fundamental (or optional) callbacks will be set to NULL.
3175  * Optional callbacks can be set via specific setter functions, see SCIPsetPropInit(), SCIPsetPropExit(),
3176  * SCIPsetPropCopy(), SCIPsetPropFree(), SCIPsetPropInitsol(), SCIPsetPropExitsol(),
3177  * SCIPsetPropInitpre(), SCIPsetPropExitpre(), SCIPsetPropPresol(), and SCIPsetPropResprop().
3178  *
3179  * @note if you want to set all callbacks with a single method call, consider using SCIPincludeProp() instead
3180  */
3181 extern
3183  SCIP* scip, /**< SCIP data structure */
3184  SCIP_PROP** propptr, /**< reference to a propagator pointer, or NULL */
3185  const char* name, /**< name of propagator */
3186  const char* desc, /**< description of propagator */
3187  int priority, /**< priority of the propagator (>= 0: before, < 0: after constraint handlers) */
3188  int freq, /**< frequency for calling propagator */
3189  SCIP_Bool delay, /**< should propagator be delayed, if other propagators found reductions? */
3190  SCIP_PROPTIMING timingmask, /**< positions in the node solving loop where propagators should be executed */
3191  SCIP_DECL_PROPEXEC ((*propexec)), /**< execution method of propagator */
3192  SCIP_PROPDATA* propdata /**< propagator data */
3193  );
3194 
3195 /** sets copy method of propagator */
3196 extern
3198  SCIP* scip, /**< SCIP data structure */
3199  SCIP_PROP* prop, /**< propagator */
3200  SCIP_DECL_PROPCOPY ((*propcopy)) /**< copy method of propagator or NULL if you don't want to copy your plugin into sub-SCIPs */
3201  );
3202 
3203 /** sets destructor method of propagator */
3204 extern
3206  SCIP* scip, /**< SCIP data structure */
3207  SCIP_PROP* prop, /**< propagator */
3208  SCIP_DECL_PROPFREE ((*propfree)) /**< destructor of propagator */
3209  );
3210 
3211 /** sets initialization method of propagator */
3212 extern
3214  SCIP* scip, /**< SCIP data structure */
3215  SCIP_PROP* prop, /**< propagator */
3216  SCIP_DECL_PROPINIT ((*propinit)) /**< initialize propagator */
3217  );
3218 
3219 /** sets deinitialization method of propagator */
3220 extern
3222  SCIP* scip, /**< SCIP data structure */
3223  SCIP_PROP* prop, /**< propagator */
3224  SCIP_DECL_PROPEXIT ((*propexit)) /**< deinitialize propagator */
3225  );
3226 
3227 /** sets solving process initialization method of propagator */
3228 extern
3230  SCIP* scip, /**< SCIP data structure */
3231  SCIP_PROP* prop, /**< propagator */
3232  SCIP_DECL_PROPINITSOL((*propinitsol)) /**< solving process initialization method of propagator */
3233  );
3234 
3235 /** sets solving process deinitialization method of propagator */
3236 extern
3238  SCIP* scip, /**< SCIP data structure */
3239  SCIP_PROP* prop, /**< propagator */
3240  SCIP_DECL_PROPEXITSOL ((*propexitsol)) /**< solving process deinitialization method of propagator */
3241  );
3242 
3243 /** sets preprocessing initialization method of propagator */
3244 extern
3246  SCIP* scip, /**< SCIP data structure */
3247  SCIP_PROP* prop, /**< propagator */
3248  SCIP_DECL_PROPINITPRE((*propinitpre)) /**< preprocessing initialization method of propagator */
3249  );
3250 
3251 /** sets preprocessing deinitialization method of propagator */
3252 extern
3254  SCIP* scip, /**< SCIP data structure */
3255  SCIP_PROP* prop, /**< propagator */
3256  SCIP_DECL_PROPEXITPRE((*propexitpre)) /**< preprocessing deinitialization method of propagator */
3257  );
3258 
3259 /** sets presolving method of propagator */
3260 extern
3262  SCIP* scip, /**< SCIP data structure */
3263  SCIP_PROP* prop, /**< propagator */
3264  SCIP_DECL_PROPPRESOL((*proppresol)), /**< presolving method of propagator */
3265  int presolpriority, /**< presolving priority of the propagator (>= 0: before, < 0: after constraint handlers) */
3266  int presolmaxrounds, /**< maximal number of presolving rounds the propagator participates in (-1: no limit) */
3267  SCIP_Bool presoldelay /**< should presolving be delayed, if other presolvers found reductions? */
3268  );
3269 
3270 /** sets propagation conflict resolving callback of propagator */
3271 extern
3273  SCIP* scip, /**< SCIP data structure */
3274  SCIP_PROP* prop, /**< propagator */
3275  SCIP_DECL_PROPRESPROP ((*propresprop)) /**< propagation conflict resolving callback */
3276  );
3277 
3278 /** returns the propagator of the given name, or NULL if not existing */
3279 extern
3281  SCIP* scip, /**< SCIP data structure */
3282  const char* name /**< name of propagator */
3283  );
3284 
3285 /** returns the array of currently available propagators */
3286 extern
3288  SCIP* scip /**< SCIP data structure */
3289  );
3290 
3291 /** returns the number of currently available propagators */
3292 extern
3293 int SCIPgetNProps(
3294  SCIP* scip /**< SCIP data structure */
3295  );
3296 
3297 /** sets the priority of a propagator */
3298 extern
3300  SCIP* scip, /**< SCIP data structure */
3301  SCIP_PROP* prop, /**< propagator */
3302  int priority /**< new priority of the propagator */
3303  );
3304 
3305 /** sets the presolving priority of a propagator */
3306 extern
3308  SCIP* scip, /**< SCIP data structure */
3309  SCIP_PROP* prop, /**< propagator */
3310  int presolpriority /**< new presol priority of the propagator */
3311  );
3312 
3313 
3314 /** creates a primal heuristic and includes it in SCIP.
3315  *
3316  * @note method has all heuristic callbacks as arguments and is thus changed every time a new
3317  * callback is added in future releases; consider using SCIPincludeHeurBasic() and setter functions
3318  * if you seek for a method which is less likely to change in future releases
3319  */
3320 extern
3322  SCIP* scip, /**< SCIP data structure */
3323  const char* name, /**< name of primal heuristic */
3324  const char* desc, /**< description of primal heuristic */
3325  char dispchar, /**< display character of primal heuristic */
3326  int priority, /**< priority of the primal heuristic */
3327  int freq, /**< frequency for calling primal heuristic */
3328  int freqofs, /**< frequency offset for calling primal heuristic */
3329  int maxdepth, /**< maximal depth level to call heuristic at (-1: no limit) */
3330  unsigned int timingmask, /**< positions in the node solving loop where heuristic should be executed;
3331  * see definition of SCIP_HeurTiming for possible values */
3332  SCIP_Bool usessubscip, /**< does the heuristic use a secondary SCIP instance? */
3333  SCIP_DECL_HEURCOPY ((*heurcopy)), /**< copy method of primal heuristic or NULL if you don't want to copy your plugin into sub-SCIPs */
3334  SCIP_DECL_HEURFREE ((*heurfree)), /**< destructor of primal heuristic */
3335  SCIP_DECL_HEURINIT ((*heurinit)), /**< initialize primal heuristic */
3336  SCIP_DECL_HEUREXIT ((*heurexit)), /**< deinitialize primal heuristic */
3337  SCIP_DECL_HEURINITSOL ((*heurinitsol)), /**< solving process initialization method of primal heuristic */
3338  SCIP_DECL_HEUREXITSOL ((*heurexitsol)), /**< solving process deinitialization method of primal heuristic */
3339  SCIP_DECL_HEUREXEC ((*heurexec)), /**< execution method of primal heuristic */
3340  SCIP_HEURDATA* heurdata /**< primal heuristic data */
3341  );
3342 
3343 /** creates a primal heuristic and includes it in SCIP with its most fundamental callbacks.
3344  * All non-fundamental (or optional) callbacks
3345  * as, e. g., init and exit callbacks, will be set to NULL.
3346  * Optional callbacks can be set via specific setter functions, see SCIPsetHeurCopy(), SCIPsetHeurFree(),
3347  * SCIPsetHeurInit(), SCIPsetHeurExit(), SCIPsetHeurInitsol(), and SCIPsetHeurExitsol()
3348  *
3349 * @note if you want to set all callbacks with a single method call, consider using SCIPincludeHeur() instead
3350  */
3351 extern
3353  SCIP* scip, /**< SCIP data structure */
3354  SCIP_HEUR** heur, /**< pointer to the heuristic */
3355  const char* name, /**< name of primal heuristic */
3356  const char* desc, /**< description of primal heuristic */
3357  char dispchar, /**< display character of primal heuristic */
3358  int priority, /**< priority of the primal heuristic */
3359  int freq, /**< frequency for calling primal heuristic */
3360  int freqofs, /**< frequency offset for calling primal heuristic */
3361  int maxdepth, /**< maximal depth level to call heuristic at (-1: no limit) */
3362  unsigned int timingmask, /**< positions in the node solving loop where heuristic should be executed;
3363  * see definition of SCIP_HeurTiming for possible values */
3364  SCIP_Bool usessubscip, /**< does the heuristic use a secondary SCIP instance? */
3365  SCIP_DECL_HEUREXEC ((*heurexec)), /**< execution method of primal heuristic */
3366  SCIP_HEURDATA* heurdata /**< primal heuristic data */
3367  );
3368 
3369 /** sets copy method of primal heuristic */
3370 extern
3372  SCIP* scip, /**< SCIP data structure */
3373  SCIP_HEUR* heur, /**< primal heuristic */
3374  SCIP_DECL_HEURCOPY ((*heurcopy)) /**< copy method of primal heuristic or NULL if you don't want to copy your plugin into sub-SCIPs */
3375  );
3376 
3377 /** sets destructor method of primal heuristic */
3378 extern
3380  SCIP* scip, /**< SCIP data structure */
3381  SCIP_HEUR* heur, /**< primal heuristic */
3382  SCIP_DECL_HEURFREE ((*heurfree)) /**< destructor of primal heuristic */
3383  );
3384 
3385 /** sets initialization method of primal heuristic */
3386 extern
3388  SCIP* scip, /**< SCIP data structure */
3389  SCIP_HEUR* heur, /**< primal heuristic */
3390  SCIP_DECL_HEURINIT ((*heurinit)) /**< initialize primal heuristic */
3391  );
3392 
3393 /** sets deinitialization method of primal heuristic */
3394 extern
3396  SCIP* scip, /**< SCIP data structure */
3397  SCIP_HEUR* heur, /**< primal heuristic */
3398  SCIP_DECL_HEUREXIT ((*heurexit)) /**< deinitialize primal heuristic */
3399  );
3400 
3401 /** sets solving process initialization method of primal heuristic */
3402 extern
3404  SCIP* scip, /**< SCIP data structure */
3405  SCIP_HEUR* heur, /**< primal heuristic */
3406  SCIP_DECL_HEURINITSOL ((*heurinitsol)) /**< solving process initialization method of primal heuristic */
3407  );
3408 
3409 /** sets solving process deinitialization method of primal heuristic */
3410 extern
3412  SCIP* scip, /**< SCIP data structure */
3413  SCIP_HEUR* heur, /**< primal heuristic */
3414  SCIP_DECL_HEUREXITSOL ((*heurexitsol)) /**< solving process deinitialization method of primal heuristic */
3415  );
3416 
3417 /** returns the primal heuristic of the given name, or NULL if not existing */
3418 extern
3420  SCIP* scip, /**< SCIP data structure */
3421  const char* name /**< name of primal heuristic */
3422  );
3423 
3424 /** returns the array of currently available primal heuristics */
3425 extern
3427  SCIP* scip /**< SCIP data structure */
3428  );
3429 
3430 /** returns the number of currently available primal heuristics */
3431 extern
3432 int SCIPgetNHeurs(
3433  SCIP* scip /**< SCIP data structure */
3434  );
3435 
3436 /** sets the priority of a primal heuristic */
3437 extern
3439  SCIP* scip, /**< SCIP data structure */
3440  SCIP_HEUR* heur, /**< primal heuristic */
3441  int priority /**< new priority of the primal heuristic */
3442  );
3443 
3444 /** creates an event handler and includes it in SCIP
3445  *
3446  * @note method has all event handler callbacks as arguments and is thus changed every time a new
3447  * callback is added in future releases; consider using SCIPincludeEventhdlrBasic() and setter functions
3448  * if you seek for a method which is less likely to change in future releases
3449  */
3450 extern
3452  SCIP* scip, /**< SCIP data structure */
3453  const char* name, /**< name of event handler */
3454  const char* desc, /**< description of event handler */
3455  SCIP_DECL_EVENTCOPY ((*eventcopy)), /**< copy method of event handler or NULL if you don't want to copy your plugin into sub-SCIPs */
3456  SCIP_DECL_EVENTFREE ((*eventfree)), /**< destructor of event handler */
3457  SCIP_DECL_EVENTINIT ((*eventinit)), /**< initialize event handler */
3458  SCIP_DECL_EVENTEXIT ((*eventexit)), /**< deinitialize event handler */
3459  SCIP_DECL_EVENTINITSOL((*eventinitsol)), /**< solving process initialization method of event handler */
3460  SCIP_DECL_EVENTEXITSOL((*eventexitsol)), /**< solving process deinitialization method of event handler */
3461  SCIP_DECL_EVENTDELETE ((*eventdelete)), /**< free specific event data */
3462  SCIP_DECL_EVENTEXEC ((*eventexec)), /**< execute event handler */
3463  SCIP_EVENTHDLRDATA* eventhdlrdata /**< event handler data */
3464  );
3465 
3466 /** creates an event handler and includes it in SCIP with all its non-fundamental callbacks set
3467  * to NULL; if needed, non-fundamental callbacks can be set afterwards via setter functions
3468  * SCIPsetEventhdlrCopy(), SCIPsetEventhdlrFree(), SCIPsetEventhdlrInit(), SCIPsetEventhdlrExit(),
3469  * SCIPsetEventhdlrInitsol(), SCIPsetEventhdlrExitsol(), and SCIPsetEventhdlrDelete()
3470  *
3471  * @note if you want to set all callbacks with a single method call, consider using SCIPincludeEventhdlr() instead
3472  */
3473 extern
3475  SCIP* scip, /**< SCIP data structure */
3476  SCIP_EVENTHDLR** eventhdlrptr, /**< reference to an event handler, or NULL */
3477  const char* name, /**< name of event handler */
3478  const char* desc, /**< description of event handler */
3479  SCIP_DECL_EVENTEXEC ((*eventexec)), /**< execute event handler */
3480  SCIP_EVENTHDLRDATA* eventhdlrdata /**< event handler data */
3481  );
3482 
3483 /** sets copy callback of the event handler */
3484 extern
3486  SCIP* scip, /**< scip instance */
3487  SCIP_EVENTHDLR* eventhdlr, /**< event handler */
3488  SCIP_DECL_EVENTCOPY ((*eventcopy)) /**< copy callback of the event handler */
3489  );
3490 
3491 /** sets deinitialization callback of the event handler */
3492 extern
3494  SCIP* scip, /**< scip instance */
3495  SCIP_EVENTHDLR* eventhdlr, /**< event handler */
3496  SCIP_DECL_EVENTFREE ((*eventfree)) /**< deinitialization callback of the event handler */
3497  );
3498 
3499 /** sets initialization callback of the event handler */
3500 extern
3502  SCIP* scip, /**< scip instance */
3503  SCIP_EVENTHDLR* eventhdlr, /**< event handler */
3504  SCIP_DECL_EVENTINIT ((*eventinit)) /**< initialize event handler */
3505  );
3506 
3507 /** sets deinitialization callback of the event handler */
3508 extern
3510  SCIP* scip, /**< scip instance */
3511  SCIP_EVENTHDLR* eventhdlr, /**< event handler */
3512  SCIP_DECL_EVENTEXIT ((*eventexit)) /**< deinitialize event handler */
3513  );
3514 
3515 /** sets solving process initialization callback of the event handler */
3516 extern
3518  SCIP* scip, /**< scip instance */
3519  SCIP_EVENTHDLR* eventhdlr, /**< event handler */
3520  SCIP_DECL_EVENTINITSOL((*eventinitsol)) /**< solving process initialization callback of event handler */
3521  );
3522 
3523 /** sets solving process deinitialization callback of the event handler */
3524 extern
3526  SCIP* scip, /**< scip instance */
3527  SCIP_EVENTHDLR* eventhdlr, /**< event handler */
3528  SCIP_DECL_EVENTEXITSOL((*eventexitsol)) /**< solving process deinitialization callback of event handler */
3529  );
3530 
3531 /** sets callback of the event handler to free specific event data */
3532 extern
3534  SCIP* scip, /**< scip instance */
3535  SCIP_EVENTHDLR* eventhdlr, /**< event handler */
3536  SCIP_DECL_EVENTDELETE ((*eventdelete)) /**< free specific event data */
3537  );
3538 
3539 /** returns the event handler of the given name, or NULL if not existing */
3540 extern
3542  SCIP* scip, /**< SCIP data structure */
3543  const char* name /**< name of event handler */
3544  );
3545 
3546 /** returns the array of currently available event handlers */
3547 extern
3549  SCIP* scip /**< SCIP data structure */
3550  );
3551 
3552 /** returns the number of currently available event handlers */
3553 extern
3554 int SCIPgetNEventhdlrs(
3555  SCIP* scip /**< SCIP data structure */
3556  );
3557 
3558 /** creates a node selector and includes it in SCIP.
3559  *
3560  * @note method has all node selector callbacks as arguments and is thus changed every time a new
3561  * callback is added in future releases; consider using SCIPincludeNodeselBasic() and setter functions
3562  * if you seek for a method which is less likely to change in future releases
3563  */
3564 extern
3566  SCIP* scip, /**< SCIP data structure */
3567  const char* name, /**< name of node selector */
3568  const char* desc, /**< description of node selector */
3569  int stdpriority, /**< priority of the node selector in standard mode */
3570  int memsavepriority, /**< priority of the node selector in memory saving mode */
3571  SCIP_DECL_NODESELCOPY ((*nodeselcopy)), /**< copy method of node selector or NULL if you don't want to copy your plugin into sub-SCIPs */
3572  SCIP_DECL_NODESELFREE ((*nodeselfree)), /**< destructor of node selector */
3573  SCIP_DECL_NODESELINIT ((*nodeselinit)), /**< initialize node selector */
3574  SCIP_DECL_NODESELEXIT ((*nodeselexit)), /**< deinitialize node selector */
3575  SCIP_DECL_NODESELINITSOL((*nodeselinitsol)),/**< solving process initialization method of node selector */
3576  SCIP_DECL_NODESELEXITSOL((*nodeselexitsol)),/**< solving process deinitialization method of node selector */
3577  SCIP_DECL_NODESELSELECT((*nodeselselect)),/**< node selection method */
3578  SCIP_DECL_NODESELCOMP ((*nodeselcomp)), /**< node comparison method */
3579  SCIP_NODESELDATA* nodeseldata /**< node selector data */
3580  );
3581 
3582 /** Creates a node selector and includes it in SCIP with its most fundamental callbacks. All non-fundamental
3583  * (or optional) callbacks as, e.g., init and exit callbacks, will be set to NULL.
3584  * Optional callbacks can be set via specific setter functions, see SCIPsetNodeselCopy(), SCIPsetNodeselFree(),
3585  * SCIPsetNodeselInit(), SCIPsetNodeselExit(), SCIPsetNodeselInitsol(), and SCIPsetNodeselExitsol()
3586  *
3587  * @note if you want to set all callbacks with a single method call, consider using SCIPincludeNodesel() instead
3588  */
3589 extern
3591  SCIP* scip, /**< SCIP data structure */
3592  SCIP_NODESEL** nodesel, /**< reference to a node selector, or NULL */
3593  const char* name, /**< name of node selector */
3594  const char* desc, /**< description of node selector */
3595  int stdpriority, /**< priority of the node selector in standard mode */
3596  int memsavepriority, /**< priority of the node selector in memory saving mode */
3597  SCIP_DECL_NODESELSELECT((*nodeselselect)),/**< node selection method */
3598  SCIP_DECL_NODESELCOMP ((*nodeselcomp)), /**< node comparison method */
3599  SCIP_NODESELDATA* nodeseldata /**< node selector data */
3600  );
3601 
3602 /** sets copy method of node selector */
3603 extern
3605  SCIP* scip, /**< SCIP data structure */
3606  SCIP_NODESEL* nodesel, /**< node selector */
3607  SCIP_DECL_NODESELCOPY ((*nodeselcopy)) /**< copy method of node selector or NULL if you don't want to copy your plugin into sub-SCIPs */
3608  );
3609 
3610 /** sets destructor method of node selector */
3611 extern
3613  SCIP* scip, /**< SCIP data structure */
3614  SCIP_NODESEL* nodesel, /**< node selector */
3615  SCIP_DECL_NODESELFREE ((*nodeselfree)) /**< destructor of node selector */
3616  );
3617 
3618 /** sets initialization method of node selector */
3619 extern
3621  SCIP* scip, /**< SCIP data structure */
3622  SCIP_NODESEL* nodesel, /**< node selector */
3623  SCIP_DECL_NODESELINIT ((*nodeselinit)) /**< initialize node selector */
3624  );
3625 
3626 /** sets deinitialization method of node selector */
3627 extern
3629  SCIP* scip, /**< SCIP data structure */
3630  SCIP_NODESEL* nodesel, /**< node selector */
3631  SCIP_DECL_NODESELEXIT ((*nodeselexit)) /**< deinitialize node selector */
3632  );
3633 
3634 /** sets solving process initialization method of node selector */
3635 extern
3637  SCIP* scip, /**< SCIP data structure */
3638  SCIP_NODESEL* nodesel, /**< node selector */
3639  SCIP_DECL_NODESELINITSOL ((*nodeselinitsol))/**< solving process initialization method of node selector */
3640  );
3641 
3642 /** sets solving process deinitialization method of node selector */
3643 extern
3645  SCIP* scip, /**< SCIP data structure */
3646  SCIP_NODESEL* nodesel, /**< node selector */
3647  SCIP_DECL_NODESELEXITSOL ((*nodeselexitsol))/**< solving process deinitialization method of node selector */
3648  );
3649 
3650 /** returns the node selector of the given name, or NULL if not existing */
3651 extern
3653  SCIP* scip, /**< SCIP data structure */
3654  const char* name /**< name of node selector */
3655  );
3656 
3657 /** returns the array of currently available node selectors */
3658 extern
3660  SCIP* scip /**< SCIP data structure */
3661  );
3662 
3663 /** returns the number of currently available node selectors */
3664 extern
3665 int SCIPgetNNodesels(
3666  SCIP* scip /**< SCIP data structure */
3667  );
3668 
3669 /** sets the priority of a node selector in standard mode */
3670 extern
3672  SCIP* scip, /**< SCIP data structure */
3673  SCIP_NODESEL* nodesel, /**< node selector */
3674  int priority /**< new standard priority of the node selector */
3675  );
3676 
3677 /** sets the priority of a node selector in memory saving mode */
3678 extern
3680  SCIP* scip, /**< SCIP data structure */
3681  SCIP_NODESEL* nodesel, /**< node selector */
3682  int priority /**< new memory saving priority of the node selector */
3683  );
3684 
3685 /** returns the currently used node selector */
3686 extern
3688  SCIP* scip /**< SCIP data structure */
3689  );
3690 
3691 /** creates a branching rule and includes it in SCIP
3692  *
3693  * @note method has all branching rule callbacks as arguments and is thus changed every time a new
3694  * callback is added in future releases; consider using SCIPincludeBranchruleBasic() and setter functions
3695  * if you seek for a method which is less likely to change in future releases
3696  */
3697 extern
3699  SCIP* scip, /**< SCIP data structure */
3700  const char* name, /**< name of branching rule */
3701  const char* desc, /**< description of branching rule */
3702  int priority, /**< priority of the branching rule */
3703  int maxdepth, /**< maximal depth level, up to which this branching rule should be used (or -1) */
3704  SCIP_Real maxbounddist, /**< maximal relative distance from current node's dual bound to primal bound
3705  * compared to best node's dual bound for applying branching rule
3706  * (0.0: only on current best node, 1.0: on all nodes) */
3707  SCIP_DECL_BRANCHCOPY ((*branchcopy)), /**< copy method of branching rule or NULL if you don't want to copy your plugin into sub-SCIPs */
3708  SCIP_DECL_BRANCHFREE ((*branchfree)), /**< destructor of branching rule */
3709  SCIP_DECL_BRANCHINIT ((*branchinit)), /**< initialize branching rule */
3710  SCIP_DECL_BRANCHEXIT ((*branchexit)), /**< deinitialize branching rule */
3711  SCIP_DECL_BRANCHINITSOL((*branchinitsol)),/**< solving process initialization method of branching rule */
3712  SCIP_DECL_BRANCHEXITSOL((*branchexitsol)),/**< solving process deinitialization method of branching rule */
3713  SCIP_DECL_BRANCHEXECLP((*branchexeclp)), /**< branching execution method for fractional LP solutions */
3714  SCIP_DECL_BRANCHEXECEXT((*branchexecext)),/**< branching execution method for external candidates */
3715  SCIP_DECL_BRANCHEXECPS((*branchexecps)), /**< branching execution method for not completely fixed pseudo solutions */
3716  SCIP_BRANCHRULEDATA* branchruledata /**< branching rule data */
3717  );
3718 
3719 /** creates a branching rule and includes it in SCIP. All non-fundamental (or optional) callbacks will be set to NULL.
3720  * Optional callbacks can be set via specific setter functions, see SCIPsetBranchruleInit(), SCIPsetBranchruleExit(),
3721  * SCIPsetBranchruleCopy(), SCIPsetBranchruleFree(), SCIPsetBranchruleInitsol(), SCIPsetBranchruleExitsol(),
3722  * SCIPsetBranchruleExecLp(), SCIPsetBranchruleExecExt(), and SCIPsetBranchruleExecPs().
3723  *
3724  * @note if you want to set all callbacks with a single method call, consider using SCIPincludeBranchrule() instead
3725  */
3726 extern
3728  SCIP* scip, /**< SCIP data structure */
3729  SCIP_BRANCHRULE** branchruleptr, /**< pointer to branching rule, or NULL */
3730  const char* name, /**< name of branching rule */
3731  const char* desc, /**< description of branching rule */
3732  int priority, /**< priority of the branching rule */
3733  int maxdepth, /**< maximal depth level, up to which this branching rule should be used (or -1) */
3734  SCIP_Real maxbounddist, /**< maximal relative distance from current node's dual bound to primal bound
3735  * compared to best node's dual bound for applying branching rule
3736  * (0.0: only on current best node, 1.0: on all nodes) */
3737  SCIP_BRANCHRULEDATA* branchruledata /**< branching rule data */
3738  );
3739 
3740 /** sets copy method of branching rule */
3741 extern
3743  SCIP* scip, /**< SCIP data structure */
3744  SCIP_BRANCHRULE* branchrule, /**< branching rule */
3745  SCIP_DECL_BRANCHCOPY ((*branchcopy)) /**< copy method of branching rule or NULL if you don't want to copy your plugin into sub-SCIPs */
3746  );
3747 
3748 /** sets destructor method of branching rule */
3749 extern
3751  SCIP* scip, /**< SCIP data structure */
3752  SCIP_BRANCHRULE* branchrule, /**< branching rule */
3753  SCIP_DECL_BRANCHFREE ((*branchfree)) /**< destructor of branching rule */
3754  );
3755 
3756 /** sets initialization method of branching rule */
3757 extern
3759  SCIP* scip, /**< SCIP data structure */
3760  SCIP_BRANCHRULE* branchrule, /**< branching rule */
3761  SCIP_DECL_BRANCHINIT ((*branchinit)) /**< initialize branching rule */
3762  );
3763 
3764 /** sets deinitialization method of branching rule */
3765 extern
3767  SCIP* scip, /**< SCIP data structure */
3768  SCIP_BRANCHRULE* branchrule, /**< branching rule */
3769  SCIP_DECL_BRANCHEXIT ((*branchexit)) /**< deinitialize branching rule */
3770  );
3771 
3772 /** sets solving process initialization method of branching rule */
3773 extern
3775  SCIP* scip, /**< SCIP data structure */
3776  SCIP_BRANCHRULE* branchrule, /**< branching rule */
3777  SCIP_DECL_BRANCHINITSOL((*branchinitsol)) /**< solving process initialization method of branching rule */
3778  );
3779 
3780 /** sets solving process deinitialization method of branching rule */
3781 extern
3783  SCIP* scip, /**< SCIP data structure */
3784  SCIP_BRANCHRULE* branchrule, /**< branching rule */
3785  SCIP_DECL_BRANCHEXITSOL((*branchexitsol)) /**< solving process deinitialization method of branching rule */
3786  );
3787 
3788 /** sets branching execution method for fractional LP solutions */
3789 extern
3791  SCIP* scip, /**< SCIP data structure */
3792  SCIP_BRANCHRULE* branchrule, /**< branching rule */
3793  SCIP_DECL_BRANCHEXECLP((*branchexeclp)) /**< branching execution method for fractional LP solutions */
3794  );
3795 
3796 /** sets branching execution method for external candidates */
3797 extern
3799  SCIP* scip, /**< SCIP data structure */
3800  SCIP_BRANCHRULE* branchrule, /**< branching rule */
3801  SCIP_DECL_BRANCHEXECEXT((*branchexecext)) /**< branching execution method for external candidates */
3802  );
3803 
3804 /** sets branching execution method for not completely fixed pseudo solutions */
3805 extern
3807  SCIP* scip, /**< SCIP data structure */
3808  SCIP_BRANCHRULE* branchrule, /**< branching rule */
3809  SCIP_DECL_BRANCHEXECPS((*branchexecps)) /**< branching execution method for not completely fixed pseudo solutions */
3810  );
3811 
3812 /** returns the branching rule of the given name, or NULL if not existing */
3813 extern
3815  SCIP* scip, /**< SCIP data structure */
3816  const char* name /**< name of branching rule */
3817  );
3818 
3819 /** returns the array of currently available branching rules */
3820 extern
3822  SCIP* scip /**< SCIP data structure */
3823  );
3824 
3825 /** returns the number of currently available branching rules */
3826 extern
3828  SCIP* scip /**< SCIP data structure */
3829  );
3830 
3831 /** sets the priority of a branching rule */
3832 extern
3834  SCIP* scip, /**< SCIP data structure */
3835  SCIP_BRANCHRULE* branchrule, /**< branching rule */
3836  int priority /**< new priority of the branching rule */
3837  );
3838 
3839 /** sets maximal depth level, up to which this branching rule should be used (-1 for no limit) */
3840 extern
3842  SCIP* scip, /**< SCIP data structure */
3843  SCIP_BRANCHRULE* branchrule, /**< branching rule */
3844  int maxdepth /**< new maxdepth of the branching rule */
3845  );
3846 
3847 /** sets maximal relative distance from current node's dual bound to primal bound for applying branching rule */
3848 extern
3850  SCIP* scip, /**< SCIP data structure */
3851  SCIP_BRANCHRULE* branchrule, /**< branching rule */
3852  SCIP_Real maxbounddist /**< new maxbounddist of the branching rule */
3853  );
3854 
3855 /** creates a display column and includes it in SCIP */
3856 extern
3858  SCIP* scip, /**< SCIP data structure */
3859  const char* name, /**< name of display column */
3860  const char* desc, /**< description of display column */
3861  const char* header, /**< head line of display column */
3862  SCIP_DISPSTATUS dispstatus, /**< display activation status of display column */
3863  SCIP_DECL_DISPCOPY ((*dispcopy)), /**< copy method of display column or NULL if you don't want to copy your plugin into sub-SCIPs */
3864  SCIP_DECL_DISPFREE ((*dispfree)), /**< destructor of display column */
3865  SCIP_DECL_DISPINIT ((*dispinit)), /**< initialize display column */
3866  SCIP_DECL_DISPEXIT ((*dispexit)), /**< deinitialize display column */
3867  SCIP_DECL_DISPINITSOL ((*dispinitsol)), /**< solving process initialization method of display column */
3868  SCIP_DECL_DISPEXITSOL ((*dispexitsol)), /**< solving process deinitialization method of display column */
3869  SCIP_DECL_DISPOUTPUT ((*dispoutput)), /**< output method */
3870  SCIP_DISPDATA* dispdata, /**< display column data */
3871  int width, /**< width of display column (no. of chars used) */
3872  int priority, /**< priority of display column */
3873  int position, /**< relative position of display column */
3874  SCIP_Bool stripline /**< should the column be separated with a line from its right neighbor? */
3875  );
3876 
3877 /** returns the display column of the given name, or NULL if not existing */
3878 extern
3880  SCIP* scip, /**< SCIP data structure */
3881  const char* name /**< name of display column */
3882  );
3883 
3884 /** returns the array of currently available display columns */
3885 extern
3887  SCIP* scip /**< SCIP data structure */
3888  );
3889 
3890 /** returns the number of currently available display columns */
3891 extern
3892 int SCIPgetNDisps(
3893  SCIP* scip /**< SCIP data structure */
3894  );
3895 
3896 /** automatically selects display columns for being shown w.r.t. the display width parameter */
3897 extern
3899  SCIP* scip /**< SCIP data structure */
3900  );
3901 
3902 /** includes an NLPI in SCIP */
3903 extern
3905  SCIP* scip, /**< SCIP data structure */
3906  SCIP_NLPI* nlpi /**< NLPI data structure */
3907  );
3908 
3909 /** returns the NLPI of the given name, or NULL if not existing */
3910 extern
3912  SCIP* scip, /**< SCIP data structure */
3913  const char* name /**< name of NLPI */
3914  );
3915 
3916 /** returns the array of currently available NLPIs (sorted by priority) */
3917 extern
3919  SCIP* scip /**< SCIP data structure */
3920  );
3921 
3922 /** returns the number of currently available NLPIs */
3923 extern
3924 int SCIPgetNNlpis(
3925  SCIP* scip /**< SCIP data structure */
3926  );
3927 
3928 /** sets the priority of an NLPI */
3929 extern
3931  SCIP* scip, /**< SCIP data structure */
3932  SCIP_NLPI* nlpi, /**< NLPI */
3933  int priority /**< new priority of the NLPI */
3934  );
3935 
3936 /** includes information about an external code linked into the SCIP library */
3937 extern
3939  SCIP* scip, /**< SCIP data structure */
3940  const char* name, /**< name of external code */
3941  const char* description /**< description of external code, or NULL */
3942  );
3943 
3944 /** returns an array of names of currently included external codes */
3945 extern
3947  SCIP* scip /**< SCIP data structure */
3948  );
3949 
3950 /** returns an array of the descriptions of currently included external codes
3951  *
3952  * @note some descriptions may be NULL
3953  */
3954 extern
3956  SCIP* scip /**< SCIP data structure */
3957  );
3958 
3959 /** returns the number of currently included information on external codes */
3960 extern
3962  SCIP* scip /**< SCIP data structure */
3963  );
3964 
3965 /** prints information on external codes to a file stream via the message handler system
3966  *
3967  * @note If the message handler is set to a NULL pointer nothing will be printed
3968  */
3969 extern
3971  SCIP* scip, /**< SCIP data structure */
3972  FILE* file /**< output file (or NULL for standard output) */
3973  );
3974 
3975 /**@} */
3976 
3977 
3978 
3979 
3980 /*
3981  * user interactive dialog methods
3982  */
3983 
3984 /**@name User Interactive Dialog Methods */
3985 /**@{ */
3986 
3987 /** creates and includes dialog
3988  *
3989  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
3990  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
3991  */
3992 extern
3994  SCIP* scip, /**< SCIP data structure */
3995  SCIP_DIALOG** dialog, /**< pointer to store the dialog */
3996  SCIP_DECL_DIALOGCOPY ((*dialogcopy)), /**< copy method of dialog or NULL if you don't want to copy your plugin into sub-SCIPs */
3997  SCIP_DECL_DIALOGEXEC ((*dialogexec)), /**< execution method of dialog */
3998  SCIP_DECL_DIALOGDESC ((*dialogdesc)), /**< description output method of dialog, or NULL */
3999  SCIP_DECL_DIALOGFREE ((*dialogfree)), /**< destructor of dialog to free user data, or NULL */
4000  const char* name, /**< name of dialog: command name appearing in parent's dialog menu */
4001  const char* desc, /**< description of dialog used if description output method is NULL */
4002  SCIP_Bool issubmenu, /**< is the dialog a submenu? */
4003  SCIP_DIALOGDATA* dialogdata /**< user defined dialog data */
4004  );
4005 
4006 /** returns if the dialog already exists
4007  *
4008  * @return TRUE is returned if the dialog exits, otherwise FALSE.
4009  */
4010 extern
4012  SCIP* scip, /**< SCIP data structure */
4013  SCIP_DIALOG* dialog /**< dialog */
4014  );
4015 
4016 /** captures a dialog
4017  *
4018  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4019  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4020  */
4021 extern
4023  SCIP* scip, /**< SCIP data structure */
4024  SCIP_DIALOG* dialog /**< dialog */
4025  );
4026 
4027 /** releases a dialog
4028  *
4029  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4030  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4031  */
4032 extern
4034  SCIP* scip, /**< SCIP data structure */
4035  SCIP_DIALOG** dialog /**< pointer to the dialog */
4036  );
4037 
4038 /** makes given dialog the root dialog of SCIP's interactive user shell; captures dialog and releases former root dialog
4039  *
4040  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4041  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4042  */
4043 extern
4045  SCIP* scip, /**< SCIP data structure */
4046  SCIP_DIALOG* dialog /**< dialog to be the root */
4047  );
4048 
4049 /** returns the root dialog of SCIP's interactive user shell
4050  *
4051  * @return the root dialog of SCIP's interactive user shell is returned.
4052  */
4053 extern
4055  SCIP* scip /**< SCIP data structure */
4056  );
4057 
4058 /** adds a sub dialog to the given dialog as menu entry and captures it
4059  *
4060  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4061  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4062  */
4063 extern
4065  SCIP* scip, /**< SCIP data structure */
4066  SCIP_DIALOG* dialog, /**< dialog to extend, or NULL for root dialog */
4067  SCIP_DIALOG* subdialog /**< subdialog to add as menu entry in dialog */
4068  );
4069 
4070 /** adds a single line of input which is treated as if the user entered the command line
4071  *
4072  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4073  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4074  */
4075 extern
4077  SCIP* scip, /**< SCIP data structure */
4078  const char* inputline /**< input line to add */
4079  );
4080 
4081 /** adds a single line of input to the command history which can be accessed with the cursor keys
4082  *
4083  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4084  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4085  */
4086 extern
4088  SCIP* scip, /**< SCIP data structure */
4089  const char* inputline /**< input line to add */
4090  );
4091 
4092 /** starts interactive mode of SCIP by executing the root dialog
4093  *
4094  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4095  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4096  *
4097  * @pre This method can be called if @p scip is in one of the following stages:
4098  * - \ref SCIP_STAGE_INIT
4099  * - \ref SCIP_STAGE_FREE
4100  *
4101  * @post After calling this method \SCIP reaches one of the following stages depending on if and when the
4102  * interactive shell was closed:
4103  * - \ref SCIP_STAGE_PROBLEM if the interactive shell was closed after the problem was created
4104  * - \ref SCIP_STAGE_TRANSFORMED if the interactive shell was closed after the problem was transformed
4105  * - \ref SCIP_STAGE_PRESOLVING if the interactive shell was closed during presolving
4106  * - \ref SCIP_STAGE_PRESOLVED if the interactive shell was closed after presolve
4107  * - \ref SCIP_STAGE_SOLVING if the interactive shell was closed during the tree search
4108  * - \ref SCIP_STAGE_SOLVED if the interactive shell was closed after the problem was solved
4109  * - \ref SCIP_STAGE_FREE if the interactive shell was closed after the problem was freed
4110  *
4111  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
4112  */
4113 extern
4115  SCIP* scip /**< SCIP data structure */
4116  );
4117 
4118 /**@} */
4119 
4120 
4121 
4122 
4123 /*
4124  * global problem methods
4125  */
4126 
4127 /**@name Global Problem Methods */
4128 /**@{ */
4129 
4130 /** creates empty problem and initializes all solving data structures (the objective sense is set to MINIMIZE)
4131  * If the problem type requires the use of variable pricers, these pricers should be added to the problem with calls
4132  * to SCIPactivatePricer(). These pricers are automatically deactivated, when the problem is freed.
4133  *
4134  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4135  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4136  *
4137  * @pre This method can be called if @p scip is in one of the following stages:
4138  * - \ref SCIP_STAGE_INIT
4139  * - \ref SCIP_STAGE_PROBLEM
4140  * - \ref SCIP_STAGE_TRANSFORMED
4141  * - \ref SCIP_STAGE_PRESOLVING
4142  * - \ref SCIP_STAGE_PRESOLVED
4143  * - \ref SCIP_STAGE_SOLVING
4144  * - \ref SCIP_STAGE_SOLVED
4145  * - \ref SCIP_STAGE_FREE
4146  *
4147  * @post After calling this method, \SCIP reaches the following stage:
4148  * - \ref SCIP_STAGE_PROBLEM
4149  */
4150 extern
4152  SCIP* scip, /**< SCIP data structure */
4153  const char* name, /**< problem name */
4154  SCIP_DECL_PROBDELORIG ((*probdelorig)), /**< frees user data of original problem */
4155  SCIP_DECL_PROBTRANS ((*probtrans)), /**< creates user data of transformed problem by transforming original user data */
4156  SCIP_DECL_PROBDELTRANS((*probdeltrans)), /**< frees user data of transformed problem */
4157  SCIP_DECL_PROBINITSOL ((*probinitsol)), /**< solving process initialization method of transformed data */
4158  SCIP_DECL_PROBEXITSOL ((*probexitsol)), /**< solving process deinitialization method of transformed data */
4159  SCIP_DECL_PROBCOPY ((*probcopy)), /**< copies user data if you want to copy it to a subscip, or NULL */
4160  SCIP_PROBDATA* probdata /**< user problem data set by the reader */
4161  );
4162 
4163 /** creates empty problem and initializes all solving data structures (the objective sense is set to MINIMIZE)
4164  * all callback methods will be set to NULL and can be set afterwards, if needed, via SCIPsetProbDelorig(),
4165  * SCIPsetProbTrans(), SCIPsetProbDeltrans(), SCIPsetProbInitsol(), SCIPsetProbExitsol(), and
4166  * SCIPsetProbCopy()
4167  * If the problem type requires the use of variable pricers, these pricers should be added to the problem with calls
4168  * to SCIPactivatePricer(). These pricers are automatically deactivated, when the problem is freed.
4169  *
4170  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4171  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4172  *
4173  * @pre This method can be called if @p scip is in one of the following stages:
4174  * - \ref SCIP_STAGE_INIT
4175  * - \ref SCIP_STAGE_PROBLEM
4176  * - \ref SCIP_STAGE_TRANSFORMED
4177  * - \ref SCIP_STAGE_PRESOLVING
4178  * - \ref SCIP_STAGE_PRESOLVED
4179  * - \ref SCIP_STAGE_SOLVING
4180  * - \ref SCIP_STAGE_SOLVED
4181  * - \ref SCIP_STAGE_FREE
4182  *
4183  * @post After calling this method, \SCIP reaches the following stage:
4184  * - \ref SCIP_STAGE_PROBLEM
4185  */
4186 extern
4188  SCIP* scip, /**< SCIP data structure */
4189  const char* name /**< problem name */
4190  );
4191 
4192 /** sets callback to free user data of original problem
4193  *
4194  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4195  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4196  *
4197  * @pre This method can be called if @p scip is in one of the following stages:
4198  * - \ref SCIP_STAGE_PROBLEM
4199  */
4201  SCIP* scip, /**< SCIP data structure */
4202  SCIP_DECL_PROBDELORIG ((*probdelorig)) /**< frees user data of original problem */
4203  );
4204 
4205 /** sets callback to create user data of transformed problem by transforming original user data
4206  *
4207  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4208  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4209  *
4210  * @pre This method can be called if @p scip is in one of the following stages:
4211  * - \ref SCIP_STAGE_PROBLEM
4212  */
4213 extern
4215  SCIP* scip, /**< SCIP data structure */
4216  SCIP_DECL_PROBTRANS ((*probtrans)) /**< creates user data of transformed problem by transforming original user data */
4217  );
4218 
4219 /** sets callback to free user data of transformed problem
4220  *
4221  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4222  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4223  *
4224  * @pre This method can be called if @p scip is in one of the following stages:
4225  * - \ref SCIP_STAGE_PROBLEM
4226  */
4227 extern
4229  SCIP* scip, /**< SCIP data structure */
4230  SCIP_DECL_PROBDELTRANS((*probdeltrans)) /**< frees user data of transformed problem */
4231  );
4232 
4233 /** sets solving process initialization callback of transformed data
4234  *
4235  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4236  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4237  *
4238  * @pre This method can be called if @p scip is in one of the following stages:
4239  * - \ref SCIP_STAGE_PROBLEM
4240  */
4241 extern
4243  SCIP* scip, /**< SCIP data structure */
4244  SCIP_DECL_PROBINITSOL ((*probinitsol)) /**< solving process initialization method of transformed data */
4245  );
4246 
4247 /** sets solving process deinitialization callback of transformed data
4248  *
4249  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4250  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4251  *
4252  * @pre This method can be called if @p scip is in one of the following stages:
4253  * - \ref SCIP_STAGE_PROBLEM
4254  */
4255 extern
4257  SCIP* scip, /**< SCIP data structure */
4258  SCIP_DECL_PROBEXITSOL ((*probexitsol)) /**< solving process deinitialization method of transformed data */
4259  );
4260 
4261 /** sets callback to copy user data to a subscip
4262  *
4263  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4264  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4265  *
4266  * @pre This method can be called if @p scip is in one of the following stages:
4267  * - \ref SCIP_STAGE_PROBLEM
4268  */
4269 extern
4271  SCIP* scip, /**< SCIP data structure */
4272  SCIP_DECL_PROBCOPY ((*probcopy)) /**< copies user data if you want to copy it to a subscip, or NULL */
4273  );
4274 
4275 /** reads problem from file and initializes all solving data structures
4276  *
4277  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4278  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4279  *
4280  * @pre This method can be called if @p scip is in one of the following stages:
4281  * - \ref SCIP_STAGE_INIT
4282  * - \ref SCIP_STAGE_PROBLEM
4283  * - \ref SCIP_STAGE_TRANSFORMED
4284  * - \ref SCIP_STAGE_INITPRESOLVE
4285  * - \ref SCIP_STAGE_PRESOLVING
4286  * - \ref SCIP_STAGE_EXITPRESOLVE
4287  * - \ref SCIP_STAGE_PRESOLVED
4288  * - \ref SCIP_STAGE_SOLVING
4289  * - \ref SCIP_STAGE_EXITSOLVE
4290  *
4291  * @post After the method was called, \SCIP is in one of the following stages:
4292  * -\ref SCIP_STAGE_INIT if reading failed (usually, when a SCIP_READERROR occurs)
4293  * - ref SCIP_STAGE_PROBLEM if the problem file was successfully read
4294  */
4295 extern
4297  SCIP* scip, /**< SCIP data structure */
4298  const char* filename, /**< problem file name */
4299  const char* extension /**< extension of the desired file reader,
4300  * or NULL if file extension should be used */
4301  );
4302 
4303 /** writes original problem to file
4304  *
4305  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4306  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4307  *
4308  * @pre This method can be called if @p scip is in one of the following stages:
4309  * - \ref SCIP_STAGE_PROBLEM
4310  * - \ref SCIP_STAGE_TRANSFORMING
4311  * - \ref SCIP_STAGE_TRANSFORMED
4312  * - \ref SCIP_STAGE_INITPRESOLVE
4313  * - \ref SCIP_STAGE_PRESOLVING
4314  * - \ref SCIP_STAGE_EXITPRESOLVE
4315  * - \ref SCIP_STAGE_PRESOLVED
4316  * - \ref SCIP_STAGE_INITSOLVE
4317  * - \ref SCIP_STAGE_SOLVING
4318  * - \ref SCIP_STAGE_SOLVED
4319  * - \ref SCIP_STAGE_EXITSOLVE
4320  * - \ref SCIP_STAGE_FREETRANS
4321  */
4322 extern
4324  SCIP* scip, /**< SCIP data structure */
4325  const char* filename, /**< output file (or NULL for standard output) */
4326  const char* extension, /**< extension of the desired file reader,
4327  * or NULL if file extension should be used */
4328  SCIP_Bool genericnames /**< use generic variable and constraint names? */
4329  );
4330 
4331 /** writes transformed problem which are valid in the current node to file
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  * @pre This method can be called if @p scip is in one of the following stages:
4337  * - \ref SCIP_STAGE_TRANSFORMED
4338  * - \ref SCIP_STAGE_INITPRESOLVE
4339  * - \ref SCIP_STAGE_PRESOLVING
4340  * - \ref SCIP_STAGE_EXITPRESOLVE
4341  * - \ref SCIP_STAGE_PRESOLVED
4342  * - \ref SCIP_STAGE_INITSOLVE
4343  * - \ref SCIP_STAGE_SOLVING
4344  * - \ref SCIP_STAGE_SOLVED
4345  * - \ref SCIP_STAGE_EXITSOLVE
4346  *
4347  * @note If you want the write all constraints (including the once which are redundant for example), you need to set
4348  * the parameter <write/allconss> to TRUE
4349  */
4350 extern
4352  SCIP* scip, /**< SCIP data structure */
4353  const char* filename, /**< output file (or NULL for standard output) */
4354  const char* extension, /**< extension of the desired file reader,
4355  * or NULL if file extension should be used */
4356  SCIP_Bool genericnames /**< using generic variable and constraint names? */
4357  );
4358 
4359 /** frees problem and solution process data
4360  *
4361  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4362  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4363  *
4364  * @pre This method can be called if @p scip is in one of the following stages:
4365  * - \ref SCIP_STAGE_INIT
4366  * - \ref SCIP_STAGE_PROBLEM
4367  * - \ref SCIP_STAGE_TRANSFORMED
4368  * - \ref SCIP_STAGE_PRESOLVING
4369  * - \ref SCIP_STAGE_PRESOLVED
4370  * - \ref SCIP_STAGE_SOLVING
4371  * - \ref SCIP_STAGE_SOLVED
4372  * - \ref SCIP_STAGE_FREE
4373  *
4374  * @post After this method was called, SCIP is in the following stage:
4375  * - \ref SCIP_STAGE_INIT
4376  */
4377 extern
4379  SCIP* scip /**< SCIP data structure */
4380  );
4381 
4382 /** permutes parts of the problem data structure
4383  *
4384  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4385  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4386  *
4387  * @pre This method can be called if @p scip is in one of the following stages:
4388  * - \ref SCIP_STAGE_PROBLEM
4389  * - \ref SCIP_STAGE_TRANSFORMED
4390  */
4391 extern
4393  SCIP* scip, /**< SCIP data structure */
4394  unsigned int randseed, /**< seed value for random generator */
4395  SCIP_Bool permuteconss, /**< should the list of constraints in each constraint handler be permuted? */
4396  SCIP_Bool permutebinvars, /**< should the list of binary variables be permuted? */
4397  SCIP_Bool permuteintvars, /**< should the list of integer variables be permuted? */
4398  SCIP_Bool permuteimplvars, /**< should the list of implicit integer variables be permuted? */
4399  SCIP_Bool permutecontvars /**< should the list of continuous integer variables be permuted? */
4400  );
4401 
4402 /** gets user problem data
4403  *
4404  * @return a SCIP_PROBDATA pointer, or NULL if no problem data was allocated
4405  *
4406  * @pre This method can be called if @p scip is in one of the following stages:
4407  * - \ref SCIP_STAGE_PROBLEM
4408  * - \ref SCIP_STAGE_TRANSFORMING
4409  * - \ref SCIP_STAGE_TRANSFORMED
4410  * - \ref SCIP_STAGE_INITPRESOLVE
4411  * - \ref SCIP_STAGE_PRESOLVING
4412  * - \ref SCIP_STAGE_EXITPRESOLVE
4413  * - \ref SCIP_STAGE_PRESOLVED
4414  * - \ref SCIP_STAGE_INITSOLVE
4415  * - \ref SCIP_STAGE_SOLVING
4416  * - \ref SCIP_STAGE_SOLVED
4417  * - \ref SCIP_STAGE_EXITSOLVE
4418  * - \ref SCIP_STAGE_FREETRANS
4419  */
4420 extern
4422  SCIP* scip /**< SCIP data structure */
4423  );
4424 
4425 /** sets user problem data
4426  *
4427  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4428  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4429  *
4430  * @pre This method can be called if @p scip is in one of the following stages:
4431  * - \ref SCIP_STAGE_PROBLEM
4432  * - \ref SCIP_STAGE_TRANSFORMING
4433  * - \ref SCIP_STAGE_TRANSFORMED
4434  * - \ref SCIP_STAGE_INITPRESOLVE
4435  * - \ref SCIP_STAGE_PRESOLVING
4436  * - \ref SCIP_STAGE_EXITPRESOLVE
4437  * - \ref SCIP_STAGE_PRESOLVED
4438  * - \ref SCIP_STAGE_INITSOLVE
4439  * - \ref SCIP_STAGE_SOLVING
4440  * - \ref SCIP_STAGE_SOLVED
4441  * - \ref SCIP_STAGE_EXITSOLVE
4442  * - \ref SCIP_STAGE_FREETRANS
4443  */
4444 extern
4446  SCIP* scip, /**< SCIP data structure */
4447  SCIP_PROBDATA* probdata /**< user problem data to use */
4448  );
4449 
4450 /** returns name of the current problem instance
4451  *
4452  * @return name of the current problem instance
4453  *
4454  * @pre This method can be called if @p scip is in one of the following stages:
4455  * - \ref SCIP_STAGE_PROBLEM
4456  * - \ref SCIP_STAGE_TRANSFORMING
4457  * - \ref SCIP_STAGE_TRANSFORMED
4458  * - \ref SCIP_STAGE_INITPRESOLVE
4459  * - \ref SCIP_STAGE_PRESOLVING
4460  * - \ref SCIP_STAGE_EXITPRESOLVE
4461  * - \ref SCIP_STAGE_PRESOLVED
4462  * - \ref SCIP_STAGE_INITSOLVE
4463  * - \ref SCIP_STAGE_SOLVING
4464  * - \ref SCIP_STAGE_SOLVED
4465  * - \ref SCIP_STAGE_EXITSOLVE
4466  * - \ref SCIP_STAGE_FREETRANS
4467  */
4468 extern
4469 const char* SCIPgetProbName(
4470  SCIP* scip /**< SCIP data structure */
4471  );
4472 
4473 /** sets name of the current problem instance
4474  *
4475  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4476  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4477  *
4478  * @pre This method can be called if @p scip is in one of the following stages:
4479  * - \ref SCIP_STAGE_PROBLEM
4480  * - \ref SCIP_STAGE_TRANSFORMING
4481  * - \ref SCIP_STAGE_TRANSFORMED
4482  * - \ref SCIP_STAGE_INITPRESOLVE
4483  * - \ref SCIP_STAGE_PRESOLVING
4484  * - \ref SCIP_STAGE_EXITPRESOLVE
4485  * - \ref SCIP_STAGE_PRESOLVED
4486  * - \ref SCIP_STAGE_INITSOLVE
4487  * - \ref SCIP_STAGE_SOLVING
4488  * - \ref SCIP_STAGE_SOLVED
4489  * - \ref SCIP_STAGE_EXITSOLVE
4490  * - \ref SCIP_STAGE_FREETRANS
4491  */
4492 extern
4494  SCIP* scip, /**< SCIP data structure */
4495  const char* name /**< name to be set */
4496  );
4497 
4498 /** returns objective sense of original problem
4499  *
4500  * @return objective sense of original problem
4501  *
4502  * @pre This method can be called if @p scip is in one of the following stages:
4503  * - \ref SCIP_STAGE_PROBLEM
4504  * - \ref SCIP_STAGE_TRANSFORMING
4505  * - \ref SCIP_STAGE_TRANSFORMED
4506  * - \ref SCIP_STAGE_INITPRESOLVE
4507  * - \ref SCIP_STAGE_PRESOLVING
4508  * - \ref SCIP_STAGE_EXITPRESOLVE
4509  * - \ref SCIP_STAGE_PRESOLVED
4510  * - \ref SCIP_STAGE_INITSOLVE
4511  * - \ref SCIP_STAGE_SOLVING
4512  * - \ref SCIP_STAGE_SOLVED
4513  * - \ref SCIP_STAGE_EXITSOLVE
4514  * - \ref SCIP_STAGE_FREETRANS
4515  */
4516 extern
4518  SCIP* scip /**< SCIP data structure */
4519  );
4520 
4521 /** sets objective sense of problem
4522  *
4523  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4524  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4525  *
4526  * @pre This method can be called if @p scip is in one of the following stages:
4527  * - \ref SCIP_STAGE_PROBLEM
4528  */
4529 extern
4531  SCIP* scip, /**< SCIP data structure */
4532  SCIP_OBJSENSE objsense /**< new objective sense */
4533  );
4534 
4535 /** adds offset of objective function
4536  *
4537  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4538  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4539  *
4540  * @pre This method can be called if @p scip is in one of the following stages:
4541  * - \ref SCIP_STAGE_PRESOLVING
4542  */
4543 extern
4545  SCIP* scip, /**< SCIP data structure */
4546  SCIP_Real addval /**< value to add to objective offset */
4547  );
4548 
4549 /** adds offset of objective function to original problem and to all existing solution in original space
4550  *
4551  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4552  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4553  *
4554  * @pre This method can be called if @p scip is in one of the following stages:
4555  * - \ref SCIP_STAGE_PROBLEM
4556  */
4557 extern
4559  SCIP* scip, /**< SCIP data structure */
4560  SCIP_Real addval /**< value to add to objective offset */
4561  );
4562 
4563 /** returns the objective offset of the original problem
4564  *
4565  * @return the objective offset of the original problem
4566  *
4567  * @pre This method can be called if @p scip is in one of the following stages:
4568  * - \ref SCIP_STAGE_PROBLEM
4569  * - \ref SCIP_STAGE_TRANSFORMING
4570  * - \ref SCIP_STAGE_TRANSFORMED
4571  * - \ref SCIP_STAGE_INITPRESOLVE
4572  * - \ref SCIP_STAGE_PRESOLVING
4573  * - \ref SCIP_STAGE_EXITPRESOLVE
4574  * - \ref SCIP_STAGE_PRESOLVED
4575  * - \ref SCIP_STAGE_INITSOLVE
4576  * - \ref SCIP_STAGE_SOLVING
4577  * - \ref SCIP_STAGE_SOLVED
4578  */
4579 extern
4581  SCIP* scip /**< SCIP data structure */
4582  );
4583 
4584 /** returns the objective scale of the original problem
4585  *
4586  * @return the objective scale of the original problem
4587  *
4588  * @pre This method can be called if @p scip is in one of the following stages:
4589  * - \ref SCIP_STAGE_PROBLEM
4590  * - \ref SCIP_STAGE_TRANSFORMING
4591  * - \ref SCIP_STAGE_TRANSFORMED
4592  * - \ref SCIP_STAGE_INITPRESOLVE
4593  * - \ref SCIP_STAGE_PRESOLVING
4594  * - \ref SCIP_STAGE_EXITPRESOLVE
4595  * - \ref SCIP_STAGE_PRESOLVED
4596  * - \ref SCIP_STAGE_INITSOLVE
4597  * - \ref SCIP_STAGE_SOLVING
4598  * - \ref SCIP_STAGE_SOLVED
4599  */
4600 extern
4602  SCIP* scip /**< SCIP data structure */
4603  );
4604 
4605 /** returns the objective offset of the transformed problem
4606  *
4607  * @return the objective offset of the transformed problem
4608  *
4609  * @pre This method can be called if @p scip is in one of the following stages:
4610  * - \ref SCIP_STAGE_TRANSFORMED
4611  * - \ref SCIP_STAGE_INITPRESOLVE
4612  * - \ref SCIP_STAGE_PRESOLVING
4613  * - \ref SCIP_STAGE_EXITPRESOLVE
4614  * - \ref SCIP_STAGE_PRESOLVED
4615  * - \ref SCIP_STAGE_INITSOLVE
4616  * - \ref SCIP_STAGE_SOLVING
4617  * - \ref SCIP_STAGE_SOLVED
4618  */
4619 extern
4621  SCIP* scip /**< SCIP data structure */
4622  );
4623 
4624 /** returns the objective scale of the transformed problem
4625  *
4626  * @return the objective scale of the transformed problem
4627  *
4628  * @pre This method can be called if @p scip is in one of the following stages:
4629  * - \ref SCIP_STAGE_TRANSFORMED
4630  * - \ref SCIP_STAGE_INITPRESOLVE
4631  * - \ref SCIP_STAGE_PRESOLVING
4632  * - \ref SCIP_STAGE_EXITPRESOLVE
4633  * - \ref SCIP_STAGE_PRESOLVED
4634  * - \ref SCIP_STAGE_INITSOLVE
4635  * - \ref SCIP_STAGE_SOLVING
4636  * - \ref SCIP_STAGE_SOLVED
4637  */
4638 extern
4640  SCIP* scip /**< SCIP data structure */
4641  );
4642 
4643 /** sets limit on objective function, such that only solutions better than this limit are accepted
4644  *
4645  * @note SCIP will only look for solutions with a strictly better objective value, thus, e.g., prune
4646  * all branch-and-bound nodes with dual bound equal or worse to the objective limit.
4647  * However, SCIP will also collect solutions with objective value worse than the objective limit and
4648  * use them to run improvement heuristics on them.
4649  * @note If SCIP can prove that there exists no solution with a strictly better objective value, the solving status
4650  * will normally be infeasible (the objective limit is interpreted as part of the problem).
4651  * The only exception is that by chance, SCIP found a solution with the same objective value and thus
4652  * proved the optimality of this solution, resulting in solution status optimal.
4653  *
4654  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4655  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4656  *
4657  * @pre This method can be called if @p scip is in one of the following stages:
4658  * - \ref SCIP_STAGE_PROBLEM
4659  * - \ref SCIP_STAGE_TRANSFORMED
4660  * - \ref SCIP_STAGE_INITPRESOLVE
4661  * - \ref SCIP_STAGE_PRESOLVING
4662  * - \ref SCIP_STAGE_EXITPRESOLVE
4663  * - \ref SCIP_STAGE_PRESOLVED
4664  * - \ref SCIP_STAGE_SOLVING
4665  */
4666 extern
4668  SCIP* scip, /**< SCIP data structure */
4669  SCIP_Real objlimit /**< new primal objective limit */
4670  );
4671 
4672 /** returns current limit on objective function
4673  *
4674  * @return the current objective limit of the original problem
4675  *
4676  * @pre This method can be called if @p scip is in one of the following stages:
4677  * - \ref SCIP_STAGE_PROBLEM
4678  * - \ref SCIP_STAGE_TRANSFORMING
4679  * - \ref SCIP_STAGE_TRANSFORMED
4680  * - \ref SCIP_STAGE_INITPRESOLVE
4681  * - \ref SCIP_STAGE_PRESOLVING
4682  * - \ref SCIP_STAGE_EXITPRESOLVE
4683  * - \ref SCIP_STAGE_PRESOLVED
4684  * - \ref SCIP_STAGE_INITSOLVE
4685  * - \ref SCIP_STAGE_SOLVING
4686  * - \ref SCIP_STAGE_SOLVED
4687  */
4688 extern
4690  SCIP* scip /**< SCIP data structure */
4691  );
4692 
4693 /** informs SCIP, that the objective value is always integral in every feasible solution
4694  *
4695  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
4696  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4697  *
4698  * @pre This method can be called if @p scip is in one of the following stages:
4699  * - \ref SCIP_STAGE_PROBLEM
4700  * - \ref SCIP_STAGE_TRANSFORMING
4701  * - \ref SCIP_STAGE_INITPRESOLVE
4702  * - \ref SCIP_STAGE_EXITPRESOLVE
4703  * - \ref SCIP_STAGE_SOLVING
4704  */
4705 extern
4707  SCIP* scip /**< SCIP data structure */
4708  );
4709 
4710 /** returns whether the objective value is known to be integral in every feasible solution
4711  *
4712  * @return TRUE, if objective value is known to be always integral, otherwise FALSE
4713  *
4714  * @pre This method can be called if @p scip is in one of the following stages:
4715  * - \ref SCIP_STAGE_PROBLEM
4716  * - \ref SCIP_STAGE_TRANSFORMING
4717  * - \ref SCIP_STAGE_INITPRESOLVE
4718  * - \ref SCIP_STAGE_PRESOLVING
4719  * - \ref SCIP_STAGE_EXITPRESOLVE
4720  * - \ref SCIP_STAGE_PRESOLVED
4721  * - \ref SCIP_STAGE_SOLVING
4722  */
4723 extern
4725  SCIP* scip /**< SCIP data structure */
4726  );
4727 
4728 /** returns the Euclidean norm of the objective function vector (available only for transformed problem)
4729  *
4730  * @return the Euclidean norm of the transformed objective function vector
4731  *
4732  * @pre This method can be called if @p scip is in one of the following stages:
4733  * - \ref SCIP_STAGE_TRANSFORMED
4734  * - \ref SCIP_STAGE_INITPRESOLVE
4735  * - \ref SCIP_STAGE_PRESOLVING
4736  * - \ref SCIP_STAGE_EXITPRESOLVE
4737  * - \ref SCIP_STAGE_PRESOLVED
4738  * - \ref SCIP_STAGE_INITSOLVE
4739  * - \ref SCIP_STAGE_SOLVING
4740  * - \ref SCIP_STAGE_SOLVED
4741  * - \ref SCIP_STAGE_EXITSOLVE
4742  */
4743 extern
4745  SCIP* scip /**< SCIP data structure */
4746  );
4747 
4748 /** adds variable to the problem
4749  *
4750  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
4751  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4752  *
4753  * @pre This method can be called if @p scip is in one of the following stages:
4754  * - \ref SCIP_STAGE_PROBLEM
4755  * - \ref SCIP_STAGE_TRANSFORMING
4756  * - \ref SCIP_STAGE_INITPRESOLVE
4757  * - \ref SCIP_STAGE_PRESOLVING
4758  * - \ref SCIP_STAGE_EXITPRESOLVE
4759  * - \ref SCIP_STAGE_PRESOLVED
4760  * - \ref SCIP_STAGE_SOLVING
4761  */
4762 extern
4764  SCIP* scip, /**< SCIP data structure */
4765  SCIP_VAR* var /**< variable to add */
4766  );
4767 
4768 /** adds variable to the problem and uses it as pricing candidate to enter the LP
4769  *
4770  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
4771  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4772  *
4773  * @pre This method can only be called if @p scip is in stage \ref SCIP_STAGE_SOLVING
4774  */
4775 extern
4777  SCIP* scip, /**< SCIP data structure */
4778  SCIP_VAR* var, /**< variable to add */
4779  SCIP_Real score /**< pricing score of variable (the larger, the better the variable) */
4780  );
4781 
4782 /** removes variable from the 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  * - \ref SCIP_STAGE_TRANSFORMING
4790  * - \ref SCIP_STAGE_TRANSFORMED
4791  * - \ref SCIP_STAGE_PRESOLVING
4792  * - \ref SCIP_STAGE_PRESOLVED
4793  * - \ref SCIP_STAGE_SOLVING
4794  * - \ref SCIP_STAGE_EXITSOLVE
4795  * - \ref SCIP_STAGE_FREETRANS
4796  */
4797 extern
4799  SCIP* scip, /**< SCIP data structure */
4800  SCIP_VAR* var, /**< variable to delete */
4801  SCIP_Bool* deleted /**< pointer to store whether variable was successfully marked to be deleted */
4802  );
4803 
4804 /** gets variables of the problem along with the numbers of different variable types; data may become invalid after
4805  * calls to SCIPchgVarType(), SCIPfixVar(), SCIPaggregateVars(), and SCIPmultiaggregateVar()
4806  *
4807  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
4808  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
4809  *
4810  * @pre This method can be called if @p scip is in one of the following stages:
4811  * - \ref SCIP_STAGE_PROBLEM
4812  * - \ref SCIP_STAGE_TRANSFORMED
4813  * - \ref SCIP_STAGE_INITPRESOLVE
4814  * - \ref SCIP_STAGE_PRESOLVING
4815  * - \ref SCIP_STAGE_EXITPRESOLVE
4816  * - \ref SCIP_STAGE_PRESOLVED
4817  * - \ref SCIP_STAGE_INITSOLVE
4818  * - \ref SCIP_STAGE_SOLVING
4819  * - \ref SCIP_STAGE_SOLVED
4820  * - \ref SCIP_STAGE_EXITSOLVE
4821  *
4822  * @note Variables in the vars array are ordered: binaries first, then integers, implicit integers and continuous last.
4823  */
4824 extern
4826  SCIP* scip, /**< SCIP data structure */
4827  SCIP_VAR*** vars, /**< pointer to store variables array or NULL if not needed */
4828  int* nvars, /**< pointer to store number of variables or NULL if not needed */
4829  int* nbinvars, /**< pointer to store number of binary variables or NULL if not needed */
4830  int* nintvars, /**< pointer to store number of integer variables or NULL if not needed */
4831  int* nimplvars, /**< pointer to store number of implicit integral vars or NULL if not needed */
4832  int* ncontvars /**< pointer to store number of continuous variables or NULL if not needed */
4833  );
4834 
4835 /** gets array with active problem variables
4836  *
4837  * @return array with active problem variables
4838  *
4839  * @pre This method can be called if @p scip is in one of the following stages:
4840  * - \ref SCIP_STAGE_PROBLEM
4841  * - \ref SCIP_STAGE_TRANSFORMED
4842  * - \ref SCIP_STAGE_INITPRESOLVE
4843  * - \ref SCIP_STAGE_PRESOLVING
4844  * - \ref SCIP_STAGE_EXITPRESOLVE
4845  * - \ref SCIP_STAGE_PRESOLVED
4846  * - \ref SCIP_STAGE_INITSOLVE
4847  * - \ref SCIP_STAGE_SOLVING
4848  * - \ref SCIP_STAGE_SOLVED
4849  * - \ref SCIP_STAGE_EXITSOLVE
4850  *
4851  * @warning If your are using the methods which add or change bound of variables (e.g., SCIPchgVarType(), SCIPfixVar(),
4852  * SCIPaggregateVars(), and SCIPmultiaggregateVar()), it can happen that the internal variable array (which is
4853  * accessed via this method) gets resized and/or resorted. This can invalid the data pointer which is returned
4854  * by this method.
4855  *
4856  * @note Variables in the array are ordered: binaries first, then integers, implicit integers and continuous last.
4857  */
4858 extern
4860  SCIP* scip /**< SCIP data structure */
4861  );
4862 
4863 /** gets number of active problem variables
4864  *
4865  * @return the number of active problem variables
4866  *
4867  * @pre This method can be called if @p scip is in one of the following stages:
4868  * - \ref SCIP_STAGE_PROBLEM
4869  * - \ref SCIP_STAGE_TRANSFORMED
4870  * - \ref SCIP_STAGE_INITPRESOLVE
4871  * - \ref SCIP_STAGE_PRESOLVING
4872  * - \ref SCIP_STAGE_EXITPRESOLVE
4873  * - \ref SCIP_STAGE_PRESOLVED
4874  * - \ref SCIP_STAGE_INITSOLVE
4875  * - \ref SCIP_STAGE_SOLVING
4876  * - \ref SCIP_STAGE_SOLVED
4877  * - \ref SCIP_STAGE_EXITSOLVE
4878  */
4879 extern
4880 int SCIPgetNVars(
4881  SCIP* scip /**< SCIP data structure */
4882  );
4883 
4884 /** gets number of binary active problem variables
4885  *
4886  * @return the number of binary active problem variables
4887  *
4888  * @pre This method can be called if @p scip is in one of the following stages:
4889  * - \ref SCIP_STAGE_PROBLEM
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  * - \ref SCIP_STAGE_EXITSOLVE
4899  */
4900 extern
4901 int SCIPgetNBinVars(
4902  SCIP* scip /**< SCIP data structure */
4903  );
4904 
4905 /** gets number of integer active problem variables
4906  *
4907  * @return the number of integer active problem variables
4908  *
4909  * @pre This method can be called if @p scip is in one of the following stages:
4910  * - \ref SCIP_STAGE_PROBLEM
4911  * - \ref SCIP_STAGE_TRANSFORMED
4912  * - \ref SCIP_STAGE_INITPRESOLVE
4913  * - \ref SCIP_STAGE_PRESOLVING
4914  * - \ref SCIP_STAGE_EXITPRESOLVE
4915  * - \ref SCIP_STAGE_PRESOLVED
4916  * - \ref SCIP_STAGE_INITSOLVE
4917  * - \ref SCIP_STAGE_SOLVING
4918  * - \ref SCIP_STAGE_SOLVED
4919  * - \ref SCIP_STAGE_EXITSOLVE
4920  */
4921 extern
4922 int SCIPgetNIntVars(
4923  SCIP* scip /**< SCIP data structure */
4924  );
4925 
4926 /** gets number of implicit integer active problem variables
4927  *
4928  * @return the number of implicit integer active problem variables
4929  *
4930  * @pre This method can be called if @p scip is in one of the following stages:
4931  * - \ref SCIP_STAGE_PROBLEM
4932  * - \ref SCIP_STAGE_TRANSFORMED
4933  * - \ref SCIP_STAGE_INITPRESOLVE
4934  * - \ref SCIP_STAGE_PRESOLVING
4935  * - \ref SCIP_STAGE_EXITPRESOLVE
4936  * - \ref SCIP_STAGE_PRESOLVED
4937  * - \ref SCIP_STAGE_INITSOLVE
4938  * - \ref SCIP_STAGE_SOLVING
4939  * - \ref SCIP_STAGE_SOLVED
4940  * - \ref SCIP_STAGE_EXITSOLVE
4941  */
4942 extern
4943 int SCIPgetNImplVars(
4944  SCIP* scip /**< SCIP data structure */
4945  );
4946 
4947 /** gets number of continuous active problem variables
4948  *
4949  * @return the number of continuous active problem variables
4950  *
4951  * @pre This method can be called if @p scip is in one of the following stages:
4952  * - \ref SCIP_STAGE_PROBLEM
4953  * - \ref SCIP_STAGE_TRANSFORMED
4954  * - \ref SCIP_STAGE_INITPRESOLVE
4955  * - \ref SCIP_STAGE_PRESOLVING
4956  * - \ref SCIP_STAGE_EXITPRESOLVE
4957  * - \ref SCIP_STAGE_PRESOLVED
4958  * - \ref SCIP_STAGE_INITSOLVE
4959  * - \ref SCIP_STAGE_SOLVING
4960  * - \ref SCIP_STAGE_SOLVED
4961  * - \ref SCIP_STAGE_EXITSOLVE
4962  */
4963 extern
4964 int SCIPgetNContVars(
4965  SCIP* scip /**< SCIP data structure */
4966  );
4967 
4968 /** gets number of active problem variables with a non-zero objective coefficient
4969  *
4970  * @note In case of the original problem the number of variables is counted. In case of the transformed problem the
4971  * number of variables is just returned since it is stored internally
4972  *
4973  * @return the number of active problem variables with a non-zero objective coefficient
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_TRANSFORMED
4978  * - \ref SCIP_STAGE_INITPRESOLVE
4979  * - \ref SCIP_STAGE_PRESOLVING
4980  * - \ref SCIP_STAGE_EXITPRESOLVE
4981  * - \ref SCIP_STAGE_PRESOLVED
4982  * - \ref SCIP_STAGE_INITSOLVE
4983  * - \ref SCIP_STAGE_SOLVING
4984  * - \ref SCIP_STAGE_SOLVED
4985  */
4986 extern
4987 int SCIPgetNObjVars(
4988  SCIP* scip /**< SCIP data structure */
4989  );
4990 
4991 /** gets array with fixed and aggregated problem variables; data may become invalid after
4992  * calls to SCIPfixVar(), SCIPaggregateVars(), and SCIPmultiaggregateVar()
4993  *
4994  * @return an array with fixed and aggregated problem variables; data may become invalid after
4995  * calls to SCIPfixVar(), SCIPaggregateVars(), and SCIPmultiaggregateVar()
4996  *
4997  * @pre This method can be called if @p scip is in one of the following stages:
4998  * - \ref SCIP_STAGE_PROBLEM
4999  * - \ref SCIP_STAGE_TRANSFORMED
5000  * - \ref SCIP_STAGE_INITPRESOLVE
5001  * - \ref SCIP_STAGE_PRESOLVING
5002  * - \ref SCIP_STAGE_EXITPRESOLVE
5003  * - \ref SCIP_STAGE_PRESOLVED
5004  * - \ref SCIP_STAGE_INITSOLVE
5005  * - \ref SCIP_STAGE_SOLVING
5006  * - \ref SCIP_STAGE_SOLVED
5007  */
5008 extern
5010  SCIP* scip /**< SCIP data structure */
5011  );
5012 
5013 /** gets number of fixed or aggregated problem variables
5014  *
5015  * @return the number of fixed or aggregated problem variables
5016  *
5017  * @pre This method can be called if @p scip is in one of the following stages:
5018  * - \ref SCIP_STAGE_PROBLEM
5019  * - \ref SCIP_STAGE_TRANSFORMED
5020  * - \ref SCIP_STAGE_INITPRESOLVE
5021  * - \ref SCIP_STAGE_PRESOLVING
5022  * - \ref SCIP_STAGE_EXITPRESOLVE
5023  * - \ref SCIP_STAGE_PRESOLVED
5024  * - \ref SCIP_STAGE_INITSOLVE
5025  * - \ref SCIP_STAGE_SOLVING
5026  * - \ref SCIP_STAGE_SOLVED
5027  */
5028 extern
5029 int SCIPgetNFixedVars(
5030  SCIP* scip /**< SCIP data structure */
5031  );
5032 
5033 /** gets variables of the original problem along with the numbers of different variable types; data may become invalid
5034  * after a call to SCIPchgVarType()
5035  *
5036  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5037  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5038  *
5039  * @pre This method can be called if @p scip is in one of the following stages:
5040  * - \ref SCIP_STAGE_PROBLEM
5041  * - \ref SCIP_STAGE_TRANSFORMING
5042  * - \ref SCIP_STAGE_TRANSFORMED
5043  * - \ref SCIP_STAGE_INITPRESOLVE
5044  * - \ref SCIP_STAGE_PRESOLVING
5045  * - \ref SCIP_STAGE_EXITPRESOLVE
5046  * - \ref SCIP_STAGE_PRESOLVED
5047  * - \ref SCIP_STAGE_INITSOLVE
5048  * - \ref SCIP_STAGE_SOLVING
5049  * - \ref SCIP_STAGE_SOLVED
5050  * - \ref SCIP_STAGE_EXITSOLVE
5051  * - \ref SCIP_STAGE_FREETRANS
5052  */
5053 extern
5055  SCIP* scip, /**< SCIP data structure */
5056  SCIP_VAR*** vars, /**< pointer to store variables array or NULL if not needed */
5057  int* nvars, /**< pointer to store number of variables or NULL if not needed */
5058  int* nbinvars, /**< pointer to store number of binary variables or NULL if not needed */
5059  int* nintvars, /**< pointer to store number of integer variables or NULL if not needed */
5060  int* nimplvars, /**< pointer to store number of implicit integral vars or NULL if not needed */
5061  int* ncontvars /**< pointer to store number of continuous variables or NULL if not needed */
5062  );
5063 
5064 /** gets array with original problem variables; data may become invalid after
5065  * a call to SCIPchgVarType()
5066  *
5067  * @return an array with original problem variables; data may become invalid after
5068  * a call to SCIPchgVarType()
5069  *
5070  * @pre This method can be called if @p scip is in one of the following stages:
5071  * - \ref SCIP_STAGE_PROBLEM
5072  * - \ref SCIP_STAGE_TRANSFORMING
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  * - \ref SCIP_STAGE_FREETRANS
5083  */
5084 extern
5086  SCIP* scip /**< SCIP data structure */
5087  );
5088 
5089 /** gets number of original problem variables
5090  *
5091  * @return the number of original problem variables
5092  *
5093  * @pre This method can be called if @p scip is in one of the following stages:
5094  * - \ref SCIP_STAGE_PROBLEM
5095  * - \ref SCIP_STAGE_TRANSFORMING
5096  * - \ref SCIP_STAGE_TRANSFORMED
5097  * - \ref SCIP_STAGE_INITPRESOLVE
5098  * - \ref SCIP_STAGE_PRESOLVING
5099  * - \ref SCIP_STAGE_EXITPRESOLVE
5100  * - \ref SCIP_STAGE_PRESOLVED
5101  * - \ref SCIP_STAGE_INITSOLVE
5102  * - \ref SCIP_STAGE_SOLVING
5103  * - \ref SCIP_STAGE_SOLVED
5104  * - \ref SCIP_STAGE_EXITSOLVE
5105  * - \ref SCIP_STAGE_FREETRANS
5106  */
5107 extern
5108 int SCIPgetNOrigVars(
5109  SCIP* scip /**< SCIP data structure */
5110  );
5111 
5112 /** gets number of binary variables in the original problem
5113  *
5114  * @return the number of binary variables in the original problem
5115  *
5116  * @pre This method can be called if @p scip is in one of the following stages:
5117  * - \ref SCIP_STAGE_PROBLEM
5118  * - \ref SCIP_STAGE_TRANSFORMING
5119  * - \ref SCIP_STAGE_TRANSFORMED
5120  * - \ref SCIP_STAGE_INITPRESOLVE
5121  * - \ref SCIP_STAGE_PRESOLVING
5122  * - \ref SCIP_STAGE_EXITPRESOLVE
5123  * - \ref SCIP_STAGE_PRESOLVED
5124  * - \ref SCIP_STAGE_INITSOLVE
5125  * - \ref SCIP_STAGE_SOLVING
5126  * - \ref SCIP_STAGE_SOLVED
5127  * - \ref SCIP_STAGE_EXITSOLVE
5128  * - \ref SCIP_STAGE_FREETRANS
5129  */
5130 extern
5132  SCIP* scip /**< SCIP data structure */
5133  );
5134 
5135 /** gets the number of integer variables in the original problem
5136  *
5137  * @return the number of integer variables in the original problem
5138  *
5139  * @pre This method can be called if @p scip is in one of the following stages:
5140  * - \ref SCIP_STAGE_PROBLEM
5141  * - \ref SCIP_STAGE_TRANSFORMING
5142  * - \ref SCIP_STAGE_TRANSFORMED
5143  * - \ref SCIP_STAGE_INITPRESOLVE
5144  * - \ref SCIP_STAGE_PRESOLVING
5145  * - \ref SCIP_STAGE_EXITPRESOLVE
5146  * - \ref SCIP_STAGE_PRESOLVED
5147  * - \ref SCIP_STAGE_INITSOLVE
5148  * - \ref SCIP_STAGE_SOLVING
5149  * - \ref SCIP_STAGE_SOLVED
5150  * - \ref SCIP_STAGE_EXITSOLVE
5151  * - \ref SCIP_STAGE_FREETRANS
5152  */
5153 extern
5155  SCIP* scip /**< SCIP data structure */
5156  );
5157 
5158 /** gets number of implicit integer variables in the original problem
5159  *
5160  * @return the number of implicit integer variables in the original problem
5161  *
5162  * @pre This method can be called if @p scip is in one of the following stages:
5163  * - \ref SCIP_STAGE_PROBLEM
5164  * - \ref SCIP_STAGE_TRANSFORMING
5165  * - \ref SCIP_STAGE_TRANSFORMED
5166  * - \ref SCIP_STAGE_INITPRESOLVE
5167  * - \ref SCIP_STAGE_PRESOLVING
5168  * - \ref SCIP_STAGE_EXITPRESOLVE
5169  * - \ref SCIP_STAGE_PRESOLVED
5170  * - \ref SCIP_STAGE_INITSOLVE
5171  * - \ref SCIP_STAGE_SOLVING
5172  * - \ref SCIP_STAGE_SOLVED
5173  * - \ref SCIP_STAGE_EXITSOLVE
5174  * - \ref SCIP_STAGE_FREETRANS
5175  */
5176 extern
5178  SCIP* scip /**< SCIP data structure */
5179  );
5180 
5181 /** gets number of continuous variables in the original problem
5182  *
5183  * @return the number of continuous variables in the original problem
5184  *
5185  * @pre This method can be called if @p scip is in one of the following stages:
5186  * - \ref SCIP_STAGE_PROBLEM
5187  * - \ref SCIP_STAGE_TRANSFORMING
5188  * - \ref SCIP_STAGE_TRANSFORMED
5189  * - \ref SCIP_STAGE_INITPRESOLVE
5190  * - \ref SCIP_STAGE_PRESOLVING
5191  * - \ref SCIP_STAGE_EXITPRESOLVE
5192  * - \ref SCIP_STAGE_PRESOLVED
5193  * - \ref SCIP_STAGE_INITSOLVE
5194  * - \ref SCIP_STAGE_SOLVING
5195  * - \ref SCIP_STAGE_SOLVED
5196  * - \ref SCIP_STAGE_EXITSOLVE
5197  * - \ref SCIP_STAGE_FREETRANS
5198  */
5199 extern
5201  SCIP* scip /**< SCIP data structure */
5202  );
5203 
5204 /** gets number of all problem variables created during creation and solving of problem;
5205  * this includes also variables that were deleted in the meantime
5206  *
5207  * @return the number of all problem variables created during creation and solving of problem;
5208  * this includes also variables that were deleted in the meantime
5209  *
5210  * @pre This method can be called if @p scip is in one of the following stages:
5211  * - \ref SCIP_STAGE_PROBLEM
5212  * - \ref SCIP_STAGE_TRANSFORMING
5213  * - \ref SCIP_STAGE_TRANSFORMED
5214  * - \ref SCIP_STAGE_INITPRESOLVE
5215  * - \ref SCIP_STAGE_PRESOLVING
5216  * - \ref SCIP_STAGE_EXITPRESOLVE
5217  * - \ref SCIP_STAGE_PRESOLVED
5218  * - \ref SCIP_STAGE_INITSOLVE
5219  * - \ref SCIP_STAGE_SOLVING
5220  * - \ref SCIP_STAGE_SOLVED
5221  * - \ref SCIP_STAGE_EXITSOLVE
5222  * - \ref SCIP_STAGE_FREETRANS
5223  */
5224 extern
5225 int SCIPgetNTotalVars(
5226  SCIP* scip /**< SCIP data structure */
5227  );
5228 
5229 /** gets variables of the original or transformed problem along with the numbers of different variable types;
5230  * the returned problem space (original or transformed) corresponds to the given solution;
5231  * data may become invalid after calls to SCIPchgVarType(), SCIPfixVar(), SCIPaggregateVars(), and
5232  * SCIPmultiaggregateVar()
5233  *
5234  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5235  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5236  *
5237  * @pre This method can be called if @p scip is in one of the following stages:
5238  * - \ref SCIP_STAGE_PROBLEM
5239  * - \ref SCIP_STAGE_TRANSFORMED
5240  * - \ref SCIP_STAGE_INITPRESOLVE
5241  * - \ref SCIP_STAGE_PRESOLVING
5242  * - \ref SCIP_STAGE_EXITPRESOLVE
5243  * - \ref SCIP_STAGE_PRESOLVED
5244  * - \ref SCIP_STAGE_INITSOLVE
5245  * - \ref SCIP_STAGE_SOLVING
5246  * - \ref SCIP_STAGE_SOLVED
5247  */
5248 extern
5250  SCIP* scip, /**< SCIP data structure */
5251  SCIP_SOL* sol, /**< primal solution that selects the problem space, NULL for current solution */
5252  SCIP_VAR*** vars, /**< pointer to store variables array or NULL if not needed */
5253  int* nvars, /**< pointer to store number of variables or NULL if not needed */
5254  int* nbinvars, /**< pointer to store number of binary variables or NULL if not needed */
5255  int* nintvars, /**< pointer to store number of integer variables or NULL if not needed */
5256  int* nimplvars, /**< pointer to store number of implicit integral vars or NULL if not needed */
5257  int* ncontvars /**< pointer to store number of continuous variables or NULL if not needed */
5258  );
5259 
5260 /** returns variable of given name in the problem, or NULL if not existing
5261  *
5262  * @return variable of given name in the problem, or NULL if not existing
5263  *
5264  * @pre This method can be called if @p scip is in one of the following stages:
5265  * - \ref SCIP_STAGE_PROBLEM
5266  * - \ref SCIP_STAGE_TRANSFORMING
5267  * - \ref SCIP_STAGE_TRANSFORMED
5268  * - \ref SCIP_STAGE_INITPRESOLVE
5269  * - \ref SCIP_STAGE_PRESOLVING
5270  * - \ref SCIP_STAGE_EXITPRESOLVE
5271  * - \ref SCIP_STAGE_PRESOLVED
5272  * - \ref SCIP_STAGE_INITSOLVE
5273  * - \ref SCIP_STAGE_SOLVING
5274  * - \ref SCIP_STAGE_SOLVED
5275  * - \ref SCIP_STAGE_EXITSOLVE
5276  * - \ref SCIP_STAGE_FREETRANS
5277  */
5278 extern
5280  SCIP* scip, /**< SCIP data structure */
5281  const char* name /**< name of variable to find */
5282  );
5283 
5284 /** returns TRUE iff all potential variables exist in the problem, and FALSE, if there may be additional variables,
5285  * that will be added in pricing and improve the objective value
5286  *
5287  * @return TRUE, if all potential variables exist in the problem; FALSE, otherwise
5288  *
5289  * @pre This method can be called if @p scip is in one of the following stages:
5290  * - \ref SCIP_STAGE_TRANSFORMING
5291  * - \ref SCIP_STAGE_TRANSFORMED
5292  * - \ref SCIP_STAGE_INITPRESOLVE
5293  * - \ref SCIP_STAGE_PRESOLVING
5294  * - \ref SCIP_STAGE_EXITPRESOLVE
5295  * - \ref SCIP_STAGE_PRESOLVED
5296  * - \ref SCIP_STAGE_INITSOLVE
5297  * - \ref SCIP_STAGE_SOLVING
5298  * - \ref SCIP_STAGE_SOLVED
5299  * - \ref SCIP_STAGE_EXITSOLVE
5300  * - \ref SCIP_STAGE_FREETRANS
5301  */
5302 extern
5304  SCIP* scip /**< SCIP data structure */
5305  );
5306 
5307 /** adds constraint to the problem; if constraint is only valid locally, it is added to the local subproblem of the
5308  * current node (and all of its subnodes); otherwise it is added to the global problem;
5309  * if a local constraint is added at the root node, it is automatically upgraded into a global constraint
5310  *
5311  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5312  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5313  *
5314  * @pre This method can be called if @p scip is in one of the following stages:
5315  * - \ref SCIP_STAGE_PROBLEM
5316  * - \ref SCIP_STAGE_INITPRESOLVE
5317  * - \ref SCIP_STAGE_PRESOLVING
5318  * - \ref SCIP_STAGE_EXITPRESOLVE
5319  * - \ref SCIP_STAGE_PRESOLVED
5320  * - \ref SCIP_STAGE_INITSOLVE
5321  * - \ref SCIP_STAGE_SOLVING
5322  * - \ref SCIP_STAGE_EXITSOLVE
5323  */
5324 extern
5326  SCIP* scip, /**< SCIP data structure */
5327  SCIP_CONS* cons /**< constraint to add */
5328  );
5329 
5330 /** globally removes constraint from all subproblems; removes constraint from the constraint set change data of the
5331  * node, where it was added, or from the problem, if it was a problem constraint
5332  *
5333  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5334  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5335  *
5336  * @pre This method can be called if @p scip is in one of the following stages:
5337  * - \ref SCIP_STAGE_PROBLEM
5338  * - \ref SCIP_STAGE_INITPRESOLVE
5339  * - \ref SCIP_STAGE_PRESOLVING
5340  * - \ref SCIP_STAGE_EXITPRESOLVE
5341  * - \ref SCIP_STAGE_INITSOLVE
5342  * - \ref SCIP_STAGE_SOLVING
5343  */
5344 extern
5346  SCIP* scip, /**< SCIP data structure */
5347  SCIP_CONS* cons /**< constraint to delete */
5348  );
5349 
5350 /** returns original constraint of given name in the problem, or NULL if not existing
5351  *
5352  * @return original constraint of given name in the problem, or NULL if not existing
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_INITSOLVE
5362  * - \ref SCIP_STAGE_SOLVING
5363  * - \ref SCIP_STAGE_SOLVED
5364  * - \ref SCIP_STAGE_EXITSOLVE
5365  * - \ref SCIP_STAGE_FREETRANS */
5366 extern
5368  SCIP* scip, /**< SCIP data structure */
5369  const char* name /**< name of constraint to find */
5370  );
5371 
5372 /** returns constraint of given name in the problem, or NULL if not existing
5373  *
5374  * @return constraint of given name in the problem, or NULL if not existing
5375  *
5376  * @pre This method can be called if @p scip is in one of the following stages:
5377  * - \ref SCIP_STAGE_PROBLEM
5378  * - \ref SCIP_STAGE_TRANSFORMING
5379  * - \ref SCIP_STAGE_TRANSFORMED
5380  * - \ref SCIP_STAGE_INITPRESOLVE
5381  * - \ref SCIP_STAGE_PRESOLVING
5382  * - \ref SCIP_STAGE_EXITPRESOLVE
5383  * - \ref SCIP_STAGE_PRESOLVED
5384  * - \ref SCIP_STAGE_INITSOLVE
5385  * - \ref SCIP_STAGE_SOLVING
5386  * - \ref SCIP_STAGE_SOLVED
5387  * - \ref SCIP_STAGE_EXITSOLVE
5388  * - \ref SCIP_STAGE_FREETRANS
5389  */
5390 extern
5392  SCIP* scip, /**< SCIP data structure */
5393  const char* name /**< name of constraint to find */
5394  );
5395 
5396 /** gets number of upgraded constraints
5397  *
5398  * @return number of upgraded constraints
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_TRANSFORMED
5403  * - \ref SCIP_STAGE_INITPRESOLVE
5404  * - \ref SCIP_STAGE_PRESOLVING
5405  * - \ref SCIP_STAGE_PRESOLVED
5406  * - \ref SCIP_STAGE_EXITPRESOLVE
5407  * - \ref SCIP_STAGE_SOLVING
5408  * - \ref SCIP_STAGE_SOLVED
5409  */
5410 extern
5411 int SCIPgetNUpgrConss(
5412  SCIP* scip /**< SCIP data structure */
5413  );
5414 
5415 /** gets total number of globally valid constraints currently in the problem
5416  *
5417  * @return total number of globally valid constraints currently in the problem
5418  *
5419  * @pre This method can be called if @p scip is in one of the following stages:
5420  * - \ref SCIP_STAGE_PROBLEM
5421  * - \ref SCIP_STAGE_TRANSFORMED
5422  * - \ref SCIP_STAGE_INITPRESOLVE
5423  * - \ref SCIP_STAGE_PRESOLVING
5424  * - \ref SCIP_STAGE_EXITPRESOLVE
5425  * - \ref SCIP_STAGE_PRESOLVED
5426  * - \ref SCIP_STAGE_INITSOLVE
5427  * - \ref SCIP_STAGE_SOLVING
5428  * - \ref SCIP_STAGE_SOLVED
5429  */
5430 extern
5431 int SCIPgetNConss(
5432  SCIP* scip /**< SCIP data structure */
5433  );
5434 
5435 /** gets array of globally valid constraints currently in the problem
5436  *
5437  * @return array of globally valid constraints currently in the problem
5438  *
5439  * @pre This method can be called if @p scip is in one of the following stages:
5440  * - \ref SCIP_STAGE_PROBLEM
5441  * - \ref SCIP_STAGE_TRANSFORMED
5442  * - \ref SCIP_STAGE_INITPRESOLVE
5443  * - \ref SCIP_STAGE_PRESOLVING
5444  * - \ref SCIP_STAGE_EXITPRESOLVE
5445  * - \ref SCIP_STAGE_PRESOLVED
5446  * - \ref SCIP_STAGE_SOLVING
5447  * - \ref SCIP_STAGE_SOLVED
5448  *
5449  * @warning If your are using the method SCIPaddCons(), it can happen that the internal constraint array (which is
5450  * accessed via this method) gets resized. This can invalid the pointer which is returned by this method.
5451  */
5452 extern
5454  SCIP* scip /**< SCIP data structure */
5455  );
5456 
5457 /** gets total number of constraints in the original problem
5458  *
5459  * @return total number of constraints in the original problem
5460  *
5461  * @pre This method can be called if @p scip is in one of the following stages:
5462  * - \ref SCIP_STAGE_PROBLEM
5463  * - \ref SCIP_STAGE_TRANSFORMING
5464  * - \ref SCIP_STAGE_TRANSFORMED
5465  * - \ref SCIP_STAGE_INITPRESOLVE
5466  * - \ref SCIP_STAGE_PRESOLVING
5467  * - \ref SCIP_STAGE_EXITPRESOLVE
5468  * - \ref SCIP_STAGE_PRESOLVED
5469  * - \ref SCIP_STAGE_INITSOLVE
5470  * - \ref SCIP_STAGE_SOLVING
5471  * - \ref SCIP_STAGE_SOLVED
5472  * - \ref SCIP_STAGE_EXITSOLVE
5473  * - \ref SCIP_STAGE_FREETRANS
5474  */
5475 extern
5476 int SCIPgetNOrigConss(
5477  SCIP* scip /**< SCIP data structure */
5478  );
5479 
5480 /** gets array of constraints in the original problem
5481  *
5482  * @return array of constraints in the original problem
5483  *
5484  * @pre This method can be called if @p scip is in one of the following stages:
5485  * - \ref SCIP_STAGE_PROBLEM
5486  * - \ref SCIP_STAGE_TRANSFORMING
5487  * - \ref SCIP_STAGE_TRANSFORMED
5488  * - \ref SCIP_STAGE_INITPRESOLVE
5489  * - \ref SCIP_STAGE_PRESOLVING
5490  * - \ref SCIP_STAGE_EXITPRESOLVE
5491  * - \ref SCIP_STAGE_PRESOLVED
5492  * - \ref SCIP_STAGE_INITSOLVE
5493  * - \ref SCIP_STAGE_SOLVING
5494  * - \ref SCIP_STAGE_SOLVED
5495  * - \ref SCIP_STAGE_EXITSOLVE
5496  * - \ref SCIP_STAGE_FREETRANS
5497  */
5498 extern
5500  SCIP* scip /**< SCIP data structure */
5501  );
5502 
5503 /** computes the number of check constraint in the current node (loop over all constraint handler and cumulates the
5504  * number of check constraints)
5505  *
5506  * @return returns the number of check constraints
5507  *
5508  * @pre This method can be called if @p scip is in one of the following stages:
5509  * - \ref SCIP_STAGE_TRANSFORMED
5510  * - \ref SCIP_STAGE_INITPRESOLVE
5511  * - \ref SCIP_STAGE_PRESOLVING
5512  * - \ref SCIP_STAGE_EXITPRESOLVE
5513  * - \ref SCIP_STAGE_PRESOLVED
5514  * - \ref SCIP_STAGE_INITSOLVE
5515  * - \ref SCIP_STAGE_SOLVING
5516  */
5517 extern
5518 int SCIPgetNCheckConss(
5519  SCIP* scip /**< SCIP data structure */
5520  );
5521 
5522 /**@} */
5523 
5524 
5525 
5526 
5527 /*
5528  * local subproblem methods
5529  */
5530 
5531 /**@name Local Subproblem Methods */
5532 /**@{ */
5533 
5534 /** adds constraint to the given node (and all of its subnodes), even if it is a global constraint;
5535  * It is sometimes desirable to add the constraint to a more local node (i.e., a node of larger depth) even if
5536  * the constraint is also valid higher in the tree, for example, if one wants to produce a constraint which is
5537  * only active in a small part of the tree although it is valid in a larger part.
5538  * In this case, one should pass the more global node where the constraint is valid as "validnode".
5539  * Note that the same constraint cannot be added twice to the branching tree with different "validnode" parameters.
5540  * If the constraint is valid at the same node as it is inserted (the usual case), one should pass NULL as "validnode".
5541  * If the "validnode" is the root node, it is automatically upgraded into a global constraint, but still only added to
5542  * the given node. If a local constraint is added to the root node, it is added to the global problem instead.
5543  *
5544  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5545  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5546  *
5547  * @pre this method can be called in one of the following stages of the SCIP solving process:
5548  * - \ref SCIP_STAGE_INITPRESOLVE
5549  * - \ref SCIP_STAGE_PRESOLVING
5550  * - \ref SCIP_STAGE_EXITPRESOLVE
5551  * - \ref SCIP_STAGE_SOLVING
5552  */
5553 extern
5555  SCIP* scip, /**< SCIP data structure */
5556  SCIP_NODE* node, /**< node to add constraint to */
5557  SCIP_CONS* cons, /**< constraint to add */
5558  SCIP_NODE* validnode /**< node at which the constraint is valid, or NULL */
5559  );
5560 
5561 /** adds constraint locally to the current node (and all of its subnodes), even if it is a global constraint;
5562  * It is sometimes desirable to add the constraint to a more local node (i.e., a node of larger depth) even if
5563  * the constraint is also valid higher in the tree, for example, if one wants to produce a constraint which is
5564  * only active in a small part of the tree although it is valid in a larger part.
5565  *
5566  * If the constraint is valid at the same node as it is inserted (the usual case), one should pass NULL as "validnode".
5567  * If the "validnode" is the root node, it is automatically upgraded into a global constraint, but still only added to
5568  * the given node. If a local constraint is added to the root node, it is added to the global problem instead.
5569  *
5570  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5571  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5572  *
5573  * @pre this method can be called in one of the following stages of the SCIP solving process:
5574  * - \ref SCIP_STAGE_INITPRESOLVE
5575  * - \ref SCIP_STAGE_PRESOLVING
5576  * - \ref SCIP_STAGE_EXITPRESOLVE
5577  * - \ref SCIP_STAGE_SOLVING
5578  *
5579  * @note The same constraint cannot be added twice to the branching tree with different "validnode" parameters. This is
5580  * the case due internal data structures and performance issues. In such a case you should try to realize your
5581  * issue using the method SCIPdisableCons() and SCIPenableCons() and control these via the event system of SCIP.
5582  */
5583 extern
5585  SCIP* scip, /**< SCIP data structure */
5586  SCIP_CONS* cons, /**< constraint to add */
5587  SCIP_NODE* validnode /**< node at which the constraint is valid, or NULL */
5588  );
5589 
5590 /** disables constraint's separation, enforcing, and propagation capabilities at the given node (and all subnodes);
5591  * if the method is called at the root node, the constraint is globally deleted from the problem;
5592  * the constraint deletion is being remembered at the given node, s.t. after leaving the node's subtree, the constraint
5593  * is automatically enabled again, and after entering the node's subtree, it is automatically disabled;
5594  * this may improve performance because redundant checks on this constraint are avoided, but it consumes memory;
5595  * alternatively, use SCIPdisableCons()
5596  *
5597  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5598  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5599  *
5600  * @pre this method can be called in one of the following stages of the SCIP solving process:
5601  * - \ref SCIP_STAGE_INITPRESOLVE
5602  * - \ref SCIP_STAGE_PRESOLVING
5603  * - \ref SCIP_STAGE_EXITPRESOLVE
5604  * - \ref SCIP_STAGE_SOLVING
5605  */
5606 extern
5608  SCIP* scip, /**< SCIP data structure */
5609  SCIP_NODE* node, /**< node to disable constraint in */
5610  SCIP_CONS* cons /**< constraint to locally delete */
5611  );
5612 
5613 /** disables constraint's separation, enforcing, and propagation capabilities at the current node (and all subnodes);
5614  * if the method is called during problem modification or at the root node, the constraint is globally deleted from
5615  * the problem;
5616  * the constraint deletion is being remembered at the current node, s.t. after leaving the current subtree, the
5617  * constraint is automatically enabled again, and after reentering the current node's subtree, it is automatically
5618  * disabled again;
5619  * this may improve performance because redundant checks on this constraint are avoided, but it consumes memory;
5620  * alternatively, use SCIPdisableCons()
5621  *
5622  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5623  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5624  *
5625  * @pre this method can be called in one of the following stages of the SCIP solving process:
5626  * - \ref SCIP_STAGE_PROBLEM
5627  * - \ref SCIP_STAGE_INITPRESOLVE
5628  * - \ref SCIP_STAGE_PRESOLVING
5629  * - \ref SCIP_STAGE_EXITPRESOLVE
5630  * - \ref SCIP_STAGE_SOLVING
5631  */
5632 extern
5634  SCIP* scip, /**< SCIP data structure */
5635  SCIP_CONS* cons /**< constraint to locally delete */
5636  );
5637 
5638 /** gets estimate of best primal solution w.r.t. original problem contained in current subtree
5639  *
5640  * @return estimate of best primal solution w.r.t. original problem contained in current subtree
5641  *
5642  * @pre this method can be called in one of the following stages of the SCIP solving process:
5643  * - \ref SCIP_STAGE_SOLVING
5644  */
5645 extern
5647  SCIP* scip /**< SCIP data structure */
5648  );
5649 
5650 /** gets estimate of best primal solution w.r.t. transformed problem contained in current subtree
5651  *
5652  * @return estimate of best primal solution w.r.t. transformed problem contained in current subtree
5653  *
5654  * @pre this method can be called in one of the following stages of the SCIP solving process:
5655  * - \ref SCIP_STAGE_SOLVING
5656  */
5657 extern
5659  SCIP* scip /**< SCIP data structure */
5660  );
5661 
5662 /** gets dual bound of current node
5663  *
5664  * @return dual bound of current node
5665  *
5666  * @pre this method can be called in one of the following stages of the SCIP solving process:
5667  * - \ref SCIP_STAGE_SOLVING
5668  */
5669 extern
5671  SCIP* scip /**< SCIP data structure */
5672  );
5673 
5674 /** gets lower bound of current node in transformed problem
5675  *
5676  * @return lower bound of current node in transformed problem
5677  *
5678  * @pre this method can be called in one of the following stages of the SCIP solving process:
5679  * - \ref SCIP_STAGE_SOLVING
5680  */
5681 extern
5683  SCIP* scip /**< SCIP data structure */
5684  );
5685 
5686 /** gets dual bound of given node
5687  *
5688  * @return dual bound of a given node
5689  *
5690  * @pre this method can be called in one of the following stages of the SCIP solving process:
5691  * - \ref SCIP_STAGE_SOLVING
5692  */
5693 extern
5695  SCIP* scip, /**< SCIP data structure */
5696  SCIP_NODE* node /**< node to get dual bound for */
5697  );
5698 
5699 /** gets lower bound of given node in transformed problem
5700  *
5701  * @return lower bound of given node in transformed problem
5702  *
5703  * @pre this method can be called in one of the following stages of the SCIP solving process:
5704  * - \ref SCIP_STAGE_SOLVING
5705  */
5706 extern
5708  SCIP* scip, /**< SCIP data structure */
5709  SCIP_NODE* node /**< node to get dual bound for */
5710  );
5711 
5712 /** if given value is tighter (larger for minimization, smaller for maximization) than the current node's dual bound (in
5713  * original problem space), sets the current node's dual bound to the new value
5714  *
5715  * @note the given new bound has to be a dual bound, i.e., it has to be valid for the original problem.
5716  *
5717  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5718  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5719  *
5720  * @pre this method can be called in one of the following stages of the SCIP solving process:
5721  * - \ref SCIP_STAGE_PROBLEM
5722  * - \ref SCIP_STAGE_PRESOLVING
5723  * - \ref SCIP_STAGE_PRESOLVED
5724  * - \ref SCIP_STAGE_SOLVING
5725  */
5726 extern
5728  SCIP* scip, /**< SCIP data structure */
5729  SCIP_Real newbound /**< new dual bound for the node (if it's tighter than the old one) */
5730  );
5731 
5732 /** if given value is larger than the current node's lower bound (in transformed problem), sets the current node's
5733  * lower bound to the new value
5734  *
5735  * @note the given new bound has to be a lower bound, i.e., it has to be valid for the transformed problem.
5736  *
5737  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5738  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5739  *
5740  * @pre this method can be called in one of the following stages of the SCIP solving process:
5741  * - \ref SCIP_STAGE_PRESOLVING
5742  * - \ref SCIP_STAGE_PRESOLVED
5743  * - \ref SCIP_STAGE_SOLVING
5744  */
5745 extern
5747  SCIP* scip, /**< SCIP data structure */
5748  SCIP_Real newbound /**< new lower bound for the node (if it's larger than the old one) */
5749  );
5750 
5751 /** if given value is tighter (larger for minimization, smaller for maximization) than the node's dual bound,
5752  * sets the node's dual bound to the new value
5753  *
5754  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5755  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5756  *
5757  * @pre this method can be called in one of the following stages of the SCIP solving process:
5758  * - \ref SCIP_STAGE_SOLVING
5759  */
5760 extern
5762  SCIP* scip, /**< SCIP data structure */
5763  SCIP_NODE* node, /**< node to update dual bound for */
5764  SCIP_Real newbound /**< new dual bound for the node (if it's tighter than the old one) */
5765  );
5766 
5767 /** if given value is larger than the node's lower bound (in transformed problem), sets the node's lower bound
5768  * to the new value
5769  *
5770  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5771  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5772  *
5773  * @pre this method can be called in one of the following stages of the SCIP solving process:
5774  * - \ref SCIP_STAGE_SOLVING
5775  */
5776 extern
5778  SCIP* scip, /**< SCIP data structure */
5779  SCIP_NODE* node, /**< node to update lower bound for */
5780  SCIP_Real newbound /**< new lower bound for the node (if it's larger than the old one) */
5781  );
5782 
5783 /** change the node selection priority of the given child
5784  *
5785  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5786  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5787  *
5788  * @pre this method can be called in one of the following stages of the SCIP solving process:
5789  * - \ref SCIP_STAGE_SOLVING
5790  */
5791 extern
5793  SCIP* scip, /**< SCIP data structure */
5794  SCIP_NODE* child, /**< child to update the node selection priority */
5795  SCIP_Real priority /**< node selection priority value */
5796  );
5797 
5798 /**@} */
5799 
5800 
5801 
5802 
5803 /*
5804  * solve methods
5805  */
5806 
5807 /**@name Solve Methods */
5808 /**@{ */
5809 
5810 /** initializes solving data structures and transforms problem
5811  *
5812  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5813  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5814  *
5815  * @pre This method can be called if @p scip is in one of the following stages:
5816  * - \ref SCIP_STAGE_PROBLEM
5817  * - \ref SCIP_STAGE_TRANSFORMED
5818  * - \ref SCIP_STAGE_INITPRESOLVE
5819  * - \ref SCIP_STAGE_PRESOLVING
5820  * - \ref SCIP_STAGE_EXITPRESOLVE
5821  * - \ref SCIP_STAGE_PRESOLVED
5822  * - \ref SCIP_STAGE_INITSOLVE
5823  * - \ref SCIP_STAGE_SOLVING
5824  * - \ref SCIP_STAGE_SOLVED
5825  * - \ref SCIP_STAGE_EXITSOLVE
5826  * - \ref SCIP_STAGE_FREETRANS
5827  * - \ref SCIP_STAGE_FREE
5828  *
5829  * @post When calling this method in the \ref SCIP_STAGE_PROBLEM stage, the \SCIP stage is changed to \ref
5830  * SCIP_STAGE_TRANSFORMED; otherwise, the stage is not changed
5831  *
5832  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
5833  */
5834 extern
5836  SCIP* scip /**< SCIP data structure */
5837  );
5838 
5839 /** transforms and presolves problem
5840  *
5841  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5842  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5843  *
5844  * @pre This method can be called if @p scip is in one of the following stages:
5845  * - \ref SCIP_STAGE_PROBLEM
5846  * - \ref SCIP_STAGE_TRANSFORMED
5847  * - \ref SCIP_STAGE_PRESOLVING
5848  * - \ref SCIP_STAGE_PRESOLVED
5849  *
5850  * @post After calling this method \SCIP reaches one of the following stages:
5851  * - \ref SCIP_STAGE_PRESOLVING if the presolving process was interrupted
5852  * - \ref SCIP_STAGE_PRESOLVED if the presolving process was finished and did not solve the problem
5853  * - \ref SCIP_STAGE_SOLVED if the problem was solved during presolving
5854  *
5855  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
5856  */
5857 extern
5859  SCIP* scip /**< SCIP data structure */
5860  );
5861 
5862 /** transforms, presolves, and solves problem
5863  *
5864  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5865  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5866  *
5867  * @pre This method can be called if @p scip is in one of the following stages:
5868  * - \ref SCIP_STAGE_PROBLEM
5869  * - \ref SCIP_STAGE_TRANSFORMED
5870  * - \ref SCIP_STAGE_PRESOLVING
5871  * - \ref SCIP_STAGE_PRESOLVED
5872  * - \ref SCIP_STAGE_SOLVING
5873  * - \ref SCIP_STAGE_SOLVED
5874  *
5875  * @post After calling this method \SCIP reaches one of the following stages depending on if and when the solution
5876  * process was interrupted:
5877 
5878  * - \ref SCIP_STAGE_PRESOLVING if the solution process was interrupted during presolving
5879  * - \ref SCIP_STAGE_SOLVING if the solution process was interrupted during the tree search
5880  * - \ref SCIP_STAGE_SOLVED if the solving process was not interrupted
5881  *
5882  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
5883  */
5884 extern
5886  SCIP* scip /**< SCIP data structure */
5887  );
5888 
5889 /** frees branch and bound tree and all solution process data; statistics, presolving data and transformed problem is
5890  * preserved
5891  *
5892  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5893  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5894  *
5895  * @pre This method can be called if @p scip is in one of the following stages:
5896  * - \ref SCIP_STAGE_INIT
5897  * - \ref SCIP_STAGE_PROBLEM
5898  * - \ref SCIP_STAGE_TRANSFORMED
5899  * - \ref SCIP_STAGE_PRESOLVING
5900  * - \ref SCIP_STAGE_PRESOLVED
5901  * - \ref SCIP_STAGE_SOLVING
5902  * - \ref SCIP_STAGE_SOLVED
5903  *
5904  * @post If this method is called in \SCIP stage \ref SCIP_STAGE_INIT or \ref SCIP_STAGE_PROBLEM, the stage of
5905  * \SCIP is not changed; otherwise, the \SCIP stage is changed to \ref SCIP_STAGE_TRANSFORMED
5906  *
5907  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
5908  */
5909 extern
5911  SCIP* scip, /**< SCIP data structure */
5912  SCIP_Bool restart /**< should certain data be preserved for improved restarting? */
5913  );
5914 
5915 /** frees all solution process data including presolving and transformed problem, only original problem is kept
5916  *
5917  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5918  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5919  *
5920  * @pre This method can be called if @p scip is in one of the following stages:
5921  * - \ref SCIP_STAGE_INIT
5922  * - \ref SCIP_STAGE_PROBLEM
5923  * - \ref SCIP_STAGE_TRANSFORMED
5924  * - \ref SCIP_STAGE_PRESOLVING
5925  * - \ref SCIP_STAGE_PRESOLVED
5926  * - \ref SCIP_STAGE_SOLVING
5927  * - \ref SCIP_STAGE_SOLVED
5928  *
5929  * @post After calling this method \SCIP reaches one of the following stages:
5930  * - \ref SCIP_STAGE_INIT if the method was called from \SCIP stage \ref SCIP_STAGE_INIT
5931  * - \ref SCIP_STAGE_PROBLEM if the method was called from any other of the allowed stages
5932  *
5933  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
5934  */
5935 extern
5937  SCIP* scip /**< SCIP data structure */
5938  );
5939 
5940 /** informs \SCIP that the solving process should be interrupted as soon as possible (e.g., after the current node has
5941  * been solved)
5942  *
5943  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5944  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5945  *
5946  * @pre This method can be called if @p scip is in one of the following stages:
5947  * - \ref SCIP_STAGE_PROBLEM
5948  * - \ref SCIP_STAGE_TRANSFORMING
5949  * - \ref SCIP_STAGE_TRANSFORMED
5950  * - \ref SCIP_STAGE_INITPRESOLVE
5951  * - \ref SCIP_STAGE_PRESOLVING
5952  * - \ref SCIP_STAGE_EXITPRESOLVE
5953  * - \ref SCIP_STAGE_PRESOLVED
5954  * - \ref SCIP_STAGE_SOLVING
5955  * - \ref SCIP_STAGE_SOLVED
5956  * - \ref SCIP_STAGE_EXITSOLVE
5957  * - \ref SCIP_STAGE_FREETRANS
5958  *
5959  * @note the \SCIP stage does not get changed
5960  */
5961 extern
5963  SCIP* scip /**< SCIP data structure */
5964  );
5965 
5966 /** informs SCIP that the solving process should be restarted as soon as possible (e.g., after the current node has
5967  * been solved)
5968  *
5969  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
5970  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
5971  *
5972  * @pre This method can be called if @p scip is in one of the following stages:
5973  * - \ref SCIP_STAGE_INITPRESOLVE
5974  * - \ref SCIP_STAGE_PRESOLVING
5975  * - \ref SCIP_STAGE_EXITPRESOLVE
5976  * - \ref SCIP_STAGE_SOLVING
5977  *
5978  * @note the \SCIP stage does not get changed
5979  */
5980 extern
5982  SCIP* scip /**< SCIP data structure */
5983  );
5984 
5985 /** returns whether we are in the restarting phase
5986  *
5987  * @return TRUE, if we are in the restarting phase; FALSE, otherwise
5988  *
5989  * @pre This method can be called if @p scip is in one of the following stages:
5990  * - \ref SCIP_STAGE_INITPRESOLVE
5991  * - \ref SCIP_STAGE_PRESOLVING
5992  * - \ref SCIP_STAGE_EXITPRESOLVE
5993  * - \ref SCIP_STAGE_PRESOLVED
5994  * - \ref SCIP_STAGE_INITSOLVE
5995  * - \ref SCIP_STAGE_SOLVING
5996  * - \ref SCIP_STAGE_SOLVED
5997  * - \ref SCIP_STAGE_EXITSOLVE
5998  * - \ref SCIP_STAGE_FREETRANS
5999  */
6000 extern
6002  SCIP* scip /**< SCIP data structure */
6003  );
6004 
6005 /**@} */
6006 
6007 
6008 
6009 
6010 /*
6011  * variable methods
6012  */
6013 
6014 /**@name Variable Methods */
6015 /**@{ */
6016 
6017 /** creates and captures problem variable; if variable is of integral type, fractional bounds are automatically rounded;
6018  * an integer variable with bounds zero and one is automatically converted into a binary variable;
6019  *
6020  * @warning When doing column generation and the original problem is a maximization problem, notice that SCIP will
6021  * transform the problem into a minimization problem by multiplying the objective function by -1. Thus, the
6022  * original objective function value of variables created during the solving process has to be multiplied by
6023  * -1, too.
6024  *
6025  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6026  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6027  *
6028  * @pre This method can be called if @p scip is in one of the following stages:
6029  * - \ref SCIP_STAGE_PROBLEM
6030  * - \ref SCIP_STAGE_TRANSFORMING
6031  * - \ref SCIP_STAGE_INITPRESOLVE
6032  * - \ref SCIP_STAGE_PRESOLVING
6033  * - \ref SCIP_STAGE_EXITPRESOLVE
6034  * - \ref SCIP_STAGE_PRESOLVED
6035  * - \ref SCIP_STAGE_SOLVING
6036  *
6037  * @note the variable gets captured, hence at one point you have to release it using the method SCIPreleaseVar()
6038  */
6039 extern
6041  SCIP* scip, /**< SCIP data structure */
6042  SCIP_VAR** var, /**< pointer to variable object */
6043  const char* name, /**< name of variable, or NULL for automatic name creation */
6044  SCIP_Real lb, /**< lower bound of variable */
6045  SCIP_Real ub, /**< upper bound of variable */
6046  SCIP_Real obj, /**< objective function value */
6047  SCIP_VARTYPE vartype, /**< type of variable */
6048  SCIP_Bool initial, /**< should var's column be present in the initial root LP? */
6049  SCIP_Bool removable, /**< is var's column removable from the LP (due to aging or cleanup)? */
6050  SCIP_DECL_VARDELORIG ((*vardelorig)), /**< frees user data of original variable, or NULL */
6051  SCIP_DECL_VARTRANS ((*vartrans)), /**< creates transformed user data by transforming original user data, or NULL */
6052  SCIP_DECL_VARDELTRANS ((*vardeltrans)), /**< frees user data of transformed variable, or NULL */
6053  SCIP_DECL_VARCOPY ((*varcopy)), /**< copies variable data if wanted to subscip, or NULL */
6054  SCIP_VARDATA* vardata /**< user data for this specific variable, or NULL */
6055  );
6056 
6057 /** creates and captures problem variable with optional callbacks and variable data set to NULL, which can be set
6058  * afterwards using SCIPvarSetDelorigData(), SCIPvarSetTransData(),
6059  * SCIPvarSetDeltransData(), SCIPvarSetCopy(), and SCIPvarSetData(); sets variable flags initial=TRUE
6060  * and removable = FALSE, which can be adjusted by using SCIPvarSetInitial() and SCIPvarSetRemovable(), resp.;
6061  * if variable is of integral type, fractional bounds are automatically rounded;
6062  * an integer variable with bounds zero and one is automatically converted into a binary variable;
6063  *
6064  * @warning When doing column generation and the original problem is a maximization problem, notice that SCIP will
6065  * transform the problem into a minimization problem by multiplying the objective function by -1. Thus, the
6066  * original objective function value of variables created during the solving process has to be multiplied by
6067  * -1, too.
6068  *
6069  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6070  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6071  *
6072  * @pre This method can be called if @p scip is in one of the following stages:
6073  * - \ref SCIP_STAGE_PROBLEM
6074  * - \ref SCIP_STAGE_TRANSFORMING
6075  * - \ref SCIP_STAGE_INITPRESOLVE
6076  * - \ref SCIP_STAGE_PRESOLVING
6077  * - \ref SCIP_STAGE_EXITPRESOLVE
6078  * - \ref SCIP_STAGE_PRESOLVED
6079  * - \ref SCIP_STAGE_SOLVING
6080  *
6081  * @note the variable gets captured, hence at one point you have to release it using the method SCIPreleaseVar()
6082  */
6083 extern
6085  SCIP* scip, /**< SCIP data structure */
6086  SCIP_VAR** var, /**< pointer to variable object */
6087  const char* name, /**< name of variable, or NULL for automatic name creation */
6088  SCIP_Real lb, /**< lower bound of variable */
6089  SCIP_Real ub, /**< upper bound of variable */
6090  SCIP_Real obj, /**< objective function value */
6091  SCIP_VARTYPE vartype /**< type of variable */
6092  );
6093 
6094 /** outputs the variable name to the file stream
6095  *
6096  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6097  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6098  *
6099  * @pre This method can be called if @p scip is in one of the following stages:
6100  * - \ref SCIP_STAGE_PROBLEM
6101  * - \ref SCIP_STAGE_TRANSFORMING
6102  * - \ref SCIP_STAGE_TRANSFORMED
6103  * - \ref SCIP_STAGE_INITPRESOLVE
6104  * - \ref SCIP_STAGE_PRESOLVING
6105  * - \ref SCIP_STAGE_EXITPRESOLVE
6106  * - \ref SCIP_STAGE_PRESOLVED
6107  * - \ref SCIP_STAGE_INITSOLVE
6108  * - \ref SCIP_STAGE_SOLVING
6109  * - \ref SCIP_STAGE_SOLVED
6110  * - \ref SCIP_STAGE_EXITSOLVE
6111  * - \ref SCIP_STAGE_FREETRANS
6112  */
6113 extern
6115  SCIP* scip, /**< SCIP data structure */
6116  FILE* file, /**< output file, or NULL for stdout */
6117  SCIP_VAR* var, /**< variable to output */
6118  SCIP_Bool type /**< should the variable type be also posted */
6119  );
6120 
6121 /** print the given list of variables to output stream separated by the given delimiter character;
6122  *
6123  * i. e. the variables x1, x2, ..., xn with given delimiter ',' are written as: <x1>, <x2>, ..., <xn>;
6124  *
6125  * the method SCIPparseVarsList() can parse such a string
6126  *
6127  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6128  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6129  *
6130  * @pre This method can be called if @p scip is in one of the following stages:
6131  * - \ref SCIP_STAGE_PROBLEM
6132  * - \ref SCIP_STAGE_TRANSFORMING
6133  * - \ref SCIP_STAGE_TRANSFORMED
6134  * - \ref SCIP_STAGE_INITPRESOLVE
6135  * - \ref SCIP_STAGE_PRESOLVING
6136  * - \ref SCIP_STAGE_EXITPRESOLVE
6137  * - \ref SCIP_STAGE_PRESOLVED
6138  * - \ref SCIP_STAGE_INITSOLVE
6139  * - \ref SCIP_STAGE_SOLVING
6140  * - \ref SCIP_STAGE_SOLVED
6141  * - \ref SCIP_STAGE_EXITSOLVE
6142  * - \ref SCIP_STAGE_FREETRANS
6143  *
6144  * @note The printing process is done via the message handler system.
6145  */
6146 extern
6148  SCIP* scip, /**< SCIP data structure */
6149  FILE* file, /**< output file, or NULL for stdout */
6150  SCIP_VAR** vars, /**< variable array to output */
6151  int nvars, /**< number of variables */
6152  SCIP_Bool type, /**< should the variable type be also posted */
6153  char delimiter /**< character which is used for delimitation */
6154  );
6155 
6156 /** print the given variables and coefficients as linear sum in the following form
6157  * c1 <x1> + c2 <x2> ... + cn <xn>
6158  *
6159  * This string can be parsed by the method SCIPparseVarsLinearsum().
6160  *
6161  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6162  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6163  *
6164  * @pre This method can be called if @p scip is in one of the following stages:
6165  * - \ref SCIP_STAGE_PROBLEM
6166  * - \ref SCIP_STAGE_TRANSFORMING
6167  * - \ref SCIP_STAGE_TRANSFORMED
6168  * - \ref SCIP_STAGE_INITPRESOLVE
6169  * - \ref SCIP_STAGE_PRESOLVING
6170  * - \ref SCIP_STAGE_EXITPRESOLVE
6171  * - \ref SCIP_STAGE_PRESOLVED
6172  * - \ref SCIP_STAGE_INITSOLVE
6173  * - \ref SCIP_STAGE_SOLVING
6174  * - \ref SCIP_STAGE_SOLVED
6175  * - \ref SCIP_STAGE_EXITSOLVE
6176  * - \ref SCIP_STAGE_FREETRANS
6177  *
6178  * @note The printing process is done via the message handler system.
6179  */
6180 extern
6182  SCIP* scip, /**< SCIP data structure */
6183  FILE* file, /**< output file, or NULL for stdout */
6184  SCIP_VAR** vars, /**< variable array to output */
6185  SCIP_Real* vals, /**< array of coefficients or NULL if all coefficients are 1.0 */
6186  int nvars, /**< number of variables */
6187  SCIP_Bool type /**< should the variable type be also posted */
6188  );
6189 
6190 /** print the given monomials as polynomial in the following form
6191  * c1 <x11>^e11 <x12>^e12 ... <x1n>^e1n + c2 <x21>^e21 <x22>^e22 ... + ... + cn <xn1>^en1 ...
6192  *
6193  * This string can be parsed by the method SCIPparseVarsPolynomial().
6194  *
6195  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6196  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6197  *
6198  * @pre This method can be called if @p scip is in one of the following stages:
6199  * - \ref SCIP_STAGE_PROBLEM
6200  * - \ref SCIP_STAGE_TRANSFORMING
6201  * - \ref SCIP_STAGE_TRANSFORMED
6202  * - \ref SCIP_STAGE_INITPRESOLVE
6203  * - \ref SCIP_STAGE_PRESOLVING
6204  * - \ref SCIP_STAGE_EXITPRESOLVE
6205  * - \ref SCIP_STAGE_PRESOLVED
6206  * - \ref SCIP_STAGE_INITSOLVE
6207  * - \ref SCIP_STAGE_SOLVING
6208  * - \ref SCIP_STAGE_SOLVED
6209  * - \ref SCIP_STAGE_EXITSOLVE
6210  * - \ref SCIP_STAGE_FREETRANS
6211  *
6212  * @note The printing process is done via the message handler system.
6213  */
6214 extern
6216  SCIP* scip, /**< SCIP data structure */
6217  FILE* file, /**< output file, or NULL for stdout */
6218  SCIP_VAR*** monomialvars, /**< arrays with variables for each monomial */
6219  SCIP_Real** monomialexps, /**< arrays with variable exponents, or NULL if always 1.0 */
6220  SCIP_Real* monomialcoefs, /**< array with monomial coefficients */
6221  int* monomialnvars, /**< array with number of variables for each monomial */
6222  int nmonomials, /**< number of monomials */
6223  SCIP_Bool type /**< should the variable type be also posted */
6224  );
6225 
6226 /** parses variable information (in cip format) out of a string; if the parsing process was successful a variable is
6227  * created and captured; if variable is of integral type, fractional bounds are automatically rounded; an integer
6228  * variable with bounds zero and one is automatically converted into a binary variable
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_PROBLEM
6235  * - \ref SCIP_STAGE_TRANSFORMING
6236  * - \ref SCIP_STAGE_INITPRESOLVE
6237  * - \ref SCIP_STAGE_PRESOLVING
6238  * - \ref SCIP_STAGE_EXITPRESOLVE
6239  * - \ref SCIP_STAGE_PRESOLVED
6240  * - \ref SCIP_STAGE_SOLVING
6241  */
6242 extern
6244  SCIP* scip, /**< SCIP data structure */
6245  SCIP_VAR** var, /**< pointer to store the problem variable */
6246  const char* str, /**< string to parse */
6247  SCIP_Bool initial, /**< should var's column be present in the initial root LP? */
6248  SCIP_Bool removable, /**< is var's column removable from the LP (due to aging or cleanup)? */
6249  SCIP_DECL_VARCOPY ((*varcopy)), /**< copies variable data if wanted to subscip, or NULL */
6250  SCIP_DECL_VARDELORIG ((*vardelorig)), /**< frees user data of original variable */
6251  SCIP_DECL_VARTRANS ((*vartrans)), /**< creates transformed user data by transforming original user data */
6252  SCIP_DECL_VARDELTRANS ((*vardeltrans)), /**< frees user data of transformed variable */
6253  SCIP_VARDATA* vardata, /**< user data for this specific variable */
6254  char** endptr, /**< pointer to store the final string position if successfully */
6255  SCIP_Bool* success /**< pointer store if the paring process was successful */
6256  );
6257 
6258 /** parses the given string for a variable name and stores the variable in the corresponding pointer if such a variable
6259  * exits and returns the position where the parsing stopped
6260  *
6261  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6262  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6263  *
6264  * @pre This method can be called if @p scip is in one of the following stages:
6265  * - \ref SCIP_STAGE_PROBLEM
6266  * - \ref SCIP_STAGE_TRANSFORMING
6267  * - \ref SCIP_STAGE_INITPRESOLVE
6268  * - \ref SCIP_STAGE_PRESOLVING
6269  * - \ref SCIP_STAGE_EXITPRESOLVE
6270  * - \ref SCIP_STAGE_PRESOLVED
6271  * - \ref SCIP_STAGE_SOLVING
6272  */
6273 extern
6275  SCIP* scip, /**< SCIP data structure */
6276  const char* str, /**< string to parse */
6277  SCIP_VAR** var, /**< pointer to store the problem variable, or NULL if it does not exit */
6278  char** endptr /**< pointer to store the final string position if successfully */
6279  );
6280 
6281 /** parse the given string as variable list (here ',' is the delimiter)) (<x1>, <x2>, ..., <xn>) (see
6282  * SCIPwriteVarsList() ); if it was successful, the pointer success is set to TRUE
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_PROBLEM
6289  * - \ref SCIP_STAGE_TRANSFORMING
6290  * - \ref SCIP_STAGE_INITPRESOLVE
6291  * - \ref SCIP_STAGE_PRESOLVING
6292  * - \ref SCIP_STAGE_EXITPRESOLVE
6293  * - \ref SCIP_STAGE_PRESOLVED
6294  * - \ref SCIP_STAGE_SOLVING
6295  *
6296  * @note the pointer success in only set to FALSE in the case that a variable with a parsed variable name does not exist
6297  *
6298  * @note If the number of (parsed) variables is greater than the available slots in the variable array, nothing happens
6299  * except that the required size is stored in the corresponding integer; the reason for this approach is that we
6300  * cannot reallocate memory, since we do not know how the memory has been allocated (e.g., by a C++ 'new' or SCIP
6301  * memory functions).
6302  */
6303 extern
6305  SCIP* scip, /**< SCIP data structure */
6306  const char* str, /**< string to parse */
6307  SCIP_VAR** vars, /**< array to store the parsed variable */
6308  int* nvars, /**< pointer to store number of parsed variables */
6309  int varssize, /**< size of the variable array */
6310  int* requiredsize, /**< pointer to store the required array size for the active variables */
6311  char** endptr, /**< pointer to store the final string position if successfully */
6312  char delimiter, /**< character which is used for delimitation */
6313  SCIP_Bool* success /**< pointer to store the whether the parsing was successfully or not */
6314  );
6315 
6316 /** parse the given string as linear sum of variables and coefficients (c1 <x1> + c2 <x2> + ... + cn <xn>)
6317  * (see SCIPwriteVarsLinearsum() ); if it was successful, the pointer success is set to TRUE
6318  *
6319  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6320  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6321  *
6322  * @pre This method can be called if @p scip is in one of the following stages:
6323  * - \ref SCIP_STAGE_PROBLEM
6324  * - \ref SCIP_STAGE_TRANSFORMING
6325  * - \ref SCIP_STAGE_INITPRESOLVE
6326  * - \ref SCIP_STAGE_PRESOLVING
6327  * - \ref SCIP_STAGE_EXITPRESOLVE
6328  * - \ref SCIP_STAGE_PRESOLVED
6329  * - \ref SCIP_STAGE_SOLVING
6330  *
6331  * @note the pointer success in only set to FALSE in the case that a variable with a parsed variable name does not exist
6332  *
6333  * @note If the number of (parsed) variables is greater than the available slots in the variable array, nothing happens
6334  * except that the required size is stored in the corresponding integer; the reason for this approach is that we
6335  * cannot reallocate memory, since we do not know how the memory has been allocated (e.g., by a C++ 'new' or SCIP
6336  * memory functions).
6337  */
6338 extern
6340  SCIP* scip, /**< SCIP data structure */
6341  const char* str, /**< string to parse */
6342  SCIP_VAR** vars, /**< array to store the parsed variables */
6343  SCIP_Real* vals, /**< array to store the parsed coefficients */
6344  int* nvars, /**< pointer to store number of parsed variables */
6345  int varssize, /**< size of the variable array */
6346  int* requiredsize, /**< pointer to store the required array size for the active variables */
6347  char** endptr, /**< pointer to store the final string position if successfully */
6348  SCIP_Bool* success /**< pointer to store the whether the parsing was successfully or not */
6349  );
6350 
6351 /** parse the given string as polynomial of variables and coefficients
6352  * (c1 <x11>^e11 <x12>^e12 ... <x1n>^e1n + c2 <x21>^e21 <x22>^e22 ... + ... + cn <xn1>^en1 ...)
6353  * (see SCIPwriteVarsPolynomial()); if it was successful, the pointer success is set to TRUE
6354  *
6355  * The user has to call SCIPfreeParseVarsPolynomialData(scip, monomialvars, monomialexps,
6356  * monomialcoefs, monomialnvars, *nmonomials) short after SCIPparseVarsPolynomial to free all the
6357  * allocated memory again. Do not keep the arrays created by SCIPparseVarsPolynomial around, since
6358  * they use buffer memory that is intended for short term use only.
6359  *
6360  * Parsing is stopped at the end of string (indicated by the \\0-character) or when no more monomials
6361  * are recognized.
6362  *
6363  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6364  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6365  *
6366  * @pre This method can be called if @p scip is in one of the following stages:
6367  * - \ref SCIP_STAGE_PROBLEM
6368  * - \ref SCIP_STAGE_TRANSFORMING
6369  * - \ref SCIP_STAGE_INITPRESOLVE
6370  * - \ref SCIP_STAGE_PRESOLVING
6371  * - \ref SCIP_STAGE_EXITPRESOLVE
6372  * - \ref SCIP_STAGE_PRESOLVED
6373  * - \ref SCIP_STAGE_SOLVING
6374  */
6375 extern
6377  SCIP* scip, /**< SCIP data structure */
6378  const char* str, /**< string to parse */
6379  SCIP_VAR**** monomialvars, /**< pointer to store arrays with variables for each monomial */
6380  SCIP_Real*** monomialexps, /**< pointer to store arrays with variable exponents */
6381  SCIP_Real** monomialcoefs, /**< pointer to store array with monomial coefficients */
6382  int** monomialnvars, /**< pointer to store array with number of variables for each monomial */
6383  int* nmonomials, /**< pointer to store number of parsed monomials */
6384  char** endptr, /**< pointer to store the final string position if successfully */
6385  SCIP_Bool* success /**< pointer to store the whether the parsing was successfully or not */
6386  );
6387 
6388 /** frees memory allocated when parsing a polynomial from a string
6389  *
6390  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6391  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6392  *
6393  * @pre This method can be called if @p scip is in one of the following stages:
6394  * - \ref SCIP_STAGE_PROBLEM
6395  * - \ref SCIP_STAGE_TRANSFORMING
6396  * - \ref SCIP_STAGE_INITPRESOLVE
6397  * - \ref SCIP_STAGE_PRESOLVING
6398  * - \ref SCIP_STAGE_EXITPRESOLVE
6399  * - \ref SCIP_STAGE_PRESOLVED
6400  * - \ref SCIP_STAGE_SOLVING
6401  */
6402 extern
6404  SCIP* scip, /**< SCIP data structure */
6405  SCIP_VAR**** monomialvars, /**< pointer to store arrays with variables for each monomial */
6406  SCIP_Real*** monomialexps, /**< pointer to store arrays with variable exponents */
6407  SCIP_Real** monomialcoefs, /**< pointer to store array with monomial coefficients */
6408  int** monomialnvars, /**< pointer to store array with number of variables for each monomial */
6409  int nmonomials /**< pointer to store number of parsed monomials */
6410  );
6411 
6412 /** increases usage counter of variable
6413  *
6414  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6415  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6416  *
6417  * @pre This method can be called if @p scip is in one of the following stages:
6418  * - \ref SCIP_STAGE_PROBLEM
6419  * - \ref SCIP_STAGE_TRANSFORMING
6420  * - \ref SCIP_STAGE_TRANSFORMED
6421  * - \ref SCIP_STAGE_INITPRESOLVE
6422  * - \ref SCIP_STAGE_PRESOLVING
6423  * - \ref SCIP_STAGE_EXITPRESOLVE
6424  * - \ref SCIP_STAGE_PRESOLVED
6425  * - \ref SCIP_STAGE_INITSOLVE
6426  * - \ref SCIP_STAGE_SOLVING
6427  * - \ref SCIP_STAGE_SOLVED
6428  * - \ref SCIP_STAGE_EXITSOLVE
6429  */
6430 extern
6432  SCIP* scip, /**< SCIP data structure */
6433  SCIP_VAR* var /**< variable to capture */
6434  );
6435 
6436 /** decreases usage counter of variable, if the usage pointer reaches zero the variable gets freed
6437  *
6438  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6439  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6440  *
6441  * @pre This method can be called if @p scip is in one of the following stages:
6442  * - \ref SCIP_STAGE_PROBLEM
6443  * - \ref SCIP_STAGE_TRANSFORMING
6444  * - \ref SCIP_STAGE_TRANSFORMED
6445  * - \ref SCIP_STAGE_INITPRESOLVE
6446  * - \ref SCIP_STAGE_PRESOLVING
6447  * - \ref SCIP_STAGE_EXITPRESOLVE
6448  * - \ref SCIP_STAGE_PRESOLVED
6449  * - \ref SCIP_STAGE_INITSOLVE
6450  * - \ref SCIP_STAGE_SOLVING
6451  * - \ref SCIP_STAGE_SOLVED
6452  * - \ref SCIP_STAGE_EXITSOLVE
6453  * - \ref SCIP_STAGE_FREETRANS
6454  *
6455  * @note the pointer of the variable will be NULLed
6456  */
6457 extern
6459  SCIP* scip, /**< SCIP data structure */
6460  SCIP_VAR** var /**< pointer to variable */
6461  );
6462 
6463 /** changes the name of a variable
6464  *
6465  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6466  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6467  *
6468  * @pre This method can only be called if @p scip is in stage \ref SCIP_STAGE_PROBLEM
6469  *
6470  * @note to get the current name of a variable, use SCIPvarGetName() from pub_var.h
6471  */
6472 extern
6474  SCIP* scip, /**< SCIP data structure */
6475  SCIP_VAR* var, /**< variable */
6476  const char* name /**< new name of constraint */
6477  );
6478 
6479 /** gets and captures transformed variable of a given variable; if the variable is not yet transformed,
6480  * a new transformed variable for this variable is created
6481  *
6482  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6483  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6484  *
6485  * @pre This method can be called if @p scip is in one of the following stages:
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  */
6495 extern
6497  SCIP* scip, /**< SCIP data structure */
6498  SCIP_VAR* var, /**< variable to get/create transformed variable for */
6499  SCIP_VAR** transvar /**< pointer to store the transformed variable */
6500  );
6501 
6502 /** gets and captures transformed variables for an array of variables;
6503  * if a variable of the array is not yet transformed, a new transformed variable for this variable is created;
6504  * it is possible to call this method with vars == transvars
6505  *
6506  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6507  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6508  *
6509  * @pre This method can be called if @p scip is in one of the following stages:
6510  * - \ref SCIP_STAGE_TRANSFORMING
6511  * - \ref SCIP_STAGE_TRANSFORMED
6512  * - \ref SCIP_STAGE_INITPRESOLVE
6513  * - \ref SCIP_STAGE_PRESOLVING
6514  * - \ref SCIP_STAGE_EXITPRESOLVE
6515  * - \ref SCIP_STAGE_PRESOLVED
6516  * - \ref SCIP_STAGE_INITSOLVE
6517  * - \ref SCIP_STAGE_SOLVING
6518  */
6519 extern
6521  SCIP* scip, /**< SCIP data structure */
6522  int nvars, /**< number of variables to get/create transformed variables for */
6523  SCIP_VAR** vars, /**< array with variables to get/create transformed variables for */
6524  SCIP_VAR** transvars /**< array to store the transformed variables */
6525  );
6526 
6527 /** gets corresponding transformed variable of a given variable;
6528  * returns NULL as transvar, if transformed variable is not yet existing
6529  *
6530  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6531  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6532  *
6533  * @pre This method can be called if @p scip is in one of the following stages:
6534  * - \ref SCIP_STAGE_TRANSFORMING
6535  * - \ref SCIP_STAGE_TRANSFORMED
6536  * - \ref SCIP_STAGE_INITPRESOLVE
6537  * - \ref SCIP_STAGE_PRESOLVING
6538  * - \ref SCIP_STAGE_EXITPRESOLVE
6539  * - \ref SCIP_STAGE_PRESOLVED
6540  * - \ref SCIP_STAGE_INITSOLVE
6541  * - \ref SCIP_STAGE_SOLVING
6542  * - \ref SCIP_STAGE_SOLVED
6543  * - \ref SCIP_STAGE_EXITSOLVE
6544  * - \ref SCIP_STAGE_FREETRANS
6545  */
6546 extern
6548  SCIP* scip, /**< SCIP data structure */
6549  SCIP_VAR* var, /**< variable to get transformed variable for */
6550  SCIP_VAR** transvar /**< pointer to store the transformed variable */
6551  );
6552 
6553 /** gets corresponding transformed variables for an array of variables;
6554  * stores NULL in a transvars slot, if the transformed variable is not yet existing;
6555  * it is possible to call this method with vars == transvars, but remember that variables that are not
6556  * yet transformed will be replaced with NULL
6557  *
6558  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6559  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6560  *
6561  * @pre This method can be called if @p scip is in one of the following stages:
6562  * - \ref SCIP_STAGE_TRANSFORMING
6563  * - \ref SCIP_STAGE_TRANSFORMED
6564  * - \ref SCIP_STAGE_INITPRESOLVE
6565  * - \ref SCIP_STAGE_PRESOLVING
6566  * - \ref SCIP_STAGE_EXITPRESOLVE
6567  * - \ref SCIP_STAGE_PRESOLVED
6568  * - \ref SCIP_STAGE_INITSOLVE
6569  * - \ref SCIP_STAGE_SOLVING
6570  * - \ref SCIP_STAGE_SOLVED
6571  * - \ref SCIP_STAGE_EXITSOLVE
6572  * - \ref SCIP_STAGE_FREETRANS
6573  */
6574 extern
6576  SCIP* scip, /**< SCIP data structure */
6577  int nvars, /**< number of variables to get transformed variables for */
6578  SCIP_VAR** vars, /**< array with variables to get transformed variables for */
6579  SCIP_VAR** transvars /**< array to store the transformed variables */
6580  );
6581 
6582 /** gets negated variable x' = lb + ub - x of variable x; negated variable is created, if not yet existing
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_TRANSFORMED
6591  * - \ref SCIP_STAGE_INITPRESOLVE
6592  * - \ref SCIP_STAGE_PRESOLVING
6593  * - \ref SCIP_STAGE_EXITPRESOLVE
6594  * - \ref SCIP_STAGE_PRESOLVED
6595  * - \ref SCIP_STAGE_INITSOLVE
6596  * - \ref SCIP_STAGE_SOLVING
6597  * - \ref SCIP_STAGE_SOLVED
6598  * - \ref SCIP_STAGE_EXITSOLVE
6599  * - \ref SCIP_STAGE_FREETRANS
6600  */
6601 extern
6603  SCIP* scip, /**< SCIP data structure */
6604  SCIP_VAR* var, /**< variable to get negated variable for */
6605  SCIP_VAR** negvar /**< pointer to store the negated variable */
6606  );
6607 
6608 /** gets negated variables x' = lb + ub - x of variables x; negated variables are created, if not yet existing
6609  *
6610  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6611  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6612  *
6613  * @pre This method can be called if @p scip is in one of the following stages:
6614  * - \ref SCIP_STAGE_PROBLEM
6615  * - \ref SCIP_STAGE_TRANSFORMING
6616  * - \ref SCIP_STAGE_TRANSFORMED
6617  * - \ref SCIP_STAGE_INITPRESOLVE
6618  * - \ref SCIP_STAGE_PRESOLVING
6619  * - \ref SCIP_STAGE_EXITPRESOLVE
6620  * - \ref SCIP_STAGE_PRESOLVED
6621  * - \ref SCIP_STAGE_INITSOLVE
6622  * - \ref SCIP_STAGE_SOLVING
6623  * - \ref SCIP_STAGE_SOLVED
6624  * - \ref SCIP_STAGE_EXITSOLVE
6625  * - \ref SCIP_STAGE_FREETRANS
6626  */
6627 extern
6629  SCIP* scip, /**< SCIP data structure */
6630  int nvars, /**< number of variables to get negated variables for */
6631  SCIP_VAR** vars, /**< array of variables to get negated variables for */
6632  SCIP_VAR** negvars /**< array to store the negated variables */
6633  );
6634 
6635 /** gets a binary variable that is equal to the given binary variable, and that is either active, fixed, or
6636  * multi-aggregated, or the negated variable of an active, fixed, or multi-aggregated variable
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_TRANSFORMED
6644  * - \ref SCIP_STAGE_INITPRESOLVE
6645  * - \ref SCIP_STAGE_PRESOLVING
6646  * - \ref SCIP_STAGE_EXITPRESOLVE
6647  * - \ref SCIP_STAGE_PRESOLVED
6648  * - \ref SCIP_STAGE_INITSOLVE
6649  * - \ref SCIP_STAGE_SOLVING
6650  * - \ref SCIP_STAGE_SOLVED
6651  * - \ref SCIP_STAGE_EXITSOLVE
6652  */
6653 extern
6655  SCIP* scip, /**< SCIP data structure */
6656  SCIP_VAR* var, /**< binary variable to get binary representative for */
6657  SCIP_VAR** repvar, /**< pointer to store the binary representative */
6658  SCIP_Bool* negated /**< pointer to store whether the negation of an active variable was returned */
6659  );
6660 
6661 /** gets binary variables that are equal to the given binary variables, and which are either active, fixed, or
6662  * multi-aggregated, or the negated variables of active, fixed, or multi-aggregated variables
6663  *
6664  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6665  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6666  *
6667  * @pre This method can be called if @p scip is in one of the following stages:
6668  * - \ref SCIP_STAGE_PROBLEM
6669  * - \ref SCIP_STAGE_TRANSFORMED
6670  * - \ref SCIP_STAGE_INITPRESOLVE
6671  * - \ref SCIP_STAGE_PRESOLVING
6672  * - \ref SCIP_STAGE_EXITPRESOLVE
6673  * - \ref SCIP_STAGE_PRESOLVED
6674  * - \ref SCIP_STAGE_INITSOLVE
6675  * - \ref SCIP_STAGE_SOLVING
6676  * - \ref SCIP_STAGE_SOLVED
6677  * - \ref SCIP_STAGE_EXITSOLVE
6678  */
6679 extern
6681  SCIP* scip, /**< SCIP data structure */
6682  int nvars, /**< number of binary variables to get representatives for */
6683  SCIP_VAR** vars, /**< binary variables to get binary representatives for */
6684  SCIP_VAR** repvars, /**< array to store the binary representatives */
6685  SCIP_Bool* negated /**< array to store whether the negation of an active variable was returned */
6686  );
6687 
6688 /** flattens aggregation graph of multi-aggregated variable in order to avoid exponential recursion later on
6689  *
6690  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6691  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6692  *
6693  * @pre This method can be called if @p scip is in one of the following stages:
6694  * - \ref SCIP_STAGE_INITPRESOLVE
6695  * - \ref SCIP_STAGE_PRESOLVING
6696  * - \ref SCIP_STAGE_EXITPRESOLVE
6697  * - \ref SCIP_STAGE_PRESOLVED
6698  * - \ref SCIP_STAGE_INITSOLVE
6699  * - \ref SCIP_STAGE_SOLVING
6700  * - \ref SCIP_STAGE_SOLVED
6701  */
6702 extern
6704  SCIP* scip, /**< SCIP data structure */
6705  SCIP_VAR* var /**< problem variable */
6706  );
6707 
6708 /** Transforms a given linear sum of variables, that is a_1*x_1 + ... + a_n*x_n + c into a corresponding linear sum of
6709  * active variables, that is b_1*y_1 + ... + b_m*y_m + d.
6710  *
6711  * If the number of needed active variables is greater than the available slots in the variable array, nothing happens
6712  * except that the required size is stored in the corresponding variable (requiredsize). Otherwise, the active variable
6713  * representation is stored in the variable array, scalar array and constant.
6714  *
6715  * The reason for this approach is that we cannot reallocate memory, since we do not know how the memory has been
6716  * allocated (e.g., by a C++ 'new' or SCIP functions).
6717  *
6718  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6719  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6720  *
6721  * @pre This method can be called if @p scip is in one of the following stages:
6722  * - \ref SCIP_STAGE_TRANSFORMED
6723  * - \ref SCIP_STAGE_INITPRESOLVE
6724  * - \ref SCIP_STAGE_PRESOLVING
6725  * - \ref SCIP_STAGE_EXITPRESOLVE
6726  * - \ref SCIP_STAGE_PRESOLVED
6727  * - \ref SCIP_STAGE_INITSOLVE
6728  * - \ref SCIP_STAGE_SOLVING
6729  * - \ref SCIP_STAGE_SOLVED
6730  * - \ref SCIP_STAGE_EXITSOLVE
6731  * - \ref SCIP_STAGE_FREETRANS
6732  *
6733  * @note The resulting linear sum is stored into the given variable array, scalar array, and constant. That means the
6734  * given entries are overwritten.
6735  *
6736  * @note That method can be used to convert a single variables into variable space of active variables. Therefore call
6737  * the method with the linear sum 1.0*x + 0.0.
6738  */
6739 extern
6741  SCIP* scip, /**< SCIP data structure */
6742  SCIP_VAR** vars, /**< variable array x_1, ..., x_n in the linear sum which will be
6743  * overwritten by the variable array y_1, ..., y_m in the linear sum
6744  * w.r.t. active variables */
6745  SCIP_Real* scalars, /**< scalars a_1, ..., a_n in linear sum which will be overwritten to the
6746  * scalars b_1, ..., b_m in the linear sum of the active variables */
6747  int* nvars, /**< pointer to number of variables in the linear sum which will be
6748  * overwritten by the number of variables in the linear sum corresponding
6749  * to the active variables */
6750  int varssize, /**< available slots in vars and scalars array which is needed to check if
6751  * the array are large enough for the linear sum w.r.t. active
6752  * variables */
6753  SCIP_Real* constant, /**< pointer to constant c in linear sum a_1*x_1 + ... + a_n*x_n + c which
6754  * will chnage to constant d in the linear sum b_1*y_1 + ... + b_m*y_m +
6755  * d w.r.t. the active variables */
6756  int* requiredsize, /**< pointer to store the required array size for the linear sum w.r.t. the
6757  * active variables */
6758  SCIP_Bool mergemultiples /**< should multiple occurrences of a var be replaced by a single coeff? */
6759  );
6760 
6761 /** transforms given variable, scalar and constant to the corresponding active, fixed, or
6762  * multi-aggregated variable, scalar and constant; if the variable resolves to a fixed variable,
6763  * "scalar" will be 0.0 and the value of the sum will be stored in "constant"; a multi-aggregation
6764  * with only one active variable (this can happen due to fixings after the multi-aggregation),
6765  * is treated like an aggregation; if the multi-aggregation constant is infinite, "scalar" will be 0.0
6766  *
6767  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6768  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6769  *
6770  * @pre This method can be called if @p scip is in one of the following stages:
6771  * - \ref SCIP_STAGE_TRANSFORMED
6772  * - \ref SCIP_STAGE_INITPRESOLVE
6773  * - \ref SCIP_STAGE_PRESOLVING
6774  * - \ref SCIP_STAGE_EXITPRESOLVE
6775  * - \ref SCIP_STAGE_PRESOLVED
6776  * - \ref SCIP_STAGE_INITSOLVE
6777  * - \ref SCIP_STAGE_SOLVING
6778  * - \ref SCIP_STAGE_SOLVED
6779  * - \ref SCIP_STAGE_EXITSOLVE
6780  * - \ref SCIP_STAGE_FREETRANS
6781  */
6782 extern
6784  SCIP* scip, /**< SCIP data structure */
6785  SCIP_VAR** var, /**< pointer to problem variable x in sum a*x + c */
6786  SCIP_Real* scalar, /**< pointer to scalar a in sum a*x + c */
6787  SCIP_Real* constant /**< pointer to constant c in sum a*x + c */
6788  );
6789 
6790 /** return for given variables all their active counterparts; all active variables will be pairwise different
6791  * @note It does not hold that the first output variable is the active variable for the first input variable.
6792  *
6793  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6794  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6795  *
6796  * @pre This method can be called if @p scip is in one of the following stages:
6797  * - \ref SCIP_STAGE_TRANSFORMED
6798  * - \ref SCIP_STAGE_INITPRESOLVE
6799  * - \ref SCIP_STAGE_PRESOLVING
6800  * - \ref SCIP_STAGE_EXITPRESOLVE
6801  * - \ref SCIP_STAGE_PRESOLVED
6802  * - \ref SCIP_STAGE_INITSOLVE
6803  * - \ref SCIP_STAGE_SOLVING
6804  * - \ref SCIP_STAGE_SOLVED
6805  * - \ref SCIP_STAGE_EXITSOLVE
6806  * - \ref SCIP_STAGE_FREETRANS
6807  */
6808 extern
6810  SCIP* scip, /**< SCIP data structure */
6811  SCIP_VAR** vars, /**< variable array with given variables and as output all active
6812  * variables, if enough slots exist */
6813  int* nvars, /**< number of given variables, and as output number of active variables,
6814  * if enough slots exist */
6815  int varssize, /**< available slots in vars array */
6816  int* requiredsize /**< pointer to store the required array size for the active variables */
6817  );
6818 
6819 /** returns the reduced costs of the variable in the current node's LP relaxation;
6820  * the current node has to have a feasible LP.
6821  *
6822  * returns SCIP_INVALID if the variable is active but not in the current LP;
6823  * returns 0 if the variable has been aggregated out or fixed in presolving.
6824  *
6825  * @pre This method can only be called if @p scip is in stage \ref SCIP_STAGE_SOLVING
6826  */
6827 extern
6829  SCIP* scip, /**< SCIP data structure */
6830  SCIP_VAR* var /**< variable to get reduced costs, should be a column in current node LP */
6831  );
6832 
6833 /** returns the implied reduced costs of the variable in the current node's LP relaxation;
6834  * the current node has to have a feasible LP.
6835  *
6836  * returns SCIP_INVALID if the variable is active but not in the current LP;
6837  * returns 0 if the variable has been aggregated out or fixed in presolving.
6838  *
6839  * @pre This method can only be called if @p scip is in stage \ref SCIP_STAGE_SOLVING
6840  */
6841 extern
6843  SCIP* scip, /**< SCIP data structure */
6844  SCIP_VAR* var, /**< variable to get reduced costs, should be a column in current node LP */
6845  SCIP_Bool varfixing /**< FALSE if for x == 0, TRUE for x == 1 */
6846  );
6847 
6848 /** returns the Farkas coefficient of the variable in the current node's LP relaxation;
6849  * the current node has to have an infeasible LP.
6850  *
6851  * returns SCIP_INVALID if the variable is active but not in the current LP;
6852  * returns 0 if the variable has been aggregated out or fixed in presolving.
6853  *
6854  * @pre This method can only be called if @p scip is in stage \ref SCIP_STAGE_SOLVING
6855  */
6856 extern
6858  SCIP* scip, /**< SCIP data structure */
6859  SCIP_VAR* var /**< variable to get reduced costs, should be a column in current node LP */
6860  );
6861 
6862 /** gets solution value for variable in current node
6863  *
6864  * @return solution value for variable in current node
6865  *
6866  * @pre This method can be called if @p scip is in one of the following stages:
6867  * - \ref SCIP_STAGE_PRESOLVED
6868  * - \ref SCIP_STAGE_SOLVING
6869  */
6870 extern
6872  SCIP* scip, /**< SCIP data structure */
6873  SCIP_VAR* var /**< variable to get solution value for */
6874  );
6875 
6876 /** gets solution values of multiple variables in current node
6877  *
6878  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6879  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6880  *
6881  * @pre This method can be called if @p scip is in one of the following stages:
6882  * - \ref SCIP_STAGE_PRESOLVED
6883  * - \ref SCIP_STAGE_SOLVING
6884  */
6885 extern
6887  SCIP* scip, /**< SCIP data structure */
6888  int nvars, /**< number of variables to get solution value for */
6889  SCIP_VAR** vars, /**< array with variables to get value for */
6890  SCIP_Real* vals /**< array to store solution values of variables */
6891  );
6892 
6893 /** sets the solution value of all variables in the global relaxation solution to zero
6894  *
6895  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6896  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6897  *
6898  * @pre This method can be called if @p scip is in one of the following stages:
6899  * - \ref SCIP_STAGE_PRESOLVED
6900  * - \ref SCIP_STAGE_SOLVING
6901  */
6902 extern
6904  SCIP* scip /**< SCIP data structure */
6905  );
6906 
6907 /** sets the value of the given variable in the global relaxation solution;
6908  * this solution can be filled by the relaxation handlers and can be used by heuristics and for separation;
6909  * You can use SCIPclearRelaxSolVals() to set all values to zero, initially;
6910  * after setting all solution values, you have to call SCIPmarkRelaxSolValid()
6911  * to inform SCIP that the stored solution is valid
6912  *
6913  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6914  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6915  *
6916  * @pre This method can be called if @p scip is in one of the following stages:
6917  * - \ref SCIP_STAGE_PRESOLVED
6918  * - \ref SCIP_STAGE_SOLVING
6919  */
6920 extern
6922  SCIP* scip, /**< SCIP data structure */
6923  SCIP_VAR* var, /**< variable to set value for */
6924  SCIP_Real val /**< solution value of variable */
6925  );
6926 
6927 /** sets the values of the given variables in the global relaxation solution;
6928  * this solution can be filled by the relaxation handlers and can be used by heuristics and for separation;
6929  * the solution is automatically cleared, s.t. all other variables get value 0.0
6930  *
6931  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6932  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6933  *
6934  * @pre This method can be called if @p scip is in one of the following stages:
6935  * - \ref SCIP_STAGE_PRESOLVED
6936  * - \ref SCIP_STAGE_SOLVING
6937  */
6938 extern
6940  SCIP* scip, /**< SCIP data structure */
6941  int nvars, /**< number of variables to set relaxation solution value for */
6942  SCIP_VAR** vars, /**< array with variables to set value for */
6943  SCIP_Real* vals /**< array with solution values of variables */
6944  );
6945 
6946 /** sets the values of the variables in the global relaxation solution to the values
6947  * in the given primal solution; the relaxation solution can be filled by the relaxation hanlders
6948  * and might be used by heuristics and for separation
6949  *
6950  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6951  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6952  *
6953  * @pre This method can be called if @p scip is in one of the following stages:
6954  * - \ref SCIP_STAGE_PRESOLVED
6955  * - \ref SCIP_STAGE_SOLVING
6956  */
6957 extern
6959  SCIP* scip, /**< SCIP data structure */
6960  SCIP_SOL* sol /**< primal relaxation solution */
6961  );
6962 
6963 /** returns whether the relaxation solution is valid
6964  *
6965  * @return TRUE, if the relaxation solution is valid; FALSE, otherwise
6966  *
6967  * @pre This method can be called if @p scip is in one of the following stages:
6968  * - \ref SCIP_STAGE_PRESOLVED
6969  * - \ref SCIP_STAGE_SOLVING
6970  */
6971 extern
6973  SCIP* scip /**< SCIP data structure */
6974  );
6975 
6976 /** informs SCIP, that the relaxation solution is valid
6977  *
6978  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
6979  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
6980  *
6981  * @pre This method can be called if @p scip is in one of the following stages:
6982  * - \ref SCIP_STAGE_PRESOLVED
6983  * - \ref SCIP_STAGE_SOLVING
6984  */
6985 extern
6987  SCIP* scip /**< SCIP data structure */
6988  );
6989 
6990 /** informs SCIP, that the relaxation solution is invalid
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_PRESOLVED
6997  * - \ref SCIP_STAGE_SOLVING
6998  */
6999 extern
7001  SCIP* scip /**< SCIP data structure */
7002  );
7003 
7004 /** gets the relaxation solution value of the given variable
7005  *
7006  * @return the relaxation solution value of the given variable
7007  *
7008  * @pre This method can be called if @p scip is in one of the following stages:
7009  * - \ref SCIP_STAGE_PRESOLVED
7010  * - \ref SCIP_STAGE_SOLVING
7011  */
7012 extern
7014  SCIP* scip, /**< SCIP data structure */
7015  SCIP_VAR* var /**< variable to get value for */
7016  );
7017 
7018 /** gets the relaxation solution objective value
7019  *
7020  * @return the objective value of the relaxation solution
7021  *
7022  * @pre This method can be called if @p scip is in one of the following stages:
7023  * - \ref SCIP_STAGE_PRESOLVED
7024  * - \ref SCIP_STAGE_SOLVING
7025  */
7026 extern
7028  SCIP* scip /**< SCIP data structure */
7029  );
7030 
7031 /** start strong branching - call before any strong branching
7032  *
7033  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7034  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7035  *
7036  * @pre This method can be called if @p scip is in one of the following stages:
7037  * - \ref SCIP_STAGE_PRESOLVED
7038  * - \ref SCIP_STAGE_SOLVING
7039  *
7040  * @note if propagation is enabled, strong branching is not done directly on the LP, but probing nodes are created
7041  * which allow to perform propagation but also creates some overhead
7042  */
7043 extern
7045  SCIP* scip, /**< SCIP data structure */
7046  SCIP_Bool enablepropagation /**< should propagation be done before solving the strong branching LP? */
7047  );
7048 
7049 /** end strong branching - call after any strong branching
7050  *
7051  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7052  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7053  *
7054  * @pre This method can be called if @p scip is in one of the following stages:
7055  * - \ref SCIP_STAGE_PRESOLVED
7056  * - \ref SCIP_STAGE_SOLVING
7057  */
7058 extern
7060  SCIP* scip /**< SCIP data structure */
7061  );
7062 
7063 /** gets strong branching information on column variable with fractional value
7064  *
7065  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7066  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7067  *
7068  * @pre This method can be called if @p scip is in one of the following stages:
7069  * - \ref SCIP_STAGE_PRESOLVED
7070  * - \ref SCIP_STAGE_SOLVING
7071  */
7072 extern
7074  SCIP* scip, /**< SCIP data structure */
7075  SCIP_VAR* var, /**< variable to get strong branching values for */
7076  int itlim, /**< iteration limit for strong branchings */
7077  SCIP_Real* down, /**< stores dual bound after branching column down */
7078  SCIP_Real* up, /**< stores dual bound after branching column up */
7079  SCIP_Bool* downvalid, /**< stores whether the returned down value is a valid dual bound, or NULL;
7080  * otherwise, it can only be used as an estimate value */
7081  SCIP_Bool* upvalid, /**< stores whether the returned up value is a valid dual bound, or NULL;
7082  * otherwise, it can only be used as an estimate value */
7083  SCIP_Bool* downinf, /**< pointer to store whether the downwards branch is infeasible, or NULL */
7084  SCIP_Bool* upinf, /**< pointer to store whether the upwards branch is infeasible, or NULL */
7085  SCIP_Bool* downconflict, /**< pointer to store whether a conflict constraint was created for an
7086  * infeasible downwards branch, or NULL */
7087  SCIP_Bool* upconflict, /**< pointer to store whether a conflict constraint was created for an
7088  * infeasible upwards branch, or NULL */
7089  SCIP_Bool* lperror /**< pointer to store whether an unresolved LP error occurred or the
7090  * solving process should be stopped (e.g., due to a time limit) */
7091  );
7092 
7093 /** gets strong branching information with previous domain propagation on column variable
7094  *
7095  * Before calling this method, the strong branching mode must have been activated by calling SCIPstartStrongbranch();
7096  * after strong branching was done for all candidate variables, the strong branching mode must be ended by
7097  * SCIPendStrongbranch(). Since this method applies domain propagation before strongbranching, propagation has to be be
7098  * enabled in the SCIPstartStrongbranch() call.
7099  *
7100  * Before solving the strong branching LP, domain propagation can be performed. The number of propagation rounds
7101  * can be specified by the parameter @p maxproprounds.
7102  *
7103  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7104  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7105  *
7106  * @pre This method can be called if @p scip is in one of the following stages:
7107  * - \ref SCIP_STAGE_PRESOLVED
7108  * - \ref SCIP_STAGE_SOLVING
7109  *
7110  * @warning When using this method, LP banching candidates and solution values must be copied beforehand, because
7111  * they are updated w.r.t. the strong branching LP solution.
7112  */
7113 extern
7115  SCIP* scip, /**< SCIP data structure */
7116  SCIP_VAR* var, /**< variable to get strong branching values for */
7117  SCIP_Real solval, /**< value of the variable in the current LP solution */
7118  SCIP_Real lpobjval, /**< LP objective value of the current LP solution */
7119  int itlim, /**< iteration limit for strong branchings */
7120  int maxproprounds, /**< maximum number of propagation rounds (-1: no limit, -2: parameter
7121  * settings) */
7122  SCIP_Real* down, /**< stores dual bound after branching column down */
7123  SCIP_Real* up, /**< stores dual bound after branching column up */
7124  SCIP_Bool* downvalid, /**< stores whether the returned down value is a valid dual bound, or NULL;
7125  * otherwise, it can only be used as an estimate value */
7126  SCIP_Bool* upvalid, /**< stores whether the returned up value is a valid dual bound, or NULL;
7127  * otherwise, it can only be used as an estimate value */
7128  SCIP_Bool* downinf, /**< pointer to store whether the downwards branch is infeasible, or NULL */
7129  SCIP_Bool* upinf, /**< pointer to store whether the upwards branch is infeasible, or NULL */
7130  SCIP_Bool* downconflict, /**< pointer to store whether a conflict constraint was created for an
7131  * infeasible downwards branch, or NULL */
7132  SCIP_Bool* upconflict, /**< pointer to store whether a conflict constraint was created for an
7133  * infeasible upwards branch, or NULL */
7134  SCIP_Bool* lperror, /**< pointer to store whether an unresolved LP error occurred or the
7135  * solving process should be stopped (e.g., due to a time limit) */
7136  SCIP_Real* newlbs, /**< array to store valid lower bounds for all active variables, or NULL */
7137  SCIP_Real* newubs /**< array to store valid upper bounds for all active variables, or NULL */
7138  );
7139 
7140 /** gets strong branching information on column variable x with integral LP solution value (val); that is, the down branch
7141  * is (val -1.0) and the up brach ins (val +1.0)
7142  *
7143  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7144  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7145  *
7146  * @pre This method can be called if @p scip is in one of the following stages:
7147  * - \ref SCIP_STAGE_PRESOLVED
7148  * - \ref SCIP_STAGE_SOLVING
7149  *
7150  * @note If the integral LP solution value is the lower or upper bound of the variable, the corresponding branch will be
7151  * marked as infeasible. That is, the valid pointer and the infeasible pointer are set to TRUE.
7152  */
7153 extern
7155  SCIP* scip, /**< SCIP data structure */
7156  SCIP_VAR* var, /**< variable to get strong branching values for */
7157  int itlim, /**< iteration limit for strong branchings */
7158  SCIP_Real* down, /**< stores dual bound after branching column down */
7159  SCIP_Real* up, /**< stores dual bound after branching column up */
7160  SCIP_Bool* downvalid, /**< stores whether the returned down value is a valid dual bound, or NULL;
7161  * otherwise, it can only be used as an estimate value */
7162  SCIP_Bool* upvalid, /**< stores whether the returned up value is a valid dual bound, or NULL;
7163  * otherwise, it can only be used as an estimate value */
7164  SCIP_Bool* downinf, /**< pointer to store whether the downwards branch is infeasible, or NULL */
7165  SCIP_Bool* upinf, /**< pointer to store whether the upwards branch is infeasible, or NULL */
7166  SCIP_Bool* downconflict, /**< pointer to store whether a conflict constraint was created for an
7167  * infeasible downwards branch, or NULL */
7168  SCIP_Bool* upconflict, /**< pointer to store whether a conflict constraint was created for an
7169  * infeasible upwards branch, or NULL */
7170  SCIP_Bool* lperror /**< pointer to store whether an unresolved LP error occurred or the
7171  * solving process should be stopped (e.g., due to a time limit) */
7172  );
7173 
7174 /** gets strong branching information on column variables with fractional values
7175  *
7176  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7177  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7178  *
7179  * @pre This method can be called if @p scip is in one of the following stages:
7180  * - \ref SCIP_STAGE_PRESOLVED
7181  * - \ref SCIP_STAGE_SOLVING
7182  */
7183 extern
7185  SCIP* scip, /**< SCIP data structure */
7186  SCIP_VAR** vars, /**< variables to get strong branching values for */
7187  int nvars, /**< number of variables */
7188  int itlim, /**< iteration limit for strong branchings */
7189  SCIP_Real* down, /**< stores dual bounds after branching variables down */
7190  SCIP_Real* up, /**< stores dual bounds after branching variables up */
7191  SCIP_Bool* downvalid, /**< stores whether the returned down values are valid dual bounds, or NULL;
7192  * otherwise, they can only be used as an estimate value */
7193  SCIP_Bool* upvalid, /**< stores whether the returned up values are valid dual bounds, or NULL;
7194  * otherwise, they can only be used as an estimate value */
7195  SCIP_Bool* downinf, /**< array to store whether the downward branches are infeasible, or NULL */
7196  SCIP_Bool* upinf, /**< array to store whether the upward branches are infeasible, or NULL */
7197  SCIP_Bool* downconflict, /**< array to store whether conflict constraints were created for
7198  * infeasible downward branches, or NULL */
7199  SCIP_Bool* upconflict, /**< array to store whether conflict constraints were created for
7200  * infeasible upward branches, or NULL */
7201  SCIP_Bool* lperror /**< pointer to store whether an unresolved LP error occurred or the
7202  * solving process should be stopped (e.g., due to a time limit) */
7203  );
7204 
7205 /** gets strong branching information on column variables with integral values
7206  *
7207  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7208  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7209  *
7210  * @pre This method can be called if @p scip is in one of the following stages:
7211  * - \ref SCIP_STAGE_PRESOLVED
7212  * - \ref SCIP_STAGE_SOLVING
7213  */
7214 extern
7216  SCIP* scip, /**< SCIP data structure */
7217  SCIP_VAR** vars, /**< variables to get strong branching values for */
7218  int nvars, /**< number of variables */
7219  int itlim, /**< iteration limit for strong branchings */
7220  SCIP_Real* down, /**< stores dual bounds after branching variables down */
7221  SCIP_Real* up, /**< stores dual bounds after branching variables up */
7222  SCIP_Bool* downvalid, /**< stores whether the returned down values are valid dual bounds, or NULL;
7223  * otherwise, they can only be used as an estimate value */
7224  SCIP_Bool* upvalid, /**< stores whether the returned up values are valid dual bounds, or NULL;
7225  * otherwise, they can only be used as an estimate value */
7226  SCIP_Bool* downinf, /**< array to store whether the downward branches are infeasible, or NULL */
7227  SCIP_Bool* upinf, /**< array to store whether the upward branches are infeasible, or NULL */
7228  SCIP_Bool* downconflict, /**< array to store whether conflict constraints were created for
7229  * infeasible downward branches, or NULL */
7230  SCIP_Bool* upconflict, /**< array to store whether conflict constraints were created for
7231  * infeasible upward branches, or NULL */
7232  SCIP_Bool* lperror /**< pointer to store whether an unresolved LP error occurred or the
7233  * solving process should be stopped (e.g., due to a time limit) */
7234  );
7235 
7236 /** gets strong branching information on COLUMN variable of the last SCIPgetVarStrongbranch() call;
7237  * returns values of SCIP_INVALID, if strong branching was not yet called on the given variable;
7238  * keep in mind, that the returned old values may have nothing to do with the current LP solution
7239  *
7240  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7241  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7242  *
7243  * @pre This method can be called if @p scip is in one of the following stages:
7244  * - \ref SCIP_STAGE_SOLVING
7245  * - \ref SCIP_STAGE_SOLVED
7246  */
7247 extern
7249  SCIP* scip, /**< SCIP data structure */
7250  SCIP_VAR* var, /**< variable to get last strong branching values for */
7251  SCIP_Real* down, /**< stores dual bound after branching column down, or NULL */
7252  SCIP_Real* up, /**< stores dual bound after branching column up, or NULL */
7253  SCIP_Bool* downvalid, /**< stores whether the returned down value is a valid dual bound, or NULL;
7254  * otherwise, it can only be used as an estimate value */
7255  SCIP_Bool* upvalid, /**< stores whether the returned up value is a valid dual bound, or NULL;
7256  * otherwise, it can only be used as an estimate value */
7257  SCIP_Real* solval, /**< stores LP solution value of variable at last strong branching call, or NULL */
7258  SCIP_Real* lpobjval /**< stores LP objective value at last strong branching call, or NULL */
7259  );
7260 
7261 /** gets node number of the last node in current branch and bound run, where strong branching was used on the
7262  * given variable, or -1 if strong branching was never applied to the variable in current run
7263  *
7264  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7265  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7266  *
7267  * @pre This method can be called if @p scip is in one of the following stages:
7268  * - \ref SCIP_STAGE_TRANSFORMING
7269  * - \ref SCIP_STAGE_TRANSFORMED
7270  * - \ref SCIP_STAGE_INITPRESOLVE
7271  * - \ref SCIP_STAGE_PRESOLVING
7272  * - \ref SCIP_STAGE_EXITPRESOLVE
7273  * - \ref SCIP_STAGE_PRESOLVED
7274  * - \ref SCIP_STAGE_INITSOLVE
7275  * - \ref SCIP_STAGE_SOLVING
7276  * - \ref SCIP_STAGE_SOLVED
7277  * - \ref SCIP_STAGE_EXITSOLVE
7278  */
7279 extern
7281  SCIP* scip, /**< SCIP data structure */
7282  SCIP_VAR* var /**< variable to get last strong branching node for */
7283  );
7284 
7285 /** if strong branching was already applied on the variable at the current node, returns the number of LPs solved after
7286  * the LP where the strong branching on this variable was applied;
7287  * if strong branching was not yet applied on the variable at the current node, returns INT_MAX
7288  *
7289  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7290  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7291  *
7292  * @pre This method can be called if @p scip is in one of the following stages:
7293  * - \ref SCIP_STAGE_TRANSFORMING
7294  * - \ref SCIP_STAGE_TRANSFORMED
7295  * - \ref SCIP_STAGE_INITPRESOLVE
7296  * - \ref SCIP_STAGE_PRESOLVING
7297  * - \ref SCIP_STAGE_EXITPRESOLVE
7298  * - \ref SCIP_STAGE_PRESOLVED
7299  * - \ref SCIP_STAGE_INITSOLVE
7300  * - \ref SCIP_STAGE_SOLVING
7301  * - \ref SCIP_STAGE_SOLVED
7302  * - \ref SCIP_STAGE_EXITSOLVE
7303  */
7304 extern
7306  SCIP* scip, /**< SCIP data structure */
7307  SCIP_VAR* var /**< variable to get strong branching LP age for */
7308  );
7309 
7310 /** gets number of times, strong branching was applied in current run on the given variable
7311  *
7312  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7313  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7314  *
7315  * @pre This method can be called if @p scip is in one of the following stages:
7316  * - \ref SCIP_STAGE_TRANSFORMING
7317  * - \ref SCIP_STAGE_TRANSFORMED
7318  * - \ref SCIP_STAGE_INITPRESOLVE
7319  * - \ref SCIP_STAGE_PRESOLVING
7320  * - \ref SCIP_STAGE_EXITPRESOLVE
7321  * - \ref SCIP_STAGE_PRESOLVED
7322  * - \ref SCIP_STAGE_INITSOLVE
7323  * - \ref SCIP_STAGE_SOLVING
7324  * - \ref SCIP_STAGE_SOLVED
7325  * - \ref SCIP_STAGE_EXITSOLVE
7326  */
7327 extern
7329  SCIP* scip, /**< SCIP data structure */
7330  SCIP_VAR* var /**< variable to get last strong branching node for */
7331  );
7332 
7333 /** adds given values to lock numbers of variable for rounding
7334  *
7335  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7336  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7337  *
7338  * @pre This method can be called if @p scip is in one of the following stages:
7339  * - \ref SCIP_STAGE_PROBLEM
7340  * - \ref SCIP_STAGE_TRANSFORMING
7341  * - \ref SCIP_STAGE_TRANSFORMED
7342  * - \ref SCIP_STAGE_INITPRESOLVE
7343  * - \ref SCIP_STAGE_PRESOLVING
7344  * - \ref SCIP_STAGE_EXITPRESOLVE
7345  * - \ref SCIP_STAGE_PRESOLVED
7346  * - \ref SCIP_STAGE_INITSOLVE
7347  * - \ref SCIP_STAGE_SOLVING
7348  * - \ref SCIP_STAGE_EXITSOLVE
7349  * - \ref SCIP_STAGE_FREETRANS
7350  */
7351 extern
7353  SCIP* scip, /**< SCIP data structure */
7354  SCIP_VAR* var, /**< problem variable */
7355  int nlocksdown, /**< modification in number of rounding down locks */
7356  int nlocksup /**< modification in number of rounding up locks */
7357  );
7358 
7359 /** locks rounding of variable with respect to the lock status of the constraint and its negation;
7360  * this method should be called whenever the lock status of a variable in a constraint changes, for example if
7361  * the coefficient of the variable changed its sign or if the left or right hand sides of the constraint were
7362  * added or removed
7363  *
7364  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7365  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7366  *
7367  * @pre This method can be called if @p scip is in one of the following stages:
7368  * - \ref SCIP_STAGE_PROBLEM
7369  * - \ref SCIP_STAGE_TRANSFORMING
7370  * - \ref SCIP_STAGE_INITPRESOLVE
7371  * - \ref SCIP_STAGE_PRESOLVING
7372  * - \ref SCIP_STAGE_EXITPRESOLVE
7373  * - \ref SCIP_STAGE_INITSOLVE
7374  * - \ref SCIP_STAGE_SOLVING
7375  * - \ref SCIP_STAGE_EXITSOLVE
7376  * - \ref SCIP_STAGE_FREETRANS
7377  */
7378 extern
7380  SCIP* scip, /**< SCIP data structure */
7381  SCIP_VAR* var, /**< problem variable */
7382  SCIP_CONS* cons, /**< constraint */
7383  SCIP_Bool lockdown, /**< should the rounding be locked in downwards direction? */
7384  SCIP_Bool lockup /**< should the rounding be locked in upwards direction? */
7385  );
7386 
7387 /** unlocks rounding of variable with respect to the lock status of the constraint and its negation;
7388  * this method should be called whenever the lock status of a variable in a constraint changes, for example if
7389  * the coefficient of the variable changed its sign or if the left or right hand sides of the constraint were
7390  * added or removed
7391  *
7392  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7393  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7394  *
7395  * @pre This method can be called if @p scip is in one of the following stages:
7396  * - \ref SCIP_STAGE_PROBLEM
7397  * - \ref SCIP_STAGE_TRANSFORMING
7398  * - \ref SCIP_STAGE_INITPRESOLVE
7399  * - \ref SCIP_STAGE_PRESOLVING
7400  * - \ref SCIP_STAGE_EXITPRESOLVE
7401  * - \ref SCIP_STAGE_INITSOLVE
7402  * - \ref SCIP_STAGE_SOLVING
7403  * - \ref SCIP_STAGE_EXITSOLVE
7404  * - \ref SCIP_STAGE_FREETRANS
7405  */
7406 extern
7408  SCIP* scip, /**< SCIP data structure */
7409  SCIP_VAR* var, /**< problem variable */
7410  SCIP_CONS* cons, /**< constraint */
7411  SCIP_Bool lockdown, /**< should the rounding be locked in downwards direction? */
7412  SCIP_Bool lockup /**< should the rounding be locked in upwards direction? */
7413  );
7414 
7415 /** changes variable's objective value
7416  *
7417  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7418  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7419  *
7420  * @pre This method can be called if @p scip is in one of the following stages:
7421  * - \ref SCIP_STAGE_PROBLEM
7422  * - \ref SCIP_STAGE_TRANSFORMING
7423  * - \ref SCIP_STAGE_PRESOLVING
7424  */
7425 extern
7427  SCIP* scip, /**< SCIP data structure */
7428  SCIP_VAR* var, /**< variable to change the objective value for */
7429  SCIP_Real newobj /**< new objective value */
7430  );
7431 
7432 /** adds value to variable's objective value
7433  *
7434  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7435  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7436  *
7437  * @pre This method can be called if @p scip is in one of the following stages:
7438  * - \ref SCIP_STAGE_PROBLEM
7439  * - \ref SCIP_STAGE_TRANSFORMING
7440  * - \ref SCIP_STAGE_PRESOLVING
7441  */
7442 extern
7444  SCIP* scip, /**< SCIP data structure */
7445  SCIP_VAR* var, /**< variable to change the objective value for */
7446  SCIP_Real addobj /**< additional objective value */
7447  );
7448 
7449 /** returns the adjusted (i.e. rounded, if the given variable is of integral type) lower bound value;
7450  * does not change the bounds of the variable
7451  *
7452  * @return adjusted lower bound for the given variable; the bound of the variable is not changed
7453  *
7454  * @pre This method can be called if @p scip is in one of the following stages:
7455  * - \ref SCIP_STAGE_PROBLEM
7456  * - \ref SCIP_STAGE_TRANSFORMING
7457  * - \ref SCIP_STAGE_TRANSFORMED
7458  * - \ref SCIP_STAGE_INITPRESOLVE
7459  * - \ref SCIP_STAGE_PRESOLVING
7460  * - \ref SCIP_STAGE_EXITPRESOLVE
7461  * - \ref SCIP_STAGE_PRESOLVED
7462  * - \ref SCIP_STAGE_INITSOLVE
7463  * - \ref SCIP_STAGE_SOLVING
7464  * - \ref SCIP_STAGE_SOLVED
7465  * - \ref SCIP_STAGE_EXITSOLVE
7466  * - \ref SCIP_STAGE_FREETRANS
7467  */
7468 extern
7470  SCIP* scip, /**< SCIP data structure */
7471  SCIP_VAR* var, /**< variable to adjust the bound for */
7472  SCIP_Real lb /**< lower bound value to adjust */
7473  );
7474 
7475 /** returns the adjusted (i.e. rounded, if the given variable is of integral type) upper bound value;
7476  * does not change the bounds of the variable
7477  *
7478  * @return adjusted upper bound for the given variable; the bound of the variable is not changed
7479  *
7480  * @pre This method can be called if @p scip is in one of the following stages:
7481  * - \ref SCIP_STAGE_PROBLEM
7482  * - \ref SCIP_STAGE_TRANSFORMING
7483  * - \ref SCIP_STAGE_TRANSFORMED
7484  * - \ref SCIP_STAGE_INITPRESOLVE
7485  * - \ref SCIP_STAGE_PRESOLVING
7486  * - \ref SCIP_STAGE_EXITPRESOLVE
7487  * - \ref SCIP_STAGE_PRESOLVED
7488  * - \ref SCIP_STAGE_INITSOLVE
7489  * - \ref SCIP_STAGE_SOLVING
7490  * - \ref SCIP_STAGE_SOLVED
7491  * - \ref SCIP_STAGE_EXITSOLVE
7492  * - \ref SCIP_STAGE_FREETRANS
7493  */
7494 extern
7496  SCIP* scip, /**< SCIP data structure */
7497  SCIP_VAR* var, /**< variable to adjust the bound for */
7498  SCIP_Real ub /**< upper bound value to adjust */
7499  );
7500 
7501 /** depending on SCIP's stage, changes lower bound of variable in the problem, in preprocessing, or in current node;
7502  * if possible, adjusts bound to integral value; doesn't store any inference information in the bound change, such
7503  * that in conflict analysis, this change is treated like a branching decision
7504  *
7505  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
7506  * SCIPgetVars()) gets resorted.
7507  *
7508  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7509  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7510  *
7511  * @pre This method can be called if @p scip is in one of the following stages:
7512  * - \ref SCIP_STAGE_PROBLEM
7513  * - \ref SCIP_STAGE_TRANSFORMING
7514  * - \ref SCIP_STAGE_PRESOLVING
7515  * - \ref SCIP_STAGE_SOLVING
7516  *
7517  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
7518  */
7519 extern
7521  SCIP* scip, /**< SCIP data structure */
7522  SCIP_VAR* var, /**< variable to change the bound for */
7523  SCIP_Real newbound /**< new value for bound */
7524  );
7525 
7526 /** depending on SCIP's stage, changes upper bound of variable in the problem, in preprocessing, or in current node;
7527  * if possible, adjusts bound to integral value; doesn't store any inference information in the bound change, such
7528  * that in conflict analysis, this change is treated like a branching decision
7529  *
7530  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
7531  * SCIPgetVars()) gets resorted.
7532  *
7533  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7534  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7535  *
7536  * @pre This method can be called if @p scip is in one of the following stages:
7537  * - \ref SCIP_STAGE_PROBLEM
7538  * - \ref SCIP_STAGE_TRANSFORMING
7539  * - \ref SCIP_STAGE_PRESOLVING
7540  * - \ref SCIP_STAGE_SOLVING
7541  *
7542  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
7543  */
7544 extern
7546  SCIP* scip, /**< SCIP data structure */
7547  SCIP_VAR* var, /**< variable to change the bound for */
7548  SCIP_Real newbound /**< new value for bound */
7549  );
7550 
7551 /** changes lower bound of variable in the given node; if possible, adjust bound to integral value; doesn't store any
7552  * inference information in the bound change, such that in conflict analysis, this change is treated like a branching
7553  * decision
7554  *
7555  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7556  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7557  *
7558  * @pre This method can only be called if @p scip is in stage \ref SCIP_STAGE_SOLVING
7559  */
7560 extern
7562  SCIP* scip, /**< SCIP data structure */
7563  SCIP_NODE* node, /**< node to change bound at, or NULL for current node */
7564  SCIP_VAR* var, /**< variable to change the bound for */
7565  SCIP_Real newbound /**< new value for bound */
7566  );
7567 
7568 /** changes upper bound of variable in the given node; if possible, adjust bound to integral value; doesn't store any
7569  * inference information in the bound change, such that in conflict analysis, this change is treated like a branching
7570  * decision
7571  *
7572  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7573  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7574  *
7575  * @pre This method can only be called if @p scip is in stage \ref SCIP_STAGE_SOLVING
7576  */
7577 extern
7579  SCIP* scip, /**< SCIP data structure */
7580  SCIP_NODE* node, /**< node to change bound at, or NULL for current node */
7581  SCIP_VAR* var, /**< variable to change the bound for */
7582  SCIP_Real newbound /**< new value for bound */
7583  );
7584 
7585 /** changes global lower bound of variable; if possible, adjust bound to integral value; also tightens the local bound,
7586  * if the global bound is better than the local bound
7587  *
7588  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
7589  * SCIPgetVars()) gets resorted.
7590  *
7591  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7592  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7593  *
7594  * @pre This method can be called if @p scip is in one of the following stages:
7595  * - \ref SCIP_STAGE_PROBLEM
7596  * - \ref SCIP_STAGE_TRANSFORMING
7597  * - \ref SCIP_STAGE_PRESOLVING
7598  * - \ref SCIP_STAGE_SOLVING
7599  *
7600  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
7601  */
7602 extern
7604  SCIP* scip, /**< SCIP data structure */
7605  SCIP_VAR* var, /**< variable to change the bound for */
7606  SCIP_Real newbound /**< new value for bound */
7607  );
7608 
7609 /** changes global upper bound of variable; if possible, adjust bound to integral value; also tightens the local bound,
7610  * if the global bound is better than the local bound
7611  *
7612  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
7613  * SCIPgetVars()) gets resorted.
7614  *
7615  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7616  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7617  *
7618  * @pre This method can be called if @p scip is in one of the following stages:
7619  * - \ref SCIP_STAGE_PROBLEM
7620  * - \ref SCIP_STAGE_TRANSFORMING
7621  * - \ref SCIP_STAGE_PRESOLVING
7622  * - \ref SCIP_STAGE_SOLVING
7623  *
7624  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
7625  */
7626 extern
7628  SCIP* scip, /**< SCIP data structure */
7629  SCIP_VAR* var, /**< variable to change the bound for */
7630  SCIP_Real newbound /**< new value for bound */
7631  );
7632 
7633 /** changes lazy lower bound of the variable, this is only possible if the variable is not in the LP yet
7634  *
7635  * lazy bounds are bounds, that are enforced by constraints and the objective function; hence, these bounds do not need
7636  * to be put into the LP explicitly.
7637  *
7638  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7639  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7640  *
7641  * @pre This method can be called if @p scip is in one of the following stages:
7642  * - \ref SCIP_STAGE_PROBLEM
7643  * - \ref SCIP_STAGE_TRANSFORMING
7644  * - \ref SCIP_STAGE_TRANSFORMED
7645  * - \ref SCIP_STAGE_PRESOLVING
7646  * - \ref SCIP_STAGE_SOLVING
7647  *
7648  * @note lazy bounds are useful for branch-and-price since the corresponding variable bounds are not part of the LP
7649  */
7650 extern
7652  SCIP* scip, /**< SCIP data structure */
7653  SCIP_VAR* var, /**< problem variable */
7654  SCIP_Real lazylb /**< the lazy lower bound to be set */
7655  );
7656 
7657 /** changes lazy upper bound of the variable, this is only possible if the variable is not in the LP yet
7658  *
7659  * lazy bounds are bounds, that are enforced by constraints and the objective function; hence, these bounds do not need
7660  * to be put into the LP explicitly.
7661  *
7662  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7663  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7664  *
7665  * @pre This method can be called if @p scip is in one of the following stages:
7666  * - \ref SCIP_STAGE_PROBLEM
7667  * - \ref SCIP_STAGE_TRANSFORMING
7668  * - \ref SCIP_STAGE_TRANSFORMED
7669  * - \ref SCIP_STAGE_PRESOLVING
7670  * - \ref SCIP_STAGE_SOLVING
7671  *
7672  * @note lazy bounds are useful for branch-and-price since the corresponding variable bounds are not part of the LP
7673  */
7674 extern
7676  SCIP* scip, /**< SCIP data structure */
7677  SCIP_VAR* var, /**< problem variable */
7678  SCIP_Real lazyub /**< the lazy lower bound to be set */
7679  );
7680 
7681 /** changes lower bound of variable in preprocessing or in the current node, if the new bound is tighter
7682  * (w.r.t. bound strengthening epsilon) than the current bound; if possible, adjusts bound to integral value;
7683  * doesn't store any inference information in the bound change, such that in conflict analysis, this change
7684  * is treated like a branching decision
7685  *
7686  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
7687  * SCIPgetVars()) gets resorted.
7688  *
7689  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7690  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7691  *
7692  * @pre This method can be called if @p scip is in one of the following stages:
7693  * - \ref SCIP_STAGE_PROBLEM
7694  * - \ref SCIP_STAGE_PRESOLVING
7695  * - \ref SCIP_STAGE_SOLVING
7696  *
7697  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
7698  */
7699 extern
7701  SCIP* scip, /**< SCIP data structure */
7702  SCIP_VAR* var, /**< variable to change the bound for */
7703  SCIP_Real newbound, /**< new value for bound */
7704  SCIP_Bool force, /**< force tightening even if below bound strengthening tolerance */
7705  SCIP_Bool* infeasible, /**< pointer to store whether the new domain is empty */
7706  SCIP_Bool* tightened /**< pointer to store whether the bound was tightened, or NULL */
7707  );
7708 
7709 /** changes upper bound of variable in preprocessing or in the current node, if the new bound is tighter
7710  * (w.r.t. bound strengthening epsilon) than the current bound; if possible, adjusts bound to integral value;
7711  * doesn't store any inference information in the bound change, such that in conflict analysis, this change
7712  * is treated like a branching decision
7713  *
7714  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
7715  * SCIPgetVars()) gets resorted.
7716  *
7717  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7718  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7719  *
7720  * @pre This method can be called if @p scip is in one of the following stages:
7721  * - \ref SCIP_STAGE_PROBLEM
7722  * - \ref SCIP_STAGE_PRESOLVING
7723  * - \ref SCIP_STAGE_SOLVING
7724  *
7725  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
7726  */
7727 extern
7729  SCIP* scip, /**< SCIP data structure */
7730  SCIP_VAR* var, /**< variable to change the bound for */
7731  SCIP_Real newbound, /**< new value for bound */
7732  SCIP_Bool force, /**< force tightening even if below bound strengthening tolerance */
7733  SCIP_Bool* infeasible, /**< pointer to store whether the new domain is empty */
7734  SCIP_Bool* tightened /**< pointer to store whether the bound was tightened, or NULL */
7735  );
7736 
7737 /** changes lower bound of variable in preprocessing or in the current node, if the new bound is tighter
7738  * (w.r.t. bound strengthening epsilon) than the current bound; if possible, adjusts bound to integral value;
7739  * the given inference constraint is stored, such that the conflict analysis is able to find out the reason
7740  * for the deduction of the bound change
7741  *
7742  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
7743  * SCIPgetVars()) gets resorted.
7744  *
7745  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7746  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7747  *
7748  * @pre This method can be called if @p scip is in one of the following stages:
7749  * - \ref SCIP_STAGE_PROBLEM
7750  * - \ref SCIP_STAGE_PRESOLVING
7751  * - \ref SCIP_STAGE_SOLVING
7752  *
7753  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
7754  */
7755 extern
7757  SCIP* scip, /**< SCIP data structure */
7758  SCIP_VAR* var, /**< variable to change the bound for */
7759  SCIP_Real newbound, /**< new value for bound */
7760  SCIP_CONS* infercons, /**< constraint that deduced the bound change, or NULL */
7761  int inferinfo, /**< user information for inference to help resolving the conflict */
7762  SCIP_Bool force, /**< force tightening even if below bound strengthening tolerance */
7763  SCIP_Bool* infeasible, /**< pointer to store whether the bound change is infeasible */
7764  SCIP_Bool* tightened /**< pointer to store whether the bound was tightened, or NULL */
7765  );
7766 
7767 /** changes upper bound of variable in preprocessing or in the current node, if the new bound is tighter
7768  * (w.r.t. bound strengthening epsilon) than the current bound; if possible, adjusts bound to integral value;
7769  * the given inference constraint is stored, such that the conflict analysis is able to find out the reason
7770  * for the deduction of the bound change
7771  *
7772  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
7773  * SCIPgetVars()) gets resorted.
7774  *
7775  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7776  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7777  *
7778  * @pre This method can be called if @p scip is in one of the following stages:
7779  * - \ref SCIP_STAGE_PROBLEM
7780  * - \ref SCIP_STAGE_PRESOLVING
7781  * - \ref SCIP_STAGE_SOLVING
7782  *
7783  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
7784  */
7785 extern
7787  SCIP* scip, /**< SCIP data structure */
7788  SCIP_VAR* var, /**< variable to change the bound for */
7789  SCIP_Real newbound, /**< new value for bound */
7790  SCIP_CONS* infercons, /**< constraint that deduced the bound change */
7791  int inferinfo, /**< user information for inference to help resolving the conflict */
7792  SCIP_Bool force, /**< force tightening even if below bound strengthening tolerance */
7793  SCIP_Bool* infeasible, /**< pointer to store whether the bound change is infeasible */
7794  SCIP_Bool* tightened /**< pointer to store whether the bound was tightened, or NULL */
7795  );
7796 
7797 /** depending on SCIP's stage, fixes binary variable in the problem, in preprocessing, or in current node;
7798  * the given inference constraint is stored, such that the conflict analysis is able to find out the reason for the
7799  * deduction of the fixing
7800  *
7801  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7802  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7803  *
7804  * @pre This method can be called if @p scip is in one of the following stages:
7805  * - \ref SCIP_STAGE_PROBLEM
7806  * - \ref SCIP_STAGE_PRESOLVING
7807  * - \ref SCIP_STAGE_SOLVING
7808  */
7809 extern
7811  SCIP* scip, /**< SCIP data structure */
7812  SCIP_VAR* var, /**< binary variable to fix */
7813  SCIP_Bool fixedval, /**< value to fix binary variable to */
7814  SCIP_CONS* infercons, /**< constraint that deduced the fixing */
7815  int inferinfo, /**< user information for inference to help resolving the conflict */
7816  SCIP_Bool* infeasible, /**< pointer to store whether the fixing is infeasible */
7817  SCIP_Bool* tightened /**< pointer to store whether the fixing tightened the local bounds, or NULL */
7818  );
7819 
7820 /** changes lower bound of variable in preprocessing or in the current node, if the new bound is tighter
7821  * (w.r.t. bound strengthening epsilon) than the current bound; if possible, adjusts bound to integral value;
7822  * the given inference propagator is stored, such that the conflict analysis is able to find out the reason
7823  * for the deduction of the bound change
7824  *
7825  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
7826  * SCIPgetVars()) gets resorted.
7827  *
7828  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7829  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7830  *
7831  * @pre This method can be called if @p scip is in one of the following stages:
7832  * - \ref SCIP_STAGE_PROBLEM
7833  * - \ref SCIP_STAGE_PRESOLVING
7834  * - \ref SCIP_STAGE_SOLVING
7835  *
7836  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
7837  */
7838 extern
7840  SCIP* scip, /**< SCIP data structure */
7841  SCIP_VAR* var, /**< variable to change the bound for */
7842  SCIP_Real newbound, /**< new value for bound */
7843  SCIP_PROP* inferprop, /**< propagator that deduced the bound change, or NULL */
7844  int inferinfo, /**< user information for inference to help resolving the conflict */
7845  SCIP_Bool force, /**< force tightening even if below bound strengthening tolerance */
7846  SCIP_Bool* infeasible, /**< pointer to store whether the bound change is infeasible */
7847  SCIP_Bool* tightened /**< pointer to store whether the bound was tightened, or NULL */
7848  );
7849 
7850 /** changes upper bound of variable in preprocessing or in the current node, if the new bound is tighter
7851  * (w.r.t. bound strengthening epsilon) than the current bound; if possible, adjusts bound to integral value;
7852  * the given inference propagator is stored, such that the conflict analysis is able to find out the reason
7853  * for the deduction of the bound change
7854  *
7855  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
7856  * SCIPgetVars()) gets resorted.
7857  *
7858  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7859  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7860  *
7861  * @pre This method can be called if @p scip is in one of the following stages:
7862  * - \ref SCIP_STAGE_PROBLEM
7863  * - \ref SCIP_STAGE_PRESOLVING
7864  * - \ref SCIP_STAGE_SOLVING
7865  *
7866  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
7867  */
7868 extern
7870  SCIP* scip, /**< SCIP data structure */
7871  SCIP_VAR* var, /**< variable to change the bound for */
7872  SCIP_Real newbound, /**< new value for bound */
7873  SCIP_PROP* inferprop, /**< propagator that deduced the bound change */
7874  int inferinfo, /**< user information for inference to help resolving the conflict */
7875  SCIP_Bool force, /**< force tightening even if below bound strengthening tolerance */
7876  SCIP_Bool* infeasible, /**< pointer to store whether the bound change is infeasible */
7877  SCIP_Bool* tightened /**< pointer to store whether the bound was tightened, or NULL */
7878  );
7879 
7880 /** depending on SCIP's stage, fixes binary variable in the problem, in preprocessing, or in current node;
7881  * the given inference propagator is stored, such that the conflict analysis is able to find out the reason for the
7882  * deduction of the fixing
7883  *
7884  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7885  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7886  *
7887  * @pre This method can be called if @p scip is in one of the following stages:
7888  * - \ref SCIP_STAGE_PROBLEM
7889  * - \ref SCIP_STAGE_PRESOLVING
7890  * - \ref SCIP_STAGE_PRESOLVED
7891  * - \ref SCIP_STAGE_SOLVING
7892  */
7893 extern
7895  SCIP* scip, /**< SCIP data structure */
7896  SCIP_VAR* var, /**< binary variable to fix */
7897  SCIP_Bool fixedval, /**< value to fix binary variable to */
7898  SCIP_PROP* inferprop, /**< propagator that deduced the fixing */
7899  int inferinfo, /**< user information for inference to help resolving the conflict */
7900  SCIP_Bool* infeasible, /**< pointer to store whether the fixing is infeasible */
7901  SCIP_Bool* tightened /**< pointer to store whether the fixing tightened the local bounds, or NULL */
7902  );
7903 
7904 /** changes global lower bound of variable in preprocessing or in the current node, if the new bound is tighter
7905  * (w.r.t. bound strengthening epsilon) than the current global bound; if possible, adjusts bound to integral value;
7906  * also tightens the local bound, if the global bound is better than the local bound
7907  *
7908  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
7909  * SCIPgetVars()) gets resorted.
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 be called if @p scip is in one of the following stages:
7915  * - \ref SCIP_STAGE_PROBLEM
7916  * - \ref SCIP_STAGE_TRANSFORMING
7917  * - \ref SCIP_STAGE_PRESOLVING
7918  * - \ref SCIP_STAGE_SOLVING
7919  *
7920  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
7921  */
7922 extern
7924  SCIP* scip, /**< SCIP data structure */
7925  SCIP_VAR* var, /**< variable to change the bound for */
7926  SCIP_Real newbound, /**< new value for bound */
7927  SCIP_Bool force, /**< force tightening even if below bound strengthening tolerance */
7928  SCIP_Bool* infeasible, /**< pointer to store whether the new domain is empty */
7929  SCIP_Bool* tightened /**< pointer to store whether the bound was tightened, or NULL */
7930  );
7931 
7932 /** changes global upper bound of variable in preprocessing or in the current node, if the new bound is tighter
7933  * (w.r.t. bound strengthening epsilon) than the current global bound; if possible, adjusts bound to integral value;
7934  * also tightens the local bound, if the global bound is better than the local bound
7935  *
7936  * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
7937  * SCIPgetVars()) gets resorted.
7938  *
7939  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
7940  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
7941  *
7942  * @pre This method can be called if @p scip is in one of the following stages:
7943  * - \ref SCIP_STAGE_PROBLEM
7944  * - \ref SCIP_STAGE_TRANSFORMING
7945  * - \ref SCIP_STAGE_PRESOLVING
7946  * - \ref SCIP_STAGE_SOLVING
7947  *
7948  * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
7949  */
7950 extern
7952  SCIP* scip, /**< SCIP data structure */
7953  SCIP_VAR* var, /**< variable to change the bound for */
7954  SCIP_Real newbound, /**< new value for bound */
7955  SCIP_Bool force, /**< force tightening even if below bound strengthening tolerance */
7956  SCIP_Bool* infeasible, /**< pointer to store whether the new domain is empty */
7957  SCIP_Bool* tightened /**< pointer to store whether the bound was tightened, or NULL */
7958  );
7959 
7960 /** for a multi-aggregated variable, returns the global lower bound computed by adding the global bounds from all aggregation variables
7961  * 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
7962  * calling this function for a non-multi-aggregated variable results in a call to SCIPvarGetLbGlobal
7963  *
7964  * @return the global lower bound computed by adding the global bounds from all aggregation variables
7965  */
7966 extern
7968  SCIP* scip, /**< SCIP data structure */
7969  SCIP_VAR* var /**< variable to compute the bound for */
7970  );
7971 
7972 /** for a multi-aggregated variable, returns the global upper bound computed by adding the global bounds from all aggregation variables
7973  * 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
7974  * calling this function for a non-multi-aggregated variable results in a call to SCIPvarGetUbGlobal
7975  *
7976  * @return the global upper bound computed by adding the global bounds from all aggregation variables
7977  */
7978 extern
7980  SCIP* scip, /**< SCIP data structure */
7981  SCIP_VAR* var /**< variable to compute the bound for */
7982  );
7983 
7984 /** for a multi-aggregated variable, returns the local lower bound computed by adding the local bounds from all aggregation variables
7985  * 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
7986  * calling this function for a non-multi-aggregated variable results in a call to SCIPvarGetLbLocal
7987  *
7988  * @return the local lower bound computed by adding the global bounds from all aggregation variables
7989  */
7990 extern
7992  SCIP* scip, /**< SCIP data structure */
7993  SCIP_VAR* var /**< variable to compute the bound for */
7994  );
7995 
7996 /** for a multi-aggregated variable, returns the local upper bound computed by adding the local bounds from all aggregation variables
7997  * 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
7998  * calling this function for a non-multi-aggregated variable results in a call to SCIPvarGetUbLocal
7999  *
8000  * @return the local upper bound computed by adding the global bounds from all aggregation variables
8001  */
8002 extern
8004  SCIP* scip, /**< SCIP data structure */
8005  SCIP_VAR* var /**< variable to compute the bound for */
8006  );
8007 
8008 #ifdef NDEBUG
8009 
8010 /* In optimized mode, the function calls are overwritten by defines to reduce the number of function calls and
8011  * speed up the algorithms.
8012  */
8013 
8014 #define SCIPcomputeVarLbGlobal(scip, var) (SCIPvarGetStatus(var) == SCIP_VARSTATUS_MULTAGGR ? SCIPvarGetMultaggrLbGlobal(var, (scip)->set) : SCIPvarGetLbGlobal(var))
8015 #define SCIPcomputeVarUbGlobal(scip, var) (SCIPvarGetStatus(var) == SCIP_VARSTATUS_MULTAGGR ? SCIPvarGetMultaggrUbGlobal(var, (scip)->set) : SCIPvarGetUbGlobal(var))
8016 #define SCIPcomputeVarLbLocal(scip, var) (SCIPvarGetStatus(var) == SCIP_VARSTATUS_MULTAGGR ? SCIPvarGetMultaggrLbLocal(var, (scip)->set) : SCIPvarGetLbLocal(var))
8017 #define SCIPcomputeVarUbLocal(scip, var) (SCIPvarGetStatus(var) == SCIP_VARSTATUS_MULTAGGR ? SCIPvarGetMultaggrUbLocal(var, (scip)->set) : SCIPvarGetUbLocal(var))
8018 
8019 #endif
8020 
8021 /** returns solution value and index of variable lower bound that is closest to the variable's value in the given primal
8022  * solution or current LP solution if no primal solution is given; returns an index of -1 if no variable lower bound is
8023  * available
8024  *
8025  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8026  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8027  *
8028  * @pre This method can only be called if @p scip is in stage \ref SCIP_STAGE_SOLVING
8029  */
8030 extern
8032  SCIP* scip, /**< SCIP data structure */
8033  SCIP_VAR* var, /**< active problem variable */
8034  SCIP_SOL* sol, /**< primal solution, or NULL for LP solution */
8035  SCIP_Real* closestvlb, /**< pointer to store the value of the closest variable lower bound */
8036  int* closestvlbidx /**< pointer to store the index of the closest variable lower bound */
8037  );
8038 
8039 /** returns solution value and index of variable upper bound that is closest to the variable's value in the given primal solution;
8040  * or current LP solution if no primal solution is given; returns an index of -1 if no variable upper bound is available
8041  *
8042  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8043  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8044  *
8045  * @pre This method can only be called if @p scip is in stage \ref SCIP_STAGE_SOLVING
8046  */
8047 extern
8049  SCIP* scip, /**< SCIP data structure */
8050  SCIP_VAR* var, /**< active problem variable */
8051  SCIP_SOL* sol, /**< primal solution, or NULL for LP solution */
8052  SCIP_Real* closestvub, /**< pointer to store the value of the closest variable lower bound */
8053  int* closestvubidx /**< pointer to store the index of the closest variable lower bound */
8054  );
8055 
8056 /** informs variable x about a globally valid variable lower bound x >= b*z + d with integer variable z;
8057  * if z is binary, the corresponding valid implication for z is also added;
8058  * if z is non-continuous and 1/b not too small, the corresponding valid upper/lower bound
8059  * z <= (x-d)/b or z >= (x-d)/b (depending on the sign of of b) is added, too;
8060  * improves the global bounds of the variable and the vlb variable if possible
8061  *
8062  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8063  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8064  *
8065  * @pre This method can be called if @p scip is in one of the following stages:
8066  * - \ref SCIP_STAGE_PRESOLVING
8067  * - \ref SCIP_STAGE_PRESOLVED
8068  * - \ref SCIP_STAGE_SOLVING
8069  */
8070 extern
8072  SCIP* scip, /**< SCIP data structure */
8073  SCIP_VAR* var, /**< problem variable */
8074  SCIP_VAR* vlbvar, /**< variable z in x >= b*z + d */
8075  SCIP_Real vlbcoef, /**< coefficient b in x >= b*z + d */
8076  SCIP_Real vlbconstant, /**< constant d in x >= b*z + d */
8077  SCIP_Bool* infeasible, /**< pointer to store whether an infeasibility was detected */
8078  int* nbdchgs /**< pointer to store the number of performed bound changes, or NULL */
8079  );
8080 
8081 
8082 /** informs variable x about a globally valid variable upper bound x <= b*z + d with integer variable z;
8083  * if z is binary, the corresponding valid implication for z is also added;
8084  * if z is non-continuous and 1/b not too small, the corresponding valid lower/upper bound
8085  * z >= (x-d)/b or z <= (x-d)/b (depending on the sign of of b) is added, too;
8086  * improves the global bounds of the variable and the vlb variable if possible
8087  *
8088  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8089  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8090  *
8091  * @pre This method can be called if @p scip is in one of the following stages:
8092  * - \ref SCIP_STAGE_PRESOLVING
8093  * - \ref SCIP_STAGE_PRESOLVED
8094  * - \ref SCIP_STAGE_SOLVING
8095  */
8096 extern
8098  SCIP* scip, /**< SCIP data structure */
8099  SCIP_VAR* var, /**< problem variable */
8100  SCIP_VAR* vubvar, /**< variable z in x <= b*z + d */
8101  SCIP_Real vubcoef, /**< coefficient b in x <= b*z + d */
8102  SCIP_Real vubconstant, /**< constant d in x <= b*z + d */
8103  SCIP_Bool* infeasible, /**< pointer to store whether an infeasibility was detected */
8104  int* nbdchgs /**< pointer to store the number of performed bound changes, or NULL */
8105  );
8106 
8107 /** informs binary variable x about a globally valid implication: x == 0 or x == 1 ==> y <= b or y >= b;
8108  * also adds the corresponding implication or variable bound to the implied variable;
8109  * if the implication is conflicting, the variable is fixed to the opposite value;
8110  * if the variable is already fixed to the given value, the implication is performed immediately;
8111  * if the implication is redundant with respect to the variables' global bounds, it is ignored
8112  *
8113  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8114  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8115  *
8116  * @pre This method can be called if @p scip is in one of the following stages:
8117  * - \ref SCIP_STAGE_TRANSFORMED
8118  * - \ref SCIP_STAGE_PRESOLVING
8119  * - \ref SCIP_STAGE_PRESOLVED
8120  * - \ref SCIP_STAGE_SOLVING
8121  */
8122 extern
8124  SCIP* scip, /**< SCIP data structure */
8125  SCIP_VAR* var, /**< problem variable */
8126  SCIP_Bool varfixing, /**< FALSE if y should be added in implications for x == 0, TRUE for x == 1 */
8127  SCIP_VAR* implvar, /**< variable y in implication y <= b or y >= b */
8128  SCIP_BOUNDTYPE impltype, /**< type of implication y <= b (SCIP_BOUNDTYPE_UPPER)
8129  * or y >= b (SCIP_BOUNDTYPE_LOWER) */
8130  SCIP_Real implbound, /**< bound b in implication y <= b or y >= b */
8131  SCIP_Bool* infeasible, /**< pointer to store whether an infeasibility was detected */
8132  int* nbdchgs /**< pointer to store the number of performed bound changes, or NULL */
8133  );
8134 
8135 /** adds a clique information to SCIP, stating that at most one of the given binary variables can be set to 1;
8136  * if a variable appears twice in the same clique, the corresponding implications are performed
8137  *
8138  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8139  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8140  *
8141  * @pre This method can be called if @p scip is in one of the following stages:
8142  * - \ref SCIP_STAGE_TRANSFORMED
8143  * - \ref SCIP_STAGE_PRESOLVING
8144  * - \ref SCIP_STAGE_PRESOLVED
8145  * - \ref SCIP_STAGE_SOLVING
8146  */
8147 extern
8149  SCIP* scip, /**< SCIP data structure */
8150  SCIP_VAR** vars, /**< binary variables in the clique from which at most one can be set to 1 */
8151  SCIP_Bool* values, /**< values of the variables in the clique; NULL to use TRUE for all vars */
8152  int nvars, /**< number of variables in the clique */
8153  SCIP_Bool* infeasible, /**< pointer to store whether an infeasibility was detected */
8154  int* nbdchgs /**< pointer to store the number of performed bound changes, or NULL */
8155  );
8156 
8157 /** calculates a partition of the given set of binary variables into cliques;
8158  * afterwards the output array contains one value for each variable, such that two variables got the same value iff they
8159  * were assigned to the same clique;
8160  * the first variable is always assigned to clique 0, and a variable can only be assigned to clique i if at least one of
8161  * the preceding variables was assigned to clique i-1;
8162  * for each clique at most 1 variables can be set to TRUE in a feasible solution;
8163  *
8164  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8165  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8166  *
8167  * @pre This method can be called if @p scip is in one of the following stages:
8168  * - \ref SCIP_STAGE_INITPRESOLVE
8169  * - \ref SCIP_STAGE_PRESOLVING
8170  * - \ref SCIP_STAGE_EXITPRESOLVE
8171  * - \ref SCIP_STAGE_PRESOLVED
8172  * - \ref SCIP_STAGE_SOLVING
8173  */
8174 extern
8176  SCIP*const scip, /**< SCIP data structure */
8177  SCIP_VAR**const vars, /**< binary variables in the clique from which at most one can be set to 1 */
8178  int const nvars, /**< number of variables in the clique */
8179  int*const cliquepartition, /**< array of length nvars to store the clique partition */
8180  int*const ncliques /**< pointer to store the number of cliques actually contained in the partition */
8181  );
8182 
8183 /** calculates a partition of the given set of binary variables into negated cliques;
8184  * afterwards the output array contains one value for each variable, such that two variables got the same value iff they
8185  * were assigned to the same negated clique;
8186  * the first variable is always assigned to clique 0 and a variable can only be assigned to clique i if at least one of
8187  * the preceding variables was assigned to clique i-1;
8188  * for each clique with n_c variables at least n_c-1 variables can be set to TRUE in a feasible solution;
8189  *
8190  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8191  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8192  *
8193  * @pre This method can be called if @p scip is in one of the following stages:
8194  * - \ref SCIP_STAGE_INITPRESOLVE
8195  * - \ref SCIP_STAGE_PRESOLVING
8196  * - \ref SCIP_STAGE_EXITPRESOLVE
8197  * - \ref SCIP_STAGE_PRESOLVED
8198  * - \ref SCIP_STAGE_SOLVING
8199  */
8200 extern
8202  SCIP*const scip, /**< SCIP data structure */
8203  SCIP_VAR**const vars, /**< binary variables in the clique from which at most one can be set to 1 */
8204  int const nvars, /**< number of variables in the clique */
8205  int*const cliquepartition, /**< array of length nvars to store the clique partition */
8206  int*const ncliques /**< pointer to store the number of cliques actually contained in the partition */
8207  );
8208 
8209 /** gets the number of cliques in the clique table
8210  *
8211  * @return number of cliques in the clique table
8212  *
8213  * @pre This method can be called if @p scip is in one of the following stages:
8214  * - \ref SCIP_STAGE_TRANSFORMED
8215  * - \ref SCIP_STAGE_INITPRESOLVE
8216  * - \ref SCIP_STAGE_PRESOLVING
8217  * - \ref SCIP_STAGE_EXITPRESOLVE
8218  * - \ref SCIP_STAGE_PRESOLVED
8219  * - \ref SCIP_STAGE_INITSOLVE
8220  * - \ref SCIP_STAGE_SOLVING
8221  * - \ref SCIP_STAGE_SOLVED
8222  * - \ref SCIP_STAGE_EXITSOLVE
8223  */
8224 extern
8225 int SCIPgetNCliques(
8226  SCIP* scip /**< SCIP data structure */
8227  );
8228 
8229 /** gets the array of cliques in the clique table
8230  *
8231  * @return array of cliques in the clique table
8232  *
8233  * @pre This method can be called if @p scip is in one of the following stages:
8234  * - \ref SCIP_STAGE_TRANSFORMED
8235  * - \ref SCIP_STAGE_INITPRESOLVE
8236  * - \ref SCIP_STAGE_PRESOLVING
8237  * - \ref SCIP_STAGE_EXITPRESOLVE
8238  * - \ref SCIP_STAGE_PRESOLVED
8239  * - \ref SCIP_STAGE_INITSOLVE
8240  * - \ref SCIP_STAGE_SOLVING
8241  * - \ref SCIP_STAGE_SOLVED
8242  * - \ref SCIP_STAGE_EXITSOLVE
8243  */
8244 extern
8246  SCIP* scip /**< SCIP data structure */
8247  );
8248 
8249 /** returns whether there is a clique that contains both given variable/value pairs;
8250  * the variables must be active binary variables;
8251  * if regardimplics is FALSE, only the cliques in the clique table are looked at;
8252  * if regardimplics is TRUE, both the cliques and the implications of the implication graph are regarded
8253  *
8254  * @return TRUE, if there is a clique that contains both variable/clique pairs; FALSE, otherwise
8255  *
8256  * @pre This method can be called if @p scip is in one of the following stages:
8257  * - \ref SCIP_STAGE_TRANSFORMED
8258  * - \ref SCIP_STAGE_INITPRESOLVE
8259  * - \ref SCIP_STAGE_PRESOLVING
8260  * - \ref SCIP_STAGE_EXITPRESOLVE
8261  * - \ref SCIP_STAGE_PRESOLVED
8262  * - \ref SCIP_STAGE_INITSOLVE
8263  * - \ref SCIP_STAGE_SOLVING
8264  * - \ref SCIP_STAGE_SOLVED
8265  * - \ref SCIP_STAGE_EXITSOLVE
8266  *
8267  * @note a variable with it's negated variable are NOT! in a clique
8268  * @note a variable with itself are in a clique
8269  */
8270 extern
8272  SCIP* scip, /**< SCIP data structure */
8273  SCIP_VAR* var1, /**< first variable */
8274  SCIP_Bool value1, /**< value of first variable */
8275  SCIP_VAR* var2, /**< second variable */
8276  SCIP_Bool value2, /**< value of second variable */
8277  SCIP_Bool regardimplics /**< should the implication graph also be searched for a clique? */
8278  );
8279 
8280 /** writes the clique graph to a gml file
8281  *
8282  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8283  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8284  *
8285  * @pre This method can be called if @p scip is in one of the following stages:
8286  * - \ref SCIP_STAGE_TRANSFORMED
8287  * - \ref SCIP_STAGE_INITPRESOLVE
8288  * - \ref SCIP_STAGE_PRESOLVING
8289  * - \ref SCIP_STAGE_EXITPRESOLVE
8290  * - \ref SCIP_STAGE_PRESOLVED
8291  * - \ref SCIP_STAGE_INITSOLVE
8292  * - \ref SCIP_STAGE_SOLVING
8293  * - \ref SCIP_STAGE_SOLVED
8294  * - \ref SCIP_STAGE_EXITSOLVE
8295  *
8296  * @note there can be duplicated arcs in the output file
8297  *
8298  * If @p writenodeweights is true, only nodes corresponding to variables that have a fractional value and only edges
8299  * between such nodes are written.
8300  */
8301 extern
8303  SCIP* scip, /**< SCIP data structure */
8304  const char* fname, /**< name of file */
8305  SCIP_Bool writeimplications, /**< should we write the binary implications? */
8306  SCIP_Bool writenodeweights /**< should we write weights of nodes? */
8307  );
8308 
8309 /** sets the branch factor of the variable; this value can be used in the branching methods to scale the score
8310  * values of the variables; higher factor leads to a higher probability that this variable is chosen for branching
8311  *
8312  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8313  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8314  *
8315  * @pre This method can be called if @p scip is in one of the following stages:
8316  * - \ref SCIP_STAGE_PROBLEM
8317  * - \ref SCIP_STAGE_TRANSFORMING
8318  * - \ref SCIP_STAGE_TRANSFORMED
8319  * - \ref SCIP_STAGE_INITPRESOLVE
8320  * - \ref SCIP_STAGE_PRESOLVING
8321  * - \ref SCIP_STAGE_EXITPRESOLVE
8322  * - \ref SCIP_STAGE_PRESOLVED
8323  * - \ref SCIP_STAGE_SOLVING
8324  */
8325 extern
8327  SCIP* scip, /**< SCIP data structure */
8328  SCIP_VAR* var, /**< problem variable */
8329  SCIP_Real branchfactor /**< factor to weigh variable's branching score with */
8330  );
8331 
8332 /** scales the branch factor of the variable with the given value
8333  *
8334  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8335  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8336  *
8337  * @pre This method can be called if @p scip is in one of the following stages:
8338  * - \ref SCIP_STAGE_PROBLEM
8339  * - \ref SCIP_STAGE_TRANSFORMING
8340  * - \ref SCIP_STAGE_TRANSFORMED
8341  * - \ref SCIP_STAGE_INITPRESOLVE
8342  * - \ref SCIP_STAGE_PRESOLVING
8343  * - \ref SCIP_STAGE_EXITPRESOLVE
8344  * - \ref SCIP_STAGE_PRESOLVED
8345  * - \ref SCIP_STAGE_SOLVING
8346  */
8347 extern
8349  SCIP* scip, /**< SCIP data structure */
8350  SCIP_VAR* var, /**< problem variable */
8351  SCIP_Real scale /**< factor to scale variable's branching factor with */
8352  );
8353 
8354 /** adds the given value to the branch factor of the variable
8355  *
8356  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8357  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8358  *
8359  * @pre This method can be called if @p scip is in one of the following stages:
8360  * - \ref SCIP_STAGE_PROBLEM
8361  * - \ref SCIP_STAGE_TRANSFORMING
8362  * - \ref SCIP_STAGE_TRANSFORMED
8363  * - \ref SCIP_STAGE_INITPRESOLVE
8364  * - \ref SCIP_STAGE_PRESOLVING
8365  * - \ref SCIP_STAGE_EXITPRESOLVE
8366  * - \ref SCIP_STAGE_PRESOLVED
8367  * - \ref SCIP_STAGE_SOLVING
8368  */
8369 extern
8371  SCIP* scip, /**< SCIP data structure */
8372  SCIP_VAR* var, /**< problem variable */
8373  SCIP_Real addfactor /**< value to add to the branch factor of the variable */
8374  );
8375 
8376 /** sets the branch priority of the variable; variables with higher branch priority are always preferred to variables
8377  * with lower priority in selection of branching variable
8378  *
8379  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8380  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8381  *
8382  * @pre This method can be called if @p scip is in one of the following stages:
8383  * - \ref SCIP_STAGE_PROBLEM
8384  * - \ref SCIP_STAGE_TRANSFORMING
8385  * - \ref SCIP_STAGE_TRANSFORMED
8386  * - \ref SCIP_STAGE_INITPRESOLVE
8387  * - \ref SCIP_STAGE_PRESOLVING
8388  * - \ref SCIP_STAGE_EXITPRESOLVE
8389  * - \ref SCIP_STAGE_PRESOLVED
8390  * - \ref SCIP_STAGE_SOLVING
8391  *
8392  * @note the default branching priority is 0
8393  */
8394 extern
8396  SCIP* scip, /**< SCIP data structure */
8397  SCIP_VAR* var, /**< problem variable */
8398  int branchpriority /**< branch priority of the variable */
8399  );
8400 
8401 /** changes the branch priority of the variable to the given value, if it is larger than the current priority
8402  *
8403  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8404  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8405  *
8406  * @pre This method can be called if @p scip is in one of the following stages:
8407  * - \ref SCIP_STAGE_PROBLEM
8408  * - \ref SCIP_STAGE_TRANSFORMING
8409  * - \ref SCIP_STAGE_TRANSFORMED
8410  * - \ref SCIP_STAGE_INITPRESOLVE
8411  * - \ref SCIP_STAGE_PRESOLVING
8412  * - \ref SCIP_STAGE_EXITPRESOLVE
8413  * - \ref SCIP_STAGE_PRESOLVED
8414  * - \ref SCIP_STAGE_SOLVING
8415  */
8416 extern
8418  SCIP* scip, /**< SCIP data structure */
8419  SCIP_VAR* var, /**< problem variable */
8420  int branchpriority /**< new branch priority of the variable, if it is larger than current priority */
8421  );
8422 
8423 /** adds the given value to the branch priority of the variable
8424  *
8425  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8426  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8427  *
8428  * @pre This method can be called if @p scip is in one of the following stages:
8429  * - \ref SCIP_STAGE_PROBLEM
8430  * - \ref SCIP_STAGE_TRANSFORMING
8431  * - \ref SCIP_STAGE_TRANSFORMED
8432  * - \ref SCIP_STAGE_INITPRESOLVE
8433  * - \ref SCIP_STAGE_PRESOLVING
8434  * - \ref SCIP_STAGE_EXITPRESOLVE
8435  * - \ref SCIP_STAGE_PRESOLVED
8436  * - \ref SCIP_STAGE_SOLVING
8437  */
8438 extern
8440  SCIP* scip, /**< SCIP data structure */
8441  SCIP_VAR* var, /**< problem variable */
8442  int addpriority /**< value to add to the branch priority of the variable */
8443  );
8444 
8445 /** sets the branch direction of the variable (-1: prefer downwards branch, 0: automatic selection, +1: prefer upwards
8446  * branch)
8447  *
8448  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8449  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8450  *
8451  * @pre This method can be called if @p scip is in one of the following stages:
8452  * - \ref SCIP_STAGE_PROBLEM
8453  * - \ref SCIP_STAGE_TRANSFORMING
8454  * - \ref SCIP_STAGE_TRANSFORMED
8455  * - \ref SCIP_STAGE_INITPRESOLVE
8456  * - \ref SCIP_STAGE_PRESOLVING
8457  * - \ref SCIP_STAGE_EXITPRESOLVE
8458  * - \ref SCIP_STAGE_PRESOLVED
8459  * - \ref SCIP_STAGE_SOLVING
8460  */
8461 extern
8463  SCIP* scip, /**< SCIP data structure */
8464  SCIP_VAR* var, /**< problem variable */
8465  SCIP_BRANCHDIR branchdirection /**< preferred branch direction of the variable (downwards, upwards, auto) */
8466  );
8467 
8468 /** changes type of variable in the problem;
8469  *
8470  * @warning This type change might change the variable array returned from SCIPgetVars() and SCIPgetVarsData();
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_PROBLEM
8477  * - \ref SCIP_STAGE_TRANSFORMING
8478  * - \ref SCIP_STAGE_PRESOLVING
8479  *
8480  * @note If SCIP is already beyond the SCIP_STAGE_PROBLEM and a original variable is passed, the variable type of the
8481  * corresponding transformed variable is changed; the type of the original variable does not change
8482  *
8483  * @note If the type changes from a continuous variable to a non-continuous variable the bounds of the variable get
8484  * adjusted w.r.t. to integrality information
8485  */
8486 extern
8488  SCIP* scip, /**< SCIP data structure */
8489  SCIP_VAR* var, /**< variable to change the bound for */
8490  SCIP_VARTYPE vartype, /**< new type of variable */
8491  SCIP_Bool* infeasible /**< pointer to store whether an infeasibility was detected (, due to
8492  * integrality condition of the new variable type) */
8493  );
8494 
8495 /** in problem creation and solving stage, both bounds of the variable are set to the given value;
8496  * in presolving stage, the variable is converted into a fixed variable, and bounds are changed respectively;
8497  * conversion into a fixed variable changes the vars array returned from SCIPgetVars() and SCIPgetVarsData(),
8498  * and also renders arrays returned from the SCIPvarGetImpl...() methods invalid
8499  *
8500  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8501  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8502  *
8503  * @pre This method can be called if @p scip is in one of the following stages:
8504  * - \ref SCIP_STAGE_PROBLEM
8505  * - \ref SCIP_STAGE_PRESOLVING
8506  * - \ref SCIP_STAGE_SOLVING
8507  */
8508 extern
8510  SCIP* scip, /**< SCIP data structure */
8511  SCIP_VAR* var, /**< variable to fix */
8512  SCIP_Real fixedval, /**< value to fix variable to */
8513  SCIP_Bool* infeasible, /**< pointer to store whether the fixing is infeasible */
8514  SCIP_Bool* fixed /**< pointer to store whether the fixing was performed (variable was unfixed) */
8515  );
8516 
8517 /** From a given equality a*x + b*y == c, aggregates one of the variables and removes it from the set of
8518  * active problem variables. This changes the vars array returned from SCIPgetVars() and SCIPgetVarsData(),
8519  * and also renders the arrays returned from the SCIPvarGetImpl...() methods for the two variables invalid.
8520  * In the first step, the equality is transformed into an equality with active problem variables
8521  * a'*x' + b'*y' == c'. If x' == y', this leads to the detection of redundancy if a' == -b' and c' == 0,
8522  * of infeasibility, if a' == -b' and c' != 0, or to a variable fixing x' == c'/(a'+b') (and possible
8523  * infeasibility) otherwise.
8524  * In the second step, the variable to be aggregated is chosen among x' and y', prefering a less strict variable
8525  * type as aggregation variable (i.e. continuous variables are preferred over implicit integers, implicit integers
8526  * over integers, and integers over binaries). If none of the variables is continuous, it is tried to find an integer
8527  * aggregation (i.e. integral coefficients a'' and b'', such that a''*x' + b''*y' == c''). This can lead to
8528  * the detection of infeasibility (e.g. if c'' is fractional), or to a rejection of the aggregation (denoted by
8529  * aggregated == FALSE), if the resulting integer coefficients are too large and thus numerically instable.
8530  *
8531  * The output flags have the following meaning:
8532  * - infeasible: the problem is infeasible
8533  * - redundant: the equality can be deleted from the constraint set
8534  * - aggregated: the aggregation was successfully performed (the variables were not aggregated before)
8535  *
8536  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8537  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8538  *
8539  * @pre This method can only be called if @p scip is in stage \ref SCIP_STAGE_PRESOLVING
8540  */
8541 extern
8543  SCIP* scip, /**< SCIP data structure */
8544  SCIP_VAR* varx, /**< variable x in equality a*x + b*y == c */
8545  SCIP_VAR* vary, /**< variable y in equality a*x + b*y == c */
8546  SCIP_Real scalarx, /**< multiplier a in equality a*x + b*y == c */
8547  SCIP_Real scalary, /**< multiplier b in equality a*x + b*y == c */
8548  SCIP_Real rhs, /**< right hand side c in equality a*x + b*y == c */
8549  SCIP_Bool* infeasible, /**< pointer to store whether the aggregation is infeasible */
8550  SCIP_Bool* redundant, /**< pointer to store whether the equality is (now) redundant */
8551  SCIP_Bool* aggregated /**< pointer to store whether the aggregation was successful */
8552  );
8553 
8554 /** converts variable into multi-aggregated variable; this changes the variable array returned from
8555  * SCIPgetVars() and SCIPgetVarsData();
8556  *
8557  * @warning The integrality condition is not checked anymore on the multi-aggregated variable. You must not
8558  * multi-aggregate an integer variable without being sure, that integrality on the aggregation variables
8559  * implies integrality on the aggregated variable.
8560  *
8561  * The output flags have the following meaning:
8562  * - infeasible: the problem is infeasible
8563  * - aggregated: the aggregation was successfully performed (the variables were not aggregated before)
8564  *
8565  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8566  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8567  *
8568  * @pre This method can only be called if @p scip is in stage \ref SCIP_STAGE_PRESOLVING
8569  */
8570 extern
8572  SCIP* scip, /**< SCIP data structure */
8573  SCIP_VAR* var, /**< variable x to aggregate */
8574  int naggvars, /**< number n of variables in aggregation x = a_1*y_1 + ... + a_n*y_n + c */
8575  SCIP_VAR** aggvars, /**< variables y_i in aggregation x = a_1*y_1 + ... + a_n*y_n + c */
8576  SCIP_Real* scalars, /**< multipliers a_i in aggregation x = a_1*y_1 + ... + a_n*y_n + c */
8577  SCIP_Real constant, /**< constant shift c in aggregation x = a_1*y_1 + ... + a_n*y_n + c */
8578  SCIP_Bool* infeasible, /**< pointer to store whether the aggregation is infeasible */
8579  SCIP_Bool* aggregated /**< pointer to store whether the aggregation was successful */
8580  );
8581 
8582 /** returns whether aggregation of variables is not allowed */
8583 extern
8585  SCIP* scip /**< SCIP data structure */
8586  );
8587 
8588 /** returns whether multi-aggregation is disabled */
8589 extern
8591  SCIP* scip /**< SCIP data structure */
8592  );
8593 
8594 /** returns whether variable is not allowed to be multi-aggregated */
8595 extern
8597  SCIP* scip, /**< SCIP data structure */
8598  SCIP_VAR* var /**< variable x to aggregate */
8599  );
8600 
8601 /** marks the variable that it must not be multi-aggregated
8602  *
8603  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8604  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8605  *
8606  * @pre This method can be called if @p scip is in one of the following stages:
8607  * - \ref SCIP_STAGE_INIT
8608  * - \ref SCIP_STAGE_PROBLEM
8609  * - \ref SCIP_STAGE_TRANSFORMING
8610  * - \ref SCIP_STAGE_TRANSFORMED
8611  * - \ref SCIP_STAGE_INITPRESOLVE
8612  * - \ref SCIP_STAGE_PRESOLVING
8613  * - \ref SCIP_STAGE_EXITPRESOLVE
8614  *
8615  * @note There exists no "unmark" method since it has to be ensured that if a plugin requires that a variable is not
8616  * multi-aggregated that this is will be the case.
8617  */
8618 extern
8620  SCIP* scip, /**< SCIP data structure */
8621  SCIP_VAR* var /**< variable to delete */
8622  );
8623 
8624 /** enables the collection of statistics for a variable
8625  *
8626  * @pre This method can be called if @p scip is in one of the following stages:
8627  * - \ref SCIP_STAGE_PROBLEM
8628  * - \ref SCIP_STAGE_INITPRESOLVE
8629  * - \ref SCIP_STAGE_PRESOLVING
8630  * - \ref SCIP_STAGE_EXITPRESOLVE
8631  * - \ref SCIP_STAGE_SOLVING
8632  * - \ref SCIP_STAGE_SOLVED
8633  */
8634 extern
8636  SCIP* scip /**< SCIP data structure */
8637  );
8638 
8639 /** disables the collection of any statistic for a variable
8640  *
8641  * @pre This method can be called if @p scip is in one of the following stages:
8642  * - \ref SCIP_STAGE_PROBLEM
8643  * - \ref SCIP_STAGE_INITPRESOLVE
8644  * - \ref SCIP_STAGE_PRESOLVING
8645  * - \ref SCIP_STAGE_EXITPRESOLVE
8646  * - \ref SCIP_STAGE_SOLVING
8647  * - \ref SCIP_STAGE_SOLVED
8648  */
8649 extern
8651  SCIP* scip /**< SCIP data structure */
8652  );
8653 
8654 /** updates the pseudo costs of the given variable and the global pseudo costs after a change of "solvaldelta" in the
8655  * variable's solution value and resulting change of "objdelta" in the in the LP's objective value;
8656  * the update is ignored, if the objective value difference is infinite
8657  *
8658  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
8659  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
8660  *
8661  * @pre This method can be called if @p scip is in one of the following stages:
8662  * - \ref SCIP_STAGE_SOLVING
8663  * - \ref SCIP_STAGE_SOLVED
8664  */
8665 extern
8667  SCIP* scip, /**< SCIP data structure */
8668  SCIP_VAR* var, /**< problem variable */
8669  SCIP_Real solvaldelta, /**< difference of variable's new LP value - old LP value */
8670  SCIP_Real objdelta, /**< difference of new LP's objective value - old LP's objective value */
8671  SCIP_Real weight /**< weight in (0,1] of this update in pseudo cost sum */
8672  );
8673 
8674 /** gets the variable's pseudo cost value for the given change of the variable's LP value
8675  *
8676  * @return the variable's pseudo cost value for the given change of the variable's LP value
8677  *
8678  * @pre This method can be called if @p scip is in one of the following stages:
8679  * - \ref SCIP_STAGE_INITPRESOLVE
8680  * - \ref SCIP_STAGE_PRESOLVING
8681  * - \ref SCIP_STAGE_EXITPRESOLVE
8682  * - \ref SCIP_STAGE_PRESOLVED
8683  * - \ref SCIP_STAGE_INITSOLVE
8684  * - \ref SCIP_STAGE_SOLVING
8685  * - \ref SCIP_STAGE_SOLVED
8686  */
8687 extern
8689  SCIP* scip, /**< SCIP data structure */
8690  SCIP_VAR* var, /**< problem variable */
8691  SCIP_Real solvaldelta /**< difference of variable's new LP value - old LP value */
8692  );
8693 
8694 /** gets the variable's pseudo cost value for the given change of the variable's LP value,
8695  * only using the pseudo cost information of the current run
8696  *
8697  * @return the variable's pseudo cost value for the given change of the variable's LP value,
8698  * only using the pseudo cost information of the current run
8699  *
8700  * @pre This method can be called if @p scip is in one of the following stages:
8701  * - \ref SCIP_STAGE_INITPRESOLVE
8702  * - \ref SCIP_STAGE_PRESOLVING
8703  * - \ref SCIP_STAGE_EXITPRESOLVE
8704  * - \ref SCIP_STAGE_PRESOLVED
8705  * - \ref SCIP_STAGE_INITSOLVE
8706  * - \ref SCIP_STAGE_SOLVING
8707  * - \ref SCIP_STAGE_SOLVED
8708  */
8709 extern
8711  SCIP* scip, /**< SCIP data structure */
8712  SCIP_VAR* var, /**< problem variable */
8713  SCIP_Real solvaldelta /**< difference of variable's new LP value - old LP value */
8714  );
8715 
8716 /** gets the variable's pseudo cost value for the given direction
8717  *
8718  * @return the variable's pseudo cost value for the given direction
8719  *
8720  * @pre This method can be called if @p scip is in one of the following stages:
8721  * - \ref SCIP_STAGE_INITPRESOLVE
8722  * - \ref SCIP_STAGE_PRESOLVING
8723  * - \ref SCIP_STAGE_EXITPRESOLVE
8724  * - \ref SCIP_STAGE_PRESOLVED
8725  * - \ref SCIP_STAGE_INITSOLVE
8726  * - \ref SCIP_STAGE_SOLVING
8727  * - \ref SCIP_STAGE_SOLVED
8728  */
8729 extern
8731  SCIP* scip, /**< SCIP data structure */
8732  SCIP_VAR* var, /**< problem variable */
8733  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
8734  );
8735 
8736 /** gets the variable's pseudo cost value for the given direction,
8737  * only using the pseudo cost information of the current run
8738  *
8739  * @return the variable's pseudo cost value for the given direction,
8740  * only using the pseudo cost information of the current run
8741  *
8742  * @pre This method can be called if @p scip is in one of the following stages:
8743  * - \ref SCIP_STAGE_INITPRESOLVE
8744  * - \ref SCIP_STAGE_PRESOLVING
8745  * - \ref SCIP_STAGE_EXITPRESOLVE
8746  * - \ref SCIP_STAGE_PRESOLVED
8747  * - \ref SCIP_STAGE_INITSOLVE
8748  * - \ref SCIP_STAGE_SOLVING
8749  * - \ref SCIP_STAGE_SOLVED
8750  */
8751 extern
8753  SCIP* scip, /**< SCIP data structure */
8754  SCIP_VAR* var, /**< problem variable */
8755  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
8756  );
8757 
8758 /** gets the variable's (possible fractional) number of pseudo cost updates for the given direction
8759  *
8760  * @return the variable's (possible fractional) number of pseudo cost updates for the given direction
8761  *
8762  * @pre This method can be called if @p scip is in one of the following stages:
8763  * - \ref SCIP_STAGE_INITPRESOLVE
8764  * - \ref SCIP_STAGE_PRESOLVING
8765  * - \ref SCIP_STAGE_EXITPRESOLVE
8766  * - \ref SCIP_STAGE_PRESOLVED
8767  * - \ref SCIP_STAGE_INITSOLVE
8768  * - \ref SCIP_STAGE_SOLVING
8769  * - \ref SCIP_STAGE_SOLVED
8770  */
8771 extern
8773  SCIP* scip, /**< SCIP data structure */
8774  SCIP_VAR* var, /**< problem variable */
8775  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
8776  );
8777 
8778 /** gets the variable's (possible fractional) number of pseudo cost updates for the given direction,
8779  * only using the pseudo cost information of the current run
8780  *
8781  * @return the variable's (possible fractional) number of pseudo cost updates for the given direction,
8782  * only using the pseudo cost information of the current run
8783  *
8784  * @pre This method can be called if @p scip is in one of the following stages:
8785  * - \ref SCIP_STAGE_INITPRESOLVE
8786  * - \ref SCIP_STAGE_PRESOLVING
8787  * - \ref SCIP_STAGE_EXITPRESOLVE
8788  * - \ref SCIP_STAGE_PRESOLVED
8789  * - \ref SCIP_STAGE_INITSOLVE
8790  * - \ref SCIP_STAGE_SOLVING
8791  * - \ref SCIP_STAGE_SOLVED
8792  */
8793 extern
8795  SCIP* scip, /**< SCIP data structure */
8796  SCIP_VAR* var, /**< problem variable */
8797  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
8798  );
8799 
8800 /** gets the variable's pseudo cost score value for the given LP solution value
8801  *
8802  * @return the variable's pseudo cost score value for the given LP solution value
8803  *
8804  * @pre This method can be called if @p scip is in one of the following stages:
8805  * - \ref SCIP_STAGE_INITPRESOLVE
8806  * - \ref SCIP_STAGE_PRESOLVING
8807  * - \ref SCIP_STAGE_EXITPRESOLVE
8808  * - \ref SCIP_STAGE_PRESOLVED
8809  * - \ref SCIP_STAGE_INITSOLVE
8810  * - \ref SCIP_STAGE_SOLVING
8811  * - \ref SCIP_STAGE_SOLVED
8812  */
8813 extern
8815  SCIP* scip, /**< SCIP data structure */
8816  SCIP_VAR* var, /**< problem variable */
8817  SCIP_Real solval /**< variable's LP solution value */
8818  );
8819 
8820 /** gets the variable's pseudo cost score value for the given LP solution value,
8821  * only using the pseudo cost information of the current run
8822  *
8823  * @return the variable's pseudo cost score value for the given LP solution value,
8824  * only using the pseudo cost information of the current run
8825  *
8826  * @pre This method can be called if @p scip is in one of the following stages:
8827  * - \ref SCIP_STAGE_INITPRESOLVE
8828  * - \ref SCIP_STAGE_PRESOLVING
8829  * - \ref SCIP_STAGE_EXITPRESOLVE
8830  * - \ref SCIP_STAGE_PRESOLVED
8831  * - \ref SCIP_STAGE_INITSOLVE
8832  * - \ref SCIP_STAGE_SOLVING
8833  * - \ref SCIP_STAGE_SOLVED
8834  */
8835 extern
8837  SCIP* scip, /**< SCIP data structure */
8838  SCIP_VAR* var, /**< problem variable */
8839  SCIP_Real solval /**< variable's LP solution value */
8840  );
8841 
8842 /** returns the variable's VSIDS value
8843  *
8844  * @return the variable's VSIDS value
8845  *
8846  * @pre This method can be called if @p scip is in one of the following stages:
8847  * - \ref SCIP_STAGE_INITPRESOLVE
8848  * - \ref SCIP_STAGE_PRESOLVING
8849  * - \ref SCIP_STAGE_EXITPRESOLVE
8850  * - \ref SCIP_STAGE_PRESOLVED
8851  * - \ref SCIP_STAGE_INITSOLVE
8852  * - \ref SCIP_STAGE_SOLVING
8853  * - \ref SCIP_STAGE_SOLVED
8854  */
8855 extern
8857  SCIP* scip, /**< SCIP data structure */
8858  SCIP_VAR* var, /**< problem variable */
8859  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
8860  );
8861 
8862 /** returns the variable's VSIDS value only using conflicts of the current run
8863  *
8864  * @return the variable's VSIDS value only using conflicts of the current run
8865  *
8866  * @pre This method can be called if @p scip is in one of the following stages:
8867  * - \ref SCIP_STAGE_INITPRESOLVE
8868  * - \ref SCIP_STAGE_PRESOLVING
8869  * - \ref SCIP_STAGE_EXITPRESOLVE
8870  * - \ref SCIP_STAGE_PRESOLVED
8871  * - \ref SCIP_STAGE_INITSOLVE
8872  * - \ref SCIP_STAGE_SOLVING
8873  * - \ref SCIP_STAGE_SOLVED
8874  */
8875 extern
8877  SCIP* scip, /**< SCIP data structure */
8878  SCIP_VAR* var, /**< problem variable */
8879  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
8880  );
8881 
8882 /** returns the variable's conflict score value
8883  *
8884  * @return the variable's conflict score value
8885  *
8886  * @pre This method can be called if @p scip is in one of the following stages:
8887  * - \ref SCIP_STAGE_INITPRESOLVE
8888  * - \ref SCIP_STAGE_PRESOLVING
8889  * - \ref SCIP_STAGE_EXITPRESOLVE
8890  * - \ref SCIP_STAGE_PRESOLVED
8891  * - \ref SCIP_STAGE_INITSOLVE
8892  * - \ref SCIP_STAGE_SOLVING
8893  * - \ref SCIP_STAGE_SOLVED
8894  */
8895 extern
8897  SCIP* scip, /**< SCIP data structure */
8898  SCIP_VAR* var /**< problem variable */
8899  );
8900 
8901 /** returns the variable's conflict score value only using conflicts of the current run
8902  *
8903  * @return the variable's conflict score value only using conflicts of the current run
8904  *
8905  * @pre This method can be called if @p scip is in one of the following stages:
8906  * - \ref SCIP_STAGE_INITPRESOLVE
8907  * - \ref SCIP_STAGE_PRESOLVING
8908  * - \ref SCIP_STAGE_EXITPRESOLVE
8909  * - \ref SCIP_STAGE_PRESOLVED
8910  * - \ref SCIP_STAGE_INITSOLVE
8911  * - \ref SCIP_STAGE_SOLVING
8912  * - \ref SCIP_STAGE_SOLVED
8913  */
8914 extern
8916  SCIP* scip, /**< SCIP data structure */
8917  SCIP_VAR* var /**< problem variable */
8918  );
8919 
8920 /** returns the variable's conflict length score
8921  *
8922  * @return the variable's conflict length score
8923  *
8924  * @pre This method can be called if @p scip is in one of the following stages:
8925  * - \ref SCIP_STAGE_INITPRESOLVE
8926  * - \ref SCIP_STAGE_PRESOLVING
8927  * - \ref SCIP_STAGE_EXITPRESOLVE
8928  * - \ref SCIP_STAGE_PRESOLVED
8929  * - \ref SCIP_STAGE_INITSOLVE
8930  * - \ref SCIP_STAGE_SOLVING
8931  * - \ref SCIP_STAGE_SOLVED
8932  */
8933 extern
8935  SCIP* scip, /**< SCIP data structure */
8936  SCIP_VAR* var /**< problem variable */
8937  );
8938 
8939 /** returns the variable's conflict length score only using conflicts of the current run
8940  *
8941  * @return the variable's conflict length score only using conflicts of the current run
8942  *
8943  * @pre This method can be called if @p scip is in one of the following stages:
8944  * - \ref SCIP_STAGE_INITPRESOLVE
8945  * - \ref SCIP_STAGE_PRESOLVING
8946  * - \ref SCIP_STAGE_EXITPRESOLVE
8947  * - \ref SCIP_STAGE_PRESOLVED
8948  * - \ref SCIP_STAGE_INITSOLVE
8949  * - \ref SCIP_STAGE_SOLVING
8950  * - \ref SCIP_STAGE_SOLVED
8951  */
8952 extern
8954  SCIP* scip, /**< SCIP data structure */
8955  SCIP_VAR* var /**< problem variable */
8956  );
8957 
8958 /** returns the variable's average conflict length
8959  *
8960  * @return the variable's average conflict length
8961  *
8962  * @pre This method can be called if @p scip is in one of the following stages:
8963  * - \ref SCIP_STAGE_INITPRESOLVE
8964  * - \ref SCIP_STAGE_PRESOLVING
8965  * - \ref SCIP_STAGE_EXITPRESOLVE
8966  * - \ref SCIP_STAGE_PRESOLVED
8967  * - \ref SCIP_STAGE_INITSOLVE
8968  * - \ref SCIP_STAGE_SOLVING
8969  * - \ref SCIP_STAGE_SOLVED
8970  */
8971 extern
8973  SCIP* scip, /**< SCIP data structure */
8974  SCIP_VAR* var, /**< problem variable */
8975  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
8976  );
8977 
8978 /** returns the variable's average conflict length only using conflicts of the current run
8979  *
8980  * @return the variable's average conflict length only using conflicts of the current run
8981  *
8982  * @pre This method can be called if @p scip is in one of the following stages:
8983  * - \ref SCIP_STAGE_INITPRESOLVE
8984  * - \ref SCIP_STAGE_PRESOLVING
8985  * - \ref SCIP_STAGE_EXITPRESOLVE
8986  * - \ref SCIP_STAGE_PRESOLVED
8987  * - \ref SCIP_STAGE_INITSOLVE
8988  * - \ref SCIP_STAGE_SOLVING
8989  * - \ref SCIP_STAGE_SOLVED
8990  */
8991 extern
8993  SCIP* scip, /**< SCIP data structure */
8994  SCIP_VAR* var, /**< problem variable */
8995  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
8996  );
8997 
8998 /** returns the average number of inferences found after branching on the variable in given direction;
8999  * if branching on the variable in the given direction was yet evaluated, the average number of inferences
9000  * over all variables for branching in the given direction is returned
9001  *
9002  * @return the average number of inferences found after branching on the variable in given direction
9003  *
9004  * @pre This method can be called if @p scip is in one of the following stages:
9005  * - \ref SCIP_STAGE_INITPRESOLVE
9006  * - \ref SCIP_STAGE_PRESOLVING
9007  * - \ref SCIP_STAGE_EXITPRESOLVE
9008  * - \ref SCIP_STAGE_PRESOLVED
9009  * - \ref SCIP_STAGE_INITSOLVE
9010  * - \ref SCIP_STAGE_SOLVING
9011  * - \ref SCIP_STAGE_SOLVED
9012  */
9013 extern
9015  SCIP* scip, /**< SCIP data structure */
9016  SCIP_VAR* var, /**< problem variable */
9017  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
9018  );
9019 
9020 /** returns the average number of inferences found after branching on the variable in given direction in the current run;
9021  * if branching on the variable in the given direction was yet evaluated, the average number of inferences
9022  * over all variables for branching in the given direction is returned
9023  *
9024  * @return the average number of inferences found after branching on the variable in given direction in the current run
9025  *
9026  * @pre This method can be called if @p scip is in one of the following stages:
9027  * - \ref SCIP_STAGE_INITPRESOLVE
9028  * - \ref SCIP_STAGE_PRESOLVING
9029  * - \ref SCIP_STAGE_EXITPRESOLVE
9030  * - \ref SCIP_STAGE_PRESOLVED
9031  * - \ref SCIP_STAGE_INITSOLVE
9032  * - \ref SCIP_STAGE_SOLVING
9033  * - \ref SCIP_STAGE_SOLVED
9034  */
9035 extern
9037  SCIP* scip, /**< SCIP data structure */
9038  SCIP_VAR* var, /**< problem variable */
9039  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
9040  );
9041 
9042 /** returns the variable's average inference score value
9043  *
9044  * @return the variable's average inference score value
9045  *
9046  * @pre This method can be called if @p scip is in one of the following stages:
9047  * - \ref SCIP_STAGE_INITPRESOLVE
9048  * - \ref SCIP_STAGE_PRESOLVING
9049  * - \ref SCIP_STAGE_EXITPRESOLVE
9050  * - \ref SCIP_STAGE_PRESOLVED
9051  * - \ref SCIP_STAGE_INITSOLVE
9052  * - \ref SCIP_STAGE_SOLVING
9053  * - \ref SCIP_STAGE_SOLVED
9054  */
9055 extern
9057  SCIP* scip, /**< SCIP data structure */
9058  SCIP_VAR* var /**< problem variable */
9059  );
9060 
9061 /** returns the variable's average inference score value only using inferences of the current run
9062  *
9063  * @return the variable's average inference score value only using inferences of the current run
9064  *
9065  * @pre This method can be called if @p scip is in one of the following stages:
9066  * - \ref SCIP_STAGE_INITPRESOLVE
9067  * - \ref SCIP_STAGE_PRESOLVING
9068  * - \ref SCIP_STAGE_EXITPRESOLVE
9069  * - \ref SCIP_STAGE_PRESOLVED
9070  * - \ref SCIP_STAGE_INITSOLVE
9071  * - \ref SCIP_STAGE_SOLVING
9072  * - \ref SCIP_STAGE_SOLVED
9073  */
9074 extern
9076  SCIP* scip, /**< SCIP data structure */
9077  SCIP_VAR* var /**< problem variable */
9078  );
9079 
9080 /** initializes the upwards and downwards pseudocosts, conflict scores, conflict lengths, inference scores, cutoff scores
9081  * of a variable to the given values
9082  *
9083  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9084  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9085  *
9086  * @pre This method can be called if @p scip is in one of the following stages:
9087  * - \ref SCIP_STAGE_TRANSFORMED
9088  * - \ref SCIP_STAGE_INITPRESOLVE
9089  * - \ref SCIP_STAGE_PRESOLVING
9090  * - \ref SCIP_STAGE_EXITPRESOLVE
9091  * - \ref SCIP_STAGE_PRESOLVED
9092  * - \ref SCIP_STAGE_INITSOLVE
9093  * - \ref SCIP_STAGE_SOLVING
9094  */
9095 extern
9097  SCIP* scip, /**< SCIP data structure */
9098  SCIP_VAR* var, /**< variable which should be initialized */
9099  SCIP_Real downpscost, /**< value to which pseudocosts for downwards branching should be initialized */
9100  SCIP_Real uppscost, /**< value to which pseudocosts for upwards branching should be initialized */
9101  SCIP_Real downvsids, /**< value to which VSIDS score for downwards branching should be initialized */
9102  SCIP_Real upvsids, /**< value to which VSIDS score for upwards branching should be initialized */
9103  SCIP_Real downconflen, /**< value to which conflict length score for downwards branching should be initialized */
9104  SCIP_Real upconflen, /**< value to which conflict length score for upwards branching should be initialized */
9105  SCIP_Real downinfer, /**< value to which inference counter for downwards branching should be initialized */
9106  SCIP_Real upinfer, /**< value to which inference counter for upwards branching should be initialized */
9107  SCIP_Real downcutoff, /**< value to which cutoff counter for downwards branching should be initialized */
9108  SCIP_Real upcutoff /**< value to which cutoff counter for upwards branching should be initialized */
9109  );
9110 
9111 /** returns the average number of cutoffs found after branching on the variable in given direction;
9112  * if branching on the variable in the given direction was yet evaluated, the average number of cutoffs
9113  * over all variables for branching in the given direction is returned
9114  *
9115  * @return the average number of cutoffs found after branching on the variable in given direction
9116  *
9117  * @pre This method can be called if @p scip is in one of the following stages:
9118  * - \ref SCIP_STAGE_INITPRESOLVE
9119  * - \ref SCIP_STAGE_PRESOLVING
9120  * - \ref SCIP_STAGE_EXITPRESOLVE
9121  * - \ref SCIP_STAGE_PRESOLVED
9122  * - \ref SCIP_STAGE_INITSOLVE
9123  * - \ref SCIP_STAGE_SOLVING
9124  * - \ref SCIP_STAGE_SOLVED
9125  */
9126 extern
9128  SCIP* scip, /**< SCIP data structure */
9129  SCIP_VAR* var, /**< problem variable */
9130  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
9131  );
9132 
9133 /** returns the average number of cutoffs found after branching on the variable in given direction in the current run;
9134  * if branching on the variable in the given direction was yet evaluated, the average number of cutoffs
9135  * over all variables for branching in the given direction is returned
9136  *
9137  * @return the average number of cutoffs found after branching on the variable in given direction in the current run
9138  *
9139  * @pre This method can be called if @p scip is in one of the following stages:
9140  * - \ref SCIP_STAGE_INITPRESOLVE
9141  * - \ref SCIP_STAGE_PRESOLVING
9142  * - \ref SCIP_STAGE_EXITPRESOLVE
9143  * - \ref SCIP_STAGE_PRESOLVED
9144  * - \ref SCIP_STAGE_INITSOLVE
9145  * - \ref SCIP_STAGE_SOLVING
9146  * - \ref SCIP_STAGE_SOLVED
9147  */
9148 extern
9150  SCIP* scip, /**< SCIP data structure */
9151  SCIP_VAR* var, /**< problem variable */
9152  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
9153  );
9154 
9155 /** returns the variable's average cutoff score value
9156  *
9157  * @return the variable's average cutoff score value
9158  *
9159  * @pre This method can be called if @p scip is in one of the following stages:
9160  * - \ref SCIP_STAGE_INITPRESOLVE
9161  * - \ref SCIP_STAGE_PRESOLVING
9162  * - \ref SCIP_STAGE_EXITPRESOLVE
9163  * - \ref SCIP_STAGE_PRESOLVED
9164  * - \ref SCIP_STAGE_INITSOLVE
9165  * - \ref SCIP_STAGE_SOLVING
9166  * - \ref SCIP_STAGE_SOLVED
9167  */
9168 extern
9170  SCIP* scip, /**< SCIP data structure */
9171  SCIP_VAR* var /**< problem variable */
9172  );
9173 
9174 /** returns the variable's average cutoff score value, only using cutoffs of the current run
9175  *
9176  * @return the variable's average cutoff score value, only using cutoffs of the current run
9177  *
9178  * @pre This method can be called if @p scip is in one of the following stages:
9179  * - \ref SCIP_STAGE_INITPRESOLVE
9180  * - \ref SCIP_STAGE_PRESOLVING
9181  * - \ref SCIP_STAGE_EXITPRESOLVE
9182  * - \ref SCIP_STAGE_PRESOLVED
9183  * - \ref SCIP_STAGE_INITSOLVE
9184  * - \ref SCIP_STAGE_SOLVING
9185  * - \ref SCIP_STAGE_SOLVED
9186  */
9187 extern
9189  SCIP* scip, /**< SCIP data structure */
9190  SCIP_VAR* var /**< problem variable */
9191  );
9192 
9193 /** returns the variable's average inference/cutoff score value, weighting the cutoffs of the variable with the given
9194  * factor
9195  *
9196  * @return the variable's average inference/cutoff score value
9197  *
9198  * @pre This method can be called if @p scip is in one of the following stages:
9199  * - \ref SCIP_STAGE_INITPRESOLVE
9200  * - \ref SCIP_STAGE_PRESOLVING
9201  * - \ref SCIP_STAGE_EXITPRESOLVE
9202  * - \ref SCIP_STAGE_PRESOLVED
9203  * - \ref SCIP_STAGE_INITSOLVE
9204  * - \ref SCIP_STAGE_SOLVING
9205  * - \ref SCIP_STAGE_SOLVED
9206  */
9207 extern
9209  SCIP* scip, /**< SCIP data structure */
9210  SCIP_VAR* var, /**< problem variable */
9211  SCIP_Real cutoffweight /**< factor to weigh average number of cutoffs in branching score */
9212  );
9213 
9214 /** returns the variable's average inference/cutoff score value, weighting the cutoffs of the variable with the given
9215  * factor, only using inferences and cutoffs of the current run
9216  *
9217  * @return the variable's average inference/cutoff score value, only using inferences and cutoffs of the current run
9218  *
9219  * @pre This method can be called if @p scip is in one of the following stages:
9220  * - \ref SCIP_STAGE_INITPRESOLVE
9221  * - \ref SCIP_STAGE_PRESOLVING
9222  * - \ref SCIP_STAGE_EXITPRESOLVE
9223  * - \ref SCIP_STAGE_PRESOLVED
9224  * - \ref SCIP_STAGE_INITSOLVE
9225  * - \ref SCIP_STAGE_SOLVING
9226  * - \ref SCIP_STAGE_SOLVED
9227  */
9228 extern
9230  SCIP* scip, /**< SCIP data structure */
9231  SCIP_VAR* var, /**< problem variable */
9232  SCIP_Real cutoffweight /**< factor to weigh average number of cutoffs in branching score */
9233  );
9234 
9235 /** outputs variable information to file stream via the message system
9236  *
9237  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9238  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9239  *
9240  * @pre This method can be called if @p scip is in one of the following stages:
9241  * - \ref SCIP_STAGE_PROBLEM
9242  * - \ref SCIP_STAGE_TRANSFORMING
9243  * - \ref SCIP_STAGE_TRANSFORMED
9244  * - \ref SCIP_STAGE_INITPRESOLVE
9245  * - \ref SCIP_STAGE_PRESOLVING
9246  * - \ref SCIP_STAGE_EXITPRESOLVE
9247  * - \ref SCIP_STAGE_PRESOLVED
9248  * - \ref SCIP_STAGE_INITSOLVE
9249  * - \ref SCIP_STAGE_SOLVING
9250  * - \ref SCIP_STAGE_SOLVED
9251  * - \ref SCIP_STAGE_EXITSOLVE
9252  * - \ref SCIP_STAGE_FREETRANS
9253  *
9254  * @note If the message handler is set to a NULL pointer nothing will be printed
9255  */
9256 extern
9258  SCIP* scip, /**< SCIP data structure */
9259  SCIP_VAR* var, /**< problem variable */
9260  FILE* file /**< output file (or NULL for standard output) */
9261  );
9262 
9263 /**@} */
9264 
9265 
9266 
9267 
9268 /*
9269  * conflict analysis methods
9270  */
9271 
9272 /**@name Conflict Analysis Methods */
9273 /**@{ */
9274 
9275 /** return TRUE if conflict analysis is applicable; In case the function return FALSE there is no need to initialize the
9276  * conflict analysis since it will not be applied
9277  *
9278  * @return return TRUE if conflict analysis is applicable; In case the function return FALSE there is no need to initialize the
9279  * conflict analysis since it will not be applied
9280  *
9281  * @pre This method can be called if SCIP is in one of the following stages:
9282  * - \ref SCIP_STAGE_INITPRESOLVE
9283  * - \ref SCIP_STAGE_PRESOLVING
9284  * - \ref SCIP_STAGE_EXITPRESOLVE
9285  * - \ref SCIP_STAGE_SOLVING
9286  *
9287  * @note SCIP stage does not get changed
9288  */
9289 extern
9291  SCIP* scip /**< SCIP data structure */
9292  );
9293 
9294 /** initializes the conflict analysis by clearing the conflict candidate queue; this method must be called before you
9295  * enter the conflict variables by calling SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPaddConflictBd(),
9296  * SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb(), SCIPaddConflictRelaxedBd(), or SCIPaddConflictBinvar();
9297  *
9298  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9299  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9300  *
9301  * @pre This method can be called if SCIP is in one of the following stages:
9302  * - \ref SCIP_STAGE_PRESOLVING
9303  * - \ref SCIP_STAGE_SOLVING
9304  *
9305  * @note SCIP stage does not get changed
9306  */
9307 extern
9309  SCIP* scip /**< SCIP data structure */
9310  );
9311 
9312 /** adds lower bound of variable at the time of the given bound change index to the conflict analysis' candidate storage;
9313  * this method should be called in one of the following two cases:
9314  * 1. Before calling the SCIPanalyzeConflict() method, SCIPaddConflictLb() should be called for each lower bound
9315  * that led to the conflict (e.g. the infeasibility of globally or locally valid constraint).
9316  * 2. In the propagation conflict resolving method of a constraint handler, SCIPaddConflictLb() should be called
9317  * for each lower bound, whose current assignment led to the deduction of the given conflict bound.
9318  *
9319  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9320  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9321  *
9322  * @pre This method can be called if SCIP is in one of the following stages:
9323  * - \ref SCIP_STAGE_PRESOLVING
9324  * - \ref SCIP_STAGE_SOLVING
9325  *
9326  * @note SCIP stage does not get changed
9327  */
9328 extern
9330  SCIP* scip, /**< SCIP data structure */
9331  SCIP_VAR* var, /**< variable whose lower bound should be added to conflict candidate queue */
9332  SCIP_BDCHGIDX* bdchgidx /**< bound change index representing time on path to current node, when the
9333  * conflicting bound was valid, NULL for current local bound */
9334  );
9335 
9336 /** adds lower bound of variable at the time of the given bound change index to the conflict analysis' candidate storage
9337  * with the additional information of a relaxed lower bound; this relaxed lower bound is the one which would be enough
9338  * to explain a certain bound change;
9339  * this method should be called in one of the following two cases:
9340  * 1. Before calling the SCIPanalyzeConflict() method, SCIPaddConflictRelaxedLb() should be called for each (relaxed) lower bound
9341  * that led to the conflict (e.g. the infeasibility of globally or locally valid constraint).
9342  * 2. In the propagation conflict resolving method of a constraint handler, SCIPaddConflictRelexedLb() should be called
9343  * for each (relaxed) lower bound, whose current assignment led to the deduction of the given conflict bound.
9344  *
9345  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9346  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9347  *
9348  * @pre This method can be called if SCIP is in one of the following stages:
9349  * - \ref SCIP_STAGE_PRESOLVING
9350  * - \ref SCIP_STAGE_SOLVING
9351  *
9352  * @note SCIP stage does not get changed
9353  */
9354 extern
9356  SCIP* scip, /**< SCIP data structure */
9357  SCIP_VAR* var, /**< variable whose lower bound should be added to conflict candidate queue */
9358  SCIP_BDCHGIDX* bdchgidx, /**< bound change index representing time on path to current node, when the
9359  * conflicting bound was valid, NULL for current local bound */
9360  SCIP_Real relaxedlb /**< the relaxed lower bound */
9361  );
9362 
9363 /** adds upper bound of variable at the time of the given bound change index to the conflict analysis' candidate storage;
9364  * this method should be called in one of the following two cases:
9365  * 1. Before calling the SCIPanalyzeConflict() method, SCIPaddConflictUb() should be called for each upper bound that
9366  * led to the conflict (e.g. the infeasibility of globally or locally valid constraint).
9367  * 2. In the propagation conflict resolving method of a constraint handler, SCIPaddConflictUb() should be called for
9368  * each upper bound, whose current assignment led to the deduction of the given conflict bound.
9369  *
9370  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9371  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9372  *
9373  * @pre This method can be called if SCIP is in one of the following stages:
9374  * - \ref SCIP_STAGE_PRESOLVING
9375  * - \ref SCIP_STAGE_SOLVING
9376  *
9377  * @note SCIP stage does not get changed
9378  */
9379 extern
9381  SCIP* scip, /**< SCIP data structure */
9382  SCIP_VAR* var, /**< variable whose upper bound should be added to conflict candidate queue */
9383  SCIP_BDCHGIDX* bdchgidx /**< bound change index representing time on path to current node, when the
9384  * conflicting bound was valid, NULL for current local bound */
9385  );
9386 
9387 /** adds upper bound of variable at the time of the given bound change index to the conflict analysis' candidate storage
9388  * with the additional information of a relaxed upper bound; this relaxed upper bound is the one which would be enough
9389  * to explain a certain bound change;
9390  * this method should be called in one of the following two cases:
9391  * 1. Before calling the SCIPanalyzeConflict() method, SCIPaddConflictRelaxedUb() should be called for each (relaxed) upper
9392  * bound that led to the conflict (e.g. the infeasibility of globally or locally valid constraint).
9393  * 2. In the propagation conflict resolving method of a constraint handler, SCIPaddConflictRelaxedUb() should be
9394  * called for each (relaxed) upper bound, whose current assignment led to the deduction of the given conflict
9395  * bound.
9396  *
9397  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9398  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9399  *
9400  * @pre This method can be called if SCIP is in one of the following stages:
9401  * - \ref SCIP_STAGE_PRESOLVING
9402  * - \ref SCIP_STAGE_SOLVING
9403  *
9404  * @note SCIP stage does not get changed
9405  */
9406 extern
9408  SCIP* scip, /**< SCIP data structure */
9409  SCIP_VAR* var, /**< variable whose upper bound should be added to conflict candidate queue */
9410  SCIP_BDCHGIDX* bdchgidx, /**< bound change index representing time on path to current node, when the
9411  * conflicting bound was valid, NULL for current local bound */
9412  SCIP_Real relaxedub /**< the relaxed upper bound */
9413  );
9414 
9415 /** adds lower or upper bound of variable at the time of the given bound change index to the conflict analysis' candidate
9416  * storage; this method should be called in one of the following two cases:
9417  * 1. Before calling the SCIPanalyzeConflict() method, SCIPaddConflictBd() should be called for each bound
9418  * that led to the conflict (e.g. the infeasibility of globally or locally valid constraint).
9419  * 2. In the propagation conflict resolving method of a constraint handler, SCIPaddConflictBd() should be called
9420  * for each bound, whose current assignment led to the deduction of the given conflict bound.
9421  *
9422  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9423  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9424  *
9425  * @pre This method can be called if SCIP is in one of the following stages:
9426  * - \ref SCIP_STAGE_PRESOLVING
9427  * - \ref SCIP_STAGE_SOLVING
9428  *
9429  * @note SCIP stage does not get changed
9430  */
9431 extern
9433  SCIP* scip, /**< SCIP data structure */
9434  SCIP_VAR* var, /**< variable whose upper bound should be added to conflict candidate queue */
9435  SCIP_BOUNDTYPE boundtype, /**< the type of the conflicting bound (lower or upper bound) */
9436  SCIP_BDCHGIDX* bdchgidx /**< bound change index representing time on path to current node, when the
9437  * conflicting bound was valid, NULL for current local bound */
9438  );
9439 
9440 /** adds lower or upper bound of variable at the time of the given bound change index to the conflict analysis'
9441  * candidate storage; with the additional information of a relaxed upper bound; this relaxed upper bound is the one
9442  * which would be enough to explain a certain bound change;
9443  * this method should be called in one of the following two cases:
9444  * 1. Before calling the SCIPanalyzeConflict() method, SCIPaddConflictRelaxedBd() should be called for each (relaxed)
9445  * bound that led to the conflict (e.g. the infeasibility of globally or locally valid constraint).
9446  * 2. In the propagation conflict resolving method of a constraint handler, SCIPaddConflictRelaxedBd() should be
9447  * called for each (relaxed) bound, whose current assignment led to the deduction of the given conflict bound.
9448  *
9449  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9450  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9451  *
9452  * @pre This method can be called if SCIP is in one of the following stages:
9453  * - \ref SCIP_STAGE_PRESOLVING
9454  * - \ref SCIP_STAGE_SOLVING
9455  *
9456  * @note SCIP stage does not get changed
9457  */
9458 extern
9460  SCIP* scip, /**< SCIP data structure */
9461  SCIP_VAR* var, /**< variable whose upper bound should be added to conflict candidate queue */
9462  SCIP_BOUNDTYPE boundtype, /**< the type of the conflicting bound (lower or upper bound) */
9463  SCIP_BDCHGIDX* bdchgidx, /**< bound change index representing time on path to current node, when the
9464  * conflicting bound was valid, NULL for current local bound */
9465  SCIP_Real relaxedbd /**< the relaxed bound */
9466  );
9467 
9468 /** adds changed bound of fixed binary variable to the conflict analysis' candidate storage;
9469  * this method should be called in one of the following two cases:
9470  * 1. Before calling the SCIPanalyzeConflict() method, SCIPaddConflictBinvar() should be called for each fixed binary
9471  * variable that led to the conflict (e.g. the infeasibility of globally or locally valid constraint).
9472  * 2. In the propagation conflict resolving method of a constraint handler, SCIPaddConflictBinvar() should be called
9473  * for each binary variable, whose current fixing led to the deduction of the given conflict bound.
9474  *
9475  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9476  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9477  *
9478  * @pre This method can be called if SCIP is in one of the following stages:
9479  * - \ref SCIP_STAGE_PRESOLVING
9480  * - \ref SCIP_STAGE_SOLVING
9481  *
9482  * @note SCIP stage does not get changed
9483  */
9484 extern
9486  SCIP* scip, /**< SCIP data structure */
9487  SCIP_VAR* var /**< binary variable whose changed bound should be added to conflict queue */
9488  );
9489 
9490 /** checks if the given variable is already part of the current conflict set or queued for resolving with the same or
9491  * even stronger bound
9492  *
9493  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9494  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9495  *
9496  * @pre This method can be called if SCIP is in one of the following stages:
9497  * - \ref SCIP_STAGE_PRESOLVING
9498  * - \ref SCIP_STAGE_SOLVING
9499  *
9500  * @note SCIP stage does not get changed
9501  */
9502 extern
9504  SCIP* scip, /**< SCIP data structure */
9505  SCIP_VAR* var, /**< variable whose upper bound should be added to conflict candidate queue */
9506  SCIP_BOUNDTYPE boundtype, /**< the type of the conflicting bound (lower or upper bound) */
9507  SCIP_BDCHGIDX* bdchgidx, /**< bound change index representing time on path to current node, when the
9508  * conflicting bound was valid, NULL for current local bound */
9509  SCIP_Bool* used /**< pointer to store if the variable is already used */
9510  );
9511 
9512 /** returns the conflict lower bound if the variable is present in the current conflict set; otherwise the global lower
9513  * bound
9514  *
9515  * @return returns the conflict lower bound if the variable is present in the current conflict set; otherwise the global lower
9516  * bound
9517  *
9518  * @pre This method can be called if SCIP is in one of the following stages:
9519  * - \ref SCIP_STAGE_PRESOLVING
9520  * - \ref SCIP_STAGE_SOLVING
9521  *
9522  * @note SCIP stage does not get changed
9523  */
9524 extern
9526  SCIP* scip, /**< SCIP data structure */
9527  SCIP_VAR* var /**< problem variable */
9528  );
9529 
9530 /** returns the conflict upper bound if the variable is present in the current conflict set; otherwise minus global
9531  * upper bound
9532  *
9533  * @return returns the conflict upper bound if the variable is present in the current conflict set; otherwise minus global
9534  * upper bound
9535  *
9536  * @pre This method can be called if SCIP is in one of the following stages:
9537  * - \ref SCIP_STAGE_PRESOLVING
9538  * - \ref SCIP_STAGE_SOLVING
9539  *
9540  * @note SCIP stage does not get changed
9541  */
9542 extern
9544  SCIP* scip, /**< SCIP data structure */
9545  SCIP_VAR* var /**< problem variable */
9546  );
9547 
9548 /** analyzes conflict bounds that were added after a call to SCIPinitConflictAnalysis() with calls to
9549  * SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPaddConflictBd(), SCIPaddConflictRelaxedLb(),
9550  * SCIPaddConflictRelaxedUb(), SCIPaddConflictRelaxedBd(), or SCIPaddConflictBinvar(); on success, calls the conflict
9551  * handlers to create a conflict constraint out of the resulting conflict set; the given valid depth must be a depth
9552  * level, at which the conflict set defined by calls to SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPaddConflictBd(),
9553  * SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb(), SCIPaddConflictRelaxedBd(), and SCIPaddConflictBinvar() is
9554  * valid for the whole subtree; if the conflict was found by a violated constraint, use SCIPanalyzeConflictCons()
9555  * instead of SCIPanalyzeConflict() to make sure, that the correct valid depth is used
9556  *
9557  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9558  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9559  *
9560  * @pre This method can be called if SCIP is in one of the following stages:
9561  * - \ref SCIP_STAGE_PRESOLVING
9562  * - \ref SCIP_STAGE_SOLVING
9563  *
9564  * @note SCIP stage does not get changed
9565  */
9566 extern
9568  SCIP* scip, /**< SCIP data structure */
9569  int validdepth, /**< minimal depth level at which the initial conflict set is valid */
9570  SCIP_Bool* success /**< pointer to store whether a conflict constraint was created, or NULL */
9571  );
9572 
9573 /** analyzes conflict bounds that were added with calls to SCIPaddConflictLb(), SCIPaddConflictUb(),
9574  * SCIPaddConflictBd(), SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb(), SCIPaddConflictRelaxedBd(), or
9575  * SCIPaddConflictBinvar(); on success, calls the conflict handlers to create a conflict constraint out of the
9576  * resulting conflict set; the given constraint must be the constraint that detected the conflict, i.e. the constraint
9577  * that is infeasible in the local bounds of the initial conflict set (defined by calls to SCIPaddConflictLb(),
9578  * SCIPaddConflictUb(), SCIPaddConflictBd(), SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb(),
9579  * SCIPaddConflictRelaxedBd(), and SCIPaddConflictBinvar())
9580  *
9581  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9582  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9583  *
9584  * @pre This method can be called if SCIP is in one of the following stages:
9585  * - \ref SCIP_STAGE_PRESOLVING
9586  * - \ref SCIP_STAGE_SOLVING
9587  *
9588  * @note SCIP stage does not get changed
9589  */
9590 extern
9592  SCIP* scip, /**< SCIP data structure */
9593  SCIP_CONS* cons, /**< constraint that detected the conflict */
9594  SCIP_Bool* success /**< pointer to store whether a conflict constraint was created, or NULL */
9595  );
9596 
9597 /**@} */
9598 
9599 
9600 
9601 
9602 /*
9603  * constraint methods
9604  */
9605 
9606 /**@name Constraint Methods */
9607 /**@{ */
9608 
9609 /** creates and captures a constraint of the given constraint handler
9610  *
9611  * @warning If a constraint is marked to be checked for feasibility but not to be enforced, a LP or pseudo solution may
9612  * be declared feasible even if it violates this particular constraint. This constellation should only be
9613  * used, if no LP or pseudo solution can violate the constraint -- e.g. if a local constraint is redundant due
9614  * to the variable's local bounds.
9615  *
9616  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9617  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9618  *
9619  * @pre This method can be called if @p scip is in one of the following stages:
9620  * - \ref SCIP_STAGE_PROBLEM
9621  * - \ref SCIP_STAGE_TRANSFORMING
9622  * - \ref SCIP_STAGE_INITPRESOLVE
9623  * - \ref SCIP_STAGE_PRESOLVING
9624  * - \ref SCIP_STAGE_EXITPRESOLVE
9625  * - \ref SCIP_STAGE_PRESOLVED
9626  * - \ref SCIP_STAGE_INITSOLVE
9627  * - \ref SCIP_STAGE_SOLVING
9628  * - \ref SCIP_STAGE_EXITSOLVE
9629  *
9630  * @note the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
9631  */
9632 extern
9634  SCIP* scip, /**< SCIP data structure */
9635  SCIP_CONS** cons, /**< pointer to constraint */
9636  const char* name, /**< name of constraint */
9637  SCIP_CONSHDLR* conshdlr, /**< constraint handler for this constraint */
9638  SCIP_CONSDATA* consdata, /**< data for this specific constraint */
9639  SCIP_Bool initial, /**< should the LP relaxation of constraint be in the initial LP?
9640  * Usually set to TRUE. Set to FALSE for 'lazy constraints'. */
9641  SCIP_Bool separate, /**< should the constraint be separated during LP processing?
9642  * Usually set to TRUE. */
9643  SCIP_Bool enforce, /**< should the constraint be enforced during node processing?
9644  * TRUE for model constraints, FALSE for additional, redundant constraints. */
9645  SCIP_Bool check, /**< should the constraint be checked for feasibility?
9646  * TRUE for model constraints, FALSE for additional, redundant constraints. */
9647  SCIP_Bool propagate, /**< should the constraint be propagated during node processing?
9648  * Usually set to TRUE. */
9649  SCIP_Bool local, /**< is constraint only valid locally?
9650  * Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. */
9651  SCIP_Bool modifiable, /**< is constraint modifiable (subject to column generation)?
9652  * Usually set to FALSE. In column generation applications, set to TRUE if pricing
9653  * adds coefficients to this constraint. */
9654  SCIP_Bool dynamic, /**< is constraint subject to aging?
9655  * Usually set to FALSE. Set to TRUE for own cuts which
9656  * are separated as constraints. */
9657  SCIP_Bool removable, /**< should the relaxation be removed from the LP due to aging or cleanup?
9658  * Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'. */
9659  SCIP_Bool stickingatnode /**< should the constraint always be kept at the node where it was added, even
9660  * if it may be moved to a more global node?
9661  * Usually set to FALSE. Set to TRUE to for constraints that represent node data. */
9662  );
9663 
9664 /** parses constraint information (in cip format) out of a string; if the parsing process was successful a constraint is
9665  * creates and captures;
9666  *
9667  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9668  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9669  *
9670  * @pre This method can be called if @p scip is in one of the following stages:
9671  * - \ref SCIP_STAGE_PROBLEM
9672  * - \ref SCIP_STAGE_TRANSFORMING
9673  * - \ref SCIP_STAGE_INITPRESOLVE
9674  * - \ref SCIP_STAGE_PRESOLVING
9675  * - \ref SCIP_STAGE_EXITPRESOLVE
9676  * - \ref SCIP_STAGE_PRESOLVED
9677  * - \ref SCIP_STAGE_SOLVING
9678  * - \ref SCIP_STAGE_EXITSOLVE
9679  *
9680  * @warning If a constraint is marked to be checked for feasibility but not to be enforced, a LP or pseudo solution may
9681  * be declared feasible even if it violates this particular constraint. This constellation should only be
9682  * used, if no LP or pseudo solution can violate the constraint -- e.g. if a local constraint is redundant due
9683  * to the variable's local bounds.
9684  */
9685 extern
9687  SCIP* scip, /**< SCIP data structure */
9688  SCIP_CONS** cons, /**< pointer to store constraint */
9689  const char* str, /**< string to parse for constraint */
9690  SCIP_Bool initial, /**< should the LP relaxation of constraint be in the initial LP?
9691  * Usually set to TRUE. Set to FALSE for 'lazy constraints'. */
9692  SCIP_Bool separate, /**< should the constraint be separated during LP processing?
9693  * Usually set to TRUE. */
9694  SCIP_Bool enforce, /**< should the constraint be enforced during node processing?
9695  * TRUE for model constraints, FALSE for additional, redundant constraints. */
9696  SCIP_Bool check, /**< should the constraint be checked for feasibility?
9697  * TRUE for model constraints, FALSE for additional, redundant constraints. */
9698  SCIP_Bool propagate, /**< should the constraint be propagated during node processing?
9699  * Usually set to TRUE. */
9700  SCIP_Bool local, /**< is constraint only valid locally?
9701  * Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. */
9702  SCIP_Bool modifiable, /**< is constraint modifiable (subject to column generation)?
9703  * Usually set to FALSE. In column generation applications, set to TRUE if pricing
9704  * adds coefficients to this constraint. */
9705  SCIP_Bool dynamic, /**< is constraint subject to aging?
9706  * Usually set to FALSE. Set to TRUE for own cuts which
9707  * are separated as constraints. */
9708  SCIP_Bool removable, /**< should the relaxation be removed from the LP due to aging or cleanup?
9709  * Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'. */
9710  SCIP_Bool stickingatnode, /**< should the constraint always be kept at the node where it was added, even
9711  * if it may be moved to a more global node?
9712  * Usually set to FALSE. Set to TRUE to for constraints that represent node data. */
9713  SCIP_Bool* success /**< pointer to store if the paring process was successful */
9714  );
9715 
9716 /** increases usage counter of constraint
9717  *
9718  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9719  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9720  *
9721  * @pre This method can be called if @p scip is in one of the following stages:
9722  * - \ref SCIP_STAGE_PROBLEM
9723  * - \ref SCIP_STAGE_TRANSFORMING
9724  * - \ref SCIP_STAGE_TRANSFORMED
9725  * - \ref SCIP_STAGE_INITPRESOLVE
9726  * - \ref SCIP_STAGE_PRESOLVING
9727  * - \ref SCIP_STAGE_EXITPRESOLVE
9728  * - \ref SCIP_STAGE_PRESOLVED
9729  * - \ref SCIP_STAGE_INITSOLVE
9730  * - \ref SCIP_STAGE_SOLVING
9731  * - \ref SCIP_STAGE_SOLVED
9732  */
9733 extern
9735  SCIP* scip, /**< SCIP data structure */
9736  SCIP_CONS* cons /**< constraint to capture */
9737  );
9738 
9739 /** decreases usage counter of constraint, if the usage pointer reaches zero the constraint gets freed
9740  *
9741  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9742  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9743  *
9744  * @pre This method can be called if @p scip is in one of the following stages:
9745  * - \ref SCIP_STAGE_PROBLEM
9746  * - \ref SCIP_STAGE_TRANSFORMING
9747  * - \ref SCIP_STAGE_TRANSFORMED
9748  * - \ref SCIP_STAGE_INITPRESOLVE
9749  * - \ref SCIP_STAGE_PRESOLVING
9750  * - \ref SCIP_STAGE_EXITPRESOLVE
9751  * - \ref SCIP_STAGE_PRESOLVED
9752  * - \ref SCIP_STAGE_INITSOLVE
9753  * - \ref SCIP_STAGE_SOLVING
9754  * - \ref SCIP_STAGE_SOLVED
9755  * - \ref SCIP_STAGE_EXITSOLVE
9756  * - \ref SCIP_STAGE_FREETRANS
9757  *
9758  * @note the pointer of the constraint will be NULLed
9759  */
9760 extern
9762  SCIP* scip, /**< SCIP data structure */
9763  SCIP_CONS** cons /**< pointer to constraint */
9764  );
9765 
9766 /** change constraint name
9767  *
9768  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9769  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9770  *
9771  * @pre This method can be called if @p scip is in one of the following stages:
9772  * - \ref SCIP_STAGE_PROBLEM
9773  *
9774  * @note to get the current name of a constraint, use SCIPconsGetName() from pub_cons.h
9775  */
9776 extern
9778  SCIP* scip, /**< SCIP data structure */
9779  SCIP_CONS* cons, /**< constraint */
9780  const char* name /**< new name of constraint */
9781  );
9782 
9783 /** sets the initial flag of the given constraint
9784  *
9785  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9786  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9787  *
9788  * @pre This method can be called if @p scip is in one of the following stages:
9789  * - \ref SCIP_STAGE_PROBLEM
9790  * - \ref SCIP_STAGE_TRANSFORMING
9791  * - \ref SCIP_STAGE_PRESOLVING
9792  * - \ref SCIP_STAGE_PRESOLVED
9793  * - \ref SCIP_STAGE_SOLVING
9794  */
9795 extern
9797  SCIP* scip, /**< SCIP data structure */
9798  SCIP_CONS* cons, /**< constraint */
9799  SCIP_Bool initial /**< new value */
9800  );
9801 
9802 /** sets the separate flag of the given constraint
9803  *
9804  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9805  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9806  *
9807  * @pre This method can be called if @p scip is in one of the following stages:
9808  * - \ref SCIP_STAGE_PROBLEM
9809  * - \ref SCIP_STAGE_TRANSFORMING
9810  * - \ref SCIP_STAGE_PRESOLVING
9811  * - \ref SCIP_STAGE_PRESOLVED
9812  * - \ref SCIP_STAGE_SOLVING
9813  */
9814 extern
9816  SCIP* scip, /**< SCIP data structure */
9817  SCIP_CONS* cons, /**< constraint */
9818  SCIP_Bool separate /**< new value */
9819  );
9820 
9821 /** sets the enforce flag of the given constraint
9822  *
9823  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9824  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9825  *
9826  * @pre This method can be called if @p scip is in one of the following stages:
9827  * - \ref SCIP_STAGE_PROBLEM
9828  * - \ref SCIP_STAGE_TRANSFORMING
9829  * - \ref SCIP_STAGE_PRESOLVING
9830  * - \ref SCIP_STAGE_PRESOLVED
9831  * - \ref SCIP_STAGE_SOLVING
9832  */
9833 extern
9835  SCIP* scip, /**< SCIP data structure */
9836  SCIP_CONS* cons, /**< constraint */
9837  SCIP_Bool enforce /**< new value */
9838  );
9839 
9840 /** sets the check flag of the given constraint
9841  *
9842  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9843  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9844  *
9845  * @pre This method can be called if @p scip is in one of the following stages:
9846  * - \ref SCIP_STAGE_PROBLEM
9847  * - \ref SCIP_STAGE_TRANSFORMING
9848  * - \ref SCIP_STAGE_PRESOLVING
9849  * - \ref SCIP_STAGE_PRESOLVED
9850  * - \ref SCIP_STAGE_SOLVING
9851  */
9852 extern
9854  SCIP* scip, /**< SCIP data structure */
9855  SCIP_CONS* cons, /**< constraint */
9856  SCIP_Bool check /**< new value */
9857  );
9858 
9859 /** sets the propagate flag of the given constraint
9860  *
9861  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9862  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9863  *
9864  * @pre This method can be called if @p scip is in one of the following stages:
9865  * - \ref SCIP_STAGE_PROBLEM
9866  * - \ref SCIP_STAGE_TRANSFORMING
9867  * - \ref SCIP_STAGE_PRESOLVING
9868  * - \ref SCIP_STAGE_PRESOLVED
9869  * - \ref SCIP_STAGE_SOLVING
9870  */
9871 extern
9873  SCIP* scip, /**< SCIP data structure */
9874  SCIP_CONS* cons, /**< constraint */
9875  SCIP_Bool propagate /**< new value */
9876  );
9877 
9878 /** sets the local flag of the given constraint
9879  *
9880  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9881  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9882  *
9883  * @pre This method can be called if @p scip is in one of the following stages:
9884  * - \ref SCIP_STAGE_PROBLEM
9885  * - \ref SCIP_STAGE_TRANSFORMING
9886  * - \ref SCIP_STAGE_INITPRESOLVE
9887  * - \ref SCIP_STAGE_PRESOLVING
9888  * - \ref SCIP_STAGE_PRESOLVED
9889  * - \ref SCIP_STAGE_INITSOLVE
9890  * - \ref SCIP_STAGE_SOLVING
9891  */
9892 extern
9894  SCIP* scip, /**< SCIP data structure */
9895  SCIP_CONS* cons, /**< constraint */
9896  SCIP_Bool local /**< new value */
9897  );
9898 
9899 /** sets the modifiable flag of the given constraint
9900  *
9901  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9902  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9903  *
9904  * @pre This method can be called if @p scip is in one of the following stages:
9905  * - \ref SCIP_STAGE_PROBLEM
9906  * - \ref SCIP_STAGE_TRANSFORMING
9907  * - \ref SCIP_STAGE_PRESOLVING
9908  * - \ref SCIP_STAGE_PRESOLVED
9909  * - \ref SCIP_STAGE_SOLVING
9910  * - \ref SCIP_STAGE_EXITSOLVE
9911  */
9912 extern
9914  SCIP* scip, /**< SCIP data structure */
9915  SCIP_CONS* cons, /**< constraint */
9916  SCIP_Bool modifiable /**< new value */
9917  );
9918 
9919 /** sets the dynamic flag of the given constraint
9920  *
9921  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9922  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9923  *
9924  * @pre This method can be called if @p scip is in one of the following stages:
9925  * - \ref SCIP_STAGE_PROBLEM
9926  * - \ref SCIP_STAGE_TRANSFORMING
9927  * - \ref SCIP_STAGE_PRESOLVING
9928  * - \ref SCIP_STAGE_PRESOLVED
9929  * - \ref SCIP_STAGE_SOLVING
9930  */
9931 extern
9933  SCIP* scip, /**< SCIP data structure */
9934  SCIP_CONS* cons, /**< constraint */
9935  SCIP_Bool dynamic /**< new value */
9936  );
9937 
9938 /** sets the removable flag of the given constraint
9939  *
9940  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9941  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9942  *
9943  * @pre This method can be called if @p scip is in one of the following stages:
9944  * - \ref SCIP_STAGE_PROBLEM
9945  * - \ref SCIP_STAGE_TRANSFORMING
9946  * - \ref SCIP_STAGE_PRESOLVING
9947  * - \ref SCIP_STAGE_PRESOLVED
9948  * - \ref SCIP_STAGE_SOLVING
9949  */
9950 extern
9952  SCIP* scip, /**< SCIP data structure */
9953  SCIP_CONS* cons, /**< constraint */
9954  SCIP_Bool removable /**< new value */
9955  );
9956 
9957 /** sets the stickingatnode flag of the given constraint
9958  *
9959  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9960  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9961  *
9962  * @pre This method can be called if @p scip is in one of the following stages:
9963  * - \ref SCIP_STAGE_PROBLEM
9964  * - \ref SCIP_STAGE_TRANSFORMING
9965  * - \ref SCIP_STAGE_PRESOLVING
9966  * - \ref SCIP_STAGE_PRESOLVED
9967  * - \ref SCIP_STAGE_SOLVING
9968  */
9969 extern
9971  SCIP* scip, /**< SCIP data structure */
9972  SCIP_CONS* cons, /**< constraint */
9973  SCIP_Bool stickingatnode /**< new value */
9974  );
9975 
9976 /** updates the flags of the first constraint according to the ones of the second constraint
9977  *
9978  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
9979  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
9980  *
9981  * @pre This method can be called if @p scip is in one of the following stages:
9982  * - \ref SCIP_STAGE_PROBLEM
9983  * - \ref SCIP_STAGE_TRANSFORMING
9984  * - \ref SCIP_STAGE_PRESOLVING
9985  * - \ref SCIP_STAGE_PRESOLVED
9986  * - \ref SCIP_STAGE_SOLVING
9987  */
9988 extern
9990  SCIP* scip, /**< SCIP data structure */
9991  SCIP_CONS* cons0, /**< constraint that should stay */
9992  SCIP_CONS* cons1 /**< constraint that should be deleted */
9993  );
9994 
9995 /** gets and captures transformed constraint of a given constraint; if the constraint is not yet transformed,
9996  * a new transformed constraint for this constraint is created
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 @p scip is in one of the following stages:
10002  * - \ref SCIP_STAGE_TRANSFORMING
10003  * - \ref SCIP_STAGE_TRANSFORMED
10004  * - \ref SCIP_STAGE_INITPRESOLVE
10005  * - \ref SCIP_STAGE_PRESOLVING
10006  * - \ref SCIP_STAGE_EXITPRESOLVE
10007  * - \ref SCIP_STAGE_PRESOLVED
10008  * - \ref SCIP_STAGE_INITSOLVE
10009  * - \ref SCIP_STAGE_SOLVING
10010  */
10011 extern
10013  SCIP* scip, /**< SCIP data structure */
10014  SCIP_CONS* cons, /**< constraint to get/create transformed constraint for */
10015  SCIP_CONS** transcons /**< pointer to store the transformed constraint */
10016  );
10017 
10018 /** gets and captures transformed constraints for an array of constraints;
10019  * if a constraint in the array is not yet transformed, a new transformed constraint for this constraint is created;
10020  * it is possible to call this method with conss == transconss
10021  *
10022  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10023  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10024  *
10025  * @pre This method can be called if @p scip is in one of the following stages:
10026  * - \ref SCIP_STAGE_TRANSFORMING
10027  * - \ref SCIP_STAGE_TRANSFORMED
10028  * - \ref SCIP_STAGE_INITPRESOLVE
10029  * - \ref SCIP_STAGE_PRESOLVING
10030  * - \ref SCIP_STAGE_EXITPRESOLVE
10031  * - \ref SCIP_STAGE_PRESOLVED
10032  * - \ref SCIP_STAGE_INITSOLVE
10033  * - \ref SCIP_STAGE_SOLVING
10034  */
10035 extern
10037  SCIP* scip, /**< SCIP data structure */
10038  int nconss, /**< number of constraints to get/create transformed constraints for */
10039  SCIP_CONS** conss, /**< array with constraints to get/create transformed constraints for */
10040  SCIP_CONS** transconss /**< array to store the transformed constraints */
10041  );
10042 
10043 /** gets corresponding transformed constraint of a given constraint;
10044  * returns NULL as transcons, if transformed constraint is not yet existing
10045  *
10046  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10047  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10048  *
10049  * @pre This method can be called if @p scip is in one of the following stages:
10050  * - \ref SCIP_STAGE_TRANSFORMING
10051  * - \ref SCIP_STAGE_TRANSFORMED
10052  * - \ref SCIP_STAGE_INITPRESOLVE
10053  * - \ref SCIP_STAGE_PRESOLVING
10054  * - \ref SCIP_STAGE_EXITPRESOLVE
10055  * - \ref SCIP_STAGE_PRESOLVED
10056  * - \ref SCIP_STAGE_INITSOLVE
10057  * - \ref SCIP_STAGE_SOLVING
10058  * - \ref SCIP_STAGE_SOLVED
10059  * - \ref SCIP_STAGE_EXITSOLVE
10060  * - \ref SCIP_STAGE_FREETRANS
10061  */
10062 extern
10064  SCIP* scip, /**< SCIP data structure */
10065  SCIP_CONS* cons, /**< constraint to get the transformed constraint for */
10066  SCIP_CONS** transcons /**< pointer to store the transformed constraint */
10067  );
10068 
10069 /** gets corresponding transformed constraints for an array of constraints;
10070  * stores NULL in a transconss slot, if the transformed constraint is not yet existing;
10071  * it is possible to call this method with conss == transconss, but remember that constraints that are not
10072  * yet transformed will be replaced with NULL
10073  *
10074  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10075  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10076  *
10077  * @pre This method can be called if @p scip is in one of the following stages:
10078  * - \ref SCIP_STAGE_TRANSFORMING
10079  * - \ref SCIP_STAGE_TRANSFORMED
10080  * - \ref SCIP_STAGE_INITPRESOLVE
10081  * - \ref SCIP_STAGE_PRESOLVING
10082  * - \ref SCIP_STAGE_EXITPRESOLVE
10083  * - \ref SCIP_STAGE_PRESOLVED
10084  * - \ref SCIP_STAGE_INITSOLVE
10085  * - \ref SCIP_STAGE_SOLVING
10086  * - \ref SCIP_STAGE_SOLVED
10087  * - \ref SCIP_STAGE_EXITSOLVE
10088  * - \ref SCIP_STAGE_FREETRANS
10089  */
10090 extern
10092  SCIP* scip, /**< SCIP data structure */
10093  int nconss, /**< number of constraints to get the transformed constraints for */
10094  SCIP_CONS** conss, /**< constraints to get the transformed constraints for */
10095  SCIP_CONS** transconss /**< array to store the transformed constraints */
10096  );
10097 
10098 /** adds given value to age of constraint, but age can never become negative;
10099  * should be called
10100  * - in constraint separation, if no cut was found for this constraint,
10101  * - in constraint enforcing, if constraint was feasible, and
10102  * - in constraint propagation, if no domain reduction was deduced;
10103  *
10104  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10105  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10106  *
10107  * @pre This method can be called if @p scip is in one of the following stages:
10108  * - \ref SCIP_STAGE_TRANSFORMED
10109  * - \ref SCIP_STAGE_PRESOLVING
10110  * - \ref SCIP_STAGE_PRESOLVED
10111  * - \ref SCIP_STAGE_SOLVING
10112  * - \ref SCIP_STAGE_SOLVED
10113  */
10114 extern
10116  SCIP* scip, /**< SCIP data structure */
10117  SCIP_CONS* cons, /**< constraint */
10118  SCIP_Real deltaage /**< value to add to the constraint's age */
10119  );
10120 
10121 /** increases age of constraint by 1.0;
10122  * should be called
10123  * - in constraint separation, if no cut was found for this constraint,
10124  * - in constraint enforcing, if constraint was feasible, and
10125  * - in constraint propagation, if no domain reduction was deduced;
10126  *
10127  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10128  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10129  *
10130  * @pre This method can be called if @p scip is in one of the following stages:
10131  * - \ref SCIP_STAGE_TRANSFORMED
10132  * - \ref SCIP_STAGE_PRESOLVING
10133  * - \ref SCIP_STAGE_PRESOLVED
10134  * - \ref SCIP_STAGE_SOLVING
10135  * - \ref SCIP_STAGE_SOLVED
10136  */
10137 extern
10139  SCIP* scip, /**< SCIP data structure */
10140  SCIP_CONS* cons /**< constraint */
10141  );
10142 
10143 /** resets age of constraint to zero;
10144  * should be called
10145  * - in constraint separation, if a cut was found for this constraint,
10146  * - in constraint enforcing, if the constraint was violated, and
10147  * - in constraint propagation, if a domain reduction was deduced;
10148  *
10149  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10150  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10151  *
10152  * @pre This method can be called if @p scip is in one of the following stages:
10153  * - \ref SCIP_STAGE_TRANSFORMED
10154  * - \ref SCIP_STAGE_PRESOLVING
10155  * - \ref SCIP_STAGE_PRESOLVED
10156  * - \ref SCIP_STAGE_SOLVING
10157  * - \ref SCIP_STAGE_SOLVED
10158  */
10159 extern
10161  SCIP* scip, /**< SCIP data structure */
10162  SCIP_CONS* cons /**< constraint */
10163  );
10164 
10165 /** enables constraint's separation, propagation, and enforcing capabilities
10166  *
10167  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10168  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10169  *
10170  * @pre This method can be called if @p scip is in one of the following stages:
10171  * - \ref SCIP_STAGE_TRANSFORMED
10172  * - \ref SCIP_STAGE_PRESOLVING
10173  * - \ref SCIP_STAGE_PRESOLVED
10174  * - \ref SCIP_STAGE_INITSOLVE
10175  * - \ref SCIP_STAGE_SOLVING
10176  * - \ref SCIP_STAGE_SOLVED
10177  */
10178 extern
10180  SCIP* scip, /**< SCIP data structure */
10181  SCIP_CONS* cons /**< constraint */
10182  );
10183 
10184 /** disables constraint's separation, propagation, and enforcing capabilities, s.t. the constraint is not propagated,
10185  * separated, and enforced anymore until it is enabled again with a call to SCIPenableCons();
10186  * in contrast to SCIPdelConsLocal() and SCIPdelConsNode(), the disabling is not associated to a node in the tree and
10187  * does not consume memory; therefore, the constraint is neither automatically enabled on leaving the node nor
10188  * automatically disabled again on entering the node again;
10189  * note that the constraints enforcing capabilities are necessary for the solution's feasibility, if the constraint
10190  * is a model constraint; that means, you must be sure that the constraint cannot be violated in the current subtree,
10191  * and you have to enable it again manually by calling SCIPenableCons(), if this subtree is left (e.g. by using
10192  * an appropriate event handler that watches the corresponding variables' domain changes)
10193  *
10194  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10195  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10196  *
10197  * @pre This method can be called if @p scip is in one of the following stages:
10198  * - \ref SCIP_STAGE_TRANSFORMED
10199  * - \ref SCIP_STAGE_INITPRESOLVE
10200  * - \ref SCIP_STAGE_PRESOLVING
10201  * - \ref SCIP_STAGE_PRESOLVED
10202  * - \ref SCIP_STAGE_INITSOLVE
10203  * - \ref SCIP_STAGE_SOLVING
10204  * - \ref SCIP_STAGE_SOLVED
10205  */
10206 extern
10208  SCIP* scip, /**< SCIP data structure */
10209  SCIP_CONS* cons /**< constraint */
10210  );
10211 
10212 /** enables constraint's separation capabilities
10213  *
10214  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10215  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10216  *
10217  * @pre This method can be called if @p scip is in one of the following stages:
10218  * - \ref SCIP_STAGE_TRANSFORMED
10219  * - \ref SCIP_STAGE_PRESOLVING
10220  * - \ref SCIP_STAGE_PRESOLVED
10221  * - \ref SCIP_STAGE_INITSOLVE
10222  * - \ref SCIP_STAGE_SOLVING
10223  * - \ref SCIP_STAGE_SOLVED
10224  */
10225 extern
10227  SCIP* scip, /**< SCIP data structure */
10228  SCIP_CONS* cons /**< constraint */
10229  );
10230 
10231 /** disables constraint's separation capabilities s.t. the constraint is not propagated anymore until the separation
10232  * is enabled again with a call to SCIPenableConsSeparation(); in contrast to SCIPdelConsLocal() and SCIPdelConsNode(),
10233  * the disabling is not associated to a node in the tree and does not consume memory; therefore, the constraint
10234  * is neither automatically enabled on leaving the node nor automatically disabled again on entering the node again
10235  *
10236  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10237  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10238  *
10239  * @pre This method can be called if @p scip is in one of the following stages:
10240  * - \ref SCIP_STAGE_TRANSFORMED
10241  * - \ref SCIP_STAGE_PRESOLVING
10242  * - \ref SCIP_STAGE_PRESOLVED
10243  * - \ref SCIP_STAGE_INITSOLVE
10244  * - \ref SCIP_STAGE_SOLVING
10245  * - \ref SCIP_STAGE_SOLVED
10246  */
10247 extern
10249  SCIP* scip, /**< SCIP data structure */
10250  SCIP_CONS* cons /**< constraint */
10251  );
10252 
10253 /** enables constraint's propagation capabilities
10254  *
10255  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10256  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10257  *
10258  * @pre This method can be called if @p scip is in one of the following stages:
10259  * - \ref SCIP_STAGE_TRANSFORMED
10260  * - \ref SCIP_STAGE_INITPRESOLVE
10261  * - \ref SCIP_STAGE_PRESOLVING
10262  * - \ref SCIP_STAGE_EXITPRESOLVE
10263  * - \ref SCIP_STAGE_PRESOLVED
10264  * - \ref SCIP_STAGE_INITSOLVE
10265  * - \ref SCIP_STAGE_SOLVING
10266  * - \ref SCIP_STAGE_SOLVED
10267  */
10268 extern
10270  SCIP* scip, /**< SCIP data structure */
10271  SCIP_CONS* cons /**< constraint */
10272  );
10273 
10274 /** disables constraint's propagation capabilities s.t. the constraint is not propagated anymore until the propagation
10275  * is enabled again with a call to SCIPenableConsPropagation(); in contrast to SCIPdelConsLocal() and SCIPdelConsNode(),
10276  * the disabling is not associated to a node in the tree and does not consume memory; therefore, the constraint
10277  * is neither automatically enabled on leaving the node nor automatically disabled again on entering the node again
10278  *
10279  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10280  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10281  *
10282  * @pre This method can be called if @p scip is in one of the following stages:
10283  * - \ref SCIP_STAGE_TRANSFORMED
10284  * - \ref SCIP_STAGE_INITPRESOLVE
10285  * - \ref SCIP_STAGE_PRESOLVING
10286  * - \ref SCIP_STAGE_EXITPRESOLVE
10287  * - \ref SCIP_STAGE_PRESOLVED
10288  * - \ref SCIP_STAGE_INITSOLVE
10289  * - \ref SCIP_STAGE_SOLVING
10290  * - \ref SCIP_STAGE_SOLVED
10291  */
10292 extern
10294  SCIP* scip, /**< SCIP data structure */
10295  SCIP_CONS* cons /**< constraint */
10296  );
10297 
10298 
10299 /** marks constraint to be propagated
10300  *
10301  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10302  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10303  *
10304  * @pre This method can be called if @p scip is in one of the following stages:
10305  * - \ref SCIP_STAGE_TRANSFORMED
10306  * - \ref SCIP_STAGE_PRESOLVING
10307  * - \ref SCIP_STAGE_EXITPRESOLVE
10308  * - \ref SCIP_STAGE_PRESOLVED
10309  * - \ref SCIP_STAGE_INITSOLVE
10310  * - \ref SCIP_STAGE_SOLVING
10311  * - \ref SCIP_STAGE_SOLVED
10312  *
10313  * @note if a constraint is marked to be propagated, the age of the constraint will be ignored for propagation
10314  */
10315 extern
10317  SCIP* scip, /**< SCIP data structure */
10318  SCIP_CONS* cons /**< constraint */
10319  );
10320 
10321 /** unmarks the constraint to be propagated
10322  *
10323  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10324  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10325  *
10326  * @pre This method can be called if @p scip is in one of the following stages:
10327  * - \ref SCIP_STAGE_TRANSFORMED
10328  * - \ref SCIP_STAGE_PRESOLVING
10329  * - \ref SCIP_STAGE_EXITPRESOLVE
10330  * - \ref SCIP_STAGE_PRESOLVED
10331  * - \ref SCIP_STAGE_INITSOLVE
10332  * - \ref SCIP_STAGE_SOLVING
10333  * - \ref SCIP_STAGE_SOLVED
10334  */
10335 extern
10337  SCIP* scip, /**< SCIP data structure */
10338  SCIP_CONS* cons /**< constraint */
10339  );
10340 
10341 /** adds given values to lock status of the constraint and updates the rounding locks of the involved variables
10342  *
10343  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10344  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10345  *
10346  * @pre This method can be called if @p scip is in one of the following stages:
10347  * - \ref SCIP_STAGE_PROBLEM
10348  * - \ref SCIP_STAGE_TRANSFORMING
10349  * - \ref SCIP_STAGE_INITPRESOLVE
10350  * - \ref SCIP_STAGE_PRESOLVING
10351  * - \ref SCIP_STAGE_EXITPRESOLVE
10352  * - \ref SCIP_STAGE_INITSOLVE
10353  * - \ref SCIP_STAGE_SOLVING
10354  * - \ref SCIP_STAGE_EXITSOLVE
10355  * - \ref SCIP_STAGE_FREETRANS
10356  */
10357 extern
10359  SCIP* scip, /**< SCIP data structure */
10360  SCIP_CONS* cons, /**< constraint */
10361  int nlockspos, /**< increase in number of rounding locks for constraint */
10362  int nlocksneg /**< increase in number of rounding locks for constraint's negation */
10363  );
10364 
10365 /** checks single constraint for feasibility of the given solution
10366  *
10367  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10368  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10369  *
10370  * @pre This method can be called if @p scip is in one of the following stages:
10371  * - \ref SCIP_STAGE_TRANSFORMED
10372  * - \ref SCIP_STAGE_INITPRESOLVE
10373  * - \ref SCIP_STAGE_PRESOLVING
10374  * - \ref SCIP_STAGE_EXITPRESOLVE
10375  * - \ref SCIP_STAGE_PRESOLVED
10376  * - \ref SCIP_STAGE_INITSOLVE
10377  * - \ref SCIP_STAGE_SOLVING
10378  * - \ref SCIP_STAGE_SOLVED
10379  */
10380 extern
10382  SCIP* scip, /**< SCIP data structure */
10383  SCIP_CONS* cons, /**< constraint to check */
10384  SCIP_SOL* sol, /**< primal CIP solution */
10385  SCIP_Bool checkintegrality, /**< has integrality to be checked? */
10386  SCIP_Bool checklprows, /**< have current LP rows (both local and global) to be checked? */
10387  SCIP_Bool printreason, /**< should the reason for the violation be printed? */
10388  SCIP_RESULT* result /**< pointer to store the result of the callback method */
10389  );
10390 
10391 /** enforces single constraint for a given pseudo solution
10392  *
10393  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10394  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10395  *
10396  * @pre This method can be called if @p scip is in one of the following stages:
10397  * - \ref SCIP_STAGE_SOLVING
10398  *
10399  * @note This is an advanced method and should be used with caution. It may only be called for constraints that were not
10400  * added to SCIP beforehand.
10401  */
10402 extern
10404  SCIP* scip, /**< SCIP data structure */
10405  SCIP_CONS* cons, /**< constraint to enforce */
10406  SCIP_Bool solinfeasible, /**< was the solution already declared infeasible by a constraint handler? */
10407  SCIP_Bool objinfeasible, /**< is the solution infeasible anyway due to violating lower objective bound? */
10408  SCIP_RESULT* result /**< pointer to store the result of the callback method */
10409  );
10410 
10411 /** enforces single constraint for a given LP solution
10412  *
10413  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10414  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10415  *
10416  * @pre This method can be called if @p scip is in one of the following stages:
10417  * - \ref SCIP_STAGE_SOLVING
10418  *
10419  * @note This is an advanced method and should be used with caution. It may only be called for constraints that were not
10420  * added to SCIP beforehand.
10421  */
10422 extern
10424  SCIP* scip, /**< SCIP data structure */
10425  SCIP_CONS* cons, /**< constraint to enforce */
10426  SCIP_Bool solinfeasible, /**< was the solution already declared infeasible by a constraint handler? */
10427  SCIP_RESULT* result /**< pointer to store the result of the callback method */
10428  );
10429 
10430 /** calls LP initialization method for single constraint
10431  *
10432  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10433  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10434  *
10435  * @pre This method can be called if @p scip is in one of the following stages:
10436  * - \ref SCIP_STAGE_SOLVING
10437  *
10438  * @note This is an advanced method and should be used with caution. It may only be called for constraints that were not
10439  * added to SCIP beforehand.
10440  */
10441 extern
10443  SCIP* scip, /**< SCIP data structure */
10444  SCIP_CONS* cons /**< constraint to initialize */
10445  );
10446 
10447 /** calls separation method of single constraint for LP solution
10448  *
10449  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10450  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10451  *
10452  * @pre This method can be called if @p scip is in one of the following stages:
10453  * - \ref SCIP_STAGE_SOLVING
10454  *
10455  * @note This is an advanced method and should be used with caution.
10456  */
10457 extern
10459  SCIP* scip, /**< SCIP data structure */
10460  SCIP_CONS* cons, /**< constraint to separate */
10461  SCIP_RESULT* result /**< pointer to store the result of the separation call */
10462  );
10463 
10464 /** calls separation method of single constraint for given primal solution
10465  *
10466  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10467  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10468  *
10469  * @pre This method can be called if @p scip is in one of the following stages:
10470  * - \ref SCIP_STAGE_SOLVING
10471  *
10472  * @note This is an advanced method and should be used with caution.
10473  */
10474 extern
10476  SCIP* scip, /**< SCIP data structure */
10477  SCIP_CONS* cons, /**< constraint to separate */
10478  SCIP_SOL* sol, /**< primal solution that should be separated*/
10479  SCIP_RESULT* result /**< pointer to store the result of the separation call */
10480  );
10481 
10482 /** calls domain propagation method of single constraint
10483  *
10484  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10485  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10486  *
10487  * @pre This method can be called if @p scip is in one of the following stages:
10488  * - \ref SCIP_STAGE_PRESOLVING
10489  * - \ref SCIP_STAGE_SOLVING
10490  *
10491  * @note This is an advanced method and should be used with caution.
10492  */
10493 extern
10495  SCIP* scip, /**< SCIP data structure */
10496  SCIP_CONS* cons, /**< constraint to propagate */
10497  SCIP_PROPTIMING proptiming, /**< current point in the node solving loop */
10498  SCIP_RESULT* result /**< pointer to store the result of the callback method */
10499  );
10500 
10501 /** resolves propagation conflict of single constraint
10502  *
10503  *
10504  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10505  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10506  *
10507  * @pre This method can be called if @p scip is in one of the following stages:
10508  * - \ref SCIP_STAGE_PRESOLVING
10509  * - \ref SCIP_STAGE_SOLVING
10510  *
10511  * @note This is an advanced method and should be used with caution. It may only be called for constraints that were not
10512  * added to SCIP beforehand.
10513  */
10514 extern
10516  SCIP* scip, /**< SCIP data structure */
10517  SCIP_CONS* cons, /**< constraint to resolve conflict for */
10518  SCIP_VAR* infervar, /**< the conflict variable whose bound change has to be resolved */
10519  int inferinfo, /**< the user information passed to the corresponding SCIPinferVarLbCons() or SCIPinferVarUbCons() call */
10520  SCIP_BOUNDTYPE boundtype, /**< the type of the changed bound (lower or upper bound) */
10521  SCIP_BDCHGIDX* bdchgidx, /**< the index of the bound change, representing the point of time where the change took place */
10522  SCIP_Real relaxedbd, /**< the relaxed bound which is sufficient to be explained */
10523  SCIP_RESULT* result /**< pointer to store the result of the callback method */
10524  );
10525 
10526 /** presolves of single constraint
10527  *
10528  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10529  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10530  *
10531  * @pre This method can be called if @p scip is in one of the following stages:
10532  * - \ref SCIP_STAGE_PRESOLVING
10533  *
10534  * @note This is an advanced method and should be used with caution.
10535  */
10536 extern
10538  SCIP* scip, /**< SCIP data structure */
10539  SCIP_CONS* cons, /**< constraint to presolve */
10540  int nrounds, /**< number of presolving rounds already done */
10541  int nnewfixedvars, /**< number of variables fixed since the last call to the presolving method */
10542  int nnewaggrvars, /**< number of variables aggregated since the last call to the presolving method */
10543  int nnewchgvartypes, /**< number of variable type changes since the last call to the presolving method */
10544  int nnewchgbds, /**< number of variable bounds tightened since the last call to the presolving method */
10545  int nnewholes, /**< number of domain holes added since the last call to the presolving method */
10546  int nnewdelconss, /**< number of deleted constraints since the last call to the presolving method */
10547  int nnewaddconss, /**< number of added constraints since the last call to the presolving method */
10548  int nnewupgdconss, /**< number of upgraded constraints since the last call to the presolving method */
10549  int nnewchgcoefs, /**< number of changed coefficients since the last call to the presolving method */
10550  int nnewchgsides, /**< number of changed left or right hand sides since the last call to the presolving method */
10551  int* nfixedvars, /**< pointer to count total number of variables fixed of all presolvers */
10552  int* naggrvars, /**< pointer to count total number of variables aggregated of all presolvers */
10553  int* nchgvartypes, /**< pointer to count total number of variable type changes of all presolvers */
10554  int* nchgbds, /**< pointer to count total number of variable bounds tightened of all presolvers */
10555  int* naddholes, /**< pointer to count total number of domain holes added of all presolvers */
10556  int* ndelconss, /**< pointer to count total number of deleted constraints of all presolvers */
10557  int* naddconss, /**< pointer to count total number of added constraints of all presolvers */
10558  int* nupgdconss, /**< pointer to count total number of upgraded constraints of all presolvers */
10559  int* nchgcoefs, /**< pointer to count total number of changed coefficients of all presolvers */
10560  int* nchgsides, /**< pointer to count total number of changed left/right hand sides of all presolvers */
10561  SCIP_RESULT* result /**< pointer to store the result of the callback method */
10562  );
10563 
10564 /** calls constraint activation notification method of single constraint
10565  *
10566  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10567  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10568  *
10569  * @pre This method can be called if @p scip is in one of the following stages:
10570  * - \ref SCIP_STAGE_TRANSFORMING
10571  *
10572  * @note This is an advanced method and should be used with caution. It may only be called for constraints that were not
10573  * added to SCIP beforehand.
10574  */
10575 extern
10577  SCIP* scip, /**< SCIP data structure */
10578  SCIP_CONS* cons /**< constraint to notify */
10579  );
10580 
10581 /** calls constraint deactivation notification method of single constraint
10582  *
10583  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10584  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10585  *
10586  * @pre This method can be called if @p scip is in one of the following stages:
10587  * - \ref SCIP_STAGE_PRESOLVING
10588  * - \ref SCIP_STAGE_SOLVING
10589  *
10590  * @note This is an advanced method and should be used with caution. It may only be called for constraints that were not
10591  * added to SCIP beforehand.
10592  */
10593 extern
10595  SCIP* scip, /**< SCIP data structure */
10596  SCIP_CONS* cons /**< constraint to notify */
10597  );
10598 
10599 /** outputs constraint information to file stream via the message handler system
10600  *
10601  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10602  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10603  *
10604  * @pre This method can be called if @p scip is in one of the following stages:
10605  * - \ref SCIP_STAGE_PROBLEM
10606  * - \ref SCIP_STAGE_TRANSFORMING
10607  * - \ref SCIP_STAGE_TRANSFORMED
10608  * - \ref SCIP_STAGE_INITPRESOLVE
10609  * - \ref SCIP_STAGE_PRESOLVING
10610  * - \ref SCIP_STAGE_EXITPRESOLVE
10611  * - \ref SCIP_STAGE_PRESOLVED
10612  * - \ref SCIP_STAGE_INITSOLVE
10613  * - \ref SCIP_STAGE_SOLVING
10614  * - \ref SCIP_STAGE_SOLVED
10615  * - \ref SCIP_STAGE_EXITSOLVE
10616  * - \ref SCIP_STAGE_FREETRANS
10617  *
10618  * @note If the message handler is set to a NULL pointer nothing will be printed.
10619  * @note The file stream will not be flushed directly, this can be achieved by calling SCIPinfoMessage() printing a
10620  * newline character.
10621  */
10622 extern
10624  SCIP* scip, /**< SCIP data structure */
10625  SCIP_CONS* cons, /**< constraint */
10626  FILE* file /**< output file (or NULL for standard output) */
10627  );
10628 
10629 /** method to collect the variables of a constraint
10630  *
10631  * If the number of variables is greater than the available slots in the variable array, nothing happens except that
10632  * the success point is set to FALSE. With the method SCIPgetConsNVars() it is possible to get the number of variables
10633  * a constraint has in its scope.
10634  *
10635  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10636  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10637  *
10638  * @pre This method can be called if @p scip is in one of the following stages:
10639  * - \ref SCIP_STAGE_PROBLEM
10640  * - \ref SCIP_STAGE_TRANSFORMING
10641  * - \ref SCIP_STAGE_TRANSFORMED
10642  * - \ref SCIP_STAGE_INITPRESOLVE
10643  * - \ref SCIP_STAGE_PRESOLVING
10644  * - \ref SCIP_STAGE_EXITPRESOLVE
10645  * - \ref SCIP_STAGE_PRESOLVED
10646  * - \ref SCIP_STAGE_INITSOLVE
10647  * - \ref SCIP_STAGE_SOLVING
10648  * - \ref SCIP_STAGE_SOLVED
10649  * - \ref SCIP_STAGE_EXITSOLVE
10650  * - \ref SCIP_STAGE_FREETRANS
10651  *
10652  * @note The success pointer indicates if all variables were copied into the vars arrray.
10653  *
10654  * @note It might be that a constraint handler does not support this functionality, in that case the success pointer is
10655  * set to FALSE.
10656  */
10657 extern
10659  SCIP* scip, /**< SCIP data structure */
10660  SCIP_CONS* cons, /**< constraint for which the variables are wanted */
10661  SCIP_VAR** vars, /**< array to store the involved variable of the constraint */
10662  int varssize, /**< available slots in vars array which is needed to check if the array is large enough */
10663  SCIP_Bool* success /**< pointer to store whether the variables are successfully copied */
10664  );
10665 
10666 /** methed to collect the number of variables of a constraint
10667  *
10668  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10669  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10670  *
10671  * @pre This method can be called if @p scip is in one of the following stages:
10672  * - \ref SCIP_STAGE_PROBLEM
10673  * - \ref SCIP_STAGE_TRANSFORMING
10674  * - \ref SCIP_STAGE_TRANSFORMED
10675  * - \ref SCIP_STAGE_INITPRESOLVE
10676  * - \ref SCIP_STAGE_PRESOLVING
10677  * - \ref SCIP_STAGE_EXITPRESOLVE
10678  * - \ref SCIP_STAGE_PRESOLVED
10679  * - \ref SCIP_STAGE_INITSOLVE
10680  * - \ref SCIP_STAGE_SOLVING
10681  * - \ref SCIP_STAGE_SOLVED
10682  * - \ref SCIP_STAGE_EXITSOLVE
10683  * - \ref SCIP_STAGE_FREETRANS
10684  *
10685  * @note The success pointer indicates if the contraint handler was able to return the number of variables
10686  *
10687  * @note It might be that a constraint handler does not support this functionality, in that case the success pointer is
10688  * set to FALSE
10689  */
10690 extern
10692  SCIP* scip, /**< SCIP data structure */
10693  SCIP_CONS* cons, /**< constraint for which the number of variables is wanted */
10694  int* nvars, /**< pointer to store the number of variables */
10695  SCIP_Bool* success /**< pointer to store whether the constraint successfully returned the number of variables */
10696  );
10697 
10698 /**@} */
10699 
10700 
10701 
10702 
10703 /*
10704  * LP methods
10705  */
10706 
10707 /**@name LP Methods */
10708 /**@{ */
10709 
10710 /** returns, whether the LP was or is to be solved in the current node
10711  *
10712  * @return whether the LP was or is to be solved in the current node.
10713  *
10714  * @pre This method can be called if @p scip is in one of the following stages:
10715  * - \ref SCIP_STAGE_SOLVING
10716  *
10717  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
10718  */
10719 extern
10721  SCIP* scip /**< SCIP data structure */
10722  );
10723 
10724 /** returns, whether the LP of the current node is already constructed
10725  *
10726  * @return whether the LP of the current node is already constructed.
10727  *
10728  * @pre This method can be called if @p scip is in one of the following stages:
10729  * - \ref SCIP_STAGE_SOLVING
10730  *
10731  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
10732  */
10733 extern
10735  SCIP* scip /**< SCIP data structure */
10736  );
10737 
10738 /** makes sure that the LP of the current node is loaded and may be accessed through the LP information methods
10739  *
10740  * @warning Contructing the LP might change the amount of variables known in the transformed problem and therefore also
10741  * the variables array of SCIP (returned by SCIPgetVars() and SCIPgetVarsData()), so it might be necessary to
10742  * call one of the later method after this one
10743  *
10744  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10745  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10746  *
10747  * @pre This method can be called if @p scip is in one of the following stages:
10748  * - \ref SCIP_STAGE_SOLVING
10749  *
10750  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
10751  */
10752 extern
10754  SCIP* scip, /**< SCIP data structure */
10755  SCIP_Bool* cutoff /**< pointer to store whether the node can be cut off */
10756  );
10757 
10758 /** makes sure that the LP of the current node is flushed
10759  *
10760  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10761  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10762  *
10763  * @pre This method can be called if @p scip is in one of the following stages:
10764  * - \ref SCIP_STAGE_SOLVING
10765  *
10766  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
10767  */
10768 extern
10770  SCIP* scip /**< SCIP data structure */
10771  );
10772 
10773 /** gets solution status of current LP
10774  *
10775  * @return the solution status of current LP.
10776  *
10777  * @pre This method can be called if @p scip is in one of the following stages:
10778  * - \ref SCIP_STAGE_SOLVING
10779  *
10780  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
10781  */
10782 extern
10784  SCIP* scip /**< SCIP data structure */
10785  );
10786 
10787 /** returns whether the current lp is a relaxation of the current problem and its optimal objective value is a local lower bound
10788  *
10789  * @return whether the current lp is a relaxation of the current problem and its optimal objective value is a local lower bound.
10790  *
10791  * @pre This method can be called if @p scip is in one of the following stages:
10792  * - \ref SCIP_STAGE_SOLVING
10793  *
10794  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
10795  */
10796 extern
10798  SCIP* scip /**< SCIP data structure */
10799  );
10800 
10801 /** gets objective value of current LP (which is the sum of column and loose objective value)
10802  *
10803  * @return the objective value of current LP (which is the sum of column and loose objective value).
10804  *
10805  * @pre This method can be called if @p scip is in one of the following stages:
10806  * - \ref SCIP_STAGE_SOLVING
10807  *
10808  * @note This method returns the objective value of the current LP solution, which might be primal or dual infeasible
10809  * if a limit was hit during solving. It must not be used as a dual bound if the LP solution status returned by
10810  * SCIPgetLPSolstat() is SCIP_LPSOLSTAT_ITERLIMIT or SCIP_LPSOLSTAT_TIMELIMIT.
10811  *
10812  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
10813  */
10814 extern
10816  SCIP* scip /**< SCIP data structure */
10817  );
10818 
10819 /** gets part of objective value of current LP that results from COLUMN variables only
10820  *
10821  * @return the part of objective value of current LP that results from COLUMN variables only.
10822  *
10823  * @pre This method can be called if @p scip is in one of the following stages:
10824  * - \ref SCIP_STAGE_SOLVING
10825  *
10826  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
10827  */
10828 extern
10830  SCIP* scip /**< SCIP data structure */
10831  );
10832 
10833 /** gets part of objective value of current LP that results from LOOSE variables only
10834  *
10835  * @return part of objective value of current LP that results from LOOSE variables only.
10836  *
10837  * @pre This method can be called if @p scip is in one of the following stages:
10838  * - \ref SCIP_STAGE_SOLVING
10839  *
10840  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
10841  */
10842 extern
10844  SCIP* scip /**< SCIP data structure */
10845  );
10846 
10847 /** gets the global pseudo objective value; that is all variables set to their best (w.r.t. the objective
10848  * function) global bound
10849  *
10850  * @return the global pseudo objective value; that is all variables set to their best (w.r.t. the objective
10851  * function) global bound.
10852  *
10853  * @pre This method can be called if @p scip is in one of the following stages:
10854  * - \ref SCIP_STAGE_INITPRESOLVE
10855  * - \ref SCIP_STAGE_PRESOLVING
10856  * - \ref SCIP_STAGE_EXITPRESOLVE
10857  * - \ref SCIP_STAGE_PRESOLVED
10858  * - \ref SCIP_STAGE_INITSOLVE
10859  * - \ref SCIP_STAGE_SOLVING
10860  *
10861  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
10862  */
10863 extern
10865  SCIP* scip /**< SCIP data structure */
10866  );
10867 
10868 /** gets the pseudo objective value for the current search node; that is all variables set to their best (w.r.t. the
10869  * objective function) local bound
10870  *
10871  * @return the pseudo objective value for the current search node; that is all variables set to their best (w.r.t. the
10872  * objective function) local bound.
10873  *
10874  * @pre This method can be called if @p scip is in one of the following stages:
10875  * - \ref SCIP_STAGE_INITPRESOLVE
10876  * - \ref SCIP_STAGE_PRESOLVING
10877  * - \ref SCIP_STAGE_EXITPRESOLVE
10878  * - \ref SCIP_STAGE_PRESOLVED
10879  * - \ref SCIP_STAGE_INITSOLVE
10880  * - \ref SCIP_STAGE_SOLVING
10881  *
10882  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
10883  */
10884 extern
10886  SCIP* scip /**< SCIP data structure */
10887  );
10888 
10889 /** returns whether the root lp is a relaxation of the problem and its optimal objective value is a global lower bound
10890  *
10891  * @return whether the root lp is a relaxation of the problem and its optimal objective value is a global lower bound.
10892  *
10893  * @pre This method can be called if @p scip is in one of the following stages:
10894  * - \ref SCIP_STAGE_SOLVING
10895  *
10896  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
10897  */
10898 extern
10900  SCIP* scip /**< SCIP data structure */
10901  );
10902 
10903 /** gets the objective value of the root node LP or SCIP_INVALID if the root node LP was not (yet) solved
10904  *
10905  * @return the objective value of the root node LP or SCIP_INVALID if the root node LP was not (yet) solved.
10906  *
10907  * @pre This method can be called if @p scip is in one of the following stages:
10908  * - \ref SCIP_STAGE_INITPRESOLVE
10909  * - \ref SCIP_STAGE_PRESOLVING
10910  * - \ref SCIP_STAGE_EXITPRESOLVE
10911  * - \ref SCIP_STAGE_SOLVING
10912  *
10913  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
10914  */
10915 extern
10917  SCIP* scip /**< SCIP data structure */
10918  );
10919 
10920 /** gets part of the objective value of the root node LP that results from COLUMN variables only;
10921  * returns SCIP_INVALID if the root node LP was not (yet) solved
10922  *
10923  * @return the part of the objective value of the root node LP that results from COLUMN variables only;
10924  * or SCIP_INVALID if the root node LP was not (yet) solved.
10925  *
10926  * @pre This method can be called if @p scip is in one of the following stages:
10927  * - \ref SCIP_STAGE_INITPRESOLVE
10928  * - \ref SCIP_STAGE_PRESOLVING
10929  * - \ref SCIP_STAGE_EXITPRESOLVE
10930  * - \ref SCIP_STAGE_SOLVING
10931  *
10932  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
10933  */
10934 extern
10936  SCIP* scip /**< SCIP data structure */
10937  );
10938 
10939 /** gets part of the objective value of the root node LP that results from LOOSE variables only;
10940  * returns SCIP_INVALID if the root node LP was not (yet) solved
10941  *
10942  * @return the part of the objective value of the root node LP that results from LOOSE variables only;
10943  * or SCIP_INVALID if the root node LP was not (yet) solved.
10944  *
10945  * @pre This method can be called if @p scip is in one of the following stages:
10946  * - \ref SCIP_STAGE_INITPRESOLVE
10947  * - \ref SCIP_STAGE_PRESOLVING
10948  * - \ref SCIP_STAGE_EXITPRESOLVE
10949  * - \ref SCIP_STAGE_SOLVING
10950  *
10951  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
10952  */
10953 extern
10955  SCIP* scip /**< SCIP data structure */
10956  );
10957 
10958 /** gets current LP columns along with the current number of LP columns
10959  *
10960  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
10961  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
10962  *
10963  * @pre This method can be called if @p scip is in one of the following stages:
10964  * - \ref SCIP_STAGE_SOLVING
10965  *
10966  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
10967  */
10968 extern
10970  SCIP* scip, /**< SCIP data structure */
10971  SCIP_COL*** cols, /**< pointer to store the array of LP columns, or NULL */
10972  int* ncols /**< pointer to store the number of LP columns, or NULL */
10973  );
10974 
10975 /** gets current LP columns
10976  *
10977  * @return the current LP columns.
10978  *
10979  * @pre This method can be called if @p scip is in one of the following stages:
10980  * - \ref SCIP_STAGE_SOLVING
10981  *
10982  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
10983  */
10984 extern
10986  SCIP* scip /**< SCIP data structure */
10987  );
10988 
10989 /** gets current number of LP columns
10990  *
10991  * @return the current number of LP columns.
10992  *
10993  * @pre This method can be called if @p scip is in one of the following stages:
10994  * - \ref SCIP_STAGE_SOLVING
10995  *
10996  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
10997  */
10998 extern
10999 int SCIPgetNLPCols(
11000  SCIP* scip /**< SCIP data structure */
11001  );
11002 
11003 /** gets current LP rows along with the current number of LP rows
11004  *
11005  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11006  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11007  *
11008  * @pre This method can be called if @p scip is in one of the following stages:
11009  * - \ref SCIP_STAGE_SOLVING
11010  *
11011  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11012  */
11013 extern
11015  SCIP* scip, /**< SCIP data structure */
11016  SCIP_ROW*** rows, /**< pointer to store the array of LP rows, or NULL */
11017  int* nrows /**< pointer to store the number of LP rows, or NULL */
11018  );
11019 
11020 /** gets current LP rows
11021  *
11022  * @return the current LP rows.
11023  *
11024  * @pre This method can be called if @p scip is in one of the following stages:
11025  * - \ref SCIP_STAGE_SOLVING
11026  *
11027  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11028  */
11029 extern
11031  SCIP* scip /**< SCIP data structure */
11032  );
11033 
11034 /** gets current number of LP rows
11035  *
11036  * @return the current number of LP rows.
11037  *
11038  * @pre This method can be called if @p scip is in one of the following stages:
11039  * - \ref SCIP_STAGE_SOLVING
11040  *
11041  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11042  */
11043 extern
11044 int SCIPgetNLPRows(
11045  SCIP* scip /**< SCIP data structure */
11046  );
11047 
11048 /** returns TRUE iff all columns, i.e. every variable with non-empty column w.r.t. all ever created rows, are present
11049  * in the LP, and FALSE, if there are additional already existing columns, that may be added to the LP in pricing
11050  *
11051  * @return TRUE iff all columns, i.e. every variable with non-empty column w.r.t. all ever created rows, are present
11052  * in the LP, and FALSE, if there are additional already existing columns, that may be added to the LP in pricing.
11053  *
11054  * @pre This method can be called if @p scip is in one of the following stages:
11055  * - \ref SCIP_STAGE_SOLVING
11056  *
11057  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11058  */
11059 extern
11061  SCIP* scip /**< SCIP data structure */
11062  );
11063 
11064 /** returns whether the current LP solution is basic, i.e. is defined by a valid simplex basis
11065  *
11066  * @return whether the current LP solution is basic, i.e. is defined by a valid simplex basis.
11067  *
11068  * @pre This method can be called if @p scip is in one of the following stages:
11069  * - \ref SCIP_STAGE_SOLVING
11070  *
11071  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11072  */
11073 extern
11075  SCIP* scip /**< SCIP data structure */
11076  );
11077 
11078 /** gets all indices of basic columns and rows: index i >= 0 corresponds to column i, index i < 0 to row -i-1
11079  *
11080  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11081  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11082  *
11083  * @pre This method can be called if @p scip is in one of the following stages:
11084  * - \ref SCIP_STAGE_SOLVING
11085  *
11086  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11087  */
11088 extern
11090  SCIP* scip, /**< SCIP data structure */
11091  int* basisind /**< pointer to store basis indices ready to keep number of rows entries */
11092  );
11093 
11094 /** gets a row from the inverse basis matrix B^-1
11095  *
11096  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11097  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11098  *
11099  * @pre This method can be called if @p scip is in one of the following stages:
11100  * - \ref SCIP_STAGE_SOLVING
11101  *
11102  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11103  */
11104 extern
11106  SCIP* scip, /**< SCIP data structure */
11107  int r, /**< row number */
11108  SCIP_Real* coef /**< pointer to store the coefficients of the row */
11109  );
11110 
11111 /** gets a column from the inverse basis matrix B^-1
11112  *
11113  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11114  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11115  *
11116  * @pre This method can be called if @p scip is in one of the following stages:
11117  * - \ref SCIP_STAGE_SOLVING
11118  *
11119  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11120  */
11121 extern
11123  SCIP* scip, /**< SCIP data structure */
11124  int c, /**< column number of B^-1; this is NOT the number of the column in the LP
11125  * returned by SCIPcolGetLPPos(); you have to call SCIPgetBasisInd()
11126  * to get the array which links the B^-1 column numbers to the row and
11127  * column numbers of the LP! c must be between 0 and nrows-1, since the
11128  * basis has the size nrows * nrows */
11129  SCIP_Real* coef /**< pointer to store the coefficients of the column */
11130  );
11131 
11132 /** gets a row from the product of inverse basis matrix B^-1 and coefficient matrix A (i.e. from B^-1 * A)
11133  *
11134  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11135  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11136  *
11137  * @pre This method can be called if @p scip is in one of the following stages:
11138  * - \ref SCIP_STAGE_SOLVING
11139  *
11140  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11141  */
11142 extern
11144  SCIP* scip, /**< SCIP data structure */
11145  int r, /**< row number */
11146  SCIP_Real* binvrow, /**< row in B^-1 from prior call to SCIPgetLPBInvRow(), or NULL */
11147  SCIP_Real* coef /**< pointer to store the coefficients of the row */
11148  );
11149 
11150 /** gets a column from the product of inverse basis matrix B^-1 and coefficient matrix A (i.e. from B^-1 * A),
11151  * i.e., it computes B^-1 * A_c with A_c being the c'th column of A
11152  *
11153  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11154  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11155  *
11156  * @pre This method can be called if @p scip is in one of the following stages:
11157  * - \ref SCIP_STAGE_SOLVING
11158  *
11159  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11160  */
11161 extern
11163  SCIP* scip, /**< SCIP data structure */
11164  int c, /**< column number which can be accessed by SCIPcolGetLPPos() */
11165  SCIP_Real* coef /**< pointer to store the coefficients of the column */
11166  );
11167 
11168 /** calculates a weighted sum of all LP rows; for negative weights, the left and right hand side of the corresponding
11169  * LP row are swapped in the summation
11170  *
11171  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11172  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11173  *
11174  * @pre This method can be called if @p scip is in one of the following stages:
11175  * - \ref SCIP_STAGE_SOLVING
11176  *
11177  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11178  */
11179 extern
11181  SCIP* scip, /**< SCIP data structure */
11182  SCIP_Real* weights, /**< row weights in row summation */
11183  SCIP_REALARRAY* sumcoef, /**< array to store sum coefficients indexed by variables' probindex */
11184  SCIP_Real* sumlhs, /**< pointer to store the left hand side of the row summation */
11185  SCIP_Real* sumrhs /**< pointer to store the right hand side of the row summation */
11186  );
11187 
11188 /** calculates a MIR cut out of the weighted sum of LP rows; The weights of modifiable rows are set to 0.0, because these
11189  * rows cannot participate in a MIR cut.
11190  *
11191  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11192  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11193  *
11194  * @pre This method can be called if @p scip is in one of the following stages:
11195  * - \ref SCIP_STAGE_SOLVING
11196  *
11197  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11198  */
11199 extern
11201  SCIP* scip, /**< SCIP data structure */
11202  SCIP_SOL* sol, /**< the solution that should be separated, or NULL for LP solution */
11203  SCIP_Real boundswitch, /**< fraction of domain up to which lower bound is used in transformation */
11204  SCIP_Bool usevbds, /**< should variable bounds be used in bound transformation? */
11205  SCIP_Bool allowlocal, /**< should local information allowed to be used, resulting in a local cut? */
11206  SCIP_Bool fixintegralrhs, /**< should complementation tried to be adjusted such that rhs gets fractional? */
11207  int* boundsfortrans, /**< bounds that should be used for transformed variables: vlb_idx/vub_idx,
11208  * -1 for global lb/ub, -2 for local lb/ub, or -3 for using closest bound;
11209  * NULL for using closest bound for all variables */
11210  SCIP_BOUNDTYPE* boundtypesfortrans, /**< type of bounds that should be used for transformed variables;
11211  * NULL for using closest bound for all variables */
11212  int maxmksetcoefs, /**< maximal number of nonzeros allowed in aggregated base inequality */
11213  SCIP_Real maxweightrange, /**< maximal valid range max(|weights|)/min(|weights|) of row weights */
11214  SCIP_Real minfrac, /**< minimal fractionality of rhs to produce MIR cut for */
11215  SCIP_Real maxfrac, /**< maximal fractionality of rhs to produce MIR cut for */
11216  SCIP_Real* weights, /**< row weights in row summation; some weights might be set to zero */
11217  int* sidetypes, /**< specify row side type (-1 = lhs, 0 = unkown, 1 = rhs) or NULL for automatic choices */
11218  SCIP_Real scale, /**< additional scaling factor multiplied to all rows */
11219  SCIP_Real* mksetcoefs, /**< array to store mixed knapsack set coefficients: size nvars; or NULL */
11220  SCIP_Bool* mksetcoefsvalid, /**< pointer to store whether mixed knapsack set coefficients are valid; or NULL */
11221  SCIP_Real* mircoef, /**< array to store MIR coefficients: must be of size SCIPgetNVars() */
11222  SCIP_Real* mirrhs, /**< pointer to store the right hand side of the MIR row */
11223  SCIP_Real* cutactivity, /**< pointer to store the activity of the resulting cut */
11224  SCIP_Bool* success, /**< pointer to store whether the returned coefficients are a valid MIR cut */
11225  SCIP_Bool* cutislocal, /**< pointer to store whether the returned cut is only valid locally */
11226  int* cutrank /**< pointer to store the rank of the returned cut; or NULL */
11227  );
11228 
11229 /** 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
11230  * rows cannot participate in a MIR cut.
11231  *
11232  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11233  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11234  *
11235  * @pre This method can be called if @p scip is in one of the following stages:
11236  * - \ref SCIP_STAGE_SOLVING
11237  *
11238  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11239  */
11240 extern
11242  SCIP* scip, /**< SCIP data structure */
11243  SCIP_Real boundswitch, /**< fraction of domain up to which lower bound is used in transformation */
11244  SCIP_Bool usevbds, /**< should variable bounds be used in bound transformation? */
11245  SCIP_Bool allowlocal, /**< should local information allowed to be used, resulting in a local cut? */
11246  int maxmksetcoefs, /**< maximal number of nonzeros allowed in aggregated base inequality */
11247  SCIP_Real maxweightrange, /**< maximal valid range max(|weights|)/min(|weights|) of row weights */
11248  SCIP_Real minfrac, /**< minimal fractionality of rhs to produce strong CG cut for */
11249  SCIP_Real maxfrac, /**< maximal fractionality of rhs to produce strong CG cut for */
11250  SCIP_Real* weights, /**< row weights in row summation; some weights might be set to zero */
11251  SCIP_Real scale, /**< additional scaling factor multiplied to all rows */
11252  SCIP_Real* mircoef, /**< array to store strong CG coefficients: must be of size SCIPgetNVars() */
11253  SCIP_Real* mirrhs, /**< pointer to store the right hand side of the strong CG row */
11254  SCIP_Real* cutactivity, /**< pointer to store the activity of the resulting cut */
11255  SCIP_Bool* success, /**< pointer to store whether the returned coefficients are a valid strong CG cut */
11256  SCIP_Bool* cutislocal, /**< pointer to store whether the returned cut is only valid locally */
11257  int* cutrank /**< pointer to store the rank of the returned cut; or NULL */
11258  );
11259 
11260 /** writes current LP to a file
11261  *
11262  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11263  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11264  *
11265  * @pre This method can be called if @p scip is in one of the following stages:
11266  * - \ref SCIP_STAGE_SOLVING
11267  *
11268  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11269  */
11270 extern
11272  SCIP* scip, /**< SCIP data structure */
11273  const char* filename /**< file name */
11274  );
11275 
11276 /** writes MIP relaxation of the current branch-and-bound node to a file
11277  *
11278  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11279  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11280  *
11281  * @pre This method can be called if @p scip is in one of the following stages:
11282  * - \ref SCIP_STAGE_SOLVING
11283  *
11284  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11285  */
11286 extern
11288  SCIP* scip, /**< SCIP data structure */
11289  const char* filename, /**< file name */
11290  SCIP_Bool genericnames, /**< should generic names like x_i and row_j be used in order to avoid
11291  * troubles with reserved symbols? */
11292  SCIP_Bool origobj, /**< should the original objective function be used? */
11293  SCIP_Bool lazyconss /**< output removable rows as lazy constraints? */
11294  );
11295 
11296 /** gets the LP interface of SCIP;
11297  * with the LPI you can use all of the methods defined in lpi/lpi.h;
11298  *
11299  * @warning You have to make sure, that the full internal state of the LPI does not change or is recovered completely
11300  * after the end of the method that uses the LPI. In particular, if you manipulate the LP or its solution
11301  * (e.g. by calling one of the SCIPlpiAdd...() or one of the SCIPlpiSolve...() methods), you have to check in
11302  * advance with SCIPlpiWasSolved() whether the LP is currently solved. If this is the case, you have to make
11303  * sure, the internal solution status is recovered completely at the end of your method. This can be achieved
11304  * by getting the LPI state before applying any LPI manipulations with SCIPlpiGetState() and restoring it
11305  * afterwards with SCIPlpiSetState() and SCIPlpiFreeState(). Additionally you have to resolve the LP with the
11306  * appropriate SCIPlpiSolve...() call in order to reinstall the internal solution status.
11307  *
11308  * @warning Make also sure, that all parameter values that you have changed are set back to their original values.
11309  *
11310  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11311  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11312  *
11313  * @pre This method can be called if @p scip is in one of the following stages:
11314  * - \ref SCIP_STAGE_TRANSFORMED
11315  * - \ref SCIP_STAGE_INITPRESOLVE
11316  * - \ref SCIP_STAGE_PRESOLVING
11317  * - \ref SCIP_STAGE_EXITPRESOLVE
11318  * - \ref SCIP_STAGE_PRESOLVED
11319  * - \ref SCIP_STAGE_INITSOLVE
11320  * - \ref SCIP_STAGE_SOLVING
11321  * - \ref SCIP_STAGE_SOLVED
11322  * - \ref SCIP_STAGE_EXITSOLVE
11323  *
11324  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11325  */
11326 extern
11328  SCIP* scip, /**< SCIP data structure */
11329  SCIP_LPI** lpi /**< pointer to store the LP interface */
11330  );
11331 
11332 /** Displays quality information about the current LP solution. An LP solution need to be available. Information printed
11333  * is subject to what the LP solver supports
11334  *
11335  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11336  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11337  *
11338  * @pre This method can be called if @p scip is in one of the following stages:
11339  * - \ref SCIP_STAGE_INIT
11340  * - \ref SCIP_STAGE_PROBLEM
11341  * - \ref SCIP_STAGE_TRANSFORMED
11342  * - \ref SCIP_STAGE_INITPRESOLVE
11343  * - \ref SCIP_STAGE_PRESOLVING
11344  * - \ref SCIP_STAGE_EXITPRESOLVE
11345  * - \ref SCIP_STAGE_PRESOLVED
11346  * - \ref SCIP_STAGE_SOLVING
11347  * - \ref SCIP_STAGE_SOLVED
11348  * - \ref SCIP_STAGE_FREE
11349  *
11350  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11351  *
11352  * @note The printing process is done via the message handler system.
11353  */
11354 extern
11356  SCIP* scip, /**< SCIP data structure */
11357  FILE* file /**< output file (or NULL for standard output) */
11358  );
11359 
11360 /** compute relative interior point to current LP
11361  * @see SCIPlpComputeRelIntPoint
11362  *
11363  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11364  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11365  *
11366  * @pre This method can be called if @p scip is in one of the following stages:
11367  * - \ref SCIP_STAGE_TRANSFORMED
11368  * - \ref SCIP_STAGE_INITPRESOLVE
11369  * - \ref SCIP_STAGE_PRESOLVING
11370  * - \ref SCIP_STAGE_EXITPRESOLVE
11371  * - \ref SCIP_STAGE_PRESOLVED
11372  * - \ref SCIP_STAGE_SOLVING
11373  * - \ref SCIP_STAGE_SOLVED
11374  *
11375  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
11376  */
11377 extern
11379  SCIP* scip, /**< SCIP data structure */
11380  SCIP_Bool relaxrows, /**< should the rows be relaxed */
11381  SCIP_Bool inclobjcutoff, /**< should a row for the objective cutoff be included */
11382  SCIP_Real timelimit, /**< time limit for LP solver */
11383  int iterlimit, /**< iteration limit for LP solver */
11384  SCIP_SOL** point /**< relative interior point on exit */
11385  );
11386 
11387 /**@} */
11388 
11389 
11390 
11391 /*
11392  * LP column methods
11393  */
11394 
11395 /**@name LP Column Methods */
11396 /**@{ */
11397 
11398 /** returns the reduced costs of a column in the last (feasible) LP
11399  *
11400  * @return the reduced costs of a column in the last (feasible) LP
11401  *
11402  * @pre this method can be called in one of the following stages of the SCIP solving process:
11403  * - \ref SCIP_STAGE_SOLVING
11404  */
11405 extern
11407  SCIP* scip, /**< SCIP data structure */
11408  SCIP_COL* col /**< LP column */
11409  );
11410 
11411 /** returns the Farkas coefficient of a column in the last (infeasible) LP
11412  *
11413  * @return the Farkas coefficient of a column in the last (infeasible) LP
11414  *
11415  * @pre this method can be called in one of the following stages of the SCIP solving process:
11416  * - \ref SCIP_STAGE_SOLVING
11417  */
11418 extern
11420  SCIP* scip, /**< SCIP data structure */
11421  SCIP_COL* col /**< LP column */
11422  );
11423 
11424 /** marks a column to be not removable from the LP in the current node
11425  *
11426  * @pre this method can be called in the following stage of the SCIP solving process:
11427  * - \ref SCIP_STAGE_SOLVING
11428  */
11429 extern
11431  SCIP* scip, /**< SCIP data structure */
11432  SCIP_COL* col /**< LP column */
11433  );
11434 
11435 /**@} */
11436 
11437 
11438 
11439 
11440 /*
11441  * LP row methods
11442  */
11443 
11444 /**@name LP Row Methods */
11445 /**@{ */
11446 
11447 /** creates and captures an LP row from a constraint handler
11448  *
11449  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11450  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11451  *
11452  * @pre this method can be called in one of the following stages of the SCIP solving process:
11453  * - \ref SCIP_STAGE_INITSOLVE
11454  * - \ref SCIP_STAGE_SOLVING
11455  */
11456 extern
11458  SCIP* scip, /**< SCIP data structure */
11459  SCIP_ROW** row, /**< pointer to row */
11460  SCIP_CONSHDLR* conshdlr, /**< constraint handler that creates the row */
11461  const char* name, /**< name of row */
11462  int len, /**< number of nonzeros in the row */
11463  SCIP_COL** cols, /**< array with columns of row entries */
11464  SCIP_Real* vals, /**< array with coefficients of row entries */
11465  SCIP_Real lhs, /**< left hand side of row */
11466  SCIP_Real rhs, /**< right hand side of row */
11467  SCIP_Bool local, /**< is row only valid locally? */
11468  SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
11469  SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
11470  );
11471 
11472 /** creates and captures an LP row from a separator
11473  *
11474  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11475  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11476  *
11477  * @pre this method can be called in one of the following stages of the SCIP solving process:
11478  * - \ref SCIP_STAGE_INITSOLVE
11479  * - \ref SCIP_STAGE_SOLVING
11480  */
11481 extern
11483  SCIP* scip, /**< SCIP data structure */
11484  SCIP_ROW** row, /**< pointer to row */
11485  SCIP_SEPA* sepa, /**< separator that creates the row */
11486  const char* name, /**< name of row */
11487  int len, /**< number of nonzeros in the row */
11488  SCIP_COL** cols, /**< array with columns of row entries */
11489  SCIP_Real* vals, /**< array with coefficients of row entries */
11490  SCIP_Real lhs, /**< left hand side of row */
11491  SCIP_Real rhs, /**< right hand side of row */
11492  SCIP_Bool local, /**< is row only valid locally? */
11493  SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
11494  SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
11495  );
11496 
11497 /** creates and captures an LP row from an unspecified source
11498  *
11499  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11500  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11501  *
11502  * @pre this method can be called in one of the following stages of the SCIP solving process:
11503  * - \ref SCIP_STAGE_INITSOLVE
11504  * - \ref SCIP_STAGE_SOLVING
11505  */
11506 extern
11508  SCIP* scip, /**< SCIP data structure */
11509  SCIP_ROW** row, /**< pointer to row */
11510  const char* name, /**< name of row */
11511  int len, /**< number of nonzeros in the row */
11512  SCIP_COL** cols, /**< array with columns of row entries */
11513  SCIP_Real* vals, /**< array with coefficients of row entries */
11514  SCIP_Real lhs, /**< left hand side of row */
11515  SCIP_Real rhs, /**< right hand side of row */
11516  SCIP_Bool local, /**< is row only valid locally? */
11517  SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
11518  SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
11519  );
11520 
11521 /** creates and captures an LP row
11522  *
11523  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11524  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11525  *
11526  * @pre this method can be called in one of the following stages of the SCIP solving process:
11527  * - \ref SCIP_STAGE_INITSOLVE
11528  * - \ref SCIP_STAGE_SOLVING
11529  *
11530  * @deprecated Please use SCIPcreateRowCons() or SCIPcreateRowSepa() when calling from a constraint handler or separator in order
11531  * to facilitate correct statistics. If the call is from neither a constraint handler or separator, use SCIPcreateRowUnspec().
11532  */
11533 extern
11535  SCIP* scip, /**< SCIP data structure */
11536  SCIP_ROW** row, /**< pointer to row */
11537  const char* name, /**< name of row */
11538  int len, /**< number of nonzeros in the row */
11539  SCIP_COL** cols, /**< array with columns of row entries */
11540  SCIP_Real* vals, /**< array with coefficients of row entries */
11541  SCIP_Real lhs, /**< left hand side of row */
11542  SCIP_Real rhs, /**< right hand side of row */
11543  SCIP_Bool local, /**< is row only valid locally? */
11544  SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
11545  SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
11546  );
11547 
11548 /** creates and captures an LP row without any coefficients from a constraint handler
11549  *
11550  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11551  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11552  *
11553  * @pre this method can be called in one of the following stages of the SCIP solving process:
11554  * - \ref SCIP_STAGE_INITSOLVE
11555  * - \ref SCIP_STAGE_SOLVING
11556  */
11557 extern
11559  SCIP* scip, /**< SCIP data structure */
11560  SCIP_ROW** row, /**< pointer to row */
11561  SCIP_CONSHDLR* conshdlr, /**< constraint handler that creates the row */
11562  const char* name, /**< name of row */
11563  SCIP_Real lhs, /**< left hand side of row */
11564  SCIP_Real rhs, /**< right hand side of row */
11565  SCIP_Bool local, /**< is row only valid locally? */
11566  SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
11567  SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
11568  );
11569 
11570 /** creates and captures an LP row without any coefficients from a separator
11571  *
11572  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11573  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11574  *
11575  * @pre this method can be called in one of the following stages of the SCIP solving process:
11576  * - \ref SCIP_STAGE_INITSOLVE
11577  * - \ref SCIP_STAGE_SOLVING
11578  */
11579 extern
11581  SCIP* scip, /**< SCIP data structure */
11582  SCIP_ROW** row, /**< pointer to row */
11583  SCIP_SEPA* sepa, /**< separator that creates the row */
11584  const char* name, /**< name of row */
11585  SCIP_Real lhs, /**< left hand side of row */
11586  SCIP_Real rhs, /**< right hand side of row */
11587  SCIP_Bool local, /**< is row only valid locally? */
11588  SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
11589  SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
11590  );
11591 
11592 /** creates and captures an LP row without any coefficients from an unspecified source
11593  *
11594  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11595  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11596  *
11597  * @pre this method can be called in one of the following stages of the SCIP solving process:
11598  * - \ref SCIP_STAGE_INITSOLVE
11599  * - \ref SCIP_STAGE_SOLVING
11600  */
11601 extern
11603  SCIP* scip, /**< SCIP data structure */
11604  SCIP_ROW** row, /**< pointer to row */
11605  const char* name, /**< name of row */
11606  SCIP_Real lhs, /**< left hand side of row */
11607  SCIP_Real rhs, /**< right hand side of row */
11608  SCIP_Bool local, /**< is row only valid locally? */
11609  SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
11610  SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
11611  );
11612 
11613 /** creates and captures an LP row without any coefficients
11614  *
11615  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11616  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11617  *
11618  * @pre this method can be called in one of the following stages of the SCIP solving process:
11619  * - \ref SCIP_STAGE_INITSOLVE
11620  * - \ref SCIP_STAGE_SOLVING
11621  *
11622  * @deprecated Please use SCIPcreateEmptyRowCons() or SCIPcreateEmptyRowSepa() when calling from a constraint handler or separator in order
11623  * to facilitate correct statistics. If the call is from neither a constraint handler or separator, use SCIPcreateEmptyRowUnspec().
11624  */
11625 extern
11627  SCIP* scip, /**< SCIP data structure */
11628  SCIP_ROW** row, /**< pointer to row */
11629  const char* name, /**< name of row */
11630  SCIP_Real lhs, /**< left hand side of row */
11631  SCIP_Real rhs, /**< right hand side of row */
11632  SCIP_Bool local, /**< is row only valid locally? */
11633  SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
11634  SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
11635  );
11636 
11637 /** increases usage counter of LP row
11638  *
11639  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11640  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11641  *
11642  * @pre this method can be called in one of the following stages of the SCIP solving process:
11643  * - \ref SCIP_STAGE_INITSOLVE
11644  * - \ref SCIP_STAGE_SOLVING
11645  */
11646 extern
11648  SCIP* scip, /**< SCIP data structure */
11649  SCIP_ROW* row /**< row to capture */
11650  );
11651 
11652 /** decreases usage counter of LP row, and frees memory if necessary
11653  *
11654  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11655  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11656  *
11657  * @pre this method can be called in one of the following stages of the SCIP solving process:
11658  * - \ref SCIP_STAGE_INITSOLVE
11659  * - \ref SCIP_STAGE_SOLVING
11660  * - \ref SCIP_STAGE_EXITSOLVE
11661  */
11662 extern
11664  SCIP* scip, /**< SCIP data structure */
11665  SCIP_ROW** row /**< pointer to LP row */
11666  );
11667 
11668 /** changes left hand side of LP row
11669  *
11670  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11671  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11672  *
11673  * @pre this method can be called in one of the following stages of the SCIP solving process:
11674  * - \ref SCIP_STAGE_INITSOLVE
11675  * - \ref SCIP_STAGE_SOLVING
11676  */
11677 extern
11679  SCIP* scip, /**< SCIP data structure */
11680  SCIP_ROW* row, /**< LP row */
11681  SCIP_Real lhs /**< new left hand side */
11682  );
11683 
11684 /** changes right hand side of LP row
11685  *
11686  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11687  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11688  *
11689  * @pre this method can be called in one of the following stages of the SCIP solving process:
11690  * - \ref SCIP_STAGE_INITSOLVE
11691  * - \ref SCIP_STAGE_SOLVING
11692  */
11693 extern
11695  SCIP* scip, /**< SCIP data structure */
11696  SCIP_ROW* row, /**< LP row */
11697  SCIP_Real rhs /**< new right hand side */
11698  );
11699 
11700 /** informs row, that all subsequent additions of variables to the row should be cached and not directly applied;
11701  * after all additions were applied, SCIPflushRowExtensions() must be called;
11702  * while the caching of row extensions is activated, information methods of the row give invalid results;
11703  * caching should be used, if a row is build with SCIPaddVarToRow() calls variable by variable to increase
11704  * the performance
11705  *
11706  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11707  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11708  *
11709  * @pre this method can be called in one of the following stages of the SCIP solving process:
11710  * - \ref SCIP_STAGE_INITSOLVE
11711  * - \ref SCIP_STAGE_SOLVING
11712  */
11713 extern
11715  SCIP* scip, /**< SCIP data structure */
11716  SCIP_ROW* row /**< LP row */
11717  );
11718 
11719 /** flushes all cached row extensions after a call of SCIPcacheRowExtensions() and merges coefficients with
11720  * equal columns into a single coefficient
11721  *
11722  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11723  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11724  *
11725  * @pre this method can be called in one of the following stages of the SCIP solving process:
11726  * - \ref SCIP_STAGE_INITSOLVE
11727  * - \ref SCIP_STAGE_SOLVING
11728  */
11729 extern
11731  SCIP* scip, /**< SCIP data structure */
11732  SCIP_ROW* row /**< LP row */
11733  );
11734 
11735 /** resolves variable to columns and adds them with the coefficient to the row
11736  *
11737  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11738  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11739  *
11740  * @pre this method can be called in one of the following stages of the SCIP solving process:
11741  * - \ref SCIP_STAGE_INITSOLVE
11742  * - \ref SCIP_STAGE_SOLVING
11743  *
11744  * @note In case calling this method in the enforcement process of an lp solution, it might be that some variables,
11745  * that were not yet in the LP (e.g. dynamic columns) will change their lp solution value returned by SCIP.
11746  * For example, a variable, which has a negative objective value, that has no column in the lp yet, is in the lp solution
11747  * on its upper bound (variables with status SCIP_VARSTATUS_LOOSE are in an lp solution on it's best bound), but
11748  * creating the column, changes the solution value (variable than has status SCIP_VARSTATUS_COLUMN, and the
11749  * initialization sets the lp solution value) to 0.0. (This leads to the conclusion that, if a constraint was
11750  * violated, the linear relaxation might not be violated anymore.)
11751  */
11752 extern
11754  SCIP* scip, /**< SCIP data structure */
11755  SCIP_ROW* row, /**< LP row */
11756  SCIP_VAR* var, /**< problem variable */
11757  SCIP_Real val /**< value of coefficient */
11758  );
11759 
11760 /** resolves variables to columns and adds them with the coefficients to the row;
11761  * this method caches the row extensions and flushes them afterwards to gain better performance
11762  *
11763  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11764  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11765  *
11766  * @pre this method can be called in one of the following stages of the SCIP solving process:
11767  * - \ref SCIP_STAGE_INITSOLVE
11768  * - \ref SCIP_STAGE_SOLVING
11769  */
11770 extern
11772  SCIP* scip, /**< SCIP data structure */
11773  SCIP_ROW* row, /**< LP row */
11774  int nvars, /**< number of variables to add to the row */
11775  SCIP_VAR** vars, /**< problem variables to add */
11776  SCIP_Real* vals /**< values of coefficients */
11777  );
11778 
11779 /** resolves variables to columns and adds them with the same single coefficient to the row;
11780  * this method caches the row extensions and flushes them afterwards to gain better performance
11781  *
11782  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11783  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11784  *
11785  * @pre this method can be called in one of the following stages of the SCIP solving process:
11786  * - \ref SCIP_STAGE_INITSOLVE
11787  * - \ref SCIP_STAGE_SOLVING
11788  */
11789 extern
11791  SCIP* scip, /**< SCIP data structure */
11792  SCIP_ROW* row, /**< LP row */
11793  int nvars, /**< number of variables to add to the row */
11794  SCIP_VAR** vars, /**< problem variables to add */
11795  SCIP_Real val /**< unique value of all coefficients */
11796  );
11797 
11798 /** tries to find a value, such that all row coefficients, if scaled with this value become integral
11799  *
11800  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11801  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11802  *
11803  * @pre this method can be called in one of the following stages of the SCIP solving process:
11804  * - \ref SCIP_STAGE_INITSOLVE
11805  * - \ref SCIP_STAGE_SOLVING
11806  */
11807 extern
11809  SCIP* scip, /**< SCIP data structure */
11810  SCIP_ROW* row, /**< LP row */
11811  SCIP_Real mindelta, /**< minimal relative allowed difference of scaled coefficient s*c and integral i */
11812  SCIP_Real maxdelta, /**< maximal relative allowed difference of scaled coefficient s*c and integral i */
11813  SCIP_Longint maxdnom, /**< maximal denominator allowed in rational numbers */
11814  SCIP_Real maxscale, /**< maximal allowed scalar */
11815  SCIP_Bool usecontvars, /**< should the coefficients of the continuous variables also be made integral? */
11816  SCIP_Real* intscalar, /**< pointer to store scalar that would make the coefficients integral, or NULL */
11817  SCIP_Bool* success /**< stores whether returned value is valid */
11818  );
11819 
11820 /** tries to scale row, s.t. all coefficients (of integer variables) become integral
11821  *
11822  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11823  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11824  *
11825  * @pre this method can be called in one of the following stages of the SCIP solving process:
11826  * - \ref SCIP_STAGE_INITSOLVE
11827  * - \ref SCIP_STAGE_SOLVING
11828  */
11829 extern
11831  SCIP* scip, /**< SCIP data structure */
11832  SCIP_ROW* row, /**< LP row */
11833  SCIP_Real mindelta, /**< minimal relative allowed difference of scaled coefficient s*c and integral i */
11834  SCIP_Real maxdelta, /**< maximal relative allowed difference of scaled coefficient s*c and integral i */
11835  SCIP_Longint maxdnom, /**< maximal denominator allowed in rational numbers */
11836  SCIP_Real maxscale, /**< maximal value to scale row with */
11837  SCIP_Bool usecontvars, /**< should the coefficients of the continuous variables also be made integral? */
11838  SCIP_Bool* success /**< stores whether row could be made rational */
11839  );
11840 
11841 /** marks a row to be not removable from the LP in the current node
11842  *
11843  * @pre this method can be called in the following stage of the SCIP solving process:
11844  * - \ref SCIP_STAGE_SOLVING
11845  */
11846 extern
11848  SCIP* scip, /**< SCIP data structure */
11849  SCIP_ROW* row /**< LP row */
11850  );
11851 
11852 /** returns minimal absolute value of row vector's non-zero coefficients
11853  *
11854  * @return minimal absolute value of row vector's non-zero coefficients
11855  *
11856  * @pre this method can be called in one of the following stages of the SCIP solving process:
11857  * - \ref SCIP_STAGE_INITSOLVE
11858  * - \ref SCIP_STAGE_SOLVING
11859  */
11860 extern
11862  SCIP* scip, /**< SCIP data structure */
11863  SCIP_ROW* row /**< LP row */
11864  );
11865 
11866 /** returns maximal absolute value of row vector's non-zero coefficients
11867  *
11868  * @return maximal absolute value of row vector's non-zero coefficients
11869  *
11870  * @pre this method can be called in one of the following stages of the SCIP solving process:
11871  * - \ref SCIP_STAGE_INITSOLVE
11872  * - \ref SCIP_STAGE_SOLVING
11873  */
11874 extern
11876  SCIP* scip, /**< SCIP data structure */
11877  SCIP_ROW* row /**< LP row */
11878  );
11879 
11880 /** returns the minimal activity of a row w.r.t. the column's bounds
11881  *
11882  * @return the minimal activity of a row w.r.t. the column's bounds
11883  *
11884  * @pre this method can be called in one of the following stages of the SCIP solving process:
11885  * - \ref SCIP_STAGE_SOLVING
11886  */
11887 extern
11889  SCIP* scip, /**< SCIP data structure */
11890  SCIP_ROW* row /**< LP row */
11891  );
11892 
11893 /** returns the maximal activity of a row w.r.t. the column's bounds
11894  *
11895  * @return the maximal activity of a row w.r.t. the column's bounds
11896  *
11897  * @pre this method can be called in one of the following stages of the SCIP solving process:
11898  * - \ref SCIP_STAGE_SOLVING
11899  */
11900 extern
11902  SCIP* scip, /**< SCIP data structure */
11903  SCIP_ROW* row /**< LP row */
11904  );
11905 
11906 /** recalculates the activity of a row in the last LP solution
11907  *
11908  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11909  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11910  *
11911  * @pre this method can be called in one of the following stages of the SCIP solving process:
11912  * - \ref SCIP_STAGE_SOLVING
11913  */
11914 extern
11916  SCIP* scip, /**< SCIP data structure */
11917  SCIP_ROW* row /**< LP row */
11918  );
11919 
11920 /** returns the activity of a row in the last LP solution
11921  *
11922  * @return activity of a row in the last LP solution
11923  *
11924  * @pre this method can be called in one of the following stages of the SCIP solving process:
11925  * - \ref SCIP_STAGE_SOLVING
11926  */
11927 extern
11929  SCIP* scip, /**< SCIP data structure */
11930  SCIP_ROW* row /**< LP row */
11931  );
11932 
11933 /** returns the feasibility of a row in the last LP solution
11934  *
11935  * @return the feasibility of a row in the last LP solution: negative value means infeasibility
11936  *
11937  * @pre this method can be called in one of the following stages of the SCIP solving process:
11938  * - \ref SCIP_STAGE_SOLVING
11939  */
11940 extern
11942  SCIP* scip, /**< SCIP data structure */
11943  SCIP_ROW* row /**< LP row */
11944  );
11945 
11946 /** recalculates the activity of a row for the current pseudo solution
11947  *
11948  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11949  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11950  *
11951  * @pre this method can be called in one of the following stages of the SCIP solving process:
11952  * - \ref SCIP_STAGE_SOLVING
11953  */
11954 extern
11956  SCIP* scip, /**< SCIP data structure */
11957  SCIP_ROW* row /**< LP row */
11958  );
11959 
11960 /** returns the activity of a row for the current pseudo solution
11961  *
11962  * @return the activity of a row for the current pseudo solution
11963  *
11964  * @pre this method can be called in one of the following stages of the SCIP solving process:
11965  * - \ref SCIP_STAGE_SOLVING
11966  */
11967 extern
11969  SCIP* scip, /**< SCIP data structure */
11970  SCIP_ROW* row /**< LP row */
11971  );
11972 
11973 /** returns the feasibility of a row for the current pseudo solution: negative value means infeasibility
11974  *
11975  * @return the feasibility of a row for the current pseudo solution: negative value means infeasibility
11976  *
11977  * @pre this method can be called in one of the following stages of the SCIP solving process:
11978  * - \ref SCIP_STAGE_SOLVING
11979  */
11980 extern
11982  SCIP* scip, /**< SCIP data structure */
11983  SCIP_ROW* row /**< LP row */
11984  );
11985 
11986 /** recalculates the activity of a row in the last LP or pseudo solution
11987  *
11988  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
11989  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
11990  *
11991  * @pre this method can be called in one of the following stages of the SCIP solving process:
11992  * - \ref SCIP_STAGE_SOLVING
11993  */
11994 extern
11996  SCIP* scip, /**< SCIP data structure */
11997  SCIP_ROW* row /**< LP row */
11998  );
11999 
12000 /** returns the activity of a row in the last LP or pseudo solution
12001  *
12002  * @return the activity of a row in the last LP or pseudo solution
12003  *
12004  * @pre this method can be called in one of the following stages of the SCIP solving process:
12005  * - \ref SCIP_STAGE_SOLVING
12006  */
12007 extern
12009  SCIP* scip, /**< SCIP data structure */
12010  SCIP_ROW* row /**< LP row */
12011  );
12012 
12013 /** returns the feasibility of a row in the last LP or pseudo solution
12014  *
12015  * @return the feasibility of a row in the last LP or pseudo solution
12016  *
12017  * @pre this method can be called in one of the following stages of the SCIP solving process:
12018  * - \ref SCIP_STAGE_SOLVING
12019  */
12020 extern
12022  SCIP* scip, /**< SCIP data structure */
12023  SCIP_ROW* row /**< LP row */
12024  );
12025 
12026 /** returns the activity of a row for the given primal solution
12027  *
12028  * @return the activitiy of a row for the given primal solution
12029  *
12030  * @pre this method can be called in one of the following stages of the SCIP solving process:
12031  * - \ref SCIP_STAGE_SOLVING
12032  */
12033 extern
12035  SCIP* scip, /**< SCIP data structure */
12036  SCIP_ROW* row, /**< LP row */
12037  SCIP_SOL* sol /**< primal CIP solution */
12038  );
12039 
12040 /** returns the feasibility of a row for the given primal solution
12041  *
12042  * @return the feasibility of a row for the given primal solution
12043  *
12044  * @pre this method can be called in one of the following stages of the SCIP solving process:
12045  * - \ref SCIP_STAGE_SOLVING
12046  */
12047 extern
12049  SCIP* scip, /**< SCIP data structure */
12050  SCIP_ROW* row, /**< LP row */
12051  SCIP_SOL* sol /**< primal CIP solution */
12052  );
12053 
12054 /** output row to file stream via the message handler system
12055  *
12056  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12057  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12058  *
12059  * @pre this method can be called in one of the following stages of the SCIP solving process:
12060  * - \ref SCIP_STAGE_INITSOLVE
12061  * - \ref SCIP_STAGE_SOLVING
12062  * - \ref SCIP_STAGE_SOLVED
12063  * - \ref SCIP_STAGE_EXITSOLVE
12064  */
12065 extern
12067  SCIP* scip, /**< SCIP data structure */
12068  SCIP_ROW* row, /**< LP row */
12069  FILE* file /**< output file (or NULL for standard output) */
12070  );
12071 
12072 /**@} */
12073 
12074 
12075 /*
12076  * NLP methods
12077  */
12078 
12079 /**@name NLP Methods */
12080 /**@{ */
12081 
12082 /** returns whether the NLP relaxation has been enabled
12083  *
12084  * If the NLP relaxation is enabled, then SCIP will construct the NLP relaxation when the solving process is about to begin.
12085  * To check whether an NLP is existing, use SCIPisNLPConstructed().
12086  *
12087  * @pre This method can be called if SCIP is in one of the following stages:
12088  * - \ref SCIP_STAGE_INITPRESOLVE
12089  * - \ref SCIP_STAGE_PRESOLVING
12090  * - \ref SCIP_STAGE_EXITPRESOLVE
12091  * - \ref SCIP_STAGE_PRESOLVED
12092  * - \ref SCIP_STAGE_INITSOLVE
12093  * - \ref SCIP_STAGE_SOLVING
12094  *
12095  * @see SCIPenableNLP
12096  */
12097 extern
12099  SCIP* scip /**< SCIP data structure */
12100  );
12101 
12102 /** marks that there are constraints that are representable by nonlinear rows
12103  *
12104  * This method should be called by a constraint handler if it has constraints that have a representation as nonlinear rows.
12105  *
12106  * The function should be called before the branch-and-bound process is initialized, e.g., when presolve is exiting.
12107  *
12108  * @pre This method can be called if SCIP is in one of the following stages:
12109  * - \ref SCIP_STAGE_INITPRESOLVE
12110  * - \ref SCIP_STAGE_PRESOLVING
12111  * - \ref SCIP_STAGE_EXITPRESOLVE
12112  * - \ref SCIP_STAGE_PRESOLVED
12113  * - \ref SCIP_STAGE_INITSOLVE
12114  * - \ref SCIP_STAGE_SOLVING
12115  */
12116 extern
12117 void SCIPenableNLP(
12118  SCIP* scip /**< SCIP data structure */
12119  );
12120 
12121 /** returns, whether an NLP has been constructed
12122  *
12123  * @pre This method can be called if SCIP is in one of the following stages:
12124  * - \ref SCIP_STAGE_INITSOLVE
12125  * - \ref SCIP_STAGE_SOLVING
12126  */
12127 extern
12129  SCIP* scip /**< SCIP data structure */
12130  );
12131 
12132 /** returns whether the NLP has a continuous variable in a nonlinear term
12133  *
12134  * @pre This method can be called if SCIP is in one of the following stages:
12135  * - \ref SCIP_STAGE_INITSOLVE
12136  * - \ref SCIP_STAGE_SOLVING
12137  */
12138 extern
12140  SCIP* scip /**< SCIP data structure */
12141  );
12142 
12143 /** gets current NLP variables along with the current number of NLP variables
12144  *
12145  * @pre This method can be called if SCIP is in one of the following stages:
12146  * - \ref SCIP_STAGE_INITSOLVE
12147  * - \ref SCIP_STAGE_SOLVING
12148  */
12149 extern
12151  SCIP* scip, /**< SCIP data structure */
12152  SCIP_VAR*** vars, /**< pointer to store the array of NLP variables, or NULL */
12153  int* nvars /**< pointer to store the number of NLP variables, or NULL */
12154  );
12155 
12156 /** gets array with variables of the NLP
12157  *
12158  * @pre This method can be called if SCIP is in one of the following stages:
12159  * - \ref SCIP_STAGE_INITSOLVE
12160  * - \ref SCIP_STAGE_SOLVING
12161  */
12162 extern
12164  SCIP* scip /**< SCIP data structure */
12165  );
12166 
12167 /** gets current number of variables in NLP
12168  *
12169  * @pre This method can be called if SCIP is in one of the following stages:
12170  * - \ref SCIP_STAGE_INITSOLVE
12171  * - \ref SCIP_STAGE_SOLVING
12172  */
12173 extern
12174 int SCIPgetNNLPVars(
12175  SCIP* scip /**< SCIP data structure */
12176  );
12177 
12178 /** computes for each variables the number of NLP rows in which the variable appears in a nonlinear var
12179  *
12180  * @pre This method can be called if SCIP is in one of the following stages:
12181  * - \ref SCIP_STAGE_INITSOLVE
12182  * - \ref SCIP_STAGE_SOLVING
12183  */
12184 extern
12186  SCIP* scip, /**< SCIP data structure */
12187  int* nlcount /**< an array of length at least SCIPnlpGetNVars() to store nonlinearity counts of variables */
12188  );
12189 
12190 /** returns dual solution values associated with lower bounds of NLP variables
12191  *
12192  * @pre This method can be called if SCIP is in one of the following stages:
12193  * - \ref SCIP_STAGE_INITSOLVE
12194  * - \ref SCIP_STAGE_SOLVING
12195  */
12196 extern
12198  SCIP* scip /**< SCIP data structure */
12199  );
12200 
12201 /** returns dual solution values associated with upper bounds of NLP variables
12202  *
12203  * @pre This method can be called if SCIP is in one of the following stages:
12204  * - \ref SCIP_STAGE_INITSOLVE
12205  * - \ref SCIP_STAGE_SOLVING
12206  */
12207 extern
12209  SCIP* scip /**< SCIP data structure */
12210  );
12211 
12212 /** gets current NLP nonlinear rows along with the current number of NLP nonlinear rows
12213  *
12214  * @pre This method can be called if SCIP is in one of the following stages:
12215  * - \ref SCIP_STAGE_INITSOLVE
12216  * - \ref SCIP_STAGE_SOLVING
12217  */
12218 extern
12220  SCIP* scip, /**< SCIP data structure */
12221  SCIP_NLROW*** nlrows, /**< pointer to store the array of NLP nonlinear rows, or NULL */
12222  int* nnlrows /**< pointer to store the number of NLP nonlinear rows, or NULL */
12223  );
12224 
12225 /** gets array with nonlinear rows of the NLP
12226  *
12227  * @pre This method can be called if SCIP is in one of the following stages:
12228  * - \ref SCIP_STAGE_INITSOLVE
12229  * - \ref SCIP_STAGE_SOLVING
12230  */
12231 extern
12233  SCIP* scip /**< SCIP data structure */
12234  );
12235 
12236 /** gets current number of nonlinear rows in NLP
12237  *
12238  * @pre This method can be called if SCIP is in one of the following stages:
12239  * - \ref SCIP_STAGE_INITSOLVE
12240  * - \ref SCIP_STAGE_SOLVING
12241  */
12242 extern
12243 int SCIPgetNNLPNlRows(
12244  SCIP* scip /**< SCIP data structure */
12245  );
12246 
12247 /** adds a nonlinear row to the NLP. This row is captured by the NLP.
12248  *
12249  * @pre This method can be called if SCIP is in one of the following stages:
12250  * - \ref SCIP_STAGE_INITSOLVE
12251  * - \ref SCIP_STAGE_SOLVING
12252  */
12253 extern
12255  SCIP* scip, /**< SCIP data structure */
12256  SCIP_NLROW* nlrow /**< nonlinear row to add to NLP */
12257  );
12258 
12259 /** makes sure that the NLP of the current node is flushed
12260  *
12261  * @pre This method can be called if SCIP is in one of the following stages:
12262  * - \ref SCIP_STAGE_INITSOLVE
12263  * - \ref SCIP_STAGE_SOLVING
12264  */
12265 extern
12267  SCIP* scip /**< SCIP data structure */
12268  );
12269 
12270 /** sets or clears initial primal guess for NLP solution (start point for NLP solver)
12271  *
12272  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12273  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12274  *
12275  * @pre This method can be called if SCIP is in one of the following stages:
12276  * - \ref SCIP_STAGE_INITSOLVE
12277  * - \ref SCIP_STAGE_SOLVING
12278  */
12279 extern
12281  SCIP* scip, /**< SCIP data structure */
12282  SCIP_Real* initialguess /**< values of initial guess (corresponding to variables from SCIPgetNLPVarsData), or NULL to use no start point */
12283  );
12284 
12285 /** sets initial primal guess for NLP solution (start point for NLP solver)
12286  *
12287  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12288  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12289  *
12290  * @pre This method can be called if SCIP is in one of the following stages:
12291  * - \ref SCIP_STAGE_INITSOLVE
12292  * - \ref SCIP_STAGE_SOLVING
12293  */
12294 extern
12296  SCIP* scip, /**< SCIP data structure */
12297  SCIP_SOL* sol /**< solution which values should be taken as initial guess, or NULL for LP solution */
12298  );
12299 
12300 /** solves the current NLP
12301  *
12302  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12303  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12304  *
12305  * @pre This method can be called if SCIP is in one of the following stages:
12306  * - \ref SCIP_STAGE_INITSOLVE
12307  * - \ref SCIP_STAGE_SOLVING
12308  */
12309 extern
12311  SCIP* scip /**< SCIP data structure */
12312  );
12313 
12314 /** gets solution status of current NLP
12315  *
12316  * @pre This method can be called if SCIP is in one of the following stages:
12317  * - \ref SCIP_STAGE_INITSOLVE
12318  * - \ref SCIP_STAGE_SOLVING
12319  */
12320 extern
12322  SCIP* scip /**< SCIP data structure */
12323  );
12324 
12325 /** gets termination status of last NLP solve
12326  *
12327  * @pre This method can be called if SCIP is in one of the following stages:
12328  * - \ref SCIP_STAGE_INITSOLVE
12329  * - \ref SCIP_STAGE_SOLVING
12330  */
12331 extern
12333  SCIP* scip /**< SCIP data structure */
12334  );
12335 
12336 /** gives statistics (number of iterations, solving time, ...) of last NLP solve
12337  *
12338  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12339  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12340  *
12341  * @pre This method can be called if SCIP is in one of the following stages:
12342  * - \ref SCIP_STAGE_INITSOLVE
12343  * - \ref SCIP_STAGE_SOLVING
12344  */
12345 extern
12347  SCIP* scip, /**< SCIP data structure */
12348  SCIP_NLPSTATISTICS* statistics /**< pointer to store statistics */
12349  );
12350 
12351 /** gets objective value of current NLP
12352  *
12353  * @pre This method can be called if SCIP is in one of the following stages:
12354  * - \ref SCIP_STAGE_INITSOLVE
12355  * - \ref SCIP_STAGE_SOLVING
12356  */
12357 extern
12359  SCIP* scip /**< SCIP data structure */
12360  );
12361 
12362 /** indicates whether a feasible solution for the current NLP is available
12363  * thus, returns whether the solution status <= feasible
12364  *
12365  * @pre This method can be called if SCIP is in one of the following stages:
12366  * - \ref SCIP_STAGE_INITSOLVE
12367  * - \ref SCIP_STAGE_SOLVING
12368  */
12369 extern
12371  SCIP* scip /**< SCIP data structure */
12372  );
12373 
12374 /** gets fractional variables of last NLP solution along with solution values and fractionalities
12375  *
12376  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12377  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12378  *
12379  * @pre This method can be called if SCIP is in one of the following stages:
12380  * - \ref SCIP_STAGE_INITSOLVE
12381  * - \ref SCIP_STAGE_SOLVING
12382  */
12383 extern
12385  SCIP* scip, /**< SCIP data structure */
12386  SCIP_VAR*** fracvars, /**< pointer to store the array of NLP fractional variables, or NULL */
12387  SCIP_Real** fracvarssol, /**< pointer to store the array of NLP fractional variables solution values, or NULL */
12388  SCIP_Real** fracvarsfrac, /**< pointer to store the array of NLP fractional variables fractionalities, or NULL */
12389  int* nfracvars, /**< pointer to store the number of NLP fractional variables , or NULL */
12390  int* npriofracvars /**< pointer to store the number of NLP fractional variables with maximal branching priority, or NULL */
12391  );
12392 
12393 /** gets integer parameter of NLP
12394  *
12395  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12396  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12397  *
12398  * @pre This method can be called if SCIP is in one of the following stages:
12399  * - \ref SCIP_STAGE_INITSOLVE
12400  * - \ref SCIP_STAGE_SOLVING
12401  */
12402 extern
12404  SCIP* scip, /**< SCIP data structure */
12405  SCIP_NLPPARAM type, /**< parameter number */
12406  int* ival /**< pointer to store the parameter value */
12407  );
12408 
12409 /** sets integer parameter of NLP
12410  *
12411  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12412  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12413  *
12414  * @pre This method can be called if SCIP is in one of the following stages:
12415  * - \ref SCIP_STAGE_INITSOLVE
12416  * - \ref SCIP_STAGE_SOLVING
12417  */
12418 extern
12420  SCIP* scip, /**< SCIP data structure */
12421  SCIP_NLPPARAM type, /**< parameter number */
12422  int ival /**< parameter value */
12423  );
12424 
12425 /** gets floating point parameter of NLP
12426  *
12427  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12428  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12429  *
12430  * @pre This method can be called if SCIP is in one of the following stages:
12431  * - \ref SCIP_STAGE_INITSOLVE
12432  * - \ref SCIP_STAGE_SOLVING
12433  */
12434 extern
12436  SCIP* scip, /**< SCIP data structure */
12437  SCIP_NLPPARAM type, /**< parameter number */
12438  SCIP_Real* dval /**< pointer to store the parameter value */
12439  );
12440 
12441 /** sets floating point parameter of NLP
12442  *
12443  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12444  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12445  *
12446  * @pre This method can be called if SCIP is in one of the following stages:
12447  * - \ref SCIP_STAGE_INITSOLVE
12448  * - \ref SCIP_STAGE_SOLVING
12449  */
12450 extern
12452  SCIP* scip, /**< SCIP data structure */
12453  SCIP_NLPPARAM type, /**< parameter number */
12454  SCIP_Real dval /**< parameter value */
12455  );
12456 
12457 /** gets string parameter of NLP
12458  *
12459  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12460  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12461  *
12462  * @pre This method can be called if SCIP is in one of the following stages:
12463  * - \ref SCIP_STAGE_INITSOLVE
12464  * - \ref SCIP_STAGE_SOLVING
12465  */
12466 extern
12468  SCIP* scip, /**< SCIP data structure */
12469  SCIP_NLPPARAM type, /**< parameter number */
12470  const char** sval /**< pointer to store the parameter value */
12471  );
12472 
12473 /** sets string parameter of NLP
12474  *
12475  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12476  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12477  *
12478  * @pre This method can be called if SCIP is in one of the following stages:
12479  * - \ref SCIP_STAGE_INITSOLVE
12480  * - \ref SCIP_STAGE_SOLVING
12481  */
12482 extern
12484  SCIP* scip, /**< SCIP data structure */
12485  SCIP_NLPPARAM type, /**< parameter number */
12486  const char* sval /**< parameter value */
12487  );
12488 
12489 /** writes current NLP to a file
12490  *
12491  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12492  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12493  *
12494  * @pre This method can be called if SCIP is in one of the following stages:
12495  * - \ref SCIP_STAGE_INITSOLVE
12496  * - \ref SCIP_STAGE_SOLVING
12497  */
12498 extern
12500  SCIP* scip, /**< SCIP data structure */
12501  const char* filename /**< file name */
12502  );
12503 
12504 /** gets the NLP interface and problem used by the SCIP NLP;
12505  * with the NLPI and its problem you can use all of the methods defined in nlpi/nlpi.h;
12506  *
12507  * @warning You have to make sure, that the full internal state of the NLPI does not change or is recovered completely
12508  * after the end of the method that uses the NLPI. In particular, if you manipulate the NLP or its solution
12509  * (e.g. by calling one of the SCIPnlpiAdd...() or the SCIPnlpiSolve() method), you have to check in advance
12510  * whether the NLP is currently solved. If this is the case, you have to make sure, the internal solution
12511  * status is recovered completely at the end of your method. Additionally you have to resolve the NLP with
12512  * SCIPnlpiSolve() in order to reinstall the internal solution status.
12513  *
12514  * @warning Make also sure, that all parameter values that you have changed are set back to their original values.
12515  *
12516  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12517  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12518  *
12519  * @pre This method can be called if SCIP is in one of the following stages:
12520  * - \ref SCIP_STAGE_INITSOLVE
12521  * - \ref SCIP_STAGE_SOLVING
12522  */
12523 extern
12525  SCIP* scip, /**< SCIP data structure */
12526  SCIP_NLPI** nlpi, /**< pointer to store the NLP solver interface */
12527  SCIP_NLPIPROBLEM** nlpiproblem /**< pointer to store the NLP solver interface problem */
12528  );
12529 
12530 /**@} */
12531 
12532 
12533 /*
12534  * NLP diving methods
12535  */
12536 
12537 /**@name NLP Diving Methods */
12538 /**@{ */
12539 
12540 /** initiates NLP diving
12541  * making methods SCIPchgVarObjDiveNLP(), SCIPchgVarBoundsDiveNLP(), SCIPchgVarsBoundsDiveNLP(), and SCIPsolveDiveNLP() available
12542  *
12543  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12544  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12545  *
12546  * @pre This method can be called if SCIP is in one of the following stages:
12547  * - \ref SCIP_STAGE_INITSOLVE
12548  * - \ref SCIP_STAGE_SOLVING
12549  */
12550 extern
12552  SCIP* scip /**< SCIP data structure */
12553  );
12554 
12555 /** ends NLP diving
12556  * resets changes made by SCIPchgVarObjDiveNLP(), SCIPchgVarBoundsDiveNLP(), and SCIPchgVarsBoundsDiveNLP()
12557  *
12558  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12559  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12560  *
12561  * @pre This method can be called if SCIP is in one of the following stages:
12562  * - \ref SCIP_STAGE_INITSOLVE
12563  * - \ref SCIP_STAGE_SOLVING
12564  */
12565 extern
12567  SCIP* scip /**< SCIP data structure */
12568  );
12569 
12570 /** changes linear objective coefficient of a variable in diving NLP
12571  *
12572  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12573  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12574  *
12575  * @pre This method can be called if SCIP is in one of the following stages:
12576  * - \ref SCIP_STAGE_INITSOLVE
12577  * - \ref SCIP_STAGE_SOLVING
12578  */
12579 extern
12581  SCIP* scip, /**< SCIP data structure */
12582  SCIP_VAR* var, /**< variable which coefficient to change */
12583  SCIP_Real coef /**< new value for coefficient */
12584  );
12585 
12586 /** changes bounds of a variable in diving NLP
12587  *
12588  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12589  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12590  *
12591  * @pre This method can be called if SCIP is in one of the following stages:
12592  * - \ref SCIP_STAGE_INITSOLVE
12593  * - \ref SCIP_STAGE_SOLVING
12594  */
12595 extern
12597  SCIP* scip, /**< SCIP data structure */
12598  SCIP_VAR* var, /**< variable which bounds to change */
12599  SCIP_Real lb, /**< new lower bound */
12600  SCIP_Real ub /**< new upper bound */
12601  );
12602 
12603 /** changes bounds of a set of variables in diving NLP
12604  *
12605  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12606  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12607  *
12608  * @pre This method can be called if SCIP is in one of the following stages:
12609  * - \ref SCIP_STAGE_INITSOLVE
12610  * - \ref SCIP_STAGE_SOLVING
12611  */
12612 extern
12614  SCIP* scip, /**< SCIP data structure */
12615  int nvars, /**< number of variables which bounds to changes */
12616  SCIP_VAR** vars, /**< variables which bounds to change */
12617  SCIP_Real* lbs, /**< new lower bounds */
12618  SCIP_Real* ubs /**< new upper bounds */
12619  );
12620 
12621 /** solves diving NLP
12622  *
12623  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12624  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12625  *
12626  * @pre This method can be called if SCIP is in one of the following stages:
12627  * - \ref SCIP_STAGE_INITSOLVE
12628  * - \ref SCIP_STAGE_SOLVING
12629  */
12630 extern
12632  SCIP* scip /**< SCIP data structure */
12633  );
12634 
12635 /**@} */
12636 
12637 
12638 /*
12639  * NLP nonlinear row methods
12640  */
12641 
12642 /**@name NLP Nonlinear Row Methods */
12643 /**@{ */
12644 
12645 /** creates and captures an NLP row
12646  *
12647  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12648  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12649  *
12650  * @pre This method can be called if SCIP is in one of the following stages:
12651  * - \ref SCIP_STAGE_PRESOLVED
12652  * - \ref SCIP_STAGE_INITSOLVE
12653  * - \ref SCIP_STAGE_SOLVING
12654  */
12655 extern
12657  SCIP* scip, /**< SCIP data structure */
12658  SCIP_NLROW** nlrow, /**< buffer to store pointer to nonlinear row */
12659  const char* name, /**< name of nonlinear row */
12660  SCIP_Real constant, /**< constant */
12661  int nlinvars, /**< number of linear variables */
12662  SCIP_VAR** linvars, /**< linear variables, or NULL if nlinvars == 0 */
12663  SCIP_Real* lincoefs, /**< linear coefficients, or NULL if nlinvars == 0 */
12664  int nquadvars, /**< number of variables in quadratic term */
12665  SCIP_VAR** quadvars, /**< variables in quadratic terms, or NULL if nquadvars == 0 */
12666  int nquadelems, /**< number of elements in quadratic term */
12667  SCIP_QUADELEM* quadelems, /**< elements (i.e., monomials) in quadratic term, or NULL if nquadelems == 0 */
12668  SCIP_EXPRTREE* expression, /**< nonlinear expression, or NULL */
12669  SCIP_Real lhs, /**< left hand side */
12670  SCIP_Real rhs /**< right hand side */
12671  );
12672 
12673 /** creates and captures an NLP nonlinear row without any coefficients
12674  *
12675  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12676  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12677  *
12678  * @pre This method can be called if SCIP is in one of the following stages:
12679  * - \ref SCIP_STAGE_PRESOLVED
12680  * - \ref SCIP_STAGE_INITSOLVE
12681  * - \ref SCIP_STAGE_SOLVING
12682  */
12683 extern
12685  SCIP* scip, /**< SCIP data structure */
12686  SCIP_NLROW** nlrow, /**< pointer to nonlinear row */
12687  const char* name, /**< name of nonlinear row */
12688  SCIP_Real lhs, /**< left hand side */
12689  SCIP_Real rhs /**< right hand side */
12690  );
12691 
12692 /** creates and captures an NLP row from a linear row
12693  *
12694  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12695  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12696  *
12697  * @pre This method can be called if SCIP is in one of the following stages:
12698  * - \ref SCIP_STAGE_PRESOLVED
12699  * - \ref SCIP_STAGE_INITSOLVE
12700  * - \ref SCIP_STAGE_SOLVING
12701  */
12702 extern
12704  SCIP* scip, /**< SCIP data structure */
12705  SCIP_NLROW** nlrow, /**< pointer to nonlinear row */
12706  SCIP_ROW* row /**< the linear row to copy */
12707  );
12708 
12709 /** increases usage counter of NLP nonlinear row
12710  *
12711  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12712  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12713  *
12714  * @pre This method can be called if SCIP is in one of the following stages:
12715  * - \ref SCIP_STAGE_PRESOLVED
12716  * - \ref SCIP_STAGE_INITSOLVE
12717  * - \ref SCIP_STAGE_SOLVING
12718  */
12719 extern
12721  SCIP* scip, /**< SCIP data structure */
12722  SCIP_NLROW* nlrow /**< nonlinear row to capture */
12723  );
12724 
12725 /** decreases usage counter of NLP nonlinear row, and frees memory if necessary
12726  *
12727  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12728  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12729  *
12730  * @pre This method can be called if SCIP is in one of the following stages:
12731  * - \ref SCIP_STAGE_PRESOLVED
12732  * - \ref SCIP_STAGE_INITSOLVE
12733  * - \ref SCIP_STAGE_SOLVING
12734  * - \ref SCIP_STAGE_EXITSOLVE
12735  */
12736 extern
12738  SCIP* scip, /**< SCIP data structure */
12739  SCIP_NLROW** nlrow /**< pointer to nonlinear row */
12740  );
12741 
12742 /** changes left hand side of NLP nonlinear row
12743  *
12744  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12745  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12746  *
12747  * @pre This method can be called if SCIP is in one of the following stages:
12748  * - \ref SCIP_STAGE_PRESOLVED
12749  * - \ref SCIP_STAGE_INITSOLVE
12750  * - \ref SCIP_STAGE_SOLVING
12751  */
12752 extern
12754  SCIP* scip, /**< SCIP data structure */
12755  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
12756  SCIP_Real lhs /**< new left hand side */
12757  );
12758 
12759 /** changes right hand side of NLP nonlinear row
12760  *
12761  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12762  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12763  *
12764  * @pre This method can be called if SCIP is in one of the following stages:
12765  * - \ref SCIP_STAGE_PRESOLVED
12766  * - \ref SCIP_STAGE_INITSOLVE
12767  * - \ref SCIP_STAGE_SOLVING
12768  */
12769 extern
12771  SCIP* scip, /**< SCIP data structure */
12772  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
12773  SCIP_Real rhs /**< new right hand side */
12774  );
12775 
12776 /** changes constant of NLP nonlinear row
12777  *
12778  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12779  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12780  *
12781  * @pre This method can be called if SCIP is in one of the following stages:
12782  * - \ref SCIP_STAGE_PRESOLVED
12783  * - \ref SCIP_STAGE_INITSOLVE
12784  * - \ref SCIP_STAGE_SOLVING
12785  */
12786 extern
12788  SCIP* scip, /**< SCIP data structure */
12789  SCIP_NLROW* nlrow, /**< NLP row */
12790  SCIP_Real constant /**< new value for constant */
12791  );
12792 
12793 /** adds variable with a linear coefficient to the nonlinear row
12794  *
12795  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12796  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12797  *
12798  * @pre This method can be called if SCIP is in one of the following stages:
12799  * - \ref SCIP_STAGE_PRESOLVED
12800  * - \ref SCIP_STAGE_INITSOLVE
12801  * - \ref SCIP_STAGE_SOLVING
12802  */
12803 extern
12805  SCIP* scip, /**< SCIP data structure */
12806  SCIP_NLROW* nlrow, /**< NLP row */
12807  SCIP_VAR* var, /**< problem variable */
12808  SCIP_Real val /**< value of coefficient in linear part of row */
12809  );
12810 
12811 /** adds variables with linear coefficients to the row
12812  *
12813  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12814  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12815  *
12816  * @pre This method can be called if SCIP is in one of the following stages:
12817  * - \ref SCIP_STAGE_PRESOLVED
12818  * - \ref SCIP_STAGE_INITSOLVE
12819  * - \ref SCIP_STAGE_SOLVING
12820  */
12821 extern
12823  SCIP* scip, /**< SCIP data structure */
12824  SCIP_NLROW* nlrow, /**< NLP row */
12825  int nvars, /**< number of variables to add to the row */
12826  SCIP_VAR** vars, /**< problem variables to add */
12827  SCIP_Real* vals /**< values of coefficients in linear part of row */
12828  );
12829 
12830 /** changes linear coefficient of a variables in a row
12831  * setting the coefficient to 0.0 means that it is removed from the row
12832  * the variable does not need to exists before
12833  *
12834  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12835  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12836  *
12837  * @pre This method can be called if SCIP is in one of the following stages:
12838  * - \ref SCIP_STAGE_PRESOLVED
12839  * - \ref SCIP_STAGE_INITSOLVE
12840  * - \ref SCIP_STAGE_SOLVING
12841  */
12842 extern
12844  SCIP* scip, /**< SCIP data structure */
12845  SCIP_NLROW* nlrow, /**< NLP row */
12846  SCIP_VAR* var, /**< variable */
12847  SCIP_Real coef /**< new value of coefficient */
12848  );
12849 
12850 /** adds quadratic variable to the nonlinear row
12851  * after adding a quadratic variable, it can be used to add quadratic elements
12852  *
12853  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12854  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12855  *
12856  * @pre This method can be called if SCIP is in one of the following stages:
12857  * - \ref SCIP_STAGE_PRESOLVED
12858  * - \ref SCIP_STAGE_INITSOLVE
12859  * - \ref SCIP_STAGE_SOLVING
12860  */
12861 extern
12863  SCIP* scip, /**< SCIP data structure */
12864  SCIP_NLROW* nlrow, /**< NLP row */
12865  SCIP_VAR* var /**< problem variable */
12866  );
12867 
12868 /** adds quadratic variables to the nonlinear row
12869  * after adding quadratic variables, they can be used to add quadratic elements
12870  *
12871  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12872  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12873  *
12874  * @pre This method can be called if SCIP is in one of the following stages:
12875  * - \ref SCIP_STAGE_PRESOLVED
12876  * - \ref SCIP_STAGE_INITSOLVE
12877  * - \ref SCIP_STAGE_SOLVING
12878  */
12879 extern
12881  SCIP* scip, /**< SCIP data structure */
12882  SCIP_NLROW* nlrow, /**< NLP row */
12883  int nvars, /**< number of problem variables */
12884  SCIP_VAR** vars /**< problem variables */
12885  );
12886 
12887 /** add a quadratic element to the nonlinear row
12888  * variable indices of the quadratic element need to be relative to quadratic variables array of row
12889  *
12890  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12891  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12892  *
12893  * @pre This method can be called if SCIP is in one of the following stages:
12894  * - \ref SCIP_STAGE_PRESOLVED
12895  * - \ref SCIP_STAGE_INITSOLVE
12896  * - \ref SCIP_STAGE_SOLVING
12897  */
12898 extern
12900  SCIP* scip, /**< SCIP data structure */
12901  SCIP_NLROW* nlrow, /**< NLP row */
12902  SCIP_QUADELEM quadelem /**< quadratic element */
12903  );
12904 
12905 /** adds quadratic elements to the nonlinear row
12906  * variable indices of the quadratic elements need to be relative to quadratic variables array of row
12907  *
12908  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12909  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12910  *
12911  * @pre This method can be called if SCIP is in one of the following stages:
12912  * - \ref SCIP_STAGE_PRESOLVED
12913  * - \ref SCIP_STAGE_INITSOLVE
12914  * - \ref SCIP_STAGE_SOLVING
12915  */
12916 extern
12918  SCIP* scip, /**< SCIP data structure */
12919  SCIP_NLROW* nlrow, /**< NLP row */
12920  int nquadelems, /**< number of quadratic elements */
12921  SCIP_QUADELEM* quadelems /**< quadratic elements */
12922  );
12923 
12924 /** changes coefficient in quadratic part of a row
12925  * setting the coefficient in the quadelement to 0.0 means that it is removed from the row
12926  * the element does not need to exists before
12927  *
12928  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12929  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12930  *
12931  * @pre This method can be called if SCIP is in one of the following stages:
12932  * - \ref SCIP_STAGE_PRESOLVED
12933  * - \ref SCIP_STAGE_INITSOLVE
12934  * - \ref SCIP_STAGE_SOLVING
12935  */
12936 extern
12938  SCIP* scip, /**< SCIP data structure */
12939  SCIP_NLROW* nlrow, /**< NLP row */
12940  SCIP_QUADELEM quadelement /**< new quadratic element, or update for existing one */
12941  );
12942 
12943 /** sets or deletes expression tree in the nonlinear row
12944  *
12945  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12946  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12947  *
12948  * @pre This method can be called if SCIP is in one of the following stages:
12949  * - \ref SCIP_STAGE_PRESOLVED
12950  * - \ref SCIP_STAGE_INITSOLVE
12951  * - \ref SCIP_STAGE_SOLVING
12952  */
12953 extern
12955  SCIP* scip, /**< SCIP data structure */
12956  SCIP_NLROW* nlrow, /**< NLP row */
12957  SCIP_EXPRTREE* exprtree /**< expression tree, or NULL */
12958  );
12959 
12960 /** sets a parameter of expression tree in the nonlinear row
12961  *
12962  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12963  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12964  *
12965  * @pre This method can be called if SCIP is in one of the following stages:
12966  * - \ref SCIP_STAGE_PRESOLVED
12967  * - \ref SCIP_STAGE_INITSOLVE
12968  * - \ref SCIP_STAGE_SOLVING
12969  */
12970 extern
12972  SCIP* scip, /**< SCIP data structure */
12973  SCIP_NLROW* nlrow, /**< NLP row */
12974  int paramidx, /**< index of parameter in expression tree */
12975  SCIP_Real paramval /**< new value of parameter in expression tree */
12976  );
12977 
12978 /** sets parameters of expression tree in the nonlinear row
12979  *
12980  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12981  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12982  *
12983  * @pre This method can be called if SCIP is in one of the following stages:
12984  * - \ref SCIP_STAGE_PRESOLVED
12985  * - \ref SCIP_STAGE_INITSOLVE
12986  * - \ref SCIP_STAGE_SOLVING
12987  */
12988 extern
12990  SCIP* scip, /**< SCIP data structure */
12991  SCIP_NLROW* nlrow, /**< NLP row */
12992  SCIP_Real* paramvals /**< new values of parameter in expression tree */
12993  );
12994 
12995 /** recalculates the activity of a nonlinear row in the last NLP solution
12996  *
12997  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
12998  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
12999  *
13000  * @pre This method can be called if SCIP is in one of the following stages:
13001  * - \ref SCIP_STAGE_PRESOLVED
13002  * - \ref SCIP_STAGE_INITSOLVE
13003  * - \ref SCIP_STAGE_SOLVING
13004  */
13005 extern
13007  SCIP* scip, /**< SCIP data structure */
13008  SCIP_NLROW* nlrow /**< NLP nonlinear row */
13009  );
13010 
13011 /** returns the activity of a nonlinear row in the last NLP solution
13012  *
13013  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13014  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13015  *
13016  * @pre This method can be called if SCIP is in one of the following stages:
13017  * - \ref SCIP_STAGE_INITSOLVE
13018  * - \ref SCIP_STAGE_SOLVING
13019  */
13020 extern
13022  SCIP* scip, /**< SCIP data structure */
13023  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
13024  SCIP_Real* activity /**< pointer to store activity value */
13025  );
13026 
13027 /** gives the feasibility of a nonlinear row in the last NLP solution: negative value means infeasibility
13028  *
13029  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13030  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13031  *
13032  * @pre This method can be called if SCIP is in one of the following stages:
13033  * - \ref SCIP_STAGE_INITSOLVE
13034  * - \ref SCIP_STAGE_SOLVING
13035  */
13036 extern
13038  SCIP* scip, /**< SCIP data structure */
13039  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
13040  SCIP_Real* feasibility /**< pointer to store feasibility value */
13041  );
13042 
13043 /** recalculates the activity of a nonlinear row for the current pseudo solution
13044  *
13045  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13046  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13047  *
13048  * @pre This method can be called if SCIP is in one of the following stages:
13049  * - \ref SCIP_STAGE_INITSOLVE
13050  * - \ref SCIP_STAGE_SOLVING
13051  */
13052 extern
13054  SCIP* scip, /**< SCIP data structure */
13055  SCIP_NLROW* nlrow /**< NLP nonlinear row */
13056  );
13057 
13058 /** gives the activity of a nonlinear row for the current pseudo solution
13059  *
13060  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13061  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13062  *
13063  * @pre This method can be called if SCIP is in one of the following stages:
13064  * - \ref SCIP_STAGE_INITSOLVE
13065  * - \ref SCIP_STAGE_SOLVING
13066  */
13067 extern
13069  SCIP* scip, /**< SCIP data structure */
13070  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
13071  SCIP_Real* pseudoactivity /**< pointer to store pseudo activity value */
13072  );
13073 
13074 /** gives the feasibility of a nonlinear row for the current pseudo solution: negative value means infeasibility
13075  *
13076  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13077  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13078  *
13079  * @pre This method can be called if SCIP is in one of the following stages:
13080  * - \ref SCIP_STAGE_INITSOLVE
13081  * - \ref SCIP_STAGE_SOLVING
13082  */
13083 extern
13085  SCIP* scip, /**< SCIP data structure */
13086  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
13087  SCIP_Real* pseudofeasibility /**< pointer to store pseudo feasibility value */
13088  );
13089 
13090 /** recalculates the activity of a nonlinear row in the last NLP or pseudo solution
13091  *
13092  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13093  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13094  *
13095  * @pre This method can be called if SCIP is in one of the following stages:
13096  * - \ref SCIP_STAGE_INITSOLVE
13097  * - \ref SCIP_STAGE_SOLVING
13098  */
13099 extern
13101  SCIP* scip, /**< SCIP data structure */
13102  SCIP_NLROW* nlrow /**< NLP nonlinear row */
13103  );
13104 
13105 /** gives the activity of a nonlinear row in the last NLP or pseudo solution
13106  *
13107  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13108  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13109  *
13110  * @pre This method can be called if SCIP is in one of the following stages:
13111  * - \ref SCIP_STAGE_INITSOLVE
13112  * - \ref SCIP_STAGE_SOLVING
13113  */
13114 extern
13116  SCIP* scip, /**< SCIP data structure */
13117  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
13118  SCIP_Real* activity /**< pointer to store activity value */
13119  );
13120 
13121 /** gives the feasibility of a nonlinear row in the last NLP or pseudo solution
13122  *
13123  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13124  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13125  *
13126  * @pre This method can be called if SCIP is in one of the following stages:
13127  * - \ref SCIP_STAGE_INITSOLVE
13128  * - \ref SCIP_STAGE_SOLVING
13129  */
13130 extern
13132  SCIP* scip, /**< SCIP data structure */
13133  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
13134  SCIP_Real* feasibility /**< pointer to store feasibility value */
13135  );
13136 
13137 /** gives the activity of a nonlinear row for the given primal solution or NLP solution or pseudo solution
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_NLROW* nlrow, /**< NLP nonlinear row */
13150  SCIP_SOL* sol, /**< primal CIP solution, or NULL for NLP solution of pseudo solution */
13151  SCIP_Real* activity /**< pointer to store activity value */
13152  );
13153 
13154 /** gives the feasibility of a nonlinear row for the given primal solution
13155  *
13156  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13157  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13158  *
13159  * @pre This method can be called if SCIP is in one of the following stages:
13160  * - \ref SCIP_STAGE_INITSOLVE
13161  * - \ref SCIP_STAGE_SOLVING
13162  */
13163 extern
13165  SCIP* scip, /**< SCIP data structure */
13166  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
13167  SCIP_SOL* sol, /**< primal CIP solution */
13168  SCIP_Real* feasibility /**< pointer to store feasibility value */
13169  );
13170 
13171 /** gives the minimal and maximal activity of a nonlinear row w.r.t. the variable's bounds
13172  *
13173  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13174  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13175  *
13176  * @pre This method can be called if SCIP is in one of the following stages:
13177  * - \ref SCIP_STAGE_PRESOLVED
13178  * - \ref SCIP_STAGE_INITSOLVE
13179  * - \ref SCIP_STAGE_SOLVING
13180  */
13181 extern
13183  SCIP* scip, /**< SCIP data structure */
13184  SCIP_NLROW* nlrow, /**< NLP row */
13185  SCIP_Real* minactivity, /**< buffer to store minimal activity, or NULL */
13186  SCIP_Real* maxactivity /**< buffer to store maximal activity, or NULL */
13187  );
13188 
13189 /** output nonlinear row to file stream
13190  *
13191  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13192  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13193  *
13194  * @pre This method can be called if SCIP is in one of the following stages:
13195  * - \ref SCIP_STAGE_PRESOLVED
13196  * - \ref SCIP_STAGE_INITSOLVE
13197  * - \ref SCIP_STAGE_SOLVING
13198  */
13199 extern
13201  SCIP* scip, /**< SCIP data structure */
13202  SCIP_NLROW* nlrow, /**< NLP row */
13203  FILE* file /**< output file (or NULL for standard output) */
13204  );
13205 
13206 /**@} */
13207 
13208 /**@name Expression tree methods */
13209 /**@{ */
13210 
13211 /** replaces array of variables in expression tree by corresponding transformed variables
13212  *
13213  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13214  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13215  *
13216  * @pre This method can be called if @p scip is in one of the following stages:
13217  * - \ref SCIP_STAGE_TRANSFORMING
13218  * - \ref SCIP_STAGE_TRANSFORMED
13219  * - \ref SCIP_STAGE_INITPRESOLVE
13220  * - \ref SCIP_STAGE_PRESOLVING
13221  * - \ref SCIP_STAGE_EXITPRESOLVE
13222  * - \ref SCIP_STAGE_PRESOLVED
13223  * - \ref SCIP_STAGE_INITSOLVE
13224  * - \ref SCIP_STAGE_SOLVING
13225  * - \ref SCIP_STAGE_SOLVED
13226  * - \ref SCIP_STAGE_EXITSOLVE
13227  * - \ref SCIP_STAGE_FREETRANS
13228  *
13229  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
13230  */
13231 extern
13233  SCIP* scip, /**< SCIP data structure */
13234  SCIP_EXPRTREE* tree /**< expression tree */
13235  );
13236 
13237 /** evaluates an expression tree for a primal solution or LP solution
13238  *
13239  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13240  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13241  *
13242  * @pre This method can be called if @p scip is in one of the following stages:
13243  * - \ref SCIP_STAGE_PROBLEM
13244  * - \ref SCIP_STAGE_TRANSFORMING
13245  * - \ref SCIP_STAGE_TRANSFORMED
13246  * - \ref SCIP_STAGE_INITPRESOLVE
13247  * - \ref SCIP_STAGE_PRESOLVING
13248  * - \ref SCIP_STAGE_EXITPRESOLVE
13249  * - \ref SCIP_STAGE_PRESOLVED
13250  * - \ref SCIP_STAGE_INITSOLVE
13251  * - \ref SCIP_STAGE_SOLVING
13252  * - \ref SCIP_STAGE_SOLVED
13253  * - \ref SCIP_STAGE_EXITSOLVE
13254  * - \ref SCIP_STAGE_FREETRANS
13255  *
13256  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
13257  */
13258 extern
13260  SCIP* scip, /**< SCIP data structure */
13261  SCIP_EXPRTREE* tree, /**< expression tree */
13262  SCIP_SOL* sol, /**< a solution, or NULL for current LP solution */
13263  SCIP_Real* val /**< buffer to store value */
13264  );
13265 
13266 /** evaluates an expression tree w.r.t. current global bounds
13267  *
13268  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13269  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13270  *
13271  * @pre This method can be called if @p scip is in one of the following stages:
13272  * - \ref SCIP_STAGE_PROBLEM
13273  * - \ref SCIP_STAGE_TRANSFORMING
13274  * - \ref SCIP_STAGE_TRANSFORMED
13275  * - \ref SCIP_STAGE_INITPRESOLVE
13276  * - \ref SCIP_STAGE_PRESOLVING
13277  * - \ref SCIP_STAGE_EXITPRESOLVE
13278  * - \ref SCIP_STAGE_PRESOLVED
13279  * - \ref SCIP_STAGE_INITSOLVE
13280  * - \ref SCIP_STAGE_SOLVING
13281  * - \ref SCIP_STAGE_SOLVED
13282  * - \ref SCIP_STAGE_EXITSOLVE
13283  * - \ref SCIP_STAGE_FREETRANS
13284  *
13285  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
13286  */
13287 extern
13289  SCIP* scip, /**< SCIP data structure */
13290  SCIP_EXPRTREE* tree, /**< expression tree */
13291  SCIP_Real infinity, /**< value to use for infinity */
13292  SCIP_INTERVAL* val /**< buffer to store result */
13293  );
13294 
13295 /** evaluates an expression tree w.r.t. current local bounds
13296  *
13297  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13298  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13299  *
13300  * @pre This method can be called if @p scip is in one of the following stages:
13301  * - \ref SCIP_STAGE_PROBLEM
13302  * - \ref SCIP_STAGE_TRANSFORMING
13303  * - \ref SCIP_STAGE_TRANSFORMED
13304  * - \ref SCIP_STAGE_INITPRESOLVE
13305  * - \ref SCIP_STAGE_PRESOLVING
13306  * - \ref SCIP_STAGE_EXITPRESOLVE
13307  * - \ref SCIP_STAGE_PRESOLVED
13308  * - \ref SCIP_STAGE_INITSOLVE
13309  * - \ref SCIP_STAGE_SOLVING
13310  * - \ref SCIP_STAGE_SOLVED
13311  * - \ref SCIP_STAGE_EXITSOLVE
13312  * - \ref SCIP_STAGE_FREETRANS
13313  *
13314  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
13315  */
13316 extern
13318  SCIP* scip, /**< SCIP data structure */
13319  SCIP_EXPRTREE* tree, /**< expression tree */
13320  SCIP_Real infinity, /**< value to use for infinity */
13321  SCIP_INTERVAL* val /**< buffer to store result */
13322  );
13323 
13324 /**@} */
13325 
13326 
13327 /*
13328  * cutting plane methods
13329  */
13330 
13331 /**@name Cutting Plane Methods */
13332 /**@{ */
13333 
13334 /** returns efficacy of the cut with respect to the given primal solution or the current LP solution:
13335  * e = -feasibility/norm
13336  *
13337  * @return the efficacy of the cut with respect to the given primal solution or the current LP solution:
13338  * e = -feasibility/norm
13339  *
13340  * @pre This method can be called if @p scip is in one of the following stages:
13341  * - \ref SCIP_STAGE_SOLVING
13342  */
13343 extern
13345  SCIP* scip, /**< SCIP data structure */
13346  SCIP_SOL* sol, /**< primal CIP solution, or NULL for current LP solution */
13347  SCIP_ROW* cut /**< separated cut */
13348  );
13349 
13350 /** returns whether the cut's efficacy with respect to the given primal solution or the current LP solution is greater
13351  * than the minimal cut efficacy
13352  *
13353  * @return TRUE if the cut's efficacy with respect to the given primal solution or the current LP solution is greater
13354  * than the minimal cut efficacy, otherwise FALSE
13355  *
13356  * @pre This method can be called if @p scip is in one of the following stages:
13357  * - \ref SCIP_STAGE_SOLVING
13358  */
13359 extern
13361  SCIP* scip, /**< SCIP data structure */
13362  SCIP_SOL* sol, /**< primal CIP solution, or NULL for current LP solution */
13363  SCIP_ROW* cut /**< separated cut */
13364  );
13365 
13366 /** checks, if the given cut's efficacy is larger than the minimal cut efficacy
13367  *
13368  * @return TRUE if the given cut's efficacy is larger than the minimal cut efficacy, otherwise FALSE
13369  */
13370 extern
13372  SCIP* scip, /**< SCIP data structure */
13373  SCIP_Real efficacy /**< efficacy of the cut */
13374  );
13375 
13376 /** calculates the efficacy norm of the given vector, which depends on the "separating/efficacynorm" parameter
13377  *
13378  * @return the efficacy norm of the given vector, which depends on the "separating/efficacynorm" parameter
13379  */
13380 extern
13382  SCIP* scip, /**< SCIP data structure */
13383  SCIP_Real* vals, /**< array of values */
13384  int nvals /**< number of values */
13385  );
13386 
13387 /** indicates whether a cut is applicable
13388  *
13389  * If the cut has only one variable and this method returns FALSE, it may
13390  * still be possible that the cut can be added to the LP (as a row instead
13391  * of a boundchange), but it will be a very weak cut. The user is asked
13392  * to avoid such cuts.
13393  *
13394  * @pre This method can be called if @p scip is in one of the following stages:
13395  * - \ref SCIP_STAGE_SOLVING
13396  *
13397  * @return whether the cut is modifiable, not a bound change, or a bound change that changes bounds by at least epsilon
13398  */
13399 extern
13401  SCIP* scip, /**< SCIP data structure */
13402  SCIP_ROW* cut /**< separated cut */
13403  );
13404 
13405 /** adds cut to separation storage
13406  *
13407  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13408  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13409  *
13410  * @pre This method can be called if @p scip is in one of the following stages:
13411  * - \ref SCIP_STAGE_SOLVING
13412  */
13413 extern
13415  SCIP* scip, /**< SCIP data structure */
13416  SCIP_SOL* sol, /**< primal solution that was separated, or NULL for LP solution */
13417  SCIP_ROW* cut, /**< separated cut */
13418  SCIP_Bool forcecut, /**< should the cut be forced to enter the LP? */
13419  SCIP_Bool* infeasible /**< pointer to store whether cut has been detected to be infeasible for local bounds */
13420  );
13421 
13422 /** if not already existing, adds row to global cut pool
13423  *
13424  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13425  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13426  *
13427  * @pre This method can be called if @p scip is in one of the following stages:
13428  * - \ref SCIP_STAGE_SOLVING
13429  */
13430 extern
13432  SCIP* scip, /**< SCIP data structure */
13433  SCIP_ROW* row /**< cutting plane to add */
13434  );
13435 
13436 /** removes the row from the global cut pool
13437  *
13438  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13439  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13440  *
13441  * @pre This method can be called if @p scip is in one of the following stages:
13442  * - \ref SCIP_STAGE_SOLVING
13443  */
13444 extern
13446  SCIP* scip, /**< SCIP data structure */
13447  SCIP_ROW* row /**< cutting plane to add */
13448  );
13449 
13450 /** gets current cuts in the global cut pool
13451  *
13452  * @return the current cuts in the global cut pool
13453  *
13454  * @pre This method can be called if @p scip is in one of the following stages:
13455  * - \ref SCIP_STAGE_SOLVING
13456  * - \ref SCIP_STAGE_SOLVED
13457  * - \ref SCIP_STAGE_EXITSOLVE
13458  */
13459 extern
13461  SCIP* scip /**< SCIP data structure */
13462  );
13463 
13464 /** gets current number of rows in the global cut pool
13465  *
13466  * @return the current number of rows in the global cut pool
13467  *
13468  * @pre This method can be called if @p scip is in one of the following stages:
13469  * - \ref SCIP_STAGE_SOLVING
13470  * - \ref SCIP_STAGE_SOLVED
13471  * - \ref SCIP_STAGE_EXITSOLVE
13472  */
13473 extern
13474 int SCIPgetNPoolCuts(
13475  SCIP* scip /**< SCIP data structure */
13476  );
13477 
13478 /** gets the global cut pool used by SCIP
13479  *
13480  * @return the global cut pool used by SCIP
13481  *
13482  * @pre This method can be called if @p scip is in one of the following stages:
13483  * - \ref SCIP_STAGE_SOLVING
13484  * - \ref SCIP_STAGE_SOLVED
13485  * - \ref SCIP_STAGE_EXITSOLVE
13486  */
13487 extern
13489  SCIP* scip /**< SCIP data structure */
13490  );
13491 
13492 /** creates a cut pool
13493  *
13494  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13495  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13496  *
13497  * @pre This method can be called if @p scip is in one of the following stages:
13498  * - \ref SCIP_STAGE_TRANSFORMING
13499  * - \ref SCIP_STAGE_TRANSFORMED
13500  * - \ref SCIP_STAGE_INITPRESOLVE
13501  * - \ref SCIP_STAGE_PRESOLVING
13502  * - \ref SCIP_STAGE_EXITPRESOLVE
13503  * - \ref SCIP_STAGE_PRESOLVED
13504  * - \ref SCIP_STAGE_INITSOLVE
13505  * - \ref SCIP_STAGE_SOLVING
13506  */
13507 extern
13509  SCIP* scip, /**< SCIP data structure */
13510  SCIP_CUTPOOL** cutpool, /**< pointer to store cut pool */
13511  int agelimit /**< maximum age a cut can reach before it is deleted from the pool */
13512  );
13513 
13514 /** frees a cut pool
13515  *
13516  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13517  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13518  *
13519  * @pre This method can be called if @p scip is in one of the following stages:
13520  * - \ref SCIP_STAGE_TRANSFORMING
13521  * - \ref SCIP_STAGE_TRANSFORMED
13522  * - \ref SCIP_STAGE_INITPRESOLVE
13523  * - \ref SCIP_STAGE_PRESOLVING
13524  * - \ref SCIP_STAGE_EXITPRESOLVE
13525  * - \ref SCIP_STAGE_PRESOLVED
13526  * - \ref SCIP_STAGE_INITSOLVE
13527  * - \ref SCIP_STAGE_SOLVING
13528  * - \ref SCIP_STAGE_SOLVED
13529  * - \ref SCIP_STAGE_EXITSOLVE
13530  * - \ref SCIP_STAGE_FREETRANS
13531  */
13532 extern
13534  SCIP* scip, /**< SCIP data structure */
13535  SCIP_CUTPOOL** cutpool /**< pointer to store cut pool */
13536  );
13537 
13538 /** if not already existing, adds row to a cut pool and captures it
13539  *
13540  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13541  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13542  *
13543  * @pre This method can be called if @p scip is in one of the following stages:
13544  * - \ref SCIP_STAGE_INITSOLVE
13545  * - \ref SCIP_STAGE_SOLVING
13546  */
13547 extern
13549  SCIP* scip, /**< SCIP data structure */
13550  SCIP_CUTPOOL* cutpool, /**< cut pool */
13551  SCIP_ROW* row /**< cutting plane to add */
13552  );
13553 
13554 /** adds row to a cut pool and captures it; doesn't check for multiple cuts
13555  *
13556  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13557  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13558  *
13559  * @pre This method can be called if @p scip is in one of the following stages:
13560  * - \ref SCIP_STAGE_INITSOLVE
13561  * - \ref SCIP_STAGE_SOLVING
13562  */
13563 extern
13565  SCIP* scip, /**< SCIP data structure */
13566  SCIP_CUTPOOL* cutpool, /**< cut pool */
13567  SCIP_ROW* row /**< cutting plane to add */
13568  );
13569 
13570 /** removes the LP row from a cut pool
13571  *
13572  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13573  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13574  *
13575  * @pre This method can be called if @p scip is in one of the following stages:
13576  * - \ref SCIP_STAGE_INITSOLVE
13577  * - \ref SCIP_STAGE_SOLVING
13578  * - \ref SCIP_STAGE_SOLVED
13579  */
13580 extern
13582  SCIP* scip, /**< SCIP data structure */
13583  SCIP_CUTPOOL* cutpool, /**< cut pool */
13584  SCIP_ROW* row /**< row to remove */
13585  );
13586 
13587 /** separates cuts from a cut pool
13588  *
13589  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13590  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13591  *
13592  * @pre This method can be called if @p scip is in one of the following stages:
13593  * - \ref SCIP_STAGE_SOLVING
13594  */
13595 extern
13597  SCIP* scip, /**< SCIP data structure */
13598  SCIP_CUTPOOL* cutpool, /**< cut pool */
13599  SCIP_RESULT* result /**< pointer to store the result of the separation call */
13600  );
13601 
13602 /** separates cuts w.r.t. given solution from a cut pool
13603  *
13604  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13605  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13606  *
13607  * @pre This method can be called if @p scip is in one of the following stages:
13608  * - \ref SCIP_STAGE_SOLVING
13609  */
13610 extern
13612  SCIP* scip, /**< SCIP data structure */
13613  SCIP_CUTPOOL* cutpool, /**< cut pool */
13614  SCIP_SOL* sol, /**< solution to be separated */
13615  SCIP_RESULT* result /**< pointer to store the result of the separation call */
13616  );
13617 
13618 /** if not already existing, adds row to the delayed global cut pool
13619  *
13620  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13621  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13622  *
13623  * @pre This method can be called if @p scip is the stages \ref SCIP_STAGE_SOLVING
13624  */
13625 extern
13627  SCIP* scip, /**< SCIP data structure */
13628  SCIP_ROW* row /**< cutting plane to add */
13629  );
13630 
13631 /** removes the row from the delayed global cut pool
13632  *
13633  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13634  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13635  *
13636  * @pre This method can be called if @p scip is the stages \ref SCIP_STAGE_SOLVING
13637  */
13638 extern
13640  SCIP* scip, /**< SCIP data structure */
13641  SCIP_ROW* row /**< cutting plane to add */
13642  );
13643 
13644 /** gets current cuts in the delayed global cut pool
13645  *
13646  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13647  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13648  *
13649  * @pre This method can be called if @p scip is the stages \ref SCIP_STAGE_SOLVING
13650  */
13651 extern
13653  SCIP* scip /**< SCIP data structure */
13654  );
13655 
13656 /** gets current number of rows in the delayed global cut pool
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 @p scip is the stages \ref SCIP_STAGE_SOLVING
13662  */
13663 extern
13665  SCIP* scip /**< SCIP data structure */
13666  );
13667 
13668 /** gets the delayed global cut pool used by SCIP
13669  *
13670  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13671  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13672  *
13673  * @pre This method can be called if @p scip is the stages \ref SCIP_STAGE_SOLVING
13674  */
13675 extern
13677  SCIP* scip /**< SCIP data structure */
13678  );
13679 
13680 /** separates the given primal solution or the current LP solution by calling the separators and constraint handlers'
13681  * separation methods;
13682  * the generated cuts are stored in the separation storage and can be accessed with the methods SCIPgetCuts() and
13683  * SCIPgetNCuts();
13684  * after evaluating the cuts, you have to call SCIPclearCuts() in order to remove the cuts from the
13685  * separation storage;
13686  * it is possible to call SCIPseparateSol() multiple times with different solutions and evaluate the found cuts
13687  * afterwards
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 @p scip is in one of the following stages:
13693  * - \ref SCIP_STAGE_SOLVING
13694  */
13695 extern
13697  SCIP* scip, /**< SCIP data structure */
13698  SCIP_SOL* sol, /**< primal solution that should be separated, or NULL for LP solution */
13699  SCIP_Bool pretendroot, /**< should the cut separators be called as if we are at the root node? */
13700  SCIP_Bool onlydelayed, /**< should only separators be called that were delayed in the previous round? */
13701  SCIP_Bool* delayed, /**< pointer to store whether a separator was delayed */
13702  SCIP_Bool* cutoff /**< pointer to store whether the node can be cut off */
13703  );
13704 
13705 /** gets the array of cuts currently stored in the separation storage
13706  *
13707  * @return the array of cuts currently stored in the separation storage
13708  *
13709  * @pre This method can be called if @p scip is in one of the following stages:
13710  * - \ref SCIP_STAGE_PRESOLVED
13711  * - \ref SCIP_STAGE_SOLVING
13712  * - \ref SCIP_STAGE_SOLVED
13713  */
13714 extern
13716  SCIP* scip /**< SCIP data structure */
13717  );
13718 
13719 /** get current number of cuts in the separation storage
13720  *
13721  * @return the current number of cuts in the separation storage
13722  *
13723  * @pre This method can be called if @p scip is in one of the following stages:
13724  * - \ref SCIP_STAGE_PRESOLVED
13725  * - \ref SCIP_STAGE_SOLVING
13726  * - \ref SCIP_STAGE_SOLVED
13727  */
13728 extern
13729 int SCIPgetNCuts(
13730  SCIP* scip /**< SCIP data structure */
13731  );
13732 
13733 /** clears the separation storage
13734  *
13735  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13736  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13737  *
13738  * @pre This method can be called if @p scip is in one of the following stages:
13739  * - \ref SCIP_STAGE_SOLVING
13740  */
13741 extern
13743  SCIP* scip /**< SCIP data structure */
13744  );
13745 
13746 /** removes cuts that are inefficacious w.r.t. the current LP solution from separation storage without adding the cuts to the LP
13747  *
13748  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13749  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13750  *
13751  * @pre This method can be called if @p scip is in one of the following stages:
13752  * - \ref SCIP_STAGE_SOLVING
13753  */
13754 extern
13756  SCIP* scip /**< SCIP data structure */
13757  );
13758 
13759 /** returns current factor on cut infeasibility to limit feasibility tolerance for relaxation solver
13760  *
13761  * Gives value of separating/feastolfac parameter.
13762  *
13763  * @return factor on cut infeasibility to limit feasibility tolerance for relaxation solver
13764  *
13765  * @pre This method can be called if @p scip is in one of the following stages:
13766  * - \ref SCIP_STAGE_SOLVING
13767  */
13768 extern
13770  SCIP* scip /**< SCIP data structure */
13771  );
13772 
13773 /**@} */
13774 
13775 
13776 
13777 
13778 /*
13779  * LP diving methods
13780  */
13781 
13782 /**@name LP Diving Methods */
13783 /**@{ */
13784 
13785 /** initiates LP diving, making methods SCIPchgVarObjDive(), SCIPchgVarLbDive(), and SCIPchgVarUbDive() available
13786  *
13787  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13788  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13789  *
13790  * @pre This method can be called if @p scip is in one of the following stages:
13791  * - \ref SCIP_STAGE_SOLVING
13792  *
13793  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
13794  *
13795  * @note diving is allowed even if the current LP is not flushed, not solved, or not solved to optimality; be aware
13796  * that solving the (first) diving LP may take longer than expect and that the latter two cases could stem from
13797  * numerical troubles during the last LP solve; because of this, most users will want to call this method only if
13798  * SCIPgetLPSolstat(scip) == SCIP_LPSOLSTAT_OPTIMAL
13799  */
13800 extern
13802  SCIP* scip /**< SCIP data structure */
13803  );
13804 
13805 /** quits LP diving and resets bounds and objective values of columns to the current node's values
13806  *
13807  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13808  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13809  *
13810  * @pre This method can be called if @p scip is in one of the following stages:
13811  * - \ref SCIP_STAGE_SOLVING
13812  *
13813  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
13814  */
13815 extern
13817  SCIP* scip /**< SCIP data structure */
13818  );
13819 
13820 /** changes cutoffbound in current dive
13821  *
13822  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13823  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13824  *
13825  * @pre This method can be called if @p scip is in one of the following stages:
13826  * - \ref SCIP_STAGE_SOLVING
13827  *
13828  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
13829  */
13830 extern
13832  SCIP* scip, /**< SCIP data structure */
13833  SCIP_Real newcutoffbound /**< new cutoffbound */
13834  );
13835 
13836 /** changes variable's objective value in current dive
13837  *
13838  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13839  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13840  *
13841  * @pre This method can be called if @p scip is in one of the following stages:
13842  * - \ref SCIP_STAGE_SOLVING
13843  *
13844  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
13845  */
13846 extern
13848  SCIP* scip, /**< SCIP data structure */
13849  SCIP_VAR* var, /**< variable to change the objective value for */
13850  SCIP_Real newobj /**< new objective value */
13851  );
13852 
13853 /** changes variable's lower bound in current dive
13854  *
13855  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13856  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13857  *
13858  * @pre This method can be called if @p scip is in one of the following stages:
13859  * - \ref SCIP_STAGE_SOLVING
13860  *
13861  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
13862  */
13863 extern
13865  SCIP* scip, /**< SCIP data structure */
13866  SCIP_VAR* var, /**< variable to change the bound for */
13867  SCIP_Real newbound /**< new value for bound */
13868  );
13869 
13870 /** changes variable's upper bound in current dive
13871  *
13872  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13873  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13874  *
13875  * @pre This method can be called if @p scip is in one of the following stages:
13876  * - \ref SCIP_STAGE_SOLVING
13877  *
13878  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
13879  */
13880 extern
13882  SCIP* scip, /**< SCIP data structure */
13883  SCIP_VAR* var, /**< variable to change the bound for */
13884  SCIP_Real newbound /**< new value for bound */
13885  );
13886 
13887 /** adds a row to the LP in current dive
13888  *
13889  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13890  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13891  *
13892  * @pre This method can be called if @p scip is in one of the following stages:
13893  * - \ref SCIP_STAGE_SOLVING
13894  *
13895  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
13896  */
13897 extern
13899  SCIP* scip, /**< SCIP data structure */
13900  SCIP_ROW* row /**< row to be added */
13901  );
13902 
13903 /** changes row lhs in current dive, change will be undone after diving ends, for permanent changes use SCIPchgRowLhs()
13904  *
13905  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13906  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13907  *
13908  * @pre This method can be called if @p scip is in one of the following stages:
13909  * - \ref SCIP_STAGE_SOLVING
13910  *
13911  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
13912  */
13913 extern
13915  SCIP* scip, /**< SCIP data structure */
13916  SCIP_ROW* row, /**< row to change the lhs for */
13917  SCIP_Real newlhs /**< new value for lhs */
13918  );
13919 
13920 /** changes row rhs in current dive, change will be undone after diving ends, for permanent changes use SCIPchgRowRhs()
13921  *
13922  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13923  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13924  *
13925  * @pre This method can be called if @p scip is in one of the following stages:
13926  * - \ref SCIP_STAGE_SOLVING
13927  *
13928  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
13929  */
13930 extern
13932  SCIP* scip, /**< SCIP data structure */
13933  SCIP_ROW* row, /**< row to change the lhs for */
13934  SCIP_Real newrhs /**< new value for rhs */
13935  );
13936 
13937 /** gets variable's objective value in current dive
13938  *
13939  * @return the variable's objective value in current dive.
13940  *
13941  * @pre This method can be called if @p scip is in one of the following stages:
13942  * - \ref SCIP_STAGE_SOLVING
13943  *
13944  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
13945  */
13946 extern
13948  SCIP* scip, /**< SCIP data structure */
13949  SCIP_VAR* var /**< variable to get the bound for */
13950  );
13951 
13952 /** gets variable's lower bound in current dive
13953  *
13954  * @return the variable's lower bound in current dive.
13955  *
13956  * @pre This method can be called if @p scip is in one of the following stages:
13957  * - \ref SCIP_STAGE_SOLVING
13958  *
13959  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
13960  */
13961 extern
13963  SCIP* scip, /**< SCIP data structure */
13964  SCIP_VAR* var /**< variable to get the bound for */
13965  );
13966 
13967 /** gets variable's upper bound in current dive
13968  *
13969  * @return the variable's upper bound in current dive.
13970  *
13971  * @pre This method can be called if @p scip is in one of the following stages:
13972  * - \ref SCIP_STAGE_SOLVING
13973  *
13974  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
13975  */
13976 extern
13978  SCIP* scip, /**< SCIP data structure */
13979  SCIP_VAR* var /**< variable to get the bound for */
13980  );
13981 /** solves the LP of the current dive; no separation or pricing is applied
13982  *
13983  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
13984  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
13985  *
13986  * @pre This method can be called if @p scip is in one of the following stages:
13987  * - \ref SCIP_STAGE_SOLVING
13988  *
13989  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
13990  *
13991  * @note be aware that the LP solve may take longer than expected if SCIPgetLPSolstat(scip) != SCIP_LPSOLSTAT_OPTIMAL,
13992  * compare the explanation of SCIPstartDive()
13993  */
13994 extern
13996  SCIP* scip, /**< SCIP data structure */
13997  int itlim, /**< maximal number of LP iterations to perform, or -1 for no limit */
13998  SCIP_Bool* lperror, /**< pointer to store whether an unresolved LP error occurred */
13999  SCIP_Bool* cutoff /**< pointer to store whether the diving LP was infeasible or the objective
14000  * limit was reached (or NULL, if not needed) */
14001  );
14002 
14003 /** returns the number of the node in the current branch and bound run, where the last LP was solved in diving
14004  * or probing mode
14005  *
14006  * @return the number of the node in the current branch and bound run, where the last LP was solved in diving
14007  * or probing mode.
14008  *
14009  * @pre This method can be called if @p scip is in one of the following stages:
14010  * - \ref SCIP_STAGE_TRANSFORMING
14011  * - \ref SCIP_STAGE_TRANSFORMED
14012  * - \ref SCIP_STAGE_INITPRESOLVE
14013  * - \ref SCIP_STAGE_PRESOLVING
14014  * - \ref SCIP_STAGE_EXITPRESOLVE
14015  * - \ref SCIP_STAGE_PRESOLVED
14016  * - \ref SCIP_STAGE_INITSOLVE
14017  * - \ref SCIP_STAGE_SOLVING
14018  * - \ref SCIP_STAGE_SOLVED
14019  * - \ref SCIP_STAGE_EXITSOLVE
14020  * - \ref SCIP_STAGE_FREETRANS
14021  *
14022  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14023  */
14024 extern
14026  SCIP* scip /**< SCIP data structure */
14027  );
14028 
14029 /** returns whether we are in diving mode
14030  *
14031  * @return whether we are in diving mode.
14032  *
14033  * @pre This method can be called if @p scip is in one of the following stages:
14034  * - \ref SCIP_STAGE_TRANSFORMING
14035  * - \ref SCIP_STAGE_TRANSFORMED
14036  * - \ref SCIP_STAGE_INITPRESOLVE
14037  * - \ref SCIP_STAGE_PRESOLVING
14038  * - \ref SCIP_STAGE_EXITPRESOLVE
14039  * - \ref SCIP_STAGE_PRESOLVED
14040  * - \ref SCIP_STAGE_INITSOLVE
14041  * - \ref SCIP_STAGE_SOLVING
14042  * - \ref SCIP_STAGE_SOLVED
14043  * - \ref SCIP_STAGE_EXITSOLVE
14044  * - \ref SCIP_STAGE_FREETRANS
14045  *
14046  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14047  */
14048 extern
14050  SCIP* scip /**< SCIP data structure */
14051  );
14052 
14053 /**@} */
14054 
14055 
14056 
14057 
14058 /*
14059  * probing methods
14060  */
14061 
14062 /**@name Probing Methods */
14063 /**@{ */
14064 
14065 /** returns whether we are in probing mode; probing mode is activated via SCIPstartProbing() and stopped
14066  * via SCIPendProbing()
14067  *
14068  * @return TRUE, if SCIP is currently in probing mode, otherwise FALSE
14069  *
14070  * @pre This method can be called if @p scip is in one of the following stages:
14071  * - \ref SCIP_STAGE_TRANSFORMED
14072  * - \ref SCIP_STAGE_INITPRESOLVE
14073  * - \ref SCIP_STAGE_PRESOLVING
14074  * - \ref SCIP_STAGE_EXITPRESOLVE
14075  * - \ref SCIP_STAGE_PRESOLVED
14076  * - \ref SCIP_STAGE_INITSOLVE
14077  * - \ref SCIP_STAGE_SOLVING
14078  * - \ref SCIP_STAGE_SOLVED
14079  * - \ref SCIP_STAGE_EXITSOLVE
14080  */
14081 extern
14083  SCIP* scip /**< SCIP data structure */
14084  );
14085 
14086 /** initiates probing, making methods SCIPnewProbingNode(), SCIPbacktrackProbing(), SCIPchgVarLbProbing(),
14087  * SCIPchgVarUbProbing(), SCIPfixVarProbing(), SCIPpropagateProbing(), and SCIPsolveProbingLP() available
14088  *
14089  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14090  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14091  *
14092  * @pre This method can be called if @p scip is in one of the following stages:
14093  * - \ref SCIP_STAGE_PRESOLVING
14094  * - \ref SCIP_STAGE_SOLVING
14095  *
14096  * @note The collection of variable statistics is turned off during probing. If these statistics should be collected
14097  * during probing use the method SCIPenableVarHistory() to turn the collection explicitly on.
14098  */
14099 extern
14101  SCIP* scip /**< SCIP data structure */
14102  );
14103 
14104 /** creates a new probing sub node, whose changes can be undone by backtracking to a higher node in the probing path
14105  * with a call to SCIPbacktrackProbing();
14106  * using a sub node for each set of probing bound changes can improve conflict analysis
14107  *
14108  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14109  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14110  *
14111  * @pre This method can be called if @p scip is in one of the following stages:
14112  * - \ref SCIP_STAGE_PRESOLVING
14113  * - \ref SCIP_STAGE_SOLVING
14114  */
14115 extern
14117  SCIP* scip /**< SCIP data structure */
14118  );
14119 
14120 /** returns the current probing depth
14121  *
14122  * @return the probing depth, i.e. the number of probing sub nodes existing in the probing path
14123  *
14124  * @pre This method can be called if @p scip is in one of the following stages:
14125  * - \ref SCIP_STAGE_PRESOLVING
14126  * - \ref SCIP_STAGE_SOLVING
14127  */
14128 extern
14130  SCIP* scip /**< SCIP data structure */
14131  );
14132 
14133 /** undoes all changes to the problem applied in probing up to the given probing depth;
14134  * the changes of the probing node of the given probing depth are the last ones that remain active;
14135  * changes that were applied before calling SCIPnewProbingNode() cannot be undone
14136  *
14137  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14138  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14139  *
14140  * @pre This method can be called if @p scip is in one of the following stages:
14141  * - \ref SCIP_STAGE_PRESOLVING
14142  * - \ref SCIP_STAGE_SOLVING
14143  */
14144 extern
14146  SCIP* scip, /**< SCIP data structure */
14147  int probingdepth /**< probing depth of the node in the probing path that should be reactivated */
14148  );
14149 
14150 /** quits probing and resets bounds and constraints to the focus node's environment
14151  *
14152  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14153  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14154  *
14155  * @pre This method can be called if @p scip is in one of the following stages:
14156  * - \ref SCIP_STAGE_PRESOLVING
14157  * - \ref SCIP_STAGE_SOLVING
14158  */
14159 extern
14161  SCIP* scip /**< SCIP data structure */
14162  );
14163 
14164 /** injects a change of variable's lower bound into current probing node; the same can also be achieved with a call to
14165  * SCIPchgVarLb(), but in this case, the bound change would be treated like a deduction instead of a branching decision
14166  *
14167  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14168  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14169  *
14170  * @pre This method can be called if @p scip is in one of the following stages:
14171  * - \ref SCIP_STAGE_PRESOLVING
14172  * - \ref SCIP_STAGE_SOLVING
14173  */
14174 extern
14176  SCIP* scip, /**< SCIP data structure */
14177  SCIP_VAR* var, /**< variable to change the bound for */
14178  SCIP_Real newbound /**< new value for bound */
14179  );
14180 
14181 /** injects a change of variable's upper bound into current probing node; the same can also be achieved with a call to
14182  * SCIPchgVarUb(), but in this case, the bound change would be treated like a deduction instead of a branching decision
14183  *
14184  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14185  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14186  *
14187  * @pre This method can be called if @p scip is in one of the following stages:
14188  * - \ref SCIP_STAGE_PRESOLVING
14189  * - \ref SCIP_STAGE_SOLVING
14190  */
14191 extern
14193  SCIP* scip, /**< SCIP data structure */
14194  SCIP_VAR* var, /**< variable to change the bound for */
14195  SCIP_Real newbound /**< new value for bound */
14196  );
14197 
14198 /** injects a change of variable's bounds into current probing node to fix the variable to the specified value;
14199  * the same can also be achieved with a call to SCIPfixVar(), but in this case, the bound changes would be treated
14200  * like deductions instead of branching decisions
14201  *
14202  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14203  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14204  *
14205  * @pre This method can be called if @p scip is in one of the following stages:
14206  * - \ref SCIP_STAGE_PRESOLVING
14207  * - \ref SCIP_STAGE_SOLVING
14208  */
14209 extern
14211  SCIP* scip, /**< SCIP data structure */
14212  SCIP_VAR* var, /**< variable to change the bound for */
14213  SCIP_Real fixedval /**< value to fix variable to */
14214  );
14215 
14216 /** applies domain propagation on the probing sub problem, that was changed after SCIPstartProbing() was called;
14217  * the propagated domains of the variables can be accessed with the usual bound accessing calls SCIPvarGetLbLocal()
14218  * and SCIPvarGetUbLocal(); the propagation is only valid locally, i.e. the local bounds as well as the changed
14219  * bounds due to SCIPchgVarLbProbing(), SCIPchgVarUbProbing(), and SCIPfixVarProbing() are used for propagation
14220  *
14221  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14222  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14223  *
14224  * @pre This method can be called if @p scip is in one of the following stages:
14225  * - \ref SCIP_STAGE_PRESOLVING
14226  * - \ref SCIP_STAGE_SOLVING
14227  */
14228 extern
14230  SCIP* scip, /**< SCIP data structure */
14231  int maxproprounds, /**< maximal number of propagation rounds (-1: no limit, 0: parameter settings) */
14232  SCIP_Bool* cutoff, /**< pointer to store whether the probing node can be cut off */
14233  SCIP_Longint* ndomredsfound /**< pointer to store the number of domain reductions found, or NULL */
14234  );
14235 
14236 /** applies domain propagation on the probing sub problem, that was changed after SCIPstartProbing() was called;
14237  * only propagations of the binary variables fixed at the current probing node that are triggered by the implication
14238  * graph and the clique table are applied;
14239  * the propagated domains of the variables can be accessed with the usual bound accessing calls SCIPvarGetLbLocal()
14240  * and SCIPvarGetUbLocal(); the propagation is only valid locally, i.e. the local bounds as well as the changed
14241  * bounds due to SCIPchgVarLbProbing(), SCIPchgVarUbProbing(), and SCIPfixVarProbing() are used for propagation
14242  *
14243  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14244  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14245  *
14246  * @pre This method can be called if @p scip is in one of the following stages:
14247  * - \ref SCIP_STAGE_PRESOLVING
14248  * - \ref SCIP_STAGE_SOLVING
14249  */
14250 extern
14252  SCIP* scip, /**< SCIP data structure */
14253  SCIP_Bool* cutoff /**< pointer to store whether the probing node can be cut off */
14254  );
14255 
14256 /** solves the LP at the current probing node (cannot be applied at preprocessing stage);
14257  * no separation or pricing is applied
14258  *
14259  * The LP has to be constructed before (you can use SCIPisLPConstructed() or SCIPconstructLP()).
14260  *
14261  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14262  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14263  *
14264  * @pre This method can be called if @p scip is in one of the following stages:
14265  * - \ref SCIP_STAGE_SOLVING
14266  */
14267 extern
14269  SCIP* scip, /**< SCIP data structure */
14270  int itlim, /**< maximal number of LP iterations to perform, or -1 for no limit */
14271  SCIP_Bool* lperror, /**< pointer to store whether an unresolved LP error occurred */
14272  SCIP_Bool* cutoff /**< pointer to store whether the probing LP was infeasible or the objective
14273  * limit was reached (or NULL, if not needed) */
14274  );
14275 
14276 /** solves the LP at the current probing node (cannot be applied at preprocessing stage) and applies pricing
14277  * until the LP is solved to optimality; no separation is applied
14278  *
14279  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed . See \ref
14280  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14281  *
14282  * @pre This method can be called if @p scip is in one of the following stages:
14283  * - \ref SCIP_STAGE_SOLVING
14284  */
14285 extern
14287  SCIP* scip, /**< SCIP data structure */
14288  SCIP_Bool pretendroot, /**< should the pricers be called as if we are at the root node? */
14289  SCIP_Bool displayinfo, /**< should info lines be displayed after each pricing round? */
14290  int maxpricerounds, /**< maximal number of pricing rounds (-1: no limit);
14291  * a finite limit means that the LP might not be solved to optimality! */
14292  SCIP_Bool* lperror, /**< pointer to store whether an unresolved LP error occurred */
14293  SCIP_Bool* cutoff /**< pointer to store whether the probing LP was infeasible or the objective
14294  * limit was reached (or NULL, if not needed) */
14295 
14296  );
14297 
14298 /**@} */
14299 
14300 
14301 
14302 
14303 /*
14304  * branching methods
14305  */
14306 
14307 /**@name Branching Methods */
14308 /**@{ */
14309 
14310 /** gets branching candidates for LP solution branching (fractional variables) along with solution values,
14311  * fractionalities, and number of branching candidates; The number of branching candidates does NOT
14312  * account for fractional implicit integer variables which should not be used for branching decisions.
14313  *
14314  * Fractional implicit integer variables are stored at the positions *nlpcands to *nlpcands + *nfracimplvars - 1
14315  *
14316  * branching rules should always select the branching candidate among the first npriolpcands of the candidate
14317  * list
14318  *
14319  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14320  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14321  *
14322  * @pre This method can be called if @p scip is in one of the following stages:
14323  * - \ref SCIP_STAGE_SOLVING
14324  *
14325  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14326  */
14327 extern
14329  SCIP* scip, /**< SCIP data structure */
14330  SCIP_VAR*** lpcands, /**< pointer to store the array of LP branching candidates, or NULL */
14331  SCIP_Real** lpcandssol, /**< pointer to store the array of LP candidate solution values, or NULL */
14332  SCIP_Real** lpcandsfrac, /**< pointer to store the array of LP candidate fractionalities, or NULL */
14333  int* nlpcands, /**< pointer to store the number of LP branching candidates, or NULL */
14334  int* npriolpcands, /**< pointer to store the number of candidates with maximal priority, or NULL */
14335  int* nfracimplvars /**< pointer to store the number of fractional implicit integer variables, or NULL */
14336  );
14337 
14338 /** gets number of branching candidates for LP solution branching (number of fractional variables)
14339  *
14340  * @return the number of branching candidates for LP solution branching (number of fractional variables).
14341  *
14342  * @pre This method can be called if @p scip is in one of the following stages:
14343  * - \ref SCIP_STAGE_SOLVING
14344  *
14345  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14346  */
14347 extern
14349  SCIP* scip /**< SCIP data structure */
14350  );
14351 
14352 /** gets number of branching candidates with maximal priority for LP solution branching
14353  *
14354  * @return the number of branching candidates with maximal priority for LP solution branching.
14355  *
14356  * @pre This method can be called if @p scip is in one of the following stages:
14357  * - \ref SCIP_STAGE_SOLVING
14358  *
14359  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14360  */
14361 extern
14363  SCIP* scip /**< SCIP data structure */
14364  );
14365 
14366 /** gets external branching candidates along with solution values, scores, and number of branching candidates;
14367  * these branching candidates can be used by relaxations or nonlinear constraint handlers
14368  * branching rules should always select the branching candidate among the first nprioexterncands of the candidate
14369  * list
14370  *
14371  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14372  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14373  *
14374  * @pre This method can be called if @p scip is in one of the following stages:
14375  * - \ref SCIP_STAGE_SOLVING
14376  *
14377  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14378  *
14379  * @note Candidate variables with maximal priority are ordered: binaries first, then integers, implicit integers and
14380  * continuous last.
14381  */
14382 extern
14384  SCIP* scip, /**< SCIP data structure */
14385  SCIP_VAR*** externcands, /**< pointer to store the array of extern branching candidates, or NULL */
14386  SCIP_Real** externcandssol, /**< pointer to store the array of extern candidate solution values, or NULL */
14387  SCIP_Real** externcandsscore, /**< pointer to store the array of extern candidate scores, or NULL */
14388  int* nexterncands, /**< pointer to store the number of extern branching candidates, or NULL */
14389  int* nprioexterncands, /**< pointer to store the number of candidates with maximal priority, or NULL */
14390  int* nprioexternbins, /**< pointer to store the number of binary candidates with maximal priority, or NULL */
14391  int* nprioexternints, /**< pointer to store the number of integer candidates with maximal priority, or NULL */
14392  int* nprioexternimpls /**< pointer to store the number of implicit integer candidates with maximal priority,
14393  * or NULL */
14394  );
14395 
14396 /** gets number of external branching candidates
14397  *
14398  * @return the number of external branching candidates.
14399  *
14400  * @pre This method can be called if @p scip is in one of the following stages:
14401  * - \ref SCIP_STAGE_SOLVING
14402  *
14403  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14404  */
14405 extern
14407  SCIP* scip /**< SCIP data structure */
14408  );
14409 
14410 /** gets number of external branching candidates with maximal branch priority
14411  *
14412  * @return the number of external branching candidates with maximal branch priority.
14413  *
14414  * @pre This method can be called if @p scip is in one of the following stages:
14415  * - \ref SCIP_STAGE_SOLVING
14416  *
14417  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14418  */
14419 extern
14421  SCIP* scip /**< SCIP data structure */
14422  );
14423 
14424 /** gets number of binary external branching candidates with maximal branch priority
14425  *
14426  * @return the number of binary external branching candidates with maximal branch priority.
14427  *
14428  * @pre This method can be called if @p scip is in one of the following stages:
14429  * - \ref SCIP_STAGE_SOLVING
14430  *
14431  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14432  */
14433 extern
14435  SCIP* scip /**< SCIP data structure */
14436  );
14437 
14438 /** gets number of integer external branching candidates with maximal branch priority
14439  *
14440  * @return the number of integer external branching candidates with maximal branch priority.
14441  *
14442  * @pre This method can be called if @p scip is in one of the following stages:
14443  * - \ref SCIP_STAGE_SOLVING
14444  *
14445  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14446  */
14447 extern
14449  SCIP* scip /**< SCIP data structure */
14450  );
14451 
14452 /** gets number of implicit integer external branching candidates with maximal branch priority
14453  *
14454  * @return the number of implicit integer external branching candidates with maximal branch priority.
14455  *
14456  * @pre This method can be called if @p scip is in one of the following stages:
14457  * - \ref SCIP_STAGE_SOLVING
14458  *
14459  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14460  */
14461 extern
14463  SCIP* scip /**< SCIP data structure */
14464  );
14465 
14466 /** gets number of continuous external branching candidates with maximal branch priority
14467  *
14468  * @return the number of continuous external branching candidates with maximal branch priority.
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  );
14479 
14480 /** insert variable, its score and its solution value into the external branching candidate storage
14481  * the relative difference of the current lower and upper bounds of a continuous variable must be at least epsilon
14482  *
14483  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14484  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14485  *
14486  * @pre This method can be called if @p scip is in one of the following stages:
14487  * - \ref SCIP_STAGE_SOLVING
14488  *
14489  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14490  */
14491 extern
14493  SCIP* scip, /**< SCIP data structure */
14494  SCIP_VAR* var, /**< variable to insert */
14495  SCIP_Real score, /**< score of external candidate, e.g. infeasibility */
14496  SCIP_Real solval /**< value of the variable in the current solution */
14497  );
14498 
14499 /** removes all external candidates from the storage for external branching
14500  *
14501  * @pre This method can be called if @p scip is in one of the following stages:
14502  * - \ref SCIP_STAGE_SOLVING
14503  *
14504  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14505  */
14506 extern
14508  SCIP* scip /**< SCIP data structure */
14509  );
14510 
14511 /** checks whether the given variable is contained in the candidate storage for external branching
14512  *
14513  * @return whether the given variable is contained in the candidate storage for external branching.
14514  *
14515  * @pre This method can be called if @p scip is in one of the following stages:
14516  * - \ref SCIP_STAGE_SOLVING
14517  *
14518  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14519  */
14520 extern
14522  SCIP* scip, /**< SCIP data structure */
14523  SCIP_VAR* var /**< variable to look for */
14524  );
14525 
14526 /** gets branching candidates for pseudo solution branching (non-fixed variables) along with the number of candidates
14527  *
14528  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14529  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14530  *
14531  * @pre This method can be called if @p scip is in one of the following stages:
14532  * - \ref SCIP_STAGE_PRESOLVING
14533  * - \ref SCIP_STAGE_SOLVING
14534  *
14535  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14536  */
14537 extern
14539  SCIP* scip, /**< SCIP data structure */
14540  SCIP_VAR*** pseudocands, /**< pointer to store the array of pseudo branching candidates, or NULL */
14541  int* npseudocands, /**< pointer to store the number of pseudo branching candidates, or NULL */
14542  int* npriopseudocands /**< pointer to store the number of candidates with maximal priority, or NULL */
14543  );
14544 
14545 /** gets number of branching candidates for pseudo solution branching (non-fixed variables)
14546  *
14547  * @return the number branching candidates for pseudo solution branching (non-fixed variables).
14548  *
14549  * @pre This method can be called if @p scip is in one of the following stages:
14550  * - \ref SCIP_STAGE_PRESOLVING
14551  * - \ref SCIP_STAGE_SOLVING
14552  *
14553  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14554  */
14555 extern
14557  SCIP* scip /**< SCIP data structure */
14558  );
14559 
14560 /** gets number of branching candidates with maximal branch priority for pseudo solution branching
14561  *
14562  * @return the number of branching candidates with maximal branch priority for pseudo solution branching.
14563  *
14564  * @pre This method can be called if @p scip is in one of the following stages:
14565  * - \ref SCIP_STAGE_PRESOLVING
14566  * - \ref SCIP_STAGE_SOLVING
14567  *
14568  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14569  */
14570 extern
14572  SCIP* scip /**< SCIP data structure */
14573  );
14574 
14575 /** gets number of binary branching candidates with maximal branch priority for pseudo solution branching
14576  *
14577  * @return the number of binary branching candidates with maximal branch priority for pseudo solution branching.
14578  *
14579  * @pre This method can be called if @p scip is in one of the following stages:
14580  * - \ref SCIP_STAGE_SOLVING
14581  *
14582  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14583  */
14584 extern
14586  SCIP* scip /**< SCIP data structure */
14587  );
14588 
14589 /** gets number of integer branching candidates with maximal branch priority for pseudo solution branching
14590  *
14591  * @return the number of integer branching candidates with maximal branch priority for pseudo solution branching.
14592  *
14593  * @pre This method can be called if @p scip is in one of the following stages:
14594  * - \ref SCIP_STAGE_SOLVING
14595  *
14596  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14597  */
14598 extern
14600  SCIP* scip /**< SCIP data structure */
14601  );
14602 
14603 /** gets number of implicit integer branching candidates with maximal branch priority for pseudo solution branching
14604  *
14605  * @return the number of implicit integer branching candidates with maximal branch priority for pseudo solution branching.
14606  *
14607  * @pre This method can be called if @p scip is in one of the following stages:
14608  * - \ref SCIP_STAGE_SOLVING
14609  *
14610  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14611  */
14612 extern
14614  SCIP* scip /**< SCIP data structure */
14615  );
14616 
14617 /** calculates the branching score out of the gain predictions for a binary branching
14618  *
14619  * @return the branching score out of the gain predictions for a binary branching.
14620  *
14621  * @pre This method can be called if @p scip is in one of the following stages:
14622  * - \ref SCIP_STAGE_SOLVING
14623  *
14624  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14625  */
14626 extern
14628  SCIP* scip, /**< SCIP data structure */
14629  SCIP_VAR* var, /**< variable, of which the branching factor should be applied, or NULL */
14630  SCIP_Real downgain, /**< prediction of objective gain for rounding downwards */
14631  SCIP_Real upgain /**< prediction of objective gain for rounding upwards */
14632  );
14633 
14634 /** calculates the branching score out of the gain predictions for a branching with arbitrary many children
14635  *
14636  * @return the branching score out of the gain predictions for a branching with arbitrary many children.
14637  *
14638  * @pre This method can be called if @p scip is in one of the following stages:
14639  * - \ref SCIP_STAGE_SOLVING
14640  *
14641  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14642  */
14643 extern
14645  SCIP* scip, /**< SCIP data structure */
14646  SCIP_VAR* var, /**< variable, of which the branching factor should be applied, or NULL */
14647  int nchildren, /**< number of children that the branching will create */
14648  SCIP_Real* gains /**< prediction of objective gain for each child */
14649  );
14650 
14651 /** computes a branching point for a continuous or discrete variable
14652  * @see SCIPbranchGetBranchingPoint
14653  *
14654  * @return the branching point for a continuous or discrete variable.
14655  *
14656  * @pre This method can be called if @p scip is in one of the following stages:
14657  * - \ref SCIP_STAGE_SOLVING
14658  *
14659  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14660  */
14661 extern
14663  SCIP* scip, /**< SCIP data structure */
14664  SCIP_VAR* var, /**< variable, of which the branching point should be computed */
14665  SCIP_Real suggestion /**< suggestion for branching point, or SCIP_INVALID if no suggestion */
14666  );
14667 
14668 /** calculates the node selection priority for moving the given variable's LP value to the given target value;
14669  * this node selection priority can be given to the SCIPcreateChild() call
14670  *
14671  * @return the node selection priority for moving the given variable's LP value to the given target value.
14672  *
14673  * @pre This method can be called if @p scip is in one of the following stages:
14674  * - \ref SCIP_STAGE_SOLVING
14675  *
14676  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14677  */
14678 extern
14680  SCIP* scip, /**< SCIP data structure */
14681  SCIP_VAR* var, /**< variable on which the branching is applied */
14682  SCIP_BRANCHDIR branchdir, /**< type of branching that was performed: upwards, downwards, or fixed;
14683  * fixed should only be used, when both bounds changed
14684  */
14685  SCIP_Real targetvalue /**< new value of the variable in the child node */
14686  );
14687 
14688 /** calculates an estimate for the objective of the best feasible solution contained in the subtree after applying the given
14689  * branching; this estimate can be given to the SCIPcreateChild() call
14690  *
14691  * @return the estimate for the objective of the best feasible solution contained in the subtree after applying the given
14692  * branching.
14693  *
14694  * @pre This method can be called if @p scip is in one of the following stages:
14695  * - \ref SCIP_STAGE_SOLVING
14696  *
14697  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14698  */
14699 extern
14701  SCIP* scip, /**< SCIP data structure */
14702  SCIP_VAR* var, /**< variable on which the branching is applied */
14703  SCIP_Real targetvalue /**< new value of the variable in the child node */
14704  );
14705 
14706 /** creates a child node of the focus node
14707  *
14708  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14709  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14710  *
14711  * @pre This method can be called if @p scip is in one of the following stages:
14712  * - \ref SCIP_STAGE_SOLVING
14713  *
14714  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14715  */
14716 extern
14718  SCIP* scip, /**< SCIP data structure */
14719  SCIP_NODE** node, /**< pointer to node data structure */
14720  SCIP_Real nodeselprio, /**< node selection priority of new node */
14721  SCIP_Real estimate /**< estimate for (transformed) objective value of best feasible solution in subtree */
14722  );
14723 
14724 /** branches on a non-continuous variable v using the current LP or pseudo solution;
14725  * if solution value x' is fractional, two child nodes will be created
14726  * (x <= floor(x'), x >= ceil(x')),
14727  * if solution value is integral, the x' is equal to lower or upper bound of the branching
14728  * variable and the bounds of v are finite, then two child nodes will be created
14729  * (x <= x'', x >= x''+1 with x'' = floor((lb + ub)/2)),
14730  * otherwise (up to) three child nodes will be created
14731  * (x <= x'-1, x == x', x >= x'+1)
14732  *
14733  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14734  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14735  *
14736  * @pre This method can be called if @p scip is in one of the following stages:
14737  * - \ref SCIP_STAGE_SOLVING
14738  *
14739  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14740  */
14741 extern
14743  SCIP* scip, /**< SCIP data structure */
14744  SCIP_VAR* var, /**< variable to branch on */
14745  SCIP_NODE** downchild, /**< pointer to return the left child with variable rounded down, or NULL */
14746  SCIP_NODE** eqchild, /**< pointer to return the middle child with variable fixed, or NULL */
14747  SCIP_NODE** upchild /**< pointer to return the right child with variable rounded up, or NULL */
14748  );
14749 
14750 /** branches a variable x using a given domain hole; two child nodes (x <= left, x >= right) are created
14751  *
14752  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14753  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14754  *
14755  * @pre This method can be called if @p scip is in one of the following stages:
14756  * - \ref SCIP_STAGE_SOLVING
14757  *
14758  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14759  */
14760 extern
14762  SCIP* scip, /**< SCIP data structure */
14763  SCIP_VAR* var, /**< variable to branch on */
14764  SCIP_Real left, /**< left side of the domain hole */
14765  SCIP_Real right, /**< right side of the domain hole */
14766  SCIP_NODE** downchild, /**< pointer to return the left child (x <= left), or NULL */
14767  SCIP_NODE** upchild /**< pointer to return the right child (x >= right), or NULL */
14768  );
14769 
14770 /** branches on a variable x using a given value x';
14771  * for continuous variables with relative domain width larger epsilon, x' must not be one of the bounds;
14772  * two child nodes (x <= x', x >= x') are created;
14773  * for integer variables, if solution value x' is fractional, two child nodes are created
14774  * (x <= floor(x'), x >= ceil(x')),
14775  * if x' is integral, three child nodes are created
14776  * (x <= x'-1, x == x', x >= x'+1)
14777  *
14778  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14779  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14780  *
14781  * @pre This method can be called if @p scip is in one of the following stages:
14782  * - \ref SCIP_STAGE_SOLVING
14783  *
14784  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14785  */
14786 extern
14788  SCIP* scip, /**< SCIP data structure */
14789  SCIP_VAR* var, /**< variable to branch on */
14790  SCIP_Real val, /**< value to branch on */
14791  SCIP_NODE** downchild, /**< pointer to return the left child with variable rounded down, or NULL */
14792  SCIP_NODE** eqchild, /**< pointer to return the middle child with variable fixed, or NULL */
14793  SCIP_NODE** upchild /**< pointer to return the right child with variable rounded up, or NULL */
14794  );
14795 
14796 /** n-ary branching on a variable x using a given value
14797  * Branches on variable x such that up to n/2 children are created on each side of the usual branching value.
14798  * The branching value is selected as in SCIPbranchVarVal().
14799  * The parameters minwidth and widthfactor determine the domain width of the branching variable in the child nodes.
14800  * If n is odd, one child with domain width 'width' and having the branching value in the middle is created.
14801  * Otherwise, two children with domain width 'width' and being left and right of the branching value are created.
14802  * Next further nodes to the left and right are created, where width is multiplied by widthfactor with increasing distance from the first nodes.
14803  * The initial width is calculated such that n/2 nodes are created to the left and to the right of the branching value.
14804  * If this value is below minwidth, the initial width is set to minwidth, which may result in creating less than n nodes.
14805  *
14806  * Giving a large value for widthfactor results in creating children with small domain when close to the branching value
14807  * and large domain when closer to the current variable bounds. That is, setting widthfactor to a very large value and n to 3
14808  * results in a ternary branching where the branching variable is mostly fixed in the middle child.
14809  * Setting widthfactor to 1.0 results in children where the branching variable always has the same domain width
14810  * (except for one child if the branching value is not in the middle).
14811  *
14812  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14813  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14814  *
14815  * @pre This method can be called if @p scip is in one of the following stages:
14816  * - \ref SCIP_STAGE_SOLVING
14817  *
14818  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14819  */
14820 extern
14822  SCIP* scip, /**< SCIP data structure */
14823  SCIP_VAR* var, /**< variable to branch on */
14824  SCIP_Real val, /**< value to branch on */
14825  int n, /**< attempted number of children to be created, must be >= 2 */
14826  SCIP_Real minwidth, /**< minimal domain width in children */
14827  SCIP_Real widthfactor, /**< multiplier for children domain width with increasing distance from val, must be >= 1.0 */
14828  int* nchildren /**< pointer to store number of created children, or NULL */
14829  );
14830 
14831 /** calls branching rules to branch on an LP solution; if no fractional variables exist, the result is SCIP_DIDNOTRUN;
14832  * if the branch priority of an unfixed variable is larger than the maximal branch priority of the fractional
14833  * variables, pseudo solution branching is applied on the unfixed variables with maximal branch priority
14834  *
14835  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14836  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14837  *
14838  * @pre This method can be called if @p scip is in one of the following stages:
14839  * - \ref SCIP_STAGE_SOLVING
14840  *
14841  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14842  */
14843 extern
14845  SCIP* scip, /**< SCIP data structure */
14846  SCIP_RESULT* result /**< pointer to store the result of the branching (s. branch.h) */
14847  );
14848 
14849 /** calls branching rules to branch on a external candidates; if no such candidates exist, the result is SCIP_DIDNOTRUN
14850  *
14851  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14852  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14853  *
14854  * @pre This method can be called if @p scip is in one of the following stages:
14855  * - \ref SCIP_STAGE_SOLVING
14856  *
14857  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14858  */
14859 extern
14861  SCIP* scip, /**< SCIP data structure */
14862  SCIP_RESULT* result /**< pointer to store the result of the branching (s. branch.h) */
14863  );
14864 
14865 /** calls branching rules to branch on a pseudo solution; if no unfixed variables exist, the result is SCIP_DIDNOTRUN
14866  *
14867  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14868  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14869  *
14870  * @pre This method can be called if @p scip is in one of the following stages:
14871  * - \ref SCIP_STAGE_SOLVING
14872  *
14873  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
14874  */
14875 extern
14877  SCIP* scip, /**< SCIP data structure */
14878  SCIP_RESULT* result /**< pointer to store the result of the branching (s. branch.h) */
14879  );
14880 
14881 /**@} */
14882 
14883 
14884 
14885 
14886 /*
14887  * primal solutions
14888  */
14889 
14890 /**@name Primal Solution Methods */
14891 /**@{ */
14892 
14893 /** creates a primal solution, initialized to zero
14894  *
14895  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14896  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14897  *
14898  * @pre This method can be called if SCIP is in one of the following stages:
14899  * - \ref SCIP_STAGE_PROBLEM
14900  * - \ref SCIP_STAGE_TRANSFORMING
14901  * - \ref SCIP_STAGE_TRANSFORMED
14902  * - \ref SCIP_STAGE_INITPRESOLVE
14903  * - \ref SCIP_STAGE_PRESOLVING
14904  * - \ref SCIP_STAGE_EXITPRESOLVE
14905  * - \ref SCIP_STAGE_PRESOLVED
14906  * - \ref SCIP_STAGE_INITSOLVE
14907  * - \ref SCIP_STAGE_SOLVING
14908  */
14909 extern
14911  SCIP* scip, /**< SCIP data structure */
14912  SCIP_SOL** sol, /**< pointer to store the solution */
14913  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
14914  );
14915 
14916 /** creates a primal solution, initialized to the current LP solution
14917  *
14918  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14919  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14920  *
14921  * @pre This method can be called if SCIP is in one of the following stages:
14922  * - \ref SCIP_STAGE_SOLVING
14923  */
14924 extern
14926  SCIP* scip, /**< SCIP data structure */
14927  SCIP_SOL** sol, /**< pointer to store the solution */
14928  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
14929  );
14930 
14931 /** creates a primal solution, initialized to the current NLP solution
14932  *
14933  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14934  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14935  *
14936  * @pre This method can be called if SCIP is in one of the following stages:
14937  * - \ref SCIP_STAGE_SOLVING
14938  */
14939 extern
14941  SCIP* scip, /**< SCIP data structure */
14942  SCIP_SOL** sol, /**< pointer to store the solution */
14943  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
14944  );
14945 
14946 /** creates a primal solution, initialized to the current relaxation solution
14947  *
14948  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14949  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14950  *
14951  * @pre This method can be called if SCIP is in one of the following stages:
14952  * - \ref SCIP_STAGE_SOLVING
14953  */
14954 extern
14956  SCIP* scip, /**< SCIP data structure */
14957  SCIP_SOL** sol, /**< pointer to store the solution */
14958  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
14959  );
14960 
14961 /** creates a primal solution, initialized to the current pseudo solution
14962  *
14963  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14964  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14965  *
14966  * @pre This method can be called if SCIP is in one of the following stages:
14967  * - \ref SCIP_STAGE_SOLVING
14968  */
14969 extern
14971  SCIP* scip, /**< SCIP data structure */
14972  SCIP_SOL** sol, /**< pointer to store the solution */
14973  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
14974  );
14975 
14976 /** creates a primal solution, initialized to the current LP or pseudo solution, depending on whether the LP was solved
14977  * at the current node
14978  *
14979  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14980  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14981  *
14982  * @pre This method can be called if SCIP is in one of the following stages:
14983  * - \ref SCIP_STAGE_SOLVING
14984  */
14985 extern
14987  SCIP* scip, /**< SCIP data structure */
14988  SCIP_SOL** sol, /**< pointer to store the solution */
14989  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
14990  );
14991 
14992 /** creates a primal solution, initialized to unknown values
14993  *
14994  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
14995  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
14996  *
14997  * @pre This method can be called if SCIP is in one of the following stages:
14998  * - \ref SCIP_STAGE_TRANSFORMING
14999  * - \ref SCIP_STAGE_TRANSFORMED
15000  * - \ref SCIP_STAGE_INITPRESOLVE
15001  * - \ref SCIP_STAGE_PRESOLVING
15002  * - \ref SCIP_STAGE_EXITPRESOLVE
15003  * - \ref SCIP_STAGE_PRESOLVED
15004  * - \ref SCIP_STAGE_INITSOLVE
15005  * - \ref SCIP_STAGE_SOLVING
15006  */
15007 extern
15009  SCIP* scip, /**< SCIP data structure */
15010  SCIP_SOL** sol, /**< pointer to store the solution */
15011  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
15012  );
15013 
15014 /** creates a primal solution living in the original problem space, initialized to zero;
15015  * a solution in original space allows to set original variables to values that would be invalid in the
15016  * transformed problem due to preprocessing fixings or aggregations
15017  *
15018  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15019  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15020  *
15021  * @pre This method can be called if SCIP is in one of the following stages:
15022  * - \ref SCIP_STAGE_PROBLEM
15023  * - \ref SCIP_STAGE_TRANSFORMING
15024  * - \ref SCIP_STAGE_TRANSFORMED
15025  * - \ref SCIP_STAGE_INITPRESOLVE
15026  * - \ref SCIP_STAGE_PRESOLVING
15027  * - \ref SCIP_STAGE_EXITPRESOLVE
15028  * - \ref SCIP_STAGE_PRESOLVED
15029  * - \ref SCIP_STAGE_INITSOLVE
15030  * - \ref SCIP_STAGE_SOLVING
15031  */
15032 extern
15034  SCIP* scip, /**< SCIP data structure */
15035  SCIP_SOL** sol, /**< pointer to store the solution */
15036  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
15037  );
15038 
15039 /** creates a copy of a primal solution; note that a copy of a linked solution is also linked and needs to be unlinked
15040  * if it should stay unaffected from changes in the LP or pseudo solution
15041  *
15042  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15043  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15044  *
15045  * @pre This method can be called if SCIP is in one of the following stages:
15046  * - \ref SCIP_STAGE_PROBLEM
15047  * - \ref SCIP_STAGE_TRANSFORMING
15048  * - \ref SCIP_STAGE_TRANSFORMED
15049  * - \ref SCIP_STAGE_INITPRESOLVE
15050  * - \ref SCIP_STAGE_PRESOLVING
15051  * - \ref SCIP_STAGE_EXITPRESOLVE
15052  * - \ref SCIP_STAGE_PRESOLVED
15053  * - \ref SCIP_STAGE_INITSOLVE
15054  * - \ref SCIP_STAGE_SOLVING
15055  */
15056 extern
15058  SCIP* scip, /**< SCIP data structure */
15059  SCIP_SOL** sol, /**< pointer to store the solution */
15060  SCIP_SOL* sourcesol /**< primal CIP solution to copy */
15061  );
15062 
15063 /** creates a copy of a primal solution, thereby replacing infinite fixings of variables by finite values;
15064  * the copy is always defined in the original variable space;
15065  * success indicates whether the objective value of the solution was changed by removing infinite values
15066  *
15067  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15068  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15069  *
15070  * @pre This method can be called if SCIP is in one of the following stages:
15071  * - \ref SCIP_STAGE_PROBLEM
15072  * - \ref SCIP_STAGE_TRANSFORMING
15073  * - \ref SCIP_STAGE_TRANSFORMED
15074  * - \ref SCIP_STAGE_INITPRESOLVE
15075  * - \ref SCIP_STAGE_PRESOLVING
15076  * - \ref SCIP_STAGE_EXITPRESOLVE
15077  * - \ref SCIP_STAGE_PRESOLVED
15078  * - \ref SCIP_STAGE_INITSOLVE
15079  * - \ref SCIP_STAGE_SOLVING
15080  * - \ref SCIP_STAGE_SOLVED
15081  * - \ref SCIP_STAGE_EXITSOLVE
15082  */
15083 extern
15085  SCIP* scip, /**< SCIP data structure */
15086  SCIP_SOL** sol, /**< pointer to store the solution */
15087  SCIP_SOL* sourcesol, /**< primal CIP solution to copy */
15088  SCIP_Bool* success /**< does the finite solution have the same objective value? */
15089  );
15090 
15091 /** frees primal CIP solution
15092  *
15093  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15094  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15095  *
15096  * @pre This method can be called if SCIP is in one of the following stages:
15097  * - \ref SCIP_STAGE_PROBLEM
15098  * - \ref SCIP_STAGE_TRANSFORMING
15099  * - \ref SCIP_STAGE_TRANSFORMED
15100  * - \ref SCIP_STAGE_INITPRESOLVE
15101  * - \ref SCIP_STAGE_PRESOLVING
15102  * - \ref SCIP_STAGE_EXITPRESOLVE
15103  * - \ref SCIP_STAGE_PRESOLVED
15104  * - \ref SCIP_STAGE_INITSOLVE
15105  * - \ref SCIP_STAGE_SOLVING
15106  * - \ref SCIP_STAGE_SOLVED
15107  * - \ref SCIP_STAGE_EXITSOLVE
15108  * - \ref SCIP_STAGE_FREETRANS
15109  */
15110 extern
15112  SCIP* scip, /**< SCIP data structure */
15113  SCIP_SOL** sol /**< pointer to the solution */
15114  );
15115 
15116 /** links a primal solution to the current LP solution
15117  *
15118  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15119  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15120  *
15121  * @pre This method can be called if SCIP is in one of the following stages:
15122  * - \ref SCIP_STAGE_SOLVING
15123  */
15124 extern
15126  SCIP* scip, /**< SCIP data structure */
15127  SCIP_SOL* sol /**< primal solution */
15128  );
15129 
15130 /** links a primal solution to the current NLP solution
15131  *
15132  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15133  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15134  *
15135  * @pre This method can be called if SCIP is in one of the following stages:
15136  * - \ref SCIP_STAGE_SOLVING
15137  */
15138 extern
15140  SCIP* scip, /**< SCIP data structure */
15141  SCIP_SOL* sol /**< primal solution */
15142  );
15143 
15144 /** links a primal solution to the current relaxation solution
15145  *
15146  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15147  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15148  *
15149  * @pre This method can be called if SCIP is in one of the following stages:
15150  * - \ref SCIP_STAGE_SOLVING
15151  */
15152 extern
15154  SCIP* scip, /**< SCIP data structure */
15155  SCIP_SOL* sol /**< primal solution */
15156  );
15157 
15158 /** links a primal solution to the current pseudo solution
15159  *
15160  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15161  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15162  *
15163  * @pre This method can be called if SCIP is in one of the following stages:
15164  * - \ref SCIP_STAGE_PRESOLVING
15165  * - \ref SCIP_STAGE_SOLVING
15166  */
15167 extern
15169  SCIP* scip, /**< SCIP data structure */
15170  SCIP_SOL* sol /**< primal solution */
15171  );
15172 
15173 /** links a primal solution to the current LP or pseudo solution
15174  *
15175  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15176  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15177  *
15178  * @pre This method can be called if SCIP is in one of the following stages:
15179  * - \ref SCIP_STAGE_SOLVING
15180  */
15181 extern
15183  SCIP* scip, /**< SCIP data structure */
15184  SCIP_SOL* sol /**< primal solution */
15185  );
15186 
15187 /** clears a primal solution
15188  *
15189  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15190  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15191  *
15192  * @pre This method can be called if SCIP is in one of the following stages:
15193  * - \ref SCIP_STAGE_PROBLEM
15194  * - \ref SCIP_STAGE_TRANSFORMING
15195  * - \ref SCIP_STAGE_TRANSFORMED
15196  * - \ref SCIP_STAGE_INITPRESOLVE
15197  * - \ref SCIP_STAGE_PRESOLVING
15198  * - \ref SCIP_STAGE_EXITPRESOLVE
15199  * - \ref SCIP_STAGE_PRESOLVED
15200  * - \ref SCIP_STAGE_INITSOLVE
15201  * - \ref SCIP_STAGE_SOLVING
15202  * - \ref SCIP_STAGE_SOLVED
15203  * - \ref SCIP_STAGE_EXITSOLVE
15204  * - \ref SCIP_STAGE_FREETRANS
15205  */
15206 extern
15208  SCIP* scip, /**< SCIP data structure */
15209  SCIP_SOL* sol /**< primal solution */
15210  );
15211 
15212 /** stores solution values of variables in solution's own array
15213  *
15214  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15215  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15216  *
15217  * @pre This method can be called if SCIP is in one of the following stages:
15218  * - \ref SCIP_STAGE_TRANSFORMING
15219  * - \ref SCIP_STAGE_TRANSFORMED
15220  * - \ref SCIP_STAGE_PRESOLVING
15221  * - \ref SCIP_STAGE_PRESOLVED
15222  * - \ref SCIP_STAGE_INITSOLVE
15223  * - \ref SCIP_STAGE_SOLVING
15224  * - \ref SCIP_STAGE_SOLVED
15225  * - \ref SCIP_STAGE_EXITSOLVE
15226  * - \ref SCIP_STAGE_FREETRANS
15227  */
15228 extern
15230  SCIP* scip, /**< SCIP data structure */
15231  SCIP_SOL* sol /**< primal solution */
15232  );
15233 
15234 /** sets value of variable in primal CIP solution
15235  *
15236  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15237  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15238  *
15239  * @pre This method can be called if SCIP is in one of the following stages:
15240  * - \ref SCIP_STAGE_PROBLEM
15241  * - \ref SCIP_STAGE_TRANSFORMING
15242  * - \ref SCIP_STAGE_TRANSFORMED
15243  * - \ref SCIP_STAGE_INITPRESOLVE
15244  * - \ref SCIP_STAGE_PRESOLVING
15245  * - \ref SCIP_STAGE_EXITPRESOLVE
15246  * - \ref SCIP_STAGE_PRESOLVED
15247  * - \ref SCIP_STAGE_INITSOLVE
15248  * - \ref SCIP_STAGE_SOLVING
15249  * - \ref SCIP_STAGE_SOLVED
15250  * - \ref SCIP_STAGE_EXITSOLVE
15251  * - \ref SCIP_STAGE_FREETRANS
15252  */
15253 extern
15255  SCIP* scip, /**< SCIP data structure */
15256  SCIP_SOL* sol, /**< primal solution */
15257  SCIP_VAR* var, /**< variable to add to solution */
15258  SCIP_Real val /**< solution value of variable */
15259  );
15260 
15261 /** sets values of multiple variables in primal CIP solution
15262  *
15263  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15264  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15265  *
15266  * @pre This method can be called if SCIP is in one of the following stages:
15267  * - \ref SCIP_STAGE_PROBLEM
15268  * - \ref SCIP_STAGE_TRANSFORMING
15269  * - \ref SCIP_STAGE_TRANSFORMED
15270  * - \ref SCIP_STAGE_INITPRESOLVE
15271  * - \ref SCIP_STAGE_PRESOLVING
15272  * - \ref SCIP_STAGE_EXITPRESOLVE
15273  * - \ref SCIP_STAGE_PRESOLVED
15274  * - \ref SCIP_STAGE_INITSOLVE
15275  * - \ref SCIP_STAGE_SOLVING
15276  * - \ref SCIP_STAGE_SOLVED
15277  * - \ref SCIP_STAGE_EXITSOLVE
15278  * - \ref SCIP_STAGE_FREETRANS
15279  */
15280 extern
15282  SCIP* scip, /**< SCIP data structure */
15283  SCIP_SOL* sol, /**< primal solution */
15284  int nvars, /**< number of variables to set solution value for */
15285  SCIP_VAR** vars, /**< array with variables to add to solution */
15286  SCIP_Real* vals /**< array with solution values of variables */
15287  );
15288 
15289 /** increases value of variable in primal CIP solution
15290  *
15291  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15292  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15293  *
15294  * @pre This method can be called if SCIP is in one of the following stages:
15295  * - \ref SCIP_STAGE_PROBLEM
15296  * - \ref SCIP_STAGE_TRANSFORMING
15297  * - \ref SCIP_STAGE_TRANSFORMED
15298  * - \ref SCIP_STAGE_INITPRESOLVE
15299  * - \ref SCIP_STAGE_PRESOLVING
15300  * - \ref SCIP_STAGE_EXITPRESOLVE
15301  * - \ref SCIP_STAGE_PRESOLVED
15302  * - \ref SCIP_STAGE_INITSOLVE
15303  * - \ref SCIP_STAGE_SOLVING
15304  * - \ref SCIP_STAGE_SOLVED
15305  * - \ref SCIP_STAGE_EXITSOLVE
15306  * - \ref SCIP_STAGE_FREETRANS
15307  */
15308 extern
15310  SCIP* scip, /**< SCIP data structure */
15311  SCIP_SOL* sol, /**< primal solution */
15312  SCIP_VAR* var, /**< variable to increase solution value for */
15313  SCIP_Real incval /**< increment for solution value of variable */
15314  );
15315 
15316 /** returns value of variable in primal CIP solution, or in current LP/pseudo solution
15317  *
15318  * @return value of variable in primal CIP solution, or in current LP/pseudo solution
15319  *
15320  * @pre In case the solution pointer @p sol is @b NULL, that means it is asked for the LP or pseudo solution, this method
15321  * can only be called if @p scip is in the solving stage \ref SCIP_STAGE_SOLVING. In any other case, this method
15322  * can be called if @p scip is in one of the following stages:
15323  * - \ref SCIP_STAGE_PROBLEM
15324  * - \ref SCIP_STAGE_TRANSFORMING
15325  * - \ref SCIP_STAGE_TRANSFORMED
15326  * - \ref SCIP_STAGE_INITPRESOLVE
15327  * - \ref SCIP_STAGE_PRESOLVING
15328  * - \ref SCIP_STAGE_EXITPRESOLVE
15329  * - \ref SCIP_STAGE_PRESOLVED
15330  * - \ref SCIP_STAGE_INITSOLVE
15331  * - \ref SCIP_STAGE_SOLVING
15332  * - \ref SCIP_STAGE_SOLVED
15333  * - \ref SCIP_STAGE_EXITSOLVE
15334  * - \ref SCIP_STAGE_FREETRANS
15335  */
15336 extern
15338  SCIP* scip, /**< SCIP data structure */
15339  SCIP_SOL* sol, /**< primal solution, or NULL for current LP/pseudo solution */
15340  SCIP_VAR* var /**< variable to get value for */
15341  );
15342 
15343 /** gets values of multiple variables in primal CIP solution
15344  *
15345  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15346  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15347  *
15348  * @pre This method can be called if SCIP is in one of the following stages:
15349  * - \ref SCIP_STAGE_PROBLEM
15350  * - \ref SCIP_STAGE_TRANSFORMING
15351  * - \ref SCIP_STAGE_TRANSFORMED
15352  * - \ref SCIP_STAGE_INITPRESOLVE
15353  * - \ref SCIP_STAGE_PRESOLVING
15354  * - \ref SCIP_STAGE_EXITPRESOLVE
15355  * - \ref SCIP_STAGE_PRESOLVED
15356  * - \ref SCIP_STAGE_INITSOLVE
15357  * - \ref SCIP_STAGE_SOLVING
15358  * - \ref SCIP_STAGE_SOLVED
15359  * - \ref SCIP_STAGE_EXITSOLVE
15360  * - \ref SCIP_STAGE_FREETRANS
15361  */
15362 extern
15364  SCIP* scip, /**< SCIP data structure */
15365  SCIP_SOL* sol, /**< primal solution, or NULL for current LP/pseudo solution */
15366  int nvars, /**< number of variables to get solution value for */
15367  SCIP_VAR** vars, /**< array with variables to get value for */
15368  SCIP_Real* vals /**< array to store solution values of variables */
15369  );
15370 
15371 /** returns objective value of primal CIP solution w.r.t. original problem, or current LP/pseudo objective value
15372  *
15373  * @return objective value of primal CIP solution w.r.t. original problem, or current LP/pseudo objective value
15374  *
15375  * @pre This method can be called if SCIP is in one of the following stages:
15376  * - \ref SCIP_STAGE_PROBLEM
15377  * - \ref SCIP_STAGE_TRANSFORMING
15378  * - \ref SCIP_STAGE_TRANSFORMED
15379  * - \ref SCIP_STAGE_INITPRESOLVE
15380  * - \ref SCIP_STAGE_PRESOLVING
15381  * - \ref SCIP_STAGE_EXITPRESOLVE
15382  * - \ref SCIP_STAGE_PRESOLVED
15383  * - \ref SCIP_STAGE_INITSOLVE
15384  * - \ref SCIP_STAGE_SOLVING
15385  * - \ref SCIP_STAGE_SOLVED
15386  * - \ref SCIP_STAGE_EXITSOLVE
15387  * - \ref SCIP_STAGE_FREETRANS
15388  */
15389 extern
15391  SCIP* scip, /**< SCIP data structure */
15392  SCIP_SOL* sol /**< primal solution, or NULL for current LP/pseudo objective value */
15393  );
15394 
15395 /** returns transformed objective value of primal CIP solution, or transformed current LP/pseudo objective value
15396  *
15397  * @return transformed objective value of primal CIP solution, or transformed current LP/pseudo objective value
15398  *
15399  * @pre This method can be called if SCIP is in one of the following stages:
15400  * - \ref SCIP_STAGE_TRANSFORMING
15401  * - \ref SCIP_STAGE_TRANSFORMED
15402  * - \ref SCIP_STAGE_INITPRESOLVE
15403  * - \ref SCIP_STAGE_PRESOLVING
15404  * - \ref SCIP_STAGE_EXITPRESOLVE
15405  * - \ref SCIP_STAGE_PRESOLVED
15406  * - \ref SCIP_STAGE_INITSOLVE
15407  * - \ref SCIP_STAGE_SOLVING
15408  * - \ref SCIP_STAGE_SOLVED
15409  * - \ref SCIP_STAGE_EXITSOLVE
15410  * - \ref SCIP_STAGE_FREETRANS
15411  */
15412 extern
15414  SCIP* scip, /**< SCIP data structure */
15415  SCIP_SOL* sol /**< primal solution, or NULL for current LP/pseudo objective value */
15416  );
15417 
15418 /** maps original space objective value into transformed objective value
15419  *
15420  * @return transformed objective value
15421  *
15422  * @pre This method can be called if SCIP is in one of the following stages:
15423  * - \ref SCIP_STAGE_TRANSFORMING
15424  * - \ref SCIP_STAGE_TRANSFORMED
15425  * - \ref SCIP_STAGE_INITPRESOLVE
15426  * - \ref SCIP_STAGE_PRESOLVING
15427  * - \ref SCIP_STAGE_EXITPRESOLVE
15428  * - \ref SCIP_STAGE_PRESOLVED
15429  * - \ref SCIP_STAGE_INITSOLVE
15430  * - \ref SCIP_STAGE_SOLVING
15431  * - \ref SCIP_STAGE_SOLVED
15432  */
15433 extern
15435  SCIP* scip, /**< SCIP data structure */
15436  SCIP_Real obj /**< original space objective value to transform */
15437  );
15438 
15439 /** maps transformed objective value into original space
15440  *
15441  * @return objective value into original space
15442  *
15443  * @pre This method can be called if SCIP is in one of the following stages:
15444  * - \ref SCIP_STAGE_TRANSFORMING
15445  * - \ref SCIP_STAGE_TRANSFORMED
15446  * - \ref SCIP_STAGE_INITPRESOLVE
15447  * - \ref SCIP_STAGE_PRESOLVING
15448  * - \ref SCIP_STAGE_EXITPRESOLVE
15449  * - \ref SCIP_STAGE_PRESOLVED
15450  * - \ref SCIP_STAGE_INITSOLVE
15451  * - \ref SCIP_STAGE_SOLVING
15452  * - \ref SCIP_STAGE_SOLVED
15453  */
15454 extern
15456  SCIP* scip, /**< SCIP data structure */
15457  SCIP_Real obj /**< transformed objective value to retransform in original space */
15458  );
15459 
15460 /** gets clock time, when this solution was found
15461  *
15462  * @return clock time, when this solution was found
15463  *
15464  * @pre This method can be called if SCIP is in one of the following stages:
15465  * - \ref SCIP_STAGE_TRANSFORMING
15466  * - \ref SCIP_STAGE_TRANSFORMED
15467  * - \ref SCIP_STAGE_INITPRESOLVE
15468  * - \ref SCIP_STAGE_PRESOLVING
15469  * - \ref SCIP_STAGE_EXITPRESOLVE
15470  * - \ref SCIP_STAGE_PRESOLVED
15471  * - \ref SCIP_STAGE_INITSOLVE
15472  * - \ref SCIP_STAGE_SOLVING
15473  * - \ref SCIP_STAGE_SOLVED
15474  * - \ref SCIP_STAGE_EXITSOLVE
15475  * - \ref SCIP_STAGE_FREETRANS
15476  */
15477 extern
15479  SCIP* scip, /**< SCIP data structure */
15480  SCIP_SOL* sol /**< primal solution */
15481  );
15482 
15483 /** gets branch and bound run number, where this solution was found
15484  *
15485  * @return branch and bound run number, where this solution was found
15486  *
15487  * @pre This method can be called if SCIP is in one of the following stages:
15488  * - \ref SCIP_STAGE_TRANSFORMING
15489  * - \ref SCIP_STAGE_TRANSFORMED
15490  * - \ref SCIP_STAGE_INITPRESOLVE
15491  * - \ref SCIP_STAGE_PRESOLVING
15492  * - \ref SCIP_STAGE_EXITPRESOLVE
15493  * - \ref SCIP_STAGE_PRESOLVED
15494  * - \ref SCIP_STAGE_INITSOLVE
15495  * - \ref SCIP_STAGE_SOLVING
15496  * - \ref SCIP_STAGE_SOLVED
15497  * - \ref SCIP_STAGE_EXITSOLVE
15498  * - \ref SCIP_STAGE_FREETRANS
15499  */
15500 extern
15501 int SCIPgetSolRunnum(
15502  SCIP* scip, /**< SCIP data structure */
15503  SCIP_SOL* sol /**< primal solution */
15504  );
15505 
15506 /** gets node number of the specific branch and bound run, where this solution was found
15507  *
15508  * @return node number of the specific branch and bound run, where this solution was found
15509  *
15510  * @pre This method can be called if SCIP is in one of the following stages:
15511  * - \ref SCIP_STAGE_TRANSFORMING
15512  * - \ref SCIP_STAGE_TRANSFORMED
15513  * - \ref SCIP_STAGE_INITPRESOLVE
15514  * - \ref SCIP_STAGE_PRESOLVING
15515  * - \ref SCIP_STAGE_EXITPRESOLVE
15516  * - \ref SCIP_STAGE_PRESOLVED
15517  * - \ref SCIP_STAGE_INITSOLVE
15518  * - \ref SCIP_STAGE_SOLVING
15519  * - \ref SCIP_STAGE_SOLVED
15520  * - \ref SCIP_STAGE_EXITSOLVE
15521  * - \ref SCIP_STAGE_FREETRANS
15522  */
15523 extern
15525  SCIP* scip, /**< SCIP data structure */
15526  SCIP_SOL* sol /**< primal solution */
15527  );
15528 
15529 /** gets heuristic, that found this solution (or NULL if it's from the tree)
15530  *
15531  * @return heuristic, that found this solution (or NULL if it's from the tree)
15532  *
15533  * @pre This method can be called if SCIP is in one of the following stages:
15534  * - \ref SCIP_STAGE_TRANSFORMING
15535  * - \ref SCIP_STAGE_TRANSFORMED
15536  * - \ref SCIP_STAGE_INITPRESOLVE
15537  * - \ref SCIP_STAGE_PRESOLVING
15538  * - \ref SCIP_STAGE_EXITPRESOLVE
15539  * - \ref SCIP_STAGE_PRESOLVED
15540  * - \ref SCIP_STAGE_INITSOLVE
15541  * - \ref SCIP_STAGE_SOLVING
15542  * - \ref SCIP_STAGE_SOLVED
15543  * - \ref SCIP_STAGE_EXITSOLVE
15544  * - \ref SCIP_STAGE_FREETRANS
15545  */
15546 extern
15548  SCIP* scip, /**< SCIP data structure */
15549  SCIP_SOL* sol /**< primal solution */
15550  );
15551 
15552 /** returns whether two given solutions are exactly equal
15553  *
15554  * @return returns whether two given solutions are exactly equal
15555  *
15556  * @pre This method can be called if SCIP is in one of the following stages:
15557  * - \ref SCIP_STAGE_PROBLEM
15558  * - \ref SCIP_STAGE_TRANSFORMING
15559  * - \ref SCIP_STAGE_TRANSFORMED
15560  * - \ref SCIP_STAGE_INITPRESOLVE
15561  * - \ref SCIP_STAGE_PRESOLVING
15562  * - \ref SCIP_STAGE_EXITPRESOLVE
15563  * - \ref SCIP_STAGE_PRESOLVED
15564  * - \ref SCIP_STAGE_INITSOLVE
15565  * - \ref SCIP_STAGE_SOLVING
15566  * - \ref SCIP_STAGE_SOLVED
15567  * - \ref SCIP_STAGE_EXITSOLVE
15568  * - \ref SCIP_STAGE_FREETRANS
15569  */
15570 extern
15572  SCIP* scip, /**< SCIP data structure */
15573  SCIP_SOL* sol1, /**< first primal CIP solution */
15574  SCIP_SOL* sol2 /**< second primal CIP solution */
15575  );
15576 
15577 /** adjusts solution values of implicit integer variables in handed solution. Solution objective value is not
15578  * deteriorated by this method.
15579  *
15580  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15581  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15582  *
15583  * @pre This method can be called if SCIP is in one of the following stages:
15584  * - \ref SCIP_STAGE_SOLVING
15585  */
15586 extern
15588  SCIP* scip, /**< SCIP data structure */
15589  SCIP_SOL* sol, /**< primal CIP solution */
15590  SCIP_Bool uselprows /**< should LP row information be considered for none-objective variables */
15591  );
15592 
15593 /** outputs non-zero variables of solution in original problem space to the given file stream
15594  *
15595  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15596  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15597  *
15598  * @pre In case the solution pointer @p sol is NULL (askinking for the current LP/pseudo solution), this method can be
15599  * called if @p scip is in one of the following stages:
15600  * - \ref SCIP_STAGE_PRESOLVING
15601  * - \ref SCIP_STAGE_EXITPRESOLVE
15602  * - \ref SCIP_STAGE_PRESOLVED
15603  * - \ref SCIP_STAGE_INITSOLVE
15604  * - \ref SCIP_STAGE_SOLVING
15605  * - \ref SCIP_STAGE_SOLVED
15606  * - \ref SCIP_STAGE_EXITSOLVE
15607  *
15608  * @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
15609  * following stages:
15610  * - \ref SCIP_STAGE_PROBLEM
15611  * - \ref SCIP_STAGE_TRANSFORMED
15612  * - \ref SCIP_STAGE_INITPRESOLVE
15613  * - \ref SCIP_STAGE_PRESOLVING
15614  * - \ref SCIP_STAGE_EXITPRESOLVE
15615  * - \ref SCIP_STAGE_PRESOLVED
15616  * - \ref SCIP_STAGE_INITSOLVE
15617  * - \ref SCIP_STAGE_SOLVING
15618  * - \ref SCIP_STAGE_SOLVED
15619  * - \ref SCIP_STAGE_EXITSOLVE
15620  */
15621 extern
15623  SCIP* scip, /**< SCIP data structure */
15624  SCIP_SOL* sol, /**< primal solution, or NULL for current LP/pseudo solution */
15625  FILE* file, /**< output file (or NULL for standard output) */
15626  SCIP_Bool printzeros /**< should variables set to zero be printed? */
15627  );
15628 
15629 /** outputs non-zero variables of solution in transformed problem space to file stream
15630  *
15631  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15632  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15633  *
15634  * @pre This method can be called if SCIP is in one of the following stages:
15635  * - \ref SCIP_STAGE_TRANSFORMED
15636  * - \ref SCIP_STAGE_INITPRESOLVE
15637  * - \ref SCIP_STAGE_PRESOLVING
15638  * - \ref SCIP_STAGE_EXITPRESOLVE
15639  * - \ref SCIP_STAGE_PRESOLVED
15640  * - \ref SCIP_STAGE_INITSOLVE
15641  * - \ref SCIP_STAGE_SOLVING
15642  * - \ref SCIP_STAGE_SOLVED
15643  * - \ref SCIP_STAGE_EXITSOLVE
15644  */
15645 extern
15647  SCIP* scip, /**< SCIP data structure */
15648  SCIP_SOL* sol, /**< primal solution, or NULL for current LP/pseudo solution */
15649  FILE* file, /**< output file (or NULL for standard output) */
15650  SCIP_Bool printzeros /**< should variables set to zero be printed? */
15651  );
15652 
15653 /** outputs dual solution from LP solver to file stream
15654  *
15655  * @note This only works if no presolving has been performed, which can be checked by calling method \ref
15656  * SCIPhasPerformedPresolve().
15657  *
15658  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15659  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15660  *
15661  * @pre This method can be called if SCIP is in one of the following stages:
15662  * - \ref SCIP_STAGE_SOLVED
15663  */
15664 extern
15666  SCIP* scip, /**< SCIP data structure */
15667  FILE* file, /**< output file (or NULL for standard output) */
15668  SCIP_Bool printzeros /**< should variables set to zero be printed? */
15669  );
15670 
15671 
15672 /** outputs non-zero variables of solution representing a ray in original problem space to file stream
15673  *
15674  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15675  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15676  *
15677  * @pre This method can be called if SCIP is in one of the following stages:
15678  * - \ref SCIP_STAGE_PROBLEM
15679  * - \ref SCIP_STAGE_TRANSFORMED
15680  * - \ref SCIP_STAGE_INITPRESOLVE
15681  * - \ref SCIP_STAGE_PRESOLVING
15682  * - \ref SCIP_STAGE_EXITPRESOLVE
15683  * - \ref SCIP_STAGE_PRESOLVED
15684  * - \ref SCIP_STAGE_INITSOLVE
15685  * - \ref SCIP_STAGE_SOLVING
15686  * - \ref SCIP_STAGE_SOLVED
15687  * - \ref SCIP_STAGE_EXITSOLVE
15688  */
15689 extern
15691  SCIP* scip, /**< SCIP data structure */
15692  SCIP_SOL* sol, /**< primal solution representing ray */
15693  FILE* file, /**< output file (or NULL for standard output) */
15694  SCIP_Bool printzeros /**< should variables set to zero be printed? */
15695  );
15696 
15697 /** gets number of feasible primal solutions stored in the solution storage in case the problem is transformed;
15698  * in case the problem stage is SCIP_STAGE_PROBLEM, the number of solution in the original solution candidate
15699  * storage is returned
15700  *
15701  * @return number of feasible primal solutions stored in the solution storage in case the problem is transformed; or
15702  * number of solution in the original solution candidate storage if the problem stage is SCIP_STAGE_PROBLEM
15703  *
15704  * @pre This method can be called if SCIP is in one of the following stages:
15705  * - \ref SCIP_STAGE_PROBLEM
15706  * - \ref SCIP_STAGE_TRANSFORMED
15707  * - \ref SCIP_STAGE_INITPRESOLVE
15708  * - \ref SCIP_STAGE_PRESOLVING
15709  * - \ref SCIP_STAGE_EXITPRESOLVE
15710  * - \ref SCIP_STAGE_PRESOLVED
15711  * - \ref SCIP_STAGE_INITSOLVE
15712  * - \ref SCIP_STAGE_SOLVING
15713  * - \ref SCIP_STAGE_SOLVED
15714  * - \ref SCIP_STAGE_EXITSOLVE
15715  */
15716 extern
15717 int SCIPgetNSols(
15718  SCIP* scip /**< SCIP data structure */
15719  );
15720 
15721 /** gets array of feasible primal solutions stored in the solution storage in case the problem is transformed; in case
15722  * if the problem stage is in SCIP_STAGE_PROBLEM, it returns the number array of solution candidate stored
15723  *
15724  * @return array of feasible primal solutions
15725  *
15726  * @pre This method can be called if SCIP is in one of the following stages:
15727  * - \ref SCIP_STAGE_PROBLEM
15728  * - \ref SCIP_STAGE_TRANSFORMED
15729  * - \ref SCIP_STAGE_INITPRESOLVE
15730  * - \ref SCIP_STAGE_PRESOLVING
15731  * - \ref SCIP_STAGE_EXITPRESOLVE
15732  * - \ref SCIP_STAGE_PRESOLVED
15733  * - \ref SCIP_STAGE_INITSOLVE
15734  * - \ref SCIP_STAGE_SOLVING
15735  * - \ref SCIP_STAGE_SOLVED
15736  * - \ref SCIP_STAGE_EXITSOLVE
15737  */
15738 extern
15740  SCIP* scip /**< SCIP data structure */
15741  );
15742 
15743 /** gets best feasible primal solution found so far if the problem is transformed; in case the problem is in
15744  * SCIP_STAGE_PROBLEM it returns the best solution candidate, or NULL if no solution has been found or the candidate
15745  * store is empty;
15746  *
15747  * @return best feasible primal solution so far
15748  *
15749  * @pre This method can be called if SCIP is in one of the following stages:
15750  * - \ref SCIP_STAGE_PROBLEM
15751  * - \ref SCIP_STAGE_TRANSFORMED
15752  * - \ref SCIP_STAGE_INITPRESOLVE
15753  * - \ref SCIP_STAGE_PRESOLVING
15754  * - \ref SCIP_STAGE_EXITPRESOLVE
15755  * - \ref SCIP_STAGE_PRESOLVED
15756  * - \ref SCIP_STAGE_INITSOLVE
15757  * - \ref SCIP_STAGE_SOLVING
15758  * - \ref SCIP_STAGE_SOLVED
15759  * - \ref SCIP_STAGE_EXITSOLVE
15760  */
15761 extern
15763  SCIP* scip /**< SCIP data structure */
15764  );
15765 
15766 /** outputs best feasible primal solution found so far to file stream
15767  *
15768  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15769  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15770  *
15771  * @pre This method can be called if SCIP is in one of the following stages:
15772  * - \ref SCIP_STAGE_INIT
15773  * - \ref SCIP_STAGE_PROBLEM
15774  * - \ref SCIP_STAGE_TRANSFORMING
15775  * - \ref SCIP_STAGE_TRANSFORMED
15776  * - \ref SCIP_STAGE_INITPRESOLVE
15777  * - \ref SCIP_STAGE_PRESOLVING
15778  * - \ref SCIP_STAGE_EXITPRESOLVE
15779  * - \ref SCIP_STAGE_PRESOLVED
15780  * - \ref SCIP_STAGE_INITSOLVE
15781  * - \ref SCIP_STAGE_SOLVING
15782  * - \ref SCIP_STAGE_SOLVED
15783  * - \ref SCIP_STAGE_EXITSOLVE
15784  * - \ref SCIP_STAGE_FREE
15785  */
15786 extern
15788  SCIP* scip, /**< SCIP data structure */
15789  FILE* file, /**< output file (or NULL for standard output) */
15790  SCIP_Bool printzeros /**< should variables set to zero be printed? */
15791  );
15792 
15793 /** outputs best feasible primal solution found so far in transformed variables to file stream
15794  *
15795  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15796  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15797  *
15798  * @pre This method can be called if SCIP is in one of the following stages:
15799  * - \ref SCIP_STAGE_INIT
15800  * - \ref SCIP_STAGE_PROBLEM
15801  * - \ref SCIP_STAGE_TRANSFORMING
15802  * - \ref SCIP_STAGE_TRANSFORMED
15803  * - \ref SCIP_STAGE_INITPRESOLVE
15804  * - \ref SCIP_STAGE_PRESOLVING
15805  * - \ref SCIP_STAGE_EXITPRESOLVE
15806  * - \ref SCIP_STAGE_PRESOLVED
15807  * - \ref SCIP_STAGE_INITSOLVE
15808  * - \ref SCIP_STAGE_SOLVING
15809  * - \ref SCIP_STAGE_SOLVED
15810  * - \ref SCIP_STAGE_EXITSOLVE
15811  * - \ref SCIP_STAGE_FREE
15812  */
15813 extern
15815  SCIP* scip, /**< SCIP data structure */
15816  FILE* file, /**< output file (or NULL for standard output) */
15817  SCIP_Bool printzeros /**< should variables set to zero be printed? */
15818  );
15819 
15820 /** try to round given solution
15821  *
15822  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15823  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15824  *
15825  * @pre This method can be called if SCIP is in one of the following stages:
15826  * - \ref SCIP_STAGE_SOLVING
15827  */
15828 extern
15830  SCIP* scip, /**< SCIP data structure */
15831  SCIP_SOL* sol, /**< primal solution */
15832  SCIP_Bool* success /**< pointer to store whether rounding was successful */
15833  );
15834 
15835 /** retransforms solution to original problem space
15836  *
15837  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15838  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15839  *
15840  * @pre This method can be called if SCIP is in one of the following stages:
15841  * - \ref SCIP_STAGE_PROBLEM
15842  * - \ref SCIP_STAGE_TRANSFORMING
15843  * - \ref SCIP_STAGE_TRANSFORMED
15844  * - \ref SCIP_STAGE_INITPRESOLVE
15845  * - \ref SCIP_STAGE_PRESOLVING
15846  * - \ref SCIP_STAGE_EXITPRESOLVE
15847  * - \ref SCIP_STAGE_PRESOLVED
15848  * - \ref SCIP_STAGE_INITSOLVE
15849  * - \ref SCIP_STAGE_SOLVING
15850  * - \ref SCIP_STAGE_SOLVED
15851  * - \ref SCIP_STAGE_EXITSOLVE
15852  * - \ref SCIP_STAGE_FREETRANS
15853  */
15854 extern
15856  SCIP* scip, /**< SCIP data structure */
15857  SCIP_SOL* sol /**< primal CIP solution */
15858  );
15859 
15860 /** reads a given solution file, problem has to be transformed in advance
15861  *
15862  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15863  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15864  *
15865  * @pre This method can be called if SCIP is in one of the following stages:
15866  * - \ref SCIP_STAGE_PROBLEM
15867  * - \ref SCIP_STAGE_TRANSFORMED
15868  * - \ref SCIP_STAGE_INITPRESOLVE
15869  * - \ref SCIP_STAGE_PRESOLVING
15870  * - \ref SCIP_STAGE_EXITPRESOLVE
15871  * - \ref SCIP_STAGE_PRESOLVED
15872  * - \ref SCIP_STAGE_INITSOLVE
15873  * - \ref SCIP_STAGE_SOLVING
15874  */
15875 extern
15877  SCIP* scip, /**< SCIP data structure */
15878  const char* filename /**< name of the input file */
15879  );
15880 
15881 /** adds feasible primal solution to solution storage by copying it
15882  *
15883  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15884  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15885  *
15886  * @pre This method can be called if SCIP is in one of the following stages:
15887  * - \ref SCIP_STAGE_PROBLEM
15888  * - \ref SCIP_STAGE_TRANSFORMED
15889  * - \ref SCIP_STAGE_INITPRESOLVE
15890  * - \ref SCIP_STAGE_PRESOLVING
15891  * - \ref SCIP_STAGE_EXITPRESOLVE
15892  * - \ref SCIP_STAGE_PRESOLVED
15893  * - \ref SCIP_STAGE_SOLVING
15894  * - \ref SCIP_STAGE_FREETRANS
15895  *
15896  * @note Do not call during propagation, use heur_trysol instead.
15897  */
15898 extern
15900  SCIP* scip, /**< SCIP data structure */
15901  SCIP_SOL* sol, /**< primal CIP solution */
15902  SCIP_Bool* stored /**< stores whether given solution was good enough to keep */
15903  );
15904 
15905 /** adds primal solution to solution storage, frees the solution afterwards
15906  *
15907  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15908  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15909  *
15910  * @pre This method can be called if SCIP is in one of the following stages:
15911  * - \ref SCIP_STAGE_PROBLEM
15912  * - \ref SCIP_STAGE_TRANSFORMED
15913  * - \ref SCIP_STAGE_INITPRESOLVE
15914  * - \ref SCIP_STAGE_PRESOLVING
15915  * - \ref SCIP_STAGE_EXITPRESOLVE
15916  * - \ref SCIP_STAGE_PRESOLVED
15917  * - \ref SCIP_STAGE_SOLVING
15918  * - \ref SCIP_STAGE_FREETRANS
15919  *
15920  * @note Do not call during propagation, use heur_trysol instead.
15921  */
15922 extern
15924  SCIP* scip, /**< SCIP data structure */
15925  SCIP_SOL** sol, /**< pointer to primal CIP solution; is cleared in function call */
15926  SCIP_Bool* stored /**< stores whether given solution was good enough to keep */
15927  );
15928 
15929 /** adds current LP/pseudo solution to solution storage
15930  *
15931  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15932  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15933  *
15934  * @pre This method can be called if SCIP is in one of the following stages:
15935  * - \ref SCIP_STAGE_PRESOLVED
15936  * - \ref SCIP_STAGE_SOLVING
15937  */
15938 extern
15940  SCIP* scip, /**< SCIP data structure */
15941  SCIP_HEUR* heur, /**< heuristic that found the solution */
15942  SCIP_Bool* stored /**< stores whether given solution was good enough to keep */
15943  );
15944 
15945 /** checks solution for feasibility; if possible, adds it to storage by copying
15946  *
15947  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15948  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15949  *
15950  * @pre This method can be called if SCIP is in one of the following stages:
15951  * - \ref SCIP_STAGE_TRANSFORMED
15952  * - \ref SCIP_STAGE_INITPRESOLVE
15953  * - \ref SCIP_STAGE_PRESOLVING
15954  * - \ref SCIP_STAGE_EXITPRESOLVE
15955  * - \ref SCIP_STAGE_PRESOLVED
15956  * - \ref SCIP_STAGE_SOLVING
15957  *
15958  * @note Do not call during propagation, use heur_trysol instead.
15959  */
15960 extern
15962  SCIP* scip, /**< SCIP data structure */
15963  SCIP_SOL* sol, /**< primal CIP solution */
15964  SCIP_Bool printreason, /**< should all reasons of violations be printed? */
15965  SCIP_Bool checkbounds, /**< should the bounds of the variables be checked? */
15966  SCIP_Bool checkintegrality, /**< has integrality to be checked? */
15967  SCIP_Bool checklprows, /**< have current LP rows (both local and global) to be checked? */
15968  SCIP_Bool* stored /**< stores whether given solution was feasible and good enough to keep */
15969  );
15970 
15971 /** checks primal solution; if feasible, adds it to storage; solution is freed afterwards
15972  *
15973  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
15974  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
15975  *
15976  * @pre This method can be called if SCIP is in one of the following stages:
15977  * - \ref SCIP_STAGE_TRANSFORMED
15978  * - \ref SCIP_STAGE_INITPRESOLVE
15979  * - \ref SCIP_STAGE_PRESOLVING
15980  * - \ref SCIP_STAGE_EXITPRESOLVE
15981  * - \ref SCIP_STAGE_PRESOLVED
15982  * - \ref SCIP_STAGE_SOLVING
15983  *
15984  * @note Do not call during propagation, use heur_trysol instead.
15985  */
15986 extern
15988  SCIP* scip, /**< SCIP data structure */
15989  SCIP_SOL** sol, /**< pointer to primal CIP solution; is cleared in function call */
15990  SCIP_Bool printreason, /**< should all reasons of violations be printed? */
15991  SCIP_Bool checkbounds, /**< should the bounds of the variables be checked? */
15992  SCIP_Bool checkintegrality, /**< has integrality to be checked? */
15993  SCIP_Bool checklprows, /**< have current LP rows (both local and global) to be checked? */
15994  SCIP_Bool* stored /**< stores whether solution was feasible and good enough to keep */
15995  );
15996 
15997 /** checks current LP/pseudo solution for feasibility; if possible, adds it to storage
15998  *
15999  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16000  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16001  *
16002  * @pre This method can be called if SCIP is in one of the following stages:
16003  * - \ref SCIP_STAGE_PRESOLVED
16004  * - \ref SCIP_STAGE_SOLVING
16005  */
16006 extern
16008  SCIP* scip, /**< SCIP data structure */
16009  SCIP_HEUR* heur, /**< heuristic that found the solution */
16010  SCIP_Bool printreason, /**< should all reasons of violations be printed? */
16011  SCIP_Bool checkintegrality, /**< has integrality to be checked? */
16012  SCIP_Bool checklprows, /**< have current LP rows (both local and global) to be checked? */
16013  SCIP_Bool* stored /**< stores whether given solution was feasible and good enough to keep */
16014  );
16015 
16016 /** checks solution for feasibility without adding it to the solution store
16017  *
16018  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16019  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16020  *
16021  * @pre This method can be called if SCIP is in one of the following stages:
16022  * - \ref SCIP_STAGE_PROBLEM
16023  * - \ref SCIP_STAGE_TRANSFORMED
16024  * - \ref SCIP_STAGE_INITPRESOLVE
16025  * - \ref SCIP_STAGE_PRESOLVING
16026  * - \ref SCIP_STAGE_EXITPRESOLVE
16027  * - \ref SCIP_STAGE_PRESOLVED
16028  * - \ref SCIP_STAGE_INITSOLVE
16029  * - \ref SCIP_STAGE_SOLVING
16030  * - \ref SCIP_STAGE_SOLVED
16031  */
16032 extern
16034  SCIP* scip, /**< SCIP data structure */
16035  SCIP_SOL* sol, /**< primal CIP solution */
16036  SCIP_Bool printreason, /**< should all reasons of violations be printed? */
16037  SCIP_Bool checkbounds, /**< should the bounds of the variables be checked? */
16038  SCIP_Bool checkintegrality, /**< has integrality to be checked? */
16039  SCIP_Bool checklprows, /**< have current LP rows (both local and global) to be checked? */
16040  SCIP_Bool* feasible /**< stores whether given solution is feasible */
16041  );
16042 
16043 /** checks solution for feasibility in original problem without adding it to the solution store;
16044  * this method is used to double check a solution in order to validate the presolving process
16045  *
16046  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16047  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16048  *
16049  * @pre This method can be called if SCIP is in one of the following stages:
16050  * - \ref SCIP_STAGE_PROBLEM
16051  * - \ref SCIP_STAGE_TRANSFORMED
16052  * - \ref SCIP_STAGE_INITPRESOLVE
16053  * - \ref SCIP_STAGE_PRESOLVING
16054  * - \ref SCIP_STAGE_EXITPRESOLVE
16055  * - \ref SCIP_STAGE_PRESOLVED
16056  * - \ref SCIP_STAGE_INITSOLVE
16057  * - \ref SCIP_STAGE_SOLVING
16058  * - \ref SCIP_STAGE_SOLVED
16059  */
16060 extern
16062  SCIP* scip, /**< SCIP data structure */
16063  SCIP_SOL* sol, /**< primal CIP solution */
16064  SCIP_Bool* feasible, /**< stores whether given solution is feasible */
16065  SCIP_Bool printreason, /**< should the reason for the violation be printed? */
16066  SCIP_Bool completely /**< should all violations be checked? */
16067  );
16068 
16069 /** return whether a primal ray is stored that proves unboundedness of the LP relaxation
16070  *
16071  * @return return whether a primal ray is stored that proves unboundedness of the LP relaxation
16072  *
16073  * @pre This method can be called if SCIP is in one of the following stages:
16074  * - \ref SCIP_STAGE_SOLVING
16075  * - \ref SCIP_STAGE_SOLVED
16076  */
16077 extern
16079  SCIP* scip /**< SCIP data structure */
16080  );
16081 
16082 /** gets value of given variable in primal ray causing unboundedness of the LP relaxation;
16083  * should only be called if such a ray is stored (check with SCIPhasPrimalRay())
16084  *
16085  * @return value of given variable in primal ray causing unboundedness of the LP relaxation
16086  *
16087  * @pre This method can be called if SCIP is in one of the following stages:
16088  * - \ref SCIP_STAGE_SOLVING
16089  * - \ref SCIP_STAGE_SOLVED
16090  */
16091 extern
16093  SCIP* scip, /**< SCIP data structure */
16094  SCIP_VAR* var /**< variable to get value for */
16095  );
16096 
16097 /**@} */
16098 
16099 
16100 
16101 
16102 /*
16103  * event methods
16104  */
16105 
16106 /**@name Event Methods
16107  *
16108  * Events can only be caught during the operation on the transformed problem.
16109  * Events on variables can only be caught for transformed variables.
16110  * If you want to catch an event for an original variable, you have to get the corresponding transformed variable
16111  * with a call to SCIPgetTransformedVar() and catch the event on the transformed variable.
16112  */
16113 /**@{ */
16114 
16115 /** catches a global (not variable or row dependent) event
16116  *
16117  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16118  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16119  *
16120  * @pre This method can be called if @p scip is in one of the following stages:
16121  * - \ref SCIP_STAGE_TRANSFORMING
16122  * - \ref SCIP_STAGE_TRANSFORMED
16123  * - \ref SCIP_STAGE_INITPRESOLVE
16124  * - \ref SCIP_STAGE_PRESOLVING
16125  * - \ref SCIP_STAGE_EXITPRESOLVE
16126  * - \ref SCIP_STAGE_PRESOLVED
16127  * - \ref SCIP_STAGE_INITSOLVE
16128  * - \ref SCIP_STAGE_SOLVING
16129  * - \ref SCIP_STAGE_SOLVED
16130  * - \ref SCIP_STAGE_EXITSOLVE
16131  * - \ref SCIP_STAGE_FREETRANS
16132  */
16133 extern
16135  SCIP* scip, /**< SCIP data structure */
16136  SCIP_EVENTTYPE eventtype, /**< event type mask to select events to catch */
16137  SCIP_EVENTHDLR* eventhdlr, /**< event handler to process events with */
16138  SCIP_EVENTDATA* eventdata, /**< event data to pass to the event handler when processing this event */
16139  int* filterpos /**< pointer to store position of event filter entry, or NULL */
16140  );
16141 
16142 /** drops a global event (stops to track event)
16143  *
16144  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16145  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16146  *
16147  * @pre This method can be called if @p scip is in one of the following stages:
16148  * - \ref SCIP_STAGE_TRANSFORMING
16149  * - \ref SCIP_STAGE_TRANSFORMED
16150  * - \ref SCIP_STAGE_INITPRESOLVE
16151  * - \ref SCIP_STAGE_PRESOLVING
16152  * - \ref SCIP_STAGE_EXITPRESOLVE
16153  * - \ref SCIP_STAGE_PRESOLVED
16154  * - \ref SCIP_STAGE_INITSOLVE
16155  * - \ref SCIP_STAGE_SOLVING
16156  * - \ref SCIP_STAGE_SOLVED
16157  * - \ref SCIP_STAGE_EXITSOLVE
16158  * - \ref SCIP_STAGE_FREETRANS
16159  */
16160 extern
16162  SCIP* scip, /**< SCIP data structure */
16163  SCIP_EVENTTYPE eventtype, /**< event type mask of dropped event */
16164  SCIP_EVENTHDLR* eventhdlr, /**< event handler to process events with */
16165  SCIP_EVENTDATA* eventdata, /**< event data to pass to the event handler when processing this event */
16166  int filterpos /**< position of event filter entry returned by SCIPcatchEvent(), or -1 */
16167  );
16168 
16169 /** catches an objective value or domain change event on the given transformed variable
16170  *
16171  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16172  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16173  *
16174  * @pre This method can be called if @p scip is in one of the following stages:
16175  * - \ref SCIP_STAGE_TRANSFORMING
16176  * - \ref SCIP_STAGE_TRANSFORMED
16177  * - \ref SCIP_STAGE_INITPRESOLVE
16178  * - \ref SCIP_STAGE_PRESOLVING
16179  * - \ref SCIP_STAGE_EXITPRESOLVE
16180  * - \ref SCIP_STAGE_PRESOLVED
16181  * - \ref SCIP_STAGE_INITSOLVE
16182  * - \ref SCIP_STAGE_SOLVING
16183  * - \ref SCIP_STAGE_SOLVED
16184  * - \ref SCIP_STAGE_EXITSOLVE
16185  * - \ref SCIP_STAGE_FREETRANS
16186  */
16187 extern
16189  SCIP* scip, /**< SCIP data structure */
16190  SCIP_VAR* var, /**< transformed variable to catch event for */
16191  SCIP_EVENTTYPE eventtype, /**< event type mask to select events to catch */
16192  SCIP_EVENTHDLR* eventhdlr, /**< event handler to process events with */
16193  SCIP_EVENTDATA* eventdata, /**< event data to pass to the event handler when processing this event */
16194  int* filterpos /**< pointer to store position of event filter entry, or NULL */
16195  );
16196 
16197 /** drops an objective value or domain change event (stops to track event) on the given transformed variable
16198  *
16199  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16200  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16201  *
16202  * @pre This method can be called if @p scip is in one of the following stages:
16203  * - \ref SCIP_STAGE_TRANSFORMING
16204  * - \ref SCIP_STAGE_TRANSFORMED
16205  * - \ref SCIP_STAGE_INITPRESOLVE
16206  * - \ref SCIP_STAGE_PRESOLVING
16207  * - \ref SCIP_STAGE_EXITPRESOLVE
16208  * - \ref SCIP_STAGE_PRESOLVED
16209  * - \ref SCIP_STAGE_INITSOLVE
16210  * - \ref SCIP_STAGE_SOLVING
16211  * - \ref SCIP_STAGE_SOLVED
16212  * - \ref SCIP_STAGE_EXITSOLVE
16213  * - \ref SCIP_STAGE_FREETRANS
16214  */
16215 extern
16217  SCIP* scip, /**< SCIP data structure */
16218  SCIP_VAR* var, /**< transformed variable to drop event for */
16219  SCIP_EVENTTYPE eventtype, /**< event type mask of dropped event */
16220  SCIP_EVENTHDLR* eventhdlr, /**< event handler to process events with */
16221  SCIP_EVENTDATA* eventdata, /**< event data to pass to the event handler when processing this event */
16222  int filterpos /**< position of event filter entry returned by SCIPcatchVarEvent(), or -1 */
16223  );
16224 
16225 /** catches a row coefficient, constant, or side change event on the given row
16226  *
16227  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16228  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16229  *
16230  * @pre This method can be called if @p scip is in one of the following stages:
16231  * - \ref SCIP_STAGE_TRANSFORMING
16232  * - \ref SCIP_STAGE_TRANSFORMED
16233  * - \ref SCIP_STAGE_INITPRESOLVE
16234  * - \ref SCIP_STAGE_PRESOLVING
16235  * - \ref SCIP_STAGE_EXITPRESOLVE
16236  * - \ref SCIP_STAGE_PRESOLVED
16237  * - \ref SCIP_STAGE_INITSOLVE
16238  * - \ref SCIP_STAGE_SOLVING
16239  * - \ref SCIP_STAGE_SOLVED
16240  * - \ref SCIP_STAGE_EXITSOLVE
16241  * - \ref SCIP_STAGE_FREETRANS
16242  */
16243 extern
16245  SCIP* scip, /**< SCIP data structure */
16246  SCIP_ROW* row, /**< linear row to catch event for */
16247  SCIP_EVENTTYPE eventtype, /**< event type mask to select events to catch */
16248  SCIP_EVENTHDLR* eventhdlr, /**< event handler to process events with */
16249  SCIP_EVENTDATA* eventdata, /**< event data to pass to the event handler when processing this event */
16250  int* filterpos /**< pointer to store position of event filter entry, or NULL */
16251  );
16252 
16253 /** drops a row coefficient, constant, or side change event (stops to track event) on the given row
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 @p scip is in one of the following stages:
16259  * - \ref SCIP_STAGE_TRANSFORMING
16260  * - \ref SCIP_STAGE_TRANSFORMED
16261  * - \ref SCIP_STAGE_INITPRESOLVE
16262  * - \ref SCIP_STAGE_PRESOLVING
16263  * - \ref SCIP_STAGE_EXITPRESOLVE
16264  * - \ref SCIP_STAGE_PRESOLVED
16265  * - \ref SCIP_STAGE_INITSOLVE
16266  * - \ref SCIP_STAGE_SOLVING
16267  * - \ref SCIP_STAGE_SOLVED
16268  * - \ref SCIP_STAGE_EXITSOLVE
16269  * - \ref SCIP_STAGE_FREETRANS
16270  */
16271 extern
16273  SCIP* scip, /**< SCIP data structure */
16274  SCIP_ROW* row, /**< linear row to drop event for */
16275  SCIP_EVENTTYPE eventtype, /**< event type mask of dropped event */
16276  SCIP_EVENTHDLR* eventhdlr, /**< event handler to process events with */
16277  SCIP_EVENTDATA* eventdata, /**< event data to pass to the event handler when processing this event */
16278  int filterpos /**< position of event filter entry returned by SCIPcatchVarEvent(), or -1 */
16279  );
16280 
16281 /**@} */
16282 
16283 
16284 
16285 
16286 /*
16287  * tree methods
16288  */
16289 
16290 /**@name Tree Methods */
16291 /**@{ */
16292 
16293 /** gets current node in the tree
16294  *
16295  * @return the current node of the search tree
16296  *
16297  * @pre This method can be called if @p scip is in one of the following stages:
16298  * - \ref SCIP_STAGE_INITPRESOLVE
16299  * - \ref SCIP_STAGE_PRESOLVING
16300  * - \ref SCIP_STAGE_EXITPRESOLVE
16301  * - \ref SCIP_STAGE_SOLVING
16302  */
16303 extern
16305  SCIP* scip /**< SCIP data structure */
16306  );
16307 
16308 /** gets the root node of the tree
16309  *
16310  * @return the root node of the search tree
16311  *
16312  * @pre This method can be called if @p scip is in one of the following stages:
16313  * - \ref SCIP_STAGE_INITPRESOLVE
16314  * - \ref SCIP_STAGE_PRESOLVING
16315  * - \ref SCIP_STAGE_EXITPRESOLVE
16316  * - \ref SCIP_STAGE_SOLVING
16317  */
16318 extern
16320  SCIP* scip /**< SCIP data structure */
16321  );
16322 
16323 /** returns whether the current node is already solved and only propagated again
16324  *
16325  * @return TRUE is returned if \SCIP performance repropagation, otherwise FALSE.
16326  *
16327  * @pre This method can be called if @p scip is in one of the following stages:
16328  * - \ref SCIP_STAGE_INITPRESOLVE
16329  * - \ref SCIP_STAGE_PRESOLVING
16330  * - \ref SCIP_STAGE_EXITPRESOLVE
16331  * - \ref SCIP_STAGE_SOLVING
16332  */
16333 extern
16335  SCIP* scip /**< SCIP data structure */
16336  );
16337 
16338 /** gets children of focus node along with the number of children
16339  *
16340  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16341  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16342  *
16343  * @pre This method can be called if @p scip is in one of the following stages:
16344  * - \ref SCIP_STAGE_SOLVING
16345  */
16346 extern
16348  SCIP* scip, /**< SCIP data structure */
16349  SCIP_NODE*** children, /**< pointer to store children array, or NULL if not needed */
16350  int* nchildren /**< pointer to store number of children, or NULL if not needed */
16351  );
16352 
16353 /** gets number of children of focus node
16354  *
16355  * @return number of children of the focus node
16356  *
16357  * @pre This method can be called if @p scip is in one of the following stages:
16358  * - \ref SCIP_STAGE_SOLVING
16359  */
16360 extern
16361 int SCIPgetNChildren(
16362  SCIP* scip /**< SCIP data structure */
16363  );
16364 
16365 /** gets siblings of focus node along with the number of siblings
16366  *
16367  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16368  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16369  *
16370  * @pre This method can be called if @p scip is in one of the following stages:
16371  * - \ref SCIP_STAGE_SOLVING
16372  */
16373 extern
16375  SCIP* scip, /**< SCIP data structure */
16376  SCIP_NODE*** siblings, /**< pointer to store siblings array, or NULL if not needed */
16377  int* nsiblings /**< pointer to store number of siblings, or NULL if not needed */
16378  );
16379 
16380 /** gets number of siblings of focus node
16381  *
16382  * @return the number of siblings of focus node
16383  *
16384  * @pre This method can be called if @p scip is in one of the following stages:
16385  * - \ref SCIP_STAGE_SOLVING
16386  */
16387 extern
16388 int SCIPgetNSiblings(
16389  SCIP* scip /**< SCIP data structure */
16390  );
16391 
16392 /** gets leaves of the tree along with the number of leaves
16393  *
16394  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16395  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16396  *
16397  * @pre This method can be called if @p scip is in one of the following stages:
16398  * - \ref SCIP_STAGE_SOLVING
16399  */
16400 extern
16402  SCIP* scip, /**< SCIP data structure */
16403  SCIP_NODE*** leaves, /**< pointer to store leaves array, or NULL if not needed */
16404  int* nleaves /**< pointer to store number of leaves, or NULL if not needed */
16405  );
16406 
16407 /** gets number of leaves in the tree
16408  *
16409  * @return the number of leaves in the tree
16410  *
16411  * @pre This method can be called if @p scip is in one of the following stages:
16412  * - \ref SCIP_STAGE_SOLVING
16413  */
16414 extern
16415 int SCIPgetNLeaves(
16416  SCIP* scip /**< SCIP data structure */
16417  );
16418 
16419 /** gets the best child of the focus node w.r.t. the node selection priority assigned by the branching rule
16420  *
16421  * @return the best child of the focus node w.r.t. the node selection priority assigned by the branching rule
16422  *
16423  * @pre This method can be called if @p scip is in one of the following stages:
16424  * - \ref SCIP_STAGE_SOLVING
16425  */
16426 extern
16428  SCIP* scip /**< SCIP data structure */
16429  );
16430 
16431 /** gets the best sibling of the focus node w.r.t. the node selection priority assigned by the branching rule
16432  *
16433  * @return the best sibling of the focus node w.r.t. the node selection priority assigned by the branching rule
16434  *
16435  * @pre This method can be called if @p scip is in one of the following stages:
16436  * - \ref SCIP_STAGE_SOLVING
16437  */
16438 extern
16440  SCIP* scip /**< SCIP data structure */
16441  );
16442 
16443 /** gets the best child of the focus node w.r.t. the node selection strategy
16444  *
16445  * @return the best child of the focus node w.r.t. the node selection strategy
16446  *
16447  * @pre This method can be called if @p scip is in one of the following stages:
16448  * - \ref SCIP_STAGE_SOLVING
16449  */
16450 extern
16452  SCIP* scip /**< SCIP data structure */
16453  );
16454 
16455 /** gets the best sibling of the focus node w.r.t. the node selection strategy
16456  *
16457  * @return the best sibling of the focus node w.r.t. the node selection strategy
16458  *
16459  * @pre This method can be called if @p scip is in one of the following stages:
16460  * - \ref SCIP_STAGE_SOLVING
16461  */
16462 extern
16464  SCIP* scip /**< SCIP data structure */
16465  );
16466 
16467 /** gets the best leaf from the node queue w.r.t. the node selection strategy
16468  *
16469  * @return the best leaf from the node queue w.r.t. the node selection strategy
16470  *
16471  * @pre This method can be called if @p scip is in one of the following stages:
16472  * - \ref SCIP_STAGE_SOLVING
16473  */
16474 extern
16476  SCIP* scip /**< SCIP data structure */
16477  );
16478 
16479 /** gets the best node from the tree (child, sibling, or leaf) w.r.t. the node selection strategy
16480  *
16481  * @return the best node from the tree (child, sibling, or leaf) w.r.t. the node selection strategy
16482  *
16483  * @pre This method can be called if @p scip is in one of the following stages:
16484  * - \ref SCIP_STAGE_SOLVING
16485  */
16486 extern
16488  SCIP* scip /**< SCIP data structure */
16489  );
16490 
16491 /** gets the node with smallest lower bound from the tree (child, sibling, or leaf)
16492  *
16493  * @return the node with smallest lower bound from the tree (child, sibling, or leaf)
16494  *
16495  * @pre This method can be called if @p scip is in one of the following stages:
16496  * - \ref SCIP_STAGE_SOLVING
16497  */
16498 extern
16500  SCIP* scip /**< SCIP data structure */
16501  );
16502 
16503 /** access to all data of open nodes (leaves, children, and siblings)
16504  *
16505  * @pre This method can be called if @p scip is in one of the following stages:
16506  * - \ref SCIP_STAGE_SOLVING
16507  */
16508 extern
16510  SCIP* scip, /**< SCIP data structure */
16511  SCIP_NODE*** leaves, /**< pointer to store the leaves, or NULL if not needed */
16512  SCIP_NODE*** children, /**< pointer to store the children, or NULL if not needed */
16513  SCIP_NODE*** siblings, /**< pointer to store the siblings, or NULL if not needed */
16514  int* nleaves, /**< pointer to store the number of leaves, or NULL */
16515  int* nchildren, /**< pointer to store the number of children, or NULL */
16516  int* nsiblings /**< pointer to store the number of siblings, or NULL */
16517  );
16518 
16519 /** cuts off node and whole sub tree from branch and bound tree
16520  *
16521  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16522  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16523  *
16524  * @pre This method can be called if @p scip is in one of the following stages:
16525  * - \ref SCIP_STAGE_SOLVING
16526  */
16527 extern
16529  SCIP* scip, /**< SCIP data structure */
16530  SCIP_NODE* node /**< node that should be cut off */
16531  );
16532 
16533 /** marks the given node to be propagated again the next time a node of its subtree is processed
16534  *
16535  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16536  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16537  *
16538  * @pre This method can be called if @p scip is in one of the following stages:
16539  * - \ref SCIP_STAGE_SOLVING
16540  */
16541 extern
16543  SCIP* scip, /**< SCIP data structure */
16544  SCIP_NODE* node /**< node that should be propagated again */
16545  );
16546 
16547 /** returns depth of first node in active path that is marked being cutoff
16548  *
16549  * @return depth of first node in active path that is marked being cutoff
16550  *
16551  * @pre This method can be called if @p scip is in one of the following stages:
16552  * - \ref SCIP_STAGE_SOLVING
16553  */
16554 extern
16555 int SCIPgetCutoffdepth(
16556  SCIP* scip /**< SCIP data structure */
16557  );
16558 
16559 /** returns depth of first node in active path that has to be propagated again
16560  *
16561  * @return depth of first node in active path that has to be propagated again
16562  *
16563  * @pre This method can be called if @p scip is in one of the following stages:
16564  * - \ref SCIP_STAGE_SOLVING
16565  */
16566 extern
16567 int SCIPgetRepropdepth(
16568  SCIP* scip /**< SCIP data structure */
16569  );
16570 
16571 /** prints all branching decisions on variables from the root to the given node
16572  *
16573  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
16574  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
16575  *
16576  * @pre This method can be called if @p scip is in one of the following stages:
16577  * - \ref SCIP_STAGE_SOLVING
16578  */
16579 extern
16581  SCIP* scip, /**< SCIP data structure */
16582  SCIP_NODE* node, /**< node data */
16583  FILE* file /**< output file (or NULL for standard output) */
16584  );
16585 
16586 /**@} */
16587 
16588 
16589 /*
16590  * statistic methods
16591  */
16592 
16593 /**@name Statistic Methods */
16594 /**@{ */
16595 
16596 /** gets number of branch and bound runs performed, including the current run
16597  *
16598  * @return the number of branch and bound runs performed, including the current run
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_TRANSFORMING
16603  * - \ref SCIP_STAGE_TRANSFORMED
16604  * - \ref SCIP_STAGE_INITPRESOLVE
16605  * - \ref SCIP_STAGE_PRESOLVING
16606  * - \ref SCIP_STAGE_EXITPRESOLVE
16607  * - \ref SCIP_STAGE_PRESOLVED
16608  * - \ref SCIP_STAGE_INITSOLVE
16609  * - \ref SCIP_STAGE_SOLVING
16610  * - \ref SCIP_STAGE_SOLVED
16611  * - \ref SCIP_STAGE_EXITSOLVE
16612  * - \ref SCIP_STAGE_FREETRANS
16613  */
16614 extern
16615 int SCIPgetNRuns(
16616  SCIP* scip /**< SCIP data structure */
16617  );
16618 
16619 /** gets number of processed nodes in current run, including the focus node
16620  *
16621  * @return the number of processed nodes in current run, including the focus node
16622  *
16623  * @pre This method can be called if SCIP is in one of the following stages:
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_FREETRANS
16636  */
16637 extern
16639  SCIP* scip /**< SCIP data structure */
16640  );
16641 
16642 /** gets total number of processed nodes in all runs, including the focus node
16643  *
16644  * @return the total number of processed nodes in all runs, including the focus node
16645  *
16646  * @pre This method can be called if SCIP is in one of the following stages:
16647  * - \ref SCIP_STAGE_PROBLEM
16648  * - \ref SCIP_STAGE_TRANSFORMING
16649  * - \ref SCIP_STAGE_TRANSFORMED
16650  * - \ref SCIP_STAGE_INITPRESOLVE
16651  * - \ref SCIP_STAGE_PRESOLVING
16652  * - \ref SCIP_STAGE_EXITPRESOLVE
16653  * - \ref SCIP_STAGE_PRESOLVED
16654  * - \ref SCIP_STAGE_INITSOLVE
16655  * - \ref SCIP_STAGE_SOLVING
16656  * - \ref SCIP_STAGE_SOLVED
16657  * - \ref SCIP_STAGE_EXITSOLVE
16658  * - \ref SCIP_STAGE_FREETRANS
16659  */
16660 extern
16662  SCIP* scip /**< SCIP data structure */
16663  );
16664 
16665 /** gets number of nodes left in the tree (children + siblings + leaves)
16666  *
16667  * @return the number of nodes left in the tree (children + siblings + leaves)
16668  *
16669  * @pre This method can be called if SCIP is in one of the following stages:
16670  * - \ref SCIP_STAGE_PRESOLVED
16671  * - \ref SCIP_STAGE_SOLVING
16672  * - \ref SCIP_STAGE_SOLVED
16673  */
16674 extern
16675 int SCIPgetNNodesLeft(
16676  SCIP* scip /**< SCIP data structure */
16677  );
16678 
16679 /** gets total number of LPs solved so far
16680  *
16681  * @return the total number of LPs solved so far
16682  *
16683  * @pre This method can be called if SCIP is in one of the following stages:
16684  * - \ref SCIP_STAGE_PRESOLVED
16685  * - \ref SCIP_STAGE_SOLVING
16686  * - \ref SCIP_STAGE_SOLVED
16687  */
16688 extern
16690  SCIP* scip /**< SCIP data structure */
16691  );
16692 
16693 /** gets total number of iterations used so far in primal and dual simplex and barrier algorithm
16694  *
16695  * @return the total number of iterations used so far in primal and dual simplex and barrier algorithm
16696  *
16697  * @pre This method can be called if SCIP is in one of the following stages:
16698  * - \ref SCIP_STAGE_PRESOLVING
16699  * - \ref SCIP_STAGE_PRESOLVED
16700  * - \ref SCIP_STAGE_SOLVING
16701  * - \ref SCIP_STAGE_SOLVED
16702  */
16703 extern
16705  SCIP* scip /**< SCIP data structure */
16706  );
16707 
16708 /** gets total number of iterations used so far in primal and dual simplex and barrier algorithm for the root node
16709  *
16710  * @return the total number of iterations used so far in primal and dual simplex and barrier algorithm for the root node
16711  *
16712  * @pre This method can be called if SCIP is in one of the following stages:
16713  * - \ref SCIP_STAGE_PRESOLVED
16714  * - \ref SCIP_STAGE_SOLVING
16715  * - \ref SCIP_STAGE_SOLVED
16716  */
16717 extern
16719  SCIP* scip /**< SCIP data structure */
16720  );
16721 
16722 /** gets total number of iterations used in primal and dual simplex and barrier algorithm for the first LP at the root
16723  * node
16724  *
16725  * @return the total number of iterations used in primal and dual simplex and barrier algorithm for the first root LP
16726  *
16727  * @pre This method can be called if SCIP is in one of the following stages:
16728  * - \ref SCIP_STAGE_PRESOLVED
16729  * - \ref SCIP_STAGE_SOLVING
16730  * - \ref SCIP_STAGE_SOLVED
16731  */
16732 extern
16734  SCIP* scip /**< SCIP data structure */
16735  );
16736 
16737 /** gets total number of primal LPs solved so far
16738  *
16739  * @return the total number of primal LPs solved so far
16740  *
16741  * @pre This method can be called if SCIP is in one of the following stages:
16742  * - \ref SCIP_STAGE_PRESOLVED
16743  * - \ref SCIP_STAGE_SOLVING
16744  * - \ref SCIP_STAGE_SOLVED
16745  */
16746 extern
16748  SCIP* scip /**< SCIP data structure */
16749  );
16750 
16751 /** gets total number of iterations used so far in primal simplex
16752  *
16753  * @return total number of iterations used so far in primal simplex
16754  *
16755  * @pre This method can be called if SCIP is in one of the following stages:
16756  * - \ref SCIP_STAGE_PRESOLVED
16757  * - \ref SCIP_STAGE_SOLVING
16758  * - \ref SCIP_STAGE_SOLVED
16759  */
16760 extern
16762  SCIP* scip /**< SCIP data structure */
16763  );
16764 
16765 /** gets total number of dual LPs solved so far
16766  *
16767  * @return the total number of dual LPs solved so far
16768  *
16769  * @pre This method can be called if SCIP is in one of the following stages:
16770  * - \ref SCIP_STAGE_PRESOLVED
16771  * - \ref SCIP_STAGE_SOLVING
16772  * - \ref SCIP_STAGE_SOLVED
16773  */
16774 extern
16776  SCIP* scip /**< SCIP data structure */
16777  );
16778 
16779 /** gets total number of iterations used so far in dual simplex
16780  *
16781  * @return the total number of iterations used so far in dual simplex
16782  *
16783  * @pre This method can be called if SCIP is in one of the following stages:
16784  * - \ref SCIP_STAGE_PRESOLVED
16785  * - \ref SCIP_STAGE_SOLVING
16786  * - \ref SCIP_STAGE_SOLVED
16787  */
16788 extern
16790  SCIP* scip /**< SCIP data structure */
16791  );
16792 
16793 /** gets total number of barrier LPs solved so far
16794  *
16795  * @return the total number of barrier LPs solved so far
16796  *
16797  * @pre This method can be called if SCIP is in one of the following stages:
16798  * - \ref SCIP_STAGE_PRESOLVED
16799  * - \ref SCIP_STAGE_SOLVING
16800  * - \ref SCIP_STAGE_SOLVED
16801  */
16802 extern
16804  SCIP* scip /**< SCIP data structure */
16805  );
16806 
16807 /** gets total number of iterations used so far in barrier algorithm
16808  *
16809  * @return the total number of iterations used so far in barrier algorithm
16810  *
16811  * @pre This method can be called if SCIP is in one of the following stages:
16812  * - \ref SCIP_STAGE_PRESOLVED
16813  * - \ref SCIP_STAGE_SOLVING
16814  * - \ref SCIP_STAGE_SOLVED
16815  */
16816 extern
16818  SCIP* scip /**< SCIP data structure */
16819  );
16820 
16821 /** gets total number of LPs solved so far that were resolved from an advanced start basis
16822  *
16823  * @return the total number of LPs solved so far that were resolved from an advanced start basis
16824  *
16825  * @pre This method can be called if SCIP is in one of the following stages:
16826  * - \ref SCIP_STAGE_PRESOLVED
16827  * - \ref SCIP_STAGE_SOLVING
16828  * - \ref SCIP_STAGE_SOLVED
16829  */
16830 extern
16832  SCIP* scip /**< SCIP data structure */
16833  );
16834 
16835 /** gets total number of simplex iterations used so far in primal and dual simplex calls where an advanced start basis
16836  * was available
16837  *
16838  * @return the total number of simplex iterations used so far in primal and dual simplex calls where an advanced start
16839  * basis was available
16840  *
16841  * @pre This method can be called if SCIP is in one of the following stages:
16842  * - \ref SCIP_STAGE_PRESOLVED
16843  * - \ref SCIP_STAGE_SOLVING
16844  * - \ref SCIP_STAGE_SOLVED
16845  */
16846 extern
16848  SCIP* scip /**< SCIP data structure */
16849  );
16850 
16851 /** gets total number of primal LPs solved so far that were resolved from an advanced start basis
16852  *
16853  * @return the total number of primal LPs solved so far that were resolved from an advanced start basis
16854  *
16855  * @pre This method can be called if SCIP is in one of the following stages:
16856  * - \ref SCIP_STAGE_PRESOLVED
16857  * - \ref SCIP_STAGE_SOLVING
16858  * - \ref SCIP_STAGE_SOLVED
16859  */
16860 extern
16862  SCIP* scip /**< SCIP data structure */
16863  );
16864 
16865 /** gets total number of simplex iterations used so far in primal simplex calls where an advanced start basis
16866  * was available
16867  *
16868  * @return the total number of simplex iterations used so far in primal simplex calls where an advanced start
16869  * basis was available
16870  *
16871  * @pre This method can be called if SCIP is in one of the following stages:
16872  * - \ref SCIP_STAGE_PRESOLVED
16873  * - \ref SCIP_STAGE_SOLVING
16874  * - \ref SCIP_STAGE_SOLVED
16875  */
16876 extern
16878  SCIP* scip /**< SCIP data structure */
16879  );
16880 
16881 /** gets total number of dual LPs solved so far that were resolved from an advanced start basis
16882  *
16883  * @return the total number of dual LPs solved so far that were resolved from an advanced start basis
16884  *
16885  * @pre This method can be called if SCIP is in one of the following stages:
16886  * - \ref SCIP_STAGE_PRESOLVED
16887  * - \ref SCIP_STAGE_SOLVING
16888  * - \ref SCIP_STAGE_SOLVED
16889  */
16890 extern
16892  SCIP* scip /**< SCIP data structure */
16893  );
16894 
16895 /** gets total number of simplex iterations used so far in dual simplex calls where an advanced start basis
16896  * was available
16897  *
16898  * @return the total number of simplex iterations used so far in dual simplex calls where an advanced start
16899  * basis was available
16900  *
16901  * @pre This method can be called if SCIP is in one of the following stages:
16902  * - \ref SCIP_STAGE_PRESOLVED
16903  * - \ref SCIP_STAGE_SOLVING
16904  * - \ref SCIP_STAGE_SOLVED
16905  */
16906 extern
16908  SCIP* scip /**< SCIP data structure */
16909  );
16910 
16911 /** gets total number of LPs solved so far for node relaxations
16912  *
16913  * @return the total number of LPs solved so far for node relaxations
16914  *
16915  * @pre This method can be called if SCIP is in one of the following stages:
16916  * - \ref SCIP_STAGE_PRESOLVED
16917  * - \ref SCIP_STAGE_SOLVING
16918  * - \ref SCIP_STAGE_SOLVED
16919  */
16920 extern
16922  SCIP* scip /**< SCIP data structure */
16923  );
16924 
16925 /** gets total number of simplex iterations used so far for node relaxations
16926  *
16927  * @return the total number of simplex iterations used so far for node relaxations
16928  *
16929  * @pre This method can be called if SCIP is in one of the following stages:
16930  * - \ref SCIP_STAGE_PRESOLVED
16931  * - \ref SCIP_STAGE_SOLVING
16932  * - \ref SCIP_STAGE_SOLVED
16933  */
16934 extern
16936  SCIP* scip /**< SCIP data structure */
16937  );
16938 
16939 /** gets total number of LPs solved so far for initial LP in node relaxations
16940  *
16941  * @return the total number of LPs solved so far for initial LP in node relaxations
16942  *
16943  * @pre This method can be called if SCIP is in one of the following stages:
16944  * - \ref SCIP_STAGE_PRESOLVED
16945  * - \ref SCIP_STAGE_SOLVING
16946  * - \ref SCIP_STAGE_SOLVED
16947  */
16948 extern
16950  SCIP* scip /**< SCIP data structure */
16951  );
16952 
16953 /** gets total number of simplex iterations used so far for initial LP in node relaxations
16954  *
16955  * @return the total number of simplex iterations used so far for initial LP in node relaxations
16956  *
16957  * @pre This method can be called if SCIP is in one of the following stages:
16958  * - \ref SCIP_STAGE_PRESOLVED
16959  * - \ref SCIP_STAGE_SOLVING
16960  * - \ref SCIP_STAGE_SOLVED
16961  */
16962 extern
16964  SCIP* scip /**< SCIP data structure */
16965  );
16966 
16967 /** gets total number of LPs solved so far during diving and probing
16968  *
16969  * @return total number of LPs solved so far during diving and probing
16970  *
16971  * @pre This method can be called if SCIP is in one of the following stages:
16972  * - \ref SCIP_STAGE_PRESOLVED
16973  * - \ref SCIP_STAGE_SOLVING
16974  * - \ref SCIP_STAGE_SOLVED
16975  */
16976 extern
16978  SCIP* scip /**< SCIP data structure */
16979  );
16980 
16981 /** gets total number of simplex iterations used so far during diving and probing
16982  *
16983  * @return the total number of simplex iterations used so far during diving and probing
16984  *
16985  * @pre This method can be called if SCIP is in one of the following stages:
16986  * - \ref SCIP_STAGE_PRESOLVED
16987  * - \ref SCIP_STAGE_SOLVING
16988  * - \ref SCIP_STAGE_SOLVED
16989  */
16990 extern
16992  SCIP* scip /**< SCIP data structure */
16993  );
16994 
16995 /** gets total number of times, strong branching was called (each call represents solving two LPs)
16996  *
16997  * @return the total number of times, strong branching was called (each call represents solving two LPs)
16998  *
16999  * @pre This method can be called if SCIP is in one of the following stages:
17000  * - \ref SCIP_STAGE_PRESOLVED
17001  * - \ref SCIP_STAGE_SOLVING
17002  * - \ref SCIP_STAGE_SOLVED
17003  */
17004 extern
17006  SCIP* scip /**< SCIP data structure */
17007  );
17008 
17009 /** gets total number of simplex iterations used so far in strong branching
17010  *
17011  * @return the total number of simplex iterations used so far in strong branching
17012  *
17013  * @pre This method can be called if SCIP is in one of the following stages:
17014  * - \ref SCIP_STAGE_PRESOLVED
17015  * - \ref SCIP_STAGE_SOLVING
17016  * - \ref SCIP_STAGE_SOLVED
17017  */
17018 extern
17020  SCIP* scip /**< SCIP data structure */
17021  );
17022 
17023 /** gets total number of times, strong branching was called at the root node (each call represents solving two LPs)
17024  *
17025  * @return the total number of times, strong branching was called at the root node (each call represents solving two LPs)
17026  *
17027  * @pre This method can be called if SCIP is in one of the following stages:
17028  * - \ref SCIP_STAGE_PRESOLVED
17029  * - \ref SCIP_STAGE_SOLVING
17030  * - \ref SCIP_STAGE_SOLVED
17031  */
17032 extern
17034  SCIP* scip /**< SCIP data structure */
17035  );
17036 
17037 /** gets total number of simplex iterations used so far in strong branching at the root node
17038  *
17039  * @return the total number of simplex iterations used so far in strong branching at the root node
17040  *
17041  * @pre This method can be called if SCIP is in one of the following stages:
17042  * - \ref SCIP_STAGE_PRESOLVED
17043  * - \ref SCIP_STAGE_SOLVING
17044  * - \ref SCIP_STAGE_SOLVED
17045  */
17046 extern
17048  SCIP* scip /**< SCIP data structure */
17049  );
17050 
17051 /** gets number of pricing rounds performed so far at the current node
17052  *
17053  * @return the number of pricing rounds performed so far at the current node
17054  *
17055  * @pre This method can be called if SCIP is in one of the following stages:
17056  * - \ref SCIP_STAGE_SOLVING
17057  */
17058 extern
17060  SCIP* scip /**< SCIP data structure */
17061  );
17062 
17063 /** get current number of variables in the pricing store
17064  *
17065  * @return the current number of variables in the pricing store
17066  *
17067  * @pre This method can be called if SCIP is in one of the following stages:
17068  * - \ref SCIP_STAGE_PRESOLVED
17069  * - \ref SCIP_STAGE_SOLVING
17070  * - \ref SCIP_STAGE_SOLVED
17071  */
17072 extern
17073 int SCIPgetNPricevars(
17074  SCIP* scip /**< SCIP data structure */
17075  );
17076 
17077 /** get total number of pricing variables found so far
17078  *
17079  * @return the total number of pricing variables found so far
17080  *
17081  * @pre This method can be called if SCIP is in one of the following stages:
17082  * - \ref SCIP_STAGE_PRESOLVED
17083  * - \ref SCIP_STAGE_SOLVING
17084  * - \ref SCIP_STAGE_SOLVED
17085  */
17086 extern
17088  SCIP* scip /**< SCIP data structure */
17089  );
17090 
17091 /** get total number of pricing variables applied to the LPs
17092  *
17093  * @return the total number of pricing variables applied to the LPs
17094  *
17095  * @pre This method can be called if SCIP is in one of the following stages:
17096  * - \ref SCIP_STAGE_PRESOLVED
17097  * - \ref SCIP_STAGE_SOLVING
17098  * - \ref SCIP_STAGE_SOLVED
17099  */
17100 extern
17102  SCIP* scip /**< SCIP data structure */
17103  );
17104 
17105 /** gets number of separation rounds performed so far at the current node
17106  *
17107  * @return the number of separation rounds performed so far at the current node
17108  *
17109  * @pre This method can be called if SCIP is in one of the following stages:
17110  * - \ref SCIP_STAGE_SOLVING
17111  */
17112 extern
17113 int SCIPgetNSepaRounds(
17114  SCIP* scip /**< SCIP data structure */
17115  );
17116 
17117 /** get total number of cuts found so far
17118  *
17119  * @return the total number of cuts found so far
17120  *
17121  * @pre This method can be called if SCIP is in one of the following stages:
17122  * - \ref SCIP_STAGE_PRESOLVED
17123  * - \ref SCIP_STAGE_SOLVING
17124  * - \ref SCIP_STAGE_SOLVED
17125  */
17126 extern
17127 int SCIPgetNCutsFound(
17128  SCIP* scip /**< SCIP data structure */
17129  );
17130 
17131 /** get number of cuts found so far in current separation round
17132  *
17133  * @return the number of cuts found so far in current separation round
17134  *
17135  * @pre This method can be called if SCIP is in one of the following stages:
17136  * - \ref SCIP_STAGE_PRESOLVED
17137  * - \ref SCIP_STAGE_SOLVING
17138  * - \ref SCIP_STAGE_SOLVED
17139  */
17140 extern
17142  SCIP* scip /**< SCIP data structure */
17143  );
17144 
17145 /** get total number of cuts applied to the LPs
17146  *
17147  * @return the total number of cuts applied to the LPs
17148  *
17149  * @pre This method can be called if SCIP is in one of the following stages:
17150  * - \ref SCIP_STAGE_PRESOLVED
17151  * - \ref SCIP_STAGE_SOLVING
17152  * - \ref SCIP_STAGE_SOLVED
17153  */
17154 extern
17156  SCIP* scip /**< SCIP data structure */
17157  );
17158 
17159 /** get total number of constraints found in conflict analysis (conflict and reconvergence constraints)
17160  *
17161  * @return the total number of constraints found in conflict analysis (conflict and reconvergence constraints)
17162  *
17163  * @pre This method can be called if SCIP is in one of the following stages:
17164  * - \ref SCIP_STAGE_TRANSFORMED
17165  * - \ref SCIP_STAGE_INITPRESOLVE
17166  * - \ref SCIP_STAGE_PRESOLVING
17167  * - \ref SCIP_STAGE_EXITPRESOLVE
17168  * - \ref SCIP_STAGE_PRESOLVED
17169  * - \ref SCIP_STAGE_INITSOLVE
17170  * - \ref SCIP_STAGE_SOLVING
17171  * - \ref SCIP_STAGE_SOLVED
17172  * - \ref SCIP_STAGE_EXITSOLVE
17173  */
17174 extern
17176  SCIP* scip /**< SCIP data structure */
17177  );
17178 
17179 /** get number of conflict constraints found so far at the current node
17180  *
17181  * @return the number of conflict constraints found so far at the current node
17182  *
17183  * @pre This method can be called if SCIP is in one of the following stages:
17184  * - \ref SCIP_STAGE_TRANSFORMED
17185  * - \ref SCIP_STAGE_INITPRESOLVE
17186  * - \ref SCIP_STAGE_PRESOLVING
17187  * - \ref SCIP_STAGE_EXITPRESOLVE
17188  * - \ref SCIP_STAGE_PRESOLVED
17189  * - \ref SCIP_STAGE_INITSOLVE
17190  * - \ref SCIP_STAGE_SOLVING
17191  * - \ref SCIP_STAGE_SOLVED
17192  * - \ref SCIP_STAGE_EXITSOLVE
17193  */
17194 extern
17196  SCIP* scip /**< SCIP data structure */
17197  );
17198 
17199 /** get total number of conflict constraints added to the problem
17200  *
17201  * @return the total number of conflict constraints added to the problem
17202  *
17203  * @pre This method can be called if SCIP is in one of the following stages:
17204  * - \ref SCIP_STAGE_TRANSFORMED
17205  * - \ref SCIP_STAGE_INITPRESOLVE
17206  * - \ref SCIP_STAGE_PRESOLVING
17207  * - \ref SCIP_STAGE_EXITPRESOLVE
17208  * - \ref SCIP_STAGE_PRESOLVED
17209  * - \ref SCIP_STAGE_INITSOLVE
17210  * - \ref SCIP_STAGE_SOLVING
17211  * - \ref SCIP_STAGE_SOLVED
17212  * - \ref SCIP_STAGE_EXITSOLVE
17213  */
17214 extern
17216  SCIP* scip /**< SCIP data structure */
17217  );
17218 
17219 /** gets depth of current node, or -1 if no current node exists; in probing, the current node is the last probing node,
17220  * such that the depth includes the probing path
17221  *
17222  * @return the depth of current node, or -1 if no current node exists; in probing, the current node is the last probing node,
17223  * such that the depth includes the probing path
17224  *
17225  * @pre This method can be called if SCIP is in one of the following stages:
17226  * - \ref SCIP_STAGE_TRANSFORMED
17227  * - \ref SCIP_STAGE_INITPRESOLVE
17228  * - \ref SCIP_STAGE_PRESOLVING
17229  * - \ref SCIP_STAGE_EXITPRESOLVE
17230  * - \ref SCIP_STAGE_PRESOLVED
17231  * - \ref SCIP_STAGE_INITSOLVE
17232  * - \ref SCIP_STAGE_SOLVING
17233  * - \ref SCIP_STAGE_SOLVED
17234  * - \ref SCIP_STAGE_EXITSOLVE
17235  */
17236 extern
17237 int SCIPgetDepth(
17238  SCIP* scip /**< SCIP data structure */
17239  );
17240 
17241 /** gets depth of the focus node, or -1 if no focus node exists; the focus node is the currently processed node in the
17242  * branching tree, excluding the nodes of the probing path
17243  *
17244  * @return the depth of the focus node, or -1 if no focus node exists; the focus node is the currently processed node in the
17245  * branching tree, excluding the nodes of the probing path
17246  *
17247  * @pre This method can be called if SCIP is in one of the following stages:
17248  * - \ref SCIP_STAGE_TRANSFORMED
17249  * - \ref SCIP_STAGE_INITPRESOLVE
17250  * - \ref SCIP_STAGE_PRESOLVING
17251  * - \ref SCIP_STAGE_EXITPRESOLVE
17252  * - \ref SCIP_STAGE_PRESOLVED
17253  * - \ref SCIP_STAGE_INITSOLVE
17254  * - \ref SCIP_STAGE_SOLVING
17255  * - \ref SCIP_STAGE_SOLVED
17256  * - \ref SCIP_STAGE_EXITSOLVE
17257  */
17258 extern
17259 int SCIPgetFocusDepth(
17260  SCIP* scip /**< SCIP data structure */
17261  );
17262 
17263 /** gets maximal depth of all processed nodes in current branch and bound run (excluding probing nodes)
17264  *
17265  * @return the maximal depth of all processed nodes in current branch and bound run (excluding probing nodes)
17266  *
17267  * @pre This method can be called if SCIP is in one of the following stages:
17268  * - \ref SCIP_STAGE_TRANSFORMED
17269  * - \ref SCIP_STAGE_INITPRESOLVE
17270  * - \ref SCIP_STAGE_PRESOLVING
17271  * - \ref SCIP_STAGE_EXITPRESOLVE
17272  * - \ref SCIP_STAGE_PRESOLVED
17273  * - \ref SCIP_STAGE_INITSOLVE
17274  * - \ref SCIP_STAGE_SOLVING
17275  * - \ref SCIP_STAGE_SOLVED
17276  * - \ref SCIP_STAGE_EXITSOLVE
17277  */
17278 extern
17279 int SCIPgetMaxDepth(
17280  SCIP* scip /**< SCIP data structure */
17281  );
17282 
17283 /** gets maximal depth of all processed nodes over all branch and bound runs
17284  *
17285  * @return the maximal depth of all processed nodes over all branch and bound runs
17286  *
17287  * @pre This method can be called if SCIP is in one of the following stages:
17288  * - \ref SCIP_STAGE_TRANSFORMED
17289  * - \ref SCIP_STAGE_INITPRESOLVE
17290  * - \ref SCIP_STAGE_PRESOLVING
17291  * - \ref SCIP_STAGE_EXITPRESOLVE
17292  * - \ref SCIP_STAGE_PRESOLVED
17293  * - \ref SCIP_STAGE_INITSOLVE
17294  * - \ref SCIP_STAGE_SOLVING
17295  * - \ref SCIP_STAGE_SOLVED
17296  * - \ref SCIP_STAGE_EXITSOLVE
17297  */
17298 extern
17300  SCIP* scip /**< SCIP data structure */
17301  );
17302 
17303 /** gets total number of backtracks, i.e. number of times, the new node was selected from the leaves queue
17304  *
17305  * @return the total number of backtracks, i.e. number of times, the new node was selected from the leaves queue
17306  *
17307  * @pre This method can be called if SCIP is in one of the following stages:
17308  * - \ref SCIP_STAGE_TRANSFORMED
17309  * - \ref SCIP_STAGE_INITPRESOLVE
17310  * - \ref SCIP_STAGE_PRESOLVING
17311  * - \ref SCIP_STAGE_EXITPRESOLVE
17312  * - \ref SCIP_STAGE_PRESOLVED
17313  * - \ref SCIP_STAGE_INITSOLVE
17314  * - \ref SCIP_STAGE_SOLVING
17315  * - \ref SCIP_STAGE_SOLVED
17316  * - \ref SCIP_STAGE_EXITSOLVE
17317  */
17318 extern
17320  SCIP* scip /**< SCIP data structure */
17321  );
17322 
17323 /** gets current plunging depth (successive times, a child was selected as next node)
17324  *
17325  * @return the current plunging depth (successive times, a child was selected as next node)
17326  *
17327  * @pre This method can be called if SCIP is in one of the following stages:
17328  * - \ref SCIP_STAGE_PRESOLVED
17329  * - \ref SCIP_STAGE_SOLVING
17330  */
17331 extern
17332 int SCIPgetPlungeDepth(
17333  SCIP* scip /**< SCIP data structure */
17334  );
17335 
17336 /** gets total number of active constraints at the current node
17337  *
17338  * @return the total number of active constraints at the current node
17339  *
17340  * @pre This method can be called if SCIP is in one of the following stages:
17341  * - \ref SCIP_STAGE_PRESOLVED
17342  * - \ref SCIP_STAGE_SOLVING
17343  */
17344 extern
17346  SCIP* scip /**< SCIP data structure */
17347  );
17348 
17349 /** gets total number of enabled constraints at the current node
17350  *
17351  * @return the total number of enabled constraints at the current node
17352  *
17353  * @pre This method can be called if SCIP is in one of the following stages:
17354  * - \ref SCIP_STAGE_PRESOLVED
17355  * - \ref SCIP_STAGE_SOLVING
17356  */
17357 extern
17359  SCIP* scip /**< SCIP data structure */
17360  );
17361 
17362 /** gets average dual bound of all unprocessed nodes for original problem */
17363 extern
17365  SCIP* scip /**< SCIP data structure */
17366  );
17367 
17368 /** gets average lower (dual) bound of all unprocessed nodes in transformed problem
17369  *
17370  * @return the average lower (dual) bound of all unprocessed nodes in transformed problem
17371  *
17372  * @pre This method can be called if SCIP is in one of the following stages:
17373  * - \ref SCIP_STAGE_PRESOLVED
17374  * - \ref SCIP_STAGE_SOLVING
17375  * - \ref SCIP_STAGE_SOLVED
17376  */
17377 extern
17379  SCIP* scip /**< SCIP data structure */
17380  );
17381 
17382 /** gets global dual bound
17383  *
17384  * @return the global dual bound
17385  *
17386  * @pre This method can be called if SCIP is in one of the following stages:
17387  * - \ref SCIP_STAGE_PRESOLVING
17388  * - \ref SCIP_STAGE_EXITPRESOLVE
17389  * - \ref SCIP_STAGE_PRESOLVED
17390  * - \ref SCIP_STAGE_INITSOLVE
17391  * - \ref SCIP_STAGE_SOLVING
17392  * - \ref SCIP_STAGE_SOLVED
17393  */
17394 extern
17396  SCIP* scip /**< SCIP data structure */
17397  );
17398 
17399 /** gets global lower (dual) bound in transformed problem
17400  *
17401  * @return the global lower (dual) bound in transformed problem
17402  *
17403  * @pre This method can be called if SCIP is in one of the following stages:
17404  * - \ref SCIP_STAGE_PRESOLVING
17405  * - \ref SCIP_STAGE_EXITPRESOLVE
17406  * - \ref SCIP_STAGE_PRESOLVED
17407  * - \ref SCIP_STAGE_INITSOLVE
17408  * - \ref SCIP_STAGE_SOLVING
17409  * - \ref SCIP_STAGE_SOLVED
17410  */
17411 extern
17413  SCIP* scip /**< SCIP data structure */
17414  );
17415 
17416 /** gets dual bound of the root node for the original problem
17417  *
17418  * @return the dual bound of the root node for the original problem
17419  *
17420  * @pre This method can be called if SCIP is in one of the following stages:
17421  * - \ref SCIP_STAGE_PRESOLVING
17422  * - \ref SCIP_STAGE_EXITPRESOLVE
17423  * - \ref SCIP_STAGE_PRESOLVED
17424  * - \ref SCIP_STAGE_INITSOLVE
17425  * - \ref SCIP_STAGE_SOLVING
17426  * - \ref SCIP_STAGE_SOLVED
17427  */
17428 extern
17430  SCIP* scip /**< SCIP data structure */
17431  );
17432 
17433 /** gets lower (dual) bound in transformed problem of the root node
17434  *
17435  * @return the lower (dual) bound in transformed problem of the root node
17436  *
17437  * @pre This method can be called if SCIP is in one of the following stages:
17438  * - \ref SCIP_STAGE_PRESOLVING
17439  * - \ref SCIP_STAGE_EXITPRESOLVE
17440  * - \ref SCIP_STAGE_PRESOLVED
17441  * - \ref SCIP_STAGE_INITSOLVE
17442  * - \ref SCIP_STAGE_SOLVING
17443  * - \ref SCIP_STAGE_SOLVED
17444  */
17445 extern
17447  SCIP* scip /**< SCIP data structure */
17448  );
17449 
17450 /** gets dual bound for the original problem obtained by the first LP solve at the root node
17451  *
17452  * @return the dual bound for the original problem of the first LP solve at the root node
17453  *
17454  * @pre This method can be called if SCIP is in one of the following stages:
17455  * - \ref SCIP_STAGE_PRESOLVING
17456  * - \ref SCIP_STAGE_EXITPRESOLVE
17457  * - \ref SCIP_STAGE_PRESOLVED
17458  * - \ref SCIP_STAGE_INITSOLVE
17459  * - \ref SCIP_STAGE_SOLVING
17460  * - \ref SCIP_STAGE_SOLVED
17461  */
17462 extern
17464  SCIP* scip /**< SCIP data structure */
17465  );
17466 
17467 /** gets lower (dual) bound in transformed problem obtained by the first LP solve at the root node
17468  *
17469  * @return the lower (dual) bound in transformed problem obtained by first LP solve at the root node
17470  *
17471  * @pre This method can be called if SCIP is in one of the following stages:
17472  * - \ref SCIP_STAGE_PRESOLVING
17473  * - \ref SCIP_STAGE_EXITPRESOLVE
17474  * - \ref SCIP_STAGE_PRESOLVED
17475  * - \ref SCIP_STAGE_INITSOLVE
17476  * - \ref SCIP_STAGE_SOLVING
17477  * - \ref SCIP_STAGE_SOLVED
17478  */
17479 extern
17481  SCIP* scip /**< SCIP data structure */
17482  );
17483 
17484 
17485 /** gets global primal bound (objective value of best solution or user objective limit) for the original problem
17486  *
17487  * @return the global primal bound (objective value of best solution or user objective limit) for the original problem
17488  *
17489  * @pre This method can be called if SCIP is in one of the following stages:
17490  * - \ref SCIP_STAGE_TRANSFORMED
17491  * - \ref SCIP_STAGE_INITPRESOLVE
17492  * - \ref SCIP_STAGE_PRESOLVING
17493  * - \ref SCIP_STAGE_EXITPRESOLVE
17494  * - \ref SCIP_STAGE_PRESOLVED
17495  * - \ref SCIP_STAGE_INITSOLVE
17496  * - \ref SCIP_STAGE_SOLVING
17497  * - \ref SCIP_STAGE_SOLVED
17498  * - \ref SCIP_STAGE_EXITSOLVE
17499  */
17500 extern
17502  SCIP* scip /**< SCIP data structure */
17503  );
17504 
17505 /** gets global upper (primal) bound in transformed problem (objective value of best solution or user objective limit)
17506  *
17507  * @return the global upper (primal) bound in transformed problem (objective value of best solution or user objective limit)
17508  *
17509  * @pre This method can be called if SCIP is in one of the following stages:
17510  * - \ref SCIP_STAGE_TRANSFORMED
17511  * - \ref SCIP_STAGE_INITPRESOLVE
17512  * - \ref SCIP_STAGE_PRESOLVING
17513  * - \ref SCIP_STAGE_EXITPRESOLVE
17514  * - \ref SCIP_STAGE_PRESOLVED
17515  * - \ref SCIP_STAGE_INITSOLVE
17516  * - \ref SCIP_STAGE_SOLVING
17517  * - \ref SCIP_STAGE_SOLVED
17518  * - \ref SCIP_STAGE_EXITSOLVE
17519  */
17520 extern
17522  SCIP* scip /**< SCIP data structure */
17523  );
17524 
17525 /** gets global cutoff bound in transformed problem: a sub problem with lower bound larger than the cutoff
17526  * cannot contain a better feasible solution; usually, this bound is equal to the upper bound, but if the
17527  * objective value is always integral, the cutoff bound is (nearly) one less than the upper bound;
17528  * additionally, due to objective function domain propagation, the cutoff bound can be further reduced
17529  *
17530  * @return global cutoff bound in transformed problem
17531  *
17532  * @pre This method can be called if SCIP is in one of the following stages:
17533  * - \ref SCIP_STAGE_TRANSFORMED
17534  * - \ref SCIP_STAGE_INITPRESOLVE
17535  * - \ref SCIP_STAGE_PRESOLVING
17536  * - \ref SCIP_STAGE_EXITPRESOLVE
17537  * - \ref SCIP_STAGE_PRESOLVED
17538  * - \ref SCIP_STAGE_INITSOLVE
17539  * - \ref SCIP_STAGE_SOLVING
17540  * - \ref SCIP_STAGE_SOLVED
17541  * - \ref SCIP_STAGE_EXITSOLVE
17542  */
17543 extern
17545  SCIP* scip /**< SCIP data structure */
17546  );
17547 
17548 /** updates the cutoff bound
17549  *
17550  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17551  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17552  *
17553  * @pre This method can be called if SCIP is in one of the following stages:
17554  * - \ref SCIP_STAGE_TRANSFORMED
17555  * - \ref SCIP_STAGE_PRESOLVING
17556  * - \ref SCIP_STAGE_PRESOLVED
17557  * - \ref SCIP_STAGE_INITSOLVE
17558  * - \ref SCIP_STAGE_SOLVING
17559  *
17560  * @note the given cutoff bound has to better or equal to known one (SCIPgetCutoffbound())
17561  */
17562 extern
17564  SCIP* scip, /**< SCIP data structure */
17565  SCIP_Real cutoffbound /**< new cutoff bound */
17566  );
17567 
17568 /** returns whether the current primal bound is justified with a feasible primal solution; if not, the primal bound
17569  * was set from the user as objective limit
17570  *
17571  * @return TRUE if the current primal bound is justified with a feasible primal solution, otherwise FALSE
17572  *
17573  * @pre This method can be called if SCIP is in one of the following stages:
17574  * - \ref SCIP_STAGE_TRANSFORMED
17575  * - \ref SCIP_STAGE_INITPRESOLVE
17576  * - \ref SCIP_STAGE_PRESOLVING
17577  * - \ref SCIP_STAGE_EXITPRESOLVE
17578  * - \ref SCIP_STAGE_PRESOLVED
17579  * - \ref SCIP_STAGE_INITSOLVE
17580  * - \ref SCIP_STAGE_SOLVING
17581  * - \ref SCIP_STAGE_SOLVED
17582  * - \ref SCIP_STAGE_EXITSOLVE
17583  */
17584 extern
17586  SCIP* scip /**< SCIP data structure */
17587  );
17588 
17589 /** gets current gap |(primalbound - dualbound)/min(|primalbound|,|dualbound|)| if both bounds have same sign,
17590  * or infinity, if they have opposite sign
17591  *
17592  * @return the current gap |(primalbound - dualbound)/min(|primalbound|,|dualbound|)| if both bounds have same sign,
17593  * or infinity, if they have opposite sign
17594  *
17595  * @pre This method can be called if SCIP is in one of the following stages:
17596  * - \ref SCIP_STAGE_PRESOLVED
17597  * - \ref SCIP_STAGE_SOLVING
17598  * - \ref SCIP_STAGE_SOLVED
17599  */
17600 extern
17602  SCIP* scip /**< SCIP data structure */
17603  );
17604 
17605 /** gets current gap |(upperbound - lowerbound)/min(|upperbound|,|lowerbound|)| in transformed problem if both bounds
17606  * have same sign, or infinity, if they have opposite sign
17607  *
17608  * @return current gap |(upperbound - lowerbound)/min(|upperbound|,|lowerbound|)| in transformed problem if both bounds
17609  * have same sign, or infinity, if they have opposite sign
17610  *
17611  * @pre This method can be called if SCIP is in one of the following stages:
17612  * - \ref SCIP_STAGE_PRESOLVED
17613  * - \ref SCIP_STAGE_SOLVING
17614  * - \ref SCIP_STAGE_SOLVED
17615  */
17616 extern
17618  SCIP* scip /**< SCIP data structure */
17619  );
17620 
17621 /** gets number of feasible primal solutions found so far
17622  *
17623  * @return the number of feasible primal solutions found so far
17624  *
17625  * @pre This method can be called if SCIP is in one of the following stages:
17626  * - \ref SCIP_STAGE_TRANSFORMED
17627  * - \ref SCIP_STAGE_INITPRESOLVE
17628  * - \ref SCIP_STAGE_PRESOLVING
17629  * - \ref SCIP_STAGE_EXITPRESOLVE
17630  * - \ref SCIP_STAGE_PRESOLVED
17631  * - \ref SCIP_STAGE_INITSOLVE
17632  * - \ref SCIP_STAGE_SOLVING
17633  * - \ref SCIP_STAGE_SOLVED
17634  * - \ref SCIP_STAGE_EXITSOLVE
17635  */
17636 extern
17638  SCIP* scip /**< SCIP data structure */
17639  );
17640 
17641 /** gets number of feasible primal solutions respecting the objective limit found so far
17642  *
17643  * @return the number of feasible primal solutions respecting the objective limit found so far
17644  *
17645  * @pre This method can be called if SCIP is in one of the following stages:
17646  * - \ref SCIP_STAGE_TRANSFORMED
17647  * - \ref SCIP_STAGE_INITPRESOLVE
17648  * - \ref SCIP_STAGE_PRESOLVING
17649  * - \ref SCIP_STAGE_EXITPRESOLVE
17650  * - \ref SCIP_STAGE_PRESOLVED
17651  * - \ref SCIP_STAGE_INITSOLVE
17652  * - \ref SCIP_STAGE_SOLVING
17653  * - \ref SCIP_STAGE_SOLVED
17654  * - \ref SCIP_STAGE_EXITSOLVE
17655  */
17656 extern
17658  SCIP* scip /**< SCIP data structure */
17659  );
17660 
17661 /** gets number of feasible primal solutions found so far, that improved the primal bound at the time they were found
17662  *
17663  * @return the number of feasible primal solutions found so far, that improved the primal bound at the time they were found
17664  *
17665  * @pre This method can be called if SCIP is in one of the following stages:
17666  * - \ref SCIP_STAGE_TRANSFORMED
17667  * - \ref SCIP_STAGE_INITPRESOLVE
17668  * - \ref SCIP_STAGE_PRESOLVING
17669  * - \ref SCIP_STAGE_EXITPRESOLVE
17670  * - \ref SCIP_STAGE_PRESOLVED
17671  * - \ref SCIP_STAGE_INITSOLVE
17672  * - \ref SCIP_STAGE_SOLVING
17673  * - \ref SCIP_STAGE_SOLVED
17674  * - \ref SCIP_STAGE_EXITSOLVE
17675  */
17676 extern
17678  SCIP* scip /**< SCIP data structure */
17679  );
17680 
17681 /** gets the average pseudo cost value for the given direction over all variables
17682  *
17683  * @return the average pseudo cost value for the given direction over all variables
17684  *
17685  * @pre This method can be called if SCIP is in one of the following stages:
17686  * - \ref SCIP_STAGE_SOLVING
17687  * - \ref SCIP_STAGE_SOLVED
17688  */
17689 extern
17691  SCIP* scip, /**< SCIP data structure */
17692  SCIP_Real solvaldelta /**< difference of variable's new LP value - old LP value */
17693  );
17694 
17695 /** gets the average pseudo cost value for the given direction over all variables,
17696  * only using the pseudo cost information of the current run
17697  *
17698  * @return the average pseudo cost value for the given direction over all variables,
17699  * only using the pseudo cost information of the current run
17700  *
17701  * @pre This method can be called if SCIP is in one of the following stages:
17702  * - \ref SCIP_STAGE_SOLVING
17703  * - \ref SCIP_STAGE_SOLVED
17704  */
17705 extern
17707  SCIP* scip, /**< SCIP data structure */
17708  SCIP_Real solvaldelta /**< difference of variable's new LP value - old LP value */
17709  );
17710 
17711 /** gets the average number of pseudo cost updates for the given direction over all variables
17712  *
17713  * @return the average number of pseudo cost updates for the given direction over all variables
17714  *
17715  * @pre This method can be called if SCIP is in one of the following stages:
17716  * - \ref SCIP_STAGE_SOLVING
17717  * - \ref SCIP_STAGE_SOLVED
17718  */
17719 extern
17721  SCIP* scip, /**< SCIP data structure */
17722  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
17723  );
17724 
17725 /** gets the average number of pseudo cost updates for the given direction over all variables,
17726  * only using the pseudo cost information of the current run
17727  *
17728  * @return the average number of pseudo cost updates for the given direction over all variables,
17729  * only using the pseudo cost information of the current run
17730  *
17731  * @pre This method can be called if SCIP is in one of the following stages:
17732  * - \ref SCIP_STAGE_SOLVING
17733  * - \ref SCIP_STAGE_SOLVED
17734  */
17735 extern
17737  SCIP* scip, /**< SCIP data structure */
17738  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
17739  );
17740 
17741 /** gets the average pseudo cost score value over all variables, assuming a fractionality of 0.5
17742  *
17743  * @return the average pseudo cost score value over all variables, assuming a fractionality of 0.5
17744  *
17745  * @pre This method can be called if SCIP is in one of the following stages:
17746  * - \ref SCIP_STAGE_SOLVING
17747  * - \ref SCIP_STAGE_SOLVED
17748  */
17749 extern
17751  SCIP* scip /**< SCIP data structure */
17752  );
17753 
17754 /** gets the average pseudo cost score value over all variables, assuming a fractionality of 0.5,
17755  * only using the pseudo cost information of the current run
17756  *
17757  * @return the average pseudo cost score value over all variables, assuming a fractionality of 0.5,
17758  * only using the pseudo cost information of the current run
17759  *
17760  * @pre This method can be called if SCIP is in one of the following stages:
17761  * - \ref SCIP_STAGE_SOLVING
17762  * - \ref SCIP_STAGE_SOLVED
17763  */
17764 extern
17766  SCIP* scip /**< SCIP data structure */
17767  );
17768 
17769 /** gets the average conflict score value over all variables */
17770 extern
17772  SCIP* scip /**< SCIP data structure */
17773  );
17774 
17775 /** gets the average conflict score value over all variables, only using the pseudo cost information of the current run
17776  *
17777  * @return the average conflict score value over all variables, only using the pseudo cost information of the current run
17778  *
17779  * @pre This method can be called if SCIP is in one of the following stages:
17780  * - \ref SCIP_STAGE_SOLVING
17781  * - \ref SCIP_STAGE_SOLVED
17782  */
17783 extern
17785  SCIP* scip /**< SCIP data structure */
17786  );
17787 
17788 /** gets the average inference score value over all variables
17789  *
17790  * @return the average inference score value over all variables
17791  *
17792  * @pre This method can be called if SCIP is in one of the following stages:
17793  * - \ref SCIP_STAGE_SOLVING
17794  * - \ref SCIP_STAGE_SOLVED
17795  */
17796 extern
17798  SCIP* scip /**< SCIP data structure */
17799  );
17800 
17801 /** gets the average conflictlength score value over all variables, only using the pseudo cost information of the
17802  * current run
17803  *
17804  * @return the average conflictlength score value over all variables, only using the pseudo cost information of the
17805  * current run
17806  *
17807  * @pre This method can be called if SCIP is in one of the following stages:
17808  * - \ref SCIP_STAGE_SOLVING
17809  * - \ref SCIP_STAGE_SOLVED
17810  */
17811 extern
17813  SCIP* scip /**< SCIP data structure */
17814  );
17815 
17816 /** returns the average number of inferences found after branching in given direction over all variables
17817  *
17818  * @return the average number of inferences found after branching in given direction over all variables
17819  *
17820  * @pre This method can be called if SCIP is in one of the following stages:
17821  * - \ref SCIP_STAGE_SOLVING
17822  * - \ref SCIP_STAGE_SOLVED
17823  */
17824 extern
17826  SCIP* scip, /**< SCIP data structure */
17827  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
17828  );
17829 
17830 /** returns the average number of inferences found after branching in given direction over all variables,
17831  * only using the pseudo cost information of the current run
17832  *
17833  * @return the average number of inferences found after branching in given direction over all variables,
17834  * only using the pseudo cost information of the current run
17835  *
17836  * @pre This method can be called if SCIP is in one of the following stages:
17837  * - \ref SCIP_STAGE_SOLVING
17838  * - \ref SCIP_STAGE_SOLVED
17839  */
17840 extern
17842  SCIP* scip, /**< SCIP data structure */
17843  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
17844  );
17845 
17846 /** gets the average inference score value over all variables
17847  *
17848  * @return the average inference score value over all variables
17849  *
17850  * @pre This method can be called if SCIP is in one of the following stages:
17851  * - \ref SCIP_STAGE_SOLVING
17852  * - \ref SCIP_STAGE_SOLVED
17853  */
17854 extern
17856  SCIP* scip /**< SCIP data structure */
17857  );
17858 
17859 /** gets the average inference score value over all variables, only using the inference information information of the
17860  * current run
17861  *
17862  * @return the average inference score value over all variables, only using the inference information information of the
17863  * current run
17864  *
17865  * @pre This method can be called if SCIP is in one of the following stages:
17866  * - \ref SCIP_STAGE_SOLVING
17867  * - \ref SCIP_STAGE_SOLVED
17868  */
17869 extern
17871  SCIP* scip /**< SCIP data structure */
17872  );
17873 
17874 /** returns the average number of cutoffs found after branching in given direction over all variables
17875  *
17876  * @return the average number of cutoffs found after branching in given direction over all variables
17877  *
17878  * @pre This method can be called if SCIP is in one of the following stages:
17879  * - \ref SCIP_STAGE_SOLVING
17880  * - \ref SCIP_STAGE_SOLVED
17881  */
17882 extern
17884  SCIP* scip, /**< SCIP data structure */
17885  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
17886  );
17887 
17888 /** returns the average number of cutoffs found after branching in given direction over all variables,
17889  * only using the pseudo cost information of the current run
17890  *
17891  * @return the average number of cutoffs found after branching in given direction over all variables,
17892  * only using the pseudo cost information of the current run
17893  *
17894  * @pre This method can be called if SCIP is in one of the following stages:
17895  * - \ref SCIP_STAGE_SOLVING
17896  * - \ref SCIP_STAGE_SOLVED
17897  */
17898 extern
17900  SCIP* scip, /**< SCIP data structure */
17901  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
17902  );
17903 
17904 /** gets the average cutoff score value over all variables
17905  *
17906  * @return the average cutoff score value over all variables
17907  *
17908  * @pre This method can be called if SCIP is in one of the following stages:
17909  * - \ref SCIP_STAGE_SOLVING
17910  * - \ref SCIP_STAGE_SOLVED
17911  */
17912 extern
17914  SCIP* scip /**< SCIP data structure */
17915  );
17916 
17917 /** gets the average cutoff score value over all variables, only using the pseudo cost information of the current run
17918  *
17919  * @return the average cutoff score value over all variables, only using the pseudo cost information of the current run
17920  *
17921  * @pre This method can be called if SCIP is in one of the following stages:
17922  * - \ref SCIP_STAGE_SOLVING
17923  * - \ref SCIP_STAGE_SOLVED
17924  */
17925 extern
17927  SCIP* scip /**< SCIP data structure */
17928  );
17929 
17930 /** outputs original problem to file stream
17931  *
17932  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17933  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17934  *
17935  * @pre This method can be called if SCIP is in one of the following stages:
17936  * - \ref SCIP_STAGE_PROBLEM
17937  * - \ref SCIP_STAGE_TRANSFORMING
17938  * - \ref SCIP_STAGE_TRANSFORMED
17939  * - \ref SCIP_STAGE_INITPRESOLVE
17940  * - \ref SCIP_STAGE_PRESOLVING
17941  * - \ref SCIP_STAGE_EXITPRESOLVE
17942  * - \ref SCIP_STAGE_PRESOLVED
17943  * - \ref SCIP_STAGE_INITSOLVE
17944  * - \ref SCIP_STAGE_SOLVING
17945  * - \ref SCIP_STAGE_SOLVED
17946  * - \ref SCIP_STAGE_EXITSOLVE
17947  * - \ref SCIP_STAGE_FREETRANS
17948  */
17949 extern
17951  SCIP* scip, /**< SCIP data structure */
17952  FILE* file, /**< output file (or NULL for standard output) */
17953  const char* extension, /**< file format (or NULL for default CIP format)*/
17954  SCIP_Bool genericnames /**< using generic variable and constraint names? */
17955  );
17956 
17957 /** outputs transformed problem of the current node to file stream
17958  *
17959  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17960  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17961  *
17962  * @pre This method can be called if SCIP is in one of the following stages:
17963  * - \ref SCIP_STAGE_TRANSFORMED
17964  * - \ref SCIP_STAGE_INITPRESOLVE
17965  * - \ref SCIP_STAGE_PRESOLVING
17966  * - \ref SCIP_STAGE_EXITPRESOLVE
17967  * - \ref SCIP_STAGE_PRESOLVED
17968  * - \ref SCIP_STAGE_INITSOLVE
17969  * - \ref SCIP_STAGE_SOLVING
17970  * - \ref SCIP_STAGE_SOLVED
17971  * - \ref SCIP_STAGE_EXITSOLVE
17972  * - \ref SCIP_STAGE_FREETRANS
17973  */
17974 extern
17976  SCIP* scip, /**< SCIP data structure */
17977  FILE* file, /**< output file (or NULL for standard output) */
17978  const char* extension, /**< file format (or NULL for default CIP format)*/
17979  SCIP_Bool genericnames /**< using generic variable and constraint names? */
17980  );
17981 
17982 /** outputs solving statistics
17983  *
17984  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
17985  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
17986  *
17987  * @note If limits have been changed between the solution and the call to this function, the status is recomputed and
17988  * thus may to correspond to the original status.
17989  *
17990  * @pre This method can be called if SCIP is in one of the following stages:
17991  * - \ref SCIP_STAGE_INIT
17992  * - \ref SCIP_STAGE_PROBLEM
17993  * - \ref SCIP_STAGE_TRANSFORMED
17994  * - \ref SCIP_STAGE_INITPRESOLVE
17995  * - \ref SCIP_STAGE_PRESOLVING
17996  * - \ref SCIP_STAGE_EXITPRESOLVE
17997  * - \ref SCIP_STAGE_PRESOLVED
17998  * - \ref SCIP_STAGE_SOLVING
17999  * - \ref SCIP_STAGE_SOLVED
18000  */
18001 extern
18003  SCIP* scip, /**< SCIP data structure */
18004  FILE* file /**< output file (or NULL for standard output) */
18005  );
18006 
18007 /** outputs history statistics about branchings on variables
18008  *
18009  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
18010  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
18011  *
18012  * @pre This method can be called if SCIP is in one of the following stages:
18013  * - \ref SCIP_STAGE_INIT
18014  * - \ref SCIP_STAGE_PROBLEM
18015  * - \ref SCIP_STAGE_TRANSFORMED
18016  * - \ref SCIP_STAGE_INITPRESOLVE
18017  * - \ref SCIP_STAGE_PRESOLVING
18018  * - \ref SCIP_STAGE_EXITPRESOLVE
18019  * - \ref SCIP_STAGE_PRESOLVED
18020  * - \ref SCIP_STAGE_SOLVING
18021  * - \ref SCIP_STAGE_SOLVED
18022  */
18023 extern
18025  SCIP* scip, /**< SCIP data structure */
18026  FILE* file /**< output file (or NULL for standard output) */
18027  );
18028 
18029 /** outputs node information display line
18030  *
18031  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
18032  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
18033  *
18034  * @pre This method can be called if SCIP is in one of the following stages:
18035  * - \ref SCIP_STAGE_SOLVING
18036  */
18037 extern
18039  SCIP* scip, /**< SCIP data structure */
18040  FILE* file, /**< output file (or NULL for standard output) */
18041  SCIP_VERBLEVEL verblevel, /**< minimal verbosity level to actually display the information line */
18042  SCIP_Bool endline /**< should the line be terminated with a newline symbol? */
18043  );
18044 
18045 /** gets total number of implications between variables that are stored in the implication graph
18046  *
18047  * @return the total number of implications between variables that are stored in the implication graph
18048  *
18049  * @pre This method can be called if SCIP is in one of the following stages:
18050  * - \ref SCIP_STAGE_INITPRESOLVE
18051  * - \ref SCIP_STAGE_PRESOLVING
18052  * - \ref SCIP_STAGE_EXITPRESOLVE
18053  * - \ref SCIP_STAGE_PRESOLVED
18054  * - \ref SCIP_STAGE_INITSOLVE
18055  * - \ref SCIP_STAGE_SOLVING
18056  * - \ref SCIP_STAGE_SOLVED
18057  */
18058 extern
18060  SCIP* scip /**< SCIP data structure */
18061  );
18062 
18063 /** stores conflict graph of binary variables' implications into a file, which can be used as input for the DOT tool
18064  *
18065  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
18066  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
18067  *
18068  * @pre This method can be called if SCIP is in one of the following stages:
18069  * - \ref SCIP_STAGE_TRANSFORMED
18070  * - \ref SCIP_STAGE_INITPRESOLVE
18071  * - \ref SCIP_STAGE_PRESOLVING
18072  * - \ref SCIP_STAGE_EXITPRESOLVE
18073  * - \ref SCIP_STAGE_PRESOLVED
18074  * - \ref SCIP_STAGE_INITSOLVE
18075  * - \ref SCIP_STAGE_SOLVING
18076  * - \ref SCIP_STAGE_SOLVED
18077  * - \ref SCIP_STAGE_EXITSOLVE
18078  */
18079 extern
18081  SCIP* scip, /**< SCIP data structure */
18082  const char* filename /**< file name, or NULL for stdout */
18083  );
18084 
18085 /**@} */
18086 
18087 
18088 
18089 
18090 /*
18091  * timing methods
18092  */
18093 
18094 /**@name Timing Methods */
18095 /**@{ */
18096 
18097 /** gets current time of day in seconds (standard time zone)
18098  *
18099  * @return the current time of day in seconds (standard time zone).
18100  */
18101 extern
18103  SCIP* scip /**< SCIP data structure */
18104  );
18105 
18106 /** creates a clock using the default clock type
18107  *
18108  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
18109  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
18110  */
18111 extern
18113  SCIP* scip, /**< SCIP data structure */
18114  SCIP_CLOCK** clck /**< pointer to clock timer */
18115  );
18116 
18117 /** creates a clock counting the CPU user seconds
18118  *
18119  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
18120  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
18121  */
18122 extern
18124  SCIP* scip, /**< SCIP data structure */
18125  SCIP_CLOCK** clck /**< pointer to clock timer */
18126  );
18127 
18128 /** creates a clock counting the wall clock seconds
18129  *
18130  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
18131  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
18132  */
18133 extern
18135  SCIP* scip, /**< SCIP data structure */
18136  SCIP_CLOCK** clck /**< pointer to clock timer */
18137  );
18138 
18139 /** frees a clock
18140  *
18141  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
18142  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
18143  */
18144 extern
18146  SCIP* scip, /**< SCIP data structure */
18147  SCIP_CLOCK** clck /**< pointer to clock timer */
18148  );
18149 
18150 /** resets the time measurement of a clock to zero and completely stops the clock
18151  *
18152  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
18153  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
18154  */
18155 extern
18157  SCIP* scip, /**< SCIP data structure */
18158  SCIP_CLOCK* clck /**< clock timer */
18159  );
18160 
18161 /** starts the time measurement of a clock
18162  *
18163  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
18164  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
18165  */
18166 extern
18168  SCIP* scip, /**< SCIP data structure */
18169  SCIP_CLOCK* clck /**< clock timer */
18170  );
18171 
18172 /** stops the time measurement of a clock
18173  *
18174  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
18175  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
18176  */
18177 extern
18179  SCIP* scip, /**< SCIP data structure */
18180  SCIP_CLOCK* clck /**< clock timer */
18181  );
18182 
18183 /** enables or disables all statistic clocks of SCIP concerning plugin statistics,
18184  * LP execution time, strong branching time, etc.
18185  *
18186  * Method reads the value of the parameter timing/statistictiming. In order to disable statistic timing,
18187  * set the parameter to FALSE.
18188  *
18189  * @note: The (pre-)solving time clocks which are relevant for the output during (pre-)solving
18190  * are not affected by this method
18191  *
18192  * @see: For completely disabling all timing of SCIP, consider setting the parameter timing/enabled to FALSE
18193  *
18194  * @pre This method can be called if SCIP is in one of the following stages:
18195  * - \ref SCIP_STAGE_PROBLEM
18196  * - \ref SCIP_STAGE_TRANSFORMING
18197  * - \ref SCIP_STAGE_TRANSFORMED
18198  * - \ref SCIP_STAGE_INITPRESOLVE
18199  * - \ref SCIP_STAGE_PRESOLVING
18200  * - \ref SCIP_STAGE_EXITPRESOLVE
18201  * - \ref SCIP_STAGE_PRESOLVED
18202  * - \ref SCIP_STAGE_INITSOLVE
18203  * - \ref SCIP_STAGE_SOLVING
18204  * - \ref SCIP_STAGE_SOLVED
18205  * - \ref SCIP_STAGE_EXITSOLVE
18206  * - \ref SCIP_STAGE_FREETRANS
18207  *
18208  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
18209  */
18210 extern
18212  SCIP* scip /**< SCIP data structure */
18213  );
18214 
18215 /** starts the current solving time
18216  *
18217  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
18218  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
18219  *
18220  * @pre This method can be called if SCIP is in one of the following stages:
18221  * - \ref SCIP_STAGE_PROBLEM
18222  * - \ref SCIP_STAGE_TRANSFORMING
18223  * - \ref SCIP_STAGE_TRANSFORMED
18224  * - \ref SCIP_STAGE_INITPRESOLVE
18225  * - \ref SCIP_STAGE_PRESOLVING
18226  * - \ref SCIP_STAGE_EXITPRESOLVE
18227  * - \ref SCIP_STAGE_PRESOLVED
18228  * - \ref SCIP_STAGE_INITSOLVE
18229  * - \ref SCIP_STAGE_SOLVING
18230  * - \ref SCIP_STAGE_SOLVED
18231  * - \ref SCIP_STAGE_EXITSOLVE
18232  * - \ref SCIP_STAGE_FREETRANS
18233  *
18234  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
18235  */
18236 extern
18238  SCIP* scip /**< SCIP data structure */
18239  );
18240 
18241 /** stops the current solving time in seconds
18242  *
18243  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
18244  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
18245  *
18246  * @pre This method can be called if SCIP is in one of the following stages:
18247  * - \ref SCIP_STAGE_PROBLEM
18248  * - \ref SCIP_STAGE_TRANSFORMING
18249  * - \ref SCIP_STAGE_TRANSFORMED
18250  * - \ref SCIP_STAGE_INITPRESOLVE
18251  * - \ref SCIP_STAGE_PRESOLVING
18252  * - \ref SCIP_STAGE_EXITPRESOLVE
18253  * - \ref SCIP_STAGE_PRESOLVED
18254  * - \ref SCIP_STAGE_INITSOLVE
18255  * - \ref SCIP_STAGE_SOLVING
18256  * - \ref SCIP_STAGE_SOLVED
18257  * - \ref SCIP_STAGE_EXITSOLVE
18258  * - \ref SCIP_STAGE_FREETRANS
18259  *
18260  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
18261  */
18262 extern
18264  SCIP* scip /**< SCIP data structure */
18265  );
18266 
18267 /** gets the measured time of a clock in seconds
18268  *
18269  * @return the measured time of a clock in seconds.
18270  */
18271 extern
18273  SCIP* scip, /**< SCIP data structure */
18274  SCIP_CLOCK* clck /**< clock timer */
18275  );
18276 
18277 /** sets the measured time of a clock to the given value in seconds
18278  *
18279  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
18280  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
18281  */
18282 extern
18284  SCIP* scip, /**< SCIP data structure */
18285  SCIP_CLOCK* clck, /**< clock timer */
18286  SCIP_Real sec /**< time in seconds to set the clock's timer to */
18287  );
18288 
18289 /** gets the current total SCIP time in seconds
18290  *
18291  * @return the current total SCIP time in seconds.
18292  */
18293 extern
18295  SCIP* scip /**< SCIP data structure */
18296  );
18297 
18298 /** gets the current solving time in seconds
18299  *
18300  * @return the current solving time in seconds.
18301  *
18302  * @pre This method can be called if SCIP is in one of the following stages:
18303  * - \ref SCIP_STAGE_PROBLEM
18304  * - \ref SCIP_STAGE_TRANSFORMING
18305  * - \ref SCIP_STAGE_TRANSFORMED
18306  * - \ref SCIP_STAGE_INITPRESOLVE
18307  * - \ref SCIP_STAGE_PRESOLVING
18308  * - \ref SCIP_STAGE_EXITPRESOLVE
18309  * - \ref SCIP_STAGE_PRESOLVED
18310  * - \ref SCIP_STAGE_INITSOLVE
18311  * - \ref SCIP_STAGE_SOLVING
18312  * - \ref SCIP_STAGE_SOLVED
18313  *
18314  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
18315  */
18316 extern
18318  SCIP* scip /**< SCIP data structure */
18319  );
18320 
18321 /** gets the current reading time in seconds
18322  *
18323  * @return the current reading time in seconds.
18324  *
18325  * @pre This method can be called if SCIP is in one of the following stages:
18326  * - \ref SCIP_STAGE_PROBLEM
18327  * - \ref SCIP_STAGE_TRANSFORMING
18328  * - \ref SCIP_STAGE_TRANSFORMED
18329  * - \ref SCIP_STAGE_INITPRESOLVE
18330  * - \ref SCIP_STAGE_PRESOLVING
18331  * - \ref SCIP_STAGE_EXITPRESOLVE
18332  * - \ref SCIP_STAGE_PRESOLVED
18333  * - \ref SCIP_STAGE_INITSOLVE
18334  * - \ref SCIP_STAGE_SOLVING
18335  * - \ref SCIP_STAGE_SOLVED
18336  *
18337  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
18338  */
18339 extern
18341  SCIP* scip /**< SCIP data structure */
18342  );
18343 
18344 /** gets the current presolving time in seconds
18345  *
18346  * @return the current presolving time in seconds.
18347  *
18348  * @pre This method can be called if SCIP is in one of the following stages:
18349  * - \ref SCIP_STAGE_INITPRESOLVE
18350  * - \ref SCIP_STAGE_PRESOLVING
18351  * - \ref SCIP_STAGE_EXITPRESOLVE
18352  * - \ref SCIP_STAGE_PRESOLVED
18353  * - \ref SCIP_STAGE_INITSOLVE
18354  * - \ref SCIP_STAGE_SOLVING
18355  * - \ref SCIP_STAGE_SOLVED
18356  *
18357  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
18358  */
18359 extern
18361  SCIP* scip /**< SCIP data structure */
18362  );
18363 
18364 /** gets the time need to solve the first LP in the root node
18365  *
18366  * @return the solving time for the first LP in the root node in seconds.
18367  *
18368  * @pre This method can be called if SCIP is in one of the following stages:
18369  * - \ref SCIP_STAGE_TRANSFORMING
18370  * - \ref SCIP_STAGE_TRANSFORMED
18371  * - \ref SCIP_STAGE_INITPRESOLVE
18372  * - \ref SCIP_STAGE_PRESOLVING
18373  * - \ref SCIP_STAGE_EXITPRESOLVE
18374  * - \ref SCIP_STAGE_PRESOLVED
18375  * - \ref SCIP_STAGE_INITSOLVE
18376  * - \ref SCIP_STAGE_SOLVING
18377  * - \ref SCIP_STAGE_SOLVED
18378  *
18379  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
18380  */
18381 extern
18383  SCIP* scip /**< SCIP data structure */
18384  );
18385 
18386 /**@} */
18387 
18388 
18389 
18390 
18391 /*
18392  * numeric values and comparisons
18393  */
18394 
18395 /**@name Numerical Methods */
18396 /**@{ */
18397 
18398 
18399 /** returns value treated as zero
18400  *
18401  * @return value treated as zero
18402  */
18403 extern
18405  SCIP* scip /**< SCIP data structure */
18406  );
18407 
18408 /** returns value treated as zero for sums of floating point values
18409  *
18410  * @return value treated as zero for sums of floating point values
18411  */
18412 extern
18414  SCIP* scip /**< SCIP data structure */
18415  );
18416 
18417 /** returns feasibility tolerance for constraints
18418  *
18419  * @return feasibility tolerance for constraints
18420  */
18421 extern
18423  SCIP* scip /**< SCIP data structure */
18424  );
18425 
18426 /** returns primal feasibility tolerance of LP solver
18427  *
18428  * @return primal feasibility tolerance of LP solver
18429  */
18430 extern
18432  SCIP* scip /**< SCIP data structure */
18433  );
18434 
18435 /** returns feasibility tolerance for reduced costs
18436  *
18437  * @return feasibility tolerance for reduced costs
18438  */
18439 extern
18441  SCIP* scip /**< SCIP data structure */
18442  );
18443 
18444 /** returns convergence tolerance used in barrier algorithm
18445  *
18446  * @return convergence tolerance used in barrier algorithm
18447  */
18448 extern
18450  SCIP* scip /**< SCIP data structure */
18451  );
18452 
18453 /** return the cutoff bound delta
18454  *
18455  * @return cutoff bound data
18456  */
18457 extern
18459  SCIP* scip /**< SCIP data structure */
18460  );
18461 
18462 /** sets the feasibility tolerance for constraints
18463  *
18464  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
18465  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
18466  */
18467 extern
18469  SCIP* scip, /**< SCIP data structure */
18470  SCIP_Real feastol /**< new feasibility tolerance for constraints */
18471  );
18472 
18473 /** sets the primal feasibility tolerance of LP solver
18474  *
18475  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
18476  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
18477  */
18478 extern
18480  SCIP* scip, /**< SCIP data structure */
18481  SCIP_Real lpfeastol, /**< new primal feasibility tolerance of LP solver */
18482  SCIP_Bool printnewvalue /**< should "numerics/lpfeastol = ..." be printed? */
18483  );
18484 
18485 /** sets the feasibility tolerance for reduced costs
18486  *
18487  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
18488  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
18489  */
18490 extern
18492  SCIP* scip, /**< SCIP data structure */
18493  SCIP_Real dualfeastol /**< new feasibility tolerance for reduced costs */
18494  );
18495 
18496 /** sets the convergence tolerance used in barrier algorithm
18497  *
18498  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
18499  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
18500  */
18501 extern
18503  SCIP* scip, /**< SCIP data structure */
18504  SCIP_Real barrierconvtol /**< new convergence tolerance used in barrier algorithm */
18505  );
18506 
18507 /** marks that some limit parameter was changed */
18508 extern
18510  SCIP* scip /**< SCIP data structure */
18511  );
18512 
18513 /** returns value treated as infinity */
18514 extern
18516  SCIP* scip /**< SCIP data structure */
18517  );
18518 
18519 /** returns the minimum value that is regarded as huge and should be handled separately (e.g., in activity
18520  * computation)
18521  */
18522 extern
18524  SCIP* scip /**< SCIP data structure */
18525  );
18526 
18527 /** checks, if values are in range of epsilon */
18528 extern
18530  SCIP* scip, /**< SCIP data structure */
18531  SCIP_Real val1, /**< first value to be compared */
18532  SCIP_Real val2 /**< second value to be compared */
18533  );
18534 
18535 /** checks, if val1 is (more than epsilon) lower than val2 */
18536 extern
18538  SCIP* scip, /**< SCIP data structure */
18539  SCIP_Real val1, /**< first value to be compared */
18540  SCIP_Real val2 /**< second value to be compared */
18541  );
18542 
18543 /** checks, if val1 is not (more than epsilon) greater than val2 */
18544 extern
18546  SCIP* scip, /**< SCIP data structure */
18547  SCIP_Real val1, /**< first value to be compared */
18548  SCIP_Real val2 /**< second value to be compared */
18549  );
18550 
18551 /** checks, if val1 is (more than epsilon) greater than val2 */
18552 extern
18554  SCIP* scip, /**< SCIP data structure */
18555  SCIP_Real val1, /**< first value to be compared */
18556  SCIP_Real val2 /**< second value to be compared */
18557  );
18558 
18559 /** checks, if val1 is not (more than epsilon) lower than val2 */
18560 extern
18562  SCIP* scip, /**< SCIP data structure */
18563  SCIP_Real val1, /**< first value to be compared */
18564  SCIP_Real val2 /**< second value to be compared */
18565  );
18566 
18567 /** checks, if value is (positive) infinite */
18568 extern
18570  SCIP* scip, /**< SCIP data structure */
18571  SCIP_Real val /**< value to be compared against infinity */
18572  );
18573 
18574 /** checks, if value is huge and should be handled separately (e.g., in activity computation) */
18575 extern
18577  SCIP* scip, /**< SCIP data structure */
18578  SCIP_Real val /**< value to be checked whether it is huge */
18579  );
18580 
18581 /** checks, if value is in range epsilon of 0.0 */
18582 extern
18584  SCIP* scip, /**< SCIP data structure */
18585  SCIP_Real val /**< value to process */
18586  );
18587 
18588 /** checks, if value is greater than epsilon */
18589 extern
18591  SCIP* scip, /**< SCIP data structure */
18592  SCIP_Real val /**< value to process */
18593  );
18594 
18595 /** checks, if value is lower than -epsilon */
18596 extern
18598  SCIP* scip, /**< SCIP data structure */
18599  SCIP_Real val /**< value to process */
18600  );
18601 
18602 /** checks, if value is integral within epsilon */
18603 extern
18605  SCIP* scip, /**< SCIP data structure */
18606  SCIP_Real val /**< value to process */
18607  );
18608 
18609 /** checks whether the product val * scalar is integral in epsilon scaled by scalar */
18610 extern
18612  SCIP* scip, /**< SCIP data structure */
18613  SCIP_Real val, /**< unscaled value to check for scaled integrality */
18614  SCIP_Real scalar /**< value to scale val with for checking for integrality */
18615  );
18616 
18617 /** checks, if given fractional part is smaller than epsilon */
18618 extern
18620  SCIP* scip, /**< SCIP data structure */
18621  SCIP_Real val /**< value to process */
18622  );
18623 
18624 /** rounds value + epsilon down to the next integer */
18625 extern
18627  SCIP* scip, /**< SCIP data structure */
18628  SCIP_Real val /**< value to process */
18629  );
18630 
18631 /** rounds value - epsilon up to the next integer */
18632 extern
18634  SCIP* scip, /**< SCIP data structure */
18635  SCIP_Real val /**< value to process */
18636  );
18637 
18638 /** rounds value to the nearest integer with epsilon tolerance */
18639 extern
18641  SCIP* scip, /**< SCIP data structure */
18642  SCIP_Real val /**< value to process */
18643  );
18644 
18645 /** returns fractional part of value, i.e. x - floor(x) in epsilon tolerance */
18646 extern
18648  SCIP* scip, /**< SCIP data structure */
18649  SCIP_Real val /**< value to return fractional part for */
18650  );
18651 
18652 /** checks, if values are in range of sumepsilon */
18653 extern
18655  SCIP* scip, /**< SCIP data structure */
18656  SCIP_Real val1, /**< first value to be compared */
18657  SCIP_Real val2 /**< second value to be compared */
18658  );
18659 
18660 /** checks, if val1 is (more than sumepsilon) lower than val2 */
18661 extern
18663  SCIP* scip, /**< SCIP data structure */
18664  SCIP_Real val1, /**< first value to be compared */
18665  SCIP_Real val2 /**< second value to be compared */
18666  );
18667 
18668 /** checks, if val1 is not (more than sumepsilon) greater than val2 */
18669 extern
18671  SCIP* scip, /**< SCIP data structure */
18672  SCIP_Real val1, /**< first value to be compared */
18673  SCIP_Real val2 /**< second value to be compared */
18674  );
18675 
18676 /** checks, if val1 is (more than sumepsilon) greater than val2 */
18677 extern
18679  SCIP* scip, /**< SCIP data structure */
18680  SCIP_Real val1, /**< first value to be compared */
18681  SCIP_Real val2 /**< second value to be compared */
18682  );
18683 
18684 /** checks, if val1 is not (more than sumepsilon) lower than val2 */
18685 extern
18687  SCIP* scip, /**< SCIP data structure */
18688  SCIP_Real val1, /**< first value to be compared */
18689  SCIP_Real val2 /**< second value to be compared */
18690  );
18691 
18692 /** checks, if value is in range sumepsilon of 0.0 */
18693 extern
18695  SCIP* scip, /**< SCIP data structure */
18696  SCIP_Real val /**< value to process */
18697  );
18698 
18699 /** checks, if value is greater than sumepsilon */
18700 extern
18702  SCIP* scip, /**< SCIP data structure */
18703  SCIP_Real val /**< value to process */
18704  );
18705 
18706 /** checks, if value is lower than -sumepsilon */
18707 extern
18709  SCIP* scip, /**< SCIP data structure */
18710  SCIP_Real val /**< value to process */
18711  );
18712 
18713 /** checks, if relative difference of values is in range of feasibility tolerance */
18714 extern
18716  SCIP* scip, /**< SCIP data structure */
18717  SCIP_Real val1, /**< first value to be compared */
18718  SCIP_Real val2 /**< second value to be compared */
18719  );
18720 
18721 /** checks, if relative difference val1 and val2 is lower than feasibility tolerance */
18722 extern
18724  SCIP* scip, /**< SCIP data structure */
18725  SCIP_Real val1, /**< first value to be compared */
18726  SCIP_Real val2 /**< second value to be compared */
18727  );
18728 
18729 /** checks, if relative difference of val1 and val2 is not greater than feasibility tolerance */
18730 extern
18732  SCIP* scip, /**< SCIP data structure */
18733  SCIP_Real val1, /**< first value to be compared */
18734  SCIP_Real val2 /**< second value to be compared */
18735  );
18736 
18737 /** checks, if relative difference of val1 and val2 is greater than feastol */
18738 extern
18740  SCIP* scip, /**< SCIP data structure */
18741  SCIP_Real val1, /**< first value to be compared */
18742  SCIP_Real val2 /**< second value to be compared */
18743  );
18744 
18745 /** checks, if relative difference of val1 and val2 is not lower than -feastol */
18746 extern
18748  SCIP* scip, /**< SCIP data structure */
18749  SCIP_Real val1, /**< first value to be compared */
18750  SCIP_Real val2 /**< second value to be compared */
18751  );
18752 
18753 /** checks, if value is in range feasibility tolerance of 0.0 */
18754 extern
18756  SCIP* scip, /**< SCIP data structure */
18757  SCIP_Real val /**< value to process */
18758  );
18759 
18760 /** checks, if value is greater than feasibility tolerance */
18761 extern
18763  SCIP* scip, /**< SCIP data structure */
18764  SCIP_Real val /**< value to process */
18765  );
18766 
18767 /** checks, if value is lower than -feasibility tolerance */
18768 extern
18770  SCIP* scip, /**< SCIP data structure */
18771  SCIP_Real val /**< value to process */
18772  );
18773 
18774 /** checks, if value is integral within the LP feasibility bounds */
18775 extern
18777  SCIP* scip, /**< SCIP data structure */
18778  SCIP_Real val /**< value to process */
18779  );
18780 
18781 /** checks, if given fractional part is smaller than feastol */
18782 extern
18784  SCIP* scip, /**< SCIP data structure */
18785  SCIP_Real val /**< value to process */
18786  );
18787 
18788 /** rounds value + feasibility tolerance down to the next integer */
18789 extern
18791  SCIP* scip, /**< SCIP data structure */
18792  SCIP_Real val /**< value to process */
18793  );
18794 
18795 /** rounds value - feasibility tolerance up to the next integer */
18796 extern
18798  SCIP* scip, /**< SCIP data structure */
18799  SCIP_Real val /**< value to process */
18800  );
18801 
18802 /** rounds value to the nearest integer in feasibility tolerance */
18803 extern
18805  SCIP* scip, /**< SCIP data structure */
18806  SCIP_Real val /**< value to process */
18807  );
18808 
18809 /** returns fractional part of value, i.e. x - floor(x) */
18810 extern
18812  SCIP* scip, /**< SCIP data structure */
18813  SCIP_Real val /**< value to process */
18814  );
18815 
18816 /** checks, if relative difference of values is in range of dual feasibility tolerance */
18817 extern
18819  SCIP* scip, /**< SCIP data structure */
18820  SCIP_Real val1, /**< first value to be compared */
18821  SCIP_Real val2 /**< second value to be compared */
18822  );
18823 
18824 /** checks, if relative difference val1 and val2 is lower than dual feasibility tolerance */
18825 extern
18827  SCIP* scip, /**< SCIP data structure */
18828  SCIP_Real val1, /**< first value to be compared */
18829  SCIP_Real val2 /**< second value to be compared */
18830  );
18831 
18832 /** checks, if relative difference of val1 and val2 is not greater than dual feasibility tolerance */
18833 extern
18835  SCIP* scip, /**< SCIP data structure */
18836  SCIP_Real val1, /**< first value to be compared */
18837  SCIP_Real val2 /**< second value to be compared */
18838  );
18839 
18840 /** checks, if relative difference of val1 and val2 is greater than dual feasibility tolerance */
18841 extern
18843  SCIP* scip, /**< SCIP data structure */
18844  SCIP_Real val1, /**< first value to be compared */
18845  SCIP_Real val2 /**< second value to be compared */
18846  );
18847 
18848 /** checks, if relative difference of val1 and val2 is not lower than -dual feasibility tolerance */
18849 extern
18851  SCIP* scip, /**< SCIP data structure */
18852  SCIP_Real val1, /**< first value to be compared */
18853  SCIP_Real val2 /**< second value to be compared */
18854  );
18855 
18856 /** checks, if value is in range dual feasibility tolerance of 0.0 */
18857 extern
18859  SCIP* scip, /**< SCIP data structure */
18860  SCIP_Real val /**< value to process */
18861  );
18862 
18863 /** checks, if value is greater than dual feasibility tolerance */
18864 extern
18866  SCIP* scip, /**< SCIP data structure */
18867  SCIP_Real val /**< value to process */
18868  );
18869 
18870 /** checks, if value is lower than -dual feasibility tolerance */
18871 extern
18873  SCIP* scip, /**< SCIP data structure */
18874  SCIP_Real val /**< value to process */
18875  );
18876 
18877 /** checks, if value is integral within the LP dual feasibility tolerance */
18878 extern
18880  SCIP* scip, /**< SCIP data structure */
18881  SCIP_Real val /**< value to process */
18882  );
18883 
18884 /** checks, if given fractional part is smaller than dual feasibility tolerance */
18885 extern
18887  SCIP* scip, /**< SCIP data structure */
18888  SCIP_Real val /**< value to process */
18889  );
18890 
18891 /** rounds value + dual feasibility tolerance down to the next integer */
18892 extern
18894  SCIP* scip, /**< SCIP data structure */
18895  SCIP_Real val /**< value to process */
18896  );
18897 
18898 /** rounds value - dual feasibility tolerance up to the next integer */
18899 extern
18901  SCIP* scip, /**< SCIP data structure */
18902  SCIP_Real val /**< value to process */
18903  );
18904 
18905 /** rounds value to the nearest integer in dual feasibility tolerance */
18906 extern
18908  SCIP* scip, /**< SCIP data structure */
18909  SCIP_Real val /**< value to process */
18910  );
18911 
18912 /** returns fractional part of value, i.e. x - floor(x) in dual feasibility tolerance */
18913 extern
18915  SCIP* scip, /**< SCIP data structure */
18916  SCIP_Real val /**< value to process */
18917  );
18918 
18919 /** checks, if the given new lower bound is tighter (w.r.t. bound strengthening epsilon) than the old one */
18920 extern
18922  SCIP* scip, /**< SCIP data structure */
18923  SCIP_Real newlb, /**< new lower bound */
18924  SCIP_Real oldlb, /**< old lower bound */
18925  SCIP_Real oldub /**< old upper bound */
18926  );
18927 
18928 /** checks, if the given new upper bound is tighter (w.r.t. bound strengthening epsilon) than the old one */
18930  SCIP* scip, /**< SCIP data structure */
18931  SCIP_Real newub, /**< new upper bound */
18932  SCIP_Real oldlb, /**< old lower bound */
18933  SCIP_Real oldub /**< old upper bound */
18934  );
18935 
18936 /** checks, if relative difference of values is in range of epsilon */
18937 extern
18939  SCIP* scip, /**< SCIP data structure */
18940  SCIP_Real val1, /**< first value to be compared */
18941  SCIP_Real val2 /**< second value to be compared */
18942  );
18943 
18944 /** checks, if relative difference of val1 and val2 is lower than epsilon */
18945 extern
18947  SCIP* scip, /**< SCIP data structure */
18948  SCIP_Real val1, /**< first value to be compared */
18949  SCIP_Real val2 /**< second value to be compared */
18950  );
18951 
18952 /** checks, if relative difference of val1 and val2 is not greater than epsilon */
18953 extern
18955  SCIP* scip, /**< SCIP data structure */
18956  SCIP_Real val1, /**< first value to be compared */
18957  SCIP_Real val2 /**< second value to be compared */
18958  );
18959 
18960 /** checks, if relative difference of val1 and val2 is greater than epsilon */
18961 extern
18963  SCIP* scip, /**< SCIP data structure */
18964  SCIP_Real val1, /**< first value to be compared */
18965  SCIP_Real val2 /**< second value to be compared */
18966  );
18967 
18968 /** checks, if relative difference of val1 and val2 is not lower than -epsilon */
18969 extern
18971  SCIP* scip, /**< SCIP data structure */
18972  SCIP_Real val1, /**< first value to be compared */
18973  SCIP_Real val2 /**< second value to be compared */
18974  );
18975 
18976 /** checks, if relative difference of values is in range of sumepsilon */
18977 extern
18979  SCIP* scip, /**< SCIP data structure */
18980  SCIP_Real val1, /**< first value to be compared */
18981  SCIP_Real val2 /**< second value to be compared */
18982  );
18983 
18984 /** checks, if relative difference of val1 and val2 is lower than sumepsilon */
18985 extern
18987  SCIP* scip, /**< SCIP data structure */
18988  SCIP_Real val1, /**< first value to be compared */
18989  SCIP_Real val2 /**< second value to be compared */
18990  );
18991 
18992 /** checks, if relative difference of val1 and val2 is not greater than sumepsilon */
18993 extern
18995  SCIP* scip, /**< SCIP data structure */
18996  SCIP_Real val1, /**< first value to be compared */
18997  SCIP_Real val2 /**< second value to be compared */
18998  );
18999 
19000 /** checks, if relative difference of val1 and val2 is greater than sumepsilon */
19001 extern
19003  SCIP* scip, /**< SCIP data structure */
19004  SCIP_Real val1, /**< first value to be compared */
19005  SCIP_Real val2 /**< second value to be compared */
19006  );
19007 
19008 /** checks, if relative difference of val1 and val2 is not lower than -sumepsilon */
19009 extern
19011  SCIP* scip, /**< SCIP data structure */
19012  SCIP_Real val1, /**< first value to be compared */
19013  SCIP_Real val2 /**< second value to be compared */
19014  );
19015 
19016 /** converts the given real number representing an integer to an int; in optimized mode the function gets inlined for
19017  * performance; in debug mode we check some additional conditions
19018  */
19019 extern
19021  SCIP* scip, /**< SCIP data structure */
19022  SCIP_Real real /**< double bound to convert */
19023  );
19024 
19025 /** converts the given real number representing an integer to a long integer; in optimized mode the function gets inlined for
19026  * performance; in debug mode we check some additional conditions
19027  */
19028 extern
19030  SCIP* scip, /**< SCIP data structure */
19031  SCIP_Real real /**< double bound to convert */
19032  );
19033 
19034 /** Checks, if an iteratively updated value is reliable or should be recomputed from scratch.
19035  * This is useful, if the value, e.g., the activity of a linear constraint or the pseudo objective value, gets a high
19036  * absolute value during the optimization process which is later reduced significantly. In this case, the last digits
19037  * were canceled out when increasing the value and are random after decreasing it.
19038  * We do not consider the cancellations which can occur during increasing the absolute value because they just cannot
19039  * be expressed using fixed precision floating point arithmetic, anymore.
19040  * In order to get more reliable values, the idea is to always store the last reliable value, where increasing the
19041  * absolute of the value is viewed as preserving reliability. Then, after each update, the new absolute value can be
19042  * compared against the last reliable one with this method, checking whether it was decreased by a factor of at least
19043  * "lp/recompfac" and should be recomputed.
19044  */
19045 extern
19047  SCIP* scip, /**< SCIP data structure */
19048  SCIP_Real newvalue, /**< new value after update */
19049  SCIP_Real oldvalue /**< old value, i.e., last reliable value */
19050  );
19051 
19052 #ifdef NDEBUG
19053 
19054 /* In optimized mode, the function calls are overwritten by defines to reduce the number of function calls and
19055  * speed up the algorithms.
19056  */
19057 
19058 #define SCIPinfinity(scip) SCIPsetInfinity((scip)->set)
19059 #define SCIPisInfinity(scip, val) SCIPsetIsInfinity((scip)->set, val)
19060 #define SCIPisHugeValue(scip, val) SCIPsetIsHugeValue((scip)->set, val)
19061 #define SCIPgetHugeValue(scip) SCIPsetGetHugeValue((scip)->set)
19062 #define SCIPisEQ(scip, val1, val2) SCIPsetIsEQ((scip)->set, val1, val2)
19063 #define SCIPisLT(scip, val1, val2) SCIPsetIsLT((scip)->set, val1, val2)
19064 #define SCIPisLE(scip, val1, val2) SCIPsetIsLE((scip)->set, val1, val2)
19065 #define SCIPisGT(scip, val1, val2) SCIPsetIsGT((scip)->set, val1, val2)
19066 #define SCIPisGE(scip, val1, val2) SCIPsetIsGE((scip)->set, val1, val2)
19067 #define SCIPisZero(scip, val) SCIPsetIsZero((scip)->set, val)
19068 #define SCIPisPositive(scip, val) SCIPsetIsPositive((scip)->set, val)
19069 #define SCIPisNegative(scip, val) SCIPsetIsNegative((scip)->set, val)
19070 #define SCIPisIntegral(scip, val) SCIPsetIsIntegral((scip)->set, val)
19071 #define SCIPisScalingIntegral(scip, val, scalar) SCIPsetIsScalingIntegral((scip)->set, val, scalar)
19072 #define SCIPisFracIntegral(scip, val) SCIPsetIsFracIntegral((scip)->set, val)
19073 #define SCIPfloor(scip, val) SCIPsetFloor((scip)->set, val)
19074 #define SCIPceil(scip, val) SCIPsetCeil((scip)->set, val)
19075 #define SCIPround(scip, val) SCIPsetRound((scip)->set, val)
19076 #define SCIPfrac(scip, val) SCIPsetFrac((scip)->set, val)
19077 
19078 #define SCIPisSumEQ(scip, val1, val2) SCIPsetIsSumEQ((scip)->set, val1, val2)
19079 #define SCIPisSumLT(scip, val1, val2) SCIPsetIsSumLT((scip)->set, val1, val2)
19080 #define SCIPisSumLE(scip, val1, val2) SCIPsetIsSumLE((scip)->set, val1, val2)
19081 #define SCIPisSumGT(scip, val1, val2) SCIPsetIsSumGT((scip)->set, val1, val2)
19082 #define SCIPisSumGE(scip, val1, val2) SCIPsetIsSumGE((scip)->set, val1, val2)
19083 #define SCIPisSumZero(scip, val) SCIPsetIsSumZero((scip)->set, val)
19084 #define SCIPisSumPositive(scip, val) SCIPsetIsSumPositive((scip)->set, val)
19085 #define SCIPisSumNegative(scip, val) SCIPsetIsSumNegative((scip)->set, val)
19086 
19087 #define SCIPisFeasEQ(scip, val1, val2) SCIPsetIsFeasEQ((scip)->set, val1, val2)
19088 #define SCIPisFeasLT(scip, val1, val2) SCIPsetIsFeasLT((scip)->set, val1, val2)
19089 #define SCIPisFeasLE(scip, val1, val2) SCIPsetIsFeasLE((scip)->set, val1, val2)
19090 #define SCIPisFeasGT(scip, val1, val2) SCIPsetIsFeasGT((scip)->set, val1, val2)
19091 #define SCIPisFeasGE(scip, val1, val2) SCIPsetIsFeasGE((scip)->set, val1, val2)
19092 #define SCIPisFeasZero(scip, val) SCIPsetIsFeasZero((scip)->set, val)
19093 #define SCIPisFeasPositive(scip, val) SCIPsetIsFeasPositive((scip)->set, val)
19094 #define SCIPisFeasNegative(scip, val) SCIPsetIsFeasNegative((scip)->set, val)
19095 #define SCIPisFeasIntegral(scip, val) SCIPsetIsFeasIntegral((scip)->set, val)
19096 #define SCIPisFeasFracIntegral(scip, val) SCIPsetIsFeasFracIntegral((scip)->set, val)
19097 #define SCIPfeasFloor(scip, val) SCIPsetFeasFloor((scip)->set, val)
19098 #define SCIPfeasCeil(scip, val) SCIPsetFeasCeil((scip)->set, val)
19099 #define SCIPfeasRound(scip, val) SCIPsetFeasRound((scip)->set, val)
19100 #define SCIPfeasFrac(scip, val) SCIPsetFeasFrac((scip)->set, val)
19101 
19102 #define SCIPisDualfeasEQ(scip, val1, val2) SCIPsetIsDualfeasEQ((scip)->set, val1, val2)
19103 #define SCIPisDualfeasLT(scip, val1, val2) SCIPsetIsDualfeasLT((scip)->set, val1, val2)
19104 #define SCIPisDualfeasLE(scip, val1, val2) SCIPsetIsDualfeasLE((scip)->set, val1, val2)
19105 #define SCIPisDualfeasGT(scip, val1, val2) SCIPsetIsDualfeasGT((scip)->set, val1, val2)
19106 #define SCIPisDualfeasGE(scip, val1, val2) SCIPsetIsDualfeasGE((scip)->set, val1, val2)
19107 #define SCIPisDualfeasZero(scip, val) SCIPsetIsDualfeasZero((scip)->set, val)
19108 #define SCIPisDualfeasPositive(scip, val) SCIPsetIsDualfeasPositive((scip)->set, val)
19109 #define SCIPisDualfeasNegative(scip, val) SCIPsetIsDualfeasNegative((scip)->set, val)
19110 #define SCIPisDualfeasIntegral(scip, val) SCIPsetIsDualfeasIntegral((scip)->set, val)
19111 #define SCIPisDualfeasFracIntegral(scip, val) SCIPsetIsDualfeasFracIntegral((scip)->set, val)
19112 #define SCIPdualfeasFloor(scip, val) SCIPsetDualfeasFloor((scip)->set, val)
19113 #define SCIPdualfeasCeil(scip, val) SCIPsetDualfeasCeil((scip)->set, val)
19114 #define SCIPdualfeasRound(scip, val) SCIPsetDualfeasRound((scip)->set, val)
19115 #define SCIPdualfeasFrac(scip, val) SCIPsetDualfeasFrac((scip)->set, val)
19116 
19117 #define SCIPisLbBetter(scip, newlb, oldlb, oldub) SCIPsetIsLbBetter(scip->set, newlb, oldlb, oldub)
19118 #define SCIPisUbBetter(scip, newub, oldlb, oldub) SCIPsetIsUbBetter(scip->set, newub, oldlb, oldub)
19119 
19120 #define SCIPisRelEQ(scip, val1, val2) SCIPsetIsRelEQ((scip)->set, val1, val2)
19121 #define SCIPisRelLT(scip, val1, val2) SCIPsetIsRelLT((scip)->set, val1, val2)
19122 #define SCIPisRelLE(scip, val1, val2) SCIPsetIsRelLE((scip)->set, val1, val2)
19123 #define SCIPisRelGT(scip, val1, val2) SCIPsetIsRelGT((scip)->set, val1, val2)
19124 #define SCIPisRelGE(scip, val1, val2) SCIPsetIsRelGE((scip)->set, val1, val2)
19125 
19126 #define SCIPisSumRelEQ(scip, val1, val2) SCIPsetIsSumRelEQ((scip)->set, val1, val2)
19127 #define SCIPisSumRelLT(scip, val1, val2) SCIPsetIsSumRelLT((scip)->set, val1, val2)
19128 #define SCIPisSumRelLE(scip, val1, val2) SCIPsetIsSumRelLE((scip)->set, val1, val2)
19129 #define SCIPisSumRelGT(scip, val1, val2) SCIPsetIsSumRelGT((scip)->set, val1, val2)
19130 #define SCIPisSumRelGE(scip, val1, val2) SCIPsetIsSumRelGE((scip)->set, val1, val2)
19131 #define SCIPconvertRealToInt(scip, real) ((int)((real) < 0 ? ((real) - 0.5) : ((real) + 0.5)))
19132 #define SCIPconvertRealToLongint(scip, real) ((SCIP_Longint)((real) < 0 ? ((real) - 0.5) : ((real) + 0.5)))
19133 
19134 #define SCIPisUpdateUnreliable(scip, newval, oldval) SCIPsetIsUpdateUnreliable((scip)->set, newval, oldval)
19135 #endif
19136 
19137 /** outputs a real number, or "+infinity", or "-infinity" to a file */
19138 extern
19139 void SCIPprintReal(
19140  SCIP* scip, /**< SCIP data structure */
19141  FILE* file, /**< output file (or NULL for standard output) */
19142  SCIP_Real val, /**< value to print */
19143  int width, /**< width of the field */
19144  int precision /**< number of significant digits printed */
19145  );
19146 
19147 /**@} */
19148 
19149 
19150 
19151 
19152 /*
19153  * memory management
19154  */
19155 
19156 /**@name Memory Management */
19157 /**@{ */
19158 
19159 #define SCIPallocMemory(scip,ptr) ( (BMSallocMemory((ptr)) == NULL) \
19160  ? SCIP_NOMEMORY : SCIP_OKAY )
19161 #define SCIPallocMemoryArray(scip,ptr,num) ( (BMSallocMemoryArray((ptr), (num)) == NULL) \
19162  ? SCIP_NOMEMORY : SCIP_OKAY )
19163 #define SCIPallocClearMemoryArray(scip,ptr,num) ( (BMSallocClearMemoryArray((ptr), (num)) == NULL) \
19164  ? SCIP_NOMEMORY : SCIP_OKAY )
19165 #define SCIPallocMemorySize(scip,ptr,size) ( (BMSallocMemorySize((ptr), (size)) == NULL) \
19166  ? SCIP_NOMEMORY : SCIP_OKAY )
19167 #define SCIPreallocMemoryArray(scip,ptr,newnum) ( (BMSreallocMemoryArray((ptr), (newnum)) == NULL) \
19168  ? SCIP_NOMEMORY : SCIP_OKAY )
19169 #define SCIPreallocMemorySize(scip,ptr,newsize) ( (BMSreallocMemorySize((ptr), (newsize)) == NULL) \
19170  ? SCIP_NOMEMORY : SCIP_OKAY )
19171 #define SCIPduplicateMemory(scip, ptr, source) ( (BMSduplicateMemory((ptr), (source)) == NULL) \
19172  ? SCIP_NOMEMORY : SCIP_OKAY )
19173 #define SCIPduplicateMemoryArray(scip, ptr, source, num) \
19174  ( (BMSduplicateMemoryArray((ptr), (source), (num)) == NULL) \
19175  ? SCIP_NOMEMORY : SCIP_OKAY )
19176 #define SCIPfreeMemory(scip,ptr) BMSfreeMemory(ptr)
19177 #define SCIPfreeMemoryNull(scip,ptr) BMSfreeMemoryNull(ptr)
19178 #define SCIPfreeMemoryArray(scip,ptr) BMSfreeMemoryArray(ptr)
19179 #define SCIPfreeMemoryArrayNull(scip,ptr) BMSfreeMemoryArrayNull(ptr)
19180 #define SCIPfreeMemorySize(scip,ptr) BMSfreeMemorySize(ptr)
19181 #define SCIPfreeMemorySizeNull(scip,ptr) BMSfreeMemorySizeNull(ptr)
19182 
19183 #define SCIPallocBlockMemory(scip,ptr) ( (BMSallocBlockMemory(SCIPblkmem(scip), (ptr)) == NULL) \
19184  ? SCIP_NOMEMORY : SCIP_OKAY )
19185 #define SCIPallocBlockMemoryArray(scip,ptr,num) ( (BMSallocBlockMemoryArray(SCIPblkmem(scip), (ptr), (num)) == NULL) \
19186  ? SCIP_NOMEMORY : SCIP_OKAY )
19187 #define SCIPallocBlockMemorySize(scip,ptr,size) ( (BMSallocBlockMemorySize(SCIPblkmem(scip), (ptr), (size)) == NULL) \
19188  ? SCIP_NOMEMORY : SCIP_OKAY )
19189 #define SCIPreallocBlockMemoryArray(scip,ptr,oldnum,newnum) \
19190  ( (BMSreallocBlockMemoryArray(SCIPblkmem(scip), (ptr), (oldnum), (newnum)) \
19191  == NULL) ? SCIP_NOMEMORY : SCIP_OKAY )
19192 #define SCIPreallocBlockMemorySize(scip,ptr,oldsize,newsize) \
19193  ( (BMSreallocBlockMemorySize(SCIPblkmem(scip), (ptr), (oldsize), (newsize)) \
19194  == NULL) ? SCIP_NOMEMORY : SCIP_OKAY )
19195 #define SCIPduplicateBlockMemory(scip, ptr, source) \
19196  ( (BMSduplicateBlockMemory(SCIPblkmem(scip), (ptr), (source)) == NULL) \
19197  ? SCIP_NOMEMORY : SCIP_OKAY )
19198 #define SCIPduplicateBlockMemoryArray(scip, ptr, source, num) \
19199  ( (BMSduplicateBlockMemoryArray(SCIPblkmem(scip), (ptr), (source), (num)) \
19200  == NULL) ? SCIP_NOMEMORY : SCIP_OKAY )
19201 #define SCIPensureBlockMemoryArray(scip,ptr,arraysizeptr,minsize) \
19202  ( (SCIPensureBlockMemoryArray_call((scip), (void**)(ptr), sizeof(**(ptr)), \
19203  (arraysizeptr), (minsize))) )
19204 #define SCIPfreeBlockMemory(scip,ptr) BMSfreeBlockMemory(SCIPblkmem(scip), (ptr))
19205 #define SCIPfreeBlockMemoryNull(scip,ptr) BMSfreeBlockMemoryNull(SCIPblkmem(scip), (ptr))
19206 #define SCIPfreeBlockMemoryArray(scip,ptr,num) BMSfreeBlockMemoryArray(SCIPblkmem(scip), (ptr), (num))
19207 #define SCIPfreeBlockMemoryArrayNull(scip,ptr,num) \
19208  BMSfreeBlockMemoryArrayNull(SCIPblkmem(scip), (ptr), (num))
19209 #define SCIPfreeBlockMemorySize(scip,ptr,size) BMSfreeBlockMemorySize(SCIPblkmem(scip), (ptr), (size))
19210 #define SCIPfreeBlockMemorySizeNull(scip,ptr,size) \
19211  BMSfreeBlockMemorySizeNull(SCIPblkmem(scip), (ptr), (size))
19212 
19213 #define SCIPallocBuffer(scip,ptr) SCIPallocBufferSize(scip, (void**)(ptr), (int)sizeof(**(ptr)))
19214 #define SCIPallocBufferArray(scip,ptr,num) SCIPallocBufferSize(scip, (void**)(ptr), (num)*(int)sizeof(**(ptr)))
19215 #define SCIPreallocBufferArray(scip,ptr,num) SCIPreallocBufferSize(scip, (void**)(ptr), (num)*(int)sizeof(**(ptr)))
19216 #define SCIPduplicateBuffer(scip,ptr,source) SCIPduplicateBufferSize(scip, (void**)(ptr), source, (int)sizeof(**(ptr)))
19217 #define SCIPduplicateBufferArray(scip,ptr,source,num) \
19218  SCIPduplicateBufferSize(scip, (void**)(ptr), source, (num)*(int)sizeof(**(ptr)))
19219 #define SCIPfreeBuffer(scip,ptr) SCIPfreeBufferSize(scip, (void**)(ptr), 0)
19220 #define SCIPfreeBufferNull(scip,ptr) { if( *(ptr) != NULL ) SCIPfreeBuffer(scip, ptr); }
19221 #define SCIPfreeBufferArray(scip,ptr) SCIPfreeBufferSize(scip, (void**)(ptr), 0)
19222 #define SCIPfreeBufferArrayNull(scip,ptr) { if( *(ptr) != NULL ) SCIPfreeBufferArray(scip, ptr); }
19223 
19224 
19225 /** returns block memory to use at the current time
19226  *
19227  * @return the block memory to use at the current time.
19228  */
19229 extern
19230 BMS_BLKMEM* SCIPblkmem(
19231  SCIP* scip /**< SCIP data structure */
19232  );
19233 
19234 /** returns the total number of bytes used in block memory
19235  *
19236  * @return the total number of bytes used in block memory.
19237  */
19238 extern
19240  SCIP* scip /**< SCIP data structure */
19241  );
19242 
19243 /** returns the estimated number of bytes used by external software, e.g., the LP solver
19244  *
19245  * @return the estimated number of bytes used by external software, e.g., the LP solver.
19246  */
19247 extern
19249  SCIP* scip /**< SCIP data structure */
19250  );
19251 
19252 /** calculate memory size for dynamically allocated arrays
19253  *
19254  * @return the memory size for dynamically allocated arrays.
19255  */
19256 extern
19258  SCIP* scip, /**< SCIP data structure */
19259  int num /**< minimum number of entries to store */
19260  );
19261 
19262 /** extends a dynamically allocated block memory array to be able to store at least the given number of elements;
19263  * use SCIPensureBlockMemoryArray() define to call this method!
19264  *
19265  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19266  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19267  */
19268 extern
19270  SCIP* scip, /**< SCIP data structure */
19271  void** arrayptr, /**< pointer to dynamically sized array */
19272  size_t elemsize, /**< size in bytes of each element in array */
19273  int* arraysize, /**< pointer to current array size */
19274  int minsize /**< required minimal array size */
19275  );
19276 
19277 /** gets a memory buffer with at least the given size
19278  *
19279  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19280  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19281  */
19282 extern
19284  SCIP* scip, /**< SCIP data structure */
19285  void** ptr, /**< pointer to store the buffer */
19286  int size /**< required size in bytes of buffer */
19287  );
19288 
19289 /** allocates a memory buffer with at least the given size and copies the given memory into the buffer
19290  *
19291  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19292  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19293  */
19294 extern
19296  SCIP* scip, /**< SCIP data structure */
19297  void** ptr, /**< pointer to store the buffer */
19298  const void* source, /**< memory block to copy into the buffer */
19299  int size /**< required size in bytes of buffer */
19300  );
19301 
19302 /** reallocates a memory buffer to at least the given size
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  void** ptr, /**< pointer to the buffer */
19311  int size /**< required size in bytes of buffer */
19312  );
19313 
19314 /** frees a memory buffer */
19315 extern
19316 void SCIPfreeBufferSize(
19317  SCIP* scip, /**< SCIP data structure */
19318  void** ptr, /**< pointer to the buffer */
19319  int dummysize /**< used to get a safer define for SCIPfreeBuffer() and SCIPfreeBufferArray() */
19320  );
19321 
19322 /** prints output about used memory */
19323 extern
19325  SCIP* scip /**< SCIP data structure */
19326  );
19327 
19328 /**@} */
19329 
19330 
19331 
19332 
19333 /*
19334  * dynamic arrays
19335  */
19336 
19337 /**@name Dynamic Arrays */
19338 /**@{ */
19339 
19340 /** creates a dynamic array of real values
19341  *
19342  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19343  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19344  */
19345 extern
19347  SCIP* scip, /**< SCIP data structure */
19348  SCIP_REALARRAY** realarray /**< pointer to store the real array */
19349  );
19350 
19351 /** frees a dynamic array of real values
19352  *
19353  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19354  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19355  */
19356 extern
19358  SCIP* scip, /**< SCIP data structure */
19359  SCIP_REALARRAY** realarray /**< pointer to the real array */
19360  );
19361 
19362 /** extends dynamic array to be able to store indices from minidx to maxidx
19363  *
19364  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19365  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19366  */
19367 extern
19369  SCIP* scip, /**< SCIP data structure */
19370  SCIP_REALARRAY* realarray, /**< dynamic real array */
19371  int minidx, /**< smallest index to allocate storage for */
19372  int maxidx /**< largest index to allocate storage for */
19373  );
19374 
19375 /** clears a dynamic real array
19376  *
19377  * @return clears a dynamic real array
19378  */
19379 extern
19381  SCIP* scip, /**< SCIP data structure */
19382  SCIP_REALARRAY* realarray /**< dynamic real array */
19383  );
19384 
19385 /** gets value of entry in dynamic array */
19386 extern
19388  SCIP* scip, /**< SCIP data structure */
19389  SCIP_REALARRAY* realarray, /**< dynamic real array */
19390  int idx /**< array index to get value for */
19391  );
19392 
19393 /** sets value of entry in dynamic array
19394  *
19395  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19396  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19397  */
19398 extern
19400  SCIP* scip, /**< SCIP data structure */
19401  SCIP_REALARRAY* realarray, /**< dynamic real array */
19402  int idx, /**< array index to set value for */
19403  SCIP_Real val /**< value to set array index to */
19404  );
19405 
19406 /** increases value of entry in dynamic array
19407  *
19408  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19409  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19410  */
19411 extern
19413  SCIP* scip, /**< SCIP data structure */
19414  SCIP_REALARRAY* realarray, /**< dynamic real array */
19415  int idx, /**< array index to increase value for */
19416  SCIP_Real incval /**< value to increase array index */
19417  );
19418 
19419 /** returns the minimal index of all stored non-zero elements
19420  *
19421  * @return the minimal index of all stored non-zero elements
19422  */
19423 extern
19425  SCIP* scip, /**< SCIP data structure */
19426  SCIP_REALARRAY* realarray /**< dynamic real array */
19427  );
19428 
19429 /** returns the maximal index of all stored non-zero elements
19430  *
19431  * @return the maximal index of all stored non-zero elements
19432  */
19433 extern
19435  SCIP* scip, /**< SCIP data structure */
19436  SCIP_REALARRAY* realarray /**< dynamic real array */
19437  );
19438 
19439 /** creates a dynamic array of int values
19440  *
19441  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19442  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19443  */
19444 extern
19446  SCIP* scip, /**< SCIP data structure */
19447  SCIP_INTARRAY** intarray /**< pointer to store the int array */
19448  );
19449 
19450 /** frees a dynamic array of int values
19451  *
19452  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19453  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19454  */
19455 extern
19457  SCIP* scip, /**< SCIP data structure */
19458  SCIP_INTARRAY** intarray /**< pointer to the int array */
19459  );
19460 
19461 /** extends dynamic array to be able to store indices from minidx to maxidx
19462  *
19463  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19464  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19465  */
19466 extern
19468  SCIP* scip, /**< SCIP data structure */
19469  SCIP_INTARRAY* intarray, /**< dynamic int array */
19470  int minidx, /**< smallest index to allocate storage for */
19471  int maxidx /**< largest index to allocate storage for */
19472  );
19473 
19474 /** clears a dynamic int array
19475  *
19476  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19477  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19478  */
19479 extern
19481  SCIP* scip, /**< SCIP data structure */
19482  SCIP_INTARRAY* intarray /**< dynamic int array */
19483  );
19484 
19485 /** gets value of entry in dynamic array
19486  *
19487  * @return value of entry in dynamic array
19488  */
19489 extern
19490 int SCIPgetIntarrayVal(
19491  SCIP* scip, /**< SCIP data structure */
19492  SCIP_INTARRAY* intarray, /**< dynamic int array */
19493  int idx /**< array index to get value for */
19494  );
19495 
19496 /** sets value of entry in dynamic array
19497  *
19498  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19499  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19500  */
19501 extern
19503  SCIP* scip, /**< SCIP data structure */
19504  SCIP_INTARRAY* intarray, /**< dynamic int array */
19505  int idx, /**< array index to set value for */
19506  int val /**< value to set array index to */
19507  );
19508 
19509 /** increases value of entry in dynamic array
19510  *
19511  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19512  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19513  */
19514 extern
19516  SCIP* scip, /**< SCIP data structure */
19517  SCIP_INTARRAY* intarray, /**< dynamic int array */
19518  int idx, /**< array index to increase value for */
19519  int incval /**< value to increase array index */
19520  );
19521 
19522 /** returns the minimal index of all stored non-zero elements
19523  *
19524  * @return the minimal index of all stored non-zero elements
19525  */
19526 extern
19528  SCIP* scip, /**< SCIP data structure */
19529  SCIP_INTARRAY* intarray /**< dynamic int array */
19530  );
19531 
19532 /** returns the maximal index of all stored non-zero elements
19533  *
19534  * @return the maximal index of all stored non-zero elements
19535  */
19536 extern
19538  SCIP* scip, /**< SCIP data structure */
19539  SCIP_INTARRAY* intarray /**< dynamic int array */
19540  );
19541 
19542 /** creates a dynamic array of bool values
19543  *
19544  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19545  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19546  */
19547 extern
19549  SCIP* scip, /**< SCIP data structure */
19550  SCIP_BOOLARRAY** boolarray /**< pointer to store the bool array */
19551  );
19552 
19553 /** frees a dynamic array of bool values
19554  *
19555  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19556  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19557  */
19558 extern
19560  SCIP* scip, /**< SCIP data structure */
19561  SCIP_BOOLARRAY** boolarray /**< pointer to the bool array */
19562  );
19563 
19564 /** extends dynamic array to be able to store indices from minidx to maxidx
19565  *
19566  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19567  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19568  */
19569 extern
19571  SCIP* scip, /**< SCIP data structure */
19572  SCIP_BOOLARRAY* boolarray, /**< dynamic bool array */
19573  int minidx, /**< smallest index to allocate storage for */
19574  int maxidx /**< largest index to allocate storage for */
19575  );
19576 
19577 /** clears a dynamic bool array
19578  *
19579  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19580  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19581  */
19582 extern
19584  SCIP* scip, /**< SCIP data structure */
19585  SCIP_BOOLARRAY* boolarray /**< dynamic bool array */
19586  );
19587 
19588 /** gets value of entry in dynamic array
19589  *
19590  * @return value of entry in dynamic array at position idx
19591  */
19592 extern
19594  SCIP* scip, /**< SCIP data structure */
19595  SCIP_BOOLARRAY* boolarray, /**< dynamic bool array */
19596  int idx /**< array index to get value for */
19597  );
19598 
19599 /** sets value of entry in dynamic array
19600  *
19601  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19602  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19603  */
19604 extern
19606  SCIP* scip, /**< SCIP data structure */
19607  SCIP_BOOLARRAY* boolarray, /**< dynamic bool array */
19608  int idx, /**< array index to set value for */
19609  SCIP_Bool val /**< value to set array index to */
19610  );
19611 
19612 /** returns the minimal index of all stored non-zero elements
19613  *
19614  * @return the minimal index of all stored non-zero elements
19615  */
19616 extern
19618  SCIP* scip, /**< SCIP data structure */
19619  SCIP_BOOLARRAY* boolarray /**< dynamic bool array */
19620  );
19621 
19622 /** returns the maximal index of all stored non-zero elements
19623  *
19624  * @return the maximal index of all stored non-zero elements
19625  */
19626 extern
19628  SCIP* scip, /**< SCIP data structure */
19629  SCIP_BOOLARRAY* boolarray /**< dynamic bool array */
19630  );
19631 
19632 /** creates a dynamic array of pointers
19633  *
19634  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19635  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19636  */
19637 extern
19639  SCIP* scip, /**< SCIP data structure */
19640  SCIP_PTRARRAY** ptrarray /**< pointer to store the int array */
19641  );
19642 
19643 /** frees a dynamic array of pointers
19644  *
19645  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19646  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19647  */
19648 extern
19650  SCIP* scip, /**< SCIP data structure */
19651  SCIP_PTRARRAY** ptrarray /**< pointer to the int array */
19652  );
19653 
19654 /** extends dynamic array to be able to store indices from minidx to maxidx
19655  *
19656  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19657  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19658  */
19659 extern
19661  SCIP* scip, /**< SCIP data structure */
19662  SCIP_PTRARRAY* ptrarray, /**< dynamic int array */
19663  int minidx, /**< smallest index to allocate storage for */
19664  int maxidx /**< largest index to allocate storage for */
19665  );
19666 
19667 /** clears a dynamic pointer array
19668  *
19669  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19670  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19671  */
19672 extern
19674  SCIP* scip, /**< SCIP data structure */
19675  SCIP_PTRARRAY* ptrarray /**< dynamic int array */
19676  );
19677 
19678 /** gets value of entry in dynamic array */
19679 extern
19680 void* SCIPgetPtrarrayVal(
19681  SCIP* scip, /**< SCIP data structure */
19682  SCIP_PTRARRAY* ptrarray, /**< dynamic int array */
19683  int idx /**< array index to get value for */
19684  );
19685 
19686 /** sets value of entry in dynamic array
19687  *
19688  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
19689  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
19690  */
19691 extern
19693  SCIP* scip, /**< SCIP data structure */
19694  SCIP_PTRARRAY* ptrarray, /**< dynamic int array */
19695  int idx, /**< array index to set value for */
19696  void* val /**< value to set array index to */
19697  );
19698 
19699 /** returns the minimal index of all stored non-zero elements
19700  *
19701  * @return the minimal index of all stored non-zero elements
19702  */
19703 extern
19705  SCIP* scip, /**< SCIP data structure */
19706  SCIP_PTRARRAY* ptrarray /**< dynamic ptr array */
19707  );
19708 
19709 /** returns the maximal index of all stored non-zero elements
19710  *
19711  * @return the maximal index of all stored non-zero elements
19712  */
19713 extern
19715  SCIP* scip, /**< SCIP data structure */
19716  SCIP_PTRARRAY* ptrarray /**< dynamic ptr array */
19717  );
19718 
19719 #ifdef NDEBUG
19720 
19721 /* In optimized mode, the function calls are overwritten by defines to reduce the number of function calls and
19722  * speed up the algorithms.
19723  */
19724 
19725 #define SCIPcreateRealarray(scip, realarray) SCIPrealarrayCreate(realarray, SCIPblkmem(scip))
19726 #define SCIPfreeRealarray(scip, realarray) SCIPrealarrayFree(realarray)
19727 #define SCIPextendRealarray(scip, realarray, minidx, maxidx) SCIPrealarrayExtend(realarray, (scip)->set->mem_arraygrowinit, (scip)->set->mem_arraygrowfac, minidx, maxidx)
19728 #define SCIPclearRealarray(scip, realarray) SCIPrealarrayClear(realarray)
19729 #define SCIPgetRealarrayVal(scip, realarray, idx) SCIPrealarrayGetVal(realarray, idx)
19730 #define SCIPsetRealarrayVal(scip, realarray, idx, val) SCIPrealarraySetVal(realarray, (scip)->set->mem_arraygrowinit, (scip)->set->mem_arraygrowfac, idx, val)
19731 #define SCIPincRealarrayVal(scip, realarray, idx, incval) SCIPrealarrayIncVal(realarray, (scip)->set->mem_arraygrowinit, (scip)->set->mem_arraygrowfac, idx, incval)
19732 #define SCIPgetRealarrayMinIdx(scip, realarray) SCIPrealarrayGetMinIdx(realarray)
19733 #define SCIPgetRealarrayMaxIdx(scip, realarray) SCIPrealarrayGetMaxIdx(realarray)
19734 
19735 #define SCIPcreateIntarray(scip, intarray) SCIPintarrayCreate(intarray, SCIPblkmem(scip))
19736 #define SCIPfreeIntarray(scip, intarray) SCIPintarrayFree(intarray)
19737 #define SCIPextendIntarray(scip, intarray, minidx, maxidx) SCIPintarrayExtend(intarray, (scip)->set->mem_arraygrowinit, (scip)->set->mem_arraygrowfac, minidx, maxidx)
19738 #define SCIPclearIntarray(scip, intarray) SCIPintarrayClear(intarray)
19739 #define SCIPgetIntarrayVal(scip, intarray, idx) SCIPintarrayGetVal(intarray, idx)
19740 #define SCIPsetIntarrayVal(scip, intarray, idx, val) SCIPintarraySetVal(intarray, (scip)->set->mem_arraygrowinit, (scip)->set->mem_arraygrowfac, idx, val)
19741 #define SCIPincIntarrayVal(scip, intarray, idx, incval) SCIPintarrayIncVal(intarray, (scip)->set->mem_arraygrowinit, (scip)->set->mem_arraygrowfac, idx, incval)
19742 #define SCIPgetIntarrayMinIdx(scip, intarray) SCIPintarrayGetMinIdx(intarray)
19743 #define SCIPgetIntarrayMaxIdx(scip, intarray) SCIPintarrayGetMaxIdx(intarray)
19744 
19745 #define SCIPcreateBoolarray(scip, boolarray) SCIPboolarrayCreate(boolarray, SCIPblkmem(scip))
19746 #define SCIPfreeBoolarray(scip, boolarray) SCIPboolarrayFree(boolarray)
19747 #define SCIPextendBoolarray(scip, boolarray, minidx, maxidx) SCIPboolarrayExtend(boolarray, (scip)->set->mem_arraygrowinit, (scip)->set->mem_arraygrowfac, minidx, maxidx)
19748 #define SCIPclearBoolarray(scip, boolarray) SCIPboolarrayClear(boolarray)
19749 #define SCIPgetBoolarrayVal(scip, boolarray, idx) SCIPboolarrayGetVal(boolarray, idx)
19750 #define SCIPsetBoolarrayVal(scip, boolarray, idx, val) SCIPboolarraySetVal(boolarray, (scip)->set->mem_arraygrowinit, (scip)->set->mem_arraygrowfac, idx, val)
19751 #define SCIPgetBoolarrayMinIdx(scip, boolarray) SCIPboolarrayGetMinIdx(boolarray)
19752 #define SCIPgetBoolarrayMaxIdx(scip, boolarray) SCIPboolarrayGetMaxIdx(boolarray)
19753 
19754 #define SCIPcreatePtrarray(scip, ptrarray) SCIPptrarrayCreate(ptrarray, SCIPblkmem(scip))
19755 #define SCIPfreePtrarray(scip, ptrarray) SCIPptrarrayFree(ptrarray)
19756 #define SCIPextendPtrarray(scip, ptrarray, minidx, maxidx) SCIPptrarrayExtend(ptrarray, (scip)->set->mem_arraygrowinit, (scip)->set->mem_arraygrowfac, minidx, maxidx)
19757 #define SCIPclearPtrarray(scip, ptrarray) SCIPptrarrayClear(ptrarray)
19758 #define SCIPgetPtrarrayVal(scip, ptrarray, idx) SCIPptrarrayGetVal(ptrarray, idx)
19759 #define SCIPsetPtrarrayVal(scip, ptrarray, idx, val) SCIPptrarraySetVal(ptrarray, (scip)->set->mem_arraygrowinit, (scip)->set->mem_arraygrowfac, idx, val)
19760 #define SCIPgetPtrarrayMinIdx(scip, ptrarray) SCIPptrarrayGetMinIdx(ptrarray)
19761 #define SCIPgetPtrarrayMaxIdx(scip, ptrarray) SCIPptrarrayGetMaxIdx(ptrarray)
19762 
19763 #endif
19764 
19765 /**@} */
19766 #ifdef __cplusplus
19767 }
19768 #endif
19769 
19770 #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 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)
SCIP_RETCODE SCIPgetLPBInvACol(SCIP *scip, int c, SCIP_Real *coef)
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 SCIPsetLongintParam(SCIP *scip, const char *name, SCIP_Longint value)
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:43
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:88
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 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 SCIPduplicateBufferSize(SCIP *scip, void **ptr, const void *source, int size)
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:47
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:582
SCIP_Real SCIPgetRowSolActivity(SCIP *scip, SCIP_ROW *row, SCIP_SOL *sol)
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_RETCODE SCIPincludePresolBasic(SCIP *scip, SCIP_PRESOL **presolptr, const char *name, const char *desc, int priority, int maxrounds, SCIP_Bool delay, SCIP_DECL_PRESOLEXEC((*presolexec)), SCIP_PRESOLDATA *presoldata)
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:105
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_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)
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:186
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)
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:113
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 SCIPsetPropPresol(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPPRESOL((*proppresol)), int presolpriority, int presolmaxrounds, SCIP_Bool presoldelay)
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)
SCIP_RETCODE SCIPupdateCutoffbound(SCIP *scip, SCIP_Real cutoffbound)
#define SCIP_DECL_CONSPRESOL(x)
Definition: type_cons.h:470
SCIP_RETCODE SCIPchgVarBranchDirection(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR branchdirection)
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:390
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:196
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)
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 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)
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
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 SCIPgetLPBInvARow(SCIP *scip, int r, SCIP_Real *binvrow, SCIP_Real *coef)
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_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_RETCODE SCIPgetLPBInvRow(SCIP *scip, int r, SCIP_Real *coef)
#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:521
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:64
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)
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_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:73
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 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 SCIPsetConshdlrProp(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPROP((*consprop)), int propfreq, SCIP_Bool delayprop, SCIP_PROPTIMING timingmask)
SCIP_RETCODE SCIPsetConshdlrPresol(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRESOL((*conspresol)), int maxprerounds, SCIP_Bool delaypresol)
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:53
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:53
SCIP_RETCODE SCIPaddVarBranchFactor(SCIP *scip, SCIP_VAR *var, SCIP_Real addfactor)
#define SCIP_DECL_PROPEXITPRE(x)
Definition: type_prop.h:100
#define SCIP_DECL_HEUREXEC(x)
Definition: type_heur.h:119
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:789
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:44
#define SCIP_DECL_CONSEXITSOL(x)
Definition: type_cons.h:173
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
public methods for branching rules
SCIP_RETCODE SCIPaddNlRow(SCIP *scip, SCIP_NLROW *nlrow)
int SCIPgetNEventhdlrs(SCIP *scip)
SCIP_Real SCIPgetAvgPseudocostCurrentRun(SCIP *scip, SCIP_Real solvaldelta)
SCIP_RETCODE SCIPsetBranchruleExecPs(SCIP *scip, SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXECPS((*branchexecps)))
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 delaypresol, SCIP_Bool needscons, SCIP_PROPTIMING timingmask, 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_CONSHDLRDATA *conshdlrdata)
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 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 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_Bool SCIPisCutEfficacious(SCIP *scip, SCIP_SOL *sol, SCIP_ROW *cut)
SCIP_Longint SCIPgetNDualResolveLPs(SCIP *scip)
SCIP_Real SCIPgetRowLPFeasibility(SCIP *scip, SCIP_ROW *row)
SCIP_Real SCIPgetRowMaxCoef(SCIP *scip, SCIP_ROW *row)
SCIP_RETCODE SCIPaddClique(SCIP *scip, SCIP_VAR **vars, SCIP_Bool *values, int nvars, SCIP_Bool *infeasible, int *nbdchgs)
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:198
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)))
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)
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)))
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, 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)
int SCIPgetNEnabledConss(SCIP *scip)
#define SCIP_DECL_CONSINITLP(x)
Definition: type_cons.h:209
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)
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)
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)
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 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_RETCODE SCIPgetLPBInvCol(SCIP *scip, int c, SCIP_Real *coef)
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 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_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 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_Bool *downinf, SCIP_Bool *upinf, SCIP_Bool *downconflict, SCIP_Bool *upconflict, SCIP_Bool *lperror, SCIP_Real *newlbs, SCIP_Real *newubs)
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 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:158
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)
void SCIPfreeBufferSize(SCIP *scip, void **ptr, int dummysize)
SCIP_RETCODE SCIPaddConsNode(SCIP *scip, SCIP_NODE *node, SCIP_CONS *cons, SCIP_NODE *validnode)
#define SCIP_DECL_PRESOLEXEC(x)
Definition: type_presol.h:150
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)
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:673
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)
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:659
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)
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 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)
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 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)
SCIP_RETCODE SCIPsetHeurPriority(SCIP *scip, SCIP_HEUR *heur, int priority)
#define SCIP_DECL_PRICERFARKAS(x)
Definition: type_pricer.h:159
SCIP_RETCODE SCIPmarkConsPropagate(SCIP *scip, SCIP_CONS *cons)
type definitions for primal heuristics
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:749
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)
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:612
SCIP_RETCODE SCIPgetExprtreeTransformedVars(SCIP *scip, SCIP_EXPRTREE *tree)
SCIP_NODESEL * SCIPgetNodesel(SCIP *scip)
#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
SCIP_RETCODE SCIPchgNlRowRhs(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real rhs)
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:79
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)
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)
#define SCIP_DECL_CONSDISABLE(x)
Definition: type_cons.h:642
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_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_Bool SCIPisRelGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPendDiveNLP(SCIP *scip)
SCIP_RETCODE SCIPaddConsLocks(SCIP *scip, SCIP_CONS *cons, int nlockspos, int nlocksneg)
SCIP_RETCODE SCIPpropagateProbingImplications(SCIP *scip, SCIP_Bool *cutoff)
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)
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:627
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_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:312
SCIP_Bool SCIPisParamFixed(SCIP *scip, const char *name)
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:49
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_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:238
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:91
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:771
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:93
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)
SCIP_RETCODE SCIPallocBufferSize(SCIP *scip, void **ptr, int size)
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:49
#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_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)
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:56
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 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_Bool SCIPisRelLE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
#define SCIP_DECL_CONSEXITPRE(x)
Definition: type_cons.h:137
SCIP_RETCODE SCIPcreateSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
SCIP_RETCODE SCIPsetHeurExit(SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEUREXIT((*heurexit)))
public methods for variable pricers
#define SCIP_DECL_PRESOLINIT(x)
Definition: type_presol.h:62
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_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 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_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
SCIP_RETCODE SCIPsetConshdlrPrint(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRINT((*consprint)))
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:70
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)
#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 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:355
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 SCIPincludePresol(SCIP *scip, const char *name, const char *desc, int priority, int maxrounds, SCIP_Bool delay, 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_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 SCIPcomputeVarUbLocal(SCIP *scip, SCIP_VAR *var)
void SCIPverbMessage(SCIP *scip, SCIP_VERBLEVEL msgverblevel, FILE *file, const char *formatstr,...)
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_Bool SCIPisGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Longint SCIPgetNRootStrongbranchs(SCIP *scip)
SCIP_CLIQUE ** SCIPgetCliques(SCIP *scip)
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:48
struct SCIP_BoolArray SCIP_BOOLARRAY
Definition: type_misc.h:76
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 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)
SCIP_Bool SCIPisSumEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPchgNlRowLhs(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real lhs)
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:73
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)
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:236
SCIP_Bool SCIPisPositive(SCIP *scip, SCIP_Real val)
#define SCIP_DECL_HEUREXIT(x)
Definition: type_heur.h:77
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:69
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:83
#define SCIP_DECL_PROPPRESOL(x)
Definition: type_prop.h:175
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:46
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:123
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)))
#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_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:270
#define SCIP_DECL_READERREAD(x)
Definition: type_reader.h:71
#define SCIP_DECL_HEURFREE(x)
Definition: type_heur.h:61
int SCIPgetNImplVars(SCIP *scip)
SCIP_RETCODE SCIPsetConsSeparated(SCIP *scip, SCIP_CONS *cons, SCIP_Bool separate)
#define SCIP_DECL_CONSPROP(x)
Definition: type_cons.h:416
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:597
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 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, SCIP_Real scale, SCIP_Real *mircoef, SCIP_Real *mirrhs, SCIP_Real *cutactivity, SCIP_Bool *success, SCIP_Bool *cutislocal, int *cutrank)
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:107
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)
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)
int SCIPgetNBranchrules(SCIP *scip)
SCIP_RETCODE SCIPchgRowLhs(SCIP *scip, SCIP_ROW *row, SCIP_Real lhs)
#define SCIP_DECL_CONSHDLRCOPY(x)
Definition: type_cons.h:65
enum SCIP_Vartype SCIP_VARTYPE
Definition: type_var.h:58
struct SCIP_ConshdlrData SCIP_CONSHDLRDATA
Definition: type_cons.h:48
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)
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)
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_RETCODE SCIPpresolCons(SCIP *scip, SCIP_CONS *cons, int nrounds, 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_Longint SCIPgetNPrimalLPs(SCIP *scip)
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:714
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 SCIPincludeProp(SCIP *scip, const char *name, const char *desc, int priority, int freq, SCIP_Bool delay, SCIP_PROPTIMING timingmask, int presolpriority, int presolmaxrounds, SCIP_Bool presoldelay, 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 SCIPsetObjlimit(SCIP *scip, SCIP_Real objlimit)
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 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 SCIPevalExprtreeSol(SCIP *scip, SCIP_EXPRTREE *tree, SCIP_SOL *sol, SCIP_Real *val)
#define SCIP_DECL_HEUREXITSOL(x)
Definition: type_heur.h:99
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)))
SCIP_RETCODE SCIPwriteCliqueGraph(SCIP *scip, const char *fname, SCIP_Bool writeimplications, SCIP_Bool writenodeweights)
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 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_RETCODE SCIPreallocBufferSize(SCIP *scip, void **ptr, int size)
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 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_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_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_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 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_RETCODE SCIPwriteLP(SCIP *scip, const char *filename)
SCIP_RETCODE SCIPsetRelaxSolValsSol(SCIP *scip, SCIP_SOL *sol)