public methods for expressions, expression trees, expression graphs, and related stuff
Definition in file pub_expr.h.
#include "scip/def.h"
#include "scip/pub_message.h"
#include "scip/intervalarith.h"
#include "blockmemshell/memory.h"
#include "nlpi/type_expr.h"
#include "nlpi/type_exprinterpret.h"
Go to the source code of this file.
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 205 of file expr.c.
Referenced by checkCurvature(), and SCIP_DECL_EXPRCURV().
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 214 of file expr.c.
References SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_EXPRCURV_LINEAR, SCIP_EXPRCURV_UNKNOWN, SCIPABORT, and SCIPerrorMessage.
Referenced by reformulate(), SCIP_DECL_EXPRCURV(), SCIPexprcurvMonomial(), 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 240 of file expr.c.
References SCIP_EXPRCURV_LINEAR, and SCIPexprcurvNegate().
Referenced by checkCurvature(), reformulate(), SCIP_DECL_EXPRCURV(), SCIPexprcurvMonomial(), and SCIPexprgraphGetNodePolynomialMonomialCurvature().
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 253 of file expr.c.
References EPSISINT, SCIP_Interval::inf, SCIP_Bool, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_EXPRCURV_LINEAR, SCIP_EXPRCURV_UNKNOWN, SCIP_Real, SCIPexprcurvPower(), SCIPintervalSetBounds(), sign(), and SCIP_Interval::sup.
Referenced by reformulate(), SCIP_DECL_EXPRCURV(), SCIPexprcurvMonomial(), and SCIPexprcurvPower().
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
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.
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 361 of file expr.c.
References EPSGE, EPSISINT, EPSLE, FALSE, SCIP_Bool, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_EXPRCURV_LINEAR, SCIP_EXPRCURV_UNKNOWN, SCIP_Real, SCIPexprcurvMultiply(), SCIPexprcurvNegate(), SCIPexprcurvPower(), and TRUE.
Referenced by SCIP_DECL_EXPRCURV(), and SCIPexprgraphGetNodePolynomialMonomialCurvature().
const char* SCIPexprcurvGetName | ( | SCIP_EXPRCURV | curv | ) |
gives name as string for a curvature
curv | curvature |
Definition at line 474 of file expr.c.
References curvnames, and SCIP_EXPRCURV_LINEAR.
Referenced by checkCurvature(), reformEnsureChildrenMinCurvature(), reformulate(), and registerBranchingVariables().
const char* SCIPexpropGetName | ( | SCIP_EXPROP | op | ) |
gives the name of an operand
gives the name of an operand as string
op | expression operand |
Definition at line 3263 of file expr.c.
References SCIP_EXPR_LAST.
Referenced by exprgraphNodeUpdateBounds(), exprgraphPrintNodeExpression(), getCoeffsAndConstantFromLinearExpr(), printExpr(), printRowNl(), reformulate(), SCIPexprgraphNodeSplitOffLinear(), SCIPexprgraphReleaseNode(), SCIPexprgraphUpdateNodeBoundsCurvature(), and SCIPwritePip().
int SCIPexpropGetNChildren | ( | SCIP_EXPROP | op | ) |
gives the number of children of a simple operand
gives the number of children of a simple operand
op | expression operand |
Definition at line 3273 of file expr.c.
References SCIP_EXPR_LAST.
SCIP_EXPROP SCIPexprGetOperator | ( | SCIP_EXPR * | expr | ) |
gives operator of expression
expr | expression |
Definition at line 5693 of file expr.c.
References SCIP_Expr::op.
Referenced by addUserEstimator(), analyzeTree(), atomic_userexpr< Type >::atomic_userexpr(), checkCurvature(), eval(), exprIsNonSmooth(), exprParse(), exprsimplifyFlattenPolynomials(), exprsimplifyRemoveDuplicatePolynomialChildren(), exprsimplifyRemovePolynomialNullChildren(), exprsimplifySeparateLinearFromPolynomial(), generateCut(), generateOrthogonal_lx_ly_Underestimator(), generateOrthogonal_lx_uy_Underestimator(), generateUnderestimatorParallelYFacets(), getCoeffsAndConstantFromLinearExpr(), getLinearAndQuadraticCoefs(), initSepaDataCreateVred(), printExpr(), printRowNl(), readConstraints(), readExpression(), readObjective(), SCIPexprAdd(), SCIPexprMulConstant(), and SCIPwritePip().
int SCIPexprGetNChildren | ( | SCIP_EXPR * | expr | ) |
gives number of children of an expression
expr | expression |
Definition at line 5703 of file expr.c.
References SCIP_Expr::nchildren.
Referenced by addUserEstimator(), analyzeTree(), atomic_userexpr< Type >::atomic_userexpr(), eval(), evalUser(), exprIsNonSmooth(), exprsimplifyFlattenPolynomials(), exprsimplifySeparateLinearFromPolynomial(), getCoeffsAndConstantFromLinearExpr(), getExprSize(), getLinearAndQuadraticCoefs(), printExpr(), printRowNl(), readObjective(), SCIPexprAdd(), SCIPexprMulConstant(), and SCIPwritePip().
gives pointer to array with children of an expression
expr | expression |
Definition at line 5713 of file expr.c.
References SCIP_Expr::children.
Referenced by addUserEstimator(), analyzeTree(), eval(), exprIsNonSmooth(), getCoeffsAndConstantFromLinearExpr(), getExprSize(), getLinearAndQuadraticCoefs(), printExpr(), printRowNl(), readObjective(), SCIPexprAdd(), and SCIPwritePip().
int SCIPexprGetOpIndex | ( | SCIP_EXPR * | expr | ) |
gives index belonging to a SCIP_EXPR_VARIDX or SCIP_EXPR_PARAM operand
expr | expression |
Definition at line 5723 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::op, SCIP_EXPR_PARAM, and SCIP_EXPR_VARIDX.
Referenced by eval(), exprsimplifySeparateLinearFromPolynomial(), getCoeffsAndConstantFromLinearExpr(), getLinearAndQuadraticCoefs(), printExpr(), printRowNl(), and readObjective().
gives real belonging to a SCIP_EXPR_CONST operand
expr | expression |
Definition at line 5734 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::op, and SCIP_EXPR_CONST.
Referenced by eval(), exprParse(), exprsimplifyFlattenPolynomials(), getCoeffsAndConstantFromLinearExpr(), printExpr(), printRowNl(), readExpression(), SCIPexprAdd(), and SCIPexprMulConstant().
void* SCIPexprGetOpData | ( | SCIP_EXPR * | expr | ) |
gives void* belonging to a complex operand
expr | expression |
Definition at line 5745 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::op, and SCIP_EXPR_SUM.
gives exponent belonging to a SCIP_EXPR_REALPOWER expression
expr | expression |
Definition at line 5756 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::op, and SCIP_EXPR_REALPOWER.
Referenced by eval(), printExpr(), printRowNl(), and SCIPwritePip().
int SCIPexprGetIntPowerExponent | ( | SCIP_EXPR * | expr | ) |
gives exponent belonging to a SCIP_EXPR_INTPOWER expression
expr | expression |
Definition at line 5767 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::op, and SCIP_EXPR_INTPOWER.
Referenced by eval(), printExpr(), printRowNl(), and SCIPwritePip().
gives exponent belonging to a SCIP_EXPR_SIGNPOWER expression
expr | expression |
Definition at line 5778 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::op, and SCIP_EXPR_SIGNPOWER.
Referenced by atomic_signpower< Type >::atomic_signpower(), evalSignPower(), and printExpr().
gives linear coefficients belonging to a SCIP_EXPR_LINEAR expression
expr | expression |
Definition at line 5789 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::op, SCIP_EXPR_LINEAR, and SCIP_Real.
Referenced by eval(), getCoeffsAndConstantFromLinearExpr(), printExpr(), printRowNl(), and SCIPexprAdd().
gives constant belonging to a SCIP_EXPR_LINEAR expression
expr | expression |
Definition at line 5802 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::nchildren, SCIP_Expr::op, SCIP_EXPR_LINEAR, and SCIP_Real.
Referenced by eval(), getCoeffsAndConstantFromLinearExpr(), printExpr(), printRowNl(), and SCIPexprAdd().
SCIP_QUADELEM* SCIPexprGetQuadElements | ( | SCIP_EXPR * | expr | ) |
gives quadratic elements belonging to a SCIP_EXPR_QUADRATIC expression
expr | quadratic expression |
Definition at line 5815 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::op, and SCIP_EXPR_QUADRATIC.
Referenced by eval(), printExpr(), and printRowNl().
gives constant belonging to a SCIP_EXPR_QUADRATIC expression
expr | quadratic expression |
Definition at line 5827 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::op, and SCIP_EXPR_QUADRATIC.
Referenced by eval(), printExpr(), and printRowNl().
gives linear coefficients belonging to a SCIP_EXPR_QUADRATIC expression can be NULL if all coefficients are 0.0
expr | quadratic expression |
Definition at line 5840 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::op, and SCIP_EXPR_QUADRATIC.
Referenced by eval(), printExpr(), and printRowNl().
int SCIPexprGetNQuadElements | ( | SCIP_EXPR * | expr | ) |
gives number of quadratic elements belonging to a SCIP_EXPR_QUADRATIC expression
expr | quadratic expression |
Definition at line 5852 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::op, and SCIP_EXPR_QUADRATIC.
Referenced by eval(), printExpr(), and printRowNl().
SCIP_EXPRDATA_MONOMIAL** SCIPexprGetMonomials | ( | SCIP_EXPR * | expr | ) |
gives the monomials belonging to a SCIP_EXPR_POLYNOMIAL expression
expr | expression |
Definition at line 5864 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::op, and SCIP_EXPR_POLYNOMIAL.
Referenced by eval(), getLinearAndQuadraticCoefs(), printExpr(), printRowNl(), readObjective(), and SCIPwritePip().
int SCIPexprGetNMonomials | ( | SCIP_EXPR * | expr | ) |
gives the number of monomials belonging to a SCIP_EXPR_POLYNOMIAL expression
expr | expression |
Definition at line 5876 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::op, and SCIP_EXPR_POLYNOMIAL.
Referenced by eval(), exprsimplifyFlattenPolynomials(), getLinearAndQuadraticCoefs(), printExpr(), printRowNl(), readConstraints(), readObjective(), and SCIPwritePip().
gives the constant belonging to a SCIP_EXPR_POLYNOMIAL expression
expr | expression |
Definition at line 5888 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::op, and SCIP_EXPR_POLYNOMIAL.
Referenced by eval(), getLinearAndQuadraticCoefs(), printExpr(), printRowNl(), and readObjective().
SCIP_Real SCIPexprGetMonomialCoef | ( | SCIP_EXPRDATA_MONOMIAL * | monomial | ) |
gets coefficient of a monomial
monomial | monomial |
Definition at line 5900 of file expr.c.
References SCIP_ExprData_Monomial::coef.
Referenced by eval(), getLinearAndQuadraticCoefs(), printExpr(), printRowNl(), readObjective(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
int SCIPexprGetMonomialNFactors | ( | SCIP_EXPRDATA_MONOMIAL * | monomial | ) |
gets number of factors of a monomial
monomial | monomial |
Definition at line 5910 of file expr.c.
References SCIP_ExprData_Monomial::nfactors.
Referenced by eval(), getLinearAndQuadraticCoefs(), printExpr(), printRowNl(), readObjective(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), SCIP_DECL_NONLINCONSUPGD(), and SCIPwritePip().
int* SCIPexprGetMonomialChildIndices | ( | SCIP_EXPRDATA_MONOMIAL * | monomial | ) |
gets indices of children corresponding to factors of a monomial
monomial | monomial |
Definition at line 5920 of file expr.c.
References SCIP_ExprData_Monomial::childidxs.
Referenced by eval(), getLinearAndQuadraticCoefs(), printExpr(), printRowNl(), readObjective(), and reformulate().
SCIP_Real* SCIPexprGetMonomialExponents | ( | SCIP_EXPRDATA_MONOMIAL * | monomial | ) |
gets exponents in factors of a monomial
monomial | monomial |
Definition at line 5930 of file expr.c.
References SCIP_ExprData_Monomial::exponents.
Referenced by eval(), getLinearAndQuadraticCoefs(), printExpr(), printRowNl(), readObjective(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), SCIP_DECL_NONLINCONSUPGD(), and SCIPwritePip().
SCIP_USEREXPRDATA* SCIPexprGetUserData | ( | SCIP_EXPR * | expr | ) |
gets user data of a user expression
Definition at line 5940 of file expr.c.
References SCIP_Expr::data.
indicates whether a user expression has the estimator callback defined
Definition at line 5951 of file expr.c.
References SCIP_Expr::data.
Referenced by addUserEstimator().
SCIP_EXPRINTCAPABILITY SCIPexprGetUserEvalCapability | ( | SCIP_EXPR * | expr | ) |
gives the evaluation capability of a user expression
Definition at line 5962 of file expr.c.
References SCIP_Expr::data.
Referenced by analyzeTree().
SCIP_RETCODE SCIPexprCreate | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR ** | expr, | ||
SCIP_EXPROP | op, | ||
... | |||
) |
creates a simple expression
blkmem | block memory data structure |
expr | pointer to buffer for expression address |
op | operand of expression |
Definition at line 5973 of file expr.c.
References BMSallocBlockMemoryArray, BMSduplicateBlockMemoryArray, SCIP_Expr::data, exprCreate(), SCIP_ALLOC, SCIP_CALL, SCIP_EXPR_ABS, SCIP_EXPR_CONST, SCIP_EXPR_COS, SCIP_EXPR_DIV, SCIP_EXPR_EXP, SCIP_EXPR_INTPOWER, SCIP_EXPR_LAST, SCIP_EXPR_LINEAR, SCIP_EXPR_LOG, SCIP_EXPR_MAX, SCIP_EXPR_MIN, SCIP_EXPR_MINUS, SCIP_EXPR_MUL, SCIP_EXPR_PARAM, SCIP_EXPR_PLUS, SCIP_EXPR_POLYNOMIAL, SCIP_EXPR_PRODUCT, SCIP_EXPR_QUADRATIC, SCIP_EXPR_REALPOWER, SCIP_EXPR_SIGN, SCIP_EXPR_SIGNPOWER, SCIP_EXPR_SIN, SCIP_EXPR_SQRT, SCIP_EXPR_SQUARE, SCIP_EXPR_SUM, SCIP_EXPR_TAN, SCIP_EXPR_USER, SCIP_EXPR_VARIDX, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPABORT, and SCIPerrorMessage.
Referenced by createConsFromQuadTerm(), createExprtreeFromMonomial(), createNlRow(), exprgraphNodeCreateExpr(), exprParse(), exprparseReadVariable(), generate1ConvexIndefiniteUnderestimatorInTheInteriorPatternA(), generate1ConvexIndefiniteUnderestimatorInTheInteriorPatternB(), generateOrthogonal_lx_ly_Underestimator(), generateOrthogonal_lx_uy_Underestimator(), generateUnderestimatorParallelYFacets(), initSepaData(), initSepaDataCreateVred(), readExpression(), readNonlinearExprs(), readPolynomial(), removeFixedVariables(), SCIPexprAdd(), SCIPexprgraphGetSeparableTrees(), SCIPexprgraphGetSumTrees(), SCIPexprMulConstant(), SCIPexprtreeAddExpr(), SCIPexprtreeRemoveFixedVars(), SCIPwritePip(), and setupProblem().
SCIP_RETCODE SCIPexprCopyDeep | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR ** | targetexpr, | ||
SCIP_EXPR * | sourceexpr | ||
) |
copies an expression including its children
blkmem | block memory data structure |
targetexpr | buffer to store pointer to copied expression |
sourceexpr | expression to copy |
Definition at line 6141 of file expr.c.
References BMSallocBlockMemoryArray, BMSduplicateBlockMemory, SCIP_Expr::children, SCIP_Expr::data, SCIP_Expr::nchildren, SCIP_Expr::op, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, and SCIPexprCopyDeep().
Referenced by exprsimplifyAddChildren(), generateOrthogonal_lx_ly_Underestimator(), generateOrthogonal_lx_uy_Underestimator(), generateUnderestimatorParallelYFacets(), initSepaData(), initSepaDataCreateVred(), SCIPexprCopyDeep(), SCIPexprintCompile(), SCIPexprSubstituteVars(), SCIPexprtreeAddExpr(), SCIPexprtreeCopy(), and SCIPexprtreeSubstituteVars().
void SCIPexprFreeDeep | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR ** | expr | ||
) |
frees an expression including its children
blkmem | block memory data structure |
expr | pointer to expression to free |
Definition at line 6183 of file expr.c.
References BMSfreeBlockMemory, BMSfreeBlockMemoryArray, and SCIPexprFreeDeep().
Referenced by exprParse(), exprsimplifyFlattenPolynomials(), exprsimplifyRemoveDuplicatePolynomialChildren(), exprsimplifyRemovePolynomialUnusedChildren(), exprsimplifySeparateLinearFromPolynomial(), generate1ConvexIndefiniteUnderestimatorInTheInteriorPatternA(), generate1ConvexIndefiniteUnderestimatorInTheInteriorPatternB(), generateOrthogonal_lx_ly_Underestimator(), generateOrthogonal_lx_uy_Underestimator(), generateUnderestimatorParallelYFacets(), initSepaData(), initSepaDataCreateVred(), readExpression(), removeFixedVariables(), SCIPexprAdd(), SCIPexprFreeDeep(), SCIPexprintCompile(), SCIPexprintFreeData(), SCIPexprMulConstant(), SCIPexprSubstituteVars(), SCIPexprtreeFree(), SCIPexprtreeRemoveFixedVars(), and SCIPexprtreeSubstituteVars().
void SCIPexprFreeShallow | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR ** | expr | ||
) |
frees an expression but not its children
blkmem | block memory data structure |
expr | pointer to expression to free |
Definition at line 6221 of file expr.c.
References BMSfreeBlockMemory, and BMSfreeBlockMemoryArrayNull.
Referenced by exprParse(), and SCIPexprAdd().
SCIP_RETCODE SCIPexprAdd | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR ** | expr, | ||
SCIP_Real | coef1, | ||
SCIP_EXPR * | term1, | ||
SCIP_Real | coef2, | ||
SCIP_EXPR * | term2, | ||
SCIP_Real | constant | ||
) |
creates an expression from the addition of two given expression, with coefficients, and a constant
the given expressions may be modified or freed, otherwise it will be used a child expression favors creation and maintaining of SCIP_EXPR_LINEAR over SCIP_EXPR_PLUS or SCIP_EXPR_SUM
creates an expression from the addition of two given expression, with coefficients, and a constant
The given expressions may be modified or freed, otherwise it will be used a child expression. Favors creation and maintaining of SCIP_EXPR_LINEAR over SCIP_EXPR_PLUS or SCIP_EXPR_SUM.
blkmem | block memory data structure |
expr | pointer to store pointer to created expression |
coef1 | coefficient of first term |
term1 | expression of first term, or NULL |
coef2 | coefficient of second term |
term2 | expression of second term, or NULL |
constant | constant term to add |
Definition at line 6246 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::nchildren, SCIP_CALL, SCIP_EXPR_CONST, SCIP_EXPR_LINEAR, SCIP_OKAY, SCIP_Real, SCIPexprAddToLinear(), SCIPexprCreate(), SCIPexprCreateLinear(), SCIPexprFreeDeep(), SCIPexprFreeShallow(), SCIPexprGetChildren(), SCIPexprGetLinearCoefs(), SCIPexprGetLinearConstant(), SCIPexprGetNChildren(), SCIPexprGetOperator(), and SCIPexprGetOpReal().
Referenced by exprParse(), and readExpression().
SCIP_RETCODE SCIPexprMulConstant | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR ** | expr, | ||
SCIP_EXPR * | term, | ||
SCIP_Real | factor | ||
) |
creates an expression from the multiplication of an expression with a constant
the given expressions may be modified or freed, otherwise it will be used a child expression favors creation of SCIP_EXPR_LINEAR over SCIP_EXPR_MUP or SCIP_EXPR_PROD
creates an expression from the multiplication of an expression with a constant
The given expressions may be modified or freed, otherwise it will be used a child expression. Favors creation and maintaining SCIP_EXPR_LINEAR over SCIP_EXPR_PLUS or SCIP_EXPR_SUM.
blkmem | block memory data structure |
expr | buffer to store pointer to created expression |
term | term to multiply by factor |
factor | factor |
Definition at line 6404 of file expr.c.
References SCIP_ExprData_Monomial::coef, SCIP_QuadElement::coef, SCIP_ExprData_Quadratic::constant, SCIP_ExprData_Polynomial::constant, SCIP_Expr::data, SCIP_ExprData_Quadratic::lincoefs, SCIP_ExprData_Polynomial::monomials, SCIP_Expr::nchildren, SCIP_ExprData_Quadratic::quadelems, SCIP_CALL, SCIP_EXPR_CONST, SCIP_EXPR_LINEAR, SCIP_EXPR_POLYNOMIAL, SCIP_EXPR_QUADRATIC, SCIP_OKAY, SCIP_Real, SCIPexprCreate(), SCIPexprCreateLinear(), SCIPexprFreeDeep(), SCIPexprGetNChildren(), SCIPexprGetOperator(), and SCIPexprGetOpReal().
Referenced by exprParse(), and readExpression().
SCIP_RETCODE SCIPexprCreateLinear | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR ** | expr, | ||
int | nchildren, | ||
SCIP_EXPR ** | children, | ||
SCIP_Real * | coefs, | ||
SCIP_Real | constant | ||
) |
creates a SCIP_EXPR_LINEAR expression that is (affine) linear in its children: constant + sum_i coef_i child_i
blkmem | block memory data structure |
expr | pointer to buffer for expression address |
nchildren | number of children |
children | children of expression |
coefs | coefficients of children |
constant | constant part |
Definition at line 6502 of file expr.c.
References BMSallocBlockMemoryArray, BMScopyMemoryArray, BMSduplicateBlockMemoryArray, exprCreate(), SCIP_ALLOC, SCIP_CALL, SCIP_EXPR_LINEAR, SCIP_OKAY, and SCIP_Real.
Referenced by createNlRow(), exprgraphNodeCreateExpr(), exprparseReadVariable(), initSepaData(), initSepaDataCreateVred(), readExpression(), removeFixedVariables(), SCIPexprAdd(), SCIPexprgraphGetSeparableTrees(), SCIPexprMulConstant(), SCIPexprtreeRemoveFixedVars(), and setupProblem().
SCIP_RETCODE SCIPexprAddToLinear | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR * | expr, | ||
int | nchildren, | ||
SCIP_Real * | coefs, | ||
SCIP_EXPR ** | children, | ||
SCIP_Real | constant | ||
) |
adds new terms to a linear expression
blkmem | block memory |
expr | linear expression |
nchildren | number of children to add |
coefs | coefficients of additional children |
children | additional children expressions |
constant | constant to add |
Definition at line 6539 of file expr.c.
References BMScopyMemoryArray, BMSreallocBlockMemoryArray, SCIP_Expr::children, SCIP_Expr::data, SCIP_Expr::nchildren, SCIP_Expr::op, SCIP_ALLOC, SCIP_EXPR_LINEAR, SCIP_OKAY, and SCIP_Real.
Referenced by SCIPexprAdd().
SCIP_RETCODE SCIPexprCreateQuadratic | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR ** | expr, | ||
int | nchildren, | ||
SCIP_EXPR ** | children, | ||
SCIP_Real | constant, | ||
SCIP_Real * | lincoefs, | ||
int | nquadelems, | ||
SCIP_QUADELEM * | quadelems | ||
) |
creates a SCIP_EXPR_QUADRATIC expression: constant + sum_i coef_i child_i + sum_i coef_i child1_i child2_i
blkmem | block memory data structure |
expr | pointer to buffer for expression address |
nchildren | number of children |
children | children of expression |
constant | constant |
lincoefs | linear coefficients of children, or NULL if all 0.0 |
nquadelems | number of quadratic elements |
quadelems | quadratic elements specifying coefficients and child indices |
Definition at line 6584 of file expr.c.
References BMSduplicateBlockMemoryArray, exprCreate(), quadraticdataCreate(), SCIP_ALLOC, SCIP_CALL, SCIP_EXPR_QUADRATIC, and SCIP_OKAY.
Referenced by createConsFromQuadTerm(), exprgraphNodeCreateExpr(), readExpression(), readNonlinearExprs(), and SCIPexprgraphGetSeparableTrees().
void SCIPexprSortQuadElems | ( | SCIP_EXPR * | expr | ) |
ensures that quadratic elements of a quadratic expression are sorted
expr | quadratic expression |
Definition at line 6620 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::op, quadraticdataSort(), and SCIP_EXPR_QUADRATIC.
Referenced by eval(), and SCIPexprAreEqual().
SCIP_RETCODE SCIPexprCreatePolynomial | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR ** | expr, | ||
int | nchildren, | ||
SCIP_EXPR ** | children, | ||
int | nmonomials, | ||
SCIP_EXPRDATA_MONOMIAL ** | monomials, | ||
SCIP_Real | constant, | ||
SCIP_Bool | copymonomials | ||
) |
creates a SCIP_EXPR_POLYNOMIAL expression from an array of monomials: constant + sum_i monomial_i
blkmem | block memory data structure |
expr | pointer to buffer for expression address |
nchildren | number of children |
children | children of expression |
nmonomials | number of monomials |
monomials | monomials |
constant | constant part |
copymonomials | should monomials by copied or ownership be assumed? |
Definition at line 6632 of file expr.c.
References BMSduplicateBlockMemoryArray, exprCreate(), polynomialdataCreate(), SCIP_ALLOC, SCIP_CALL, SCIP_EXPR_POLYNOMIAL, and SCIP_OKAY.
Referenced by createExprtreeFromMonomial(), createNlRow(), exprgraphNodeCreateExpr(), readPolynomial(), SCIPexprgraphGetSeparableTrees(), SCIPexprgraphGetSumTrees(), and setupProblem().
SCIP_RETCODE SCIPexprAddMonomials | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR * | expr, | ||
int | nmonomials, | ||
SCIP_EXPRDATA_MONOMIAL ** | monomials, | ||
SCIP_Bool | copymonomials | ||
) |
adds an array of monomials to a SCIP_EXPR_POLYNOMIAL expression
blkmem | block memory of expression |
expr | expression |
nmonomials | number of monomials to add |
monomials | the monomials to add |
copymonomials | should monomials by copied or ownership be assumed? |
Definition at line 6667 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::op, polynomialdataAddMonomials(), SCIP_CALL, SCIP_EXPR_POLYNOMIAL, and SCIP_OKAY.
changes the constant in a SCIP_EXPR_POLYNOMIAL expression
expr | expression |
constant | new value for constant |
Definition at line 6689 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::op, and SCIP_EXPR_POLYNOMIAL.
void SCIPexprMultiplyPolynomialByConstant | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR * | expr, | ||
SCIP_Real | factor | ||
) |
multiplies each summand of a polynomial by a given constant
blkmem | block memory |
expr | polynomial expression |
factor | constant factor |
Definition at line 6702 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::op, polynomialdataMultiplyByConstant(), and SCIP_EXPR_POLYNOMIAL.
SCIP_RETCODE SCIPexprMultiplyPolynomialByMonomial | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR * | expr, | ||
SCIP_EXPRDATA_MONOMIAL * | factor, | ||
int * | childmap | ||
) |
multiplies each summand of a polynomial by a given monomial
blkmem | block memory |
expr | polynomial expression |
factor | monomial factor |
childmap | map children in factor to children in expr, or NULL for 1:1 |
Definition at line 6716 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::op, polynomialdataMultiplyByMonomial(), SCIP_CALL, SCIP_EXPR_POLYNOMIAL, and SCIP_OKAY.
SCIP_RETCODE SCIPexprMultiplyPolynomialByPolynomial | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR * | expr, | ||
SCIP_EXPR * | factor, | ||
int * | childmap | ||
) |
multiplies this polynomial by a polynomial factor needs to be different from expr
multiplies this polynomial by a polynomial
Factor needs to be different from expr. Children of factor need to be children of expr already, w.r.t. an optional mapping of child indices.
blkmem | block memory |
expr | polynomial expression |
factor | polynomial factor |
childmap | map children in factor to children in expr, or NULL for 1:1 |
Definition at line 6739 of file expr.c.
References SCIP_Expr::children, SCIP_Expr::data, SCIP_Expr::nchildren, SCIP_Expr::op, polynomialdataMultiplyByPolynomial(), SCIP_CALL, SCIP_EXPR_POLYNOMIAL, SCIP_OKAY, and SCIPexprAreEqual().
SCIP_RETCODE SCIPexprPolynomialPower | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR * | expr, | ||
int | exponent | ||
) |
takes a power of the polynomial exponent need to be an integer polynomial need to be a monomial, if exponent is negative
takes a power of the polynomial
Exponent need to be an integer. Polynomial needs to be a monomial, if exponent is negative.
blkmem | block memory |
expr | polynomial expression |
exponent | exponent of power operation |
Definition at line 6785 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::op, polynomialdataPower(), SCIP_CALL, SCIP_EXPR_POLYNOMIAL, and SCIP_OKAY.
void SCIPexprMergeMonomials | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR * | expr, | ||
SCIP_Real | eps, | ||
SCIP_Bool | mergefactors | ||
) |
merges monomials in a polynomial expression that differ only in coefficient into a single monomial eliminates monomials with coefficient between -eps and eps
merges monomials in a polynomial expression that differ only in coefficient into a single monomial
Eliminates monomials with coefficient between -eps and eps.
blkmem | block memory |
expr | polynomial expression |
eps | threshold under which numbers are treat as zero |
mergefactors | whether to merge factors in monomials too |
Definition at line 6805 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::op, polynomialdataMergeMonomials(), and SCIP_EXPR_POLYNOMIAL.
Referenced by exprsimplifyFlattenPolynomials().
SCIP_RETCODE SCIPexprCreateMonomial | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPRDATA_MONOMIAL ** | monomial, | ||
SCIP_Real | coef, | ||
int | nfactors, | ||
int * | childidxs, | ||
SCIP_Real * | exponents | ||
) |
creates a monomial
blkmem | block memory |
monomial | buffer where to store pointer to new monomial |
coef | coefficient of monomial |
nfactors | number of factors in monomial |
childidxs | indices of children corresponding to factors, or NULL if identity |
exponents | exponent in each factor, or NULL if all 1.0 |
Definition at line 7035 of file expr.c.
References BMSallocBlockMemory, BMSallocBlockMemoryArray, BMSduplicateBlockMemoryArray, SCIP_ALLOC, and SCIP_OKAY.
Referenced by createExprtreeFromMonomial(), createNlRow(), exprConvertToPolynomial(), polynomialdataAddMonomials(), polynomialdataCopy(), polynomialdataCreate(), polynomialdataMultiplyByMonomial(), polynomialdataMultiplyByPolynomial(), readPolynomial(), reformulate(), SCIPexprgraphGetSeparableTrees(), SCIPexprgraphGetSumTrees(), and setupProblem().
void SCIPexprFreeMonomial | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPRDATA_MONOMIAL ** | monomial | ||
) |
frees a monomial
blkmem | block memory |
monomial | pointer to monomial that should be freed |
Definition at line 7092 of file expr.c.
References BMSfreeBlockMemory, and BMSfreeBlockMemoryArray.
Referenced by exprConvertToPolynomial(), polynomialdataExpandMonomialFactor(), polynomialdataFree(), polynomialdataMergeMonomials(), polynomialdataMultiplyByConstant(), and polynomialdataPower().
void SCIPexprSortMonomialFactors | ( | SCIP_EXPRDATA_MONOMIAL * | monomial | ) |
ensures that factors in a monomial are sorted
monomial | monomial |
Definition at line 7116 of file expr.c.
References SCIP_ExprData_Monomial::childidxs, SCIP_ExprData_Monomial::exponents, SCIP_ExprData_Monomial::nfactors, SCIPsortIntReal(), SCIP_ExprData_Monomial::sorted, and TRUE.
Referenced by SCIP_DECL_SORTPTRCOMP(), SCIPexprAreMonomialsEqual(), SCIPexprFindMonomialFactor(), and SCIPexprMergeMonomialFactors().
SCIP_Bool SCIPexprFindMonomialFactor | ( | SCIP_EXPRDATA_MONOMIAL * | monomial, |
int | childidx, | ||
int * | pos | ||
) |
finds a factor corresponding to a given child index in a monomial note that if the factors have not been merged, the position of some factor corresponding to a given child is given returns TRUE if a factor is found, FALSE if not
finds a factor corresponding to a given child index in a monomial
Note that if the factors have not been merged, the position of some factor corresponding to a given child is given. Returns TRUE if a factor is found, FALSE if not.
monomial | monomial |
childidx | index of the child which factor to search for |
pos | buffer to store position of factor |
Definition at line 7136 of file expr.c.
References SCIP_ExprData_Monomial::childidxs, FALSE, SCIP_ExprData_Monomial::nfactors, SCIPexprSortMonomialFactors(), and SCIPsortedvecFindInt().
Referenced by exprgraphNodeSimplify(), and exprsimplifyFlattenPolynomials().
SCIP_Bool SCIPexprAreMonomialsEqual | ( | SCIP_EXPRDATA_MONOMIAL * | monomial1, |
SCIP_EXPRDATA_MONOMIAL * | monomial2, | ||
SCIP_Real | eps | ||
) |
checks if two monomials are equal
monomial1 | first monomial |
monomial2 | second monomial |
eps | threshold under which numbers are treated as 0.0 |
Definition at line 6820 of file expr.c.
References SCIP_ExprData_Monomial::childidxs, SCIP_ExprData_Monomial::coef, EPSEQ, SCIP_ExprData_Monomial::exponents, FALSE, SCIP_ExprData_Monomial::nfactors, SCIPexprSortMonomialFactors(), and TRUE.
Referenced by exprgraphFindParentByOperator(), and SCIPexprAreEqual().
SCIP_RETCODE SCIPexprAddMonomialFactors | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPRDATA_MONOMIAL * | monomial, | ||
int | nfactors, | ||
int * | childidxs, | ||
SCIP_Real * | exponents | ||
) |
adds factors to a monomial
blkmem | block memory |
monomial | monomial |
nfactors | number of factors to add |
childidxs | indices of children corresponding to factors |
exponents | exponent in each factor |
Definition at line 6862 of file expr.c.
References BMScopyMemoryArray, SCIP_ExprData_Monomial::childidxs, SCIP_ExprData_Monomial::exponents, monomialdataEnsureFactorsSize(), SCIP_ExprData_Monomial::nfactors, SCIP_CALL, SCIP_OKAY, and SCIP_ExprData_Monomial::sorted.
Referenced by exprConvertToPolynomial(), polynomialdataExpandMonomialFactor(), and SCIPexprMultiplyMonomialByMonomial().
void SCIPexprChgMonomialCoef | ( | SCIP_EXPRDATA_MONOMIAL * | monomial, |
SCIP_Real | newcoef | ||
) |
changes coefficient of monomial
monomial | monomial |
newcoef | new coefficient |
Definition at line 6851 of file expr.c.
References SCIP_ExprData_Monomial::coef.
Referenced by polynomialdataMultiplyByConstant(), and polynomialdataMultiplyByPolynomial().
SCIP_RETCODE SCIPexprMultiplyMonomialByMonomial | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPRDATA_MONOMIAL * | monomial, | ||
SCIP_EXPRDATA_MONOMIAL * | factor, | ||
int * | childmap | ||
) |
multiplies a monomial with a monomial
blkmem | block memory |
monomial | monomial |
factor | factor monomial |
childmap | map to apply to children in factor, or NULL for 1:1 |
Definition at line 6891 of file expr.c.
References SCIP_ExprData_Monomial::childidxs, SCIP_ExprData_Monomial::coef, SCIP_ExprData_Monomial::exponents, SCIP_ExprData_Monomial::nfactors, SCIP_CALL, SCIP_OKAY, and SCIPexprAddMonomialFactors().
Referenced by polynomialdataMultiplyByMonomial(), and polynomialdataMultiplyByPolynomial().
void SCIPexprMonomialPower | ( | SCIP_EXPRDATA_MONOMIAL * | monomial, |
int | exponent | ||
) |
replaces the monomial by a power of the monomial allows only integers as exponent
replaces the monomial by a power of the monomial
Allows only integers as exponent.
monomial | monomial |
exponent | integer exponent of power operation |
Definition at line 6926 of file expr.c.
References SCIP_ExprData_Monomial::coef, SCIP_ExprData_Monomial::exponents, SCIP_ExprData_Monomial::nfactors, pow(), and SCIP_Real.
Referenced by polynomialdataPower().
void SCIPexprMergeMonomialFactors | ( | SCIP_EXPRDATA_MONOMIAL * | monomial, |
SCIP_Real | eps | ||
) |
merges factors that correspond to the same child by adding exponents eliminates factors with exponent between -eps and eps
merges factors that correspond to the same child by adding exponents
Eliminates factors with exponent between -eps and eps.
monomial | monomial |
eps | threshold under which numbers are treated as 0.0 |
Definition at line 6956 of file expr.c.
References SCIP_ExprData_Monomial::childidxs, SCIP_ExprData_Monomial::coef, EPSEQ, EPSISINT, EPSROUND, EPSZ, SCIP_ExprData_Monomial::exponents, SCIP_ExprData_Monomial::nfactors, and SCIPexprSortMonomialFactors().
Referenced by exprgraphNodeSimplify(), and polynomialdataMergeMonomials().
void SCIPexprSortMonomials | ( | SCIP_EXPR * | expr | ) |
ensures that monomials of a polynomial are sorted
expr | polynomial expression |
Definition at line 7023 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::op, polynomialdataSortMonomials(), and SCIP_EXPR_POLYNOMIAL.
Referenced by SCIPexprAreEqual().
SCIP_RETCODE SCIPexprCreateUser | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR ** | expr, | ||
int | nchildren, | ||
SCIP_EXPR ** | children, | ||
SCIP_USEREXPRDATA * | data, | ||
SCIP_EXPRINTCAPABILITY | evalcapability, | ||
SCIP_DECL_USEREXPREVAL((*eval)) | , | ||
SCIP_DECL_USEREXPRINTEVAL((*inteval)) | , | ||
SCIP_DECL_USEREXPRCURV((*curv)) | , | ||
SCIP_DECL_USEREXPRPROP((*prop)) | , | ||
SCIP_DECL_USEREXPRESTIMATE((*estimate)) | , | ||
SCIP_DECL_USEREXPRCOPYDATA((*copydata)) | , | ||
SCIP_DECL_USEREXPRFREEDATA((*freedata)) | , | ||
SCIP_DECL_USEREXPRPRINT((*print)) | |||
) |
creates a user expression
blkmem | block memory data structure |
expr | pointer to buffer for expression address |
nchildren | number of children |
children | children of expression |
data | user data for expression, expression assumes ownership |
evalcapability | capability of evaluation functions (partially redundant, currently) |
Definition at line 7153 of file expr.c.
References BMSallocBlockMemory, BMSduplicateBlockMemoryArray, eval(), SCIP_ExprData_User::evalcapability, exprCreate(), SCIP_ALLOC, SCIP_CALL, SCIP_EXPR_USER, SCIP_EXPRINTCAPABILITY_FUNCVALUE, SCIP_EXPRINTCAPABILITY_INTFUNCVALUE, SCIP_OKAY, and SCIP_ExprData_User::userdata.
Referenced by exprgraphNodeCreateExpr().
indicates whether the expression contains a SCIP_EXPR_PARAM
expr | expression |
Definition at line 7213 of file expr.c.
References SCIP_Expr::children, FALSE, SCIP_Expr::nchildren, SCIP_Expr::op, SCIP_EXPR_PARAM, SCIPexprHasParam(), and TRUE.
Referenced by SCIPexprHasParam(), and SCIPexprtreeHasParam().
SCIP_RETCODE SCIPexprGetMaxDegree | ( | SCIP_EXPR * | expr, |
int * | maxdegree | ||
) |
gets maximal degree of expression, or SCIP_EXPR_DEGREEINFINITY if not a polynomial
expr | expression |
maxdegree | buffer to store maximal degree |
Definition at line 7232 of file expr.c.
References SCIP_ExprData_Monomial::childidxs, SCIP_Expr::children, SCIP_Expr::data, SCIP_ExprData_Monomial::exponents, SCIP_QuadElement::idx1, SCIP_QuadElement::idx2, SCIP_ExprData_Quadratic::lincoefs, MAX, SCIP_ExprData_Polynomial::monomials, SCIP_Expr::nchildren, SCIP_ExprData_Monomial::nfactors, SCIP_ExprData_Quadratic::nquadelems, SCIP_Expr::op, SCIP_ExprData_Quadratic::quadelems, quadraticdataSort(), SCIP_CALL, SCIP_EXPR_ABS, SCIP_EXPR_CONST, SCIP_EXPR_COS, SCIP_EXPR_DEGREEINFINITY, SCIP_EXPR_DIV, SCIP_EXPR_EXP, SCIP_EXPR_INTPOWER, SCIP_EXPR_LAST, SCIP_EXPR_LINEAR, SCIP_EXPR_LOG, SCIP_EXPR_MAX, SCIP_EXPR_MIN, SCIP_EXPR_MINUS, SCIP_EXPR_MUL, SCIP_EXPR_PARAM, SCIP_EXPR_PLUS, SCIP_EXPR_POLYNOMIAL, SCIP_EXPR_PRODUCT, SCIP_EXPR_QUADRATIC, SCIP_EXPR_REALPOWER, SCIP_EXPR_SIGN, SCIP_EXPR_SIGNPOWER, SCIP_EXPR_SIN, SCIP_EXPR_SQRT, SCIP_EXPR_SQUARE, SCIP_EXPR_SUM, SCIP_EXPR_TAN, SCIP_EXPR_USER, SCIP_EXPR_VARIDX, SCIP_OKAY, SCIPABORT, and SCIPexprGetMaxDegree().
Referenced by SCIPexprGetMaxDegree(), and SCIPexprtreeGetMaxDegree().
void SCIPexprGetVarsUsage | ( | SCIP_EXPR * | expr, |
int * | varsusage | ||
) |
counts usage of variables in expression
expr | expression to update |
varsusage | array with counters of variable usage |
Definition at line 7557 of file expr.c.
References SCIP_Expr::children, SCIP_Expr::data, SCIP_Expr::nchildren, SCIP_Expr::op, SCIP_EXPR_VARIDX, and SCIPexprGetVarsUsage().
Referenced by exprsimplifySeparateLinearFromPolynomial(), SCIPexprGetVarsUsage(), and SCIPexprtreeGetVarsUsage().
compares whether two expressions are the same inconclusive, i.e., may give FALSE even if expressions are equivalent (x*y != y*x)
compares whether two expressions are the same
Inconclusive, i.e., may give FALSE even if expressions are equivalent (x*y != y*x).
expr1 | first expression |
expr2 | second expression |
eps | threshold under which numbers are assumed to be zero |
Definition at line 7580 of file expr.c.
References SCIP_Expr::children, SCIP_QuadElement::coef, SCIP_ExprData_Quadratic::constant, SCIP_ExprData_Polynomial::constant, SCIP_Expr::data, EPSEQ, EPSZ, FALSE, SCIP_QuadElement::idx1, SCIP_QuadElement::idx2, SCIP_ExprData_Quadratic::lincoefs, SCIP_ExprData_Polynomial::monomials, SCIP_Expr::nchildren, SCIP_ExprData_Polynomial::nmonomials, SCIP_ExprData_Quadratic::nquadelems, SCIP_Expr::op, SCIP_ExprData_Quadratic::quadelems, SCIP_EXPR_ABS, SCIP_EXPR_CONST, SCIP_EXPR_COS, SCIP_EXPR_DIV, SCIP_EXPR_EXP, SCIP_EXPR_INTPOWER, SCIP_EXPR_LAST, SCIP_EXPR_LINEAR, SCIP_EXPR_LOG, SCIP_EXPR_MAX, SCIP_EXPR_MIN, SCIP_EXPR_MINUS, SCIP_EXPR_MUL, SCIP_EXPR_PARAM, SCIP_EXPR_PLUS, SCIP_EXPR_POLYNOMIAL, SCIP_EXPR_PRODUCT, SCIP_EXPR_QUADRATIC, SCIP_EXPR_REALPOWER, SCIP_EXPR_SIGN, SCIP_EXPR_SIGNPOWER, SCIP_EXPR_SIN, SCIP_EXPR_SQRT, SCIP_EXPR_SQUARE, SCIP_EXPR_SUM, SCIP_EXPR_TAN, SCIP_EXPR_USER, SCIP_EXPR_VARIDX, SCIP_Real, SCIPABORT, SCIPerrorMessage, SCIPexprAreEqual(), SCIPexprAreMonomialsEqual(), SCIPexprSortMonomials(), SCIPexprSortQuadElems(), and TRUE.
Referenced by exprsimplifyAddChildren(), exprsimplifyRemoveDuplicatePolynomialChildren(), SCIPexprAreEqual(), and SCIPexprMultiplyPolynomialByPolynomial().
SCIP_RETCODE SCIPexprSimplify | ( | BMS_BLKMEM * | blkmem, |
SCIP_MESSAGEHDLR * | messagehdlr, | ||
SCIP_EXPR * | expr, | ||
SCIP_Real | eps, | ||
int | maxexpansionexponent, | ||
int | nvars, | ||
int * | nlinvars, | ||
int * | linidxs, | ||
SCIP_Real * | lincoefs | ||
) |
aims at simplifying an expression and splitting of a linear expression if linear variables are split off, expression interpreter data, if stored in the tree, is freed
aims at simplifying an expression and splitting of a linear expression
If linear variables are split off, expression interpreter data, if stored in the tree, is freed.
blkmem | block memory data structure |
messagehdlr | message handler |
expr | expression |
eps | threshold, under which positive values are treat as 0 |
maxexpansionexponent | maximal exponent for which we still expand non-monomial polynomials |
nvars | number of variables in expression |
nlinvars | buffer to store number of linear variables in linear part, or NULL if linear part should not be separated |
linidxs | array to store indices of variables in expression tree which belong to linear part, or NULL |
lincoefs | array to store coefficients of linear part, or NULL |
Definition at line 7795 of file expr.c.
References exprsimplifyConvertToPolynomials(), exprsimplifyFlattenPolynomials(), exprsimplifySeparateLinearFromPolynomial(), exprsimplifyUnconvertPolynomials(), SCIP_CALL, SCIP_OKAY, SCIPdebug, SCIPdebugMessage, SCIPdebugPrintf, and SCIPexprPrint().
Referenced by SCIPexprtreeSimplify().
SCIP_RETCODE SCIPexprEvalShallow | ( | SCIP_EXPR * | expr, |
SCIP_Real * | argvals, | ||
SCIP_Real * | varvals, | ||
SCIP_Real * | param, | ||
SCIP_Real * | val | ||
) |
evaluates an expression w.r.t. given values for children expressions
expr | expression |
argvals | values for children, can be NULL if the expression has no children |
varvals | values for variables, can be NULL if the expression operand is not a variable |
param | values for parameters, can be NULL if the expression operand is not a parameter |
val | buffer to store value |
Definition at line 7847 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::nchildren, SCIP_Expr::op, SCIP_CALL, and SCIP_OKAY.
SCIP_RETCODE SCIPexprEval | ( | SCIP_EXPR * | expr, |
SCIP_Real * | varvals, | ||
SCIP_Real * | param, | ||
SCIP_Real * | val | ||
) |
evaluates an expression w.r.t. a point
expr | expression |
varvals | values for variables, can be NULL if the expression is constant |
param | values for parameters, can be NULL if the expression is not parameterized |
val | buffer to store value |
Definition at line 7866 of file expr.c.
References BMSallocMemoryArray, BMSfreeMemoryArray, SCIP_Expr::children, SCIP_Expr::data, SCIP_Expr::nchildren, SCIP_Expr::op, SCIP_ALLOC, SCIP_CALL, SCIP_EXPRESSION_MAXCHILDEST, SCIP_OKAY, SCIP_Real, and SCIPexprEval().
Referenced by addUserEstimator(), exprsimplifyFlattenPolynomials(), SCIPexprEval(), and SCIPexprtreeEval().
SCIP_RETCODE SCIPexprEvalIntShallow | ( | SCIP_EXPR * | expr, |
SCIP_Real | infinity, | ||
SCIP_INTERVAL * | argvals, | ||
SCIP_INTERVAL * | varvals, | ||
SCIP_Real * | param, | ||
SCIP_INTERVAL * | val | ||
) |
evaluates an expression w.r.t. given interval values for children expressions
expr | expression |
infinity | value to use for infinity |
argvals | interval values for children, can be NULL if the expression has no children |
varvals | interval values for variables, can be NULL if the expression is constant |
param | values for parameters, can be NULL if the expression is not parameterized |
val | buffer to store value |
Definition at line 7907 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::nchildren, SCIP_Expr::op, SCIP_CALL, and SCIP_OKAY.
SCIP_RETCODE SCIPexprEvalInt | ( | SCIP_EXPR * | expr, |
SCIP_Real | infinity, | ||
SCIP_INTERVAL * | varvals, | ||
SCIP_Real * | param, | ||
SCIP_INTERVAL * | val | ||
) |
evaluates an expression w.r.t. an interval
expr | expression |
infinity | value to use for infinity |
varvals | interval values for variables, can be NULL if the expression is constant |
param | values for parameters, can be NULL if the expression is not parameterized |
val | buffer to store value |
Definition at line 7927 of file expr.c.
References BMSallocMemoryArray, BMSfreeMemoryArray, SCIP_Expr::children, SCIP_Expr::data, SCIP_Expr::nchildren, SCIP_Expr::op, SCIP_ALLOC, SCIP_CALL, SCIP_EXPRESSION_MAXCHILDEST, SCIP_OKAY, and SCIPexprEvalInt().
Referenced by addUserEstimator(), SCIPexprEvalInt(), and SCIPexprtreeEvalInt().
SCIP_RETCODE SCIPexprEvalUser | ( | SCIP_EXPR * | expr, |
SCIP_Real * | argvals, | ||
SCIP_Real * | val, | ||
SCIP_Real * | gradient, | ||
SCIP_Real * | hessian | ||
) |
evaluates a user expression w.r.t. given values for children expressions
expr | expression |
argvals | values for children |
val | buffer to store function value |
gradient | buffer to store gradient values, or NULL if not requested |
hessian | buffer to store values of full Hessian, or NULL if not requested |
Definition at line 7969 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::nchildren, SCIP_Expr::op, SCIP_CALL, SCIP_EXPR_USER, SCIP_OKAY, and SCIP_ExprData_User::userdata.
Referenced by exprEvalUser().
SCIP_RETCODE SCIPexprEvalIntUser | ( | SCIP_EXPR * | expr, |
SCIP_Real | infinity, | ||
SCIP_INTERVAL * | argvals, | ||
SCIP_INTERVAL * | val, | ||
SCIP_INTERVAL * | gradient, | ||
SCIP_INTERVAL * | hessian | ||
) |
evaluates a user expression w.r.t. an interval
expr | expression |
infinity | value to use for infinity |
argvals | values for children |
val | buffer to store value |
gradient | buffer to store gradient values, or NULL if not requested |
hessian | buffer to store values of full Hessian, or NULL if not requested |
Definition at line 7992 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::nchildren, SCIP_Expr::op, SCIP_CALL, SCIP_EXPR_USER, SCIP_OKAY, SCIPintervalSetEntire(), and SCIP_ExprData_User::userdata.
Referenced by exprEvalUser().
SCIP_RETCODE SCIPexprCheckCurvature | ( | SCIP_EXPR * | expr, |
SCIP_Real | infinity, | ||
SCIP_INTERVAL * | varbounds, | ||
SCIP_Real * | param, | ||
SCIP_EXPRCURV * | curv, | ||
SCIP_INTERVAL * | bounds | ||
) |
tries to determine the curvature type of an expression w.r.t. given variable domains
expr | expression to check |
infinity | value to use for infinity |
varbounds | domains of variables |
param | values for parameters, can be NULL if the expression is not parameterized |
curv | buffer to store curvature of expression |
bounds | buffer to store bounds on expression |
Definition at line 8062 of file expr.c.
References BMSallocMemoryArray, BMSfreeMemoryArrayNull, doCheckCurvature(), SCIP_Expr::nchildren, SCIP_ALLOC, SCIP_ALLOC_TERMINATE, SCIP_EXPRESSION_MAXCHILDEST, and SCIP_OKAY.
Referenced by doCheckCurvature(), and SCIPexprtreeCheckCurvature().
SCIP_RETCODE SCIPexprEstimateUser | ( | SCIP_EXPR * | expr, |
SCIP_Real | infinity, | ||
SCIP_Real * | argvals, | ||
SCIP_INTERVAL * | argbounds, | ||
SCIP_Bool | overestimate, | ||
SCIP_Real * | coeffs, | ||
SCIP_Real * | constant, | ||
SCIP_Bool * | success | ||
) |
under-/overestimates a user expression w.r.t. to given values and bounds for children expressions
expr | expression |
infinity | value to use for infinity |
argvals | values for children |
argbounds | bounds for children |
overestimate | whether to overestimate the expression |
coeffs | buffer to store the linear coefficients for each child expression that gives a valid under-/overestimator |
constant | buffer to store the constant value of the linear under-/overestimator |
success | buffer to store whether an estimator was successfully computed |
Definition at line 8107 of file expr.c.
References SCIP_Expr::data, FALSE, SCIP_Expr::nchildren, SCIP_Expr::op, SCIP_CALL, SCIP_EXPR_USER, SCIP_OKAY, and SCIP_ExprData_User::userdata.
Referenced by addUserEstimator().
SCIP_RETCODE SCIPexprSubstituteVars | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR * | expr, | ||
SCIP_EXPR ** | substexprs | ||
) |
substitutes variables (SCIP_EXPR_VARIDX) by expressions Note that only the children of the given expr are checked! A variable with index i is replaced by a copy of substexprs[i], if that latter is not NULL if substexprs[i] == NULL, then the variable expression i is not touched
substitutes variables (SCIP_EXPR_VARIDX) by expressions
Note that only the children of the given expr are checked! A variable with index i is replaced by a copy of substexprs[i], if the latter is not NULL. If substexprs[i] == NULL, then the variable expression i is not touched.
blkmem | block memory data structure |
expr | expression, which of the children may be replaced |
substexprs | array of substitute expressions; single entries can be NULL |
Definition at line 8145 of file expr.c.
References SCIP_Expr::children, SCIP_Expr::data, SCIP_Expr::nchildren, SCIP_Expr::op, SCIP_CALL, SCIP_EXPR_VARIDX, SCIP_OKAY, SCIPexprCopyDeep(), SCIPexprFreeDeep(), and SCIPexprSubstituteVars().
Referenced by generateOrthogonal_lx_ly_Underestimator(), generateOrthogonal_lx_uy_Underestimator(), generateUnderestimatorParallelYFacets(), initSepaDataCreateVred(), SCIPexprSubstituteVars(), and SCIPexprtreeSubstituteVars().
void SCIPexprReindexVars | ( | SCIP_EXPR * | expr, |
int * | newindices | ||
) |
updates variable indices in expression tree
expr | expression to update |
newindices | new indices of variables |
Definition at line 8183 of file expr.c.
References SCIP_Expr::children, SCIP_Expr::data, SCIP_Expr::nchildren, SCIP_Expr::op, SCIP_EXPR_VARIDX, and SCIPexprReindexVars().
Referenced by initSepaData(), removeFixedVariables(), SCIPexprReindexVars(), and SCIPexprtreeRemoveFixedVars().
void SCIPexprReindexParams | ( | SCIP_EXPR * | expr, |
int * | newindices | ||
) |
updates parameter indices in expression tree
expr | expression to update |
newindices | new indices of variables |
Definition at line 8204 of file expr.c.
References SCIP_Expr::children, SCIP_Expr::data, SCIP_Expr::nchildren, SCIP_Expr::op, SCIP_EXPR_PARAM, and SCIPexprReindexParams().
Referenced by SCIPexprReindexParams().
void SCIPexprPrint | ( | SCIP_EXPR * | expr, |
SCIP_MESSAGEHDLR * | messagehdlr, | ||
FILE * | file, | ||
const char ** | varnames, | ||
const char ** | paramnames, | ||
SCIP_Real * | paramvals | ||
) |
prints an expression
expr | expression |
messagehdlr | message handler |
file | file for printing, or NULL for stdout |
varnames | names of variables, or NULL for default names |
paramnames | names of parameters, or NULL for default names |
paramvals | values of parameters, or NULL for not printing |
Definition at line 8225 of file expr.c.
References SCIP_ExprData_Monomial::childidxs, SCIP_Expr::children, SCIP_ExprData_Monomial::coef, SCIP_QuadElement::coef, SCIP_ExprData_Quadratic::constant, SCIP_ExprData_Polynomial::constant, SCIP_Expr::data, SCIP_ExprData_Monomial::exponents, SCIP_QuadElement::idx1, SCIP_QuadElement::idx2, SCIP_ExprData_Quadratic::lincoefs, SCIP_ExprData_Polynomial::monomials, SCIP_Expr::nchildren, SCIP_ExprData_Monomial::nfactors, SCIP_ExprData_Polynomial::nmonomials, SCIP_ExprData_Quadratic::nquadelems, SCIP_Expr::op, SCIP_ExprData_Quadratic::quadelems, SCIP_EXPR_ABS, SCIP_EXPR_CONST, SCIP_EXPR_COS, SCIP_EXPR_DIV, SCIP_EXPR_EXP, SCIP_EXPR_INTPOWER, SCIP_EXPR_LAST, SCIP_EXPR_LINEAR, SCIP_EXPR_LOG, SCIP_EXPR_MAX, SCIP_EXPR_MIN, SCIP_EXPR_MINUS, SCIP_EXPR_MUL, SCIP_EXPR_PARAM, SCIP_EXPR_PLUS, SCIP_EXPR_POLYNOMIAL, SCIP_EXPR_PRODUCT, SCIP_EXPR_QUADRATIC, SCIP_EXPR_REALPOWER, SCIP_EXPR_SIGN, SCIP_EXPR_SIGNPOWER, SCIP_EXPR_SIN, SCIP_EXPR_SQRT, SCIP_EXPR_SQUARE, SCIP_EXPR_SUM, SCIP_EXPR_TAN, SCIP_EXPR_USER, SCIP_EXPR_VARIDX, SCIP_MAXSTRLEN, SCIP_Real, SCIPABORT, SCIPerrorMessage, SCIPexprPrint(), SCIPmessageFPrintInfo(), SCIPsnprintf(), and SCIP_ExprData_User::userdata.
Referenced by exprParse(), exprsimplifyFlattenPolynomials(), SCIPexprPrint(), SCIPexprSimplify(), and SCIPexprtreePrint().
SCIP_RETCODE SCIPexprParse | ( | BMS_BLKMEM * | blkmem, |
SCIP_MESSAGEHDLR * | messagehdlr, | ||
SCIP_EXPR ** | expr, | ||
const char * | str, | ||
const char * | lastchar, | ||
int * | nvars, | ||
int * | varnames, | ||
int | varnameslength | ||
) |
parses an expression from a string
blkmem | block memory data structure |
messagehdlr | message handler |
expr | buffer to store pointer to created expression |
str | pointer to the string to be parsed |
lastchar | pointer to the last char of str that should be parsed |
nvars | buffer to store number of variables |
varnames | buffer to store variable names, prefixed by index (as int) |
varnameslength | length of the varnames buffer array |
Definition at line 8538 of file expr.c.
References exprParse(), SCIP_CALL, SCIPhashtableCreate(), and SCIPhashtableFree().
Referenced by SCIP_DECL_CONSPARSE().
SCIP_EXPR* SCIPexprtreeGetRoot | ( | SCIP_EXPRTREE * | tree | ) |
returns root expression of an expression tree
tree | expression tree |
Definition at line 8602 of file expr.c.
References SCIP_ExprTree::root.
Referenced by addUserEstimator(), checkCurvature(), generateCut(), generateOrthogonal_lx_ly_Underestimator(), generateOrthogonal_lx_uy_Underestimator(), generateUnderestimatorParallelYFacets(), getExprtreeSize(), getLinearAndQuadraticCoefs(), initSepaData(), initSepaDataCreateVred(), printNonlinearRow(), printRowNl(), readConstraints(), readObjective(), removeFixedVariables(), SCIPexprintCompile(), SCIPexprintEval(), SCIPexprintEvalInt(), SCIPnlpiOraclePrintProblemGams(), and SCIPwritePip().
int SCIPexprtreeGetNVars | ( | SCIP_EXPRTREE * | tree | ) |
returns number of variables in expression tree
tree | expression tree |
Definition at line 8612 of file expr.c.
References SCIP_ExprTree::nvars.
Referenced by addConcaveEstimatorBivariate(), addConcaveEstimatorMultivariate(), addConcaveEstimatorUnivariate(), addIntervalGradientEstimator(), addLinearization(), addUserEstimator(), checkCurvature(), computeGradient(), computeViolation(), consdataAddExprtrees(), createConstraint(), evalFunctionGradient(), evalFunctionValue(), freeConstraint(), generateConvexConcaveUnderestimator(), generateCut(), getLinearAndQuadraticCoefs(), hessLagAddExprtree(), hessLagSparsitySetNzFlagForExprtree(), nlpAddNlRows(), nlpSetupNlpiIndices(), nlrowCalcActivityBounds(), nlrowExprtreeChanged(), nlrowRemoveFixedExprtreeVars(), printFunction(), printRowNl(), processNlRow(), readObjective(), registerBranchingVariables(), registerLargeRelaxValueVariableForBranching(), removeFixedVariables(), replaceViolatedByLinearConstraints(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSENFOPS(), SCIP_DECL_CONSEXITPRE(), SCIP_DECL_CONSGETNVARS(), SCIP_DECL_CONSGETVARS(), SCIP_DECL_CONSINITLP(), SCIPcreateConsBivariate(), SCIPcreateNlpiProb(), SCIPevalExprtreeGlobalBounds(), SCIPevalExprtreeLocalBounds(), SCIPevalExprtreeSol(), SCIPexprintCompile(), SCIPexprintEval(), SCIPexprintEvalInt(), SCIPexprintGrad(), SCIPexprintGradInt(), SCIPexprintHessianDense(), SCIPexprintHessianSparsityDense(), SCIPexprtreeSimplify(), SCIPgetExprtreeTransformedVars(), SCIPnlpGetVarsNonlinearity(), SCIPnlpHasContinuousNonlinearity(), SCIPnlpiOracleChgExprtree(), SCIPnlpiOracleDelVarSet(), SCIPnlpiOracleEvalJacobian(), SCIPnlpiOracleGetJacobianSparsity(), SCIPnlrowGetSolActivity(), SCIPnlrowRecalcNLPActivity(), SCIPnlrowRecalcPseudoActivity(), SCIPwritePip(), solveDerivativeEquation(), and updateVariableDegreesCons().
int SCIPexprtreeGetNParams | ( | SCIP_EXPRTREE * | tree | ) |
returns number of parameters in expression tree
tree | expression tree |
Definition at line 8622 of file expr.c.
References SCIP_ExprTree::nparams.
Referenced by nlrowExprtreeParamChanged(), nlrowRemoveFixedExprtreeVars(), SCIPnlpiOracleChgExprParam(), and SCIPnlrowChgExprtreeParams().
SCIP_Real* SCIPexprtreeGetParamVals | ( | SCIP_EXPRTREE * | tree | ) |
returns values of parameters or NULL if none
tree | expression tree |
Definition at line 8632 of file expr.c.
References SCIP_ExprTree::params.
Referenced by addUserEstimator(), nlrowExprtreeParamChanged(), SCIPexprintEval(), and SCIPexprintEvalInt().
void SCIPexprtreeSetParamVal | ( | SCIP_EXPRTREE * | tree, |
int | paramidx, | ||
SCIP_Real | paramval | ||
) |
sets value of a single parameter in expression tree
tree | expression tree |
paramidx | index of parameter |
paramval | new value of parameter |
Definition at line 8642 of file expr.c.
References SCIP_ExprTree::params.
Referenced by generateConvexConcaveUnderestimator(), SCIPnlpiOracleChgExprParam(), and SCIPnlrowChgExprtreeParam().
SCIP_EXPRINTDATA* SCIPexprtreeGetInterpreterData | ( | SCIP_EXPRTREE * | tree | ) |
gets data of expression tree interpreter, or NULL if not set
tree | expression tree |
Definition at line 8657 of file expr.c.
References SCIP_ExprTree::interpreterdata.
Referenced by addIntervalGradientEstimator(), addLinearization(), computeGradient(), computeViolation(), generateLinearizationCut(), initSepaData(), SCIP_DECL_CONSINITLP(), SCIPexprintCompile(), SCIPexprintEval(), SCIPexprintEvalInt(), SCIPexprintGetExprtreeCapability(), SCIPexprintGrad(), SCIPexprintGradInt(), SCIPexprintHessianDense(), SCIPexprintHessianSparsityDense(), SCIPexprintNewParametrization(), and solveDerivativeEquation().
void SCIPexprtreeSetInterpreterData | ( | SCIP_EXPRTREE * | tree, |
SCIP_EXPRINTDATA * | interpreterdata | ||
) |
sets data of expression tree interpreter
tree | expression tree |
interpreterdata | expression interpreter data |
Definition at line 8667 of file expr.c.
References SCIP_ExprTree::interpreterdata.
Referenced by SCIPexprintCompile().
SCIP_RETCODE SCIPexprtreeFreeInterpreterData | ( | SCIP_EXPRTREE * | tree | ) |
frees data of expression tree interpreter, if any
tree | expression tree |
Definition at line 8680 of file expr.c.
References SCIP_ExprTree::interpreterdata, SCIP_CALL, SCIP_OKAY, and SCIPexprintFreeData().
Referenced by SCIPexprtreeAddExpr(), SCIPexprtreeFree(), SCIPexprtreeSimplify(), and SCIPexprtreeSubstituteVars().
SCIP_Bool SCIPexprtreeHasParam | ( | SCIP_EXPRTREE * | tree | ) |
indicates whether there are parameterized constants (SCIP_EXPR_PARAM) in expression tree
tree | expression tree |
Definition at line 8694 of file expr.c.
References SCIP_ExprTree::root, and SCIPexprHasParam().
SCIP_RETCODE SCIPexprtreeGetMaxDegree | ( | SCIP_EXPRTREE * | tree, |
int * | maxdegree | ||
) |
Gives maximal degree of expression in expression tree. If constant expression, gives 0, if linear expression, gives 1, if polynomial expression, gives its maximal degree, otherwise (nonpolynomial nonconstant expressions) gives at least SCIP_EXPR_DEGREEINFINITY.
tree | expression tree |
maxdegree | buffer to store maximal degree |
Definition at line 8710 of file expr.c.
References SCIP_ExprTree::root, SCIP_CALL, SCIP_OKAY, and SCIPexprGetMaxDegree().
Referenced by SCIPwriteGms().
SCIP_RETCODE SCIPexprtreeEval | ( | SCIP_EXPRTREE * | tree, |
SCIP_Real * | varvals, | ||
SCIP_Real * | val | ||
) |
evaluates an expression tree w.r.t. a point
tree | expression tree |
varvals | values for variables |
val | buffer to store expression tree value |
Definition at line 8723 of file expr.c.
References SCIP_ExprTree::nvars, SCIP_ExprTree::params, SCIP_ExprTree::root, SCIP_CALL, SCIP_OKAY, and SCIPexprEval().
Referenced by addConcaveEstimatorBivariate(), addConcaveEstimatorUnivariate(), generateConvexConcaveUnderestimator(), generateOrthogonal_lx_ly_Underestimator(), generateOrthogonal_lx_uy_Underestimator(), generateUnderestimatorParallelYFacets(), nlrowRemoveFixedExprtreeVars(), SCIPevalExprtreeSol(), SCIPexprintEval(), SCIPexprtreeSimplify(), SCIPnlrowGetSolActivity(), SCIPnlrowRecalcNLPActivity(), and SCIPnlrowRecalcPseudoActivity().
SCIP_RETCODE SCIPexprtreeEvalInt | ( | SCIP_EXPRTREE * | tree, |
SCIP_Real | infinity, | ||
SCIP_INTERVAL * | varvals, | ||
SCIP_INTERVAL * | val | ||
) |
evaluates an expression tree w.r.t. an interval
tree | expression tree |
infinity | value for infinity |
varvals | intervals for variables |
val | buffer to store expression tree value |
Definition at line 8739 of file expr.c.
References SCIP_ExprTree::nvars, SCIP_ExprTree::params, SCIP_ExprTree::root, SCIP_CALL, SCIP_OKAY, and SCIPexprEvalInt().
Referenced by nlrowCalcActivityBounds(), SCIPevalExprtreeGlobalBounds(), SCIPevalExprtreeLocalBounds(), and SCIPexprintEvalInt().
void SCIPexprtreePrint | ( | SCIP_EXPRTREE * | tree, |
SCIP_MESSAGEHDLR * | messagehdlr, | ||
FILE * | file, | ||
const char ** | varnames, | ||
const char ** | paramnames | ||
) |
prints an expression tree
tree | expression tree |
messagehdlr | message handler |
file | file for printing, or NULL for stdout |
varnames | names of variables, or NULL for default names |
paramnames | names of parameters, or NULL for default names |
Definition at line 8756 of file expr.c.
References SCIP_ExprTree::params, SCIP_ExprTree::root, and SCIPexprPrint().
Referenced by generateConvexConcaveUnderestimator(), isConvexLocal(), printFunction(), and SCIPexprtreePrintWithNames().
SCIP_RETCODE SCIPexprtreeCreate | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPRTREE ** | tree, | ||
SCIP_EXPR * | root, | ||
int | nvars, | ||
int | nparams, | ||
SCIP_Real * | params | ||
) |
creates an expression tree
blkmem | block memory data structure |
tree | buffer to store address of created expression tree |
root | pointer to root expression, not copied deep !, can be NULL |
nvars | number of variables in variable mapping |
nparams | number of parameters in expression |
params | values for parameters, or NULL (if NULL but nparams > 0, then params is initialized with zeros) |
Definition at line 8771 of file expr.c.
References BMSallocBlockMemory, BMSallocBlockMemoryArray, BMSclearMemoryArray, BMSduplicateBlockMemoryArray, SCIP_ALLOC, and SCIP_OKAY.
Referenced by createConsFromQuadTerm(), createExprtreeFromMonomial(), createNlRow(), generateOrthogonal_lx_ly_Underestimator(), generateOrthogonal_lx_uy_Underestimator(), generateUnderestimatorParallelYFacets(), initSepaData(), initSepaDataCreateVred(), readNonlinearExprs(), readPolynomial(), SCIP_DECL_CONSPARSE(), SCIPexprgraphGetSeparableTrees(), SCIPexprgraphGetSumTrees(), SCIPexprgraphGetTree(), SCIPwritePip(), and setupProblem().
SCIP_RETCODE SCIPexprtreeCopy | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPRTREE ** | targettree, | ||
SCIP_EXPRTREE * | sourcetree | ||
) |
copies an expression tree
blkmem | block memory that should be used in new expression tree |
targettree | buffer to store address of copied expression tree |
sourcetree | expression tree to copy |
Definition at line 8812 of file expr.c.
References BMSduplicateBlockMemory, BMSduplicateBlockMemoryArray, SCIP_ExprTree::nparams, SCIP_ExprTree::nvars, SCIP_ExprTree::params, SCIP_ExprTree::root, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIPexprCopyDeep(), and SCIP_ExprTree::vars.
Referenced by consdataAddExprtrees(), createConstraint(), generate1ConvexIndefiniteUnderestimatorInTheInteriorPatternA(), generate1ConvexIndefiniteUnderestimatorInTheInteriorPatternB(), initSepaData(), removeFixedVariables(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSTRANS(), SCIPcreateConsBivariate(), SCIPnlpiOracleChgExprtree(), SCIPnlrowChgExprtree(), and SCIPnlrowCreate().
SCIP_RETCODE SCIPexprtreeFree | ( | SCIP_EXPRTREE ** | tree | ) |
frees an expression tree
tree | pointer to expression tree that is freed |
Definition at line 8852 of file expr.c.
References BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, SCIP_CALL, SCIP_OKAY, SCIPexprFreeDeep(), and SCIPexprtreeFreeInterpreterData().
Referenced by consdataFree(), consdataSetExprtrees(), createConsFromMonomial(), createConsFromQuadTerm(), createNlRow(), freeConstraint(), freeSepaData(), generate1ConvexIndefiniteUnderestimatorInTheInteriorPatternA(), generate1ConvexIndefiniteUnderestimatorInTheInteriorPatternB(), generateOrthogonal_lx_ly_Underestimator(), generateOrthogonal_lx_uy_Underestimator(), generateUnderestimatorParallelYFacets(), nlrowRemoveFixedExprtreeVars(), readConstraints(), readNonlinearExprs(), readObjective(), removeFixedVariables(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSDELETE(), SCIP_DECL_CONSPARSE(), SCIP_DECL_CONSPRINT(), SCIPnlpiOracleChgExprtree(), SCIPnlpiOracleDelVarSet(), SCIPnlrowChgExprtree(), SCIPnlrowFree(), SCIPwriteGms(), SCIPwritePip(), and setupProblem().
SCIP_RETCODE SCIPexprtreeSetParams | ( | SCIP_EXPRTREE * | tree, |
int | nparams, | ||
SCIP_Real * | paramvals | ||
) |
sets number and values of all parameters in expression tree
tree | expression tree |
nparams | number of parameters |
paramvals | values of parameters, can be NULL if nparams == 0 |
Definition at line 8876 of file expr.c.
References SCIP_ExprTree::blkmem, BMScopyMemoryArray, BMSduplicateBlockMemoryArray, BMSfreeBlockMemoryArrayNull, BMSreallocBlockMemoryArray, SCIP_ExprTree::nparams, SCIP_ExprTree::params, SCIP_ALLOC, and SCIP_OKAY.
Referenced by generateConvexConcaveUnderestimator(), initSepaData(), and SCIPnlrowChgExprtreeParams().
void SCIPexprtreeGetVarsUsage | ( | SCIP_EXPRTREE * | tree, |
int * | varsusage | ||
) |
gives the number of usages for each variable in the expression tree
tree | expression tree |
varsusage | array where to store for each variable how often it is used in the tree |
Definition at line 8907 of file expr.c.
References BMSclearMemoryArray, SCIP_ExprTree::nvars, SCIP_ExprTree::root, and SCIPexprGetVarsUsage().
SCIP_RETCODE SCIPexprtreeSimplify | ( | SCIP_EXPRTREE * | tree, |
SCIP_MESSAGEHDLR * | messagehdlr, | ||
SCIP_Real | eps, | ||
int | maxexpansionexponent, | ||
int * | nlinvars, | ||
int * | linidxs, | ||
SCIP_Real * | lincoefs | ||
) |
aims at simplifying an expression and splitting of a linear expression if linear variables are split off, expression interpreter data, if stored in the tree, is freed
aims at simplifying an expression and splitting of a linear expression
If linear variables are split off, expression interpreter data, if stored in the tree, is freed.
tree | expression tree |
messagehdlr | message handler |
eps | threshold, under which positive values are treat as 0 |
maxexpansionexponent | maximal exponent for which we still expand non-monomial polynomials |
nlinvars | buffer to store number of linear variables in linear part, or NULL if linear part should not be separated |
linidxs | array to store indices of variables in expression tree which belong to linear part, or NULL |
lincoefs | array to store coefficients of linear part, or NULL |
Definition at line 8926 of file expr.c.
References SCIP_ExprTree::blkmem, BMSallocMemoryArray, BMSfreeMemoryArray, EPSZ, SCIP_ExprTree::nvars, SCIP_ExprTree::root, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPexprSimplify(), SCIPexprtreeEval(), SCIPexprtreeFreeInterpreterData(), SCIPexprtreeGetNVars(), SCIPrandomCreate(), SCIPrandomFree(), SCIPrandomGetReal(), and SCIPrelDiff().
SCIP_RETCODE SCIPexprtreeAddExpr | ( | SCIP_EXPRTREE * | tree, |
SCIP_EXPR * | expr, | ||
SCIP_Bool | copyexpr | ||
) |
adds an expression to the root expression of the tree the root is replaced with an SCIP_EXPR_PLUS expression which has the previous root and the given expression as children
adds an expression to the root expression of the tree
The root is replaced with an SCIP_EXPR_PLUS expression which has the previous root and the given expression (or a copy of it) as children.
tree | expression tree |
expr | expression to add to tree |
copyexpr | whether expression should be copied |
Definition at line 8980 of file expr.c.
References SCIP_ExprTree::blkmem, SCIP_ExprTree::root, SCIP_CALL, SCIP_EXPR_PLUS, SCIP_OKAY, SCIPexprCopyDeep(), SCIPexprCreate(), and SCIPexprtreeFreeInterpreterData().
Referenced by SCIPexprgraphGetSumTrees().
SCIP_RETCODE SCIPexprtreeCheckCurvature | ( | SCIP_EXPRTREE * | tree, |
SCIP_Real | infinity, | ||
SCIP_INTERVAL * | varbounds, | ||
SCIP_EXPRCURV * | curv, | ||
SCIP_INTERVAL * | bounds | ||
) |
tries to determine the curvature type of an expression tree w.r.t. given variable domains
tree | expression tree |
infinity | value for infinity |
varbounds | domains of variables |
curv | buffer to store curvature of expression |
bounds | buffer to store bounds on expression, or NULL if not needed |
Definition at line 9003 of file expr.c.
References SCIP_ExprTree::params, SCIP_ExprTree::root, SCIP_CALL, SCIP_OKAY, and SCIPexprCheckCurvature().
Referenced by checkCurvature().
SCIP_RETCODE SCIPexprtreeSubstituteVars | ( | SCIP_EXPRTREE * | tree, |
SCIP_EXPR ** | substexprs | ||
) |
substitutes variables (SCIP_EXPR_VARIDX) in an expression tree by expressions A variable with index i is replaced by a copy of substexprs[i], if that latter is not NULL if substexprs[i] == NULL, then the variable expression i is not touched
substitutes variables (SCIP_EXPR_VARIDX) in an expression tree by expressions
A variable with index i is replaced by a copy of substexprs[i], if that latter is not NULL. If substexprs[i] == NULL, then the variable expression i is not touched.
tree | expression tree |
substexprs | array of substitute expressions; single entries can be NULL |
Definition at line 9029 of file expr.c.
References SCIP_ExprTree::blkmem, SCIP_Expr::data, SCIP_Expr::op, SCIP_ExprTree::root, SCIP_CALL, SCIP_EXPR_VARIDX, SCIP_OKAY, SCIPexprCopyDeep(), SCIPexprFreeDeep(), SCIPexprSubstituteVars(), and SCIPexprtreeFreeInterpreterData().
Referenced by generate1ConvexIndefiniteUnderestimatorInTheInteriorPatternA(), generate1ConvexIndefiniteUnderestimatorInTheInteriorPatternB(), initSepaData(), removeFixedVariables(), and SCIPexprtreeRemoveFixedVars().
void SCIPquadelemSort | ( | SCIP_QUADELEM * | quadelems, |
int | nquadelems | ||
) |
sorts an array of quadratic elements The elements are sorted such that the first index is increasing and such that among elements with the same first index, the second index is increasing. For elements with same first and second index, the order is not defined.
quadelems | array of quadratic elements |
nquadelems | number of quadratic elements |
Definition at line 9193 of file expr.c.
References quadelemsQuickSort().
Referenced by createConstraint(), exprgraphFindParentByOperator(), nlrowSortQuadElem(), quadraticdataSort(), SCIPnlpiOracleChgQuadCoefs(), and SCIPnlpiOracleDelVarSet().
SCIP_Bool SCIPquadelemSortedFind | ( | SCIP_QUADELEM * | quadelems, |
int | idx1, | ||
int | idx2, | ||
int | nquadelems, | ||
int * | pos | ||
) |
Finds an index pair in a sorted array of quadratic elements. If (idx1,idx2) is found in quadelems, then returns TRUE and stores position of quadratic element in *pos. If (idx1,idx2) is not found in quadelems, then returns FALSE and stores position where a quadratic element with these indices would be inserted in *pos. Assumes that idx1 <= idx2.
quadelems | array of quadratic elements |
idx1 | index of first variable in element to search for |
idx2 | index of second variable in element to search for |
nquadelems | number of quadratic elements in array |
pos | buffer to store position of found quadratic element or position where it would be inserted, or NULL |
Definition at line 9218 of file expr.c.
Referenced by nlrowSearchQuadElem(), and SCIPnlpiOracleChgQuadCoefs().
void SCIPquadelemSqueeze | ( | SCIP_QUADELEM * | quadelems, |
int | nquadelems, | ||
int * | nquadelemsnew | ||
) |
Adds quadratic elements with same index and removes elements with coefficient 0.0. Assumes that elements have been sorted before.
quadelems | array of quadratic elements |
nquadelems | number of quadratic elements |
nquadelemsnew | pointer to store new (reduced) number of quadratic elements |
Definition at line 9270 of file expr.c.
References SCIP_QuadElement::coef, and QUADELEMS_ISBETTER.
Referenced by createConstraint(), and SCIPnlpiOracleChgQuadCoefs().
void SCIPexprgraphCaptureNode | ( | SCIP_EXPRGRAPHNODE * | node | ) |
captures node, i.e., increases number of uses
node | expression graph node to capture |
Definition at line 12925 of file expr.c.
References SCIP_ExprGraphNode::nuses, and SCIPdebugMessage.
Referenced by exprgraphNodeRemoveParent(), reformReplaceNode(), SCIPcreateConsNonlinear2(), SCIPexprgraphAddExprtreeSum(), and SCIPexprgraphNodeSplitOffLinear().
SCIP_Bool SCIPexprgraphIsNodeEnabled | ( | SCIP_EXPRGRAPHNODE * | node | ) |
returns whether a node is currently enabled
node | expression graph node to enable |
Definition at line 12937 of file expr.c.
References SCIP_ExprGraphNode::enabled.
Referenced by reformulate().
int SCIPexprgraphGetNodeNChildren | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gets number of children of a node in an expression graph
node | expression graph node |
Definition at line 12947 of file expr.c.
References SCIP_ExprGraphNode::nchildren.
Referenced by reformEnsureChildrenMinCurvature(), reformMonomial(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), SCIP_DECL_NONLINCONSUPGD(), and splitOffLinearPart().
SCIP_EXPRGRAPHNODE** SCIPexprgraphGetNodeChildren | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gets children of a node in an expression graph
node | expression graph node |
Definition at line 12957 of file expr.c.
References SCIP_ExprGraphNode::children.
Referenced by reformEnsureChildrenMinCurvature(), reformMonomial(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
int SCIPexprgraphGetNodeNParents | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gets number of parents of a node in an expression graph
node | expression graph node |
Definition at line 12967 of file expr.c.
References SCIP_ExprGraphNode::nparents.
Referenced by reformMonomial(), reformReplaceNode(), and reformulate().
SCIP_EXPRGRAPHNODE** SCIPexprgraphGetNodeParents | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gets parents of a node in an expression graph
node | expression graph node |
Definition at line 12977 of file expr.c.
References SCIP_ExprGraphNode::parents.
Referenced by reformMonomial().
int SCIPexprgraphGetNodeDepth | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gets depth of node in expression graph
node | expression graph node |
Definition at line 12987 of file expr.c.
References SCIP_ExprGraphNode::depth.
Referenced by reformEnsureChildrenMinCurvature(), reformNode2Var(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
int SCIPexprgraphGetNodePosition | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gets position of node in expression graph at its depth level
node | expression graph node |
Definition at line 12997 of file expr.c.
References SCIP_ExprGraphNode::pos.
Referenced by reformEnsureChildrenMinCurvature(), reformNode2Var(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
SCIP_EXPROP SCIPexprgraphGetNodeOperator | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gets operator of a node in an expression graph
node | expression graph node |
Definition at line 13007 of file expr.c.
References SCIP_ExprGraphNode::op.
Referenced by reformEnsureChildrenMinCurvature(), reformMonomial(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), SCIP_DECL_NONLINCONSUPGD(), and SCIPexprgraphNodePolynomialAddMonomials().
int SCIPexprgraphGetNodeOperatorIndex | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives index belonging to a SCIP_EXPR_VARIDX or SCIP_EXPR_PARAM operand
node | expression graph node |
Definition at line 13017 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::op, SCIP_EXPR_PARAM, and SCIP_EXPR_VARIDX.
SCIP_Real SCIPexprgraphGetNodeOperatorReal | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives real belonging to a SCIP_EXPR_CONST operand
node | expression graph node |
Definition at line 13028 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::op, and SCIP_EXPR_CONST.
void* SCIPexprgraphGetNodeVar | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_EXPRGRAPHNODE * | node | ||
) |
gives variable belonging to a SCIP_EXPR_VARIDX expression
exprgraph | expression graph |
node | expression graph node |
Definition at line 13039 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_ExprGraph::nvars, SCIP_ExprGraphNode::op, SCIP_EXPR_VARIDX, and SCIP_ExprGraph::vars.
Referenced by SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
SCIP_Real SCIPexprgraphGetNodeRealPowerExponent | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives exponent belonging to a SCIP_EXPR_REALPOWER expression
node | expression graph node |
Definition at line 13054 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::op, and SCIP_EXPR_REALPOWER.
Referenced by reformMonomial(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
int SCIPexprgraphGetNodeIntPowerExponent | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives exponent belonging to a SCIP_EXPR_INTPOWER expression
node | expression graph node |
Definition at line 13065 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::op, and SCIP_EXPR_INTPOWER.
Referenced by reformMonomial(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
SCIP_Real SCIPexprgraphGetNodeSignPowerExponent | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives exponent belonging to a SCIP_EXPR_SIGNPOWER expression
node | expression graph node |
Definition at line 13076 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::op, and SCIP_EXPR_SIGNPOWER.
Referenced by reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
SCIP_Real* SCIPexprgraphGetNodeLinearCoefs | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives linear coefficients belonging to a SCIP_EXPR_LINEAR expression
node | expression graph node |
Definition at line 13087 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::op, SCIP_EXPR_LINEAR, and SCIP_Real.
Referenced by SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
SCIP_Real SCIPexprgraphGetNodeLinearConstant | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives constant belonging to a SCIP_EXPR_LINEAR expression
node | expression graph node |
Definition at line 13098 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::nchildren, SCIP_ExprGraphNode::op, SCIP_EXPR_LINEAR, and SCIP_Real.
Referenced by SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
SCIP_Real SCIPexprgraphGetNodeQuadraticConstant | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives constant belonging to a SCIP_EXPR_QUADRATIC expression
node | expression graph node |
Definition at line 13110 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::op, and SCIP_EXPR_QUADRATIC.
Referenced by SCIP_DECL_NONLINCONSUPGD().
SCIP_Real* SCIPexprgraphGetNodeQuadraticLinearCoefs | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives linear coefficients belonging to a SCIP_EXPR_QUADRATIC expression, or NULL if all coefficients are 0.0
node | expression graph node |
Definition at line 13122 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::op, and SCIP_EXPR_QUADRATIC.
Referenced by SCIP_DECL_NONLINCONSUPGD().
SCIP_QUADELEM* SCIPexprgraphGetNodeQuadraticQuadElements | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives quadratic elements belonging to a SCIP_EXPR_QUADRATIC expression
node | expression graph node |
Definition at line 13134 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::op, and SCIP_EXPR_QUADRATIC.
Referenced by SCIP_DECL_NONLINCONSUPGD().
int SCIPexprgraphGetNodeQuadraticNQuadElements | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives number of quadratic elements belonging to a SCIP_EXPR_QUADRATIC expression
node | expression graph node |
Definition at line 13146 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::op, and SCIP_EXPR_QUADRATIC.
Referenced by SCIP_DECL_NONLINCONSUPGD().
SCIP_EXPRDATA_MONOMIAL** SCIPexprgraphGetNodePolynomialMonomials | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives the monomials belonging to a SCIP_EXPR_POLYNOMIAL expression
node | expression graph node |
Definition at line 13158 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::op, and SCIP_EXPR_POLYNOMIAL.
Referenced by reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
int SCIPexprgraphGetNodePolynomialNMonomials | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives the number of monomials belonging to a SCIP_EXPR_POLYNOMIAL expression
node | expression graph node |
Definition at line 13170 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::op, and SCIP_EXPR_POLYNOMIAL.
Referenced by reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
SCIP_Real SCIPexprgraphGetNodePolynomialConstant | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives the constant belonging to a SCIP_EXPR_POLYNOMIAL expression
node | expression graph node |
Definition at line 13182 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::op, and SCIP_EXPR_POLYNOMIAL.
Referenced by reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
SCIP_RETCODE SCIPexprgraphGetNodePolynomialMonomialCurvature | ( | SCIP_EXPRGRAPHNODE * | node, |
int | monomialidx, | ||
SCIP_Real | infinity, | ||
SCIP_EXPRCURV * | curv | ||
) |
gives the curvature of a single monomial belonging to a SCIP_EXPR_POLYNOMIAL expression
gives the curvature of a single monomial belonging to a SCIP_EXPR_POLYNOMIAL expression
Assumes that curvature of children and bounds of children and node itself are valid.
node | expression graph node |
monomialidx | index of monomial |
infinity | value for infinity in interval arithmetics |
curv | buffer to store monomial curvature |
Definition at line 13197 of file expr.c.
References BMSallocMemoryArray, BMSfreeMemoryArrayNull, SCIP_ExprGraphNode::bounds, SCIP_ExprGraphNode::boundstatus, SCIP_ExprData_Monomial::childidxs, SCIP_ExprGraphNode::children, SCIP_ExprData_Monomial::coef, SCIP_ExprGraphNode::curv, SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::depth, SCIP_ExprGraphNode::enabled, SCIP_ExprData_Monomial::exponents, SCIP_ExprData_Monomial::nfactors, SCIP_ExprGraphNode::op, SCIP_ExprGraphNode::pos, SCIP_ALLOC, SCIP_ALLOC_TERMINATE, SCIP_EXPR_POLYNOMIAL, SCIP_EXPRBOUNDSTATUS_CHILDRELAXED, SCIP_EXPRBOUNDSTATUS_VALID, SCIP_EXPRCURV_LINEAR, SCIP_EXPRESSION_MAXCHILDEST, SCIP_OKAY, SCIPexprcurvMonomial(), SCIPexprcurvMultiply(), and SCIPintervalIsEmpty().
Referenced by reformulate().
SCIP_USEREXPRDATA* SCIPexprgraphGetNodeUserData | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives the user data belonging to a SCIP_EXPR_USER expression
Definition at line 13277 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::op, and SCIP_EXPR_USER.
SCIP_Bool SCIPexprgraphHasNodeUserEstimator | ( | SCIP_EXPRGRAPHNODE * | node | ) |
indicates whether a user expression has the estimator callback defined
Definition at line 13289 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::op, and SCIP_EXPR_USER.
SCIP_INTERVAL SCIPexprgraphGetNodeBounds | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gets bounds of a node in an expression graph
node | expression graph node |
Definition at line 13301 of file expr.c.
References SCIP_ExprGraphNode::bounds.
Referenced by propagateBounds(), propagateBoundsCons(), propagateConstraintSides(), reformEnsureChildrenMinCurvature(), reformMonomial(), reformNode2Var(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
SCIP_Real SCIPexprgraphGetNodeVal | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gets value of expression associated to node from last evaluation call
node | expression graph node |
Definition at line 13311 of file expr.c.
References SCIP_ExprGraphNode::value.
Referenced by computeViolation(), reformMonomial(), reformNode2Var(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), SCIP_DECL_NONLINCONSUPGD(), and SCIPexprgraphSimplify().
SCIP_EXPRCURV SCIPexprgraphGetNodeCurvature | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gets curvature of expression associated to node from last curvature check call
node | expression graph node |
Definition at line 13321 of file expr.c.
References SCIP_ExprGraphNode::curv.
Referenced by reformEnsureChildrenMinCurvature(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
SCIP_RETCODE SCIPexprgraphCreateNode | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPRGRAPHNODE ** | node, | ||
SCIP_EXPROP | op, | ||
... | |||
) |
creates an expression graph node
blkmem | block memory |
node | buffer to store expression graph node |
op | operator type of expression |
Definition at line 13331 of file expr.c.
References exprgraphCreateNode(), SCIP_CALL, SCIP_ERROR, SCIP_EXPR_ABS, SCIP_EXPR_CONST, SCIP_EXPR_COS, SCIP_EXPR_DIV, SCIP_EXPR_EXP, SCIP_EXPR_INTPOWER, SCIP_EXPR_LAST, SCIP_EXPR_LINEAR, SCIP_EXPR_LOG, SCIP_EXPR_MAX, SCIP_EXPR_MIN, SCIP_EXPR_MINUS, SCIP_EXPR_MUL, SCIP_EXPR_PARAM, SCIP_EXPR_PLUS, SCIP_EXPR_POLYNOMIAL, SCIP_EXPR_PRODUCT, SCIP_EXPR_QUADRATIC, SCIP_EXPR_REALPOWER, SCIP_EXPR_SIGN, SCIP_EXPR_SIGNPOWER, SCIP_EXPR_SIN, SCIP_EXPR_SQRT, SCIP_EXPR_SQUARE, SCIP_EXPR_SUM, SCIP_EXPR_TAN, SCIP_EXPR_USER, SCIP_EXPR_VARIDX, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPABORT, and SCIPerrorMessage.
Referenced by reformMonomial(), and reformulate().
SCIP_RETCODE SCIPexprgraphCreateNodeLinear | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPRGRAPHNODE ** | node, | ||
int | ncoefs, | ||
SCIP_Real * | coefs, | ||
SCIP_Real | constant | ||
) |
creates an expression graph node for a linear expression
blkmem | block memory |
node | buffer to store expression graph node |
ncoefs | number of coefficients |
coefs | coefficients of linear expression |
constant | constant of linear expression |
Definition at line 13414 of file expr.c.
References BMSallocBlockMemoryArray, BMScopyMemoryArray, exprgraphCreateNode(), SCIP_ALLOC, SCIP_CALL, SCIP_EXPR_LINEAR, SCIP_OKAY, and SCIP_Real.
Referenced by reformulate(), and SCIP_DECL_EXPRGRAPHNODEREFORM().
SCIP_RETCODE SCIPexprgraphCreateNodeQuadratic | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPRGRAPHNODE ** | node, | ||
int | nchildren, | ||
SCIP_Real * | lincoefs, | ||
int | nquadelems, | ||
SCIP_QUADELEM * | quadelems, | ||
SCIP_Real | constant | ||
) |
creates an expression graph node for a quadratic expression
blkmem | block memory |
node | buffer to store expression graph node |
nchildren | number of children |
lincoefs | linear coefficients for children, or NULL |
nquadelems | number of quadratic elements |
quadelems | quadratic elements, or NULL if nquadelems == 0 |
constant | constant |
Definition at line 13440 of file expr.c.
References exprgraphCreateNode(), quadraticdataCreate(), SCIP_CALL, SCIP_EXPR_QUADRATIC, and SCIP_OKAY.
Referenced by reformulate().
SCIP_RETCODE SCIPexprgraphCreateNodePolynomial | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPRGRAPHNODE ** | node, | ||
int | nmonomials, | ||
SCIP_EXPRDATA_MONOMIAL ** | monomials, | ||
SCIP_Real | constant, | ||
SCIP_Bool | copymonomials | ||
) |
creates an expression graph node for a polynomial expression
blkmem | block memory |
node | buffer to store expression graph node |
nmonomials | number of monomials |
monomials | monomials |
constant | constant of polynomial |
copymonomials | whether to copy monomials or to assume ownership |
Definition at line 13466 of file expr.c.
References exprgraphCreateNode(), polynomialdataCreate(), SCIP_CALL, SCIP_EXPR_POLYNOMIAL, and SCIP_OKAY.
Referenced by reformulate().
SCIP_RETCODE SCIPexprgraphNodePolynomialAddMonomials | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPRGRAPHNODE * | node, | ||
int | nmonomials, | ||
SCIP_EXPRDATA_MONOMIAL ** | monomials, | ||
SCIP_Bool | copymonomials | ||
) |
adds monomials to an expression graph node that is a polynomial expression
blkmem | block memory |
node | store expression graph node with polynomial operator |
nmonomials | number of monomials |
monomials | monomials |
copymonomials | whether to copy monomials or to assume ownership |
Definition at line 13491 of file expr.c.
References SCIP_ExprGraphNode::data, polynomialdataAddMonomials(), SCIP_CALL, SCIP_EXPR_POLYNOMIAL, SCIP_OKAY, and SCIPexprgraphGetNodeOperator().
SCIP_RETCODE SCIPexprgraphCreateNodeUser | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPRGRAPHNODE ** | node, | ||
SCIP_USEREXPRDATA * | data, | ||
SCIP_EXPRINTCAPABILITY | evalcapability, | ||
SCIP_DECL_USEREXPREVAL((*eval)) | , | ||
SCIP_DECL_USEREXPRINTEVAL((*inteval)) | , | ||
SCIP_DECL_USEREXPRCURV((*curv)) | , | ||
SCIP_DECL_USEREXPRPROP((*prop)) | , | ||
SCIP_DECL_USEREXPRESTIMATE((*estimate)) | , | ||
SCIP_DECL_USEREXPRCOPYDATA((*copydata)) | , | ||
SCIP_DECL_USEREXPRFREEDATA((*freedata)) | , | ||
SCIP_DECL_USEREXPRPRINT((*print)) | |||
) |
creates an expression graph node for a user expression
blkmem | block memory |
node | buffer to store expression graph node |
data | user data for expression, node assumes ownership |
evalcapability | evaluation capability |
Definition at line 13510 of file expr.c.
References BMSallocBlockMemory, eval(), SCIP_ExprData_User::evalcapability, exprgraphCreateNode(), SCIP_ALLOC, SCIP_CALL, SCIP_EXPR_USER, SCIP_EXPRINTCAPABILITY_FUNCVALUE, SCIP_EXPRINTCAPABILITY_INTFUNCVALUE, SCIP_OKAY, and SCIP_ExprData_User::userdata.
SCIP_RETCODE SCIPexprgraphNodeSplitOffLinear | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_EXPRGRAPHNODE ** | node, | ||
int | linvarssize, | ||
int * | nlinvars, | ||
void ** | linvars, | ||
SCIP_Real * | lincoefs, | ||
SCIP_Real * | constant | ||
) |
given a node of an expression graph, splitup a linear part which variables are not used somewhere else in the same expression E.g., if the expression is 1 + x + y + y^2, one gets 1 + x and the node remains at y + y^2. If the node is a linear expression, it may be freed. If it is not linear, the node may change, i.e., the remaining nonlinear part may be stored in a new node. It is assumed that the user had captured the node. It is assumed that the expression graph has been simplified before.
exprgraph | expression graph |
node | expression graph node where to splitup linear part |
linvarssize | length of linvars and lincoefs arrays |
nlinvars | buffer to store length of linear term that have been splitup |
linvars | buffer to store variables of linear part |
lincoefs | buffer to store coefficients of linear part |
constant | buffer to store constant part |
Definition at line 13564 of file expr.c.
References SCIP_ExprGraph::blkmem, BMSallocBlockMemoryArray, BMSclearMemoryArray, BMSfreeBlockMemoryArray, BMSreallocBlockMemoryArray, SCIP_ExprData_Monomial::childidxs, SCIP_ExprGraphNode::children, SCIP_ExprData_Monomial::coef, SCIP_ExprData_Quadratic::constant, SCIP_ExprData_Polynomial::constant, SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::depth, SCIP_ExprData_Monomial::exponents, exprgraphCreateNode(), exprgraphNodeGetVarsUsage(), exprgraphNodeRemoveParent(), exprgraphNodeRemovePolynomialNullChildren(), FALSE, SCIP_QuadElement::idx1, SCIP_QuadElement::idx2, SCIP_ExprData_Quadratic::lincoefs, SCIP_ExprData_Polynomial::monomials, SCIP_ExprGraphNode::nchildren, SCIP_ExprGraph::needvarboundprop, SCIP_ExprData_Monomial::nfactors, SCIP_ExprData_Polynomial::nmonomials, SCIP_ExprData_Quadratic::nquadelems, SCIP_ExprGraph::nvars, SCIP_ExprGraphNode::op, polynomialdataMergeMonomials(), SCIP_ExprData_Quadratic::quadelems, SCIP_ALLOC, SCIP_Bool, SCIP_CALL, SCIP_EXPR_ABS, SCIP_EXPR_CONST, SCIP_EXPR_COS, SCIP_EXPR_DIV, SCIP_EXPR_EXP, SCIP_EXPR_INTPOWER, SCIP_EXPR_LINEAR, SCIP_EXPR_LOG, SCIP_EXPR_MAX, SCIP_EXPR_MIN, SCIP_EXPR_MINUS, SCIP_EXPR_MUL, SCIP_EXPR_PLUS, SCIP_EXPR_POLYNOMIAL, SCIP_EXPR_PRODUCT, SCIP_EXPR_QUADRATIC, SCIP_EXPR_REALPOWER, SCIP_EXPR_SIGN, SCIP_EXPR_SIGNPOWER, SCIP_EXPR_SIN, SCIP_EXPR_SQRT, SCIP_EXPR_SQUARE, SCIP_EXPR_SUM, SCIP_EXPR_TAN, SCIP_EXPR_USER, SCIP_EXPR_VARIDX, SCIP_EXPRBOUNDSTATUS_CHILDTIGHTENED, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIP_REAL_MAX, SCIPdebugMessage, SCIPexprgraphAddNode(), SCIPexprgraphCaptureNode(), SCIPexprgraphReleaseNode(), SCIPexpropGetName(), SCIPintervalSetEntire(), SCIP_ExprData_Quadratic::sorted, SCIP_ExprData_Polynomial::sorted, TRUE, and SCIP_ExprGraph::vars.
Referenced by splitOffLinearPart().
SCIP_RETCODE SCIPexprgraphMoveNodeParents | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_EXPRGRAPHNODE ** | srcnode, | ||
SCIP_EXPRGRAPHNODE * | targetnode | ||
) |
moves parents from a one node to another node in other words, replaces the child srcnode by targetnode in all parents of srcnode srcnode may be freed, if not captured it is assumes that targetnode represents the same expression as srcnode
moves parents from a one node to another node
In other words, replaces the child srcnode by targetnode in all parents of srcnode. srcnode may be freed, if not captured. It is assumed that targetnode represents the same expression as srcnode.
exprgraph | expression graph |
srcnode | node which parents to move |
targetnode | node where to move parents to |
Definition at line 14376 of file expr.c.
References SCIP_ExprGraphNode::depth, exprgraphMoveNode(), exprgraphNodeReplaceChild(), SCIP_ExprGraphNode::nparents, SCIP_ExprGraphNode::nuses, SCIP_CALL, and SCIP_OKAY.
Referenced by reformReplaceNode(), SCIPexprgraphReplaceVarByLinearSum(), and SCIPexprgraphSimplify().
SCIP_RETCODE SCIPexprgraphReleaseNode | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_EXPRGRAPHNODE ** | node | ||
) |
releases node, i.e., decreases number of uses node is freed if no parents and no other uses children are recursively released if they have no other parents nodes that are removed are also freed if node correspond to a variable, then the variable is removed from the expression graph similar for constants
releases node, i.e., decreases number of uses
node is freed if no parents and no other uses. Children are recursively released if they have no other parents. Nodes that are removed are also freed. If node correspond to a variable, then the variable is removed from the expression graph; similarly for constants.
exprgraph | expression graph |
node | expression graph node to release |
Definition at line 14408 of file expr.c.
References SCIP_ExprGraph::blkmem, SCIP_ExprGraphNode::children, SCIP_ExprGraph::constnodes, SCIP_ExprGraph::constssorted, SCIP_ExprGraph::depth, exprgraphFindConstNodePos(), exprgraphNodeRemoveParent(), exprgraphRemoveVar(), FALSE, SCIP_ExprGraphNode::nchildren, SCIP_ExprGraph::nconsts, SCIP_ExprGraph::nnodes, SCIP_ExprGraph::nodes, SCIP_ExprGraphNode::parentssorted, SCIP_ExprGraphNode::pos, SCIP_CALL, SCIP_EXPR_CONST, SCIP_EXPR_VARIDX, SCIP_OKAY, SCIPdebugMessage, SCIPexprgraphFreeNode(), and SCIPexpropGetName().
Referenced by exprgraphNodeRemoveParent(), reformReplaceNode(), SCIP_DECL_CONSDEACTIVE(), and SCIPexprgraphNodeSplitOffLinear().
void SCIPexprgraphFreeNode | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPRGRAPHNODE ** | node | ||
) |
frees a node of an expression graph
blkmem | block memory |
node | pointer to expression graph node that should be freed |
Definition at line 14502 of file expr.c.
References BMSfreeBlockMemory, and BMSfreeBlockMemoryArrayNull.
Referenced by SCIPexprgraphReleaseNode().
void SCIPexprgraphEnableNode | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_EXPRGRAPHNODE * | node | ||
) |
enables a node and recursively all its children in an expression graph
exprgraph | expression graph |
node | expression graph node to enable |
Definition at line 14527 of file expr.c.
References SCIP_ExprGraphNode::depth, SCIP_ExprGraphNode::enabled, SCIP_ExprGraph::needvarboundprop, SCIP_ExprGraphNode::pos, SCIP_REAL_MAX, SCIPdebugMessage, SCIPexprgraphEnableNode(), SCIPintervalSetEntire(), and TRUE.
Referenced by SCIP_DECL_CONSENABLE(), and SCIPexprgraphEnableNode().
void SCIPexprgraphDisableNode | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_EXPRGRAPHNODE * | node | ||
) |
disables a node and recursively all children which have no enabled parents in an expression graph
exprgraph | expression graph |
node | expression graph node to enable |
Definition at line 14554 of file expr.c.
References SCIP_ExprGraphNode::depth, SCIP_ExprGraphNode::enabled, FALSE, SCIP_ExprGraphNode::nparents, SCIP_ExprGraphNode::nuses, SCIP_ExprGraphNode::parents, SCIP_ExprGraphNode::pos, SCIPdebugMessage, SCIPexprgraphDisableNode(), and TRUE.
Referenced by SCIP_DECL_CONSDISABLE(), and SCIPexprgraphDisableNode().
SCIP_Bool SCIPexprgraphHasNodeSibling | ( | SCIP_EXPRGRAPHNODE * | node | ) |
returns whether the node has siblings in the expression graph
node | expression graph node |
Definition at line 14592 of file expr.c.
References FALSE, SCIP_ExprGraphNode::nchildren, SCIP_ExprGraphNode::nparents, SCIP_ExprGraphNode::parents, and TRUE.
Referenced by reformulate(), and SCIP_DECL_EXPRGRAPHNODEREFORM().
SCIP_Bool SCIPexprgraphAreAllNodeChildrenVars | ( | SCIP_EXPRGRAPHNODE * | node | ) |
returns whether all children of an expression graph node are variable nodes gives TRUE for nodes without children
returns whether all children of an expression graph node are variable nodes
Returns TRUE for nodes without children.
node | expression graph node |
Definition at line 14611 of file expr.c.
References SCIP_ExprGraphNode::children, FALSE, SCIP_ExprGraphNode::nchildren, SCIP_ExprGraphNode::op, SCIP_EXPR_VARIDX, and TRUE.
Referenced by SCIP_DECL_NONLINCONSUPGD().
SCIP_Bool SCIPexprgraphHasNodeNonlinearAncestor | ( | SCIP_EXPRGRAPHNODE * | node | ) |
returns whether the node has an ancestor which has a nonlinear expression operand
node | expression graph node |
Definition at line 14627 of file expr.c.
References SCIP_ExprGraphNode::depth, FALSE, SCIP_ExprGraphNode::nparents, SCIP_ExprGraphNode::op, SCIP_ExprGraphNode::parents, SCIP_EXPR_CONST, SCIP_EXPR_LINEAR, SCIP_EXPR_MINUS, SCIP_EXPR_PARAM, SCIP_EXPR_PLUS, SCIP_EXPR_SUM, SCIP_EXPR_VARIDX, SCIPexprgraphHasNodeNonlinearAncestor(), and TRUE.
Referenced by reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIPexprgraphHasNodeNonlinearAncestor().
void SCIPexprgraphPrintNode | ( | SCIP_EXPRGRAPHNODE * | node, |
SCIP_MESSAGEHDLR * | messagehdlr, | ||
FILE * | file | ||
) |
prints an expression graph node
node | expression graph node |
messagehdlr | message handler |
file | file to print to, or NULL for stdout |
Definition at line 14664 of file expr.c.
References exprgraphPrintNodeExpression(), and FALSE.
Referenced by reformulate().
void SCIPexprgraphTightenNodeBounds | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_EXPRGRAPHNODE * | node, | ||
SCIP_INTERVAL | nodebounds, | ||
SCIP_Real | minstrength, | ||
SCIP_Real | infinity, | ||
SCIP_Bool * | cutoff | ||
) |
tightens the bounds in a node of the graph preparation for reverse propagation sets bound status to SCIP_EXPRBOUNDSTATUS_TIGHTENEDBYPARENTRECENT if tightening is strong enough and not cutoff
tightens the bounds in a node of the graph
Preparation for reverse propagation. Sets bound status to SCIP_EXPRBOUNDSTATUS_TIGHTENEDBYPARENTRECENT if tightening is strong enough and not cutoff.
exprgraph | expression graph |
node | node in expression graph with no parents |
nodebounds | new bounds for node |
minstrength | minimal required relative bound strengthening in a node to trigger a propagation into children nodes (set to negative value if propagation should always be triggered) |
infinity | value for infinity in interval arithmetics |
cutoff | buffer to store whether a node's bounds were propagated to an empty interval |
Definition at line 14680 of file expr.c.
References SCIP_ExprGraphNode::depth, SCIP_ExprGraphNode::enabled, FALSE, SCIP_Interval::inf, isLbBetter(), isUbBetter(), SCIP_ExprGraphNode::pos, SCIP_EXPRBOUNDSTATUS_CHILDRELAXED, SCIP_EXPRBOUNDSTATUS_TIGHTENEDBYPARENT, SCIP_EXPRBOUNDSTATUS_TIGHTENEDBYPARENTFORCE, SCIP_EXPRBOUNDSTATUS_TIGHTENEDBYPARENTRECENT, SCIPdebugMessage, SCIPdebugPrintf, SCIPintervalIntersect(), SCIPintervalIsEmpty(), SCIP_Interval::sup, and TRUE.
Referenced by exprgraphNodePropagateBounds(), propagateBoundsCons(), propagateConstraintSides(), and reformNode2Var().
SCIP_RETCODE SCIPexprgraphUpdateNodeBoundsCurvature | ( | SCIP_EXPRGRAPHNODE * | node, |
SCIP_Real | infinity, | ||
SCIP_Real | minstrength, | ||
SCIP_Bool | clearreverseprop | ||
) |
ensures that bounds and curvature information in a node is uptodate assumes that bounds and curvature in children are uptodate
ensures that bounds and curvature information in a node is uptodate
Assumes that bounds and curvature in children are uptodate.
node | expression graph node |
infinity | value for infinity in interval arithmetics |
minstrength | minimal required relative bound strengthening to trigger a bound recalculation in parent nodes |
clearreverseprop | whether to reset bound tightenings from reverse propagation |
Definition at line 14742 of file expr.c.
References BMSallocMemoryArray, BMSfreeMemoryArrayNull, SCIP_ExprGraphNode::bounds, SCIP_ExprGraphNode::boundstatus, SCIP_ExprGraphNode::children, SCIP_ExprGraphNode::curv, SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::depth, SCIP_ExprGraphNode::enabled, SCIP_Interval::inf, isLbBetter(), isUbBetter(), SCIP_ExprGraphNode::nchildren, SCIP_ExprGraphNode::nparents, SCIP_ExprGraphNode::op, SCIP_ExprGraphNode::parents, SCIP_ExprGraphNode::pos, SCIP_ALLOC, SCIP_ALLOC_TERMINATE, SCIP_CALL_TERMINATE, SCIP_EXPR_PARAM, SCIP_EXPR_VARIDX, SCIP_EXPRBOUNDSTATUS_CHILDRELAXED, SCIP_EXPRBOUNDSTATUS_CHILDTIGHTENED, SCIP_EXPRBOUNDSTATUS_TIGHTENEDBYPARENT, SCIP_EXPRBOUNDSTATUS_VALID, SCIP_EXPRCURV_LINEAR, SCIP_EXPRESSION_MAXCHILDEST, SCIP_OKAY, SCIPdebugMessage, SCIPexpropGetName(), SCIPintervalIntersect(), SCIPintervalIsEmpty(), and SCIP_Interval::sup.
Referenced by reformEnsureChildrenMinCurvature(), reformMonomial(), reformulate(), and SCIPexprgraphCheckCurvature().
int SCIPexprgraphGetDepth | ( | SCIP_EXPRGRAPH * | exprgraph | ) |
get current maximal depth of expression graph
exprgraph | expression graph |
Definition at line 14893 of file expr.c.
References SCIP_ExprGraph::depth.
Referenced by reformulate().
int* SCIPexprgraphGetNNodes | ( | SCIP_EXPRGRAPH * | exprgraph | ) |
gets array with number of nodes at each depth of expression graph
exprgraph | expression graph |
Definition at line 14903 of file expr.c.
References SCIP_ExprGraph::nnodes.
Referenced by reformulate().
SCIP_EXPRGRAPHNODE*** SCIPexprgraphGetNodes | ( | SCIP_EXPRGRAPH * | exprgraph | ) |
gets nodes of expression graph, one array per depth
exprgraph | expression graph |
Definition at line 14913 of file expr.c.
References SCIP_ExprGraph::nodes.
Referenced by reformulate().
int SCIPexprgraphGetNVars | ( | SCIP_EXPRGRAPH * | exprgraph | ) |
gets number of variables in expression graph
exprgraph | pointer to expression graph that should be freed |
Definition at line 14923 of file expr.c.
References SCIP_ExprGraph::nvars.
Referenced by computeViolations(), presolveUpgrade(), propagateBounds(), propagateConstraintSides(), reformulate(), removeFixedNonlinearVariables(), SCIP_DECL_CONSCHECK(), SCIP_DECL_CONSFREE(), SCIP_DECL_CONSGETNVARS(), and SCIP_DECL_CONSGETVARS().
void** SCIPexprgraphGetVars | ( | SCIP_EXPRGRAPH * | exprgraph | ) |
gets array of variables in expression graph
exprgraph | pointer to expression graph that should be freed |
Definition at line 14933 of file expr.c.
References SCIP_ExprGraph::vars.
Referenced by computeViolations(), presolveUpgrade(), propagateBounds(), propagateConstraintSides(), reformulate(), removeFixedNonlinearVariables(), SCIP_DECL_CONSCHECK(), and SCIP_DECL_CONSGETVARS().
SCIP_EXPRGRAPHNODE** SCIPexprgraphGetVarNodes | ( | SCIP_EXPRGRAPH * | exprgraph | ) |
gets array of expression graph nodes corresponding to variables
exprgraph | pointer to expression graph that should be freed |
Definition at line 14943 of file expr.c.
References SCIP_ExprGraph::varnodes.
Referenced by propagateBounds(), and propagateConstraintSides().
void SCIPexprgraphSetVarNodeValue | ( | SCIP_EXPRGRAPHNODE * | varnode, |
SCIP_Real | value | ||
) |
sets value for a single variable given as expression graph node
varnode | expression graph node corresponding to variable |
value | new value for variable |
Definition at line 14953 of file expr.c.
References SCIP_ExprGraphNode::op, SCIP_EXPR_VARIDX, and SCIP_ExprGraphNode::value.
Referenced by reformMonomial(), reformNode2Var(), reformulate(), and SCIP_DECL_EXPRGRAPHNODEREFORM().
void SCIPexprgraphSetVarsBounds | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_INTERVAL * | varbounds | ||
) |
sets bounds for variables
exprgraph | expression graph |
varbounds | new bounds for variables |
Definition at line 14965 of file expr.c.
References BMScopyMemoryArray, SCIP_ExprGraph::nvars, and SCIP_ExprGraph::varbounds.
void SCIPexprgraphSetVarBounds | ( | SCIP_EXPRGRAPH * | exprgraph, |
void * | var, | ||
SCIP_INTERVAL | varbounds | ||
) |
sets bounds for a single variable
exprgraph | expression graph |
var | variable |
varbounds | new bounds of variable |
Definition at line 14977 of file expr.c.
References SCIPhashmapExists(), SCIPhashmapGetImage(), SCIP_ExprGraph::varbounds, SCIP_ExprGraph::varidxs, and SCIP_ExprGraph::vars.
void SCIPexprgraphSetVarNodeBounds | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_EXPRGRAPHNODE * | varnode, | ||
SCIP_INTERVAL | varbounds | ||
) |
sets bounds for a single variable given as expression graph node
exprgraph | expression graph |
varnode | expression graph node corresponding to variable |
varbounds | new bounds of variable |
Definition at line 14997 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_ExprGraph::varbounds, and SCIP_ExprGraph::varnodes.
Referenced by SCIP_DECL_EXPRGRAPHVARADDED().
void SCIPexprgraphSetVarNodeLb | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_EXPRGRAPHNODE * | varnode, | ||
SCIP_Real | lb | ||
) |
sets lower bound for a single variable given as expression graph node
exprgraph | expression graph |
varnode | expression graph node corresponding to variable |
lb | new lower bound for variable |
Definition at line 15017 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_Interval::inf, SCIP_ExprGraph::varbounds, and SCIP_ExprGraph::varnodes.
Referenced by SCIP_DECL_EVENTEXEC().
void SCIPexprgraphSetVarNodeUb | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_EXPRGRAPHNODE * | varnode, | ||
SCIP_Real | ub | ||
) |
sets upper bound for a single variable given as expression graph node
exprgraph | expression graph |
varnode | expression graph node corresponding to variable |
ub | new upper bound for variable |
Definition at line 15037 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_Interval::sup, SCIP_ExprGraph::varbounds, and SCIP_ExprGraph::varnodes.
Referenced by SCIP_DECL_EVENTEXEC().
SCIP_INTERVAL* SCIPexprgraphGetVarsBounds | ( | SCIP_EXPRGRAPH * | exprgraph | ) |
gets bounds that are stored for all variables
exprgraph | expression graph |
Definition at line 15057 of file expr.c.
References SCIP_ExprGraph::varbounds.
SCIP_RETCODE SCIPexprgraphCreate | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPRGRAPH ** | exprgraph, | ||
int | varssizeinit, | ||
int | depthinit, | ||
SCIP_DECL_EXPRGRAPHVARADDED((*exprgraphvaradded)) | , | ||
SCIP_DECL_EXPRGRAPHVARREMOVE((*exprgraphvarremove)) | , | ||
SCIP_DECL_EXPRGRAPHVARCHGIDX((*exprgraphvarchgidx)) | , | ||
void * | userdata | ||
) |
creates an empty expression graph
blkmem | block memory |
exprgraph | buffer to store pointer to expression graph |
varssizeinit | minimal initial size for variables array, or -1 to choose automatically |
depthinit | minimal initial depth of expression graph, or -1 to choose automatically |
userdata | user data to pass to callback functions |
Definition at line 15065 of file expr.c.
References BMSallocBlockMemory, BMSclearMemory, ensureBlockMemoryArraySize3, exprgraphEnsureDepth(), MAX, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIPhashmapCreate(), and TRUE.
Referenced by SCIPincludeConshdlrBivariate(), and SCIPincludeConshdlrNonlinear().
SCIP_RETCODE SCIPexprgraphFree | ( | SCIP_EXPRGRAPH ** | exprgraph | ) |
frees an expression graph
exprgraph | pointer to expression graph that should be freed |
Definition at line 15104 of file expr.c.
References BMSfreeBlockMemory, BMSfreeBlockMemoryArray, BMSfreeBlockMemoryArrayNull, SCIP_OKAY, and SCIPhashmapFree().
Referenced by SCIP_DECL_CONSFREE().
SCIP_RETCODE SCIPexprgraphAddNode | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_EXPRGRAPHNODE * | node, | ||
int | mindepth, | ||
int | nchildren, | ||
SCIP_EXPRGRAPHNODE ** | children | ||
) |
adds an expression graph node to an expression graph expression graph assumes ownership of node children are notified about new parent depth will be chosen to be the maximum of mindepth and the depth of all children plus one
adds an expression graph node to an expression graph
Expression graph assumes ownership of node. Children are notified about new parent. Depth will be chosen to be the maximum of mindepth and the depth of all children plus one.
exprgraph | expression graph |
node | expression graph node to add |
mindepth | minimal depth in expression graph where to add node, e.g., 0 or smaller to choose automatically |
nchildren | number of children |
children | children nodes, or NULL if no children |
Definition at line 15153 of file expr.c.
References SCIP_ExprGraph::blkmem, BMSduplicateBlockMemoryArray, SCIP_ExprGraphNode::bounds, SCIP_ExprGraphNode::boundstatus, SCIP_ExprGraphNode::children, SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::depth, SCIP_ExprGraph::depth, ensureBlockMemoryArraySize, exprgraphEnsureDepth(), exprgraphNodeAddParent(), exprgraphNodeEval(), MAX, SCIP_ExprGraphNode::nchildren, SCIP_ExprGraph::needvarboundprop, SCIP_ExprGraph::nnodes, SCIP_ExprGraph::nodes, SCIP_ExprGraph::nodessize, SCIP_ExprGraphNode::nparents, SCIP_ExprGraphNode::op, SCIP_ExprGraphNode::pos, SCIP_ALLOC, SCIP_Bool, SCIP_CALL, SCIP_EXPR_CONST, SCIP_EXPR_VARIDX, SCIP_EXPRBOUNDSTATUS_CHILDTIGHTENED, SCIP_EXPRBOUNDSTATUS_VALID, SCIP_INVALID, SCIP_OKAY, SCIP_REAL_MAX, SCIPintervalSet(), SCIPintervalSetEntire(), TRUE, and SCIP_ExprGraphNode::value.
Referenced by exprgraphAddExpr(), reformMonomial(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), SCIPexprgraphAddConst(), SCIPexprgraphAddExprtreeSum(), SCIPexprgraphAddVars(), and SCIPexprgraphNodeSplitOffLinear().
SCIP_RETCODE SCIPexprgraphAddVars | ( | SCIP_EXPRGRAPH * | exprgraph, |
int | nvars, | ||
void ** | vars, | ||
SCIP_EXPRGRAPHNODE ** | varnodes | ||
) |
adds variables to an expression graph, if not existing yet also already existing nodes are enabled
adds variables to an expression graph, if not existing yet
Also already existing nodes are enabled.
exprgraph | expression graph |
nvars | number of variables to add |
vars | variables to add |
varnodes | array to store nodes corresponding to variables, or NULL if not of interest |
Definition at line 15237 of file expr.c.
References SCIP_ExprGraph::blkmem, SCIP_ExprGraphNode::depth, SCIP_ExprGraph::depth, SCIP_ExprGraphNode::enabled, ensureBlockMemoryArraySize, ensureBlockMemoryArraySize3, exprgraphCreateNode(), SCIP_ExprGraph::nnodes, SCIP_ExprGraph::nodes, SCIP_ExprGraph::nodessize, SCIP_ExprGraph::nvars, SCIP_CALL, SCIP_EXPR_VARIDX, SCIP_OKAY, SCIP_REAL_MAX, SCIPdebugMessage, SCIPexprgraphAddNode(), SCIPexprgraphFindVarNode(), SCIPhashmapExists(), SCIPhashmapInsert(), SCIPintervalSetEntire(), TRUE, SCIP_ExprGraph::userdata, SCIP_ExprGraph::varbounds, SCIP_ExprGraph::varidxs, SCIP_ExprGraph::varnodes, SCIP_ExprGraph::vars, and SCIP_ExprGraph::varssize.
Referenced by exprgraphAddExpr(), reformMonomial(), reformNode2Var(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIPexprgraphReplaceVarByLinearSum().
SCIP_RETCODE SCIPexprgraphAddConst | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_Real | constant, | ||
SCIP_EXPRGRAPHNODE ** | constnode | ||
) |
adds a constant to an expression graph, if not existing yet also already existing nodes are enabled
adds a constant to an expression graph, if not existing yet
Also already existing nodes are enabled.
exprgraph | expression graph |
constant | constant to add |
constnode | buffer to store pointer to expression graph node corresponding to constant |
Definition at line 15310 of file expr.c.
References SCIP_ExprGraph::blkmem, SCIP_ExprGraph::constnodes, SCIP_ExprGraph::constssize, SCIP_ExprGraph::constssorted, SCIP_ExprGraphNode::depth, ensureBlockMemoryArraySize, exprgraphCreateNode(), SCIP_ExprGraph::nconsts, SCIP_ExprGraph::nnodes, SCIP_CALL, SCIP_EXPR_CONST, SCIP_OKAY, SCIPdebugMessage, SCIPexprgraphAddNode(), SCIPexprgraphFindConstNode(), and TRUE.
Referenced by exprgraphAddExpr().
SCIP_RETCODE SCIPexprgraphAddExprtreeSum | ( | SCIP_EXPRGRAPH * | exprgraph, |
int | nexprtrees, | ||
SCIP_EXPRTREE ** | exprtrees, | ||
SCIP_Real * | coefs, | ||
SCIP_EXPRGRAPHNODE ** | rootnode, | ||
SCIP_Bool * | rootnodeisnew | ||
) |
adds sum of expression trees into expression graph node will also be captured
adds sum of expression trees into expression graph
node will also be captured.
exprgraph | expression graph |
nexprtrees | number of expression trees to add |
exprtrees | expression trees that should be added |
coefs | coefficients of expression trees, or NULL if all 1.0 |
rootnode | buffer to store expression graph node corresponding to root of expression tree |
rootnodeisnew | buffer to indicate whether the node in *rootnode has been newly created for this expression tree (otherwise, expression tree was already in graph) |
Definition at line 15357 of file expr.c.
References SCIP_ExprGraph::blkmem, BMSallocBlockMemoryArray, BMScopyMemoryArray, BMSfreeBlockMemoryArray, SCIP_ExprGraphNode::depth, exprgraphAddExpr(), exprgraphCreateNode(), exprgraphFindParentByOperator(), FALSE, SCIP_ALLOC, SCIP_Bool, SCIP_CALL, SCIP_EXPR_LINEAR, SCIP_EXPR_MINUS, SCIP_EXPR_PLUS, SCIP_EXPR_SUM, SCIP_OKAY, SCIP_Real, SCIPdebugMessage, SCIPexprgraphAddNode(), SCIPexprgraphCaptureNode(), and TRUE.
Referenced by SCIP_DECL_CONSACTIVE().
SCIP_RETCODE SCIPexprgraphReplaceVarByLinearSum | ( | SCIP_EXPRGRAPH * | exprgraph, |
void * | var, | ||
int | ncoefs, | ||
SCIP_Real * | coefs, | ||
void ** | vars, | ||
SCIP_Real | constant | ||
) |
replaces variable in expression graph by a linear sum of variables variables will be added if not in the graph yet
replaces variable in expression graph by a linear sum of variables
Variables will be added if not in the graph yet.
exprgraph | expression graph |
var | variable to replace |
ncoefs | number of coefficients in linear term |
coefs | coefficients in linear term, or NULL if ncoefs == 0 |
vars | variables in linear term |
constant | constant offset |
Definition at line 15497 of file expr.c.
References SCIP_ExprGraph::blkmem, BMSallocBlockMemoryArray, BMScopyMemoryArray, SCIP_ExprGraphNode::bounds, SCIP_ExprGraphNode::boundstatus, SCIP_ExprGraphNode::children, SCIP_ExprGraph::constnodes, SCIP_ExprGraph::constssize, SCIP_ExprGraph::constssorted, SCIP_ExprGraphNode::data, ensureBlockMemoryArraySize, ensureBlockMemoryArraySize3, exprgraphMoveNode(), exprgraphNodeAddParent(), exprgraphRemoveVar(), FALSE, SCIP_ExprGraphNode::nchildren, SCIP_ExprGraph::nconsts, SCIP_ExprGraphNode::nparents, SCIP_ExprGraphNode::nuses, SCIP_ExprGraph::nvars, SCIP_ExprGraphNode::op, SCIP_ExprGraphNode::parents, SCIP_ALLOC, SCIP_CALL, SCIP_EXPR_CONST, SCIP_EXPR_LINEAR, SCIP_EXPR_SUM, SCIP_EXPRBOUNDSTATUS_CHILDRELAXED, SCIP_EXPRBOUNDSTATUS_VALID, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIP_REAL_MAX, SCIPdebugMessage, SCIPexprgraphAddVars(), SCIPexprgraphFindConstNode(), SCIPexprgraphFindVarNode(), SCIPexprgraphMoveNodeParents(), SCIPhashmapExists(), SCIPhashmapGetImage(), SCIPhashmapInsert(), SCIPintervalSet(), SCIPintervalSetEntire(), SCIP_ExprGraphNode::simplified, SCIP_ExprGraph::userdata, SCIP_ExprGraphNode::value, SCIP_ExprGraph::varbounds, SCIP_ExprGraph::varidxs, SCIP_ExprGraph::varnodes, SCIP_ExprGraph::vars, and SCIP_ExprGraph::varssize.
Referenced by removeFixedNonlinearVariables().
SCIP_Bool SCIPexprgraphFindVarNode | ( | SCIP_EXPRGRAPH * | exprgraph, |
void * | var, | ||
SCIP_EXPRGRAPHNODE ** | varnode | ||
) |
finds expression graph node corresponding to a variable
exprgraph | expression graph |
var | variable to search for |
varnode | buffer to store node corresponding to variable, if found, or NULL if not found |
Definition at line 15669 of file expr.c.
References FALSE, SCIP_EXPR_VARIDX, SCIPhashmapExists(), SCIPhashmapGetImage(), TRUE, SCIP_ExprGraph::varidxs, and SCIP_ExprGraph::varnodes.
Referenced by SCIPexprgraphAddVars(), and SCIPexprgraphReplaceVarByLinearSum().
SCIP_Bool SCIPexprgraphFindConstNode | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_Real | constant, | ||
SCIP_EXPRGRAPHNODE ** | constnode | ||
) |
finds expression graph node corresponding to a constant
exprgraph | expression graph |
constant | constant to search for |
constnode | buffer to store node corresponding to constant, if found, or NULL if not found |
Definition at line 15698 of file expr.c.
References SCIP_ExprGraph::constnodes, SCIP_ExprGraph::constssorted, SCIP_ExprGraphNode::data, exprgraphSortConstNodes(), FALSE, SCIP_ExprGraph::nconsts, SCIP_EXPR_CONST, and TRUE.
Referenced by SCIPexprgraphAddConst(), SCIPexprgraphReplaceVarByLinearSum(), and SCIPexprgraphSimplify().
SCIP_RETCODE SCIPexprgraphPrintDot | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_MESSAGEHDLR * | messagehdlr, | ||
FILE * | file, | ||
const char ** | varnames | ||
) |
prints an expression graph in dot format
exprgraph | expression graph |
messagehdlr | message handler |
file | file to print to, or NULL for stdout |
varnames | variable names, or NULL for generic names |
Definition at line 15746 of file expr.c.
References SCIP_ExprGraph::depth, exprgraphPrintNodeDot(), SCIP_ExprGraph::nnodes, SCIP_ExprGraph::nodes, SCIP_ExprGraphNode::nparents, SCIP_OKAY, and SCIPmessageFPrintInfo().
Referenced by propagateBounds(), propagateConstraintSides(), SCIP_DECL_CONSINIT(), and SCIPexprgraphSimplify().
SCIP_RETCODE SCIPexprgraphEval | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_Real * | varvals | ||
) |
evaluates nodes of expression graph for given values of variables
exprgraph | expression graph |
varvals | values for variables |
Definition at line 15795 of file expr.c.
References SCIP_ExprGraph::depth, exprgraphNodeEval(), SCIP_ExprGraph::nnodes, SCIP_ExprGraph::nodes, SCIP_ExprGraph::nvars, SCIP_CALL, and SCIP_OKAY.
Referenced by computeViolations(), presolveUpgrade(), reformulate(), SCIP_DECL_CONSCHECK(), and SCIPexprgraphSimplify().
SCIP_RETCODE SCIPexprgraphPropagateVarBounds | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_Real | infinity, | ||
SCIP_Bool | clearreverseprop, | ||
SCIP_Bool * | domainerror | ||
) |
propagates bound changes in variables forward through the expression graph
exprgraph | expression graph |
infinity | value for infinity in interval arithmetics |
clearreverseprop | whether to reset bound tightenings from reverse propagation |
domainerror | buffer to store whether a node with empty bounds has been found, propagation is interrupted in this case |
Definition at line 15816 of file expr.c.
References SCIP_ExprGraphNode::bounds, SCIP_ExprGraphNode::depth, SCIP_ExprGraph::depth, exprgraphNodeUpdateBounds(), exprgraphUpdateVarNodeBounds(), FALSE, SCIP_ExprGraph::needvarboundprop, SCIP_ExprGraph::nnodes, SCIP_ExprGraph::nodes, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, SCIPintervalIsEmpty(), and TRUE.
Referenced by propagateBounds(), reformulate(), and SCIP_DECL_CONSPRESOL().
void SCIPexprgraphPropagateNodeBounds | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_Real | infinity, | ||
SCIP_Real | minstrength, | ||
SCIP_Bool * | cutoff | ||
) |
propagates bound changes in nodes backward through the graph new bounds are not stored in varbounds, but only in nodes corresponding to variables NOTE: it is assumed that SCIPexprgraphPropagateVarBounds was called before if variable bounds were relaxed
propagates bound changes in nodes backward through the graph
New bounds are not stored in varbounds, but only in nodes corresponding to variables. NOTE: it is assumed that SCIPexprgraphPropagateVarBounds was called before if variable bounds were relaxed.
exprgraph | expression graph |
infinity | value for infinity in interval arithmetics |
minstrength | minimal required relative bound strengthening in a node to trigger a propagation into children nodes |
cutoff | buffer to store whether a node's bounds were propagated to an empty interval |
Definition at line 15870 of file expr.c.
References SCIP_ExprGraph::depth, exprgraphNodePropagateBounds(), FALSE, SCIP_ExprGraph::nnodes, and SCIP_ExprGraph::nodes.
Referenced by propagateBounds(), and propagateConstraintSides().
SCIP_RETCODE SCIPexprgraphCheckCurvature | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_Real | infinity, | ||
SCIP_Bool | clearreverseprop | ||
) |
updates curvature information in expression graph nodes w.r.t. currently stored variable bounds implies update of bounds in expression graph
updates curvature information in expression graph nodes w.r.t. currently stored variable bounds
Implies update of bounds in expression graph.
exprgraph | expression graph |
infinity | value for infinity in interval arithmetics |
clearreverseprop | whether to reset bound tightenings from reverse propagation |
Definition at line 15902 of file expr.c.
References SCIP_ExprGraphNode::bounds, SCIP_ExprGraphNode::curv, SCIP_ExprGraph::depth, exprgraphUpdateVarNodeBounds(), SCIP_ExprGraph::nnodes, SCIP_ExprGraph::nodes, SCIP_Bool, SCIP_CALL, SCIP_EXPRCURV_LINEAR, SCIP_OKAY, SCIPerrorMessage, SCIPexprgraphUpdateNodeBoundsCurvature(), and SCIPintervalIsEmpty().
SCIP_RETCODE SCIPexprgraphSimplify | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_MESSAGEHDLR * | messagehdlr, | ||
SCIP_Real | eps, | ||
int | maxexpansionexponent, | ||
SCIP_Bool * | havechange, | ||
SCIP_Bool * | domainerror | ||
) |
aims at simplifying an expression graph a domain error can occur when variables were fixed to values for which a parent expression is not defined (e.g., 0^(-1) or log(-1))
aims at simplifying an expression graph
A domain error can occur when variables were fixed to values for which a parent expression is not defined (e.g., 0^(-1) or log(-1)).
exprgraph | expression graph |
messagehdlr | message handler |
eps | threshold, under which positive values are treat as 0 |
maxexpansionexponent | maximal exponent for which we still expand non-monomial polynomials |
havechange | buffer to indicate whether the graph has been modified |
domainerror | buffer to indicate whether a domain error has been encountered, i.e., some expressions turned into NaN |
Definition at line 15945 of file expr.c.
References SCIP_ExprGraph::blkmem, BMSallocMemoryArray, BMSfreeBlockMemoryArrayNull, BMSfreeMemoryArray, SCIP_ExprGraphNode::children, SCIP_ExprGraphNode::data, SCIP_ExprGraph::depth, ensureBlockMemoryArraySize, EPSZ, exprgraphMoveNode(), exprgraphNodeEval(), exprgraphNodeReplaceChild(), exprgraphNodeSimplify(), exprUnconvertPolynomial(), FALSE, SCIP_ExprGraphNode::nchildren, SCIP_ExprGraph::nnodes, SCIP_ExprGraph::nodes, SCIP_ExprGraphNode::nparents, SCIP_ExprGraphNode::nuses, SCIP_ExprGraph::nvars, SCIP_ExprGraphNode::op, SCIP_ExprGraphNode::parents, SCIP_ALLOC, SCIP_Bool, SCIP_CALL, SCIP_EXPR_CONST, SCIP_EXPR_POLYNOMIAL, SCIP_EXPR_SUM, SCIP_OKAY, SCIP_Real, SCIPdebugMessage, SCIPexprgraphEval(), SCIPexprgraphFindConstNode(), SCIPexprgraphGetNodeVal(), SCIPexprgraphMoveNodeParents(), SCIPexprgraphPrintDot(), SCIPhashmapCreate(), SCIPhashmapExists(), SCIPhashmapFree(), SCIPhashmapGetImage(), SCIPhashmapInsert(), SCIPisFinite, SCIPrandomCreate(), SCIPrandomFree(), SCIPrandomGetReal(), SCIPrelDiff(), SCIP_ExprGraphNode::simplified, TRUE, and SCIP_ExprGraphNode::value.
Referenced by SCIP_DECL_CONSEXITPRE(), and SCIP_DECL_CONSPRESOL().
SCIP_RETCODE SCIPexprgraphGetTree | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_EXPRGRAPHNODE * | rootnode, | ||
SCIP_EXPRTREE ** | exprtree | ||
) |
creates an expression tree from a given node in an expression graph
exprgraph | expression graph |
rootnode | expression graph node that should represent root of expression tree |
exprtree | buffer to store pointer to created expression tree |
Definition at line 16206 of file expr.c.
References SCIP_ExprGraph::blkmem, BMSallocBlockMemoryArray, BMSfreeBlockMemoryArray, SCIP_ExprGraphNode::depth, exprgraphNodeCreateExpr(), SCIP_ExprGraph::nvars, SCIP_ExprGraphNode::pos, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIPexprtreeCreate(), and SCIP_ExprGraph::vars.
Referenced by createNlRow(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSDEACTIVE(), SCIP_DECL_CONSPRINT(), SCIPexprgraphGetSeparableTrees(), SCIPexprgraphGetSumTrees(), and SCIPwriteGms().
SCIP_RETCODE SCIPexprgraphGetSeparableTrees | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_EXPRGRAPHNODE * | node, | ||
int | exprtreessize, | ||
int * | nexprtrees, | ||
SCIP_EXPRTREE ** | exprtrees, | ||
SCIP_Real * | exprtreecoefs | ||
) |
creates a sum of expression trees with pairwise disjoint variables from a given node in an expression graph Giving SCIPexprgraphGetNodeNChildren() for exprtreesize is always sufficient.
exprgraph | expression graph |
node | expression graph node which represents expression to get |
exprtreessize | length of exprtrees and exprtreecoefs arrays, need to be at least one |
nexprtrees | buffer to store number of expression trees |
exprtrees | array where to store expression trees |
exprtreecoefs | array where to store coefficients of expression trees |
Definition at line 16259 of file expr.c.
References SCIP_ExprGraph::blkmem, BMSallocBlockMemoryArray, BMSfreeBlockMemoryArray, BMSfreeBlockMemoryArrayNull, SCIP_ExprData_Monomial::childidxs, SCIP_ExprGraphNode::children, SCIP_ExprData_Monomial::coef, SCIP_QuadElement::coef, SCIP_ExprData_Quadratic::constant, SCIP_ExprData_Polynomial::constant, SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::depth, SCIP_ExprData_Monomial::exponents, exprgraphNodeCheckSeparabilityComponent(), exprgraphNodeCreateExpr(), FALSE, SCIP_QuadElement::idx1, SCIP_QuadElement::idx2, SCIP_ExprData_Quadratic::lincoefs, MAX, SCIP_ExprData_Polynomial::monomials, SCIP_ExprGraphNode::nchildren, SCIP_ExprData_Monomial::nfactors, SCIP_ExprData_Polynomial::nmonomials, nodedata, SCIP_ExprData_Quadratic::nquadelems, SCIP_ExprGraph::nvars, SCIP_ExprGraphNode::op, SCIP_ExprGraphNode::pos, SCIP_ExprData_Quadratic::quadelems, SCIP_ALLOC, SCIP_Bool, SCIP_CALL, SCIP_ERROR, SCIP_EXPR_CONST, SCIP_EXPR_LINEAR, SCIP_EXPR_MINUS, SCIP_EXPR_PLUS, SCIP_EXPR_POLYNOMIAL, SCIP_EXPR_QUADRATIC, SCIP_EXPR_SUM, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, SCIPexprCreate(), SCIPexprCreateLinear(), SCIPexprCreateMonomial(), SCIPexprCreatePolynomial(), SCIPexprCreateQuadratic(), SCIPexprgraphGetTree(), SCIPexprtreeCreate(), TRUE, SCIP_ExprTree::vars, and SCIP_ExprGraph::vars.
void SCIPexprgraphGetSubtreeVarsUsage | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_EXPRGRAPHNODE * | node, | ||
int * | varsusage | ||
) |
returns how often expression graph variables are used in a subtree of the expression graph
exprgraph | expression graph |
node | root node of expression graph subtree |
varsusage | array where to count usage of variables, length must be at least the number of variables in the graph |
Definition at line 16693 of file expr.c.
References BMSclearMemoryArray, exprgraphNodeGetVarsUsage(), and SCIP_ExprGraph::nvars.
Referenced by SCIP_DECL_CONSGETNVARS(), and SCIP_DECL_CONSGETVARS().
int SCIPexprgraphGetSumTreesNSummands | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives the number of summands which the expression of an expression graph node consists of
node | expression graph node |
Definition at line 16709 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_ExprData_Quadratic::lincoefs, SCIP_ExprGraphNode::nchildren, SCIP_ExprData_Polynomial::nmonomials, nodedata, SCIP_ExprData_Quadratic::nquadelems, SCIP_ExprGraphNode::op, SCIP_EXPR_LINEAR, SCIP_EXPR_MINUS, SCIP_EXPR_PLUS, SCIP_EXPR_POLYNOMIAL, SCIP_EXPR_QUADRATIC, and SCIP_EXPR_SUM.
Referenced by SCIP_DECL_CONSEXITPRE().
SCIP_RETCODE SCIPexprgraphGetSumTrees | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_EXPRGRAPHNODE * | node, | ||
int | exprtreessize, | ||
int * | nexprtrees, | ||
SCIP_EXPRTREE ** | exprtrees, | ||
SCIP_Real * | exprtreecoefs | ||
) |
creates a sum of expression trees, possibly sharing variables, from a given node in an expression graph
exprgraph | expression graph |
node | expression graph node which represents expression to get |
exprtreessize | length of exprtrees and exptreecoefs arrays, should be at least SCIPexprgraphGetSumTreesNSummands() |
nexprtrees | buffer to store number of expression trees |
exprtrees | array where to store expression trees |
exprtreecoefs | array where to store coefficients of expression trees |
Definition at line 16745 of file expr.c.
References SCIP_ExprGraph::blkmem, BMSallocBlockMemoryArray, BMSfreeBlockMemoryArray, SCIP_ExprData_Monomial::childidxs, SCIP_ExprGraphNode::children, SCIP_ExprData_Monomial::coef, SCIP_QuadElement::coef, SCIP_ExprData_Quadratic::constant, SCIP_ExprData_Polynomial::constant, SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::depth, EPSISINT, SCIP_ExprData_Monomial::exponents, exprgraphNodeCreateExpr(), FALSE, SCIP_QuadElement::idx1, SCIP_QuadElement::idx2, SCIP_ExprData_Quadratic::lincoefs, SCIP_ExprData_Polynomial::monomials, SCIP_ExprGraphNode::nchildren, SCIP_ExprData_Monomial::nfactors, SCIP_ExprData_Polynomial::nmonomials, nodedata, SCIP_ExprData_Quadratic::nquadelems, SCIP_ExprGraph::nvars, SCIP_ExprGraphNode::op, SCIP_ExprGraphNode::pos, SCIP_ExprData_Quadratic::quadelems, SCIP_ALLOC, SCIP_CALL, SCIP_ERROR, SCIP_EXPR_CONST, SCIP_EXPR_INTPOWER, SCIP_EXPR_LINEAR, SCIP_EXPR_MINUS, SCIP_EXPR_MUL, SCIP_EXPR_PLUS, SCIP_EXPR_POLYNOMIAL, SCIP_EXPR_QUADRATIC, SCIP_EXPR_REALPOWER, SCIP_EXPR_SQUARE, SCIP_EXPR_SUM, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, SCIPexprCreate(), SCIPexprCreateMonomial(), SCIPexprCreatePolynomial(), SCIPexprgraphGetTree(), SCIPexprtreeAddExpr(), SCIPexprtreeCreate(), SCIP_ExprTree::vars, and SCIP_ExprGraph::vars.
Referenced by SCIP_DECL_CONSEXITPRE().