All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
var.h
Go to the documentation of this file.
21 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
109 /** converts a dynamic domain change data into a static one, using less memory than for a dynamic one */
155 SCIP_Real lpsolval, /**< solval of variable in last LP on path to node, or SCIP_INVALID if unknown */
219 SCIP_DECL_VARTRANS ((*vartrans)), /**< creates transformed user data by transforming original user data, or NULL */
220 SCIP_DECL_VARDELTRANS ((*vardeltrans)), /**< frees user data of transformed variable, or NULL */
225 /** creates and captures a loose variable belonging to the transformed problem; an integer variable with bounds
242 SCIP_DECL_VARTRANS ((*vartrans)), /**< creates transformed user data by transforming original user data, or NULL */
243 SCIP_DECL_VARDELTRANS ((*vardeltrans)), /**< frees user data of transformed variable, or NULL */
248 /** copies and captures a variable from source to target SCIP; an integer variable with bounds zero and one is
249 * automatically converted into a binary variable; in case the variable data cannot be copied the variable is not
262 SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
267 /** parses variable information (in cip format) out of a string; if the parsing process was successful an original
268 * variable is created and captured; if variable is of integral type, fractional bounds are automatically rounded; an
283 SCIP_DECL_VARTRANS ((*vartrans)), /**< creates transformed user data by transforming original user data */
290 /** parses variable information (in cip format) out of a string; if the parsing process was successful a loose variable
291 * belonging to the transformed problem is created and captured; if variable is of integral type, fractional bounds are
292 * automatically rounded; an integer variable with bounds zero and one is automatically converted into a binary
307 SCIP_DECL_VARTRANS ((*vartrans)), /**< creates transformed user data by transforming original user data */
345 /** gets and captures transformed variable of a given variable; if the variable is not yet transformed,
354 SCIP_OBJSENSE objsense, /**< objective sense of original problem; transformed is always MINIMIZE */
365 SCIP_VAR** transvar /**< pointer to store the transformed variable, or NULL if not existing yet */
406 SCIP_Bool* fixed /**< pointer to store whether the fixing was performed (variable was unfixed) */
409 /** transforms given variables, scalars and constant to the corresponding active variables, scalars and constant
411 * If the number of needed active variables is greater than the available slots in the variable array, nothing happens except
412 * that the required size is stored in the corresponding variable; hence, if afterwards the required size is greater than the
413 * available slots (varssize), nothing happens; otherwise, the active variable representation is stored in the arrays.
415 * The reason for this approach is that we cannot reallocate memory, since we do not know how the
427 SCIP_Bool mergemultiples /**< should multiple occurrences of a var be replaced by a single coeff? */
432 * "scalar" will be 0.0 and the value of the sum will be stored in "constant"; a multi-aggregation
434 * is treated like an aggregation; if the multi-aggregation constant is infinite, "scalar" will be 0.0
445 /** flattens aggregation graph of multi-aggregated variable in order to avoid exponential recursion later-on */
453 /** return for given variables all their active counterparts; all active variables will be pairwise different */
468 * the variable to be aggregated is chosen among active problem variables x' and y', preferring a less strict variable
469 * type as aggregation variable (i.e. continuous variables are preferred over implicit integers, implicit integers
470 * or integers over binaries). If none of the variables is continuous, it is tried to find an integer
471 * aggregation (i.e. integral coefficients a'' and b'', such that a''*x' + b''*y' == c''). This can lead to
472 * the detection of infeasibility (e.g. if c'' is fractional), or to a rejection of the aggregation (denoted by
473 * aggregated == FALSE), if the resulting integer coefficients are too large and thus numerically instable.
550 /** gets negated variable x' = offset - x of problem variable x; the negated variable is created if not yet existing;
551 * the negation offset of binary variables is always 1, the offset of other variables is fixed to lb + ub when the
580 /** informs variable that it will be removed from the problem; adjusts probindex and removes variable from the
582 * If 'final' is TRUE, the thorough implication graph removal is not performed. Instead, only the
583 * variable bounds and implication data structures of the variable are freed. Since in the final removal
584 * of all variables from the transformed problem, this deletes the implication graph completely and is faster
714 SCIP_BRANCHCAND* branchcand, /**< branching candidate storage, may be NULL for original variables */
729 SCIP_BRANCHCAND* branchcand, /**< branching candidate storage, may be NULL for original variables */
744 SCIP_BRANCHCAND* branchcand, /**< branching candidate storage, may be NULL for original variables */
750 /** changes current local lower bound of variable; if possible, adjusts bound to integral value; stores inference
760 SCIP_BRANCHCAND* branchcand, /**< branching candidate storage, may be NULL for original variables */
765 /** changes current local upper bound of variable; if possible, adjusts bound to integral value; stores inference
775 SCIP_BRANCHCAND* branchcand, /**< branching candidate storage, may be NULL for original variables */
780 /** changes current local bound of variable; if possible, adjusts bound to integral value; stores inference
790 SCIP_BRANCHCAND* branchcand, /**< branching candidate storage, may be NULL for original variables */
796 /** changes lazy lower bound of the variable, this is only possible if the variable is not in the LP yet */
804 /** changes lazy upper bound of the variable, this is only possible if the variable is not in the LP yet */
811 /** changes lower bound of variable in current dive; if possible, adjusts bound to integral value */
820 /** changes upper bound of variable in current dive; if possible, adjusts bound to integral value */
829 /** for a multi-aggregated variable, gives the local lower bound computed by adding the local bounds from all aggregation variables
830 * this lower bound may be tighter than the one given by SCIPvarGetLbLocal, since the latter is not updated if bounds of aggregation variables are changing
839 /** for a multi-aggregated variable, gives the local upper bound computed by adding the local bounds from all aggregation variables
840 * this upper bound may be tighter than the one given by SCIPvarGetUbLocal, since the latter is not updated if bounds of aggregation variables are changing
849 /** for a multi-aggregated variable, gives the global lower bound computed by adding the global bounds from all aggregation variables
850 * 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
859 /** for a multi-aggregated variable, gives the global upper bound computed by adding the global bounds from all aggregation variables
860 * this upper bound may be tighter than the one given by SCIPvarGetUbGlobal, since the latter is not updated if bounds of aggregation variables are changing
914 /** returns at which depth in the tree a bound change was applied to the variable that conflicts with the
915 * given bound; returns -1 if the bound does not conflict with the current local bounds of the variable
925 /** informs variable x about a globally valid variable lower bound x >= b*z + d with integer variable z;
950 /** informs variable x about a globally valid variable upper bound x <= b*z + d with integer variable z;
975 /** informs binary variable x about a globally valid implication: x == 0 or x == 1 ==> y <= b or y >= b;
978 * if the variable is already fixed to the given value, the implication is performed immediately;
994 SCIP_Bool varfixing, /**< FALSE if y should be added in implications for x == 0, TRUE for x == 1 */
996 SCIP_BOUNDTYPE impltype, /**< type of implication y <= b (SCIP_BOUNDTYPE_UPPER) or y >= b (SCIP_BOUNDTYPE_LOWER) */
1003 /** fixes the bounds of a binary variable to the given value, counting bound changes and detecting infeasibility */
1021 /** adds the variable to the given clique and updates the list of cliques the binary variable is member of;
1022 * if the variable now appears twice in the clique with the same value, it is fixed to the opposite value;
1023 * if the variable now appears twice in the clique with opposite values, all other variables are fixed to
1055 /** deletes the variable from the given clique and updates the list of cliques the binary variable is member of */
1064 /** deletes a clique from the list of cliques the binary variable is member of, but does not change the clique
1075 /** sets the branch factor of the variable; this value can be used in the branching methods to scale the score
1076 * values of the variables; higher factor leads to a higher probability that this variable is chosen for branching
1085 /** sets the branch priority of the variable; variables with higher branch priority are always preferred to variables
1094 /** sets the branch direction of the variable; variables with higher branch direction are always preferred to variables
1100 SCIP_BRANCHDIR branchdirection /**< preferred branch direction of the variable (downwards, upwards, auto) */
1103 /** gets objective value of variable in current SCIP_LP; the value can be different from the bound stored in the variable's own
1111 /** gets lower bound of variable in current SCIP_LP; the bound can be different from the bound stored in the variable's own
1112 * data due to diving or conflict analysis, that operate only on the LP without updating the variables
1120 /** gets upper bound of variable in current SCIP_LP; the bound can be different from the bound stored in the variable's own
1121 * data due to diving or conflict analysis, that operate only on the LP without updating the variables
1129 /** returns solution value and index of variable lower bound that is closest to the variable's value in the given primal solution
1130 * or current LP solution if no primal solution is given; returns an index of -1 if no variable lower bound is available
1142 /** returns solution value and index of variable upper bound that is closest to the variable's value in the given primal solution;
1143 * or current LP solution if no primal solution is given; returns an index of -1 if no variable upper bound is available
1162 /** updates the current solution as best root solution in the problem variables if it is better */
1179 /** returns the solution value of the transformed problem variable in the relaxation solution */
1195 /** returns for the given binary variable the reduced cost which are given by the variable itself and its implication if
1240 /** updates the pseudo costs of the given variable and the global pseudo costs after a change of
1241 * "solvaldelta" in the variable's solution value and resulting change of "objdelta" in the in the LP's objective value
1253 /** gets the variable's pseudo cost value for the given step size "solvaldelta" in the variable's LP solution value */
1261 /** gets the variable's pseudo cost value for the given step size "solvaldelta" in the variable's LP solution value,
1271 /** gets the variable's (possible fractional) number of pseudo cost updates for the given direction */
1278 /** gets the variable's (possible fractional) number of pseudo cost updates for the given direction,
1306 /** increases the number of active conflicts by one and the overall length of the variable by the given length */
1399 /** returns the average number of inferences found after branching on the variable in given direction */
1407 /** returns the average number of inferences found after branching on the variable in given direction
1417 /** returns the average number of cutoffs found after branching on the variable in given direction */
1425 /** returns the average number of cutoffs found after branching on the variable in given direction in the current run */
1450 SCIP_EVENTDATA* eventdata, /**< event data to pass to the event handler for the event processing */
1462 SCIP_EVENTDATA* eventdata, /**< event data to pass to the event handler for the event processing */
1482 /* In optimized mode, the function calls are overwritten by defines to reduce the number of function calls and
1490 #define SCIPvarGetVSIDS(var, stat, dir) ((var)->varstatus == SCIP_VARSTATUS_LOOSE || (var)->varstatus == SCIP_VARSTATUS_COLUMN ? \
|