an algebraic expression used for nonlinear constraints and NLPs
Quadratic Expressions | |
void | SCIPexprGetQuadraticData (SCIP_EXPR *expr, SCIP_Real *constant, int *nlinexprs, SCIP_EXPR ***linexprs, SCIP_Real **lincoefs, int *nquadexprs, int *nbilinexprs, SCIP_Real **eigenvalues, SCIP_Real **eigenvectors) |
void | SCIPexprGetQuadraticQuadTerm (SCIP_EXPR *quadexpr, int termidx, SCIP_EXPR **expr, SCIP_Real *lincoef, SCIP_Real *sqrcoef, int *nadjbilin, int **adjbilin, SCIP_EXPR **sqrexpr) |
void | SCIPexprGetQuadraticBilinTerm (SCIP_EXPR *expr, int termidx, SCIP_EXPR **expr1, SCIP_EXPR **expr2, SCIP_Real *coef, int *pos2, SCIP_EXPR **prodexpr) |
SCIP_Bool | SCIPexprAreQuadraticExprsVariables (SCIP_EXPR *expr) |
Core Expression Handlers | |
SCIP_VAR * | SCIPgetVarExprVar (SCIP_EXPR *expr) |
SCIP_Real | SCIPgetValueExprValue (SCIP_EXPR *expr) |
SCIP_Real * | SCIPgetCoefsExprSum (SCIP_EXPR *expr) |
SCIP_Real | SCIPgetConstantExprSum (SCIP_EXPR *expr) |
SCIP_Real | SCIPgetCoefExprProduct (SCIP_EXPR *expr) |
SCIP_Real | SCIPgetExponentExprPow (SCIP_EXPR *expr) |
Expression Iterator | |
More details on the DFS mode: Many algorithms over expression trees need to traverse the tree in depth-first manner and a natural way of implementing these algorithms is by using recursion. In general, a function which traverses the tree in depth-first looks like fun( expr ) enterexpr() continue skip or abort for( child in expr->children ) visitingchild() continue skip or abort fun(child, data, proceed) visitedchild() continue skip or abort leaveexpr() Given that some expressions might be quite deep we provide this functionality in an iterative fashion. Consider an expression (x*y) + z + log(x-y). The corresponding expression graph is [+] / | \ [*] | [log] / \ | | / \ | [-] | | | / \ [x] [y] [z] [x] [y] (where [x] and [y] are actually the same expression). If a pointer to the [+] expression is given as root to this expression, it will iterate the graph in a depth-first manner and stop at various stages.
Thus, for the above expression, the expression are visited in the following order and stages:
The caller can direct the iterator to skip parts of the tree:
| |
SCIP_Bool | SCIPexpriterIsInit (SCIP_EXPRITER *iterator) |
SCIP_RETCODE | SCIPexpriterInit (SCIP_EXPRITER *iterator, SCIP_EXPR *expr, SCIP_EXPRITER_TYPE type, SCIP_Bool allowrevisit) |
SCIP_EXPR * | SCIPexpriterRestartDFS (SCIP_EXPRITER *iterator, SCIP_EXPR *expr) |
void | SCIPexpriterSetStagesDFS (SCIP_EXPRITER *iterator, SCIP_EXPRITER_STAGE stopstages) |
SCIP_EXPR * | SCIPexpriterGetCurrent (SCIP_EXPRITER *iterator) |
SCIP_EXPRITER_STAGE | SCIPexpriterGetStageDFS (SCIP_EXPRITER *iterator) |
int | SCIPexpriterGetChildIdxDFS (SCIP_EXPRITER *iterator) |
SCIP_EXPR * | SCIPexpriterGetChildExprDFS (SCIP_EXPRITER *iterator) |
SCIP_EXPR * | SCIPexpriterGetParentDFS (SCIP_EXPRITER *iterator) |
SCIP_EXPRITER_USERDATA | SCIPexpriterGetCurrentUserData (SCIP_EXPRITER *iterator) |
SCIP_EXPRITER_USERDATA | SCIPexpriterGetChildUserDataDFS (SCIP_EXPRITER *iterator) |
SCIP_EXPRITER_USERDATA | SCIPexpriterGetExprUserData (SCIP_EXPRITER *iterator, SCIP_EXPR *expr) |
void | SCIPexpriterSetCurrentUserData (SCIP_EXPRITER *iterator, SCIP_EXPRITER_USERDATA userdata) |
void | SCIPexpriterSetExprUserData (SCIP_EXPRITER *iterator, SCIP_EXPR *expr, SCIP_EXPRITER_USERDATA userdata) |
void | SCIPexpriterSetChildUserData (SCIP_EXPRITER *iterator, SCIP_EXPRITER_USERDATA userdata) |
SCIP_EXPR * | SCIPexpriterGetNext (SCIP_EXPRITER *iterator) |
SCIP_EXPR * | SCIPexpriterSkipDFS (SCIP_EXPRITER *iterator) |
SCIP_Bool | SCIPexpriterIsEnd (SCIP_EXPRITER *iterator) |
Function Curvature | |
SCIP_EXPRCURV | SCIPexprcurvAdd (SCIP_EXPRCURV curv1, SCIP_EXPRCURV curv2) |
SCIP_EXPRCURV | SCIPexprcurvNegate (SCIP_EXPRCURV curvature) |
SCIP_EXPRCURV | SCIPexprcurvMultiply (SCIP_Real factor, SCIP_EXPRCURV curvature) |
SCIP_EXPRCURV | SCIPexprcurvPower (SCIP_INTERVAL basebounds, SCIP_EXPRCURV basecurv, SCIP_Real exponent) |
SCIP_EXPRCURV | SCIPexprcurvPowerInv (SCIP_INTERVAL basebounds, SCIP_Real exponent, SCIP_EXPRCURV powercurv) |
SCIP_EXPRCURV | SCIPexprcurvMonomial (int nfactors, SCIP_Real *exponents, int *factoridxs, SCIP_EXPRCURV *factorcurv, SCIP_INTERVAL *factorbounds) |
SCIP_Bool | SCIPexprcurvMonomialInv (SCIP_EXPRCURV monomialcurv, int nfactors, SCIP_Real *exponents, SCIP_INTERVAL *factorbounds, SCIP_EXPRCURV *factorcurv) |
const char * | SCIPexprcurvGetName (SCIP_EXPRCURV curv) |
Differentiation | |
Given a function, say, \(f(s(x,y),t(x,y))\) there is a common mnemonic technique to compute its partial derivatives, using a tree diagram. Suppose we want to compute the partial derivative of \(f\) w.r.t. \(x\). Write the function as a tree: f |-----| s t |--| |--| x y x y The weight of an edge between two nodes represents the partial derivative of the parent w.r.t. the children, e.g., f | s is \( \partial_sf \). The weight of a path is the product of the weight of the edges in the path. The partial derivative of \(f\) w.r.t. \(x\) is then the sum of the weights of all paths connecting \(f\) with \(x\): \[ \frac{\partial f}{\partial x} = \partial_s f \cdot \partial_x s + \partial_t f \cdot \partial_x t. \] We follow this method in order to compute the gradient of an expression (root) at a given point (point). Note that an expression is a DAG representation of a function, but there is a 1-1 correspondence between paths in the DAG and path in a tree diagram of a function. Initially, we set For example:
However, when the child is a variable expressions, we actually need to initialize
Note that, to compute this, we only need to know, for each expression, its partial derivatives w.r.t a given child at a point. This is what the callback An equivalent way of interpreting the procedure is that
Computing the Hessian is more complicated since it is the derivative of the gradient, which is a function with more than one output. We compute the Hessian by computing "directions" of the Hessian, that is \(H\cdot u\) for different \(u\). This is easy in general, since it is the gradient of the scalar function \(\nabla f u\), that is, the directional derivative of \(f\) in the direction \(u\): \(D_u f\). This is easily computed via the so called forward mode. Just as Starting with Once we have this information, we compute the gradient of this function, following the same idea as before. We define This way, \begin{eqnarray*} \texttt{expr->bardot} & = & D_u (\partial_{\text{expr}} f) \\ & = & D_u ( \partial_{\text{parent}} f \cdot \partial_{\text{expr}} \text{parent} ) \\ & = & D_u ( \texttt{parent->derivative} \cdot \partial_{\text{expr}} \text{parent} ) \\ & = & \partial_{\text{expr}} \text{parent} \cdot D_u (\texttt{parent->derivative}) + \texttt{parent->derivative} \cdot D_u (\partial_{\text{expr}} \text{parent}) \\ & = & \texttt{parent->bardot} \cdot \partial_{\text{expr}} \text{parent} + \texttt{parent->derivative} \cdot D_u (\partial_{\text{expr}} \text{parent}) \end{eqnarray*} Note that we have computed | |
SCIP_RETCODE | SCIPevalExprGradient (SCIP *scip, SCIP_EXPR *expr, SCIP_SOL *sol, SCIP_Longint soltag) |
SCIP_RETCODE | SCIPevalExprHessianDir (SCIP *scip, SCIP_EXPR *expr, SCIP_SOL *sol, SCIP_Longint soltag, SCIP_SOL *direction) |
Expression Iterator | |
SCIP_RETCODE | SCIPcreateExpriter (SCIP *scip, SCIP_EXPRITER **iterator) |
void | SCIPfreeExpriter (SCIP_EXPRITER **iterator) |
Quadratic Expressions | |
SCIP_RETCODE | SCIPcheckExprQuadratic (SCIP *scip, SCIP_EXPR *expr, SCIP_Bool *isquadratic) |
void | SCIPfreeExprQuadratic (SCIP *scip, SCIP_EXPR *expr) |
SCIP_Real | SCIPevalExprQuadratic (SCIP *scip, SCIP_EXPR *expr, SCIP_SOL *sol) |
SCIP_RETCODE | SCIPprintExprQuadratic (SCIP *scip, SCIP_EXPR *expr) |
SCIP_RETCODE | SCIPcomputeExprQuadraticCurvature (SCIP *scip, SCIP_EXPR *expr, SCIP_EXPRCURV *curv, SCIP_HASHMAP *assumevarfixed, SCIP_Bool storeeigeninfo) |
Monomial Expressions | |
SCIP_RETCODE | SCIPgetExprMonomialData (SCIP *scip, SCIP_EXPR *expr, SCIP_Real *coef, SCIP_Real *exponents, SCIP_EXPR **factors) |
int SCIPexprGetNUses | ( | SCIP_EXPR * | expr | ) |
gets the number of times the expression is currently captured
expr | expression |
Definition at line 3844 of file expr.c.
References assert(), NULL, and SCIP_Expr::nuses.
Referenced by enforceSP12(), SCIPaddExprNonlinear(), and SCIPaddLinearVarNonlinear().
int SCIPexprGetNChildren | ( | SCIP_EXPR * | expr | ) |
gives the number of children of an expression
expr | expression |
Definition at line 3854 of file expr.c.
References assert(), SCIP_Expr::nchildren, and NULL.
Referenced by addSymmetryInformation(), bilinboundGetX(), bilinboundGetY(), bilinearTermsInsertAll(), buildQuadExprMatrix(), checkAndCollectQuadratic(), collectLeafs(), computeEstimatorsTrig(), computeInitialCutsTrig(), constructExpr(), createNlhdlrExprData(), createNlRow(), DECL_CURVCHECK(), DECL_CURVCHECK(), DECL_CURVCHECK(), DECL_CURVCHECK(), detectExpr(), detectMinors(), detectMinors(), detectSocNorm(), detectSocQuadraticComplex(), detectSocQuadraticSimple(), doBfsNext(), doReverseTopologicalNext(), enforceSP11(), enforceSP12(), enforceSP12b(), eval(), evalExprInAux(), exprIsMultivarLinear(), exprIsSemicontinuous(), findUnlockedLinearVar(), forbidNonlinearVariablesMultiaggration(), forwardPropExpr(), getBilinearBinaryTerms(), getBinaryProductExpr(), getBinaryProductExprDo(), getExprSize(), getExprSize(), getFactorizedBinaryQuadraticExpr(), getFeasiblePointsBilinear(), hashExpr(), initBounds(), intevalBilinear(), isBinaryProduct(), isExprPolynomial(), isExprSignomial(), isPackingCons(), nlhdlrExprCreate(), nlhdlrExprGrowChildren(), presolveImplint(), presolveSingleLockedVars(), printRowNl(), printSignomial(), propagateLocks(), readConstraints(), readObjective(), replaceBinaryProducts(), reversePropBilinear(), reversePropQueue(), scaleConsSides(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWFWDIFF(), SCIP_DECL_EXPRCOMPARE(), SCIP_DECL_EXPRCOMPARE(), SCIP_DECL_EXPRCOPYDATA(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPRFWDIFF(), SCIP_DECL_EXPRFWDIFF(), SCIP_DECL_EXPRHASH(), SCIP_DECL_EXPRHASH(), SCIP_DECL_EXPRHASH(), SCIP_DECL_EXPRHASH(), SCIP_DECL_EXPRHASH(), SCIP_DECL_EXPRHASH(), SCIP_DECL_EXPRHASH(), SCIP_DECL_EXPRHASH(), SCIP_DECL_EXPRHASH(), SCIP_DECL_EXPRHASH(), SCIP_DECL_EXPRHASH(), SCIP_DECL_EXPRHASH(), SCIP_DECL_EXPRHASH(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINTEGRALITY(), SCIP_DECL_EXPRINTEGRALITY(), SCIP_DECL_EXPRINTEGRALITY(), SCIP_DECL_EXPRINTEGRALITY(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRESTIMATE(), SCIP_DECL_NLHDLREVALAUX(), SCIP_DECL_NLHDLREVALAUX(), SCIP_DECL_NLHDLRINITSEPA(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIP_DECL_NLHDLRSOLLINEARIZE(), SCIP_DECL_NONLINCONSUPGD(), SCIPaddIneqBilinear(), SCIPappendExprSumExpr(), SCIPcomputeExprCurvature(), SCIPcomputeExprIntegrality(), SCIPexprCheckQuadratic(), SCIPexprGetMonomialData(), SCIPexprintCompile(), SCIPisExprVaridx(), SCIPmultiplyByConstantExprSum(), SCIPmultiplyBySumExprSum(), SCIPpowerExprSum(), SCIPregisterExprUsageNonlinear(), SCIPtightenExprIntervalNonlinear(), simplifyFactor(), simplifyTerm(), transformExpr(), tryAddGadgetBilinearProductSignedPerm(), tryAddGadgetEvenOperator(), tryAddGadgetEvenOperatorSum(), and tryAddGadgetSquaredDifference().
gives the children of an expression (can be NULL if no children)
expr | expression |
Definition at line 3864 of file expr.c.
References assert(), SCIP_Expr::children, and NULL.
Referenced by addSymmetryInformation(), bilinboundGetX(), bilinboundGetY(), bilinearTermsInsertAll(), buildQuadExprMatrix(), checkAndCollectQuadratic(), constructExpr(), createNlhdlrExprData(), createNlRow(), DECL_CURVCHECK(), DECL_CURVCHECK(), DECL_CURVCHECK(), DECL_CURVCHECK(), detectExpr(), detectMinors(), detectMinors(), detectSocNorm(), detectSocQuadraticSimple(), doBfsNext(), doReverseTopologicalNext(), enforceSP11(), enforceSP12(), enforceSP12b(), eval(), evalExprInAux(), exprIsMultivarLinear(), exprIsSemicontinuous(), findUnlockedLinearVar(), forbidNonlinearVariablesMultiaggration(), getBilinearBinaryTerms(), getBinaryProductExpr(), getBinaryProductExprDo(), getExprSize(), getExprSize(), getFactorizedBinaryQuadraticExpr(), getFeasiblePointsBilinear(), hashExpr(), initBounds(), intevalBilinear(), isBinaryProduct(), isExprPolynomial(), isExprSignomial(), isPackingCons(), mergeProductExprlist(), nlhdlrExprGrowChildren(), presolveImplint(), presolveSingleLockedVars(), printRowNl(), printSignomial(), readConstraints(), readObjective(), reversePropBilinear(), reversePropQueue(), scaleConsSides(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWFWDIFF(), SCIP_DECL_EXPRBWFWDIFF(), SCIP_DECL_EXPRBWFWDIFF(), SCIP_DECL_EXPRCOMPARE(), SCIP_DECL_EXPRCOMPARE(), SCIP_DECL_EXPRCOMPARE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPRFWDIFF(), SCIP_DECL_EXPRFWDIFF(), SCIP_DECL_EXPRFWDIFF(), SCIP_DECL_EXPRFWDIFF(), SCIP_DECL_EXPRGETSYMDATA(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINTEGRALITY(), SCIP_DECL_EXPRINTEGRALITY(), SCIP_DECL_EXPRINTEGRALITY(), SCIP_DECL_EXPRINTEGRALITY(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRESTIMATE(), SCIP_DECL_NLHDLRESTIMATE(), SCIP_DECL_NLHDLREVALAUX(), SCIP_DECL_NLHDLREVALAUX(), SCIP_DECL_NLHDLRINITSEPA(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIP_DECL_NLHDLRSOLLINEARIZE(), SCIP_DECL_NONLINCONSUPGD(), SCIPaddIneqBilinear(), SCIPcomputeExprCurvature(), SCIPexprCheckQuadratic(), SCIPexprGetMonomialData(), SCIPexprintCompile(), SCIPmultiplyBySumExprSum(), SCIPpowerExprSum(), simplifyFactor(), simplifyTerm(), transformExpr(), tryAddGadgetBilinearProductSignedPerm(), tryAddGadgetEvenOperator(), tryAddGadgetEvenOperatorSum(), and tryAddGadgetSquaredDifference().
SCIP_EXPRHDLR * SCIPexprGetHdlr | ( | SCIP_EXPR * | expr | ) |
gets the expression handler of an expression
This identifies the type of the expression (sum, variable, ...).
expr | expression |
Definition at line 3877 of file expr.c.
References assert(), SCIP_Expr::exprhdlr, and NULL.
Referenced by addSymmetryInformation(), computeEstimatorsTrig(), computeInitialCutsTrig(), constructExpr(), createAuxVar(), DECL_CURVCHECK(), detectNlhdlr(), enforceExpr(), enforceSP11(), eval(), exprIsNonSmooth(), forwardPropExpr(), hashExpr(), printExpr(), propagateLocks(), reversePropQueue(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWFWDIFF(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRFWDIFF(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRPRINT(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRESTIMATE(), SCIP_DECL_NLHDLRINITSEPA(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIP_DECL_NLHDLRSOLLINEARIZE(), SCIPcallExprEval(), SCIPcallExprEvalFwdiff(), SCIPcomputeExprCurvature(), SCIPcomputeExprIntegrality(), SCIPexprGetSymData(), SCIPexprintCompile(), SCIPexprPrint(), SCIPgetCoefSymData(), SCIPgetIndexExprVaridx(), SCIPgetVarExprVar(), SCIPisExprAbs(), SCIPisExprCos(), SCIPisExprEntropy(), SCIPisExprErf(), SCIPisExprExp(), SCIPisExprLog(), SCIPisExprSignpower(), SCIPisExprSin(), SCIPisExprVaridx(), SCIPsetIndexExprVaridx(), SCIPtightenExprIntervalNonlinear(), tryAddGadgetBilinearProductSignedPerm(), tryAddGadgetEvenOperatorSum(), and tryAddGadgetEvenOperatorVariable().
SCIP_EXPRDATA * SCIPexprGetData | ( | SCIP_EXPR * | expr | ) |
gets the expression data of an expression
expr | expression |
Definition at line 3887 of file expr.c.
References assert(), SCIP_Expr::exprdata, and NULL.
Referenced by SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWFWDIFF(), SCIP_DECL_EXPRBWFWDIFF(), SCIP_DECL_EXPRCOMPARE(), SCIP_DECL_EXPRCOPYDATA(), SCIP_DECL_EXPRCOPYDATA(), SCIP_DECL_EXPRCOPYDATA(), SCIP_DECL_EXPRCOPYDATA(), SCIP_DECL_EXPRCOPYDATA(), SCIP_DECL_EXPRCOPYDATA(), SCIP_DECL_EXPRCOPYDATA(), SCIP_DECL_EXPRCOPYDATA(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPRFREEDATA(), SCIP_DECL_EXPRFREEDATA(), SCIP_DECL_EXPRFREEDATA(), SCIP_DECL_EXPRFREEDATA(), SCIP_DECL_EXPRFREEDATA(), SCIP_DECL_EXPRFWDIFF(), SCIP_DECL_EXPRFWDIFF(), SCIP_DECL_EXPRFWDIFF(), SCIP_DECL_EXPRGETSYMDATA(), SCIP_DECL_EXPRGETSYMDATA(), SCIP_DECL_EXPRHASH(), SCIP_DECL_EXPRHASH(), SCIP_DECL_EXPRHASH(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINTEGRALITY(), SCIP_DECL_EXPRINTEGRALITY(), SCIP_DECL_EXPRINTEGRALITY(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRPRINT(), SCIP_DECL_EXPRPRINT(), SCIP_DECL_EXPRPRINT(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_EXPRREVERSEPROP(), SCIPappendExprSumExpr(), SCIPgetCoefExprProduct(), SCIPgetCoefsExprSum(), SCIPgetConstantExprSum(), SCIPgetExponentExprPow(), SCIPgetIndexExprVaridx(), SCIPgetValueExprValue(), SCIPgetVarExprVar(), SCIPmultiplyByConstantExprSum(), and SCIPsetConstantExprSum().
void SCIPexprSetData | ( | SCIP_EXPR * | expr, |
SCIP_EXPRDATA * | exprdata ) |
sets the expression data of an expression
The pointer to possible old data is overwritten and the freedata-callback is not called before. This function is intended to be used by expression handler only.
expr | expression |
exprdata | expression data to be set (can be NULL) |
Definition at line 3902 of file expr.c.
References assert(), SCIP_Expr::exprdata, SCIP_Expr::exprhdlr, and NULL.
Referenced by SCIP_DECL_EXPRFREEDATA(), SCIP_DECL_EXPRFREEDATA(), SCIP_DECL_EXPRFREEDATA(), SCIP_DECL_EXPRFREEDATA(), SCIP_DECL_EXPRFREEDATA(), SCIP_DECL_EXPRFREEDATA(), SCIP_DECL_EXPRFREEDATA(), SCIP_DECL_EXPRFREEDATA(), SCIP_DECL_EXPRFREEDATA(), and SCIPsetIndexExprVaridx().
SCIP_EXPR_OWNERDATA * SCIPexprGetOwnerData | ( | SCIP_EXPR * | expr | ) |
gets the data that the owner of an expression has stored in an expression
expr | expression |
Definition at line 3915 of file expr.c.
References assert(), NULL, and SCIP_Expr::ownerdata.
Referenced by addExprsViolScore(), analyzeViolation(), canonicalizeConstraints(), catchVarEvent(), collectBranchingCandidates(), createAuxVar(), detectNlhdlr(), detectNlhdlrs(), dropVarEvent(), enforceConstraint(), enforceExpr(), forwardPropExpr(), freeAuxVar(), freeEnfoData(), getExprAbsAuxViolation(), getExprAbsOrigViolation(), initSepa(), isSingleLockedCand(), notifyNlhdlrNewsol(), propagateLocks(), propConss(), propExprDomains(), registerBranchingCandidates(), reversePropQueue(), SCIP_DECL_CONSLOCK(), SCIP_DECL_EVENTEXEC(), SCIPaddExprsViolScoreNonlinear(), SCIPaddExprViolScoreNonlinear(), SCIPgetExprAuxVarNonlinear(), SCIPgetExprBoundsNonlinear(), SCIPgetExprEnfoDataNonlinear(), SCIPgetExprNAuxvarUsesNonlinear(), SCIPgetExprNEnfosNonlinear(), SCIPgetExprNLocksNegNonlinear(), SCIPgetExprNLocksPosNonlinear(), SCIPgetExprNPropUsesActivityNonlinear(), SCIPgetExprNSepaUsesActivityNonlinear(), SCIPgetExprPartialDiffGradientDirNonlinear(), SCIPgetExprPartialDiffNonlinear(), SCIPgetExprViolScoreNonlinear(), SCIPgetNlhdlrExprDataNonlinear(), SCIPmarkExprPropagateNonlinear(), SCIPregisterExprUsageNonlinear(), SCIPsetExprEnfoAuxValueNonlinear(), and SCIPtightenExprIntervalNonlinear().
gives the value from the last evaluation of an expression (or SCIP_INVALID if there was an eval error)
expr | expression |
Definition at line 3928 of file expr.c.
References assert(), SCIP_Expr::evalvalue, and NULL.
Referenced by analyzeViolation(), computeOffValues(), computeViolation(), createAuxVar(), enforceExpr(), estimateConvexSecant(), estimateGradientInner(), generateCut(), getConsRelViolation(), getExprAbsOrigViolation(), notifyNlhdlrNewsol(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWFWDIFF(), SCIP_DECL_EXPRBWFWDIFF(), SCIP_DECL_EXPRBWFWDIFF(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPRFWDIFF(), SCIP_DECL_EXPRFWDIFF(), SCIP_DECL_EXPRFWDIFF(), SCIP_DECL_NLHDLRESTIMATE(), SCIP_DECL_NLHDLREVALAUX(), SCIP_DECL_NLHDLREVALAUX(), SCIP_DECL_VERTEXPOLYFUN(), SCIPexprEvalGradient(), SCIPexprintEval(), SCIPnlrowGetSolActivity(), SCIPnlrowRecalcNLPActivity(), and SCIPnlrowRecalcPseudoActivity().
SCIP_Longint SCIPexprGetEvalTag | ( | SCIP_EXPR * | expr | ) |
gives the evaluation tag from the last evaluation, or 0
expr | expression |
Definition at line 3941 of file expr.c.
References assert(), SCIP_Expr::evaltag, and NULL.
Referenced by notifyNlhdlrNewsol().
returns the derivative stored in an expression (or SCIP_INVALID if there was an evaluation error)
expr | expression |
Definition at line 3954 of file expr.c.
References assert(), SCIP_Expr::derivative, and NULL.
Referenced by computeGradient(), estimateGradientInner(), generateCut(), generateCut(), getConsRelViolation(), SCIPaddNlRowGradientBenderscutOpt(), and SCIPgetExprPartialDiffNonlinear().
gives the value of directional derivative from the last evaluation of a directional derivative of expression (or SCIP_INVALID if there was an error)
expr | expression |
Definition at line 3968 of file expr.c.
References assert(), SCIP_Expr::dot, and NULL.
Referenced by SCIP_DECL_EXPRBWFWDIFF(), SCIP_DECL_EXPRBWFWDIFF(), SCIP_DECL_EXPRBWFWDIFF(), SCIP_DECL_EXPRFWDIFF(), SCIP_DECL_EXPRFWDIFF(), SCIP_DECL_EXPRFWDIFF(), and SCIP_DECL_EXPRFWDIFF().
gives the value of directional derivative from the last evaluation of a directional derivative of derivative of root (or SCIP_INVALID if there was an error)
expr | expression |
Definition at line 3982 of file expr.c.
References assert(), SCIP_Expr::bardot, and NULL.
Referenced by SCIPgetExprPartialDiffGradientDirNonlinear().
SCIP_Longint SCIPexprGetDiffTag | ( | SCIP_EXPR * | expr | ) |
returns the difftag stored in an expression
can be used to check whether partial derivative value is valid
expr | expression |
Definition at line 3997 of file expr.c.
References assert(), SCIP_Expr::difftag, and NULL.
Referenced by estimateGradientInner(), getConsRelViolation(), SCIPgetExprPartialDiffGradientDirNonlinear(), and SCIPgetExprPartialDiffNonlinear().
SCIP_INTERVAL SCIPexprGetActivity | ( | SCIP_EXPR * | expr | ) |
returns the activity that is currently stored for an expression
expr | expression |
Definition at line 4010 of file expr.c.
References SCIP_Expr::activity, assert(), and NULL.
Referenced by analyzeViolation(), createAuxVar(), DECL_CURVCHECK(), DECL_CURVCHECK(), detectSocQuadraticComplex(), detectSocQuadraticSimple(), enforceExpr(), estimateBivariateQuotient(), estimateUnivariateQuotient(), forwardPropExpr(), getFeasiblePointsBilinear(), intevalBilinear(), nlrowCalcActivityBounds(), presolveRedundantConss(), propConss(), propExprDomains(), reversePropagateLinearExpr(), reversePropBilinear(), reversePropQueue(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRESTIMATE(), SCIP_DECL_NLHDLRINITSEPA(), SCIP_DECL_NLHDLRINTEVAL(), SCIP_DECL_NLHDLRINTEVAL(), SCIPgetExprBoundsNonlinear(), SCIPtightenExprIntervalNonlinear(), and tryFillNlhdlrExprDataQuad().
SCIP_Longint SCIPexprGetActivityTag | ( | SCIP_EXPR * | expr | ) |
returns the tag associated with the activity of the expression
It can depend on the owner of the expression how to interpret this tag. SCIPevalExprActivity() compares with stat->domchgcount
.
expr | expression |
Definition at line 4026 of file expr.c.
References SCIP_Expr::activitytag, assert(), and NULL.
Referenced by catchVarEvents(), createAuxVar(), deinitSolve(), forwardPropExpr(), presolveRedundantConss(), SCIP_DECL_EXPR_OWNEREVALACTIVITY(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIPgetExprBoundsNonlinear(), and SCIPtightenExprIntervalNonlinear().
void SCIPexprSetActivity | ( | SCIP_EXPR * | expr, |
SCIP_INTERVAL | activity, | ||
SCIP_Longint | activitytag ) |
set the activity with tag for an expression
expr | expression |
activity | new activity |
activitytag | tag associated with activity |
Definition at line 4036 of file expr.c.
References SCIP_Expr::activity, SCIP_Expr::activitytag, assert(), and NULL.
Referenced by catchVarEvents(), forwardPropExpr(), and SCIP_DECL_EVENTEXEC().
SCIP_EXPRCURV SCIPexprGetCurvature | ( | SCIP_EXPR * | expr | ) |
returns the curvature of an expression
expr | expression |
Definition at line 4052 of file expr.c.
References assert(), SCIP_Expr::curvature, and NULL.
Referenced by constructExpr(), createNlhdlrExprData(), DECL_CURVCHECK(), DECL_CURVCHECK(), DECL_CURVCHECK(), DECL_CURVCHECK(), estimateVertexPolyhedral(), SCIP_DECL_NLHDLRESTIMATE(), SCIP_DECL_NLHDLRESTIMATE(), SCIP_DECL_NLHDLRINITSEPA(), SCIP_DECL_NLHDLRINITSEPA(), SCIP_DECL_NLHDLRSOLLINEARIZE(), and SCIPcomputeExprCurvature().
void SCIPexprSetCurvature | ( | SCIP_EXPR * | expr, |
SCIP_EXPRCURV | curvature ) |
sets the curvature of an expression
expr | expression |
curvature | curvature of the expression |
Definition at line 4062 of file expr.c.
References assert(), SCIP_Expr::curvature, and NULL.
Referenced by createNlhdlrExprData(), DECL_CURVCHECK(), DECL_CURVCHECK(), DECL_CURVCHECK(), DECL_CURVCHECK(), nlhdlrExprCreate(), SCIP_DECL_NLHDLRDETECT(), and SCIPcomputeExprCurvature().
returns whether an expression is integral
expr | expression |
Definition at line 4073 of file expr.c.
References assert(), SCIP_Expr::isintegral, and NULL.
Referenced by createAuxVar(), forwardPropExpr(), presolveImplint(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINTEGRALITY(), SCIP_DECL_EXPRINTEGRALITY(), SCIP_DECL_EXPRINTEGRALITY(), SCIP_DECL_EXPRINTEGRALITY(), SCIP_DECL_NLHDLRESTIMATE(), SCIP_DECL_NLHDLRSOLLINEARIZE(), and SCIPtightenExprIntervalNonlinear().
sets the integrality flag of an expression
expr | expression |
isintegral | integrality of the expression |
Definition at line 4083 of file expr.c.
References assert(), SCIP_Expr::isintegral, and NULL.
Referenced by presolveImplint(), and SCIPcomputeExprIntegrality().
void SCIPexprGetQuadraticData | ( | SCIP_EXPR * | expr, |
SCIP_Real * | constant, | ||
int * | nlinexprs, | ||
SCIP_EXPR *** | linexprs, | ||
SCIP_Real ** | lincoefs, | ||
int * | nquadexprs, | ||
int * | nbilinexprs, | ||
SCIP_Real ** | eigenvalues, | ||
SCIP_Real ** | eigenvectors ) |
gives the coefficients and expressions that define a quadratic expression
It can return the constant part, the number, arguments, and coefficients of the purely linear part and the number of quadratic terms and bilinear terms. Note that for arguments that appear in the quadratic part, a linear coefficient is stored with the quadratic term. Use SCIPexprGetQuadraticQuadTerm() and SCIPexprGetQuadraticBilinTerm() to access the data for a quadratic or bilinear term.
It can also return the eigenvalues and the eigenvectors of the matrix \(Q\) when the quadratic is written as \(x^T Q x + b^T x + c^T y + d\), where \(c^T y\) defines the purely linear part. Note, however, that to have access to them one needs to call SCIPcomputeExprQuadraticCurvature() with storeeigeninfo=TRUE
. If the eigen information was not stored or it failed to be computed, eigenvalues
and eigenvectors
will be set to NULL.
This function returns pointers to internal data in linexprs and lincoefs. The user must not change this data.
expr | quadratic expression |
constant | buffer to store constant term, or NULL |
nlinexprs | buffer to store number of expressions that appear linearly, or NULL |
linexprs | buffer to store pointer to array of expressions that appear linearly, or NULL |
lincoefs | buffer to store pointer to array of coefficients of expressions that appear linearly, or NULL |
nquadexprs | buffer to store number of expressions in quadratic terms, or NULL |
nbilinexprs | buffer to store number of bilinear expressions terms, or NULL |
eigenvalues | buffer to store pointer to array of eigenvalues of Q, or NULL |
eigenvectors | buffer to store pointer to array of eigenvectors of Q, or NULL |
Definition at line 4113 of file expr.c.
References assert(), SCIP_QuadExpr::constant, SCIP_QuadExpr::eigenvalues, SCIP_QuadExpr::eigenvectors, i, SCIP_QuadExpr::lincoefs, SCIP_QuadExpr::linexprs, SCIP_QuadExpr::nbilinexprterms, SCIP_QuadExpr::nlinexprs, SCIP_QuadExpr::nquadexprs, NULL, and SCIP_Expr::quaddata.
Referenced by checkConsQuadraticProblem(), computeApex(), computeIntercut(), computeMonoidalQuadCoefs(), computeMonoidalStrengthCoef(), computeRestrictionToLine(), computeRestrictionToRay(), computeVApexAndVRay(), computeWRayLinear(), constructLPPos2ConsPosMap(), countBasicVars(), createMIP(), createTcliqueGraph(), DECL_CURVCHECK(), doSeachEcAggr(), findAndStoreEcAggregations(), findVertexAndGetRays(), generateIntercut(), intercutsComputeCommonQuantities(), isCandidate(), isPropagable(), isQuadConsViolated(), isRayInStrip(), nlrowaggrCreate(), presolveAddKKTQuadBilinearTerms(), presolveAddKKTQuadLinearTerms(), presolveAddKKTQuadQuadraticTerms(), printRow(), printRow(), processNlRow(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRENFO(), SCIP_DECL_NLHDLREVALAUX(), SCIP_DECL_NLHDLRFREEEXPRDATA(), SCIP_DECL_NLHDLRINTEVAL(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIP_DECL_NONLINCONSUPGD(), SCIPevalExprQuadratic(), SCIPevalExprQuadraticAuxNonlinear(), SCIPprintExprQuadratic(), SCIPwriteMps(), searchEcAggrWithCliques(), storeAggrFromMIP(), storeDenseTableauRowsByColumns(), and updateMIP().
void SCIPexprGetQuadraticQuadTerm | ( | SCIP_EXPR * | quadexpr, |
int | termidx, | ||
SCIP_EXPR ** | expr, | ||
SCIP_Real * | lincoef, | ||
SCIP_Real * | sqrcoef, | ||
int * | nadjbilin, | ||
int ** | adjbilin, | ||
SCIP_EXPR ** | sqrexpr ) |
gives the data of a quadratic expression term
For a term \(a \cdot \text{expr}^2 + b \cdot \text{expr} + \sum_i (c_i \cdot \text{expr} \cdot \text{otherexpr}_i)\), returns expr
, \(a\), \(b\), the number of summands, and indices of bilinear terms in the quadratic expressions bilinexprterms
.
This function returns pointers to internal data in adjbilin. The user must not change this data.
quadexpr | quadratic expression |
termidx | index of quadratic term |
expr | buffer to store pointer to argument expression (the 'x') of this term, or NULL |
lincoef | buffer to store linear coefficient of variable, or NULL |
sqrcoef | buffer to store square coefficient of variable, or NULL |
nadjbilin | buffer to store number of bilinear terms this variable is involved in, or NULL |
adjbilin | buffer to store pointer to indices of associated bilinear terms, or NULL |
sqrexpr | buffer to store pointer to square expression (the 'x^2') of this term or NULL if no square expression, or NULL |
Definition at line 4158 of file expr.c.
References assert(), i, and NULL.
Referenced by constructLPPos2ConsPosMap(), countBasicVars(), createMIP(), createTcliqueGraph(), DECL_CURVCHECK(), doSeachEcAggr(), findVertexAndGetRays(), intercutsComputeCommonQuantities(), isCandidate(), isPropagable(), isPropagableTerm(), isQuadConsViolated(), nlrowaggrCreate(), presolveAddKKTQuadLinearTerms(), presolveAddKKTQuadQuadraticTerms(), printRow(), printRow(), processNlRow(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLREVALAUX(), SCIP_DECL_NLHDLRINTEVAL(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIP_DECL_NONLINCONSUPGD(), SCIPevalExprQuadratic(), SCIPevalExprQuadraticAuxNonlinear(), SCIPprintExprQuadratic(), SCIPwriteMps(), searchEcAggrWithCliques(), storeAggrFromMIP(), storeDenseTableauRowsByColumns(), and updateMIP().
void SCIPexprGetQuadraticBilinTerm | ( | SCIP_EXPR * | expr, |
int | termidx, | ||
SCIP_EXPR ** | expr1, | ||
SCIP_EXPR ** | expr2, | ||
SCIP_Real * | coef, | ||
int * | pos2, | ||
SCIP_EXPR ** | prodexpr ) |
gives the data of a bilinear expression term
For a term a*expr1*expr2, returns expr1, expr2, a, and the position of the quadratic expression term that uses expr2 in the quadratic expressions quadexprterms
.
expr | quadratic expression |
termidx | index of bilinear term |
expr1 | buffer to store first factor, or NULL |
expr2 | buffer to store second factor, or NULL |
coef | buffer to coefficient, or NULL |
pos2 | buffer to position of expr2 in quadexprterms array of quadratic expression, or NULL |
prodexpr | buffer to store pointer to expression that is product if first and second factor, or NULL |
Definition at line 4198 of file expr.c.
References assert(), SCIP_QuadExpr::bilinexprterms, i, NULL, and SCIP_Expr::quaddata.
Referenced by createMIP(), createTcliqueGraph(), isCandidate(), isQuadConsViolated(), nlrowaggrCreate(), presolveAddKKTQuadBilinearTerms(), printRow(), printRow(), processNlRow(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLREVALAUX(), SCIP_DECL_NLHDLRINTEVAL(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIP_DECL_NONLINCONSUPGD(), SCIPevalExprQuadratic(), SCIPevalExprQuadraticAuxNonlinear(), SCIPprintExprQuadratic(), SCIPwriteMps(), searchEcAggrWithCliques(), storeAggrFromMIP(), and updateMIP().
returns whether all expressions that are used in a quadratic expression are variable expressions
linexprs
and quadexprterms[.].expr
are variable expressions expr | quadratic expression |
Definition at line 4234 of file expr.c.
References SCIP_QuadExpr::allexprsarevars, assert(), NULL, and SCIP_Expr::quaddata.
Referenced by isCandidate(), printNonlinearCons(), processNlRow(), SCIP_DECL_NLHDLRDETECT(), SCIPcheckQuadraticNonlinear(), and SCIPwritePip().
gets the variable of a variable expression
expr | variable expression |
Definition at line 416 of file expr_var.c.
References assert(), EXPRHDLR_NAME, i, NULL, SCIPexprGetData(), SCIPexprGetHdlr(), and SCIPexprhdlrGetName().
Referenced by addSymmetryInformation(), analyzeViolation(), buildQuadExprMatrix(), catchVarEvent(), catchVarEvents(), checkAndCollectQuadratic(), collectBranchingCandidates(), collectLeafs(), computeGradient(), computeOffValues(), createMIP(), createNlRow(), createTcliqueGraph(), detectSocNorm(), detectSocQuadraticSimple(), doSeachEcAggr(), dropVarEvent(), enforceConstraints(), estimateConvexSecant(), estimateGradient(), estimateGradientInner(), estimateVertexPolyhedral(), exprIsSemicontinuous(), findUnlockedLinearVar(), forbidNonlinearVariablesMultiaggration(), forwardPropExpr(), generateCut(), generateCut(), getBilinearBinaryTerms(), getBinaryProductExpr(), getBinaryProductExprDo(), isBinaryProduct(), isCandidate(), isPackingCons(), isSingleLockedCand(), nlpAddNlRows(), nlpDelVarPos(), nlrowaggrCreate(), notifyNlhdlrNewsol(), presolveAddKKTQuadBilinearTerms(), presolveAddKKTQuadLinearTerms(), presolveAddKKTQuadQuadraticTerms(), presolveImplint(), presolveRedundantConss(), presolveSingleLockedVars(), printExpr(), printRow(), printRow(), printSignomial(), processNlRow(), propagateLocks(), readConstraints(), readObjective(), registerBranchingCandidates(), registerBranchingCandidatesAllUnfixed(), SCIP_DECL_CONSACTIVE(), SCIP_DECL_CONSGETVARS(), SCIP_DECL_EXPR_MAPEXPR(), SCIP_DECL_EXPR_MAPEXPR(), SCIP_DECL_EXPR_MAPEXPR(), SCIP_DECL_EXPR_MAPEXPR(), SCIP_DECL_EXPR_MAPEXPR(), SCIP_DECL_EXPR_OWNERCREATE(), SCIP_DECL_EXPR_OWNERFREE(), SCIP_DECL_EXPRCOMPARE(), SCIP_DECL_EXPRCOPYDATA(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPRFWDIFF(), SCIP_DECL_EXPRHASH(), SCIP_DECL_EXPRINTEGRALITY(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRPRINT(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRINITSEPA(), SCIP_DECL_NONLINCONSUPGD(), SCIP_DECL_NONLINCONSUPGD(), SCIP_DECL_VERTEXPOLYFUN(), SCIPaddNlRowGradientBenderscutOpt(), SCIPevalExprQuadratic(), SCIPexprComputeQuadraticCurvature(), SCIPexprDismantle(), SCIPgetExprAuxVarNonlinear(), SCIPisSOCNonlinear(), SCIPnlpGetVarsNonlinearity(), SCIPnlpHasContinuousNonlinearity(), SCIPwriteMps(), storeVarExprs(), tryAddGadgetBilinearProductSignedPerm(), tryAddGadgetEvenOperatorSum(), tryAddGadgetEvenOperatorVariable(), and tryAddGadgetSquaredDifference().
gets the value of a constant value expression
expr | sum expression |
Definition at line 294 of file expr_value.c.
References assert(), NULL, and SCIPexprGetData().
Referenced by addSymmetryInformation(), canonicalizeConstraints(), eval(), nlrowSimplifyExpr(), AMPLProblemHandler::OnBinary(), AMPLProblemHandler::OnObj(), parseExpr(), presolveRedundantConss(), printSignomial(), readExpression(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIPexprDismantle(), simplifyFactor(), and simplifyTerm().
gets the coefficients of a summation expression
expr | sum expression |
Definition at line 1552 of file expr_sum.c.
References assert(), NULL, and SCIPexprGetData().
Referenced by addSymmetryInformation(), buildQuadExprMatrix(), createNlRow(), DECL_CURVCHECK(), DECL_CURVCHECK(), detectExpr(), detectSocNorm(), detectSocQuadraticSimple(), enforceSP12(), enforceSP12b(), eval(), findUnlockedLinearVar(), getFactorizedBinaryQuadraticExpr(), presolveImplint(), presolveSingleLockedVars(), printRowNl(), readConstraints(), readObjective(), scaleConsSides(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRCOMPARE(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_NLHDLREVALAUX(), SCIP_DECL_NONLINCONSUPGD(), SCIPexprCheckQuadratic(), SCIPexprCompare(), SCIPexprDismantle(), SCIPmultiplyBySumExprSum(), SCIPpowerExprSum(), simplifyFactor(), simplifyTerm(), transformExpr(), tryAddGadgetEvenOperatorSum(), and tryAddGadgetSquaredDifference().
gets the constant of a summation expression
expr | sum expression |
Definition at line 1567 of file expr_sum.c.
References assert(), NULL, and SCIPexprGetData().
Referenced by addSymmetryInformation(), createNlRow(), DECL_CURVCHECK(), detectExpr(), detectSocNorm(), detectSocQuadraticComplex(), detectSocQuadraticSimple(), enforceSP12(), enforceSP12b(), eval(), getFactorizedBinaryQuadraticExpr(), presolveImplint(), printRowNl(), readConstraints(), readObjective(), scaleConsSides(), SCIP_DECL_EXPRCOMPARE(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_NLHDLREVALAUX(), SCIP_DECL_NONLINCONSUPGD(), SCIPexprCheckQuadratic(), SCIPexprDismantle(), SCIPmultiplyBySumExprSum(), SCIPpowerExprSum(), simplifyFactor(), simplifyTerm(), transformExpr(), and tryAddGadgetEvenOperatorSum().
gets the constant coefficient of a product expression
expr | product expression |
Definition at line 2300 of file expr_product.c.
References assert(), exprnode::expr, NULL, and SCIPexprGetData().
Referenced by DECL_CURVCHECK(), DECL_CURVCHECK(), detectExpr(), eval(), getFeasiblePointsBilinear(), intevalBilinear(), isBinaryProduct(), printSignomial(), reversePropBilinear(), SCIP_DECL_EXPRCOMPARE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRGETSYMDATA(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_NLHDLRESTIMATE(), SCIP_DECL_NLHDLREVALAUX(), SCIPexprCheckQuadratic(), SCIPexprDismantle(), SCIPexprGetMonomialData(), and simplifyFactor().
gets the exponent of a power or signed power expression
expr | expression |
Definition at line 3456 of file expr_pow.c.
References assert(), NULL, and SCIPexprGetData().
Referenced by bilinearTermsInsertAll(), buildQuadExprMatrix(), checkAndCollectQuadratic(), DECL_CURVCHECK(), DECL_CURVCHECK(), detectExpr(), detectMinors(), detectMinors(), detectSocNorm(), detectSocQuadraticSimple(), eval(), evalSignPower(), isPackingCons(), mergeProductExprlist(), presolveSingleLockedVars(), printExpr(), printSignomial(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWFWDIFF(), SCIP_DECL_EXPRCOMPARE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPRESTIMATE(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPRFWDIFF(), SCIP_DECL_EXPRINTEGRALITY(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRPRINT(), SCIP_DECL_EXPRPRINT(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLREVALAUX(), SCIPexprCheckQuadratic(), SCIPexprCompare(), SCIPexprDismantle(), SCIPexprGetMonomialData(), and SCIPexprintCompile().
SCIP_Bool SCIPexpriterIsInit | ( | SCIP_EXPRITER * | iterator | ) |
returns whether expression iterator is currently initialized
iterator | expression iterator |
Definition at line 485 of file expriter.c.
References assert(), SCIP_ExprIter::initialized, and NULL.
SCIP_RETCODE SCIPexpriterInit | ( | SCIP_EXPRITER * | iterator, |
SCIP_EXPR * | expr, | ||
SCIP_EXPRITER_TYPE | type, | ||
SCIP_Bool | allowrevisit ) |
initializes an expression iterator
expr
is NULL, then iterator will be set into ended-state (SCIPexpriterIsEnd() is TRUE). Useful if following with SCIPexpriterRestartDFS().If type is DFS, then stopstages
will be set to SCIP_EXPRITER_ENTEREXPR. Use SCIPexpriterSetStagesDFS
to change this.
iterator | expression iterator |
expr | expression of the iterator, can be NULL |
type | type of expression iterator |
allowrevisit | whether expression are allowed to be visited more than once |
Definition at line 501 of file expriter.c.
References assert(), SCIP_ExprIter::curr, deinit(), SCIP_ExprIter::dfsstage, ensureStackSize(), SCIP_Stat::exprlastvisitedtag, i, SCIP_ExprIter::initialized, SCIP_Expr::iterdata, SCIP_ExprIter::iterindex, SCIP_ExprIter::itertype, MINBFSSIZE, MINDFSSIZE, SCIP_Stat::nactiveexpriter, NULL, printBacktraces(), SCIP_ExprIter::queue, reverseTopologicalInsert(), SCIP_CALL, SCIP_EXPRITER_BFS, SCIP_EXPRITER_DFS, SCIP_EXPRITER_ENTEREXPR, SCIP_EXPRITER_MAXNACTIVE, SCIP_EXPRITER_RTOPOLOGIC, SCIP_MAXDEPTHLEVEL, SCIP_OKAY, SCIPerrorMessage, SCIPexpriterGetNext(), SCIPqueueClear(), SCIPqueueCreate(), SCIPqueueInsert(), SCIP_ExprIter::stat, SCIP_ExprIter::stopstages, storeBacktrace, SCIP_Stat::subscipdepth, TRUE, and SCIP_ExprIter::visitedtag.
Referenced by addExprViolScoresAuxVars(), addSymmetryInformation(), analyzeViolation(), bilinearTermsInsertAll(), canonicalizeConstraints(), collectBranchingCandidates(), collectLeafs(), computeGradient(), computeOffValues(), constructExpr(), createNlhdlrExprData(), deinitSolve(), detectMinors(), detectMinors(), detectNlhdlrs(), enforceConstraints(), evalAndDiff(), exprIsNonSmooth(), exprIsSemicontinuous(), forbidNonlinearVariablesMultiaggration(), forwardPropExpr(), generateCut(), generateCut(), initSepa(), nlpAddNlRows(), nlpDelVarPos(), notifyNlhdlrNewsol(), presolveBinaryProducts(), presolveSingleLockedVars(), printExpr(), processNlRow(), propagateLocks(), propConss(), propExprDomains(), registerBranchingCandidates(), SCIP_DECL_CONSACTIVE(), SCIP_DECL_TABLEOUTPUT(), SCIPaddExprsViolScoreNonlinear(), SCIPaddNlRowGradientBenderscutOpt(), SCIPcomputeExprCurvature(), SCIPcomputeExprIntegrality(), SCIPcreateNlpiProblemFromNlRows(), SCIPexprCopy(), SCIPexprDismantle(), SCIPexprEval(), SCIPexprEvalActivity(), SCIPexprEvalGradient(), SCIPexprEvalHessianDir(), SCIPexprintCompile(), SCIPexprPrint(), SCIPexprPrintDot(), SCIPexprRelease(), SCIPexprSimplify(), SCIPgetExprNVars(), SCIPgetExprVarExprs(), SCIPhashExpr(), SCIPmarkExprPropagateNonlinear(), SCIPnlpGetVarsNonlinearity(), SCIPnlpHasContinuousNonlinearity(), SCIPnlpiOracleDelVarSet(), SCIPnlpiOracleGetJacobianSparsity(), SCIPregisterExprUsageNonlinear(), SCIPreplaceCommonSubexpressions(), and updateVariableCounts().
SCIP_EXPR * SCIPexpriterRestartDFS | ( | SCIP_EXPRITER * | iterator, |
SCIP_EXPR * | expr ) |
restarts an already initialized expression iterator in DFS mode
The expression iterator will continue from the given expression, not revisiting expressions that this iterator has already been visited (if initialized with allowrevisit=FALSE
) and giving access to the same iterator specified expression data that may have been set already. Also the stop-stages are not reset.
If revisiting is forbidden and given expr has already been visited, then the iterator will behave as on the end of iteration (SCIPexpriterIsEnd() is TRUE). If the enterexpr stage is not one of the stop stages, then the iterator will be moved forward (SCIPexpriterGetNext() is called).
iterator | expression iterator |
expr | expression of the iterator |
Definition at line 630 of file expriter.c.
References assert(), SCIP_ExprIter::curr, SCIP_ExprIter::dfsstage, SCIP_ExprIter::initialized, SCIP_Expr::iterdata, SCIP_ExprIter::iterindex, SCIP_ExprIter::itertype, NULL, SCIP_EXPRITER_DFS, SCIP_EXPRITER_ENTEREXPR, SCIPexpriterGetNext(), SCIP_ExprIter::stopstages, and SCIP_ExprIter::visitedtag.
Referenced by analyzeViolation(), bilinearTermsInsertAll(), collectBranchingCandidates(), deinitSolve(), detectMinors(), detectMinors(), detectNlhdlrs(), enforceConstraint(), forbidNonlinearVariablesMultiaggration(), hashExpr(), initSepa(), notifyNlhdlrNewsol(), propExprDomains(), registerBranchingCandidates(), removeSingleLockedVars(), replaceBinaryProducts(), SCIPaddExprsViolScoreNonlinear(), SCIPnlpHasContinuousNonlinearity(), and SCIPnlpiOracleGetJacobianSparsity().
void SCIPexpriterSetStagesDFS | ( | SCIP_EXPRITER * | iterator, |
SCIP_EXPRITER_STAGE | stopstages ) |
specifies in which stages to stop a DFS iterator
Parameter stopstages
should be a bitwise OR of different SCIP_EXPRITER_STAGE values
If the current stage is not one of the stopstages
, then the iterator will be moved on.
iterator | expression iterator |
stopstages | the stages in which to stop when iterating via DFS |
Definition at line 664 of file expriter.c.
References assert(), SCIP_ExprIter::dfsstage, i, NULL, SCIPexpriterGetNext(), and SCIP_ExprIter::stopstages.
Referenced by addSymmetryInformation(), bilinearTermsInsertAll(), collectLeafs(), constructExpr(), createNlhdlrExprData(), deinitSolve(), detectMinors(), evalAndDiff(), forwardPropExpr(), notifyNlhdlrNewsol(), presolveBinaryProducts(), presolveSingleLockedVars(), printExpr(), propagateLocks(), SCIP_DECL_CONSACTIVE(), SCIPcomputeExprCurvature(), SCIPcomputeExprIntegrality(), SCIPexprCopy(), SCIPexprDismantle(), SCIPexprEval(), SCIPexprEvalActivity(), SCIPexprEvalGradient(), SCIPexprEvalHessianDir(), SCIPexprPrint(), SCIPexprRelease(), SCIPexprSimplify(), SCIPhashExpr(), and SCIPreplaceCommonSubexpressions().
SCIP_EXPR * SCIPexpriterGetCurrent | ( | SCIP_EXPRITER * | iterator | ) |
gets the current expression that the expression iterator points to
iterator | expression iterator |
Definition at line 683 of file expriter.c.
References assert(), SCIP_ExprIter::curr, and NULL.
Referenced by addSymmetryInformation(), collectLeafs(), computeOffValues(), evalAndDiff(), exprIsSemicontinuous(), forwardPropExpr(), propagateLocks(), propConss(), SCIP_DECL_CONSACTIVE(), SCIP_DECL_TABLEOUTPUT(), SCIPcomputeExprCurvature(), SCIPcomputeExprIntegrality(), SCIPexprEvalActivity(), SCIPexprEvalGradient(), SCIPexprEvalHessianDir(), SCIPexprintCompile(), SCIPexprRelease(), SCIPexprSimplify(), and SCIPreplaceCommonSubexpressions().
SCIP_EXPRITER_STAGE SCIPexpriterGetStageDFS | ( | SCIP_EXPRITER * | iterator | ) |
gets the current stage that the expression iterator is in when using DFS
If the iterator has finished (SCIPexpriterIsEnd() is TRUE), then the stage is undefined.
iterator | expression iterator |
Definition at line 696 of file expriter.c.
References assert(), SCIP_ExprIter::dfsstage, SCIP_ExprIter::itertype, NULL, and SCIP_EXPRITER_DFS.
Referenced by addSymmetryInformation(), forwardPropExpr(), hashExpr(), printExpr(), propagateLocks(), SCIPexprCopy(), SCIPexprDismantle(), SCIPexprEval(), SCIPexprEvalActivity(), SCIPexprPrint(), SCIPexprRelease(), and SCIPexprSimplify().
int SCIPexpriterGetChildIdxDFS | ( | SCIP_EXPRITER * | iterator | ) |
gets the index of the child that the expression iterator considers when in DFS mode and stage SCIP_EXPRITER_VISITINGCHILD or SCIP_EXPRITER_VISITEDCHILD
iterator | expression iterator |
Definition at line 707 of file expriter.c.
References assert(), SCIP_ExprIter::curr, SCIP_ExprIter::dfsstage, SCIP_Expr::iterdata, SCIP_ExprIter::iterindex, SCIP_ExprIter::itertype, NULL, SCIP_EXPRITER_DFS, SCIP_EXPRITER_VISITEDCHILD, and SCIP_EXPRITER_VISITINGCHILD.
Referenced by collectLeafs(), printExpr(), propagateLocks(), replaceBinaryProducts(), SCIP_DECL_CONSACTIVE(), SCIPexprDismantle(), SCIPexprEvalGradient(), SCIPexprEvalHessianDir(), SCIPexprPrint(), SCIPexprRelease(), SCIPexprSimplify(), and SCIPreplaceCommonSubexpressions().
SCIP_EXPR * SCIPexpriterGetChildExprDFS | ( | SCIP_EXPRITER * | iterator | ) |
gets the child expression that the expression iterator considers when in DFS mode and stage SCIP_EXPRITER_VISITINGCHILD or SCIP_EXPRITER_VISITEDCHILD
iterator | expression iterator |
Definition at line 721 of file expriter.c.
References assert(), SCIP_Expr::children, SCIP_ExprIter::curr, SCIP_ExprIter::dfsstage, SCIP_Expr::iterdata, SCIP_ExprIter::iterindex, SCIP_ExprIter::itertype, SCIP_Expr::nchildren, NULL, SCIP_EXPRITER_DFS, SCIP_EXPRITER_VISITEDCHILD, and SCIP_EXPRITER_VISITINGCHILD.
Referenced by collectLeafs(), constructExpr(), createNlhdlrExprData(), forwardPropExpr(), replaceBinaryProducts(), SCIP_DECL_CONSACTIVE(), SCIPexprEval(), SCIPexprEvalActivity(), SCIPexprEvalGradient(), SCIPexprEvalHessianDir(), SCIPexprRelease(), SCIPexprSimplify(), and SCIPreplaceCommonSubexpressions().
SCIP_EXPR * SCIPexpriterGetParentDFS | ( | SCIP_EXPRITER * | iterator | ) |
gives the parent of the current expression of an expression iteration if in DFS mode
iterator | expression iterator |
Definition at line 740 of file expriter.c.
References assert(), SCIP_ExprIter::curr, SCIP_Expr::iterdata, SCIP_ExprIter::iterindex, SCIP_ExprIter::itertype, NULL, and SCIP_EXPRITER_DFS.
Referenced by addSymmetryInformation(), printExpr(), and SCIPexprPrint().
SCIP_EXPRITER_USERDATA SCIPexpriterGetCurrentUserData | ( | SCIP_EXPRITER * | iterator | ) |
gives the iterator specific user data of the current expression
iterator | expression iterator |
Definition at line 756 of file expriter.c.
References assert(), SCIP_ExprIter::curr, SCIP_Expr::iterdata, SCIP_ExprIter::iterindex, and NULL.
Referenced by propagateLocks(), and SCIPexprCopy().
SCIP_EXPRITER_USERDATA SCIPexpriterGetChildUserDataDFS | ( | SCIP_EXPRITER * | iterator | ) |
gives the iterator specific user data of the current expressions current child
iterator | expression iterator |
Definition at line 771 of file expriter.c.
References assert(), SCIP_Expr::children, SCIP_ExprIter::curr, SCIP_ExprIter::dfsstage, SCIP_Expr::iterdata, SCIP_ExprIter::iterindex, SCIP_ExprIter::itertype, SCIP_Expr::nchildren, NULL, SCIP_EXPRITER_DFS, SCIP_EXPRITER_VISITEDCHILD, and SCIP_EXPRITER_VISITINGCHILD.
Referenced by SCIPexprCopy(), and SCIPexprSimplify().
SCIP_EXPRITER_USERDATA SCIPexpriterGetExprUserData | ( | SCIP_EXPRITER * | iterator, |
SCIP_EXPR * | expr ) |
gives the iterator specific user data of a given expression
iterator | expression iterator |
expr | expression for which to get the userdata of this iterator |
Definition at line 790 of file expriter.c.
References assert(), SCIP_Expr::iterdata, SCIP_ExprIter::iterindex, and NULL.
Referenced by hashExpr(), SCIP_DECL_HASHKEYVAL(), SCIPexprCopy(), SCIPexprSimplify(), and SCIPhashExpr().
void SCIPexpriterSetCurrentUserData | ( | SCIP_EXPRITER * | iterator, |
SCIP_EXPRITER_USERDATA | userdata ) |
sets the iterator specific user data of the current expression for an expression iteration if in DFS mode
iterator | expression iterator |
userdata | data to be stored |
Definition at line 806 of file expriter.c.
References assert(), SCIP_ExprIter::curr, SCIP_Expr::iterdata, SCIP_ExprIter::iterindex, and NULL.
Referenced by hashExpr(), propagateLocks(), SCIPexprCopy(), and SCIPexprSimplify().
void SCIPexpriterSetExprUserData | ( | SCIP_EXPRITER * | iterator, |
SCIP_EXPR * | expr, | ||
SCIP_EXPRITER_USERDATA | userdata ) |
sets the iterator specific user data of a given expression
iterator | expression iterator |
expr | expression where to set iterator data |
userdata | data to be stored in current child |
Definition at line 822 of file expriter.c.
References assert(), SCIP_Expr::iterdata, SCIP_ExprIter::iterindex, and NULL.
void SCIPexpriterSetChildUserData | ( | SCIP_EXPRITER * | iterator, |
SCIP_EXPRITER_USERDATA | userdata ) |
sets the iterator specific user data of the current expressions current child
iterator | expression iterator |
userdata | data to be stored in current child |
Definition at line 838 of file expriter.c.
References assert(), SCIP_Expr::children, SCIP_ExprIter::curr, SCIP_ExprIter::dfsstage, SCIP_Expr::iterdata, SCIP_ExprIter::iterindex, SCIP_ExprIter::itertype, SCIP_Expr::nchildren, NULL, SCIP_EXPRITER_DFS, SCIP_EXPRITER_VISITEDCHILD, and SCIP_EXPRITER_VISITINGCHILD.
Referenced by propagateLocks().
SCIP_EXPR * SCIPexpriterGetNext | ( | SCIP_EXPRITER * | iterator | ) |
moves the iterator to the next expression according to the mode of the expression iterator
iterator | expression iterator |
Definition at line 858 of file expriter.c.
References assert(), SCIP_ExprIter::curr, SCIP_ExprIter::dfsstage, doBfsNext(), doDfsNext(), doReverseTopologicalNext(), SCIP_Expr::iterdata, SCIP_ExprIter::iterindex, SCIP_ExprIter::itertype, NULL, SCIP_EXPRITER_BFS, SCIP_EXPRITER_DFS, SCIP_EXPRITER_MAXNACTIVE, SCIP_EXPRITER_RTOPOLOGIC, SCIP_ExprIter::stopstages, and SCIP_ExprIter::visitedtag.
Referenced by addExprViolScoresAuxVars(), addSymmetryInformation(), analyzeViolation(), bilinearTermsInsertAll(), canonicalizeConstraints(), collectBranchingCandidates(), collectLeafs(), computeGradient(), computeOffValues(), constructExpr(), createNlhdlrExprData(), deinitSolve(), detectMinors(), detectMinors(), detectNlhdlrs(), enforceConstraint(), evalAndDiff(), exprIsNonSmooth(), exprIsSemicontinuous(), forbidNonlinearVariablesMultiaggration(), forwardPropExpr(), generateCut(), generateCut(), hashExpr(), initSepa(), nlpAddNlRows(), nlpDelVarPos(), notifyNlhdlrNewsol(), printExpr(), processNlRow(), propagateLocks(), propConss(), propExprDomains(), registerBranchingCandidates(), removeSingleLockedVars(), replaceBinaryProducts(), SCIP_DECL_CONSACTIVE(), SCIP_DECL_TABLEOUTPUT(), SCIPaddExprsViolScoreNonlinear(), SCIPaddNlRowGradientBenderscutOpt(), SCIPcomputeExprCurvature(), SCIPcomputeExprIntegrality(), SCIPcreateNlpiProblemFromNlRows(), SCIPexprCopy(), SCIPexprDismantle(), SCIPexprEval(), SCIPexprEvalActivity(), SCIPexprEvalGradient(), SCIPexprEvalHessianDir(), SCIPexprintCompile(), SCIPexpriterInit(), SCIPexpriterRestartDFS(), SCIPexpriterSetStagesDFS(), SCIPexpriterSkipDFS(), SCIPexprPrint(), SCIPexprPrintDot(), SCIPexprRelease(), SCIPexprSimplify(), SCIPgetExprNVars(), SCIPgetExprVarExprs(), SCIPmarkExprPropagateNonlinear(), SCIPnlpGetVarsNonlinearity(), SCIPnlpHasContinuousNonlinearity(), SCIPnlpiOracleDelVarSet(), SCIPnlpiOracleGetJacobianSparsity(), SCIPregisterExprUsageNonlinear(), SCIPreplaceCommonSubexpressions(), and updateVariableCounts().
SCIP_EXPR * SCIPexpriterSkipDFS | ( | SCIP_EXPRITER * | iterator | ) |
moves a DFS iterator to one of the next expressions
stopstages
, then it will be the next stage. Otherwise, the iterator will move further on (go to the parent, etc).iterator | expression iterator |
Definition at line 930 of file expriter.c.
References assert(), SCIP_ExprIter::curr, SCIP_ExprIter::dfsstage, doDfsNext(), i, SCIP_ExprIter::iterindex, SCIP_ExprIter::itertype, NULL, SCIP_EXPRITER_DFS, SCIP_EXPRITER_ENTEREXPR, SCIP_EXPRITER_LEAVEEXPR, SCIP_EXPRITER_VISITEDCHILD, SCIP_EXPRITER_VISITINGCHILD, SCIPABORT, SCIPerrorMessage, SCIPexpriterGetNext(), and SCIP_ExprIter::stopstages.
Referenced by constructExpr(), forwardPropExpr(), SCIPexprCopy(), SCIPexprEval(), SCIPexprEvalActivity(), SCIPexprRelease(), and SCIPreplaceCommonSubexpressions().
SCIP_Bool SCIPexpriterIsEnd | ( | SCIP_EXPRITER * | iterator | ) |
returns whether the iterator visited all expressions already
iterator | expression iterator |
Definition at line 969 of file expriter.c.
References assert(), SCIP_ExprIter::curr, and NULL.
Referenced by addExprViolScoresAuxVars(), addSymmetryInformation(), analyzeViolation(), bilinearTermsInsertAll(), canonicalizeConstraints(), collectBranchingCandidates(), collectLeafs(), computeGradient(), computeOffValues(), constructExpr(), createNlhdlrExprData(), deinitSolve(), detectMinors(), detectMinors(), detectNlhdlrs(), enforceConstraint(), evalAndDiff(), exprIsNonSmooth(), exprIsSemicontinuous(), forbidNonlinearVariablesMultiaggration(), forwardPropExpr(), generateCut(), generateCut(), hashExpr(), initSepa(), nlpAddNlRows(), nlpDelVarPos(), notifyNlhdlrNewsol(), printExpr(), processNlRow(), propagateLocks(), propConss(), propExprDomains(), registerBranchingCandidates(), removeSingleLockedVars(), replaceBinaryProducts(), SCIP_DECL_CONSACTIVE(), SCIP_DECL_TABLEOUTPUT(), SCIPaddExprsViolScoreNonlinear(), SCIPaddNlRowGradientBenderscutOpt(), SCIPcomputeExprCurvature(), SCIPcomputeExprIntegrality(), SCIPcreateNlpiProblemFromNlRows(), SCIPexprCopy(), SCIPexprDismantle(), SCIPexprEval(), SCIPexprEvalActivity(), SCIPexprEvalGradient(), SCIPexprEvalHessianDir(), SCIPexprintCompile(), SCIPexprPrint(), SCIPexprPrintDot(), SCIPexprRelease(), SCIPexprSimplify(), SCIPgetExprNVars(), SCIPgetExprVarExprs(), SCIPmarkExprPropagateNonlinear(), SCIPnlpGetVarsNonlinearity(), SCIPnlpHasContinuousNonlinearity(), SCIPnlpiOracleDelVarSet(), SCIPnlpiOracleGetJacobianSparsity(), SCIPregisterExprUsageNonlinear(), SCIPreplaceCommonSubexpressions(), and updateVariableCounts().
SCIP_EXPRCURV SCIPexprcurvAdd | ( | SCIP_EXPRCURV | curv1, |
SCIP_EXPRCURV | curv2 ) |
gives curvature for a sum of two functions with given curvature
curv1 | curvature of first summand |
curv2 | curvature of second summand |
Definition at line 53 of file exprcurv.c.
References i.
SCIP_EXPRCURV SCIPexprcurvNegate | ( | SCIP_EXPRCURV | curvature | ) |
gives the curvature for the negation of a function with given curvature
curvature | curvature of function |
Definition at line 62 of file exprcurv.c.
References SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_EXPRCURV_LINEAR, SCIP_EXPRCURV_UNKNOWN, SCIPABORT, and SCIPerrorMessage.
Referenced by SCIP_DECL_EXPRCURVATURE(), SCIPexprcurvMonomial(), SCIPexprcurvMonomialInv(), and SCIPexprcurvMultiply().
SCIP_EXPRCURV SCIPexprcurvMultiply | ( | SCIP_Real | factor, |
SCIP_EXPRCURV | curvature ) |
gives curvature for a functions with given curvature multiplied by a constant factor
factor | constant factor |
curvature | curvature of other factor |
Definition at line 88 of file exprcurv.c.
References i, SCIP_EXPRCURV_LINEAR, and SCIPexprcurvNegate().
Referenced by DECL_CURVCHECK(), DECL_CURVCHECK(), DECL_CURVCHECK(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), and SCIPexprcurvMonomial().
SCIP_EXPRCURV SCIPexprcurvPower | ( | SCIP_INTERVAL | basebounds, |
SCIP_EXPRCURV | basecurv, | ||
SCIP_Real | exponent ) |
gives curvature for base^exponent for given bounds and curvature of base-function and constant exponent
basebounds | bounds on base function |
basecurv | curvature of base function |
exponent | exponent |
Definition at line 101 of file exprcurv.c.
References assert(), EPSISINT, i, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_EXPRCURV_LINEAR, SCIP_EXPRCURV_UNKNOWN, SCIPexprcurvPower(), and SCIPintervalSetBounds().
Referenced by SCIPexprcurvMonomial(), and SCIPexprcurvPower().
SCIP_EXPRCURV SCIPexprcurvPowerInv | ( | SCIP_INTERVAL | basebounds, |
SCIP_Real | exponent, | ||
SCIP_EXPRCURV | powercurv ) |
gives required curvature for base so that base^exponent has given curvature under given bounds on base and constant exponent
returns curvature unknown if expected curvature cannot be obtained
basebounds | bounds on base function |
exponent | exponent, must not be 0 |
powercurv | expected curvature for power |
Definition at line 209 of file exprcurv.c.
References assert(), EPSISINT, i, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_EXPRCURV_LINEAR, SCIP_EXPRCURV_UNKNOWN, SCIPexprcurvPowerInv(), and SCIPintervalSetBounds().
Referenced by SCIP_DECL_EXPRCURVATURE(), SCIPexprcurvMonomialInv(), and SCIPexprcurvPowerInv().
SCIP_EXPRCURV SCIPexprcurvMonomial | ( | int | nfactors, |
SCIP_Real * | exponents, | ||
int * | factoridxs, | ||
SCIP_EXPRCURV * | factorcurv, | ||
SCIP_INTERVAL * | factorbounds ) |
gives curvature for a monomial with given curvatures and bounds for each factor
See Maranas and Floudas, Finding All Solutions of Nonlinearly Constrained Systems of Equations, JOGO 7, 1995 for the categorization in the case that all factors are linear.
Exponents can also be negative or rational.
nfactors | number of factors in monomial |
exponents | exponents in monomial, or NULL if all 1.0 |
factoridxs | indices of factors (but not exponents), or NULL if identity mapping |
factorcurv | curvature of each factor |
factorbounds | bounds of each factor |
Definition at line 331 of file exprcurv.c.
References assert(), EPSGE, EPSISINT, EPSLE, FALSE, i, SCIP_Interval::inf, NULL, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_EXPRCURV_LINEAR, SCIP_EXPRCURV_UNKNOWN, SCIPexprcurvMultiply(), SCIPexprcurvNegate(), SCIPexprcurvPower(), SCIP_Interval::sup, and TRUE.
SCIP_Bool SCIPexprcurvMonomialInv | ( | SCIP_EXPRCURV | monomialcurv, |
int | nfactors, | ||
SCIP_Real * | exponents, | ||
SCIP_INTERVAL * | factorbounds, | ||
SCIP_EXPRCURV * | factorcurv ) |
for a monomial with given bounds for each factor, gives condition on the curvature of each factor, so that monomial has a requested curvature, if possible
monomialcurv
can be achieved monomialcurv | desired curvature |
nfactors | number of factors in monomial |
exponents | exponents in monomial, or NULL if all 1.0 |
factorbounds | bounds of each factor |
factorcurv | buffer to store required curvature of each factor |
Definition at line 457 of file exprcurv.c.
References assert(), EPSGE, EPSISINT, EPSLE, FALSE, i, SCIP_Interval::inf, NULL, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_EXPRCURV_LINEAR, SCIP_EXPRCURV_UNKNOWN, SCIPexprcurvNegate(), SCIPexprcurvPowerInv(), SCIP_Interval::sup, and TRUE.
Referenced by DECL_CURVCHECK().
const char * SCIPexprcurvGetName | ( | SCIP_EXPRCURV | curv | ) |
gives name as string for a curvature
curv | curvature |
Definition at line 586 of file exprcurv.c.
References assert(), curvnames, and SCIP_EXPRCURV_LINEAR.
Referenced by createNlhdlrExprData(), DECL_CURVCHECK(), and SCIPnlrowPrint().
SCIP_RETCODE SCIPcreateExpr | ( | SCIP * | scip, |
SCIP_EXPR ** | expr, | ||
SCIP_EXPRHDLR * | exprhdlr, | ||
SCIP_EXPRDATA * | exprdata, | ||
int | nchildren, | ||
SCIP_EXPR ** | children, | ||
SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)) | , | ||
void * | ownercreatedata ) |
creates and captures an expression with given expression data and children
scip | SCIP data structure |
expr | pointer where to store expression |
exprhdlr | expression handler |
exprdata | expression data (expression assumes ownership) |
nchildren | number of children |
children | children (can be NULL if nchildren is 0) |
ownercreatedata | data to pass to ownercreate |
Definition at line 974 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, and SCIPexprCreate().
Referenced by SCIPcreateExpr2(), SCIPcreateExprAbs(), SCIPcreateExprCos(), SCIPcreateExprEntropy(), SCIPcreateExprErf(), SCIPcreateExprExp(), SCIPcreateExprLog(), SCIPcreateExprPow(), SCIPcreateExprProduct(), SCIPcreateExprSignpower(), SCIPcreateExprSin(), SCIPcreateExprSum(), SCIPcreateExprValue(), SCIPcreateExprVar(), and SCIPcreateExprVaridx().
SCIP_RETCODE SCIPcreateExpr2 | ( | SCIP * | scip, |
SCIP_EXPR ** | expr, | ||
SCIP_EXPRHDLR * | exprhdlr, | ||
SCIP_EXPRDATA * | exprdata, | ||
SCIP_EXPR * | child1, | ||
SCIP_EXPR * | child2, | ||
SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)) | , | ||
void * | ownercreatedata ) |
creates and captures an expression with given expression data and up to two children
scip | SCIP data structure |
expr | pointer where to store expression |
exprhdlr | expression handler |
exprdata | expression data |
child1 | first child (can be NULL) |
child2 | second child (can be NULL) |
ownercreatedata | data to pass to ownercreate |
Definition at line 995 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, and SCIPcreateExpr().
SCIP_RETCODE SCIPcreateExprQuadratic | ( | SCIP * | scip, |
SCIP_EXPR ** | expr, | ||
int | nlinvars, | ||
SCIP_VAR ** | linvars, | ||
SCIP_Real * | lincoefs, | ||
int | nquadterms, | ||
SCIP_VAR ** | quadvars1, | ||
SCIP_VAR ** | quadvars2, | ||
SCIP_Real * | quadcoefs, | ||
SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)) | , | ||
void * | ownercreatedata ) |
creates and captures an expression representing a quadratic function
scip | SCIP data structure |
expr | pointer where to store expression |
nlinvars | number of linear terms |
linvars | array with variables in linear part |
lincoefs | array with coefficients of variables in linear part |
nquadterms | number of quadratic terms |
quadvars1 | array with first variables in quadratic terms |
quadvars2 | array with second variables in quadratic terms |
quadcoefs | array with coefficients of quadratic terms |
ownercreatedata | data to pass to ownercreate |
Definition at line 1033 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPcreateExprPow(), SCIPcreateExprProduct(), SCIPcreateExprSum(), SCIPcreateExprVar(), SCIPfreeBufferArray, and SCIPreleaseExpr().
Referenced by createConstraint(), readExpression(), and SCIPcreateConsQuadraticNonlinear().
SCIP_RETCODE SCIPcreateExprMonomial | ( | SCIP * | scip, |
SCIP_EXPR ** | expr, | ||
int | nfactors, | ||
SCIP_VAR ** | vars, | ||
SCIP_Real * | exponents, | ||
SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)) | , | ||
void * | ownercreatedata ) |
creates and captures an expression representing a monomial
scip | SCIP data structure |
expr | pointer where to store expression |
nfactors | number of factors in monomial |
vars | variables in the monomial |
exponents | exponent in each factor, or NULL if all 1.0 |
ownercreatedata | data to pass to ownercreate |
Definition at line 1141 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPcreateExprPow(), SCIPcreateExprProduct(), SCIPcreateExprValue(), SCIPcreateExprVar(), SCIPfreeBufferArray, SCIPreleaseExpr(), and vars.
Referenced by readPolynomial().
SCIP_RETCODE SCIPappendExprChild | ( | SCIP * | scip, |
SCIP_EXPR * | expr, | ||
SCIP_EXPR * | child ) |
appends child to the children list of expr
scip | SCIP data structure |
expr | expression |
child | expression to be appended |
Definition at line 1230 of file scip_expr.c.
References assert(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPexprAppendChild().
Referenced by DECL_CURVCHECK(), nlhdlrExprGrowChildren(), parseTerm(), SCIP_DECL_EXPRSIMPLIFY(), SCIPappendExprSumExpr(), SCIPpowerExprSum(), and simplifyTerm().
SCIP_RETCODE SCIPreplaceExprChild | ( | SCIP * | scip, |
SCIP_EXPR * | expr, | ||
int | childidx, | ||
SCIP_EXPR * | newchild ) |
overwrites/replaces a child of an expressions
The old child is released and the newchild is captured, unless they are the same (=same pointer).
scip | SCIP data structure |
expr | expression which is going to replace a child |
childidx | index of child being replaced |
newchild | the new child |
Definition at line 1248 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, and SCIPexprReplaceChild().
Referenced by collectLeafs(), replaceBinaryProducts(), SCIP_DECL_CONSACTIVE(), SCIPreplaceCommonSubexpressions(), and simplifyTerm().
SCIP_RETCODE SCIPremoveExprChildren | ( | SCIP * | scip, |
SCIP_EXPR * | expr ) |
remove all children of expr
scip | SCIP data structure |
expr | expression |
Definition at line 1267 of file scip_expr.c.
References assert(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPexprRemoveChildren().
Referenced by constructExpr().
SCIP_RETCODE SCIPduplicateExpr | ( | SCIP * | scip, |
SCIP_EXPR * | expr, | ||
SCIP_EXPR ** | copyexpr, | ||
SCIP_DECL_EXPR_MAPEXPR((*mapexpr)) | , | ||
void * | mapexprdata, | ||
SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)) | , | ||
void * | ownercreatedata ) |
duplicates the given expression and its children
scip | SCIP data structure |
expr | original expression |
copyexpr | buffer to store duplicate of expr |
mapexprdata | data of expression mapping function |
ownercreatedata | data to pass to ownercreate |
Definition at line 1281 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, and SCIPexprCopy().
Referenced by createCons(), SCIP_DECL_CONSTRANS(), SCIP_DECL_EXPRSIMPLIFY(), SCIPaddExprNonlinear(), SCIPaddNlpiProblemNlRows(), SCIPchgExprNonlinear(), SCIPcreateNlpiProblemFromNlRows(), and SCIPwritePip().
SCIP_RETCODE SCIPduplicateExprShallow | ( | SCIP * | scip, |
SCIP_EXPR * | expr, | ||
SCIP_EXPR ** | copyexpr, | ||
SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)) | , | ||
void * | ownercreatedata ) |
duplicates the given expression, but reuses its children
scip | SCIP data structure |
expr | original expression |
copyexpr | buffer to store (shallow) duplicate of expr |
ownercreatedata | data to pass to ownercreate |
Definition at line 1301 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, and SCIPexprDuplicateShallow().
Referenced by nlhdlrExprCreate().
SCIP_RETCODE SCIPcopyExpr | ( | SCIP * | sourcescip, |
SCIP * | targetscip, | ||
SCIP_EXPR * | expr, | ||
SCIP_EXPR ** | copyexpr, | ||
SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)) | , | ||
void * | ownercreatedata, | ||
SCIP_HASHMAP * | varmap, | ||
SCIP_HASHMAP * | consmap, | ||
SCIP_Bool | global, | ||
SCIP_Bool * | valid ) |
copies an expression including children to use in a (possibly different) SCIP instance
sourcescip | source SCIP data structure |
targetscip | target SCIP data structure |
expr | original expression |
copyexpr | buffer to store duplicate of expr |
ownercreatedata | data to pass to ownercreate |
varmap | a SCIP_HASHMAP mapping variables of the source SCIP to the corresponding variables of the target SCIP, or NULL |
consmap | a hashmap to store the mapping of source constraints to the corresponding target constraints, or NULL |
global | create a global or a local copy? |
valid | pointer to store whether all checked or enforced constraints were validly copied |
Definition at line 1318 of file scip_expr.c.
References assert(), i, Scip::mem, NULL, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPexprCopy(), Scip::set, Scip::stat, TRUE, and valid.
Referenced by SCIP_DECL_CONSCOPY().
SCIP_RETCODE SCIPparseExpr | ( | SCIP * | scip, |
SCIP_EXPR ** | expr, | ||
const char * | exprstr, | ||
const char ** | finalpos, | ||
SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)) | , | ||
void * | ownercreatedata ) |
creates an expression from a string
We specify the grammar that defines the syntax of an expression. Loosely speaking, a Base
will be any "block", a Factor
is a Base
to a power, a Term
is a product of Factors
and an Expression
is a sum of Terms
.
The actual definition:
Expression -> ["+" | "-"] Term { [ ("+" | "-" | "number *") Term | ("number" <varname>) ] } Term -> Factor { ("*" | "/" ) Factor } Factor -> Base [ "^" "number" | "^(" "number" ")" ] Base -> "number" | "<varname>" | "(" Expression ")" | Op "(" OpExpression ")
where [a|b]
means a
or b
or none, (a|b)
means a
or b
, {a}
means 0 or more a
.
Note that Op
and OpExpression
are undefined. Op
corresponds to the name of an expression handler and OpExpression
to whatever string the expression handler accepts (through its parse method).
scip | SCIP data structure |
expr | pointer to store the expr parsed |
exprstr | string with the expr to parse |
finalpos | buffer to store the position of exprstr where we finished reading, or NULL if not of interest |
ownercreatedata | data to pass to ownercreate |
Definition at line 1380 of file scip_expr.c.
References assert(), i, NULL, parseExpr(), SCIP_CALL, SCIPblkmem(), SCIPgetNVars(), SCIPhashmapCreate(), and SCIPhashmapFree().
Referenced by SCIP_DECL_CONSPARSE(), SCIP_DECL_EXPRPARSE(), SCIP_DECL_EXPRPARSE(), SCIP_DECL_EXPRPARSE(), SCIP_DECL_EXPRPARSE(), SCIP_DECL_EXPRPARSE(), SCIP_DECL_EXPRPARSE(), SCIP_DECL_EXPRPARSE(), and SCIP_DECL_EXPRPARSE().
captures an expression (increments usage count)
expr | expression to be captured |
Definition at line 1409 of file scip_expr.c.
References SCIPexprCapture().
Referenced by createCons(), createConstraint(), createExprNode(), createExprVar(), enforceSP10(), exprdataCreate(), getBinaryProductExpr(), initBounds(), nlhdlrExprCreate(), readExpression(), scaleConsSides(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_NLHDLRDETECT(), SCIPgetExprVarExprs(), and SCIPnlpiOracleChgExpr().
SCIP_RETCODE SCIPreleaseExpr | ( | SCIP * | scip, |
SCIP_EXPR ** | expr ) |
releases an expression (decrements usage count and possibly frees expression)
scip | SCIP data structure |
expr | pointer to expression to be released |
Definition at line 1417 of file scip_expr.c.
References assert(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPexprRelease().
Referenced by addNlrow(), addRegularScholtes(), AMPLProblemHandler::LinearExprHandler::AddTerm(), buildSimplifiedProduct(), canonicalizeConstraints(), AMPLProblemHandler::cleanup(), collectLeafs(), computeOffValues(), constructExpr(), createConstraint(), createNlRow(), createSOCExpression(), enforceSP10(), enforceSP11(), enforceSP12(), enforceSP12b(), exprdataFree(), freeConstraint(), freeExprNode(), freeVarExprs(), getBinaryProductExpr(), getFactorizedBinaryQuadraticExpr(), mergeProductExprlist(), nlhdlrExprGrowChildren(), AMPLProblemHandler::OnBinary(), AMPLProblemHandler::OnHeader(), AMPLProblemHandler::OnUnary(), parseBase(), parseExpr(), parseFactor(), parseTerm(), presolveBinaryProducts(), readConstraints(), readExpression(), readObjective(), readPolynomial(), replaceBinaryProducts(), scaleConsSides(), SCIP_DECL_CONSACTIVE(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSDELETE(), SCIP_DECL_CONSINITSOL(), SCIP_DECL_CONSINITSOL(), SCIP_DECL_CONSPARSE(), SCIP_DECL_CONSTRANS(), SCIP_DECL_EXPRPARSE(), SCIP_DECL_EXPRPARSE(), SCIP_DECL_EXPRPARSE(), SCIP_DECL_EXPRPARSE(), SCIP_DECL_EXPRPARSE(), SCIP_DECL_EXPRPARSE(), SCIP_DECL_EXPRPARSE(), SCIP_DECL_EXPRPARSE(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRFREEEXPRDATA(), SCIP_DECL_NLHDLRFREEEXPRDATA(), SCIP_DECL_PROPEXITSOL(), SCIP_DECL_READERREAD(), SCIPaddBilinTermQuadratic(), SCIPaddExprNonlinear(), SCIPaddLinearVarNonlinear(), SCIPaddNlpiProblemNlRows(), SCIPaddQuadVarQuadratic(), SCIPaddSquareCoefQuadratic(), SCIPchgExprNonlinear(), SCIPcreateConsBasicSignpowerNonlinear(), SCIPcreateConsBasicSOC(), SCIPcreateConsBasicSOCNonlinear(), SCIPcreateConsQuadraticNonlinear(), SCIPcreateConsSOC(), SCIPcreateExprMonomial(), SCIPcreateExprQuadratic(), SCIPcreateNlpiProblemFromNlRows(), SCIPhasExprCurvature(), SCIPmultiplyBySumExprSum(), SCIPnlpiOracleChgExpr(), SCIPnlpiOracleDelVarSet(), SCIPpowerExprSum(), SCIPreplaceCommonSubexpressions(), SCIPwritePip(), setQuadraticObj(), setupProblem(), setupProblem(), setupProblem(), and simplifyTerm().
returns whether an expression is a variable expression
scip | SCIP data structure |
expr | expression |
Definition at line 1431 of file scip_expr.c.
References assert(), NULL, and SCIPexprIsVar().
Referenced by addSymmetryInformation(), analyzeViolation(), buildQuadExprMatrix(), catchVarEvent(), catchVarEvents(), checkAndCollectQuadratic(), collectLeafs(), computeGradient(), computeOffValues(), constructExpr(), createAuxVar(), createNlRow(), detectSocNorm(), detectSocQuadraticSimple(), doSeachEcAggr(), dropVarEvent(), exprIsSemicontinuous(), findUnlockedLinearVar(), forbidNonlinearVariablesMultiaggration(), forwardPropExpr(), generateCut(), generateCut(), getNLPVarsNonConvexity(), isBinaryProduct(), isCandidate(), isExprSignomial(), isPackingCons(), isSingleLockedCand(), nlrowaggrCreate(), presolveAddKKTQuadBilinearTerms(), presolveAddKKTQuadLinearTerms(), presolveAddKKTQuadQuadraticTerms(), presolveImplint(), presolveRedundantConss(), presolveSingleLockedVars(), printExpr(), printRow(), printRow(), printSignomial(), processNlRow(), propagateLocks(), readConstraints(), readObjective(), removeSingleLockedVars(), SCIP_DECL_CONSACTIVE(), SCIP_DECL_EVENTEXEC(), SCIP_DECL_EXPR_MAPEXPR(), SCIP_DECL_EXPR_MAPEXPR(), SCIP_DECL_EXPR_MAPEXPR(), SCIP_DECL_EXPR_MAPEXPR(), SCIP_DECL_EXPR_OWNERCREATE(), SCIP_DECL_EXPR_OWNERFREE(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NONLINCONSUPGD(), SCIPaddExprsViolScoreNonlinear(), SCIPaddExprViolScoreNonlinear(), SCIPaddNlRowGradientBenderscutOpt(), SCIPexprintCompile(), SCIPgetExprPartialDiffGradientDirNonlinear(), SCIPgetExprPartialDiffNonlinear(), SCIPisSOCNonlinear(), SCIPmarkExprPropagateNonlinear(), SCIPregisterExprUsageNonlinear(), SCIPwriteMps(), tryAddGadgetBilinearProductSignedPerm(), tryAddGadgetEvenOperator(), tryAddGadgetEvenOperatorSum(), tryAddGadgetEvenOperatorVariable(), and tryAddGadgetSquaredDifference().
returns whether an expression is a value expression
scip | SCIP data structure |
expr | expression |
Definition at line 1442 of file scip_expr.c.
References assert(), NULL, and SCIPexprIsValue().
Referenced by addSymmetryInformation(), canonicalizeConstraints(), constructExpr(), createAuxVar(), eval(), isExprSignomial(), mergeProductExprlist(), AMPLProblemHandler::OnBinary(), AMPLProblemHandler::OnObj(), presolveRedundantConss(), printExpr(), printSignomial(), readExpression(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWDIFF(), SCIP_DECL_EXPRBWFWDIFF(), SCIP_DECL_EXPRBWFWDIFF(), SCIP_DECL_EXPRFWDIFF(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIPexprintCompile(), SCIPgetExprPartialDiffGradientDirNonlinear(), SCIPgetExprPartialDiffNonlinear(), simplifyFactor(), simplifyTerm(), and tryAddGadgetEvenOperator().
returns whether an expression is a sum expression
scip | SCIP data structure |
expr | expression |
Definition at line 1453 of file scip_expr.c.
References assert(), NULL, and SCIPexprIsSum().
Referenced by addSymmetryInformation(), computeOffValues(), constructExpr(), createConstraint(), createNlRow(), DECL_CURVCHECK(), DECL_CURVCHECK(), DECL_CURVCHECK(), detectExpr(), detectSocNorm(), detectSocQuadraticComplex(), detectSocQuadraticSimple(), enforceSP12(), enforceSP12b(), eval(), exprIsMultivarLinear(), exprIsSemicontinuous(), findUnlockedLinearVar(), forbidNonlinearVariablesMultiaggration(), getBilinearBinaryTerms(), getFactorizedBinaryQuadraticExpr(), isExprPolynomial(), isPackingCons(), presolveImplint(), presolveSingleLockedVars(), printExpr(), printRowNl(), scaleConsSides(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLREVALAUX(), SCIP_DECL_NLHDLRINITSEPA(), SCIP_DECL_NLHDLRSOLLINEARIZE(), SCIP_DECL_NONLINCONSUPGD(), SCIPaddExprNonlinear(), SCIPaddLinearVarNonlinear(), SCIPappendExprSumExpr(), SCIPexprintCompile(), SCIPmultiplyBySumExprSum(), SCIPpowerExprSum(), simplifyFactor(), simplifyTerm(), transformExpr(), tryAddGadgetEvenOperator(), tryAddGadgetEvenOperatorSum(), and tryAddGadgetSquaredDifference().
returns whether an expression is a product expression
scip | SCIP data structure |
expr | expression |
Definition at line 1464 of file scip_expr.c.
References assert(), NULL, and SCIPexprIsProduct().
Referenced by addSymmetryInformation(), bilinearTermsInsertAll(), buildQuadExprMatrix(), checkAndCollectQuadratic(), DECL_CURVCHECK(), DECL_CURVCHECK(), DECL_CURVCHECK(), detectExpr(), detectMinors(), detectMinors(), detectSocQuadraticSimple(), eval(), getBinaryProductExprDo(), isBinaryProduct(), isExprSignomial(), isPackingCons(), presolveSingleLockedVars(), printExpr(), printSignomial(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLREVALAUX(), SCIP_DECL_NLHDLREVALAUX(), SCIPexprintCompile(), simplifyFactor(), simplifyTerm(), tryAddGadgetBilinearProductSignedPerm(), and tryAddGadgetSquaredDifference().
returns whether an expression is a power expression
scip | SCIP data structure |
expr | expression |
Definition at line 1475 of file scip_expr.c.
References assert(), NULL, and SCIPexprIsPower().
Referenced by bilinearTermsInsertAll(), buildQuadExprMatrix(), checkAndCollectQuadratic(), DECL_CURVCHECK(), DECL_CURVCHECK(), detectExpr(), detectMinors(), detectMinors(), detectSocNorm(), detectSocQuadraticSimple(), eval(), isEvenOperator(), isExprSignomial(), isPackingCons(), mergeProductExprlist(), presolveSingleLockedVars(), printExpr(), printSignomial(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLREVALAUX(), SCIPexprintCompile(), and tryAddGadgetSquaredDifference().
SCIP_RETCODE SCIPprintExpr | ( | SCIP * | scip, |
SCIP_EXPR * | expr, | ||
FILE * | file ) |
print an expression as info-message
scip | SCIP data structure |
expr | expression to be printed |
file | file to print to, or NULL for stdout |
Definition at line 1486 of file scip_expr.c.
References assert(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPexprPrint().
Referenced by analyzeViolation(), constructExpr(), createNlhdlrExprData(), DECL_CURVCHECK(), DECL_CURVCHECK(), DECL_CURVCHECK(), detectExpr(), detectSocNorm(), detectSocQuadraticComplex(), detectSocQuadraticSimple(), enforceConstraint(), enforceExpr(), enforceSP12(), estimateConvexSecant(), estimateGradient(), estimateVertexPolyhedral(), forwardPropExpr(), generateIntercut(), printFunction(), propagateBoundsLinExpr(), propagateBoundsQuadExpr(), readPolynomial(), reversePropQueue(), SCIP_DECL_CONSPRINT(), SCIP_DECL_EXPRINITESTIMATES(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRINTEVAL(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_EXPRREVERSEPROP(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_EXPRSIMPLIFY(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRENFO(), SCIP_DECL_NLHDLRENFO(), SCIP_DECL_NLHDLRESTIMATE(), SCIP_DECL_NLHDLRINITSEPA(), SCIP_DECL_NLHDLRINTEVAL(), SCIP_DECL_NLHDLRSOLLINEARIZE(), SCIPexprEvalActivity(), SCIPexprintGrad(), SCIPexprintHessian(), SCIPexprintHessianSparsity(), SCIPpowerExprSum(), SCIPprintExprQuadratic(), SCIPtightenExprIntervalNonlinear(), and simplifyMultiplyChildren().
SCIP_RETCODE SCIPprintExprDotInit | ( | SCIP * | scip, |
SCIP_EXPRPRINTDATA ** | printdata, | ||
FILE * | file, | ||
SCIP_EXPRPRINT_WHAT | whattoprint ) |
initializes printing of expressions in dot format to a give FILE* pointer
scip | SCIP data structure |
printdata | buffer to store dot printing data |
file | file to print to, or NULL for stdout |
whattoprint | info on what to print for each expression |
Definition at line 1501 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, and SCIPexprPrintDotInit().
Referenced by SCIPshowExpr().
SCIP_RETCODE SCIPprintExprDotInit2 | ( | SCIP * | scip, |
SCIP_EXPRPRINTDATA ** | printdata, | ||
const char * | filename, | ||
SCIP_EXPRPRINT_WHAT | whattoprint ) |
initializes printing of expressions in dot format to a file with given filename
scip | SCIP data structure |
printdata | buffer to store dot printing data |
filename | name of file to print to |
whattoprint | info on what to print for each expression |
Definition at line 1517 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, and SCIPexprPrintDotInit2().
SCIP_RETCODE SCIPprintExprDot | ( | SCIP * | scip, |
SCIP_EXPRPRINTDATA * | printdata, | ||
SCIP_EXPR * | expr ) |
main part of printing an expression in dot format
scip | SCIP data structure |
printdata | data as initialized by SCIPprintExprDotInit() |
expr | expression to be printed |
Definition at line 1533 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, and SCIPexprPrintDot().
Referenced by SCIPshowExpr().
SCIP_RETCODE SCIPprintExprDotFinal | ( | SCIP * | scip, |
SCIP_EXPRPRINTDATA ** | printdata ) |
finishes printing of expressions in dot format
scip | SCIP data structure |
printdata | buffer where dot printing data has been stored |
Definition at line 1547 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, and SCIPexprPrintDotFinal().
Referenced by SCIPshowExpr().
SCIP_RETCODE SCIPshowExpr | ( | SCIP * | scip, |
SCIP_EXPR * | expr ) |
shows a single expression by use of dot and gv
This function is meant for debugging purposes. It's signature is kept as simple as possible to make it easily callable from gdb, for example.
It prints the expression into a temporary file in dot format, then calls dot to create a postscript file, then calls ghostview (gv) to show the file. SCIP will hold until ghostscript is closed.
scip | SCIP data structure |
expr | expression to be printed |
Definition at line 1569 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL_TERMINATE, SCIP_ERROR, SCIP_EXPRPRINT_ALL, SCIP_FILECREATEERROR, SCIP_OKAY, SCIPerrorMessage, SCIPprintExprDot(), SCIPprintExprDotFinal(), and SCIPprintExprDotInit().
SCIP_RETCODE SCIPdismantleExpr | ( | SCIP * | scip, |
FILE * | file, | ||
SCIP_EXPR * | expr ) |
prints structure of an expression a la Maple's dismantle
scip | SCIP data structure |
file | file to print to, or NULL for stdout |
expr | expression to dismantle |
Definition at line 1608 of file scip_expr.c.
References assert(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPexprDismantle().
Referenced by detectSocQuadraticComplex(), and SCIP_DECL_EXPRESTIMATE().
SCIP_RETCODE SCIPevalExpr | ( | SCIP * | scip, |
SCIP_EXPR * | expr, | ||
SCIP_SOL * | sol, | ||
SCIP_Longint | soltag ) |
evaluate an expression in a point
Iterates over expressions to also evaluate children, if necessary. Value can be received via SCIPexprGetEvalValue(). If an evaluation error (division by zero, ...) occurs, this value will be set to SCIP_INVALID.
If a nonzero soltag
is passed, then only (sub)expressions are reevaluated that have a different solution tag. If a soltag of 0 is passed, then subexpressions are always reevaluated. The tag is stored together with the value and can be received via SCIPexprGetEvalTag().
scip | SCIP data structure |
expr | expression to be evaluated |
sol | solution to be evaluated |
soltag | tag that uniquely identifies the solution (with its values), or 0. |
Definition at line 1635 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, SCIPexprEval(), and sol.
Referenced by computeOffValues(), computeViolation(), enforceExpr(), estimateConvexSecant(), initSepa(), notifyNlhdlrNewsol(), SCIP_DECL_NLHDLREVALAUX(), SCIP_DECL_NLHDLRSOLLINEARIZE(), SCIP_DECL_VERTEXPOLYFUN(), SCIPexprintEval(), and SCIPgetExprAbsOrigViolationNonlinear().
SCIP_Longint SCIPgetExprNewSoltag | ( | SCIP * | scip | ) |
returns a previously unused solution tag for expression evaluation
scip | SCIP data structure |
Definition at line 1651 of file scip_expr.c.
References assert(), and NULL.
Referenced by consEnfo(), consSepa(), notifyNlhdlrNewsol(), SCIP_DECL_CONSCHECK(), and SCIP_DECL_CONSENFOPS().
SCIP_RETCODE SCIPevalExprGradient | ( | SCIP * | scip, |
SCIP_EXPR * | expr, | ||
SCIP_SOL * | sol, | ||
SCIP_Longint | soltag ) |
evaluates gradient of an expression for a given point
Initiates an expression walk to also evaluate children, if necessary. Value can be received via SCIPgetExprPartialDiffNonlinear(). If an error (division by zero, ...) occurs, this value will be set to SCIP_INVALID.
scip | SCIP data structure |
expr | expression to be differentiated |
sol | solution to be evaluated (NULL for the current LP solution) |
soltag | tag that uniquely identifies the solution (with its values), or 0. |
Definition at line 1667 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, SCIPexprEvalGradient(), and sol.
Referenced by computeGradient(), estimateGradientInner(), generateCut(), generateCut(), getConsRelViolation(), and SCIPaddNlRowGradientBenderscutOpt().
SCIP_RETCODE SCIPevalExprHessianDir | ( | SCIP * | scip, |
SCIP_EXPR * | expr, | ||
SCIP_SOL * | sol, | ||
SCIP_Longint | soltag, | ||
SCIP_SOL * | direction ) |
evaluates Hessian-vector product of an expression for a given point and direction
Evaluates children, if necessary. Value can be received via SCIPgetExprPartialDiffGradientDirNonlinear(). If an error (division by zero, ...) occurs, this value will be set to SCIP_INVALID.
scip | SCIP data structure |
expr | expression to be differentiated |
sol | solution to be evaluated (NULL for the current LP solution) |
soltag | tag that uniquely identifies the solution (with its values), or 0. |
direction | direction |
Definition at line 1689 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, SCIPexprEvalHessianDir(), and sol.
SCIP_RETCODE SCIPevalExprActivity | ( | SCIP * | scip, |
SCIP_EXPR * | expr ) |
possibly reevaluates and then returns the activity of the expression
Reevaluate activity if currently stored is no longer uptodate (some bound was changed since last evaluation).
The owner of the expression may overwrite the methods used to evaluate the activity, including whether the local or global domain of variables is used. By default (no owner, or owner doesn't overwrite activity evaluation), the local domain of variables is used.
scip | SCIP data structure |
expr | expression |
Definition at line 1717 of file scip_expr.c.
References assert(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPexprEvalActivity().
Referenced by checkSubproblemConvexity(), DECL_CURVCHECK(), DECL_CURVCHECK(), deinitSolve(), detectSocQuadraticComplex(), detectSocQuadraticSimple(), estimateBivariateQuotient(), estimateUnivariateQuotient(), initSepa(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRCURVATURE(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_EXPRMONOTONICITY(), SCIP_DECL_NLHDLRESTIMATE(), SCIP_DECL_NLHDLRINITSEPA(), SCIPregisterExprUsageNonlinear(), and tryFillNlhdlrExprDataQuad().
compare expressions
scip | SCIP data structure |
expr1 | first expression |
expr2 | second expression |
Definition at line 1734 of file scip_expr.c.
References assert(), NULL, and SCIPexprCompare().
Referenced by DECL_CURVCHECK(), enforceSP11(), mergeProductExprlist(), SCIP_DECL_EXPRCOMPARE(), SCIP_DECL_EXPRCOMPARE(), SCIP_DECL_EXPRCOMPARE(), SCIP_DECL_EXPRSIMPLIFY(), and SCIP_DECL_SORTINDCOMP().
SCIP_RETCODE SCIPhashExpr | ( | SCIP * | scip, |
SCIP_EXPR * | expr, | ||
unsigned int * | hashval ) |
compute the hash value of an expression
scip | SCIP data structure |
expr | expression |
hashval | pointer to store the hash value |
Definition at line 1746 of file scip_expr.c.
References assert(), FALSE, hashExpr(), i, NULL, SCIP_CALL, SCIP_EXPRITER_DFS, SCIP_EXPRITER_LEAVEEXPR, SCIP_OKAY, SCIPexpriterCreate(), SCIPexpriterFree(), SCIPexpriterGetExprUserData(), SCIPexpriterInit(), SCIPexpriterSetStagesDFS(), and SCIP_EXPRITER_USERDATA::uintval.
SCIP_RETCODE SCIPsimplifyExpr | ( | SCIP * | scip, |
SCIP_EXPR * | rootexpr, | ||
SCIP_EXPR ** | simplified, | ||
SCIP_Bool * | changed, | ||
SCIP_Bool * | infeasible, | ||
SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)) | , | ||
void * | ownercreatedata ) |
simplifies an expression
This is largely inspired by Joel Cohen's Computer algebra and symbolic computation: Mathematical methods, in particular Chapter 3. The other fountain of inspiration are the simplifying methods of expr.c in SCIP 7.
Note: The things to keep in mind when adding simplification rules are the following. I will be using the product expressions (see expr_product.c) as an example. There are mainly 3 parts of the simplification process. You need to decide at which stage the simplification rule makes sense.
During steps 1 and 2 do not forget to set the flag changed
to TRUE when something actually changes.
An expression is simplified if it
abs
expr*log(expr)
(TODO: we could handle more complicated stuff like \(xy\log(x) \to - y * \mathrm{entropy}(x)\), but I am not sure this should happen at the simplification level; similar for \((xy) \log(xy)\), which currently simplifies to \(xy \log(xy)\))exp
is a signedpower expression such that
TODO: Some of these criteria are too restrictive for signed powers; for example, the exponent does not need to be an integer for signedpower to distribute over a product (SPOW5, SPOW6, SPOW8). Others can also be improved.
Equal type expressions:
SCIPvarGetIndex(var(u))
< SCIPvarGetIndex(var(v))
Different type expressions:
Examples:
The recursive version of the algorithm is
EXPR simplify(expr) for c in 1..expr->nchildren expr->children[c] = simplify(expr->children[c]) end return expr->exprhdlr->simplify(expr) end
Important: Whatever is returned by a simplify callback has to be simplified. Also, all children of the given expression are already simplified.
simplifies an expression (duplication of long doxygen comment omitted here)
scip | SCIP data structure |
rootexpr | expression to be simplified |
simplified | buffer to store simplified expression |
changed | buffer to store if rootexpr actually changed |
infeasible | buffer to store whether infeasibility has been detected |
ownercreatedata | data to pass to ownercreate |
Definition at line 1773 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, and SCIPexprSimplify().
Referenced by canonicalizeConstraints(), SCIP_DECL_CONSACTIVE(), SCIPmultiplyBySumExprSum(), SCIPpowerExprSum(), and SCIPwritePip().
SCIP_RETCODE SCIPgetSymDataExpr | ( | SCIP * | scip, |
SCIP_EXPR * | expr, | ||
SYM_EXPRDATA ** | symdata ) |
retrieves symmetry information from an expression
scip | SCIP data structure |
expr | expression from which information needs to be retrieved |
symdata | buffer to store symmetry data |
Definition at line 1792 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, and SCIPexprGetSymData().
Referenced by addSymmetryInformation(), isEvenOperator(), SCIPgetCoefSymData(), tryAddGadgetBilinearProductSignedPerm(), and tryAddGadgetSquaredDifference().
SCIP_RETCODE SCIPreplaceCommonSubexpressions | ( | SCIP * | scip, |
SCIP_EXPR ** | exprs, | ||
int | nexprs, | ||
SCIP_Bool * | replacedroot ) |
replaces common sub-expressions in a given expression graph by using a hash key for each expression
The algorithm consists of two steps:
scip | SCIP data structure |
exprs | expressions (possibly replaced by equivalent on output) |
nexprs | total number of expressions |
replacedroot | buffer to store whether any root expression (expression in exprs) was replaced |
Definition at line 1820 of file scip_expr.c.
References assert(), FALSE, findEqualExpr(), hashExpr(), i, NULL, SCIP_CALL, SCIP_EXPRITER_DFS, SCIP_EXPRITER_LEAVEEXPR, SCIP_EXPRITER_VISITINGCHILD, SCIP_OKAY, SCIPcreateExpriter(), SCIPdebugMsg, SCIPexprCapture(), SCIPexprCompare(), SCIPexpriterFree(), SCIPexpriterGetChildExprDFS(), SCIPexpriterGetChildIdxDFS(), SCIPexpriterGetCurrent(), SCIPexpriterGetNext(), SCIPexpriterInit(), SCIPexpriterIsEnd(), SCIPexpriterSetStagesDFS(), SCIPexpriterSkipDFS(), SCIPmultihashCreate(), SCIPmultihashFree(), SCIPreleaseExpr(), SCIPreplaceExprChild(), and TRUE.
Referenced by canonicalizeConstraints(), and SCIP_DECL_CONSACTIVE().
SCIP_RETCODE SCIPcomputeExprCurvature | ( | SCIP * | scip, |
SCIP_EXPR * | expr ) |
computes the curvature of a given expression and all its subexpressions
scip | SCIP data structure |
expr | expression |
Definition at line 1935 of file scip_expr.c.
References assert(), c, FALSE, i, NULL, SCIP_CALL, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_EXPRCURV_LINEAR, SCIP_EXPRCURV_UNKNOWN, SCIP_EXPRITER_DFS, SCIP_EXPRITER_LEAVEEXPR, SCIP_OKAY, SCIPallocBufferArray, SCIPcalcMemGrowSize(), SCIPexprGetChildren(), SCIPexprGetCurvature(), SCIPexprGetHdlr(), SCIPexprGetNChildren(), SCIPexprhdlrCurvatureExpr(), SCIPexprhdlrHasCurvature(), SCIPexpriterCreate(), SCIPexpriterFree(), SCIPexpriterGetCurrent(), SCIPexpriterGetNext(), SCIPexpriterInit(), SCIPexpriterIsEnd(), SCIPexpriterSetStagesDFS(), SCIPexprSetCurvature(), SCIPfreeBufferArray, and SCIPreallocBufferArray.
SCIP_RETCODE SCIPcomputeExprIntegrality | ( | SCIP * | scip, |
SCIP_EXPR * | expr ) |
computes integrality information of a given expression and all its subexpressions
The integrality information can be accessed via SCIPexprIsIntegral().
scip | SCIP data structure |
expr | expression |
Definition at line 2015 of file scip_expr.c.
References assert(), FALSE, i, NULL, SCIP_CALL, SCIP_EXPRITER_DFS, SCIP_EXPRITER_LEAVEEXPR, SCIP_OKAY, SCIPexprGetHdlr(), SCIPexprGetNChildren(), SCIPexprhdlrIntegralityExpr(), SCIPexpriterCreate(), SCIPexpriterFree(), SCIPexpriterGetCurrent(), SCIPexpriterGetNext(), SCIPexpriterInit(), SCIPexpriterIsEnd(), SCIPexpriterSetStagesDFS(), and SCIPexprSetIntegrality().
Referenced by collectLeafs(), and detectNlhdlrs().
SCIP_RETCODE SCIPgetExprNVars | ( | SCIP * | scip, |
SCIP_EXPR * | expr, | ||
int * | nvars ) |
returns the total number of variable expressions in an expression
The function counts variable expressions in common sub-expressions only once, but counts variables appearing in several variable expressions multiple times.
scip | SCIP data structure |
expr | expression |
nvars | buffer to store the total number of variables |
Definition at line 2058 of file scip_expr.c.
References assert(), FALSE, i, NULL, nvars, SCIP_CALL, SCIP_EXPRITER_DFS, SCIP_OKAY, SCIPexprIsVar(), SCIPexpriterCreate(), SCIPexpriterFree(), SCIPexpriterGetNext(), SCIPexpriterInit(), and SCIPexpriterIsEnd().
Referenced by SCIP_DECL_NLHDLRDETECT(), and storeVarExprs().
SCIP_RETCODE SCIPgetExprVarExprs | ( | SCIP * | scip, |
SCIP_EXPR * | expr, | ||
SCIP_EXPR ** | varexprs, | ||
int * | nvarexprs ) |
returns all variable expressions contained in a given expression
The array to store all variable expressions needs to be at least of size the number of unique variable expressions in the expression which is given by SCIPgetExprNVars().
If every variable is represented by only one variable expression (common subexpression have been removed) then SCIPgetExprNVars() can be bounded by SCIPgetNTotalVars(). If, in addition, non-active variables have been removed from the expression, e.g., by simplifying, then SCIPgetExprNVars() can be bounded by SCIPgetNVars().
scip | SCIP data structure |
expr | expression |
varexprs | array to store all variable expressions |
nvarexprs | buffer to store the total number of variable expressions |
Definition at line 2096 of file scip_expr.c.
References assert(), FALSE, i, NULL, SCIP_CALL, SCIP_EXPRITER_DFS, SCIP_OKAY, SCIPcaptureExpr(), SCIPexprIsVar(), SCIPexpriterCreate(), SCIPexpriterFree(), SCIPexpriterGetNext(), SCIPexpriterInit(), and SCIPexpriterIsEnd().
Referenced by computeOffValues(), SCIP_DECL_NLHDLRDETECT(), and storeVarExprs().
SCIP_DECL_EXPRPRINT | ( | SCIPcallExprPrint | ) |
calls the print callback for an expression
Definition at line 2139 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, SCIPexprGetHdlr(), and SCIPexprhdlrPrintExpr().
SCIP_DECL_EXPRCURVATURE | ( | SCIPcallExprCurvature | ) |
calls the curvature callback for an expression
Returns unknown curvature if callback not implemented.
Definition at line 2154 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, SCIPexprGetHdlr(), and SCIPexprhdlrCurvatureExpr().
SCIP_DECL_EXPRMONOTONICITY | ( | SCIPcallExprMonotonicity | ) |
calls the monotonicity callback for an expression
Returns unknown monotonicity if callback not implemented.
Definition at line 2169 of file scip_expr.c.
References assert(), i, NULL, result, SCIP_CALL, SCIP_OKAY, SCIPexprGetHdlr(), and SCIPexprhdlrMonotonicityExpr().
SCIP_RETCODE SCIPcallExprEval | ( | SCIP * | scip, |
SCIP_EXPR * | expr, | ||
SCIP_Real * | childrenvalues, | ||
SCIP_Real * | val ) |
calls the eval callback for an expression with given values for children
Does not iterates over expressions, but requires values for children to be given. Value is not stored in expression, but returned in val
. If an evaluation error (division by zero, ...) occurs, this value will be set to SCIP_INVALID
.
scip | SCIP data structure |
expr | expression to be evaluated |
childrenvalues | values for children |
val | buffer to store evaluated value |
Definition at line 2185 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, SCIPexprGetHdlr(), and SCIPexprhdlrEvalExpr().
Referenced by evalExprInAux().
SCIP_RETCODE SCIPcallExprEvalFwdiff | ( | SCIP * | scip, |
SCIP_EXPR * | expr, | ||
SCIP_Real * | childrenvalues, | ||
SCIP_Real * | direction, | ||
SCIP_Real * | val, | ||
SCIP_Real * | dot ) |
calls the eval and fwdiff callback of an expression with given values for children
Does not iterates over expressions, but requires values for children and direction to be given.
Value is not stored in expression, but returned in val
. If an evaluation error (division by zero, ...) occurs, this value will be set to SCIP_INVALID
.
Direction is not stored in expression, but returned in dot
. If an differentiation error (division by zero, ...) occurs, this value will be set to SCIP_INVALID
.
scip | SCIP data structure |
expr | expression to be evaluated |
childrenvalues | values for children |
direction | direction in which to differentiate |
val | buffer to store evaluated value |
dot | buffer to store derivative value |
Definition at line 2212 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, SCIPexprGetHdlr(), and SCIPexprhdlrEvalFwDiffExpr().
SCIP_DECL_EXPRINTEVAL | ( | SCIPcallExprInteval | ) |
calls the interval evaluation callback for an expression
Returns entire interval if callback not implemented.
Definition at line 2236 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, SCIPexprGetHdlr(), and SCIPexprhdlrIntEvalExpr().
SCIP_DECL_EXPRESTIMATE | ( | SCIPcallExprEstimate | ) |
calls the estimate callback for an expression
Returns without success if callback not implemented.
Definition at line 2251 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, SCIPexprGetHdlr(), and SCIPexprhdlrEstimateExpr().
SCIP_DECL_EXPRINITESTIMATES | ( | SCIPcallExprInitestimates | ) |
calls the initial estimators callback for an expression
Returns no estimators if callback not implemented.
Definition at line 2267 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, SCIPexprGetHdlr(), and SCIPexprhdlrInitEstimatesExpr().
SCIP_DECL_EXPRSIMPLIFY | ( | SCIPcallExprSimplify | ) |
calls the simplify callback for an expression
Returns unmodified expression if simplify callback not implemented.
Does not simplify descendants (children, etc). Use SCIPsimplifyExpr() for that.
Definition at line 2285 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, SCIPexprGetHdlr(), and SCIPexprhdlrSimplifyExpr().
SCIP_DECL_EXPRREVERSEPROP | ( | SCIPcallExprReverseprop | ) |
calls the reverse propagation callback for an expression
Returns unmodified childrenbounds
if reverseprop callback not implemented.
calls the reverse propagation callback for an expression
Returns unmodified childrenbounds if reverseprop callback not implemented.
Definition at line 2302 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, SCIPexprGetHdlr(), and SCIPexprhdlrReversePropExpr().
SCIP_DECL_EXPRGETSYMDATA | ( | SCIPcallExprGetSymData | ) |
calls the symmetry information callback for an expression
Returns NULL pointer if not implemented.
calls the symmetry data callback for an expression
Returns no information if not implemented.
Definition at line 2315 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, and SCIPexprGetSymData().
SCIP_RETCODE SCIPcreateExpriter | ( | SCIP * | scip, |
SCIP_EXPRITER ** | iterator ) |
creates an expression iterator
scip | SCIP data structure |
iterator | buffer to store expression iterator |
Definition at line 2337 of file scip_expr.c.
References assert(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPexpriterCreate().
Referenced by addExprViolScoresAuxVars(), addSymmetryInformation(), analyzeViolation(), bilinearTermsInsertAll(), canonicalizeConstraints(), collectBranchingCandidates(), collectLeafs(), computeOffValues(), constructExpr(), createNlhdlrExprData(), deinitSolve(), detectMinors(), detectMinors(), detectNlhdlrs(), enforceConstraints(), exprIsNonSmooth(), exprIsSemicontinuous(), forbidNonlinearVariablesMultiaggration(), forwardPropExpr(), improvePoint(), initSepa(), notifyNlhdlrNewsol(), presolveBinaryProducts(), presolveSingleLockedVars(), printExpr(), processNlRow(), propagateLocks(), propConss(), propExprDomains(), registerBranchingCandidates(), SCIP_DECL_CONSACTIVE(), SCIP_DECL_TABLEOUTPUT(), SCIPaddExprsViolScoreNonlinear(), SCIPaddNlRowGradientBenderscutOpt(), SCIPcreateNlpiProblemFromNlRows(), SCIPexprintCompile(), SCIPmarkExprPropagateNonlinear(), SCIPnlpiOracleDelVarSet(), SCIPnlpiOracleGetJacobianSparsity(), SCIPregisterExprUsageNonlinear(), SCIPreplaceCommonSubexpressions(), separateCuts(), separateCuts(), and updateVariableCounts().
void SCIPfreeExpriter | ( | SCIP_EXPRITER ** | iterator | ) |
frees an expression iterator
iterator | pointer to the expression iterator |
Definition at line 2351 of file scip_expr.c.
References SCIPexpriterFree().
Referenced by addExprViolScoresAuxVars(), addSymmetryInformation(), analyzeViolation(), bilinearTermsInsertAll(), canonicalizeConstraints(), collectBranchingCandidates(), collectLeafs(), computeOffValues(), constructExpr(), createNlhdlrExprData(), deinitSolve(), detectMinors(), detectMinors(), detectNlhdlrs(), enforceConstraints(), exprIsNonSmooth(), exprIsSemicontinuous(), forbidNonlinearVariablesMultiaggration(), forwardPropExpr(), improvePoint(), initSepa(), notifyNlhdlrNewsol(), presolveBinaryProducts(), presolveSingleLockedVars(), printExpr(), processNlRow(), propagateLocks(), propConss(), propExprDomains(), registerBranchingCandidates(), SCIP_DECL_CONSACTIVE(), SCIP_DECL_TABLEOUTPUT(), SCIPaddExprsViolScoreNonlinear(), SCIPaddNlRowGradientBenderscutOpt(), SCIPcreateNlpiProblemFromNlRows(), SCIPexprintCompile(), SCIPmarkExprPropagateNonlinear(), SCIPnlpiOracleDelVarSet(), SCIPnlpiOracleGetJacobianSparsity(), SCIPregisterExprUsageNonlinear(), separateCuts(), separateCuts(), and updateVariableCounts().
SCIP_RETCODE SCIPcheckExprQuadratic | ( | SCIP * | scip, |
SCIP_EXPR * | expr, | ||
SCIP_Bool * | isquadratic ) |
checks whether an expression is quadratic
An expression is quadratic if it is either a square (of some expression), a product (of two expressions), or a sum of terms where at least one is a square or a product.
Use SCIPexprGetQuadraticData() to get data about the representation as quadratic.
scip | SCIP data structure |
expr | expression |
isquadratic | buffer to store result |
Definition at line 2377 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, and SCIPexprCheckQuadratic().
Referenced by DECL_CURVCHECK(), isCandidate(), printNonlinearCons(), processNlRow(), SCIP_DECL_NLHDLRDETECT(), SCIPcheckQuadraticNonlinear(), and SCIPwritePip().
frees information on quadratic representation of an expression
Before doing changes to an expression, it can be useful to call this function.
scip | SCIP data structure |
expr | expression |
Definition at line 2395 of file scip_expr.c.
References assert(), NULL, and SCIPexprFreeQuadratic().
Referenced by deinitSolve().
evaluates quadratic term in a solution
scip | SCIP data structure |
expr | quadratic expression |
sol | solution to evaluate, or NULL for LP solution |
Definition at line 2410 of file scip_expr.c.
References assert(), i, NULL, SCIPexprGetQuadraticBilinTerm(), SCIPexprGetQuadraticData(), SCIPexprGetQuadraticQuadTerm(), SCIPexprIsVar(), SCIPgetSolVal(), SCIPgetVarExprVar(), and sol.
SCIP_RETCODE SCIPprintExprQuadratic | ( | SCIP * | scip, |
SCIP_EXPR * | expr ) |
prints quadratic expression
scip | SCIP data structure |
expr | quadratic expression |
Definition at line 2470 of file scip_expr.c.
References assert(), c, i, NULL, SCIP_CALL, SCIP_OKAY, SCIPexprGetQuadraticBilinTerm(), SCIPexprGetQuadraticData(), SCIPexprGetQuadraticQuadTerm(), SCIPinfoMessage(), and SCIPprintExpr().
Referenced by SCIP_DECL_NLHDLRDETECT().
SCIP_RETCODE SCIPcomputeExprQuadraticCurvature | ( | SCIP * | scip, |
SCIP_EXPR * | expr, | ||
SCIP_EXPRCURV * | curv, | ||
SCIP_HASHMAP * | assumevarfixed, | ||
SCIP_Bool | storeeigeninfo ) |
checks the curvature of the quadratic expression
For this, it builds the matrix Q of quadratic coefficients and computes its eigenvalues using LAPACK. If Q is
If assumevarfixed
is given and some expressions in quadratic terms correspond to variables present in this hashmap, then the corresponding rows and columns are ignored in the matrix Q.
scip | SCIP data structure |
expr | quadratic expression |
curv | pointer to store the curvature of quadratics |
assumevarfixed | hashmap containing variables that should be assumed to be fixed, or NULL |
storeeigeninfo | whether the eigenvalues and eigenvectors should be stored |
Definition at line 2586 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, and SCIPexprComputeQuadraticCurvature().
Referenced by DECL_CURVCHECK(), SCIP_DECL_NLHDLRDETECT(), and SCIP_DECL_PRESOLEXEC().
SCIP_RETCODE SCIPgetExprMonomialData | ( | SCIP * | scip, |
SCIP_EXPR * | expr, | ||
SCIP_Real * | coef, | ||
SCIP_Real * | exponents, | ||
SCIP_EXPR ** | factors ) |
returns a monomial representation of a product expression
The array to store all factor expressions needs to be of size the number of children in the expression which is given by SCIPexprGetNChildren().
Given a non-trivial monomial expression, the function finds its representation as \(cx^\alpha\), where \(c\) is a real coefficient, \(x\) is a vector of auxiliary or original variables (where some entries can be NULL is the auxiliary variable has not been created yet), and \(\alpha\) is a real vector of exponents.
A non-trivial monomial is a product of a least two expressions.
scip | SCIP data structure |
expr | expression |
coef | coefficient \(c\) |
exponents | exponents \(\alpha\) |
factors | factor expressions \(x\) |
Definition at line 2623 of file scip_expr.c.
References assert(), i, NULL, SCIP_CALL, SCIP_OKAY, and SCIPexprGetMonomialData().