Scippy

SCIP

Solving Constraint Integer Programs

pub_var.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-2022 Konrad-Zuse-Zentrum */
7 /* fuer Informationstechnik Berlin */
8 /* */
9 /* SCIP is distributed under the terms of the ZIB Academic License. */
10 /* */
11 /* You should have received a copy of the ZIB Academic License */
12 /* along with SCIP; see the file COPYING. If not visit scipopt.org. */
13 /* */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file pub_var.h
17  * @ingroup PUBLICCOREAPI
18  * @brief public methods for problem variables
19  * @author Tobias Achterberg
20  */
21 
22 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
23 
24 #ifndef __SCIP_PUB_VAR_H__
25 #define __SCIP_PUB_VAR_H__
26 
27 
28 #include "scip/def.h"
29 #include "scip/type_cons.h"
30 #include "scip/type_history.h"
31 #include "scip/type_implics.h"
32 #include "scip/type_lp.h"
33 #include "scip/type_misc.h"
34 #include "scip/type_prop.h"
35 #include "scip/type_result.h"
36 #include "scip/type_retcode.h"
37 #include "scip/type_scip.h"
38 #include "scip/type_var.h"
39 
40 #ifdef NDEBUG
41 #include "scip/struct_var.h"
42 #include "scip/implics.h"
43 #include "scip/history.h"
44 #include "scip/pub_lp.h"
45 #endif
46 
47 #ifdef __cplusplus
48 extern "C" {
49 #endif
50 
51 /*
52  * methods for variables
53  */
54 
55 /**@addtogroup PublicVariableMethods
56  *
57  * @{
58  */
59 
60 /** gets number of locks for rounding down
61  *
62  * @note This method will always return variable locks of type model
63  *
64  * @note It is recommented to use SCIPvarGetNLocksDownType()
65  */
66 SCIP_EXPORT
68  SCIP_VAR* var /**< problem variable */
69  );
70 
71 /** gets number of locks for rounding up
72  *
73  * @note This method will always return variable locks of type model
74  *
75  * @note It is recommented to use SCIPvarGetNLocksUpType()
76  */
77 SCIP_EXPORT
79  SCIP_VAR* var /**< problem variable */
80  );
81 
82 /** gets number of locks for rounding up of a special type */
83 SCIP_EXPORT
85  SCIP_VAR* var, /**< problem variable */
86  SCIP_LOCKTYPE locktype /**< type of variable locks */
87  );
88 
89 /** gets number of locks for rounding down of a special type */
90 SCIP_EXPORT
92  SCIP_VAR* var, /**< problem variable */
93  SCIP_LOCKTYPE locktype /**< type of variable locks */
94  );
95 
96 /** is it possible, to round variable down and stay feasible?
97  *
98  * @note This method will always check w.r.t variable locks of type model
99  */
100 SCIP_EXPORT
102  SCIP_VAR* var /**< problem variable */
103  );
104 
105 /** is it possible, to round variable up and stay feasible?
106  *
107  * @note This method will always check w.r.t. variable locks of type model
108  */
109 SCIP_EXPORT
111  SCIP_VAR* var /**< problem variable */
112  );
113 
114 /** compares the index of two variables, only active or negated variables are allowed, if a variable
115  * is negated then the index of the corresponding active variable is taken, returns -1 if first is
116  * smaller than, and +1 if first is greater than second variable index; returns 0 if both indices
117  * are equal, which means both variables are equal
118  */
119 SCIP_EXPORT
121  SCIP_VAR* var1, /**< first problem variable */
122  SCIP_VAR* var2 /**< second problem variable */
123  );
124 
125 /** comparison method for sorting active and negated variables by non-decreasing index, active and negated
126  * variables are handled as the same variables
127  */
128 SCIP_EXPORT
129 SCIP_DECL_SORTPTRCOMP(SCIPvarCompActiveAndNegated);
130 
131 /** compares the index of two variables, returns -1 if first is smaller than, and +1 if first is greater than second
132  * variable index; returns 0 if both indices are equal, which means both variables are equal
133  */
134 SCIP_EXPORT
135 int SCIPvarCompare(
136  SCIP_VAR* var1, /**< first problem variable */
137  SCIP_VAR* var2 /**< second problem variable */
138  );
139 
140 /** comparison method for sorting variables by non-decreasing index */
141 SCIP_EXPORT
142 SCIP_DECL_SORTPTRCOMP(SCIPvarComp);
143 
144 /** comparison method for sorting variables by non-decreasing objective coefficient */
145 SCIP_EXPORT
146 SCIP_DECL_SORTPTRCOMP(SCIPvarCompObj);
147 
148 /** hash key retrieval function for variables */
149 SCIP_EXPORT
150 SCIP_DECL_HASHGETKEY(SCIPvarGetHashkey);
151 
152 /** returns TRUE iff the indices of both variables are equal */
153 SCIP_EXPORT
154 SCIP_DECL_HASHKEYEQ(SCIPvarIsHashkeyEq);
155 
156 /** returns the hash value of the key */
157 SCIP_EXPORT
158 SCIP_DECL_HASHKEYVAL(SCIPvarGetHashkeyVal);
159 
160 
161 /** gets corresponding active, fixed, or multi-aggregated problem variables of given variables,
162  * @note the content of the given array will/might change
163  */
164 SCIP_EXPORT
165 void SCIPvarsGetProbvar(
166  SCIP_VAR** vars, /**< array of problem variables */
167  int nvars /**< number of variables */
168  );
169 
170 /** gets corresponding active, fixed, or multi-aggregated problem variable of a variable */
171 SCIP_EXPORT
173  SCIP_VAR* var /**< problem variable */
174  );
175 
176 /** gets corresponding active, fixed, or multi-aggregated problem variables of binary variables and
177  * updates the given negation status of each variable
178  */
179 SCIP_EXPORT
181  SCIP_VAR*** vars, /**< pointer to binary problem variables */
182  SCIP_Bool** negatedarr, /**< pointer to corresponding array to update the negation status */
183  int nvars /**< number of variables and values in vars and negated array */
184  );
185 
186 /** gets corresponding active, fixed, or multi-aggregated problem variable of a binary variable and
187  * updates the given negation status
188  */
189 SCIP_EXPORT
191  SCIP_VAR** var, /**< pointer to binary problem variable */
192  SCIP_Bool* negated /**< pointer to update the negation status */
193  );
194 
195 /** transforms given variable, boundtype and bound to the corresponding active, fixed, or multi-aggregated variable
196  * values
197  */
198 SCIP_EXPORT
200  SCIP_VAR** var, /**< pointer to problem variable */
201  SCIP_Real* bound, /**< pointer to bound value to transform */
202  SCIP_BOUNDTYPE* boundtype /**< pointer to type of bound: lower or upper bound */
203  );
204 
205 /** transforms given variable and domain hole to the corresponding active, fixed, or multi-aggregated variable
206  * values
207  */
208 SCIP_EXPORT
210  SCIP_VAR** var, /**< pointer to problem variable */
211  SCIP_Real* left, /**< pointer to left bound of open interval in hole to transform */
212  SCIP_Real* right /**< pointer to right bound of open interval in hole to transform */
213  );
214 
215 /** retransforms given variable, scalar and constant to the corresponding original variable, scalar
216  * and constant, if possible; if the retransformation is impossible, NULL is returned as variable
217  */
218 SCIP_EXPORT
220  SCIP_VAR** var, /**< pointer to problem variable x in sum a*x + c */
221  SCIP_Real* scalar, /**< pointer to scalar a in sum a*x + c */
222  SCIP_Real* constant /**< pointer to constant c in sum a*x + c */
223  );
224 
225 /** returns whether the given variable is the direct counterpart of an original problem variable */
226 SCIP_EXPORT
228  SCIP_VAR* var /**< problem variable */
229  );
230 
231 /** returns the number of times, a bound of the variable was changed in given direction due to branching */
232 SCIP_EXPORT
234  SCIP_VAR* var, /**< problem variable */
235  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
236  );
237 
238 /** returns the number of times, a bound of the variable was changed in given direction due to branching
239  * in the current run
240  */
241 SCIP_EXPORT
243  SCIP_VAR* var, /**< problem variable */
244  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
245  );
246 
247 /** returns the number of inferences branching on this variable in given direction triggered */
248 SCIP_EXPORT
250  SCIP_VAR* var, /**< problem variable */
251  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
252  );
253 
254 /** returns the number of inferences branching on this variable in given direction triggered
255  * in the current run
256  */
257 SCIP_EXPORT
259  SCIP_VAR* var, /**< problem variable */
260  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
261  );
262 
263 /** returns the number of cutoffs branching on this variable in given direction produced */
264 SCIP_EXPORT
266  SCIP_VAR* var, /**< problem variable */
267  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
268  );
269 
270 /** returns the number of cutoffs branching on this variable in given direction produced in the current run */
271 SCIP_EXPORT
273  SCIP_VAR* var, /**< problem variable */
274  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
275  );
276 
277 /** returns the average depth of bound changes in given direction due to branching on the variable */
278 SCIP_EXPORT
280  SCIP_VAR* var, /**< problem variable */
281  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
282  );
283 
284 /** returns the average depth of bound changes in given direction due to branching on the variable
285  * in the current run
286  */
287 SCIP_EXPORT
289  SCIP_VAR* var, /**< problem variable */
290  SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */
291  );
292 
293 /** returns whether there is an implication x == varfixing -> y <= b or y >= b in the implication graph;
294  * implications that are represented as cliques in the clique table are not regarded (use SCIPvarsHaveCommonClique());
295  * both variables must be active, variable x must be binary
296  */
297 SCIP_EXPORT
299  SCIP_VAR* var, /**< problem variable x */
300  SCIP_Bool varfixing, /**< FALSE if y should be searched in implications for x == 0, TRUE for x == 1 */
301  SCIP_VAR* implvar, /**< variable y to search for */
302  SCIP_BOUNDTYPE impltype /**< type of implication y <=/>= b to search for */
303  );
304 
305 /** returns whether there is an implication x == varfixing -> y == implvarfixing in the implication graph;
306  * implications that are represented as cliques in the clique table are not regarded (use SCIPvarsHaveCommonClique());
307  * both variables must be active binary variables
308  */
309 SCIP_EXPORT
311  SCIP_VAR* var, /**< problem variable x */
312  SCIP_Bool varfixing, /**< FALSE if y should be searched in implications for x == 0, TRUE for x == 1 */
313  SCIP_VAR* implvar, /**< variable y to search for */
314  SCIP_Bool implvarfixing /**< value of the implied variable to search for */
315  );
316 
317 /** gets the values of b in implications x == varfixing -> y <= b or y >= b in the implication graph;
318  * the values are set to SCIP_INVALID if there is no implied bound
319  */
320 SCIP_EXPORT
322  SCIP_VAR* var, /**< problem variable x */
323  SCIP_Bool varfixing, /**< FALSE if y should be searched in implications for x == 0, TRUE for x == 1 */
324  SCIP_VAR* implvar, /**< variable y to search for */
325  SCIP_Real* lb, /**< buffer to store the value of the implied lower bound */
326  SCIP_Real* ub /**< buffer to store the value of the implied upper bound */
327  );
328 
329 /** returns whether there is a clique that contains both given variable/value pairs;
330  * the variables must be active binary variables;
331  * if regardimplics is FALSE, only the cliques in the clique table are looked at;
332  * if regardimplics is TRUE, both the cliques and the implications of the implication graph are regarded
333  */
334 SCIP_EXPORT
336  SCIP_VAR* var1, /**< first variable */
337  SCIP_Bool value1, /**< value of first variable */
338  SCIP_VAR* var2, /**< second variable */
339  SCIP_Bool value2, /**< value of second variable */
340  SCIP_Bool regardimplics /**< should the implication graph also be searched for a clique? */
341  );
342 
343 /** gets corresponding objective value of active, fixed, or multi-aggregated problem variable of given variable
344  * e.g. obj(x) = 1 this method returns for ~x the value -1
345  */
346 SCIP_EXPORT
348  SCIP_VAR* var, /**< problem variable */
349  SCIP_Real* aggrobj /**< pointer to store the aggregated objective value */
350  );
351 
352 /** sets the initial flag of a variable; only possible for original or loose variables */
353 SCIP_EXPORT
355  SCIP_VAR* var, /**< problem variable */
356  SCIP_Bool initial /**< initial flag */
357  );
358 
359 /** sets the removable flag of a variable; only possible for original or loose variables */
360 SCIP_EXPORT
362  SCIP_VAR* var, /**< problem variable */
363  SCIP_Bool removable /**< removable flag */
364  );
365 
366 /** returns the name of the variable
367  *
368  * @note to change the name of a variable, use SCIPchgVarName() from scip.h
369  */
370 SCIP_EXPORT
371 const char* SCIPvarGetName(
372  SCIP_VAR* var /**< problem variable */
373  );
374 
375 /** gets number of times, the variable is currently captured */
376 SCIP_EXPORT
377 int SCIPvarGetNUses(
378  SCIP_VAR* var /**< problem variable */
379  );
380 
381 /** returns the user data of the variable */
382 SCIP_EXPORT
384  SCIP_VAR* var /**< problem variable */
385  );
386 
387 /** sets the user data for the variable */
388 SCIP_EXPORT
389 void SCIPvarSetData(
390  SCIP_VAR* var, /**< problem variable */
391  SCIP_VARDATA* vardata /**< user variable data */
392  );
393 
394 /** sets method to free user data for the original variable */
395 SCIP_EXPORT
397  SCIP_VAR* var, /**< problem variable */
398  SCIP_DECL_VARDELORIG ((*vardelorig)) /**< frees user data of original variable */
399  );
400 
401 /** sets method to transform user data of the variable */
402 SCIP_EXPORT
404  SCIP_VAR* var, /**< problem variable */
405  SCIP_DECL_VARTRANS ((*vartrans)) /**< creates transformed user data by transforming original user data */
406  );
407 
408 /** sets method to free transformed user data for the variable */
409 SCIP_EXPORT
411  SCIP_VAR* var, /**< problem variable */
412  SCIP_DECL_VARDELTRANS ((*vardeltrans)) /**< frees user data of transformed variable */
413  );
414 
415 /** sets method to copy this variable into sub-SCIPs */
416 SCIP_EXPORT
417 void SCIPvarSetCopyData(
418  SCIP_VAR* var, /**< problem variable */
419  SCIP_DECL_VARCOPY ((*varcopy)) /**< copy method of the variable */
420  );
421 
422 /** gets status of variable */
423 SCIP_EXPORT
425  SCIP_VAR* var /**< problem variable */
426  );
427 
428 /** returns whether the variable belongs to the original problem */
429 SCIP_EXPORT
431  SCIP_VAR* var /**< problem variable */
432  );
433 
434 /** returns whether the variable belongs to the transformed problem */
435 SCIP_EXPORT
437  SCIP_VAR* var /**< problem variable */
438  );
439 
440 /** returns whether the variable was created by negation of a different variable */
441 SCIP_EXPORT
443  SCIP_VAR* var /**< problem variable */
444  );
445 
446 /** gets type of variable */
447 SCIP_EXPORT
449  SCIP_VAR* var /**< problem variable */
450  );
451 
452 /** returns TRUE if the variable is of binary type; this is the case if:
453  * (1) variable type is binary
454  * (2) variable type is integer or implicit integer and
455  * (i) the global lower bound is greater than or equal to zero
456  * (ii) the global upper bound is less than or equal to one
457  */
458 SCIP_EXPORT
460  SCIP_VAR* var /**< problem variable */
461  );
462 
463 /** returns whether variable is of integral type (binary, integer, or implicit integer) */
464 SCIP_EXPORT
466  SCIP_VAR* var /**< problem variable */
467  );
468 
469 /** returns whether variable's column should be present in the initial root LP */
470 SCIP_EXPORT
472  SCIP_VAR* var /**< problem variable */
473  );
474 
475 /** returns whether variable's column is removable from the LP (due to aging or cleanup) */
476 SCIP_EXPORT
478  SCIP_VAR* var /**< problem variable */
479  );
480 
481 /** returns whether the variable was deleted from the problem */
482 SCIP_EXPORT
484  SCIP_VAR* var /**< problem variable */
485  );
486 
487 /** marks the variable to be deletable, i.e., it may be deleted completely from the problem;
488  * method can only be called before the variable is added to the problem by SCIPaddVar() or SCIPaddPricedVar()
489  */
490 SCIP_EXPORT
492  SCIP_VAR* var /**< problem variable */
493  );
494 
495 /** marks the variable to be not deletable from the problem */
496 SCIP_EXPORT
498  SCIP_VAR* var
499  );
500 
501 /** returns whether variable is allowed to be deleted completely from the problem */
502 SCIP_EXPORT
504  SCIP_VAR* var
505  );
506 
507 /** marks variable to be deleted from global structures (cliques etc.) when cleaning up
508  *
509  * @note: this is not equivalent to marking the variable itself for deletion, this is done by using SCIPvarMarkDeletable()
510  */
511 SCIP_EXPORT
513  SCIP_VAR* var /**< problem variable */
514  );
515 
516 /** returns whether variable is an active (neither fixed nor aggregated) variable */
517 SCIP_EXPORT
519  SCIP_VAR* var /**< problem variable */
520  );
521 
522 /** gets unique index of variable */
523 SCIP_EXPORT
524 int SCIPvarGetIndex(
525  SCIP_VAR* var /**< problem variable */
526  );
527 
528 /** gets position of variable in problem, or -1 if variable is not active */
529 SCIP_EXPORT
531  SCIP_VAR* var /**< problem variable */
532  );
533 
534 /** gets transformed variable of ORIGINAL variable */
535 SCIP_EXPORT
537  SCIP_VAR* var /**< problem variable */
538  );
539 
540 /** gets column of COLUMN variable */
541 SCIP_EXPORT
543  SCIP_VAR* var /**< problem variable */
544  );
545 
546 /** returns whether the variable is a COLUMN variable that is member of the current LP */
547 SCIP_EXPORT
549  SCIP_VAR* var /**< problem variable */
550  );
551 
552 /** gets aggregation variable y of an aggregated variable x = a*y + c */
553 SCIP_EXPORT
555  SCIP_VAR* var /**< problem variable */
556  );
557 
558 /** gets aggregation scalar a of an aggregated variable x = a*y + c */
559 SCIP_EXPORT
561  SCIP_VAR* var /**< problem variable */
562  );
563 
564 /** gets aggregation constant c of an aggregated variable x = a*y + c */
565 SCIP_EXPORT
567  SCIP_VAR* var /**< problem variable */
568  );
569 
570 /** gets number n of aggregation variables of a multi aggregated variable x = a0*y0 + ... + a(n-1)*y(n-1) + c */
571 SCIP_EXPORT
573  SCIP_VAR* var /**< problem variable */
574  );
575 
576 /** gets vector of aggregation variables y of a multi aggregated variable x = a0*y0 + ... + a(n-1)*y(n-1) + c */
577 SCIP_EXPORT
579  SCIP_VAR* var /**< problem variable */
580  );
581 
582 /** gets vector of aggregation scalars a of a multi aggregated variable x = a0*y0 + ... + a(n-1)*y(n-1) + c */
583 SCIP_EXPORT
585  SCIP_VAR* var /**< problem variable */
586  );
587 
588 /** gets aggregation constant c of a multi aggregated variable x = a0*y0 + ... + a(n-1)*y(n-1) + c */
589 SCIP_EXPORT
591  SCIP_VAR* var /**< problem variable */
592  );
593 
594 /** gets the negation of the given variable; may return NULL, if no negation is existing yet */
595 SCIP_EXPORT
597  SCIP_VAR* var /**< negated problem variable */
598  );
599 
600 /** gets the negation variable x of a negated variable x' = offset - x */
601 SCIP_EXPORT
603  SCIP_VAR* var /**< negated problem variable */
604  );
605 
606 /** gets the negation offset of a negated variable x' = offset - x */
607 SCIP_EXPORT
609  SCIP_VAR* var /**< negated problem variable */
610  );
611 
612 /** gets objective function value of variable */
613 SCIP_EXPORT
615  SCIP_VAR* var /**< problem variable */
616  );
617 
618 /** gets the unchanged objective function value of variable (ignoring temproray changes performed in probing mode) */
619 SCIP_EXPORT
621  SCIP_VAR* var /**< problem variable */
622  );
623 
624 /** gets original lower bound of original problem variable (i.e. the bound set in problem creation) */
625 SCIP_EXPORT
627  SCIP_VAR* var /**< original problem variable */
628  );
629 
630 /** gets original upper bound of original problem variable (i.e. the bound set in problem creation) */
631 SCIP_EXPORT
633  SCIP_VAR* var /**< original problem variable */
634  );
635 
636 /** gets the original hole list of an original variable */
637 SCIP_EXPORT
639  SCIP_VAR* var /**< problem variable */
640  );
641 
642 /** gets global lower bound of variable */
643 SCIP_EXPORT
645  SCIP_VAR* var /**< problem variable */
646  );
647 
648 /** gets global upper bound of variable */
649 SCIP_EXPORT
651  SCIP_VAR* var /**< problem variable */
652  );
653 
654 /** gets the global hole list of an active variable */
655 SCIP_EXPORT
657  SCIP_VAR* var /**< problem variable */
658  );
659 
660 /** gets best global bound of variable with respect to the objective function */
661 SCIP_EXPORT
663  SCIP_VAR* var /**< problem variable */
664  );
665 
666 /** gets worst global bound of variable with respect to the objective function */
667 SCIP_EXPORT
669  SCIP_VAR* var /**< problem variable */
670  );
671 
672 /** gets current lower bound of variable */
673 SCIP_EXPORT
675  SCIP_VAR* var /**< problem variable */
676  );
677 
678 /** gets current upper bound of variable */
679 SCIP_EXPORT
681  SCIP_VAR* var /**< problem variable */
682  );
683 
684 /** gets the current hole list of an active variable */
685 SCIP_EXPORT
687  SCIP_VAR* var /**< problem variable */
688  );
689 
690 /** gets best local bound of variable with respect to the objective function */
691 SCIP_EXPORT
693  SCIP_VAR* var /**< problem variable */
694  );
695 
696 /** gets worst local bound of variable with respect to the objective function */
697 SCIP_EXPORT
699  SCIP_VAR* var /**< problem variable */
700  );
701 
702 /** gets type (lower or upper) of best bound of variable with respect to the objective function */
703 SCIP_EXPORT
705  SCIP_VAR* var /**< problem variable */
706  );
707 
708 /** gets type (lower or upper) of worst bound of variable with respect to the objective function */
709 SCIP_EXPORT
711  SCIP_VAR* var /**< problem variable */
712  );
713 
714 /** gets lazy lower bound of variable */
715 SCIP_EXPORT
717  SCIP_VAR* var /**< problem variable */
718  );
719 
720 /** gets lazy upper bound of variable */
721 SCIP_EXPORT
723  SCIP_VAR* var /**< problem variable */
724  );
725 
726 /** gets the branch factor of the variable; this value can be used in the branching methods to scale the score
727  * values of the variables; higher factor leads to a higher probability that this variable is chosen for branching
728  */
729 SCIP_EXPORT
731  SCIP_VAR* var /**< problem variable */
732  );
733 
734 /** gets the branch priority of the variable; variables with higher priority should always be preferred to variables
735  * with lower priority
736  */
737 SCIP_EXPORT
739  SCIP_VAR* var /**< problem variable */
740  );
741 
742 /** gets the preferred branch direction of the variable (downwards, upwards, or auto) */
743 SCIP_EXPORT
745  SCIP_VAR* var /**< problem variable */
746  );
747 
748 /** gets number of variable lower bounds x >= b_i*z_i + d_i of given variable x */
749 SCIP_EXPORT
750 int SCIPvarGetNVlbs(
751  SCIP_VAR* var /**< problem variable */
752  );
753 
754 /** gets array with bounding variables z_i in variable lower bounds x >= b_i*z_i + d_i of given variable x;
755  * the variable bounds are sorted by increasing variable index of the bounding variable z_i (see SCIPvarGetIndex())
756  */
757 SCIP_EXPORT
759  SCIP_VAR* var /**< problem variable */
760  );
761 
762 /** gets array with bounding coefficients b_i in variable lower bounds x >= b_i*z_i + d_i of given variable x */
763 SCIP_EXPORT
765  SCIP_VAR* var /**< problem variable */
766  );
767 
768 /** gets array with bounding constants d_i in variable lower bounds x >= b_i*z_i + d_i of given variable x */
769 SCIP_EXPORT
771  SCIP_VAR* var /**< problem variable */
772  );
773 
774 /** gets number of variable upper bounds x <= b_i*z_i + d_i of given variable x */
775 SCIP_EXPORT
776 int SCIPvarGetNVubs(
777  SCIP_VAR* var /**< problem variable */
778  );
779 
780 /** gets array with bounding variables z_i in variable upper bounds x <= b_i*z_i + d_i of given variable x;
781  * the variable bounds are sorted by increasing variable index of the bounding variable z_i (see SCIPvarGetIndex())
782  */
783 SCIP_EXPORT
785  SCIP_VAR* var /**< problem variable */
786  );
787 
788 /** gets array with bounding coefficients b_i in variable upper bounds x <= b_i*z_i + d_i of given variable x */
789 SCIP_EXPORT
791  SCIP_VAR* var /**< problem variable */
792  );
793 
794 /** gets array with bounding constants d_i in variable upper bounds x <= b_i*z_i + d_i of given variable x */
795 SCIP_EXPORT
797  SCIP_VAR* var /**< problem variable */
798  );
799 
800 /** gets number of implications y <= b or y >= b for x == 0 or x == 1 of given active problem variable x,
801  * there are no implications for nonbinary variable x
802  */
803 SCIP_EXPORT
804 int SCIPvarGetNImpls(
805  SCIP_VAR* var, /**< active problem variable */
806  SCIP_Bool varfixing /**< FALSE for implications for x == 0, TRUE for x == 1 */
807  );
808 
809 /** gets array with implication variables y of implications y <= b or y >= b for x == 0 or x == 1 of given active
810  * problem variable x, there are no implications for nonbinary variable x;
811  * the implications are sorted such that implications with binary implied variables precede the ones with non-binary
812  * implied variables, and as a second criteria, the implied variables are sorted by increasing variable index
813  * (see SCIPvarGetIndex())
814  */
815 SCIP_EXPORT
817  SCIP_VAR* var, /**< active problem variable */
818  SCIP_Bool varfixing /**< FALSE for implications for x == 0, TRUE for x == 1 */
819  );
820 
821 /** gets array with implication types of implications y <= b or y >= b for x == 0 or x == 1 of given active problem
822  * variable x (SCIP_BOUNDTYPE_UPPER if y <= b, SCIP_BOUNDTYPE_LOWER if y >= b),
823  * there are no implications for nonbinary variable x
824  */
825 SCIP_EXPORT
827  SCIP_VAR* var, /**< active problem variable */
828  SCIP_Bool varfixing /**< FALSE for implications for x == 0, TRUE for x == 1 */
829  );
830 
831 /** gets array with implication bounds b of implications y <= b or y >= b for x == 0 or x == 1 of given active problem
832  * variable x, there are no implications for nonbinary variable x
833  */
834 SCIP_EXPORT
836  SCIP_VAR* var, /**< active problem variable */
837  SCIP_Bool varfixing /**< FALSE for implications for x == 0, TRUE for x == 1 */
838  );
839 
840 /** Gets array with unique ids of implications y <= b or y >= b for x == 0 or x == 1 of given active problem variable x,
841  * there are no implications for nonbinary variable x.
842  * If an implication is a shortcut, i.e., it was added as part of the transitive closure of another implication,
843  * its id is negative, otherwise it is nonnegative.
844  */
845 SCIP_EXPORT
846 int* SCIPvarGetImplIds(
847  SCIP_VAR* var, /**< active problem variable */
848  SCIP_Bool varfixing /**< FALSE for implications for x == 0, TRUE for x == 1 */
849  );
850 
851 /** gets number of cliques, the active variable is contained in */
852 SCIP_EXPORT
854  SCIP_VAR* var, /**< active problem variable */
855  SCIP_Bool varfixing /**< FALSE for cliques containing x == 0, TRUE for x == 1 */
856  );
857 
858 /** gets array of cliques, the active variable is contained in */
859 SCIP_EXPORT
861  SCIP_VAR* var, /**< active problem variable */
862  SCIP_Bool varfixing /**< FALSE for cliques containing x == 0, TRUE for x == 1 */
863  );
864 
865 /** gets primal LP solution value of variable */
866 SCIP_EXPORT
868  SCIP_VAR* var /**< problem variable */
869  );
870 
871 /** gets primal NLP solution value of variable */
872 SCIP_EXPORT
874  SCIP_VAR* var /**< problem variable */
875  );
876 
877 /** return lower bound change info at requested position */
878 SCIP_EXPORT
880  SCIP_VAR* var, /**< problem variable */
881  int pos /**< requested position */
882  );
883 
884 /** gets the number of lower bound change info array */
885 SCIP_EXPORT
887  SCIP_VAR* var /**< problem variable */
888  );
889 
890 /** return upper bound change info at requested position */
891 SCIP_EXPORT
893  SCIP_VAR* var, /**< problem variable */
894  int pos /**< requested position */
895  );
896 
897 /** gets the number upper bound change info array */
898 SCIP_EXPORT
900  SCIP_VAR* var /**< problem variable */
901  );
902 
903 /** returns the value based history for the variable */
904 SCIP_EXPORT
906  SCIP_VAR* var /**< problem variable */
907  );
908 
909 /** returns whether a variable has been introduced to define a relaxation
910  *
911  * These variables are only valid for the current SCIP solve round,
912  * they are not contained in any (checked) constraints, but may be used
913  * in cutting planes, for example.
914  * Relaxation-only variables are not copied by SCIPcopyVars and cuts
915  * that contain these variables are not added as linear constraints when
916  * restarting or transferring information from a copied SCIP to a SCIP.
917  * Also conflicts with relaxation-only variables are not generated at
918  * the moment.
919  * Relaxation-only variables do not appear in the objective.
920  */
921 SCIP_EXPORT
923  SCIP_VAR* var /**< problem variable */
924  );
925 
926 /** marks that this variable has only been introduced to define a relaxation
927  *
928  * The variable must not have a coefficient in the objective and must be deletable.
929  * If it is not marked deletable, it will be marked as deletable, which is only possible
930  * before the variable is added to a problem.
931  *
932  * @see SCIPvarIsRelaxationOnly
933  * @see SCIPvarMarkDeletable
934  */
935 SCIP_EXPORT
937  SCIP_VAR* var /**< problem variable */
938  );
939 
940 #ifdef NDEBUG
941 
942 /* In optimized mode, the function calls are overwritten by defines to reduce the number of function calls and
943  * speed up the algorithms.
944  */
945 
946 #define SCIPvarGetName(var) (var)->name
947 #define SCIPvarGetNUses(var) (var)->nuses
948 #define SCIPvarGetData(var) (var)->vardata
949 #define SCIPvarSetData(var,vdata) (var)->vardata = (vdata)
950 #define SCIPvarSetDelorigData(var,func) (var)->vardelorig = (func)
951 #define SCIPvarSetTransData(var,func) (var)->vartrans = (func)
952 #define SCIPvarSetDeltransData(var,func) (var)->vardeltrans = (func)
953 #define SCIPvarGetStatus(var) (SCIP_VARSTATUS)((var)->varstatus)
954 #define SCIPvarIsOriginal(var) ((var)->varstatus == SCIP_VARSTATUS_ORIGINAL \
955  || ((var)->varstatus == SCIP_VARSTATUS_NEGATED && (var)->negatedvar->varstatus == SCIP_VARSTATUS_ORIGINAL))
956 #define SCIPvarIsTransformed(var) ((var)->varstatus != SCIP_VARSTATUS_ORIGINAL \
957  && ((var)->varstatus != SCIP_VARSTATUS_NEGATED || (var)->negatedvar->varstatus != SCIP_VARSTATUS_ORIGINAL))
958 #define SCIPvarIsNegated(var) ((var)->varstatus == SCIP_VARSTATUS_NEGATED)
959 #define SCIPvarGetType(var) ((SCIP_VARTYPE)((var)->vartype))
960 #define SCIPvarIsBinary(var) ((var)->vartype == SCIP_VARTYPE_BINARY || \
961  ((var)->vartype != SCIP_VARTYPE_CONTINUOUS && (var)->glbdom.lb >= 0.0 && (var)->glbdom.ub <= 1.0))
962 #define SCIPvarIsIntegral(var) ((var)->vartype != SCIP_VARTYPE_CONTINUOUS)
963 #define SCIPvarIsInitial(var) (var)->initial
964 #define SCIPvarIsRemovable(var) (var)->removable
965 #define SCIPvarIsDeleted(var) (var)->deleted
966 #define SCIPvarMarkDeletable(var) (var)->deletable = TRUE
967 #define SCIPvarMarkNotDeletable(var) (var)->deletable = FALSE
968 #define SCIPvarIsDeletable(var) (var)->deletable
969 #define SCIPvarIsActive(var) ((var)->probindex >= 0)
970 #define SCIPvarGetIndex(var) (var)->index
971 #define SCIPvarGetProbindex(var) (var)->probindex
972 #define SCIPvarGetTransVar(var) (var)->data.original.transvar
973 #define SCIPvarGetCol(var) (var)->data.col
974 #define SCIPvarIsInLP(var) ((var)->varstatus == SCIP_VARSTATUS_COLUMN && SCIPcolIsInLP((var)->data.col))
975 /* use different name for var - otherwise we have clash with the var at the end */
976 #define SCIPvarGetAggrVar(war) (war)->data.aggregate.var
977 #define SCIPvarGetAggrScalar(var) (var)->data.aggregate.scalar
978 #define SCIPvarGetAggrConstant(var) (var)->data.aggregate.constant
979 #define SCIPvarGetMultaggrNVars(var) (var)->data.multaggr.nvars
980 #define SCIPvarGetMultaggrVars(var) (var)->data.multaggr.vars
981 #define SCIPvarGetMultaggrScalars(var) (var)->data.multaggr.scalars
982 #define SCIPvarGetMultaggrConstant(var) (var)->data.multaggr.constant
983 #define SCIPvarGetNegatedVar(var) (var)->negatedvar
984 #define SCIPvarGetNegationVar(var) (var)->negatedvar
985 #define SCIPvarGetNegationConstant(var) (var)->data.negate.constant
986 #define SCIPvarGetObj(var) (var)->obj
987 #define SCIPvarGetLbOriginal(var) ((var)->varstatus == SCIP_VARSTATUS_ORIGINAL \
988  ? (var)->data.original.origdom.lb \
989  : (var)->data.negate.constant - (var)->negatedvar->data.original.origdom.ub)
990 #define SCIPvarGetUbOriginal(var) ((var)->varstatus == SCIP_VARSTATUS_ORIGINAL \
991  ? (var)->data.original.origdom.ub \
992  : (var)->data.negate.constant - (var)->negatedvar->data.original.origdom.lb)
993 #define SCIPvarGetHolelistOriginal(var) ((var)->varstatus == SCIP_VARSTATUS_ORIGINAL \
994  ? (var)->data.original.origdom.holelist \
995  : NULL)
996 #define SCIPvarGetLbGlobal(var) (var)->glbdom.lb
997 #define SCIPvarGetUbGlobal(var) (var)->glbdom.ub
998 #define SCIPvarGetHolelistGlobal(var) (var)->glbdom.holelist
999 #define SCIPvarGetBestBoundGlobal(var) ((var)->obj >= 0.0 ? (var)->glbdom.lb : (var)->glbdom.ub)
1000 #define SCIPvarGetWorstBoundGlobal(var) ((var)->obj >= 0.0 ? (var)->glbdom.ub : (var)->glbdom.lb)
1001 #define SCIPvarGetLbLocal(var) (var)->locdom.lb
1002 #define SCIPvarGetUbLocal(var) (var)->locdom.ub
1003 #define SCIPvarGetHolelistLocal(var) (var)->locdom.holelist
1004 #define SCIPvarGetBestBoundLocal(var) ((var)->obj >= 0.0 ? (var)->locdom.lb : (var)->locdom.ub)
1005 #define SCIPvarGetWorstBoundLocal(var) ((var)->obj >= 0.0 ? (var)->locdom.ub : (var)->locdom.lb)
1006 #define SCIPvarGetBestBoundType(var) ((var)->obj >= 0.0 ? SCIP_BOUNDTYPE_LOWER : SCIP_BOUNDTYPE_UPPER)
1007 #define SCIPvarGetWorstBoundType(var) ((var)->obj >= 0.0 ? SCIP_BOUNDTYPE_UPPER : SCIP_BOUNDTYPE_LOWER)
1008 #define SCIPvarGetLbLazy(var) (var)->lazylb
1009 #define SCIPvarGetUbLazy(var) (var)->lazyub
1010 #define SCIPvarGetBranchFactor(var) (var)->branchfactor
1011 #define SCIPvarGetBranchPriority(var) (var)->branchpriority
1012 #define SCIPvarGetBranchDirection(var) (var)->branchdirection
1013 #define SCIPvarGetNVlbs(var) (SCIPvboundsGetNVbds((var)->vlbs))
1014 #define SCIPvarGetVlbVars(var) (SCIPvboundsGetVars((var)->vlbs))
1015 #define SCIPvarGetVlbCoefs(var) (SCIPvboundsGetCoefs((var)->vlbs))
1016 #define SCIPvarGetVlbConstants(var) (SCIPvboundsGetConstants((var)->vlbs))
1017 #define SCIPvarGetNVubs(var) (SCIPvboundsGetNVbds((var)->vubs))
1018 #define SCIPvarGetVubVars(var) (SCIPvboundsGetVars((var)->vubs))
1019 #define SCIPvarGetVubCoefs(var) (SCIPvboundsGetCoefs((var)->vubs))
1020 #define SCIPvarGetVubConstants(var) (SCIPvboundsGetConstants((var)->vubs))
1021 #define SCIPvarGetNImpls(var, fix) (SCIPimplicsGetNImpls((var)->implics, fix))
1022 #define SCIPvarGetImplVars(var, fix) (SCIPimplicsGetVars((var)->implics, fix))
1023 #define SCIPvarGetImplTypes(var, fix) (SCIPimplicsGetTypes((var)->implics, fix))
1024 #define SCIPvarGetImplBounds(var, fix) (SCIPimplicsGetBounds((var)->implics, fix))
1025 #define SCIPvarGetImplIds(var, fix) (SCIPimplicsGetIds((var)->implics, fix))
1026 #define SCIPvarGetNCliques(var, fix) (SCIPcliquelistGetNCliques((var)->cliquelist, fix))
1027 #define SCIPvarGetCliques(var, fix) (SCIPcliquelistGetCliques((var)->cliquelist, fix))
1028 #define SCIPvarGetLPSol(var) ((var)->varstatus == SCIP_VARSTATUS_COLUMN ? SCIPcolGetPrimsol((var)->data.col) : SCIPvarGetLPSol_rec(var))
1029 #define SCIPvarGetNLPSol(var) (((var)->varstatus == SCIP_VARSTATUS_COLUMN || ((var)->varstatus == SCIP_VARSTATUS_LOOSE)) ? (var)->nlpsol : SCIPvarGetNLPSol_rec(var))
1030 #define SCIPvarGetBdchgInfoLb(var, pos) (&((var)->lbchginfos[pos]))
1031 #define SCIPvarGetNBdchgInfosLb(var) ((var)->nlbchginfos)
1032 #define SCIPvarGetBdchgInfoUb(var, pos) (&((var)->ubchginfos[pos]))
1033 #define SCIPvarGetNBdchgInfosUb(var) ((var)->nubchginfos)
1034 #define SCIPvarGetValuehistory(var) (var)->valuehistory
1035 #define SCIPvarGetCliqueComponentIdx(var) ((var)->clqcomponentidx)
1036 #define SCIPvarIsRelaxationOnly(var)((var)->relaxationonly)
1037 #define SCIPvarMarkRelaxationOnly(var)((var)->relaxationonly = TRUE)
1038 
1039 #endif
1040 
1041 /** gets primal LP solution value of variable */
1042 SCIP_EXPORT
1044  SCIP_VAR* var /**< problem variable */
1045  );
1046 
1047 /** gets primal NLP solution value of variable */
1048 SCIP_EXPORT
1050  SCIP_VAR* var /**< problem variable */
1051  );
1052 
1053 /** gets pseudo solution value of variable at current node */
1054 SCIP_EXPORT
1056  SCIP_VAR* var /**< problem variable */
1057  );
1058 
1059 /** gets current LP or pseudo solution value of variable */
1060 SCIP_EXPORT
1062  SCIP_VAR* var, /**< problem variable */
1063  SCIP_Bool getlpval /**< should the LP solution value be returned? */
1064  );
1065 
1066 /** returns the solution of the variable in the last root node's relaxation, if the root relaxation is not yet
1067  * completely solved, zero is returned
1068  */
1069 SCIP_EXPORT
1071  SCIP_VAR* var /**< problem variable */
1072  );
1073 
1074 /** returns the best solution (w.r.t. root reduced cost propagation) of the variable in the root node's relaxation, if
1075  * the root relaxation is not yet completely solved, zero is returned
1076  */
1077 SCIP_EXPORT
1079  SCIP_VAR* var /**< problem variable */
1080  );
1081 
1082 /** returns the best reduced costs (w.r.t. root reduced cost propagation) of the variable in the root node's relaxation,
1083  * if the root relaxation is not yet completely solved, or the variable was no column of the root LP, SCIP_INVALID is
1084  * returned
1085  */
1086 SCIP_EXPORT
1088  SCIP_VAR* var /**< problem variable */
1089  );
1090 
1091 /** returns the best objective value (w.r.t. root reduced cost propagation) of the root LP which belongs the root
1092  * reduced cost which is accessible via SCIPvarGetRootRedcost() or the variable was no column of the root LP,
1093  * SCIP_INVALID is returned
1094  */
1095 SCIP_EXPORT
1097  SCIP_VAR* var /**< problem variable */
1098  );
1099 
1100 /** set the given solution as the best root solution w.r.t. root reduced cost propagation in the variables */
1101 SCIP_EXPORT
1103  SCIP_VAR* var, /**< problem variable */
1104  SCIP_Real rootsol, /**< root solution value */
1105  SCIP_Real rootredcost, /**< root reduced cost */
1106  SCIP_Real rootlpobjval /**< objective value of the root LP */
1107  );
1108 
1109 /** returns a weighted average solution value of the variable in all feasible primal solutions found so far */
1110 SCIP_EXPORT
1112  SCIP_VAR* var /**< problem variable */
1113  );
1114 
1115 /** returns the bound change information for the last lower bound change on given active problem variable before or
1116  * after the bound change with the given index was applied;
1117  * returns NULL, if no change to the lower bound was applied up to this point of time
1118  */
1119 SCIP_EXPORT
1121  SCIP_VAR* var, /**< active problem variable */
1122  SCIP_BDCHGIDX* bdchgidx, /**< bound change index representing time on path to current node */
1123  SCIP_Bool after /**< should the bound change with given index be included? */
1124  );
1125 
1126 /** returns the bound change information for the last upper bound change on given active problem variable before or
1127  * after the bound change with the given index was applied;
1128  * returns NULL, if no change to the upper bound was applied up to this point of time
1129  */
1130 SCIP_EXPORT
1132  SCIP_VAR* var, /**< active problem variable */
1133  SCIP_BDCHGIDX* bdchgidx, /**< bound change index representing time on path to current node */
1134  SCIP_Bool after /**< should the bound change with given index be included? */
1135  );
1136 
1137 /** returns the bound change information for the last lower or upper bound change on given active problem variable
1138  * before or after the bound change with the given index was applied;
1139  * returns NULL, if no change to the lower/upper bound was applied up to this point of time
1140  */
1141 SCIP_EXPORT
1143  SCIP_VAR* var, /**< active problem variable */
1144  SCIP_BOUNDTYPE boundtype, /**< type of bound: lower or upper bound */
1145  SCIP_BDCHGIDX* bdchgidx, /**< bound change index representing time on path to current node */
1146  SCIP_Bool after /**< should the bound change with given index be included? */
1147  );
1148 
1149 /** returns lower bound of variable directly before or after the bound change given by the bound change index
1150  * was applied
1151  *
1152  * @deprecated Please use SCIPgetVarLbAtIndex()
1153  */
1154 SCIP_EXPORT
1156  SCIP_VAR* var, /**< problem variable */
1157  SCIP_BDCHGIDX* bdchgidx, /**< bound change index representing time on path to current node */
1158  SCIP_Bool after /**< should the bound change with given index be included? */
1159  );
1160 
1161 /** returns upper bound of variable directly before or after the bound change given by the bound change index
1162  * was applied
1163  *
1164  * @deprecated Please use SCIPgetVarUbAtIndex()
1165  */
1166 SCIP_EXPORT
1168  SCIP_VAR* var, /**< problem variable */
1169  SCIP_BDCHGIDX* bdchgidx, /**< bound change index representing time on path to current node */
1170  SCIP_Bool after /**< should the bound change with given index be included? */
1171  );
1172 
1173 /** returns lower or upper bound of variable directly before or after the bound change given by the bound change index
1174  * was applied
1175  *
1176  * @deprecated Please use SCIPgetVarBdAtIndex()
1177  */
1178 SCIP_EXPORT
1180  SCIP_VAR* var, /**< problem variable */
1181  SCIP_BOUNDTYPE boundtype, /**< type of bound: lower or upper bound */
1182  SCIP_BDCHGIDX* bdchgidx, /**< bound change index representing time on path to current node */
1183  SCIP_Bool after /**< should the bound change with given index be included? */
1184  );
1185 
1186 /** returns whether the binary variable was fixed at the time given by the bound change index
1187  *
1188  * @deprecated Please use SCIPgetVarWasFixedAtIndex()
1189  */
1190 SCIP_EXPORT
1192  SCIP_VAR* var, /**< problem variable */
1193  SCIP_BDCHGIDX* bdchgidx, /**< bound change index representing time on path to current node */
1194  SCIP_Bool after /**< should the bound change with given index be included? */
1195  );
1196 
1197 /** returns the last bound change index, at which the bounds of the given variable were tightened */
1198 SCIP_EXPORT
1200  SCIP_VAR* var /**< problem variable */
1201  );
1202 
1203 /** returns the last depth level, at which the bounds of the given variable were tightened;
1204  * returns -2, if the variable's bounds are still the global bounds
1205  * returns -1, if the variable was fixed in presolving
1206  */
1207 SCIP_EXPORT
1209  SCIP_VAR* var /**< problem variable */
1210  );
1211 
1212 /** returns whether the first binary variable was fixed earlier than the second one;
1213  * returns FALSE, if the first variable is not fixed, and returns TRUE, if the first variable is fixed, but the
1214  * second one is not fixed
1215  */
1216 SCIP_EXPORT
1218  SCIP_VAR* var1, /**< first binary variable */
1219  SCIP_VAR* var2 /**< second binary variable */
1220  );
1221 
1222 /**
1223  * @name Public SCIP_BDCHGIDX Methods
1224  *
1225  * @{
1226  */
1227 
1228 /** returns whether first bound change index belongs to an earlier applied bound change than second one;
1229  * if a bound change index is NULL, the bound change index represents the current time, i.e. the time after the
1230  * last bound change was applied to the current node
1231  */
1232 SCIP_EXPORT
1234  SCIP_BDCHGIDX* bdchgidx1, /**< first bound change index, or NULL */
1235  SCIP_BDCHGIDX* bdchgidx2 /**< second bound change index, or NULL */
1236  );
1237 
1238 /** returns whether first bound change index belongs to an earlier applied bound change than second one */
1239 SCIP_EXPORT
1241  SCIP_BDCHGIDX* bdchgidx1, /**< first bound change index */
1242  SCIP_BDCHGIDX* bdchgidx2 /**< second bound change index */
1243  );
1244 
1245 /**@} */
1246 
1247 /**
1248  * @name Public SCIP_BDCHGINFO Methods
1249  *
1250  * @{
1251  */
1252 
1253 /** returns old bound that was overwritten for given bound change information */
1254 SCIP_EXPORT
1256  SCIP_BDCHGINFO* bdchginfo /**< bound change information */
1257  );
1258 
1259 /** returns new bound installed for given bound change information */
1260 SCIP_EXPORT
1262  SCIP_BDCHGINFO* bdchginfo /**< bound change information */
1263  );
1264 
1265 /** returns variable that belongs to the given bound change information */
1266 SCIP_EXPORT
1268  SCIP_BDCHGINFO* bdchginfo /**< bound change information */
1269  );
1270 
1271 /** returns whether the bound change information belongs to a branching decision or a deduction */
1272 SCIP_EXPORT
1274  SCIP_BDCHGINFO* bdchginfo /**< bound change information */
1275  );
1276 
1277 /** returns whether the bound change information belongs to a lower or upper bound change */
1278 SCIP_EXPORT
1280  SCIP_BDCHGINFO* bdchginfo /**< bound change information */
1281  );
1282 
1283 /** returns depth level of given bound change information */
1284 SCIP_EXPORT
1286  SCIP_BDCHGINFO* bdchginfo /**< bound change information */
1287  );
1288 
1289 /** returns bound change position in its depth level of given bound change information */
1290 SCIP_EXPORT
1292  SCIP_BDCHGINFO* bdchginfo /**< bound change information */
1293  );
1294 
1295 /** returns bound change index of given bound change information */
1296 SCIP_EXPORT
1298  SCIP_BDCHGINFO* bdchginfo /**< bound change information */
1299  );
1300 
1301 /** returns inference variable of given bound change information */
1302 SCIP_EXPORT
1304  SCIP_BDCHGINFO* bdchginfo /**< bound change information */
1305  );
1306 
1307 /** returns inference constraint of given bound change information */
1308 SCIP_EXPORT
1310  SCIP_BDCHGINFO* bdchginfo /**< bound change information */
1311  );
1312 
1313 /** returns inference propagator of given bound change information, or NULL if no propagator was responsible */
1314 SCIP_EXPORT
1316  SCIP_BDCHGINFO* bdchginfo /**< bound change information */
1317  );
1318 
1319 /** returns inference user information of given bound change information */
1320 SCIP_EXPORT
1322  SCIP_BDCHGINFO* bdchginfo /**< bound change information */
1323  );
1324 
1325 /** returns inference bound of inference variable of given bound change information */
1326 SCIP_EXPORT
1328  SCIP_BDCHGINFO* bdchginfo /**< bound change information */
1329  );
1330 
1331 /** returns whether the bound change information belongs to a redundant bound change */
1332 SCIP_EXPORT
1334  SCIP_BDCHGINFO* bdchginfo /**< bound change information */
1335  );
1336 
1337 /** returns whether the bound change has an inference reason (constraint or propagator), that can be resolved */
1338 SCIP_EXPORT
1340  SCIP_BDCHGINFO* bdchginfo /**< bound change information */
1341  );
1342 
1343 /** for two bound change informations belonging to the same variable and bound, returns whether the first bound change
1344  * has a tighter new bound as the second bound change
1345  */
1346 SCIP_EXPORT
1348  SCIP_BDCHGINFO* bdchginfo1, /**< first bound change information */
1349  SCIP_BDCHGINFO* bdchginfo2 /**< second bound change information */
1350  );
1351 
1352 /**@} */
1353 
1354 /**
1355  * @name Public SCIP_BOUNDCHG Methods
1356  *
1357  * @{
1358  */
1359 
1360 /** returns the new value of the bound in the bound change data */
1361 SCIP_EXPORT
1363  SCIP_BOUNDCHG* boundchg /**< bound change data */
1364  );
1365 
1366 /** returns the variable of the bound change in the bound change data */
1367 SCIP_EXPORT
1369  SCIP_BOUNDCHG* boundchg /**< bound change data */
1370  );
1371 
1372 /** returns the bound change type of the bound change in the bound change data */
1373 SCIP_EXPORT
1375  SCIP_BOUNDCHG* boundchg /**< bound change data */
1376  );
1377 
1378 /** returns the bound type of the bound change in the bound change data */
1379 SCIP_EXPORT
1381  SCIP_BOUNDCHG* boundchg /**< bound change data */
1382  );
1383 
1384 /** returns whether the bound change is redundant due to a more global bound that is at least as strong */
1385 SCIP_EXPORT
1387  SCIP_BOUNDCHG* boundchg /**< bound change data */
1388  );
1389 
1390 /** @} */
1391 
1392 /**
1393  * @name Public SCIP_DOMCHG Methods
1394  *
1395  * @{
1396  */
1397 
1398 /** returns the number of bound changes in the domain change data */
1399 SCIP_EXPORT
1401  SCIP_DOMCHG* domchg /**< domain change data */
1402  );
1403 
1404 /** returns a particular bound change in the domain change data */
1405 SCIP_EXPORT
1407  SCIP_DOMCHG* domchg, /**< domain change data */
1408  int pos /**< position of the bound change in the domain change data */
1409  );
1410 
1411 /**@} */
1412 
1413 /**
1414  * @name Public SCIP_HOLELIST Methods
1415  *
1416  * @{
1417  */
1418 
1419 /** returns left bound of open interval in hole */
1420 SCIP_EXPORT
1422  SCIP_HOLELIST* holelist /**< hole list pointer to hole of interest */
1423  );
1424 
1425 /** returns right bound of open interval in hole */
1426 SCIP_EXPORT
1428  SCIP_HOLELIST* holelist /**< hole list pointer to hole of interest */
1429  );
1430 
1431 /** returns next hole in list or NULL */
1432 SCIP_EXPORT
1434  SCIP_HOLELIST* holelist /**< hole list pointer to hole of interest */
1435  );
1436 
1437 /**@} */
1438 
1439 #ifdef NDEBUG
1440 
1441 /* In optimized mode, the function calls are overwritten by defines to reduce the number of function calls and
1442  * speed up the algorithms.
1443  */
1444 
1445 #define SCIPbdchgidxIsEarlierNonNull(idx1,idx2) \
1446  ((idx1)->depth < (idx2)->depth || ((idx1)->depth == (idx2)->depth && (idx1)->pos < (idx2)->pos))
1447 #define SCIPbdchgidxIsEarlier(idx1,idx2) \
1448  ((idx1) != NULL && ((idx2) == NULL || SCIPbdchgidxIsEarlierNonNull(idx1, idx2)))
1449 #define SCIPbdchginfoGetOldbound(bdchginfo) (bdchginfo)->oldbound
1450 #define SCIPbdchginfoGetNewbound(bdchginfo) (bdchginfo)->newbound
1451 #define SCIPbdchginfoGetVar(bdchginfo) (bdchginfo)->var
1452 #define SCIPbdchginfoGetChgtype(bdchginfo) (SCIP_BOUNDCHGTYPE)((bdchginfo)->boundchgtype)
1453 #define SCIPbdchginfoGetBoundtype(bdchginfo) (SCIP_BOUNDTYPE)((bdchginfo)->boundtype)
1454 #define SCIPbdchginfoGetDepth(bdchginfo) (bdchginfo)->bdchgidx.depth
1455 #define SCIPbdchginfoGetPos(bdchginfo) (bdchginfo)->bdchgidx.pos
1456 #define SCIPbdchginfoGetIdx(bdchginfo) (&(bdchginfo)->bdchgidx)
1457 #define SCIPbdchginfoGetInferVar(bdchginfo) (bdchginfo)->inferencedata.var
1458 #define SCIPbdchginfoGetInferCons(bdchginfo) (bdchginfo)->inferencedata.reason.cons
1459 #define SCIPbdchginfoGetInferProp(bdchginfo) (bdchginfo)->inferencedata.reason.prop
1460 #define SCIPbdchginfoGetInferInfo(bdchginfo) (bdchginfo)->inferencedata.info
1461 #define SCIPbdchginfoGetInferBoundtype(bdchginfo) (SCIP_BOUNDTYPE)((bdchginfo)->inferboundtype)
1462 #define SCIPbdchginfoIsRedundant(bdchginfo) (bdchginfo)->redundant
1463 #define SCIPbdchginfoHasInferenceReason(bdchginfo) \
1464  (((bdchginfo)->boundchgtype == SCIP_BOUNDCHGTYPE_CONSINFER) \
1465  || ((bdchginfo)->boundchgtype == SCIP_BOUNDCHGTYPE_PROPINFER && (bdchginfo)->inferencedata.reason.prop != NULL))
1466 #define SCIPbdchginfoIsTighter(bdchginfo1,bdchginfo2) ((bdchginfo1)->boundtype == SCIP_BOUNDTYPE_LOWER \
1467  ? (bdchginfo1)->newbound > bdchginfo2->newbound : (bdchginfo1)->newbound < bdchginfo2->newbound)
1468 #define SCIPboundchgGetNewbound(boundchg) ((boundchg)->newbound)
1469 #define SCIPboundchgGetVar(boundchg) ((boundchg)->var)
1470 #define SCIPboundchgGetBoundchgtype(boundchg) ((SCIP_BOUNDCHGTYPE)((boundchg)->boundchgtype))
1471 #define SCIPboundchgGetBoundtype(boundchg) ((SCIP_BOUNDTYPE)((boundchg)->boundtype))
1472 #define SCIPboundchgIsRedundant(boundchg) ((boundchg)->redundant)
1473 #define SCIPdomchgGetNBoundchgs(domchg) ((domchg) != NULL ? (domchg)->domchgbound.nboundchgs : 0)
1474 #define SCIPdomchgGetBoundchg(domchg, pos) (&(domchg)->domchgbound.boundchgs[pos])
1475 #define SCIPholelistGetLeft(holelist) ((holelist)->hole.left)
1476 #define SCIPholelistGetRight(holelist) ((holelist)->hole.right)
1477 #define SCIPholelistGetNext(holelist) ((holelist)->next)
1478 
1479 #endif
1480 
1481 /**@} */
1482 
1483 #ifdef __cplusplus
1484 }
1485 #endif
1486 
1487 #endif
enum SCIP_BoundType SCIP_BOUNDTYPE
Definition: type_lp.h:50
SCIP_Real SCIPvarGetWorstBoundLocal(SCIP_VAR *var)
Definition: var.c:18009
SCIP_Real * SCIPvarGetVlbCoefs(SCIP_VAR *var)
Definition: var.c:18124
SCIP_BOUNDTYPE SCIPvarGetWorstBoundType(SCIP_VAR *var)
Definition: var.c:18035
SCIP_Bool SCIPvarsHaveCommonClique(SCIP_VAR *var1, SCIP_Bool value1, SCIP_VAR *var2, SCIP_Bool value2, SCIP_Bool regardimplics)
Definition: var.c:11474
SCIP_Real SCIPvarGetBdAtIndex(SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
Definition: var.c:16782
SCIP_PROP * SCIPbdchginfoGetInferProp(SCIP_BDCHGINFO *bdchginfo)
Definition: var.c:18596
void SCIPvarMarkNotDeletable(SCIP_VAR *var)
Definition: var.c:17495
int SCIPvarGetNLocksDownType(SCIP_VAR *var, SCIP_LOCKTYPE locktype)
Definition: var.c:3289
SCIP_BDCHGINFO * SCIPvarGetBdchgInfoLb(SCIP_VAR *var, int pos)
Definition: var.c:18310
SCIP_Real * SCIPvarGetMultaggrScalars(SCIP_VAR *var)
Definition: var.c:17702
type definitions for miscellaneous datastructures
type definitions for implications, variable bounds, and cliques
SCIP_Real SCIPvarGetBranchFactor(SCIP_VAR *var)
Definition: var.c:18070
SCIP_Real SCIPbdchginfoGetOldbound(SCIP_BDCHGINFO *bdchginfo)
Definition: var.c:18492
SCIP_BRANCHDIR SCIPvarGetBranchDirection(SCIP_VAR *var)
Definition: var.c:18092
SCIP_Real SCIPvarGetUbLazy(SCIP_VAR *var)
Definition: var.c:18058
int SCIPvarGetNVlbs(SCIP_VAR *var)
Definition: var.c:18102
SCIP_VAR * SCIPbdchginfoGetVar(SCIP_BDCHGINFO *bdchginfo)
Definition: var.c:18512
SCIP_Real SCIPvarGetWorstBoundGlobal(SCIP_VAR *var)
Definition: var.c:17953
#define SCIP_DECL_VARTRANS(x)
Definition: type_var.h:138
methods for implications, variable bounds, and cliques
int SCIPvarGetLastBdchgDepth(SCIP_VAR *var)
Definition: var.c:16862
SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)
Definition: var.c:17910
SCIP_Real SCIPvarGetAvgBranchdepth(SCIP_VAR *var, SCIP_BRANCHDIR dir)
Definition: var.c:15786
SCIP_RETCODE SCIPvarGetProbvarBinary(SCIP_VAR **var, SCIP_Bool *negated)
Definition: var.c:12309
int SCIPvarGetNLocksUpType(SCIP_VAR *var, SCIP_LOCKTYPE locktype)
Definition: var.c:3347
SCIP_Bool SCIPvarIsInitial(SCIP_VAR *var)
Definition: var.c:17452
SCIP_VAR ** SCIPvarGetMultaggrVars(SCIP_VAR *var)
Definition: var.c:17690
static long bound
SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)
Definition: var.c:17966
SCIP_CLIQUE ** SCIPvarGetCliques(SCIP_VAR *var, SCIP_Bool varfixing)
Definition: var.c:18273
SCIP_VALUEHISTORY * SCIPvarGetValuehistory(SCIP_VAR *var)
Definition: var.c:18352
void SCIPvarSetTransData(SCIP_VAR *var, SCIP_DECL_VARTRANS((*vartrans)))
Definition: var.c:17304
SCIP_Bool SCIPvarIsBinary(SCIP_VAR *var)
Definition: var.c:17431
SCIP_Real SCIPvarGetSol(SCIP_VAR *var, SCIP_Bool getlpval)
Definition: var.c:13256
SCIP_Bool SCIPbdchgidxIsEarlier(SCIP_BDCHGIDX *bdchgidx1, SCIP_BDCHGIDX *bdchgidx2)
Definition: var.c:18472
SCIP_Bool SCIPvarWasFixedAtIndex(SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
Definition: var.c:16802
SCIP_Real SCIPvarGetBestBoundLocal(SCIP_VAR *var)
Definition: var.c:17996
SCIP_Real SCIPvarGetRootSol(SCIP_VAR *var)
Definition: var.c:13349
SCIP_BOUNDTYPE SCIPboundchgGetBoundtype(SCIP_BOUNDCHG *boundchg)
Definition: var.c:17178
SCIP_HOLELIST * SCIPholelistGetNext(SCIP_HOLELIST *holelist)
Definition: var.c:17238
int SCIPvarGetNBdchgInfosLb(SCIP_VAR *var)
Definition: var.c:18322
struct SCIP_VarData SCIP_VARDATA
Definition: type_var.h:107
SCIP_Bool SCIPvarHasImplic(SCIP_VAR *var, SCIP_Bool varfixing, SCIP_VAR *implvar, SCIP_BOUNDTYPE impltype)
Definition: var.c:11107
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:54
SCIP_Real SCIPvarGetNegationConstant(SCIP_VAR *var)
Definition: var.c:17747
int SCIPvarGetNVubs(SCIP_VAR *var)
Definition: var.c:18144
int SCIPbdchginfoGetInferInfo(SCIP_BDCHGINFO *bdchginfo)
Definition: var.c:18607
enum SCIP_Varstatus SCIP_VARSTATUS
Definition: type_var.h:48
int SCIPvarGetProbindex(SCIP_VAR *var)
Definition: var.c:17600
#define SCIP_DECL_VARCOPY(x)
Definition: type_var.h:181
SCIP_Real SCIPvarGetAggrScalar(SCIP_VAR *var)
Definition: var.c:17654
SCIP_Real SCIPvarGetInferenceSum(SCIP_VAR *var, SCIP_BRANCHDIR dir)
Definition: var.c:15978
void SCIPvarMarkDeletable(SCIP_VAR *var)
Definition: var.c:17484
type definitions for return codes for SCIP methods
SCIP_VAR ** SCIPvarGetVlbVars(SCIP_VAR *var)
Definition: var.c:18114
SCIP_Bool SCIPvarIsDeletable(SCIP_VAR *var)
Definition: var.c:17570
SCIP_Bool SCIPvarIsRemovable(SCIP_VAR *var)
Definition: var.c:17462
SCIP_Longint SCIPvarGetNBranchingsCurrentRun(SCIP_VAR *var, SCIP_BRANCHDIR dir)
Definition: var.c:15743
SCIP_VAR * SCIPvarGetNegationVar(SCIP_VAR *var)
Definition: var.c:17736
SCIP_BDCHGIDX * SCIPvarGetLastBdchgIndex(SCIP_VAR *var)
Definition: var.c:16825
int SCIPvarGetNCliques(SCIP_VAR *var, SCIP_Bool varfixing)
Definition: var.c:18262
SCIP_Real SCIPvarGetLPSol_rec(SCIP_VAR *var)
Definition: var.c:13068
internal methods for branching and inference history
SCIP_Real SCIPvarGetCutoffSumCurrentRun(SCIP_VAR *var, SCIP_BRANCHDIR dir)
Definition: var.c:16221
int * SCIPvarGetImplIds(SCIP_VAR *var, SCIP_Bool varfixing)
Definition: var.c:18250
SCIP_HOLELIST * SCIPvarGetHolelistOriginal(SCIP_VAR *var)
Definition: var.c:17896
SCIP_DECL_HASHKEYVAL(SCIPvarGetHashkeyVal)
Definition: var.c:11998
#define SCIP_DECL_VARDELTRANS(x)
Definition: type_var.h:151
type definitions for LP management
SCIP_VAR * SCIPvarGetNegatedVar(SCIP_VAR *var)
Definition: var.c:17726
enum SCIP_BranchDir SCIP_BRANCHDIR
Definition: type_history.h:39
SCIP_Real SCIPvarGetNLPSol_rec(SCIP_VAR *var)
Definition: var.c:13141
int SCIPvarGetNBdchgInfosUb(SCIP_VAR *var)
Definition: var.c:18342
SCIP_Bool SCIPbdchginfoIsTighter(SCIP_BDCHGINFO *bdchginfo1, SCIP_BDCHGINFO *bdchginfo2)
Definition: var.c:18665
SCIP_Real SCIPvarGetUbGlobal(SCIP_VAR *var)
Definition: var.c:17920
SCIP_VAR * SCIPvarGetProbvar(SCIP_VAR *var)
Definition: var.c:12217
SCIP_Real SCIPvarGetBestRootLPObjval(SCIP_VAR *var)
Definition: var.c:13815
void SCIPvarSetDelorigData(SCIP_VAR *var, SCIP_DECL_VARDELORIG((*vardelorig)))
Definition: var.c:17292
void SCIPvarSetDeltransData(SCIP_VAR *var, SCIP_DECL_VARDELTRANS((*vardeltrans)))
Definition: var.c:17316
SCIP_Real SCIPvarGetBestBoundGlobal(SCIP_VAR *var)
Definition: var.c:17940
enum SCIP_LockType SCIP_LOCKTYPE
Definition: type_var.h:87
SCIP_Bool SCIPboundchgIsRedundant(SCIP_BOUNDCHG *boundchg)
Definition: var.c:17188
SCIP_Real SCIPvarGetLbOriginal(SCIP_VAR *var)
Definition: var.c:17856
SCIP_Bool SCIPbdchgidxIsEarlierNonNull(SCIP_BDCHGIDX *bdchgidx1, SCIP_BDCHGIDX *bdchgidx2)
Definition: var.c:18452
int SCIPvarCompareActiveAndNegated(SCIP_VAR *var1, SCIP_VAR *var2)
Definition: var.c:11903
SCIP_Real SCIPvarGetAvgBranchdepthCurrentRun(SCIP_VAR *var, SCIP_BRANCHDIR dir)
Definition: var.c:15831
SCIP_Real SCIPvarGetUbOriginal(SCIP_VAR *var)
Definition: var.c:17876
SCIP_Bool SCIPvarIsTransformedOrigvar(SCIP_VAR *var)
Definition: var.c:12860
type definitions for SCIP&#39;s main datastructure
SCIP_DECL_SORTPTRCOMP(SCIPvarCompActiveAndNegated)
Definition: var.c:11933
SCIP_Real SCIPvarGetUbAtIndex(SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
Definition: var.c:16661
SCIP_Bool SCIPvarHasBinaryImplic(SCIP_VAR *var, SCIP_Bool varfixing, SCIP_VAR *implvar, SCIP_Bool implvarfixing)
Definition: var.c:11127
SCIP_Real * SCIPvarGetVubConstants(SCIP_VAR *var)
Definition: var.c:18176
SCIP_Real SCIPvarGetAggrConstant(SCIP_VAR *var)
Definition: var.c:17666
const char * SCIPvarGetName(SCIP_VAR *var)
Definition: var.c:17251
SCIP_DECL_HASHGETKEY(SCIPvarGetHashkey)
Definition: var.c:11984
SCIP_Real SCIPboundchgGetNewbound(SCIP_BOUNDCHG *boundchg)
Definition: var.c:17148
SCIP_Real SCIPvarGetLPSol(SCIP_VAR *var)
Definition: var.c:18284
SCIP_HOLELIST * SCIPvarGetHolelistGlobal(SCIP_VAR *var)
Definition: var.c:17930
SCIP_RETCODE SCIPvarGetAggregatedObj(SCIP_VAR *var, SCIP_Real *aggrobj)
Definition: var.c:17780
SCIP_Bool SCIPbdchginfoHasInferenceReason(SCIP_BDCHGINFO *bdchginfo)
Definition: var.c:18651
SCIP_Real SCIPvarGetLbLazy(SCIP_VAR *var)
Definition: var.c:18048
SCIP_Real * SCIPvarGetVlbConstants(SCIP_VAR *var)
Definition: var.c:18134
SCIP_Real SCIPvarGetMultaggrConstant(SCIP_VAR *var)
Definition: var.c:17714
type definitions for problem variables
SCIP_Bool SCIPvarIsRelaxationOnly(SCIP_VAR *var)
Definition: var.c:17538
SCIP_Real SCIPvarGetCutoffSum(SCIP_VAR *var, SCIP_BRANCHDIR dir)
Definition: var.c:16178
SCIP_Real * SCIPvarGetVubCoefs(SCIP_VAR *var)
Definition: var.c:18166
SCIP_Bool SCIPbdchginfoIsRedundant(SCIP_BDCHGINFO *bdchginfo)
Definition: var.c:18640
SCIP_BDCHGIDX * SCIPbdchginfoGetIdx(SCIP_BDCHGINFO *bdchginfo)
Definition: var.c:18562
void SCIPvarSetBestRootSol(SCIP_VAR *var, SCIP_Real rootsol, SCIP_Real rootredcost, SCIP_Real rootlpobjval)
Definition: var.c:13846
SCIP_Bool SCIPvarIsOriginal(SCIP_VAR *var)
Definition: var.c:17380
SCIP_BOUNDTYPE * SCIPvarGetImplTypes(SCIP_VAR *var, SCIP_Bool varfixing)
Definition: var.c:18220
SCIP_Real SCIPholelistGetRight(SCIP_HOLELIST *holelist)
Definition: var.c:17228
#define SCIP_Bool
Definition: def.h:84
SCIP_BOUNDCHGTYPE SCIPboundchgGetBoundchgtype(SCIP_BOUNDCHG *boundchg)
Definition: var.c:17168
int SCIPbdchginfoGetPos(SCIP_BDCHGINFO *bdchginfo)
Definition: var.c:18552
SCIP_Bool SCIPvarWasFixedEarlier(SCIP_VAR *var1, SCIP_VAR *var2)
Definition: var.c:16950
SCIP_Real SCIPvarGetInferenceSumCurrentRun(SCIP_VAR *var, SCIP_BRANCHDIR dir)
Definition: var.c:16023
SCIP_Bool SCIPvarIsInLP(SCIP_VAR *var)
Definition: var.c:17632
void SCIPvarMarkRelaxationOnly(SCIP_VAR *var)
Definition: var.c:17556
SCIP_Real SCIPvarGetNLPSol(SCIP_VAR *var)
Definition: var.c:18297
int SCIPvarGetBranchPriority(SCIP_VAR *var)
Definition: var.c:18082
SCIP_Real SCIPvarGetLbAtIndex(SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
Definition: var.c:16542
int SCIPvarGetNImpls(SCIP_VAR *var, SCIP_Bool varfixing)
Definition: var.c:18188
SCIP_VARDATA * SCIPvarGetData(SCIP_VAR *var)
Definition: var.c:17271
int SCIPvarGetNLocksUp(SCIP_VAR *var)
Definition: var.c:3423
SCIP_VAR * SCIPboundchgGetVar(SCIP_BOUNDCHG *boundchg)
Definition: var.c:17158
int SCIPvarCompare(SCIP_VAR *var1, SCIP_VAR *var2)
Definition: var.c:11941
SCIP_BOUNDCHG * SCIPdomchgGetBoundchg(SCIP_DOMCHG *domchg, int pos)
Definition: var.c:17206
SCIP_Real SCIPvarGetUnchangedObj(SCIP_VAR *var)
Definition: var.c:17768
public methods for LP management
SCIP_Real SCIPvarGetObj(SCIP_VAR *var)
Definition: var.c:17758
SCIP_Real SCIPbdchginfoGetNewbound(SCIP_BDCHGINFO *bdchginfo)
Definition: var.c:18502
SCIP_Real SCIPvarGetBestRootRedcost(SCIP_VAR *var)
Definition: var.c:13781
SCIP_VAR * SCIPvarGetAggrVar(SCIP_VAR *var)
Definition: var.c:17642
SCIP_COL * SCIPvarGetCol(SCIP_VAR *var)
Definition: var.c:17621
int SCIPvarGetMultaggrNVars(SCIP_VAR *var)
Definition: var.c:17678
SCIP_Real * SCIPvarGetImplBounds(SCIP_VAR *var, SCIP_Bool varfixing)
Definition: var.c:18234
SCIP_RETCODE SCIPvarGetOrigvarSum(SCIP_VAR **var, SCIP_Real *scalar, SCIP_Real *constant)
Definition: var.c:12773
SCIP_BDCHGINFO * SCIPvarGetLbchgInfo(SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
Definition: var.c:16409
SCIP_BOUNDTYPE SCIPbdchginfoGetInferBoundtype(SCIP_BDCHGINFO *bdchginfo)
Definition: var.c:18619
SCIP_BDCHGINFO * SCIPvarGetUbchgInfo(SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
Definition: var.c:16465
SCIP_RETCODE SCIPvarGetProbvarBound(SCIP_VAR **var, SCIP_Real *bound, SCIP_BOUNDTYPE *boundtype)
Definition: var.c:12468
SCIP_BDCHGINFO * SCIPvarGetBdchgInfoUb(SCIP_VAR *var, int pos)
Definition: var.c:18330
SCIP_BDCHGINFO * SCIPvarGetBdchgInfo(SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
Definition: var.c:16521
#define SCIP_DECL_VARDELORIG(x)
Definition: type_var.h:118
type definitions for propagators
SCIP_VAR ** SCIPvarGetImplVars(SCIP_VAR *var, SCIP_Bool varfixing)
Definition: var.c:18205
int SCIPvarGetNLocksDown(SCIP_VAR *var)
Definition: var.c:3410
int SCIPdomchgGetNBoundchgs(SCIP_DOMCHG *domchg)
Definition: var.c:17198
int SCIPbdchginfoGetDepth(SCIP_BDCHGINFO *bdchginfo)
Definition: var.c:18542
SCIP_DECL_HASHKEYEQ(SCIPvarIsHashkeyEq)
Definition: var.c:11990
SCIP_Real SCIPvarGetBestRootSol(SCIP_VAR *var)
Definition: var.c:13714
void SCIPvarSetCopyData(SCIP_VAR *var, SCIP_DECL_VARCOPY((*varcopy)))
Definition: var.c:17327
SCIP_Real SCIPholelistGetLeft(SCIP_HOLELIST *holelist)
Definition: var.c:17218
datastructures for problem variables
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
Definition: var.c:17370
#define SCIP_Real
Definition: def.h:177
result codes for SCIP callback methods
type definitions for branching and inference history
SCIP_Longint SCIPvarGetNBranchings(SCIP_VAR *var, SCIP_BRANCHDIR dir)
Definition: var.c:15698
SCIP_RETCODE SCIPvarsGetProbvarBinary(SCIP_VAR ***vars, SCIP_Bool **negatedarr, int nvars)
Definition: var.c:12277
SCIP_VAR * SCIPbdchginfoGetInferVar(SCIP_BDCHGINFO *bdchginfo)
Definition: var.c:18572
SCIP_RETCODE SCIPvarSetInitial(SCIP_VAR *var, SCIP_Bool initial)
Definition: var.c:17338
SCIP_RETCODE SCIPvarGetProbvarHole(SCIP_VAR **var, SCIP_Real *left, SCIP_Real *right)
Definition: var.c:12561
int SCIPvarGetNUses(SCIP_VAR *var)
Definition: var.c:17261
void SCIPvarsGetProbvar(SCIP_VAR **vars, int nvars)
Definition: var.c:12197
SCIP_VAR ** SCIPvarGetVubVars(SCIP_VAR *var)
Definition: var.c:18156
#define SCIP_Longint
Definition: def.h:162
SCIP_BOUNDTYPE SCIPvarGetBestBoundType(SCIP_VAR *var)
Definition: var.c:18022
SCIP_CONS * SCIPbdchginfoGetInferCons(SCIP_BDCHGINFO *bdchginfo)
Definition: var.c:18584
SCIP_Real SCIPvarGetAvgSol(SCIP_VAR *var)
Definition: var.c:14061
int SCIPvarGetIndex(SCIP_VAR *var)
Definition: var.c:17590
SCIP_VARTYPE SCIPvarGetType(SCIP_VAR *var)
Definition: var.c:17416
enum SCIP_Vartype SCIP_VARTYPE
Definition: type_var.h:60
SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)
Definition: var.c:17976
SCIP_Bool SCIPvarIsTransformed(SCIP_VAR *var)
Definition: var.c:17393
SCIP_HOLELIST * SCIPvarGetHolelistLocal(SCIP_VAR *var)
Definition: var.c:17986
SCIP_BOUNDTYPE SCIPbdchginfoGetBoundtype(SCIP_BDCHGINFO *bdchginfo)
Definition: var.c:18532
common defines and data types used in all packages of SCIP
SCIP_RETCODE SCIPvarSetRemovable(SCIP_VAR *var, SCIP_Bool removable)
Definition: var.c:17354
SCIP_Real SCIPvarGetPseudoSol(SCIP_VAR *var)
Definition: var.c:18362
enum SCIP_BoundchgType SCIP_BOUNDCHGTYPE
Definition: type_var.h:78
SCIP_VAR * SCIPvarGetTransVar(SCIP_VAR *var)
Definition: var.c:17610
SCIP_Bool SCIPvarIsIntegral(SCIP_VAR *var)
Definition: var.c:17442
SCIP_Bool SCIPvarIsDeleted(SCIP_VAR *var)
Definition: var.c:17472
void SCIPvarGetImplicVarBounds(SCIP_VAR *var, SCIP_Bool varfixing, SCIP_VAR *implvar, SCIP_Real *lb, SCIP_Real *ub)
Definition: var.c:11142
void SCIPvarSetData(SCIP_VAR *var, SCIP_VARDATA *vardata)
Definition: var.c:17281
SCIP_Bool SCIPvarMayRoundUp(SCIP_VAR *var)
Definition: var.c:3445
SCIP_Bool SCIPvarMayRoundDown(SCIP_VAR *var)
Definition: var.c:3434
type definitions for constraints and constraint handlers
SCIP_Bool SCIPvarIsActive(SCIP_VAR *var)
Definition: var.c:17580
SCIP_Bool SCIPvarIsNegated(SCIP_VAR *var)
Definition: var.c:17406
void SCIPvarMarkDeleteGlobalStructures(SCIP_VAR *var)
Definition: var.c:17508
SCIP_BOUNDCHGTYPE SCIPbdchginfoGetChgtype(SCIP_BDCHGINFO *bdchginfo)
Definition: var.c:18522