scip_var.h
Go to the documentation of this file.
38/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
82 * An integer variable with bounds zero and one is automatically converted into a binary variable.
84 * @warning When doing column generation and the original problem is a maximization problem, notice that SCIP will
85 * transform the problem into a minimization problem by multiplying the objective function by -1. Thus, the
86 * original objective function value of variables created during the solving process has to be multiplied by
89 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
101 * @note the variable gets captured, hence at one point you have to release it using the method SCIPreleaseVar()
115 SCIP_DECL_VARTRANS ((*vartrans)), /**< creates transformed user data by transforming original user data, or NULL */
116 SCIP_DECL_VARDELTRANS ((*vardeltrans)), /**< frees user data of transformed variable, or NULL */
123 * Callbacks and variable data can be set in the following using SCIPvarSetDelorigData(), SCIPvarSetTransData(),
126 * Variable flags are set as initial = TRUE and removable = FALSE, and can be adjusted by using SCIPvarSetInitial() and SCIPvarSetRemovable(), resp.
129 * An integer variable with bounds zero and one is automatically converted into a binary variable.
131 * @warning When doing column generation and the original problem is a maximization problem, notice that SCIP will
132 * transform the problem into a minimization problem by multiplying the objective function by -1. Thus, the
133 * original objective function value of variables created during the solving process has to be multiplied by
136 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
148 * @note the variable gets captured, hence at one point you have to release it using the method SCIPreleaseVar()
164 * An integer variable with bounds zero and one is automatically converted into a binary variable.
166 * @warning When doing column generation and the original problem is a maximization problem, notice that SCIP will
167 * transform the problem into a minimization problem by multiplying the objective function by -1. Thus, the
168 * original objective function value of variables created during the solving process has to be multiplied by
171 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
183 * @note the variable gets captured, hence at one point you have to release it using the method SCIPreleaseVar()
198 SCIP_DECL_VARTRANS ((*vartrans)), /**< creates transformed user data by transforming original user data, or NULL */
199 SCIP_DECL_VARDELTRANS ((*vardeltrans)), /**< frees user data of transformed variable, or NULL */
206 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
229 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
254/** print the given list of variables to output stream separated by the given delimiter character;
256 * i. e. the variables x1, x2, ..., xn with given delimiter ',' are written as: <x1>, <x2>, ..., <xn>;
260 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
294 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
329 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
360/** parses variable information (in cip format) out of a string; if the parsing process was successful a variable is
361 * created and captured; if variable is of integral type, fractional bounds are automatically rounded; an integer
364 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
385 SCIP_DECL_VARTRANS ((*vartrans)), /**< creates transformed user data by transforming original user data */
392/** parses the given string for a variable name and stores the variable in the corresponding pointer if such a variable
395 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
415/** parse the given string as variable list (here ',' is the delimiter)) (<x1>, <x2>, ..., <xn>) (see
418 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
430 * @note The pointer success in only set to FALSE in the case that a variable with a parsed variable name does not exist.
432 * @note If the number of (parsed) variables is greater than the available slots in the variable array, nothing happens
433 * except that the required size is stored in the corresponding integer; the reason for this approach is that we
434 * cannot reallocate memory, since we do not know how the memory has been allocated (e.g., by a C++ 'new' or SCIP
450/** parse the given string as linear sum of variables and coefficients (c1 <x1> + c2 <x2> + ... + cn <xn>)
453 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
465 * @note The pointer success in only set to FALSE in the case that a variable with a parsed variable name does not exist.
467 * @note If the number of (parsed) variables is greater than the available slots in the variable array, nothing happens
468 * except that the required size is stored in the corresponding integer; the reason for this approach is that we
469 * cannot reallocate memory, since we do not know how the memory has been allocated (e.g., by a C++ 'new' or SCIP
485/** parse the given string as linear sum of variables and coefficients (c1 <x1> + c2 <x2> + ... + cn <xn>)
488 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
500 * @note The pointer success in only set to FALSE in the case that a variable with a parsed variable name does not exist.
502 * @note If the number of (parsed) variables is greater than the available slots in the variable array, nothing happens
503 * except that the required size is stored in the corresponding integer; the reason for this approach is that we
504 * cannot reallocate memory, since we do not know how the memory has been allocated (e.g., by a C++ 'new' or SCIP
525 * monomialcoefs, monomialnvars, *nmonomials) short after SCIPparseVarsPolynomial to free all the
526 * allocated memory again. Do not keep the arrays created by SCIPparseVarsPolynomial around, since
529 * Parsing is stopped at the end of string (indicated by the \\0-character) or when no more monomials
532 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
581 * monomialcoefs, monomialnvars, *nmonomials) short after SCIPparseVarsPolynomial to free all the
584 * Parsing is stopped at the end of string (indicated by the \\0-character) or when no more monomials
587 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
633 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
655/** decreases usage counter of variable, if the usage pointer reaches zero the variable gets freed
657 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
684 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
698/** gets and captures transformed variable of a given variable; if the variable is not yet transformed,
701 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
722 * if a variable of the array is not yet transformed, a new transformed variable for this variable is created;
725 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
749 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
774 * it is possible to call this method with vars == transvars, but remember that variables that are not
777 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
801/** gets negated variable x' = lb + ub - x of variable x; negated variable is created, if not yet existing
803 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
827/** gets negated variables x' = lb + ub - x of variables x; negated variables are created, if not yet existing;
828 * in difference to \ref SCIPcreateVar, the negated variable must not be released (unless captured explicitly)
830 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
855/** gets a binary variable that is equal to the given binary variable, and that is either active, fixed, or
858 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
878 SCIP_Bool* negated /**< pointer to store whether the negation of an active variable was returned */
881/** gets binary variables that are equal to the given binary variables, and which are either active, fixed, or
884 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
905 SCIP_Bool* negated /**< array to store whether the negation of an active variable was returned */
908/** flattens aggregation graph of multi-aggregated variable in order to avoid exponential recursion later on
910 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
928/** Transforms a given linear sum of variables, that is a_1*x_1 + ... + a_n*x_n + c into a corresponding linear sum of
931 * If the number of needed active variables is greater than the available slots in the variable array, nothing happens
932 * except that an upper bound on the required size is stored in the variable requiredsize; otherwise, the active
935 * The reason for this approach is that we cannot reallocate memory, since we do not know how the memory has been
936 * allocated (e.g., by a C++ 'new' or SCIP functions). Note that requiredsize is an upper bound due to possible
939 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
954 * @note The resulting linear sum is stored into the given variable array, scalar array, and constant. That means the
957 * @note That method can be used to convert a single variables into variable space of active variables. Therefore call
983 * "scalar" will be 0.0 and the value of the sum will be stored in "constant"; a multi-aggregation
985 * is treated like an aggregation; if the multi-aggregation constant is infinite, "scalar" will be 0.0
987 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1011 * multi-aggregated variable, scalar and constant; if the variable resolves to a fixed variable,
1012 * "scalar" will be 0.0 and the value of the sum will be stored in "constant"; a multi-aggregation
1014 * is treated like an aggregation; if the multi-aggregation constant is infinite, "scalar" will be 0.0
1016 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1039/** return for given variables all their active counterparts; all active variables will be pairwise different
1040 * @note It does not hold that the first output variable is the active variable for the first input variable.
1042 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1076 * @note The return value of this method should be used carefully if the dual feasibility check was explictely disabled.
1092 * @note The return value of this method should be used carefully if the dual feasibility check was explictely disabled.
1115/** returns lower bound of variable directly before or after the bound change given by the bound change index
1126/** returns upper bound of variable directly before or after the bound change given by the bound change index
1137/** returns lower or upper bound of variable directly before or after the bound change given by the bound change index
1149/** returns whether the binary variable was fixed at the time given by the bound change index */
1174 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1191 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1205 * this solution can be filled by the relaxation handlers and can be used by heuristics and for separation;
1210 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1217 * @note This method incrementally updates the objective value of the relaxation solution. If the whole solution
1218 * should be updated, using SCIPsetRelaxSolVals() instead or calling SCIPclearRelaxSolVals() before setting
1229/** sets the values of the given variables in the global relaxation solution and informs SCIP about the validity
1231 * this solution can be filled by the relaxation handlers and can be used by heuristics and for separation;
1234 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1251/** sets the values of the variables in the global relaxation solution to the values in the given primal solution
1252 * and informs SCIP about the validity and whether the solution can be enforced via linear cuts;
1253 * the relaxation solution can be filled by the relaxation handlers and might be used by heuristics and for separation
1255 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1283/** informs SCIP that the relaxation solution is valid and whether the relaxation can be enforced through linear cuts
1285 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1301 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1353 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1360 * @note if propagation is enabled, strong branching is not done directly on the LP, but probing nodes are created
1366 SCIP_Bool enablepropagation /**< should propagation be done before solving the strong branching LP? */
1371 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1385 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1397 SCIP_Bool idempotent, /**< should scip's state remain the same after the call (statistics, column states...), or should it be updated ? */
1400 SCIP_Bool* downvalid, /**< stores whether the returned down value is a valid dual bound, or NULL;
1404 SCIP_Bool* downinf, /**< pointer to store whether the downwards branch is infeasible, or NULL */
1406 SCIP_Bool* downconflict, /**< pointer to store whether a conflict constraint was created for an
1416 * Before calling this method, the strong branching mode must have been activated by calling SCIPstartStrongbranch();
1417 * after strong branching was done for all candidate variables, the strong branching mode must be ended by
1418 * SCIPendStrongbranch(). Since this method applies domain propagation before strongbranching, propagation has to be be
1421 * Before solving the strong branching LP, domain propagation can be performed. The number of propagation rounds
1424 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1431 * @warning When using this method, LP banching candidates and solution values must be copied beforehand, because
1445 SCIP_Bool* downvalid, /**< stores whether the returned down value is a valid dual bound, or NULL;
1449 SCIP_Longint* ndomredsdown, /**< pointer to store the number of domain reductions down, or NULL */
1451 SCIP_Bool* downinf, /**< pointer to store whether the downwards branch is infeasible, or NULL */
1453 SCIP_Bool* downconflict, /**< pointer to store whether a conflict constraint was created for an
1463/** gets strong branching information on column variable x with integral LP solution value (val); that is, the down branch
1466 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1473 * @note If the integral LP solution value is the lower or upper bound of the variable, the corresponding branch will be
1481 SCIP_Bool idempotent, /**< should scip's state remain the same after the call (statistics, column states...), or should it be updated ? */
1484 SCIP_Bool* downvalid, /**< stores whether the returned down value is a valid dual bound, or NULL;
1488 SCIP_Bool* downinf, /**< pointer to store whether the downwards branch is infeasible, or NULL */
1490 SCIP_Bool* downconflict, /**< pointer to store whether a conflict constraint was created for an
1500 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1515 SCIP_Bool* downvalid, /**< stores whether the returned down values are valid dual bounds, or NULL;
1519 SCIP_Bool* downinf, /**< array to store whether the downward branches are infeasible, or NULL */
1531 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1546 SCIP_Bool* downvalid, /**< stores whether the returned down values are valid dual bounds, or NULL;
1550 SCIP_Bool* downinf, /**< array to store whether the downward branches are infeasible, or NULL */
1560/** get LP solution status of last strong branching call (currently only works for strong branching with propagation) */
1567/** gets strong branching information on COLUMN variable of the last SCIPgetVarStrongbranch() call;
1568 * returns values of SCIP_INVALID, if strong branching was not yet called on the given variable;
1569 * keep in mind, that the returned old values may have nothing to do with the current LP solution
1571 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1584 SCIP_Bool* downvalid, /**< stores whether the returned down value is a valid dual bound, or NULL;
1588 SCIP_Real* solval, /**< stores LP solution value of variable at last strong branching call, or NULL */
1594 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1616 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1629/** gets node number of the last node in current branch and bound run, where strong branching was used on the
1632 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1653/** if strong branching was already applied on the variable at the current node, returns the number of LPs solved after
1657 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1680 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1703 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1731 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1758/** add locks of type @p locktype of variable with respect to the lock status of the constraint and its negation;
1759 * this method should be called whenever the lock status of a variable in a constraint changes, for example if
1760 * the coefficient of the variable changed its sign or if the left or right hand sides of the constraint were
1763 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1786/** remove locks of type @p locktype of variable with respect to the lock status of the constraint and its negation;
1787 * this method should be called whenever the lock status of a variable in a constraint changes, for example if
1788 * the coefficient of the variable changed its sign or if the left or right hand sides of the constraint were
1791 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1816 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1833 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1850/** returns the adjusted (i.e. rounded, if the given variable is of integral type) lower bound value;
1853 * @return adjusted lower bound for the given variable; the bound of the variable is not changed
1876/** returns the adjusted (i.e. rounded, if the given variable is of integral type) lower bound value;
1879 * @return adjusted lower bound for the given variable; the bound of the variable is not changed
1902/** returns the adjusted (i.e. rounded, if the given variable is of integral type) upper bound value;
1905 * @return adjusted upper bound for the given variable; the bound of the variable is not changed
1928/** returns the adjusted (i.e. rounded, if the given variable is of integral type) upper bound value;
1931 * @return adjusted upper bound for the given variable; the bound of the variable is not changed
1954/** depending on SCIP's stage, changes lower bound of variable in the problem, in preprocessing, or in current node;
1955 * if possible, adjusts bound to integral value; doesn't store any inference information in the bound change, such
1958 * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
1961 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1970 * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
1979/** depending on SCIP's stage, changes exact lower bound of variable in the problem, in preprocessing, or in current node;
1980 * if possible, adjusts bound to integral value; doesn't store any inference information in the bound change, such
1983 * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
1986 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1995 * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
2004/** depending on SCIP's stage, changes upper bound of variable in the problem, in preprocessing, or in current node;
2005 * if possible, adjusts bound to integral value; doesn't store any inference information in the bound change, such
2008 * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
2011 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2020 * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
2029/** depending on SCIP's stage, changes exact upper bound of variable in the problem, in preprocessing, or in current node;
2030 * if possible, adjusts bound to integral value; doesn't store any inference information in the bound change, such
2033 * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
2036 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2045 * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
2054/** changes lower bound of variable in the given node; if possible, adjust bound to integral value; doesn't store any
2055 * inference information in the bound change, such that in conflict analysis, this change is treated like a branching
2058 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2071/** changes upper bound of variable in the given node; if possible, adjust bound to integral value; doesn't store any
2072 * inference information in the bound change, such that in conflict analysis, this change is treated like a branching
2075 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2088/** changes global lower bound of variable; if possible, adjust bound to integral value; also tightens the local bound,
2091 * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
2094 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2104 * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
2113/** changes global upper bound of variable; if possible, adjust bound to integral value; also tightens the local bound,
2116 * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
2119 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2129 * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
2138/** changes lazy lower bound of the variable, this is only possible if the variable is not in the LP yet
2141 * Setting a lazy lower bound has the consequence that for variables which lower bound equals the lazy lower bound,
2145 * @attention If the variable has a global lower bound below lazylb, then the global lower bound is tightened to
2148 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2165/** changes lazy upper bound of the variable, this is only possible if the variable is not in the LP yet
2168 * Setting a lazy upper bound has the consequence that for variables which upper bound equals the lazy upper bound,
2172 * @attention If the variable has a global upper bound above lazyub, then the global upper bound is tightened to
2175 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2192/** changes lower bound of variable in preprocessing or in the current node, if the new bound is tighter
2193 * (w.r.t. bound strengthening epsilon) than the current bound; if possible, adjusts bound to integral value;
2194 * doesn't store any inference information in the bound change, such that in conflict analysis, this change
2197 * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
2200 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2208 * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
2220/** changes exact lower bound of variable in preprocessing or in the current node, if the new bound is tighter
2221 * (w.r.t. bound strengthening epsilon) than the current bound; if possible, adjusts bound to integral value;
2222 * doesn't store any inference information in the bound change, such that in conflict analysis, this change
2225 * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
2228 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2236 * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
2247/** changes upper bound of variable in preprocessing or in the current node, if the new bound is tighter
2248 * (w.r.t. bound strengthening epsilon) than the current bound; if possible, adjusts bound to integral value;
2249 * doesn't store any inference information in the bound change, such that in conflict analysis, this change
2252 * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
2255 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2263 * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
2275/** changes exact upper bound of variable in preprocessing or in the current node, if the new bound is tighter
2276 * (w.r.t. bound strengthening epsilon) than the current bound; if possible, adjusts bound to integral value;
2277 * doesn't store any inference information in the bound change, such that in conflict analysis, this change
2280 * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
2283 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2291 * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
2302/** fixes variable in preprocessing or in the current node, if the new bound is tighter (w.r.t. bound strengthening
2303 * epsilon) than the current bound; if possible, adjusts bound to integral value; the given inference constraint is
2304 * stored, such that the conflict analysis is able to find out the reason for the deduction of the bound change
2306 * @note In presolving stage when not in probing mode the variable will be fixed directly, otherwise this method
2307 * changes first the lowerbound by calling SCIPinferVarLbCons and second the upperbound by calling
2310 * @note If SCIP is in presolving stage, it can happen that the internal variable array (which get be accessed via
2313 * @note During presolving, an integer variable which bound changes to {0,1} is upgraded to a binary variable.
2327/** changes lower bound of variable in preprocessing or in the current node, if the new bound is tighter
2328 * (w.r.t. bound strengthening epsilon) than the current bound; if possible, adjusts bound to integral value;
2329 * the given inference constraint is stored, such that the conflict analysis is able to find out the reason
2332 * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
2335 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2343 * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
2357/** changes upper bound of variable in preprocessing or in the current node, if the new bound is tighter
2358 * (w.r.t. bound strengthening epsilon) than the current bound; if possible, adjusts bound to integral value;
2359 * the given inference constraint is stored, such that the conflict analysis is able to find out the reason
2362 * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
2365 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2373 * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
2387/** depending on SCIP's stage, fixes binary variable in the problem, in preprocessing, or in current node;
2388 * the given inference constraint is stored, such that the conflict analysis is able to find out the reason for the
2391 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2407 SCIP_Bool* tightened /**< pointer to store whether the fixing tightened the local bounds, or NULL */
2410/** changes upper bound of variable in preprocessing or in the current node, if the new bound is tighter
2412 * the given inference constraint is stored, such that the conflict analysis is able to find out the reason
2415 * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
2418 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2426 * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
2438/** changes lower bound of variable in preprocessing or in the current node, if the new bound is tighter
2440 * the given inference constraint is stored, such that the conflict analysis is able to find out the reason
2443 * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
2446 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2454 * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
2466/** fixes variable in preprocessing or in the current node, if the new bound is tighter (w.r.t. bound strengthening
2467 * epsilon) than the current bound; if possible, adjusts bound to integral value; the given inference constraint is
2468 * stored, such that the conflict analysis is able to find out the reason for the deduction of the bound change
2470 * @note In presolving stage when not in probing mode the variable will be fixed directly, otherwise this method
2471 * changes first the lowerbound by calling SCIPinferVarLbProp and second the upperbound by calling
2474 * @note If SCIP is in presolving stage, it can happen that the internal variable array (which get be accessed via
2477 * @note During presolving, an integer variable which bound changes to {0,1} is upgraded to a binary variable.
2491/** changes lower bound of variable in preprocessing or in the current node, if the new bound is tighter
2492 * (w.r.t. bound strengthening epsilon) than the current bound; if possible, adjusts bound to integral value;
2493 * the given inference propagator is stored, such that the conflict analysis is able to find out the reason
2496 * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
2499 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2507 * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
2521/** changes upper bound of variable in preprocessing or in the current node, if the new bound is tighter
2522 * (w.r.t. bound strengthening epsilon) than the current bound; if possible, adjusts bound to integral value;
2523 * the given inference propagator is stored, such that the conflict analysis is able to find out the reason
2526 * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
2529 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2537 * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
2551/** depending on SCIP's stage, fixes binary variable in the problem, in preprocessing, or in current node;
2552 * the given inference propagator is stored, such that the conflict analysis is able to find out the reason for the
2555 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2572 SCIP_Bool* tightened /**< pointer to store whether the fixing tightened the local bounds, or NULL */
2575/** changes global lower bound of variable in preprocessing or in the current node, if the new bound is tighter
2576 * (w.r.t. bound strengthening epsilon) than the current global bound; if possible, adjusts bound to integral value;
2579 * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
2582 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2591 * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
2603/** changes global upper bound of variable in preprocessing or in the current node, if the new bound is tighter
2604 * (w.r.t. bound strengthening epsilon) than the current global bound; if possible, adjusts bound to integral value;
2607 * @warning If SCIP is in presolving stage, it can happen that the internal variable array (which can be accessed via
2610 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2619 * @note During presolving, an integer variable whose bound changes to {0,1} is upgraded to a binary variable.
2631/** for a multi-aggregated variable, returns the global lower bound computed by adding the global bounds from all aggregation variables
2633 * 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
2634 * calling this function for a non-multi-aggregated variable results in a call to SCIPvarGetLbGlobal.
2636 * @return the global lower bound computed by adding the global bounds from all aggregation variables
2644/** for a multi-aggregated variable, returns the global upper bound computed by adding the global bounds from all aggregation variables
2646 * 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
2647 * calling this function for a non-multi-aggregated variable results in a call to SCIPvarGetUbGlobal.
2649 * @return the global upper bound computed by adding the global bounds from all aggregation variables
2657/** for a multi-aggregated variable, returns the local lower bound computed by adding the local bounds from all aggregation variables
2659 * 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
2660 * calling this function for a non-multi-aggregated variable results in a call to SCIPvarGetLbLocal.
2662 * @return the local lower bound computed by adding the global bounds from all aggregation variables
2670/** for a multi-aggregated variable, returns the local lower bound computed by adding the local bounds from all aggregation variables
2672 * 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
2673 * calling this function for a non-multi-aggregated variable results in a call to SCIPvarGetLbLocal.
2675 * @return the local lower bound computed by adding the global bounds from all aggregation variables
2684/** for a multi-aggregated variable, returns the local upper bound computed by adding the local bounds from all aggregation variables
2686 * 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
2687 * calling this function for a non-multi-aggregated variable results in a call to SCIPvarGetUbLocal.
2689 * @return the local upper bound computed by adding the global bounds from all aggregation variables
2697/** for a multi-aggregated variable, returns the local upper bound computed by adding the local bounds from all aggregation variables
2699 * 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
2700 * calling this function for a non-multi-aggregated variable results in a call to SCIPvarGetUbLocal.
2702 * @return the local upper bound computed by adding the global bounds from all aggregation variables
2711/** for a multi-aggregated variable, gives the global lower bound computed by adding the global bounds from all
2712 * aggregation variables, this global bound may be tighter than the one given by SCIPvarGetLbGlobal, since the latter is
2723/** for a multi-aggregated variable, gives the global upper bound computed by adding the global bounds from all
2724 * aggregation variables, this upper bound may be tighter than the one given by SCIPvarGetUbGlobal, since the latter is
2735/** for a multi-aggregated variable, gives the local lower bound computed by adding the local bounds from all
2736 * aggregation variables, this lower bound may be tighter than the one given by SCIPvarGetLbLocal, since the latter is
2747/** for a multi-aggregated variable, gives the local upper bound computed by adding the local bounds from all
2748 * aggregation variables, this upper bound may be tighter than the one given by SCIPvarGetUbLocal, since the latter is
2761/* In optimized mode, the function calls are overwritten by defines to reduce the number of function calls and
2765#define SCIPcomputeVarLbGlobal(scip, var) (SCIPvarGetStatus(var) == SCIP_VARSTATUS_MULTAGGR ? SCIPgetVarMultaggrLbGlobal(scip, var) : SCIPvarGetLbGlobal(var))
2766#define SCIPcomputeVarUbGlobal(scip, var) (SCIPvarGetStatus(var) == SCIP_VARSTATUS_MULTAGGR ? SCIPgetVarMultaggrUbGlobal(scip, var) : SCIPvarGetUbGlobal(var))
2767#define SCIPcomputeVarLbLocal(scip, var) (SCIPvarGetStatus(var) == SCIP_VARSTATUS_MULTAGGR ? SCIPgetVarMultaggrLbLocal(scip, var) : SCIPvarGetLbLocal(var))
2768#define SCIPcomputeVarUbLocal(scip, var) (SCIPvarGetStatus(var) == SCIP_VARSTATUS_MULTAGGR ? SCIPgetVarMultaggrUbLocal(scip, var) : SCIPvarGetUbLocal(var))
2772/** returns solution value and index of variable lower bound that is closest to the variable's value in the given primal
2773 * solution or current LP solution if no primal solution is given; returns an index of -1 if no variable lower bound is
2776 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2790/** returns solution value and index of variable upper bound that is closest to the variable's value in the given primal solution;
2791 * or current LP solution if no primal solution is given; returns an index of -1 if no variable upper bound is available
2793 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2807/** informs variable x about a globally valid variable lower bound x >= b*z + d with integer variable z;
2813 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2833/** informs variable x about a globally valid variable upper bound x <= b*z + d with integer variable z;
2839 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2858/** informs binary variable x about a globally valid implication: x == 0 or x == 1 ==> y <= b or y >= b;
2861 * if the variable is already fixed to the given value, the implication is performed immediately;
2864 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2877 SCIP_Bool varfixing, /**< FALSE if y should be added in implications for x == 0, TRUE for x == 1 */
2886/** adds a clique information to SCIP, stating that at most one of the given binary variables can be set to 1;
2889 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2902 SCIP_Bool* values, /**< values of the variables in the clique; NULL to use TRUE for all vars */
2909/** calculates a partition of the given set of binary variables into cliques; takes into account independent clique components
2916 * afterwards the output array contains one value for each variable, such that two variables got the same value iff they
2918 * the first variable is always assigned to clique 0, and a variable can only be assigned to clique i if at least one of
2922 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2940 int* ncliques /**< pointer to store the number of cliques actually contained in the partition */
2944 * afterwards the output array contains one value for each variable, such that two variables got the same value iff they
2946 * the first variable is always assigned to clique 0 and a variable can only be assigned to clique i if at least one of
2948 * for each clique with n_c variables at least n_c-1 variables can be set to TRUE in a feasible solution;
2950 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
2968 int* ncliques /**< pointer to store the number of cliques actually contained in the partition */
2971/** force SCIP to clean up all cliques; cliques do not get automatically cleaned up after presolving. Use
3056 * if regardimplics is TRUE, both the cliques and the implications of the implication graph are regarded
3058 * @return TRUE, if there is a clique that contains both variable/clique pairs; FALSE, otherwise
3086 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
3102 * If @p writenodeweights is true, only nodes corresponding to variables that have a fractional value and only edges
3112/** Removes (irrelevant) variable from all its global structures, i.e. cliques, implications and variable bounds.
3134/** sets the branch factor of the variable; this value can be used in the branching methods to scale the score
3135 * values of the variables; higher factor leads to a higher probability that this variable is chosen for branching
3137 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
3159 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
3181 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
3201/** sets the branch priority of the variable; variables with higher branch priority are always preferred to variables
3204 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
3226/** changes the branch priority of the variable to the given value, if it is larger than the current priority
3228 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
3245 int branchpriority /**< new branch priority of the variable, if it is larger than current priority */
3250 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
3270/** sets the branch direction of the variable (-1: prefer downwards branch, 0: automatic selection, +1: prefer upwards
3273 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
3290 SCIP_BRANCHDIR branchdirection /**< preferred branch direction of the variable (downwards, upwards, auto) */
3295 * @warning This type change might change the variable array returned from SCIPgetVars() and SCIPgetVarsData();
3297 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
3305 * @note If SCIP is already beyond the SCIP_STAGE_PROBLEM and a original variable is passed, the variable type of the
3306 * corresponding transformed variable is changed; the type of the original variable does not change
3308 * @note If the type changes from a continuous variable to a non-continuous variable the bounds of the variable get
3322 * @warning This type change might change the variable array returned from SCIPgetVars() and SCIPgetVarsData();
3324 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
3332 * @note If SCIP is already beyond the SCIP_STAGE_PROBLEM and a original variable is passed, the implied integral type of the
3333 * corresponding transformed variable is changed; the type of the original variable does not change
3335 * @note If the implied integral type is adjusted to weak or strong for a continuous variable, the bounds of the variable get
3347/** in problem creation and solving stage, both bounds of the variable are set to the given value;
3348 * in presolving stage, the variable is converted into a fixed variable, and bounds are changed respectively;
3349 * conversion into a fixed variable changes the vars array returned from SCIPgetVars() and SCIPgetVarsData(),
3352 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
3366 SCIP_Bool* fixed /**< pointer to store whether the fixing was performed (variable was unfixed) */
3369/** in problem creation and solving stage, both bounds of the variable are set to the given value;
3370 * in presolving stage, the variable is converted into a fixed variable, and bounds are changed respectively;
3371 * conversion into a fixed variable changes the vars array returned from SCIPgetVars() and SCIPgetVarsData(),
3374 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
3388 SCIP_Bool* fixed /**< pointer to store whether the fixing was performed (variable was unfixed) */
3391/** From a given equality a*x + b*y == c, aggregates one of the variables and removes it from the set of
3392 * active problem variables. This changes the vars array returned from SCIPgetVars() and SCIPgetVarsData(),
3393 * and also renders the arrays returned from the SCIPvarGetImpl...() methods for the two variables invalid.
3394 * In the first step, the equality is transformed into an equality with active problem variables
3395 * a'*x' + b'*y' == c'. If x' == y', this leads to the detection of redundancy if a' == -b' and c' == 0,
3396 * of infeasibility, if a' == -b' and c' != 0, or to a variable fixing x' == c'/(a'+b') (and possible
3398 * In the second step, the variable to be aggregated is chosen among x' and y', prefering a less strict variable
3399 * type as aggregation variable (i.e. continuous variables are preferred over implicit integers, implicit integers
3400 * over integers, and integers over binaries). If none of the variables is continuous, it is tried to find an integer
3401 * aggregation (i.e. integral coefficients a'' and b'', such that a''*x' + b''*y' == c''). This can lead to
3402 * the detection of infeasibility (e.g. if c'' is fractional), or to a rejection of the aggregation (denoted by
3403 * aggregated == FALSE), if the resulting integer coefficients are too large and thus numerically instable.
3408 * - aggregated: the aggregation was successfully performed (the variables were not aggregated before)
3410 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
3428/** From a given equality a*x + b*y == c, aggregates one of the variables and removes it from the set of
3429 * active problem variables. This changes the vars array returned from SCIPgetVars() and SCIPgetVarsData(),
3430 * and also renders the arrays returned from the SCIPvarGetImpl...() methods for the two variables invalid.
3431 * In the first step, the equality is transformed into an equality with active problem variables
3432 * a'*x' + b'*y' == c'. If x' == y', this leads to the detection of redundancy if a' == -b' and c' == 0,
3433 * of infeasibility, if a' == -b' and c' != 0, or to a variable fixing x' == c'/(a'+b') (and possible
3435 * In the second step, the variable to be aggregated is chosen among x' and y', prefering a less strict variable
3436 * type as aggregation variable (i.e. continuous variables are preferred over implicit integers, implicit integers
3437 * over integers, and integers over binaries). If none of the variables is continuous, it is tried to find an integer
3438 * aggregation (i.e. integral coefficients a'' and b'', such that a''*x' + b''*y' == c''). This can lead to
3439 * the detection of infeasibility (e.g. if c'' is fractional), or to a rejection of the aggregation (denoted by
3440 * aggregated == FALSE), if the resulting integer coefficients are too large and thus numerically instable.
3445 * - aggregated: the aggregation was successfully performed (the variables were not aggregated before)
3447 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
3465/** converts variable into multi-aggregated variable; this changes the variable array returned from
3468 * @warning The integrality condition is not checked anymore on the multi-aggregated variable. You must not
3469 * multi-aggregate an integer variable without being sure, that integrality on the aggregation variables
3474 * - aggregated: the aggregation was successfully performed (the variables were not aggregated before)
3476 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
3493/** converts variable into exact multi-aggregated variable; this changes the variable array returned from
3496 * @warning The integrality condition is not checked anymore on the multi-aggregated variable. You must not
3497 * multi-aggregate an integer variable without being sure, that integrality on the aggregation variables
3502 * - aggregated: the aggregation was successfully performed (the variables were not aggregated before)
3504 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
3515 SCIP_RATIONAL** scalars, /**< multipliers a_i in aggregation x = a_1*y_1 + ... + a_n*y_n + c */
3516 SCIP_RATIONAL* constant, /**< constant shift c in aggregation x = a_1*y_1 + ... + a_n*y_n + c */
3549 * Checks whether multiplying the bounds on the coefficient with which the variable appears in aggregations
3550 * (SCIPvarGetMinAggrCoef(), SCIPvarGetMaxAggrCoef()) by the given scalar would exceed acceptable values
3564 * @note A reduction is called strong dual, if it may discard feasible/optimal solutions, but leaves at least one
3565 * optimal solution intact. Often such reductions are based on analyzing the objective function and variable
3575 * @note A reduction is called weak dual, if it may discard feasible solutions, but leaves at all optimal solutions
3576 * intact. Often such reductions are based on analyzing the objective function, reduced costs, and/or dual LPs.
3585 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
3597 * @note There exists no "unmark" method since it has to be ensured that if a plugin requires that a variable is not
3608 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
3620 * @note There exists no "unmark" method since it has to be ensured that if a plugin requires that a variable is not
3659/** updates the pseudo costs of the given variable and the global pseudo costs after a change of "solvaldelta" in the
3660 * variable's solution value and resulting change of "objdelta" in the in the LP's objective value;
3663 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
3679/** updates the ancestor pseudo costs of the given variable and the global ancestor pseudo costs after a change of "solvaldelta" in the
3680 * variable's solution value and resulting change of "objdelta" in the in the LP's objective value;
3683 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
3719/** gets the variable's ancestral pseudo cost value for the given change of the variable's LP value
3721 * @return the variable's ancestral pseudo cost value for the given change of the variable's LP value
3803/** gets the variable's (possible fractional) number of pseudo cost updates for the given direction
3805 * @return the variable's (possible fractional) number of pseudo cost updates for the given direction
3823/** gets the variable's (possible fractional) number of pseudo cost updates for the given direction,
3826 * @return the variable's (possible fractional) number of pseudo cost updates for the given direction,
3845/** gets the variable's (possible fractional) number of ancestor pseudo cost updates for the given direction,
3848 * @return the variable's (possible fractional) number of ancestor pseudo cost updates for the given direction,
3867/** get pseudo cost variance of the variable, either for entire solve or only for current branch and bound run
3888/** calculates a confidence bound for this variable under the assumption of normally distributed pseudo costs
3890 * The confidence bound \f$ \theta \geq 0\f$ denotes the interval borders \f$ [X - \theta, \ X + \theta]\f$, which contains
3891 * the true pseudo costs of the variable, i.e., the expected value of the normal distribution, with a probability
3905/** check if variable pseudo-costs have a significant difference in location. The significance depends on
3906 * the choice of \p clevel and on the kind of tested hypothesis. The one-sided hypothesis, which
3910 * This method is applied best if variable x has a better pseudo-cost score than y. The method hypothesizes that y were actually
3911 * better than x (despite the current information), meaning that y can be expected to yield branching
3912 * decisions as least as good as x in the long run. If the method returns TRUE, the current history information is
3913 * sufficient to safely rely on the alternative hypothesis that x yields indeed a better branching score (on average)
3918 * @note set \p onesided to FALSE if you are not sure which variable is better. The hypothesis tested then reads
3935/** tests at a given confidence level whether the variable pseudo-costs only have a small probability to
3936 * exceed a \p threshold. This is useful to determine if past observations provide enough evidence
3937 * to skip an expensive strong-branching step if there is already a candidate that has been proven to yield an improvement
3940 * @note use \p clevel to adjust the level of confidence. For SCIP_CONFIDENCELEVEL_MIN, the method returns TRUE if
3943 * @see SCIP_Confidencelevel for a list of available levels. The used probability limits refer to the one-sided levels
3946 * @return TRUE if the variable pseudo-cost probabilistic model is likely to be smaller than \p threshold
3959/** check if the current pseudo cost relative error in a direction violates the given threshold. The Relative
4194/** returns the average number of inferences found after branching on the variable in given direction;
4195 * if branching on the variable in the given direction was yet evaluated, the average number of inferences
4198 * @return the average number of inferences found after branching on the variable in given direction
4216/** returns the average number of inferences found after branching on the variable in given direction in the current run;
4217 * if branching on the variable in the given direction was yet evaluated, the average number of inferences
4220 * @return the average number of inferences found after branching on the variable in given direction in the current run
4257/** returns the variable's average inference score value only using inferences of the current run
4259 * @return the variable's average inference score value only using inferences of the current run
4276/** initializes the upwards and downwards pseudocosts, conflict scores, conflict lengths, inference scores, cutoff scores
4279 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
4295 SCIP_Real downpscost, /**< value to which pseudocosts for downwards branching should be initialized */
4296 SCIP_Real uppscost, /**< value to which pseudocosts for upwards branching should be initialized */
4297 SCIP_Real downvsids, /**< value to which VSIDS score for downwards branching should be initialized */
4298 SCIP_Real upvsids, /**< value to which VSIDS score for upwards branching should be initialized */
4299 SCIP_Real downconflen, /**< value to which conflict length score for downwards branching should be initialized */
4300 SCIP_Real upconflen, /**< value to which conflict length score for upwards branching should be initialized */
4301 SCIP_Real downinfer, /**< value to which inference counter for downwards branching should be initialized */
4302 SCIP_Real upinfer, /**< value to which inference counter for upwards branching should be initialized */
4303 SCIP_Real downcutoff, /**< value to which cutoff counter for downwards branching should be initialized */
4304 SCIP_Real upcutoff /**< value to which cutoff counter for upwards branching should be initialized */
4307/** initializes the upwards and downwards conflict scores, conflict lengths, inference scores, cutoff scores of a
4310 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
4327 SCIP_Real downvsids, /**< value to which VSIDS score for downwards branching should be initialized */
4328 SCIP_Real upvsids, /**< value to which VSIDS score for upwards branching should be initialized */
4329 SCIP_Real downconflen, /**< value to which conflict length score for downwards branching should be initialized */
4330 SCIP_Real upconflen, /**< value to which conflict length score for upwards branching should be initialized */
4331 SCIP_Real downinfer, /**< value to which inference counter for downwards branching should be initialized */
4332 SCIP_Real upinfer, /**< value to which inference counter for upwards branching should be initialized */
4333 SCIP_Real downcutoff, /**< value to which cutoff counter for downwards branching should be initialized */
4334 SCIP_Real upcutoff /**< value to which cutoff counter for upwards branching should be initialized */
4337/** returns the average number of cutoffs found after branching on the variable in given direction;
4338 * if branching on the variable in the given direction was yet evaluated, the average number of cutoffs
4341 * @return the average number of cutoffs found after branching on the variable in given direction
4359/** returns the average number of cutoffs found after branching on the variable in given direction in the current run;
4360 * if branching on the variable in the given direction was yet evaluated, the average number of cutoffs
4363 * @return the average number of cutoffs found after branching on the variable in given direction in the current run
4419/** returns the variable's average inference/cutoff score value, weighting the cutoffs of the variable with the given
4440/** returns the variable's average inference/cutoff score value, weighting the cutoffs of the variable with the given
4443 * @return the variable's average inference/cutoff score value, only using inferences and cutoffs of the current run
4463 * @return the variable's average GMI efficacy score value (for when it was fractional and basic in the LP)
4482 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
4503 * @return the variable's last GMI efficacy score value (for when it was fractional and basic in the LP)
4522 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
4543 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
4571 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
4590 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
4606 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
4624 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
4653/** Transforms a given linear sum of variables, that is a_1*x_1 + ... + a_n*x_n + c into a corresponding linear sum of
4656 * If the number of needed active variables is greater than the available slots in the variable array, nothing happens
4657 * except that the required size is stored in the corresponding variable (requiredsize). Otherwise, the active variable
4660 * The reason for this approach is that we cannot reallocate memory, since we do not know how the memory has been
4663 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
4678 * @note The resulting linear sum is stored into the given variable array, scalar array, and constant. That means the
4681 * @note That method can be used to convert a single variables into variable space of active variables. Therefore call
4690 SCIP_RATIONAL** scalars, /**< scalars a_1, ..., a_n in linear sum which will be overwritten to the
4698 SCIP_RATIONAL* constant, /**< pointer to constant c in linear sum a_1*x_1 + ... + a_n*x_n + c which
4703 SCIP_Bool mergemultiples /**< should multiple occurrences of a var be replaced by a single coeff? */
common defines and data types used in all packages of SCIP
SCIP_RETCODE SCIPgetVarStrongbranchFrac(SCIP *scip, SCIP_VAR *var, int itlim, SCIP_Bool idempotent, 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)
Definition: scip_var.c:3664
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)
Definition: scip_var.c:12009
SCIP_Real SCIPgetVarAncPseudocostCountCurrentRun(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
Definition: scip_var.c:11378
SCIP_RETCODE SCIPtightenVarLb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
Definition: scip_var.c:6401
SCIP_Real SCIPgetVarBdAtIndex(SCIP *scip, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
Definition: scip_var.c:3008
SCIP_RETCODE SCIPinitVarValueBranchStats(SCIP *scip, SCIP_VAR *var, SCIP_Real value, SCIP_Real downvsids, SCIP_Real upvsids, SCIP_Real downconflen, SCIP_Real upconflen, SCIP_Real downinfer, SCIP_Real upinfer, SCIP_Real downcutoff, SCIP_Real upcutoff)
Definition: scip_var.c:12080
SCIP_RETCODE SCIPaddVarLocks(SCIP *scip, SCIP_VAR *var, int nlocksdown, int nlocksup)
Definition: scip_var.c:5176
SCIP_Real SCIPgetVarMultaggrLbGlobal(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:8506
SCIP_Bool SCIPpscostThresholdProbabilityTest(SCIP *scip, SCIP_VAR *var, SCIP_Real frac, SCIP_Real threshold, SCIP_BRANCHDIR dir, SCIP_CONFIDENCELEVEL clevel)
Definition: scip_var.c:11487
SCIP_RETCODE SCIPlockVarCons(SCIP *scip, SCIP_VAR *var, SCIP_CONS *cons, SCIP_Bool lockdown, SCIP_Bool lockup)
Definition: scip_var.c:5210
SCIP_RETCODE SCIPremoveVarFromGlobalStructures(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:9796
SCIP_RETCODE SCIPtightenVarUbExact(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *newbound, SCIP_Bool *infeasible, SCIP_Bool *tightened)
Definition: scip_var.c:6768
SCIP_Bool SCIPgetVarWasFixedAtIndex(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
Definition: scip_var.c:3026
SCIP_RETCODE SCIPincVarGMISumScore(SCIP *scip, SCIP_VAR *var, SCIP_Real gmieff)
Definition: scip_var.c:12375
SCIP_RETCODE SCIPinferVarFixProp(SCIP *scip, SCIP_VAR *var, SCIP_Real fixedval, SCIP_PROP *inferprop, int inferinfo, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
Definition: scip_var.c:7515
SCIP_RETCODE SCIPchgVarUbExact(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *newbound)
Definition: scip_var.c:5964
SCIP_Real SCIPgetVarMultaggrLbLocal(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:8536
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)
Definition: scip_var.c:7699
SCIP_RETCODE SCIPaddClique(SCIP *scip, SCIP_VAR **vars, SCIP_Bool *values, int nvars, SCIP_Bool isequation, SCIP_Bool *infeasible, int *nbdchgs)
Definition: scip_var.c:8882
SCIP_RETCODE SCIPsetRelaxSolVal(SCIP *scip, SCIP_RELAX *relax, SCIP_VAR *var, SCIP_Real val)
Definition: scip_var.c:3158
SCIP_RETCODE SCIPtightenVarUbGlobal(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
Definition: scip_var.c:8257
SCIP_Real SCIPgetVarAvgInferenceScoreCurrentRun(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:11976
SCIP_RETCODE SCIPgetVarStrongbranchInt(SCIP *scip, SCIP_VAR *var, int itlim, SCIP_Bool idempotent, 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)
Definition: scip_var.c:4478
SCIP_Real SCIPgetVarPseudocostCountCurrentRun(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
Definition: scip_var.c:11350
SCIP_Real SCIPgetVarAvgInferenceScore(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:11945
SCIP_RETCODE SCIPscaleVarBranchFactor(SCIP *scip, SCIP_VAR *var, SCIP_Real scale)
Definition: scip_var.c:9858
SCIP_RETCODE SCIPchgVarLb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
Definition: scip_var.c:5697
SCIP_Real SCIPgetVarMultaggrUbGlobal(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:8521
SCIP_RETCODE SCIPgetTransformedVars(SCIP *scip, int nvars, SCIP_VAR **vars, SCIP_VAR **transvars)
Definition: scip_var.c:2119
SCIP_Real SCIPgetVarPseudocostCount(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
Definition: scip_var.c:11322
SCIP_Real SCIPadjustedVarLbExactFloat(SCIP *scip, SCIP_VAR *var, SCIP_Real lb)
Definition: scip_var.c:5602
SCIP_Real SCIPgetVarPseudocostCurrentRun(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
Definition: scip_var.c:11296
SCIP_RETCODE SCIPwriteCliqueGraph(SCIP *scip, const char *fname, SCIP_Bool writenodeweights)
Definition: scip_var.c:9647
SCIP_RETCODE SCIPchgVarName(SCIP *scip, SCIP_VAR *var, const char *name)
Definition: scip_var.c:1938
SCIP_RETCODE SCIPcalcNegatedCliquePartition(SCIP *scip, SCIP_VAR **vars, int nvars, int **probtoidxmap, int *probtoidxmapsize, int *cliquepartition, int *ncliques)
Definition: scip_var.c:9410
SCIP_Real SCIPgetVarMultaggrUbLocal(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:8551
SCIP_RETCODE SCIPaggregateVarsExact(SCIP *scip, SCIP_VAR *varx, SCIP_VAR *vary, SCIP_RATIONAL *scalarx, SCIP_RATIONAL *scalary, SCIP_RATIONAL *rhs, SCIP_Bool *infeasible, SCIP_Bool *redundant, SCIP_Bool *aggregated)
Definition: scip_var.c:10692
SCIP_RETCODE SCIPupdateVarBranchPriority(SCIP *scip, SCIP_VAR *var, int branchpriority)
Definition: scip_var.c:9958
SCIP_Real SCIPgetVarAvgConflictlength(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
Definition: scip_var.c:11837
SCIP_Bool SCIPisVarPscostRelerrorReliable(SCIP *scip, SCIP_VAR *var, SCIP_Real threshold, SCIP_CONFIDENCELEVEL clevel)
Definition: scip_var.c:11506
SCIP_RETCODE SCIPgetBinvarRepresentatives(SCIP *scip, int nvars, SCIP_VAR **vars, SCIP_VAR **repvars, SCIP_Bool *negated)
Definition: scip_var.c:2283
SCIP_Bool SCIPdoNotMultaggrVar(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:10942
SCIP_Real SCIPgetVarPseudocost(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
Definition: scip_var.c:11268
SCIP_RETCODE SCIPparseVarsList(SCIP *scip, const char *str, SCIP_VAR **vars, int *nvars, int varssize, int *requiredsize, char **endptr, char delimiter, SCIP_Bool *success)
Definition: scip_var.c:805
SCIP_Real SCIPgetVarAvgCutoffScoreCurrentRun(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:12230
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)
Definition: scip_var.c:10550
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)
Definition: scip_var.c:7069
SCIP_RETCODE SCIPparseVarsPolynomialExact(SCIP *scip, char *str, SCIP_VAR ****monomialvars, SCIP_RATIONAL ***monomialcoefs, int *nmonomials, char **endptr, SCIP_Bool *success)
Definition: scip_var.c:1453
SCIP_RETCODE SCIPaddVarExactData(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *lb, SCIP_RATIONAL *ub, SCIP_RATIONAL *obj)
Definition: scip_var.c:299
SCIP_RETCODE SCIPchgVarUb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
Definition: scip_var.c:5875
SCIP_RETCODE SCIPchgVarUbNode(SCIP *scip, SCIP_NODE *node, SCIP_VAR *var, SCIP_Real newbound)
Definition: scip_var.c:6088
SCIP_Real SCIPgetVarAvgInferencesCurrentRun(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
Definition: scip_var.c:11919
SCIP_RETCODE SCIPchgVarImplType(SCIP *scip, SCIP_VAR *var, SCIP_IMPLINTTYPE impltype, SCIP_Bool *infeasible)
Definition: scip_var.c:10218
SCIP_RETCODE SCIPtightenVarUb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
Definition: scip_var.c:6651
SCIP_RETCODE SCIPparseVarName(SCIP *scip, const char *str, SCIP_VAR **var, char **endptr)
Definition: scip_var.c:728
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)
Definition: scip_var.c:669
SCIP_RETCODE SCIPgetProbvarSum(SCIP *scip, SCIP_VAR **var, SCIP_Real *scalar, SCIP_Real *constant)
Definition: scip_var.c:2499
SCIP_RETCODE SCIPchgVarBranchDirection(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR branchdirection)
Definition: scip_var.c:10022
SCIP_RETCODE SCIPaddVarVub(SCIP *scip, SCIP_VAR *var, SCIP_VAR *vubvar, SCIP_Real vubcoef, SCIP_Real vubconstant, SCIP_Bool *infeasible, int *nbdchgs)
Definition: scip_var.c:8680
SCIP_RETCODE SCIPaddVarLocksType(SCIP *scip, SCIP_VAR *var, SCIP_LOCKTYPE locktype, int nlocksdown, int nlocksup)
Definition: scip_var.c:5118
SCIP_RETCODE SCIPchgVarLbGlobalExact(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *newbound)
Definition: scip_var.c:5492
SCIP_RETCODE SCIPaddVarVlb(SCIP *scip, SCIP_VAR *var, SCIP_VAR *vlbvar, SCIP_Real vlbcoef, SCIP_Real vlbconstant, SCIP_Bool *infeasible, int *nbdchgs)
Definition: scip_var.c:8621
SCIP_RETCODE SCIPchgVarBranchPriority(SCIP *scip, SCIP_VAR *var, int branchpriority)
Definition: scip_var.c:9917
SCIP_RETCODE SCIPunlockVarCons(SCIP *scip, SCIP_VAR *var, SCIP_CONS *cons, SCIP_Bool lockdown, SCIP_Bool lockup)
Definition: scip_var.c:5296
SCIP_RETCODE SCIPchgVarUbGlobalExact(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *newbound)
Definition: scip_var.c:5467
SCIP_RETCODE SCIPinferVarLbConsExact(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *newbound, SCIP_CONS *infercons, int inferinfo, SCIP_Bool *infeasible, SCIP_Bool *tightened)
Definition: scip_var.c:7296
SCIP_Real SCIPgetVarFarkasCoef(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:2698
SCIP_RETCODE SCIPgetVarClosestVub(SCIP *scip, SCIP_VAR *var, SCIP_SOL *sol, SCIP_Real *closestvub, int *closestvubidx)
Definition: scip_var.c:8592
SCIP_Real SCIPgetVarAvgCutoffsCurrentRun(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
Definition: scip_var.c:12173
SCIP_RETCODE SCIPcreateVarImpl(SCIP *scip, SCIP_VAR **var, const char *name, SCIP_Real lb, SCIP_Real ub, SCIP_Real obj, SCIP_VARTYPE vartype, SCIP_IMPLINTTYPE impltype, 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)
Definition: scip_var.c:225
SCIP_RETCODE SCIPchgVarLbLazy(SCIP *scip, SCIP_VAR *var, SCIP_Real lazylb)
Definition: scip_var.c:6321
SCIP_Real SCIPgetVarUbAtIndex(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
Definition: scip_var.c:2872
SCIP_Longint SCIPgetVarStrongbranchNode(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:5019
SCIP_RETCODE SCIPtransformVars(SCIP *scip, int nvars, SCIP_VAR **vars, SCIP_VAR **transvars)
Definition: scip_var.c:2028
SCIP_RETCODE SCIPcalcCliquePartition(SCIP *scip, SCIP_VAR **vars, int nvars, int **probtoidxmap, int *probtoidxmapsize, int *cliquepartition, int *ncliques)
Definition: scip_var.c:9330
SCIP_Real SCIPgetVarDPseudocostScore(SCIP *scip, SCIP_VAR *var, SCIP_Real solval, SCIP_Real discountfac)
Definition: scip_var.c:11570
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)
Definition: scip_var.c:10834
void SCIPfreeParseVarsPolynomialData(SCIP *scip, SCIP_VAR ****monomialvars, SCIP_Real ***monomialexps, SCIP_Real **monomialcoefs, int **monomialnvars, int nmonomials)
Definition: scip_var.c:1755
SCIP_LPSOLSTAT SCIPgetLastStrongbranchLPSolStat(SCIP *scip, SCIP_BRANCHDIR branchdir)
Definition: scip_var.c:4847
SCIP_RETCODE SCIPaddVarBranchFactor(SCIP *scip, SCIP_VAR *var, SCIP_Real addfactor)
Definition: scip_var.c:9886
SCIP_RETCODE SCIPcleanupCliques(SCIP *scip, SCIP_Bool *infeasible)
Definition: scip_var.c:9469
SCIP_Real SCIPadjustedVarUb(SCIP *scip, SCIP_VAR *var, SCIP_Real ub)
Definition: scip_var.c:5634
SCIP_Longint SCIPgetVarStrongbranchLPAge(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:5053
SCIP_RETCODE SCIPchgVarLbGlobal(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
Definition: scip_var.c:6141
SCIP_RETCODE SCIPgetProbvarLinearSumExact(SCIP *scip, SCIP_VAR **vars, SCIP_RATIONAL **scalars, int *nvars, int varssize, SCIP_RATIONAL *constant, int *requiredsize, SCIP_Bool mergemultiples)
Definition: scip_var.c:2443
SCIP_RETCODE SCIPmarkRelaxSolValid(SCIP *scip, SCIP_RELAX *relax, SCIP_Bool includeslp)
Definition: scip_var.c:3301
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)
Definition: scip_var.c:4632
SCIP_RETCODE SCIPsetVarStrongbranchData(SCIP *scip, SCIP_VAR *var, SCIP_Real lpobjval, SCIP_Real primsol, SCIP_Real down, SCIP_Real up, SCIP_Bool downvalid, SCIP_Bool upvalid, SCIP_Longint iter, int itlim)
Definition: scip_var.c:4903
SCIP_Real SCIPgetVarPseudocostVal(SCIP *scip, SCIP_VAR *var, SCIP_Real solvaldelta)
Definition: scip_var.c:11188
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)
Definition: scip_var.c:899
SCIP_Real SCIPgetVarConflictlengthScore(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:11775
SCIP_Bool SCIPsignificantVarPscostDifference(SCIP *scip, SCIP_VAR *varx, SCIP_Real fracx, SCIP_VAR *vary, SCIP_Real fracy, SCIP_BRANCHDIR dir, SCIP_CONFIDENCELEVEL clevel, SCIP_Bool onesided)
Definition: scip_var.c:11457
SCIP_RETCODE SCIPgetProbvarLinearSum(SCIP *scip, SCIP_VAR **vars, SCIP_Real *scalars, int *nvars, int varssize, SCIP_Real *constant, int *requiredsize)
Definition: scip_var.c:2378
SCIP_Real SCIPgetRelaxSolVal(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:3347
SCIP_RETCODE SCIPgetVarStrongbranchWithPropagation(SCIP *scip, SCIP_VAR *var, SCIP_Real solval, SCIP_Real lpobjval, int itlim, int maxproprounds, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, SCIP_Longint *ndomredsdown, SCIP_Longint *ndomredsup, SCIP_Bool *downinf, SCIP_Bool *upinf, SCIP_Bool *downconflict, SCIP_Bool *upconflict, SCIP_Bool *lperror, SCIP_Real *newlbs, SCIP_Real *newubs)
Definition: scip_var.c:4138
SCIP_Real SCIPadjustedVarLb(SCIP *scip, SCIP_VAR *var, SCIP_Real lb)
Definition: scip_var.c:5570
SCIP_Real SCIPgetVarAvgCutoffs(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
Definition: scip_var.c:12145
SCIP_Real SCIPgetVarAncPseudocostVal(SCIP *scip, SCIP_VAR *var, SCIP_Real solvaldelta)
Definition: scip_var.c:11214
SCIP_RETCODE SCIPgetVarClosestVlb(SCIP *scip, SCIP_VAR *var, SCIP_SOL *sol, SCIP_Real *closestvlb, int *closestvlbidx)
Definition: scip_var.c:8569
SCIP_RETCODE SCIPparseVarsLinearsumExact(SCIP *scip, char *str, SCIP_VAR **vars, SCIP_RATIONAL **vals, int *nvars, int varssize, int *requiredsize, char **endptr, SCIP_Bool *success)
Definition: scip_var.c:1007
SCIP_RETCODE SCIPchgVarType(SCIP *scip, SCIP_VAR *var, SCIP_VARTYPE vartype, SCIP_Bool *infeasible)
Definition: scip_var.c:10113
SCIP_RETCODE SCIPflattenVarAggregationGraph(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:2332
SCIP_Real SCIPcomputeVarLbGlobal(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:8375
SCIP_RETCODE SCIPgetNegatedVar(SCIP *scip, SCIP_VAR *var, SCIP_VAR **negvar)
Definition: scip_var.c:2166
SCIP_Real SCIPgetVarPseudocostScoreCurrentRun(SCIP *scip, SCIP_VAR *var, SCIP_Real solval)
Definition: scip_var.c:11613
SCIP_RETCODE SCIPinferVarUbConsExact(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *newbound, SCIP_CONS *infercons, int inferinfo, SCIP_Bool *infeasible, SCIP_Bool *tightened)
Definition: scip_var.c:7174
SCIP_Bool SCIPhaveVarsCommonClique(SCIP *scip, SCIP_VAR *var1, SCIP_Bool value1, SCIP_VAR *var2, SCIP_Bool value2, SCIP_Bool regardimplics)
Definition: scip_var.c:9596
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)
Definition: scip_var.c:8740
SCIP_RETCODE SCIPsetRelaxSolVals(SCIP *scip, SCIP_RELAX *relax, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Bool includeslp)
Definition: scip_var.c:3191
SCIP_Real SCIPcalculatePscostConfidenceBound(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir, SCIP_Bool onlycurrentrun, SCIP_CONFIDENCELEVEL clevel)
Definition: scip_var.c:11426
SCIP_RETCODE SCIPchgVarUbGlobal(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
Definition: scip_var.c:6230
SCIP_Real SCIPcomputeVarLbLocal(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:8417
SCIP_RETCODE SCIPwriteVarsPolynomial(SCIP *scip, FILE *file, SCIP_VAR ***monomialvars, SCIP_Real **monomialexps, SCIP_Real *monomialcoefs, int *monomialnvars, int nmonomials, SCIP_Bool type)
Definition: scip_var.c:599
SCIP_Real SCIPgetVarPseudocostValCurrentRun(SCIP *scip, SCIP_VAR *var, SCIP_Real solvaldelta)
Definition: scip_var.c:11242
SCIP_RETCODE SCIPupdateVarPseudocost(SCIP *scip, SCIP_VAR *var, SCIP_Real solvaldelta, SCIP_Real objdelta, SCIP_Real weight)
Definition: scip_var.c:11122
SCIP_Real SCIPgetVarAvgGMIScore(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:12349
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)
Definition: scip_var.c:120
SCIP_Real SCIPadjustedVarUbExactFloat(SCIP *scip, SCIP_VAR *var, SCIP_Real ub)
Definition: scip_var.c:5666
SCIP_RETCODE SCIPaddVarBranchPriority(SCIP *scip, SCIP_VAR *var, int addpriority)
Definition: scip_var.c:9991
SCIP_RETCODE SCIPtransformVar(SCIP *scip, SCIP_VAR *var, SCIP_VAR **transvar)
Definition: scip_var.c:1988
SCIP_RETCODE SCIPmarkDoNotMultaggrVar(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:11057
SCIP_RETCODE SCIPfixVar(SCIP *scip, SCIP_VAR *var, SCIP_Real fixedval, SCIP_Bool *infeasible, SCIP_Bool *fixed)
Definition: scip_var.c:10318
SCIP_Real SCIPgetVarAvgInferenceCutoffScoreCurrentRun(SCIP *scip, SCIP_VAR *var, SCIP_Real cutoffweight)
Definition: scip_var.c:12306
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)
Definition: scip_var.c:6964
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)
Definition: scip_var.c:4743
SCIP_Real SCIPgetVarLbAtIndex(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
Definition: scip_var.c:2736
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)
Definition: scip_var.c:1100
SCIP_Real SCIPgetVarLastGMIScore(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:12403
SCIP_Real SCIPgetVarConflictScore(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:11713
SCIP_RETCODE SCIPprintVar(SCIP *scip, SCIP_VAR *var, FILE *file)
Definition: scip_var.c:12465
SCIP_Real SCIPgetVarAvgCutoffScore(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:12199
SCIP_RETCODE SCIPchgVarLbNode(SCIP *scip, SCIP_NODE *node, SCIP_VAR *var, SCIP_Real newbound)
Definition: scip_var.c:6044
SCIP_RETCODE SCIPcreateVarBasic(SCIP *scip, SCIP_VAR **var, const char *name, SCIP_Real lb, SCIP_Real ub, SCIP_Real obj, SCIP_VARTYPE vartype)
Definition: scip_var.c:184
SCIP_RETCODE SCIPsetVarLastGMIScore(SCIP *scip, SCIP_VAR *var, SCIP_Real gmieff)
Definition: scip_var.c:12429
SCIP_RETCODE SCIPchgVarUbLazy(SCIP *scip, SCIP_VAR *var, SCIP_Real lazyub)
Definition: scip_var.c:6362
SCIP_RETCODE SCIPinferBinvarCons(SCIP *scip, SCIP_VAR *var, SCIP_Bool fixedval, SCIP_CONS *infercons, int inferinfo, SCIP_Bool *infeasible, SCIP_Bool *tightened)
Definition: scip_var.c:7412
SCIP_RETCODE SCIPtryStrongbranchLPSol(SCIP *scip, SCIP_Bool *foundsol, SCIP_Bool *cutoff)
Definition: scip_var.c:4938
SCIP_RETCODE SCIPchgVarObjExact(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *newobj)
Definition: scip_var.c:5420
SCIP_RETCODE SCIPwriteVarName(SCIP *scip, FILE *file, SCIP_VAR *var, SCIP_Bool type)
Definition: scip_var.c:361
SCIP_RETCODE SCIPgetVarSols(SCIP *scip, int nvars, SCIP_VAR **vars, SCIP_Real *vals)
Definition: scip_var.c:3071
SCIP_RETCODE SCIPchgVarObj(SCIP *scip, SCIP_VAR *var, SCIP_Real newobj)
Definition: scip_var.c:5372
SCIP_RETCODE SCIPupdateVarAncPseudocost(SCIP *scip, SCIP_VAR *var, SCIP_Real solvaldelta, SCIP_Real objdelta, SCIP_Real weight)
Definition: scip_var.c:11154
SCIP_RETCODE SCIPchgVarLbExact(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *newbound)
Definition: scip_var.c:5786
SCIP_RETCODE SCIPgetBinvarRepresentative(SCIP *scip, SCIP_VAR *var, SCIP_VAR **repvar, SCIP_Bool *negated)
Definition: scip_var.c:2236
SCIP_Real SCIPgetVarAvgInferenceCutoffScore(SCIP *scip, SCIP_VAR *var, SCIP_Real cutoffweight)
Definition: scip_var.c:12262
SCIP_RETCODE SCIPwriteVarsList(SCIP *scip, FILE *file, SCIP_VAR **vars, int nvars, SCIP_Bool type, char delimiter)
Definition: scip_var.c:423
SCIP_Real SCIPcomputeVarUbGlobal(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:8396
SCIP_Real SCIPcomputeVarUbLocal(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:8462
SCIP_RETCODE SCIPgetActiveVars(SCIP *scip, SCIP_VAR **vars, int *nvars, int varssize, int *requiredsize)
Definition: scip_var.c:2574
int SCIPgetVarNStrongbranchs(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:5085
SCIP_RETCODE SCIPwriteVarsLinearsum(SCIP *scip, FILE *file, SCIP_VAR **vars, SCIP_Real *vals, int nvars, SCIP_Bool type)
Definition: scip_var.c:474
SCIP_RETCODE SCIPgetProbvarSumExact(SCIP *scip, SCIP_VAR **var, SCIP_RATIONAL *scalar, SCIP_RATIONAL *constant)
Definition: scip_var.c:2538
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)
Definition: scip_var.c:4869
SCIP_Real SCIPgetVarVSIDS(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
Definition: scip_var.c:11649
SCIP_Real SCIPgetVarConflictlengthScoreCurrentRun(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:11806
SCIP_Bool SCIPisVarAggrCoefAcceptable(SCIP *scip, SCIP_VAR *var, SCIP_Real scalar)
Definition: scip_var.c:10962
SCIP_Real SCIPgetVarVSIDSCurrentRun(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
Definition: scip_var.c:11681
SCIP_Bool SCIPisStrongbranchDownFirst(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:3399
SCIP_Real SCIPgetVarImplRedcost(SCIP *scip, SCIP_VAR *var, SCIP_Bool varfixing)
Definition: scip_var.c:2653
SCIP_Real SCIPgetVarPseudocostVariance(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir, SCIP_Bool onlycurrentrun)
Definition: scip_var.c:11404
SCIP_RETCODE SCIPgetNegatedVars(SCIP *scip, int nvars, SCIP_VAR **vars, SCIP_VAR **negvars)
Definition: scip_var.c:2199
SCIP_RETCODE SCIPgetTransformedVar(SCIP *scip, SCIP_VAR *var, SCIP_VAR **transvar)
Definition: scip_var.c:2078
SCIP_RETCODE SCIPmultiaggregateVarExact(SCIP *scip, SCIP_VAR *var, int naggvars, SCIP_VAR **aggvars, SCIP_RATIONAL **scalars, SCIP_RATIONAL *constant, SCIP_Bool *infeasible, SCIP_Bool *aggregated)
Definition: scip_var.c:10879
SCIP_Real SCIPgetVarConflictScoreCurrentRun(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:11744
SCIP_RETCODE SCIPtightenVarLbExact(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *newbound, SCIP_Bool *infeasible, SCIP_Bool *tightened)
Definition: scip_var.c:6518
SCIP_Real SCIPgetVarPseudocostScore(SCIP *scip, SCIP_VAR *var, SCIP_Real solval)
Definition: scip_var.c:11531
SCIP_RETCODE SCIPstartStrongbranch(SCIP *scip, SCIP_Bool enablepropagation)
Definition: scip_var.c:3430
SCIP_RETCODE SCIPclearRelaxSolVals(SCIP *scip, SCIP_RELAX *relax)
Definition: scip_var.c:3108
SCIP_RETCODE SCIPmarkDoNotAggrVar(SCIP *scip, SCIP_VAR *var)
Definition: scip_var.c:11024
SCIP_Real SCIPgetVarAvgInferences(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
Definition: scip_var.c:11891
SCIP_RETCODE SCIPinferBinvarProp(SCIP *scip, SCIP_VAR *var, SCIP_Bool fixedval, SCIP_PROP *inferprop, int inferinfo, SCIP_Bool *infeasible, SCIP_Bool *tightened)
Definition: scip_var.c:7809
SCIP_RETCODE SCIPwriteVarsLinearsumExact(SCIP *scip, FILE *file, SCIP_VAR **vars, SCIP_RATIONAL **vals, int nvars, SCIP_Bool type)
Definition: scip_var.c:533
SCIP_RETCODE SCIPinferVarFixCons(SCIP *scip, SCIP_VAR *var, SCIP_Real fixedval, SCIP_CONS *infercons, int inferinfo, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
Definition: scip_var.c:6895
SCIP_Real SCIPgetVarAvgConflictlengthCurrentRun(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir)
Definition: scip_var.c:11863
void SCIPfreeParseVarsPolynomialDataExact(SCIP *scip, SCIP_VAR ****monomialvars, SCIP_RATIONAL ***monomialcoefs, int nmonomials)
Definition: scip_var.c:1806
SCIP_RETCODE SCIPsetRelaxSolValsSol(SCIP *scip, SCIP_RELAX *relax, SCIP_SOL *sol, SCIP_Bool includeslp)
Definition: scip_var.c:3233
SCIP_RETCODE SCIPchgVarBranchFactor(SCIP *scip, SCIP_VAR *var, SCIP_Real branchfactor)
Definition: scip_var.c:9830
SCIP_RETCODE SCIPtightenVarLbGlobal(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
Definition: scip_var.c:8026
SCIP_RETCODE SCIPcomputeVarLbLocalExact(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *result)
Definition: scip_var.c:8438
SCIP_RETCODE SCIPfixVarExact(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *fixedval, SCIP_Bool *infeasible, SCIP_Bool *fixed)
Definition: scip_var.c:10420
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)
Definition: scip_var.c:7584
SCIP_RETCODE SCIPaddVarObj(SCIP *scip, SCIP_VAR *var, SCIP_Real addobj)
Definition: scip_var.c:5519
SCIP_RETCODE SCIPcomputeVarUbLocalExact(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *result)
Definition: scip_var.c:8483
Definition: multiprecision.hpp:66
public methods for problem variables
Definition: struct_var.h:114
Definition: struct_implics.h:76
Definition: struct_cons.h:47
Definition: struct_tree.h:142
Definition: struct_prop.h:47
Definition: struct_rational.h:47
Definition: struct_relax.h:47
Definition: struct_sol.h:74
Definition: struct_var.h:262
Definition: struct_scip.h:72
type definitions for constraints and constraint handlers
type definitions for branching and inference history
type definitions for implications, variable bounds, and cliques
type definitions for LP management
type definitions for miscellaneous datastructures
type definitions for propagators
type definitions for relaxators
result codes for SCIP callback methods
type definitions for return codes for SCIP methods
type definitions for SCIP's main datastructure
type definitions for storing primal CIP solutions
type definitions for branch and bound tree
type definitions for problem variables