type_expr.h
Go to the documentation of this file.
62 SCIP_EXPRCURV_LINEAR = SCIP_EXPRCURV_CONVEX | SCIP_EXPRCURV_CONCAVE/**< linear = convex and concave */
71 SCIP_MONOTONE_CONST = SCIP_MONOTONE_INC | SCIP_MONOTONE_DEC /**< constant = increasing and decreasing */
77 typedef struct SCIP_Expr_OwnerData SCIP_EXPR_OWNERDATA; /**< data stored by expression owner (e.g., conshdlr, nlp) in expression */
83 * That is, the callback is also called on expressions that only store this callback, but no ownerdata.
85 * Note, that the children of the expression have already been released when this callback is called.
114 * This callback is called when evaluating the activity of an expression, e.g., SCIPevalActivity().
115 * The callback should ensure that activity is updated, if required, by calling SCIPsetActivity().
116 * The callback can use the activitytag in the expression to recognize whether it needs to become active.
134 * \param[out] ownerdata buffer to store ownerdata that shall be stored in expression (can be NULL, initialized to NULL)
135 * \param[out] ownerfree buffer to store function to be called to free ownerdata when expression is freed (can be NULL, initialized to NULL)
136 * \param[out] ownerprint buffer to store function to be called to print ownerdata (can be NULL, initialized to NULL)
137 * \param[out] ownerevalactivity buffer to store function to be called to evaluate activity (can be NULL, initialized to NULL)
138 * \param[in] ownercreatedata data that has been passed on by future owner of expression that can be used to create ownerdata
153 * Implements a relaxation scheme for variable bounds and translates between different infinity values.
154 * Returns an interval that contains the current variable bounds, but might be (slightly) larger.
172 * \param[out] targetexpr pointer to store the mapped expression, or NULL if expression shall be copied; initialized to NULL
192 typedef struct SCIP_ExprhdlrData SCIP_EXPRHDLRDATA; /**< expression handler data, e.g., SCIP parameter values */
194 /** the maximal number of estimates an expression handler can return in the INITESTIMATES callback */
273 * when the expression is visited the first time, before each child of the expression is visited,
274 * after each child of the expression has been visited, and when the iterator leaves the expression
323 * That is, the method shall return TRUE in success and requirements on the curvature for each child
324 * which will suffice for this expression to be convex (or concave, or linear, as specified by caller)
326 * It can return "unknown" for a child's curvature if its curvature does not matter (though that's
363 * The method checks whether an expression evaluates always to an integral value in a feasible solution.
455 * The expr should be interpreted as an operator \f$ \text{expr}(c_1, \ldots, c_n) \f$, where \f$ c_1, \ldots, c_n \f$
465 * where \f$ u \f$ is the direction and \f$ D_u c_i \f$ is the directional derivative of the i-th child,
485 * The method computes the total derivative, w.r.t. its children, of the partial derivative of expr w.r.t. childidx.
488 * The expr should be interpreted as an operator \f$ \text{expr}(c_1, \ldots, c_n) \f$, where \f$ c_1, \ldots, c_n \f$
496 * \sum_{i = 1}^n \frac{\partial^2 \text{expr}}{\partial c_i} \partial c_{\text{childidx}} D_u c_i,
499 * where \f$ u \f$ is the direction and \f$ D_u c_i \f$ is the directional derivative of the i-th child,
502 * Thus, if \f$ n = 1 \f$ (i.e. if expr represents an univariate operator), the method should return
554 * The callback shall indicate in branchcand[i] whether branching on the i-th child would improve
555 * the estimator. It can be assumed that branchcand[i] has been initialized to TRUE for all children.
619 * If no simplification is possible, then shall set *simplifiedexpr to expr and capture *simplifiedexpr.
649 * \param[in,out] childrenbounds array to store computed bounds for children, initialized with current activity
650 * \param[out] infeasible buffer to store whether a children bounds were propagated to an empty interval
676 #define SCIP_EXPRITER_ENTEREXPR 1u /**< an expression is visited the first time (before any of its children are visited) */
679 #define SCIP_EXPRITER_LEAVEEXPR 8u /**< an expression is to be left (all of its children have been processed) */
680 #define SCIP_EXPRITER_ALLSTAGES (SCIP_EXPRITER_ENTEREXPR | SCIP_EXPRITER_VISITINGCHILD | SCIP_EXPRITER_VISITEDCHILD | SCIP_EXPRITER_LEAVEEXPR)
703 typedef struct SCIP_ExprIterData SCIP_EXPRITERDATA; /**< expression iterator data of a specific expression */
712 #define SCIP_EXPRPRINT_EXPRSTRING 0x1u /**< print the math. function that the expression represents (e.g., "c0+c1") */
722 #define SCIP_EXPRPRINT_ALL SCIP_EXPRPRINT_EXPRSTRING | SCIP_EXPRPRINT_EXPRHDLR | SCIP_EXPRPRINT_NUSES | SCIP_EXPRPRINT_EVALTAG | SCIP_EXPRPRINT_ACTIVITYTAG | SCIP_EXPRPRINT_OWNER
Definition: type_expr.h:68
Definition: type_expr.h:61
Definition: type_expr.h:698
Definition: struct_expr.h:43
Definition: type_expr.h:62
Definition: type_expr.h:70
Definition: type_expr.h:686
Definition: type_expr.h:71
Definition: type_expr.h:699
interval arithmetics for provable bounds
Definition: type_expr.h:60
Definition: type_expr.h:700
type definitions for SCIP's main datastructure
Definition: type_expr.h:59
type definitions for problem variables
Definition: struct_expr.h:202
Definition: struct_expr.h:104
type definitions for branch and bound tree
type definitions for storing primal CIP solutions
Definition: type_expr.h:69
common defines and data types used in all packages of SCIP