Detailed Description
methods for expressions, expression trees, expression graphs, and related
Definition in file expr.c.
#include <stdarg.h>
#include <string.h>
#include <math.h>
#include <ctype.h>
#include "nlpi/pub_expr.h"
#include "nlpi/struct_expr.h"
#include "nlpi/exprinterpret.h"
#include "scip/intervalarith.h"
#include "scip/pub_misc.h"
#include "scip/misc.h"
#include "scip/pub_message.h"
Go to the source code of this file.
Macros | |
#define | SCIP_EXPRESSION_MAXCHILDEST 16 |
#define | SIGN(x) ((x) >= 0.0 ? 1.0 : -1.0) |
#define | ensureBlockMemoryArraySize(blkmem, array1, cursize, minsize) |
#define | ensureBlockMemoryArraySize3(blkmem, array1, array2, array3, cursize, minsize) |
Expression curvature methods | |
static const char * | curvnames [4] |
SCIP_EXPRCURV | SCIPexprcurvAdd (SCIP_EXPRCURV curv1, SCIP_EXPRCURV curv2) |
SCIP_EXPRCURV | SCIPexprcurvNegate (SCIP_EXPRCURV curvature) |
SCIP_EXPRCURV | SCIPexprcurvMultiply (SCIP_Real factor, SCIP_EXPRCURV curvature) |
SCIP_EXPRCURV | SCIPexprcurvPower (SCIP_INTERVAL basebounds, SCIP_EXPRCURV basecurv, SCIP_Real exponent) |
SCIP_EXPRCURV | SCIPexprcurvMonomial (int nfactors, SCIP_Real *exponents, int *factoridxs, SCIP_EXPRCURV *factorcurv, SCIP_INTERVAL *factorbounds) |
const char * | SCIPexprcurvGetName (SCIP_EXPRCURV curv) |
Expression operand private methods | |
#define | exprcurvSin exprcurvDefault |
#define | exprcurvCos exprcurvDefault |
#define | exprevalIntTan exprevalIntDefault |
#define | exprcurvTan exprcurvDefault |
#define | EXPROPEMPTY {NULL, -1, NULL, NULL, NULL, NULL, NULL} |
static struct exprOpTableElement | exprOpTable [] |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntDefault) |
static | SCIP_DECL_EXPRCURV (exprcurvDefault) |
static | SCIP_DECL_EXPREVAL (exprevalVar) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntVar) |
static | SCIP_DECL_EXPRCURV (exprcurvVar) |
static | SCIP_DECL_EXPREVAL (exprevalConst) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntConst) |
static | SCIP_DECL_EXPRCURV (exprcurvConst) |
static | SCIP_DECL_EXPREVAL (exprevalParam) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntParam) |
static | SCIP_DECL_EXPRCURV (exprcurvParam) |
static | SCIP_DECL_EXPREVAL (exprevalPlus) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntPlus) |
static | SCIP_DECL_EXPRCURV (exprcurvPlus) |
static | SCIP_DECL_EXPREVAL (exprevalMinus) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntMinus) |
static | SCIP_DECL_EXPRCURV (exprcurvMinus) |
static | SCIP_DECL_EXPREVAL (exprevalMult) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntMult) |
static | SCIP_DECL_EXPRCURV (exprcurvMult) |
static | SCIP_DECL_EXPREVAL (exprevalDiv) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntDiv) |
static | SCIP_DECL_EXPRCURV (exprcurvDiv) |
static | SCIP_DECL_EXPREVAL (exprevalSquare) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntSquare) |
static | SCIP_DECL_EXPRCURV (exprcurvSquare) |
static | SCIP_DECL_EXPREVAL (exprevalSquareRoot) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntSquareRoot) |
static | SCIP_DECL_EXPRCURV (exprcurvSquareRoot) |
static | SCIP_DECL_EXPREVAL (exprevalRealPower) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntRealPower) |
static | SCIP_DECL_EXPRCURV (exprcurvRealPower) |
static | SCIP_DECL_EXPREVAL (exprevalIntPower) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntIntPower) |
static | SCIP_DECL_EXPRCURV (exprcurvIntPower) |
static | SCIP_DECL_EXPREVAL (exprevalSignPower) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntSignPower) |
static | SCIP_DECL_EXPRCURV (exprcurvSignPower) |
static | SCIP_DECL_EXPREVAL (exprevalExp) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntExp) |
static | SCIP_DECL_EXPRCURV (exprcurvExp) |
static | SCIP_DECL_EXPREVAL (exprevalLog) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntLog) |
static | SCIP_DECL_EXPRCURV (exprcurvLog) |
static | SCIP_DECL_EXPREVAL (exprevalSin) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntSin) |
static | SCIP_DECL_EXPREVAL (exprevalCos) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntCos) |
static | SCIP_DECL_EXPREVAL (exprevalTan) |
static | SCIP_DECL_EXPREVAL (exprevalMin) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntMin) |
static | SCIP_DECL_EXPRCURV (exprcurvMin) |
static | SCIP_DECL_EXPREVAL (exprevalMax) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntMax) |
static | SCIP_DECL_EXPRCURV (exprcurvMax) |
static | SCIP_DECL_EXPREVAL (exprevalAbs) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntAbs) |
static | SCIP_DECL_EXPRCURV (exprcurvAbs) |
static | SCIP_DECL_EXPREVAL (exprevalSign) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntSign) |
static | SCIP_DECL_EXPRCURV (exprcurvSign) |
static | SCIP_DECL_EXPREVAL (exprevalSum) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntSum) |
static | SCIP_DECL_EXPRCURV (exprcurvSum) |
static | SCIP_DECL_EXPREVAL (exprevalProduct) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntProduct) |
static | SCIP_DECL_EXPRCURV (exprcurvProduct) |
static | SCIP_DECL_EXPREVAL (exprevalLinear) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntLinear) |
static | SCIP_DECL_EXPRCURV (exprcurvLinear) |
static | SCIP_DECL_EXPRCOPYDATA (exprCopyDataLinear) |
static | SCIP_DECL_EXPRFREEDATA (exprFreeDataLinear) |
static | SCIP_DECL_EXPREVAL (exprevalQuadratic) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntQuadratic) |
static | SCIP_DECL_EXPRCURV (exprcurvQuadratic) |
static | SCIP_DECL_EXPRCOPYDATA (exprCopyDataQuadratic) |
static | SCIP_DECL_EXPRFREEDATA (exprFreeDataQuadratic) |
static | SCIP_DECL_EXPREVAL (exprevalPolynomial) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntPolynomial) |
static | SCIP_DECL_EXPRCURV (exprcurvPolynomial) |
static | SCIP_DECL_EXPRCOPYDATA (exprCopyDataPolynomial) |
static | SCIP_DECL_EXPRFREEDATA (exprFreeDataPolynomial) |
static | SCIP_DECL_EXPREVAL (exprevalUser) |
static | SCIP_DECL_EXPRINTEVAL (exprevalIntUser) |
static | SCIP_DECL_EXPRCURV (exprcurvUser) |
static | SCIP_DECL_EXPRCOPYDATA (exprCopyDataUser) |
static | SCIP_DECL_EXPRFREEDATA (exprFreeDataUser) |
Quadratic element methods | |
#define | QUADELEMS_ISBETTER(a, b) ( ((a).idx1 < (b).idx1) || ((a).idx1 == (b).idx1 && (a).idx2 < (b).idx2) ) |
#define | QUADELEMS_SWAP(x, y) |
static void | quadelemsQuickSort (SCIP_QUADELEM *elems, int start, int end) |
void | SCIPquadelemSort (SCIP_QUADELEM *quadelems, int nquadelems) |
SCIP_Bool | SCIPquadelemSortedFind (SCIP_QUADELEM *quadelems, int idx1, int idx2, int nquadelems, int *pos) |
void | SCIPquadelemSqueeze (SCIP_QUADELEM *quadelems, int nquadelems, int *nquadelemsnew) |
Macro Definition Documentation
◆ SCIP_EXPRESSION_MAXCHILDEST
#define SCIP_EXPRESSION_MAXCHILDEST 16 |
estimate on maximal number of children
Definition at line 41 of file expr.c.
Referenced by exprgraphNodeEval(), exprgraphNodeUpdateBounds(), SCIPexprCheckCurvature(), SCIPexprEval(), SCIPexprEvalInt(), SCIPexprgraphGetNodePolynomialMonomialCurvature(), and SCIPexprgraphUpdateNodeBoundsCurvature().
◆ SIGN
sign of a value (-1 or +1)
0.0 has sign +1
Definition at line 47 of file expr.c.
Referenced by SCIP_DECL_EXPREVAL().
◆ ensureBlockMemoryArraySize
#define ensureBlockMemoryArraySize | ( | blkmem, | |
array1, | |||
cursize, | |||
minsize | |||
) |
ensures that a block memory array has at least a given size
if cursize is 0, then *array1 can be NULL
Definition at line 53 of file expr.c.
Referenced by exprgraphMoveNode(), exprgraphNodeAddParent(), exprgraphNodeSimplify(), polynomialdataEnsureMonomialsSize(), SCIPexprgraphAddConst(), SCIPexprgraphAddNode(), SCIPexprgraphAddVars(), SCIPexprgraphReplaceVarByLinearSum(), and SCIPexprgraphSimplify().
◆ ensureBlockMemoryArraySize3
#define ensureBlockMemoryArraySize3 | ( | blkmem, | |
array1, | |||
array2, | |||
array3, | |||
cursize, | |||
minsize | |||
) |
ensures that three block memory arrays have at least a given size
if cursize is 0, then arrays can be NULL
Definition at line 88 of file expr.c.
Referenced by exprgraphEnsureDepth(), SCIPexprgraphAddVars(), SCIPexprgraphCreate(), and SCIPexprgraphReplaceVarByLinearSum().
◆ exprcurvSin
◆ exprcurvCos
◆ exprevalIntTan
◆ exprcurvTan
◆ EXPROPEMPTY
◆ QUADELEMS_ISBETTER
#define QUADELEMS_ISBETTER | ( | a, | |
b | |||
) | ( ((a).idx1 < (b).idx1) || ((a).idx1 == (b).idx1 && (a).idx2 < (b).idx2) ) |
comparing two quadratic elements
a is better than b if index1 of a is smaller than index1 of b or index1 of both is equal but index2 of a is smaller than index2 of b
Definition at line 9093 of file expr.c.
Referenced by quadelemsQuickSort(), and SCIPquadelemSqueeze().
◆ QUADELEMS_SWAP
swaps two quadratic elements
Definition at line 9096 of file expr.c.
Referenced by quadelemsQuickSort().
Function Documentation
◆ calcGrowSize()
|
static |
calculate memory size for dynamically allocated arrays (copied from scip/set.c)
- Parameters
-
num minimum number of entries to store
Definition at line 107 of file expr.c.
Referenced by exprsimplifyFlattenPolynomials(), and monomialdataEnsureFactorsSize().
◆ SCIP_DECL_SORTPTRCOMP() [1/3]
|
static |
expression graph nodes comparison to use in sorting methods
The nodes need to have been added to the expression graph (depth,pos >= 0). The better node is the one with the lower depth and lower position, if depth is equal.
Definition at line 127 of file expr.c.
References SCIP_ExprGraphNode::depth, NULL, and SCIP_ExprGraphNode::pos.
◆ isLbBetter()
|
static |
checks if a given new lower bound is tighter (w.r.t. given bound strengthening epsilon) than the old one (copied from scip/set.c)
- Parameters
-
minstrength minimal relative improvement required to be a better bound newlb new lower bound oldlb old lower bound oldub old upper bound
Definition at line 150 of file expr.c.
References eps, EPSGT, FALSE, MAX, REALABS, and SCIP_Real.
Referenced by exprgraphNodeUpdateBounds(), exprgraphUpdateVarNodeBounds(), SCIPexprgraphTightenNodeBounds(), and SCIPexprgraphUpdateNodeBoundsCurvature().
◆ isUbBetter()
|
static |
checks if a given new upper bound is tighter (w.r.t. given bound strengthening epsilon) than the old one (copied from scip/set.c)
- Parameters
-
minstrength minimal relative improvement required to be a better bound newub new upper bound oldlb old lower bound oldub old upper bound
Definition at line 170 of file expr.c.
References eps, EPSLT, FALSE, MAX, REALABS, and SCIP_Real.
Referenced by exprgraphNodeUpdateBounds(), exprgraphUpdateVarNodeBounds(), SCIPexprgraphTightenNodeBounds(), and SCIPexprgraphUpdateNodeBoundsCurvature().
◆ SCIPexprcurvAdd()
SCIP_EXPRCURV SCIPexprcurvAdd | ( | SCIP_EXPRCURV | curv1, |
SCIP_EXPRCURV | curv2 | ||
) |
gives curvature for a sum of two functions with given curvature
- Parameters
-
curv1 curvature of first summand curv2 curvature of second summand
Definition at line 206 of file expr.c.
Referenced by checkCurvature(), and SCIP_DECL_EXPRCURV().
◆ SCIPexprcurvNegate()
SCIP_EXPRCURV SCIPexprcurvNegate | ( | SCIP_EXPRCURV | curvature | ) |
gives the curvature for the negation of a function with given curvature
- Parameters
-
curvature curvature of function
Definition at line 215 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().
◆ SCIPexprcurvMultiply()
SCIP_EXPRCURV SCIPexprcurvMultiply | ( | SCIP_Real | factor, |
SCIP_EXPRCURV | curvature | ||
) |
gives curvature for a functions with given curvature multiplied by a constant factor
- Parameters
-
factor constant factor curvature curvature of other factor
Definition at line 241 of file expr.c.
References SCIP_EXPRCURV_LINEAR, and SCIPexprcurvNegate().
Referenced by checkCurvature(), reformulate(), SCIP_DECL_EXPRCURV(), SCIPexprcurvMonomial(), and SCIPexprgraphGetNodePolynomialMonomialCurvature().
◆ SCIPexprcurvPower()
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
- Parameters
-
basebounds bounds on base function basecurv curvature of base function exponent exponent
Definition at line 254 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().
◆ SCIPexprcurvMonomial()
SCIP_EXPRCURV SCIPexprcurvMonomial | ( | int | nfactors, |
SCIP_Real * | exponents, | ||
int * | factoridxs, | ||
SCIP_EXPRCURV * | factorcurv, | ||
SCIP_INTERVAL * | factorbounds | ||
) |
gives curvature for a monomial with given curvatures and bounds for each factor
See Maranas and Floudas, Finding All Solutions of Nonlinearly Constrained Systems of Equations, JOGO 7, 1995 for the categorization in the case that all factors are linear.
- Parameters
-
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 362 of file expr.c.
References EPSGE, EPSISINT, EPSLE, FALSE, NULL, 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().
◆ SCIPexprcurvGetName()
const char* SCIPexprcurvGetName | ( | SCIP_EXPRCURV | curv | ) |
gives name as string for a curvature
- Parameters
-
curv curvature
Definition at line 475 of file expr.c.
References curvnames, and SCIP_EXPRCURV_LINEAR.
Referenced by checkCurvature(), reformEnsureChildrenMinCurvature(), reformulate(), and registerBranchingVariables().
◆ quadraticdataCreate()
|
static |
creates SCIP_EXPRDATA_QUADRATIC data structure from given quadratic elements
- Parameters
-
blkmem block memory data structure quadraticdata buffer to store pointer to quadratic data constant constant nchildren number of children lincoefs linear coefficients of children, or NULL if all 0.0 nquadelems number of quadratic elements quadelems quadratic elements
Definition at line 491 of file expr.c.
References BMSallocBlockMemory, BMSduplicateBlockMemoryArray, NULL, SCIP_ALLOC, and SCIP_OKAY.
Referenced by SCIP_DECL_EXPRCOPYDATA(), SCIPexprCreateQuadratic(), and SCIPexprgraphCreateNodeQuadratic().
◆ quadraticdataSort()
|
static |
sorts quadratic elements in a SCIP_EXPRDATA_QUADRATIC data structure
- Parameters
-
quadraticdata quadratic data
Definition at line 529 of file expr.c.
References SCIP_QuadElement::idx1, SCIP_QuadElement::idx2, SCIP_ExprData_Quadratic::nquadelems, NULL, SCIP_ExprData_Quadratic::quadelems, SCIPquadelemSort(), SCIP_ExprData_Quadratic::sorted, and TRUE.
Referenced by SCIP_DECL_EXPRINTEVAL(), SCIPexprGetMaxDegree(), and SCIPexprSortQuadElems().
◆ SCIP_DECL_SORTPTRCOMP() [2/3]
|
static |
compares two monomials
gives 0 if monomials are equal
Definition at line 565 of file expr.c.
References SCIP_ExprData_Monomial::childidxs, SCIP_ExprData_Monomial::exponents, SCIP_ExprData_Monomial::nfactors, NULL, and SCIPexprSortMonomialFactors().
◆ monomialdataEnsureFactorsSize()
|
static |
ensures that the factors arrays of a monomial have at least a given size
- Parameters
-
blkmem block memory data structure monomialdata monomial data minsize minimal size of factors arrays
Definition at line 604 of file expr.c.
References BMSreallocBlockMemoryArray, calcGrowSize(), SCIP_ExprData_Monomial::childidxs, SCIP_ExprData_Monomial::exponents, SCIP_ExprData_Monomial::factorssize, NULL, SCIP_ALLOC, and SCIP_OKAY.
Referenced by exprConvertToPolynomial(), polynomialdataExpandMonomialFactor(), and SCIPexprAddMonomialFactors().
◆ polynomialdataCreate()
|
static |
creates SCIP_EXPRDATA_POLYNOMIAL data structure from given monomials
- Parameters
-
blkmem block memory data structure polynomialdata buffer to store pointer to polynomial data nmonomials number of monomials monomials monomials constant constant part copymonomials whether to copy monomials, or copy only given pointers, in which case polynomialdata assumes ownership of monomial structure
Definition at line 629 of file expr.c.
References BMSallocBlockMemory, BMSallocBlockMemoryArray, BMSduplicateBlockMemoryArray, SCIP_ExprData_Monomial::childidxs, SCIP_ExprData_Monomial::coef, SCIP_ExprData_Monomial::exponents, SCIP_ExprData_Monomial::nfactors, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, and SCIPexprCreateMonomial().
Referenced by exprConvertToPolynomial(), exprsimplifyFlattenPolynomials(), SCIPexprCreatePolynomial(), and SCIPexprgraphCreateNodePolynomial().
◆ polynomialdataCopy()
|
static |
creates a copy of a SCIP_EXPRDATA_POLYNOMIAL data structure
- Parameters
-
blkmem block memory data structure polynomialdata buffer to store pointer to polynomial data sourcepolynomialdata polynomial data to copy
Definition at line 676 of file expr.c.
References BMSallocBlockMemoryArray, BMSduplicateBlockMemory, SCIP_ExprData_Monomial::childidxs, SCIP_ExprData_Monomial::coef, SCIP_ExprData_Monomial::exponents, SCIP_ExprData_Polynomial::monomials, SCIP_ExprData_Monomial::nfactors, SCIP_ExprData_Polynomial::nmonomials, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIPexprCreateMonomial(), and SCIP_ExprData_Monomial::sorted.
Referenced by polynomialdataExpandMonomialFactor(), polynomialdataPower(), and SCIP_DECL_EXPRCOPYDATA().
◆ polynomialdataFree()
|
static |
frees a SCIP_EXPRDATA_POLYNOMIAL data structure
- Parameters
-
blkmem block memory data structure polynomialdata pointer to polynomial data to free
Definition at line 713 of file expr.c.
References BMSfreeBlockMemory, BMSfreeBlockMemoryArray, NULL, and SCIPexprFreeMonomial().
Referenced by exprgraphNodeSimplify(), exprsimplifyFlattenPolynomials(), exprUnconvertPolynomial(), polynomialdataExpandMonomialFactor(), polynomialdataPower(), and SCIP_DECL_EXPRFREEDATA().
◆ polynomialdataEnsureMonomialsSize()
|
static |
ensures that the monomials array of a polynomial has at least a given size
- Parameters
-
blkmem block memory data structure polynomialdata polynomial data minsize minimal size of monomials array
Definition at line 742 of file expr.c.
References ensureBlockMemoryArraySize, SCIP_ExprData_Polynomial::monomials, SCIP_ExprData_Polynomial::monomialssize, NULL, and SCIP_OKAY.
Referenced by exprConvertToPolynomial(), polynomialdataAddMonomials(), polynomialdataMultiplyByMonomial(), and polynomialdataMultiplyByPolynomial().
◆ polynomialdataAddMonomials()
|
static |
adds an array of monomials to a polynomial
- Parameters
-
blkmem block memory of expression polynomialdata polynomial data nmonomials number of monomials to add monomials the monomials to add copymonomials whether to copy monomials or to assume ownership
Definition at line 759 of file expr.c.
References BMScopyMemoryArray, SCIP_ExprData_Monomial::childidxs, SCIP_ExprData_Monomial::coef, SCIP_ExprData_Monomial::exponents, SCIP_ExprData_Polynomial::monomials, SCIP_ExprData_Polynomial::monomialssize, SCIP_ExprData_Monomial::nfactors, SCIP_ExprData_Polynomial::nmonomials, NULL, polynomialdataEnsureMonomialsSize(), SCIP_CALL, SCIP_OKAY, SCIPexprCreateMonomial(), and SCIP_ExprData_Polynomial::sorted.
Referenced by exprConvertToPolynomial(), polynomialdataExpandMonomialFactor(), polynomialdataMultiplyByPolynomial(), SCIPexprAddMonomials(), and SCIPexprgraphNodePolynomialAddMonomials().
◆ polynomialdataSortMonomials()
|
static |
ensures that monomials of a polynomial are sorted
- Parameters
-
polynomialdata polynomial expression
Definition at line 801 of file expr.c.
References SCIP_ExprData_Polynomial::monomials, SCIP_ExprData_Polynomial::nmonomials, NULL, SCIPsortPtr(), SCIP_ExprData_Polynomial::sorted, SCIP_ExprData_Monomial::sorted, and TRUE.
Referenced by exprgraphFindParentByOperator(), polynomialdataMergeMonomials(), and SCIPexprSortMonomials().
◆ polynomialdataMergeMonomials()
|
static |
merges monomials that differ only in coefficient into a single monomial
Eliminates monomials with coefficient between -eps and eps.
- Parameters
-
blkmem block memory polynomialdata polynomial data eps threshold under which numbers are treat as zero mergefactors whether to merge factors in monomials too
Definition at line 834 of file expr.c.
References SCIP_ExprData_Monomial::coef, SCIP_ExprData_Polynomial::constant, EPSZ, FALSE, SCIP_ExprData_Polynomial::monomials, SCIP_ExprData_Monomial::nfactors, SCIP_ExprData_Polynomial::nmonomials, NULL, polynomialdataSortMonomials(), SCIPexprFreeMonomial(), SCIPexprMergeMonomialFactors(), and SCIP_ExprData_Polynomial::sorted.
Referenced by exprgraphNodeSimplify(), exprsimplifySeparateLinearFromPolynomial(), exprUnconvertPolynomial(), polynomialdataPower(), SCIPexprgraphNodeSplitOffLinear(), and SCIPexprMergeMonomials().
◆ polynomialdataMultiplyByConstant()
|
static |
multiplies each summand of a polynomial by a given constant
- Parameters
-
blkmem block memory polynomialdata polynomial data factor constant factor
Definition at line 926 of file expr.c.
References SCIP_ExprData_Monomial::coef, SCIP_ExprData_Polynomial::constant, SCIP_ExprData_Polynomial::monomials, SCIP_ExprData_Polynomial::nmonomials, NULL, SCIPexprChgMonomialCoef(), and SCIPexprFreeMonomial().
Referenced by polynomialdataMultiplyByMonomial(), polynomialdataMultiplyByPolynomial(), and SCIPexprMultiplyPolynomialByConstant().
◆ polynomialdataMultiplyByMonomial()
|
static |
multiplies each summand of a polynomial by a given monomial
- Parameters
-
blkmem block memory polynomialdata polynomial data factor monomial factor childmap map children in factor to children in expr, or NULL for 1:1
Definition at line 956 of file expr.c.
References SCIP_ExprData_Monomial::coef, SCIP_ExprData_Polynomial::constant, FALSE, SCIP_ExprData_Polynomial::monomials, SCIP_ExprData_Monomial::nfactors, SCIP_ExprData_Polynomial::nmonomials, NULL, polynomialdataEnsureMonomialsSize(), polynomialdataMultiplyByConstant(), SCIP_CALL, SCIP_OKAY, SCIPexprCreateMonomial(), SCIPexprMultiplyMonomialByMonomial(), and SCIP_ExprData_Polynomial::sorted.
Referenced by polynomialdataExpandMonomialFactor(), polynomialdataMultiplyByPolynomial(), and SCIPexprMultiplyPolynomialByMonomial().
◆ polynomialdataMultiplyByPolynomial()
|
static |
multiplies a polynomial by a polynomial
Factors need to be different.
- Parameters
-
blkmem block memory polynomialdata polynomial data factordata polynomial factor data childmap map children in factor to children in polynomialdata, or NULL for 1:1
Definition at line 1000 of file expr.c.
References SCIP_ExprData_Monomial::coef, SCIP_ExprData_Polynomial::constant, FALSE, SCIP_ExprData_Polynomial::monomials, SCIP_ExprData_Polynomial::nmonomials, NULL, polynomialdataAddMonomials(), polynomialdataEnsureMonomialsSize(), polynomialdataMultiplyByConstant(), polynomialdataMultiplyByMonomial(), SCIP_CALL, SCIP_OKAY, SCIPexprChgMonomialCoef(), SCIPexprCreateMonomial(), SCIPexprMultiplyMonomialByMonomial(), SCIP_ExprData_Polynomial::sorted, and TRUE.
Referenced by polynomialdataPower(), and SCIPexprMultiplyPolynomialByPolynomial().
◆ polynomialdataPower()
|
static |
takes a power of a polynomial
Exponent needs to be an integer, polynomial needs to be a monomial, if exponent is negative.
- Parameters
-
blkmem block memory polynomialdata polynomial data exponent exponent of power operation
Definition at line 1090 of file expr.c.
References SCIP_ExprData_Polynomial::constant, SCIP_ExprData_Polynomial::monomials, SCIP_ExprData_Polynomial::nmonomials, NULL, polynomialdataCopy(), polynomialdataFree(), polynomialdataMergeMonomials(), polynomialdataMultiplyByPolynomial(), pow(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPexprFreeMonomial(), SCIPexprMonomialPower(), and TRUE.
Referenced by polynomialdataExpandMonomialFactor(), and SCIPexprPolynomialPower().
◆ polynomialdataApplyChildmap()
|
static |
applies a mapping of child indices to the indices used in polynomial monomials
- Parameters
-
polynomialdata polynomial data childmap mapping of child indices
Definition at line 1160 of file expr.c.
References SCIP_ExprData_Monomial::childidxs, FALSE, SCIP_ExprData_Polynomial::monomials, SCIP_ExprData_Monomial::nfactors, SCIP_ExprData_Polynomial::nmonomials, NULL, SCIP_ExprData_Polynomial::sorted, and SCIP_ExprData_Monomial::sorted.
Referenced by exprgraphFindParentByOperator(), exprgraphNodeRemovePolynomialDuplicateChildren(), exprgraphNodeRemovePolynomialNullChildren(), exprsimplifyRemoveDuplicatePolynomialChildren(), exprsimplifyRemovePolynomialNullChildren(), and polynomialdataExpandMonomialFactor().
◆ polynomialdataExpandMonomialFactor()
|
static |
replaces a factor in a monomial by a polynomial and expands the result
- Parameters
-
blkmem block memory data structure messagehdlr message handler polynomialdata polynomial data where to expand a monomial monomialpos position of monomial which factor to expand factorpos position of factor in monomial to expand factorpolynomial polynomial that should replace factor childmap map of child indices in factorpolynomial to children of polynomial maxexpansionexponent maximal exponent for which polynomials (with > 1 summands) are expanded success buffer to store whether expansion has been done
Definition at line 1189 of file expr.c.
References SCIP_ExprData_Monomial::childidxs, SCIP_ExprData_Monomial::coef, SCIP_ExprData_Polynomial::constant, EPSFLOOR, EPSISINT, SCIP_ExprData_Monomial::exponents, FALSE, monomialdataEnsureFactorsSize(), SCIP_ExprData_Polynomial::monomials, SCIP_ExprData_Monomial::nfactors, SCIP_ExprData_Polynomial::nmonomials, NULL, polynomialdataAddMonomials(), polynomialdataApplyChildmap(), polynomialdataCopy(), polynomialdataFree(), polynomialdataMultiplyByMonomial(), polynomialdataPower(), pow(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPdebugMessage, SCIPexprAddMonomialFactors(), SCIPexprFreeMonomial(), SCIPmessagePrintWarning(), SCIP_ExprData_Polynomial::sorted, SCIP_ExprData_Monomial::sorted, and TRUE.
Referenced by exprgraphNodeSimplify(), and exprsimplifyFlattenPolynomials().
◆ SCIP_DECL_EXPRINTEVAL() [1/27]
|
static |
a default implementation of expression interval evaluation that always gives a correct result
Definition at line 1411 of file expr.c.
References infinity, SCIP_OKAY, and SCIPintervalSetEntire().
Referenced by SCIP_DECL_EXPRFREEDATA().
◆ SCIP_DECL_EXPRCURV() [1/25]
|
static |
a default implementation of expression curvature check that always gives a correct result
Definition at line 1420 of file expr.c.
References SCIP_EXPRCURV_UNKNOWN, and SCIP_OKAY.
Referenced by SCIP_DECL_EXPRFREEDATA().
◆ SCIP_DECL_EXPREVAL() [1/27]
|
static |
point evaluation for EXPR_VAR
Definition at line 1429 of file expr.c.
References NULL, and SCIP_OKAY.
Referenced by SCIP_DECL_EXPRFREEDATA().
◆ SCIP_DECL_EXPRINTEVAL() [2/27]
|
static |
◆ SCIP_DECL_EXPRCURV() [2/25]
|
static |
curvature for EXPR_VAR
Definition at line 1453 of file expr.c.
References NULL, SCIP_EXPRCURV_LINEAR, and SCIP_OKAY.
◆ SCIP_DECL_EXPREVAL() [2/27]
|
static |
◆ SCIP_DECL_EXPRINTEVAL() [3/27]
|
static |
interval evaluation for EXPR_CONST
Definition at line 1475 of file expr.c.
References NULL, SCIP_OKAY, and SCIPintervalSet().
◆ SCIP_DECL_EXPRCURV() [3/25]
|
static |
curvature for EXPR_CONST
Definition at line 1486 of file expr.c.
References NULL, SCIP_EXPRCURV_LINEAR, and SCIP_OKAY.
◆ SCIP_DECL_EXPREVAL() [3/27]
|
static |
◆ SCIP_DECL_EXPRINTEVAL() [4/27]
|
static |
interval evaluation for EXPR_PARAM
Definition at line 1509 of file expr.c.
References NULL, SCIP_OKAY, and SCIPintervalSet().
◆ SCIP_DECL_EXPRCURV() [4/25]
|
static |
curvature for EXPR_PARAM
Definition at line 1521 of file expr.c.
References NULL, SCIP_EXPRCURV_LINEAR, and SCIP_OKAY.
◆ SCIP_DECL_EXPREVAL() [4/27]
|
static |
◆ SCIP_DECL_EXPRINTEVAL() [5/27]
|
static |
◆ SCIP_DECL_EXPRCURV() [5/25]
|
static |
curvature for EXPR_PLUS
Definition at line 1556 of file expr.c.
References NULL, SCIP_OKAY, and SCIPexprcurvAdd().
◆ SCIP_DECL_EXPREVAL() [5/27]
|
static |
◆ SCIP_DECL_EXPRINTEVAL() [6/27]
|
static |
◆ SCIP_DECL_EXPRCURV() [6/25]
|
static |
curvature for EXPR_MINUS
Definition at line 1592 of file expr.c.
References NULL, SCIP_OKAY, SCIPexprcurvAdd(), and SCIPexprcurvNegate().
◆ SCIP_DECL_EXPREVAL() [6/27]
|
static |
◆ SCIP_DECL_EXPRINTEVAL() [7/27]
|
static |
◆ SCIP_DECL_EXPRCURV() [7/25]
|
static |
curvature for EXPR_MUL
Definition at line 1628 of file expr.c.
References NULL, SCIP_EXPRCURV_UNKNOWN, SCIP_OKAY, and SCIPexprcurvMultiply().
◆ SCIP_DECL_EXPREVAL() [7/27]
|
static |
◆ SCIP_DECL_EXPRINTEVAL() [8/27]
|
static |
◆ SCIP_DECL_EXPRCURV() [8/25]
|
static |
curvature for EXPR_DIV
Definition at line 1680 of file expr.c.
References NULL, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_EXPRCURV_UNKNOWN, SCIP_OKAY, and SCIPexprcurvMultiply().
◆ SCIP_DECL_EXPREVAL() [8/27]
|
static |
◆ SCIP_DECL_EXPRINTEVAL() [9/27]
|
static |
◆ SCIP_DECL_EXPRCURV() [9/25]
|
static |
curvature for EXPR_SQUARE
Definition at line 1748 of file expr.c.
References NULL, SCIP_OKAY, and SCIPexprcurvPower().
◆ SCIP_DECL_EXPREVAL() [9/27]
|
static |
◆ SCIP_DECL_EXPRINTEVAL() [10/27]
|
static |
◆ SCIP_DECL_EXPRCURV() [10/25]
|
static |
curvature for EXPR_SQRT
Definition at line 1785 of file expr.c.
References NULL, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_UNKNOWN, and SCIP_OKAY.
◆ SCIP_DECL_EXPREVAL() [10/27]
|
static |
◆ SCIP_DECL_EXPRINTEVAL() [11/27]
|
static |
◆ SCIP_DECL_EXPRCURV() [11/25]
|
static |
curvature for EXPR_REALPOWER
Definition at line 1828 of file expr.c.
References NULL, SCIP_OKAY, and SCIPexprcurvPower().
◆ SCIP_DECL_EXPREVAL() [11/27]
|
static |
◆ SCIP_DECL_EXPRINTEVAL() [12/27]
|
static |
◆ SCIP_DECL_EXPRCURV() [12/25]
|
static |
◆ SCIP_DECL_EXPREVAL() [12/27]
|
static |
◆ SCIP_DECL_EXPRINTEVAL() [13/27]
|
static |
◆ SCIP_DECL_EXPRCURV() [13/25]
|
static |
curvature for EXPR_SIGNPOWER
Definition at line 1928 of file expr.c.
References NULL, SCIP_EXPRCURV_LINEAR, SCIP_OKAY, SCIPexprcurvNegate(), SCIPexprcurvPower(), and SCIPintervalSetBounds().
◆ SCIP_DECL_EXPREVAL() [13/27]
|
static |
◆ SCIP_DECL_EXPRINTEVAL() [14/27]
|
static |
◆ SCIP_DECL_EXPRCURV() [14/25]
|
static |
curvature for EXPR_EXP
Definition at line 1995 of file expr.c.
References NULL, SCIP_EXPRCURV_CONVEX, SCIP_EXPRCURV_UNKNOWN, and SCIP_OKAY.
◆ SCIP_DECL_EXPREVAL() [14/27]
|
static |
◆ SCIP_DECL_EXPRINTEVAL() [15/27]
|
static |
◆ SCIP_DECL_EXPRCURV() [15/25]
|
static |
curvature for EXPR_LOG
Definition at line 2037 of file expr.c.
References NULL, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_UNKNOWN, and SCIP_OKAY.
◆ SCIP_DECL_EXPREVAL() [15/27]
|
static |
◆ SCIP_DECL_EXPRINTEVAL() [16/27]
|
static |
◆ SCIP_DECL_EXPREVAL() [16/27]
|
static |
◆ SCIP_DECL_EXPRINTEVAL() [17/27]
|
static |
◆ SCIP_DECL_EXPREVAL() [17/27]
|
static |
◆ SCIP_DECL_EXPREVAL() [18/27]
|
static |
◆ SCIP_DECL_EXPRINTEVAL() [18/27]
|
static |
◆ SCIP_DECL_EXPRCURV() [16/25]
|
static |
curvature for EXPR_MIN
Definition at line 2190 of file expr.c.
References NULL, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_UNKNOWN, and SCIP_OKAY.
◆ SCIP_DECL_EXPREVAL() [19/27]
|
static |
◆ SCIP_DECL_EXPRINTEVAL() [19/27]
|
static |
◆ SCIP_DECL_EXPRCURV() [17/25]
|
static |
curvature for EXPR_MAX
Definition at line 2233 of file expr.c.
References NULL, SCIP_EXPRCURV_CONVEX, SCIP_EXPRCURV_UNKNOWN, and SCIP_OKAY.
◆ SCIP_DECL_EXPREVAL() [20/27]
|
static |
◆ SCIP_DECL_EXPRINTEVAL() [20/27]
|
static |
◆ SCIP_DECL_EXPRCURV() [18/25]
|
static |
curvature for EXPR_ABS
Definition at line 2275 of file expr.c.
References NULL, SCIP_EXPRCURV_CONVEX, SCIP_EXPRCURV_LINEAR, SCIP_EXPRCURV_UNKNOWN, SCIP_OKAY, and SCIPexprcurvMultiply().
◆ SCIP_DECL_EXPREVAL() [21/27]
|
static |
◆ SCIP_DECL_EXPRINTEVAL() [21/27]
|
static |
◆ SCIP_DECL_EXPRCURV() [19/25]
|
static |
curvature for EXPR_SIGN
Definition at line 2324 of file expr.c.
References NULL, SCIP_EXPRCURV_LINEAR, SCIP_EXPRCURV_UNKNOWN, and SCIP_OKAY.
◆ SCIP_DECL_EXPREVAL() [22/27]
|
static |
◆ SCIP_DECL_EXPRINTEVAL() [22/27]
|
static |
interval evaluation for EXPR_SUM
Definition at line 2356 of file expr.c.
References infinity, NULL, SCIP_OKAY, SCIPintervalAdd(), and SCIPintervalSet().
◆ SCIP_DECL_EXPRCURV() [20/25]
|
static |
curvature for EXPR_SUM
Definition at line 2373 of file expr.c.
References NULL, SCIP_EXPRCURV_LINEAR, SCIP_OKAY, and SCIPexprcurvAdd().
◆ SCIP_DECL_EXPREVAL() [23/27]
|
static |
◆ SCIP_DECL_EXPRINTEVAL() [23/27]
|
static |
interval evaluation for EXPR_PRODUCT
Definition at line 2406 of file expr.c.
References infinity, NULL, SCIP_OKAY, SCIPintervalMul(), and SCIPintervalSet().
◆ SCIP_DECL_EXPRCURV() [21/25]
|
static |
curvature for EXPR_PRODUCT
Definition at line 2423 of file expr.c.
References FALSE, NULL, SCIP_Bool, SCIP_EXPRCURV_LINEAR, SCIP_EXPRCURV_UNKNOWN, SCIP_OKAY, SCIP_Real, SCIPexprcurvMultiply(), and TRUE.
◆ SCIP_DECL_EXPREVAL() [24/27]
|
static |
◆ SCIP_DECL_EXPRINTEVAL() [24/27]
|
static |
interval evaluation for EXPR_LINEAR
Definition at line 2489 of file expr.c.
References infinity, NULL, SCIP_OKAY, SCIP_Real, SCIPintervalAddScalar(), and SCIPintervalScalprodScalars().
◆ SCIP_DECL_EXPRCURV() [22/25]
|
static |
curvature for EXPR_LINEAR
Definition at line 2503 of file expr.c.
References NULL, SCIP_EXPRCURV_LINEAR, SCIP_OKAY, SCIP_Real, SCIPexprcurvAdd(), and SCIPexprcurvMultiply().
◆ SCIP_DECL_EXPRCOPYDATA() [1/4]
|
static |
expression data copy for EXPR_LINEAR
Definition at line 2524 of file expr.c.
References BMSduplicateBlockMemoryArray, NULL, SCIP_ALLOC, SCIP_OKAY, and SCIP_Real.
Referenced by SCIP_DECL_EXPRFREEDATA().
◆ SCIP_DECL_EXPRFREEDATA() [1/4]
|
static |
expression data free for EXPR_LINEAR
Definition at line 2542 of file expr.c.
References BMSfreeBlockMemoryArray, NULL, and SCIP_Real.
Referenced by SCIP_DECL_EXPRFREEDATA().
◆ SCIP_DECL_EXPREVAL() [25/27]
|
static |
point evaluation for EXPR_QUADRATIC
Definition at line 2557 of file expr.c.
References SCIP_QuadElement::coef, SCIP_ExprData_Quadratic::constant, SCIP_QuadElement::idx1, SCIP_QuadElement::idx2, SCIP_ExprData_Quadratic::lincoefs, SCIP_ExprData_Quadratic::nquadelems, NULL, SCIP_ExprData_Quadratic::quadelems, SCIP_OKAY, and SCIP_Real.
◆ SCIP_DECL_EXPRINTEVAL() [25/27]
|
static |
interval evaluation for EXPR_QUADRATIC
Definition at line 2594 of file expr.c.
References SCIP_QuadElement::coef, SCIP_ExprData_Quadratic::constant, infinity, SCIP_ExprData_Quadratic::lincoefs, SCIP_ExprData_Quadratic::nquadelems, NULL, SCIP_ExprData_Quadratic::quadelems, quadraticdataSort(), SCIP_OKAY, SCIP_Real, SCIPdebugMessage, SCIPintervalAdd(), SCIPintervalAddScalar(), SCIPintervalMulScalar(), SCIPintervalQuad(), SCIPintervalQuadBivar(), and SCIPintervalSet().
◆ SCIP_DECL_EXPRCURV() [23/25]
|
static |
curvature for EXPR_QUADRATIC
Definition at line 2721 of file expr.c.
References SCIP_ExprData_Quadratic::lincoefs, SCIP_ExprData_Quadratic::nquadelems, NULL, SCIP_ExprData_Quadratic::quadelems, SCIP_EXPRCURV_LINEAR, SCIP_EXPRCURV_UNKNOWN, SCIP_OKAY, SCIP_Real, SCIPexprcurvAdd(), SCIPexprcurvMultiply(), and SCIPexprcurvPower().
◆ SCIP_DECL_EXPRCOPYDATA() [2/4]
|
static |
expression data copy for EXPR_QUADRATIC
Definition at line 2789 of file expr.c.
References SCIP_ExprData_Quadratic::constant, SCIP_ExprData_Quadratic::lincoefs, SCIP_ExprData_Quadratic::nquadelems, NULL, SCIP_ExprData_Quadratic::quadelems, quadraticdataCreate(), SCIP_CALL, and SCIP_OKAY.
◆ SCIP_DECL_EXPRFREEDATA() [2/4]
|
static |
expression data free for EXPR_QUADRATIC
Definition at line 2807 of file expr.c.
References BMSfreeBlockMemory, BMSfreeBlockMemoryArray, SCIP_ExprData_Quadratic::lincoefs, SCIP_ExprData_Quadratic::nquadelems, NULL, and SCIP_ExprData_Quadratic::quadelems.
◆ SCIP_DECL_EXPREVAL() [26/27]
|
static |
point evaluation for EXPR_POLYNOMIAL
Definition at line 2833 of file expr.c.
References SCIP_ExprData_Monomial::childidxs, SCIP_ExprData_Monomial::coef, SCIP_ExprData_Polynomial::constant, SCIP_ExprData_Monomial::exponents, SCIP_ExprData_Polynomial::monomials, SCIP_ExprData_Monomial::nfactors, SCIP_ExprData_Polynomial::nmonomials, NULL, pow(), SCIP_OKAY, SCIP_Real, and sqrt().
◆ SCIP_DECL_EXPRINTEVAL() [26/27]
|
static |
interval evaluation for EXPR_POLYNOMIAL
Definition at line 2931 of file expr.c.
References SCIP_ExprData_Monomial::childidxs, SCIP_ExprData_Monomial::coef, SCIP_ExprData_Polynomial::constant, SCIP_ExprData_Monomial::exponents, infinity, SCIP_ExprData_Polynomial::monomials, SCIP_ExprData_Monomial::nfactors, SCIP_ExprData_Polynomial::nmonomials, NULL, SCIP_OKAY, SCIP_Real, SCIPintervalAdd(), SCIPintervalDiv(), SCIPintervalIsEmpty(), SCIPintervalIsEntire(), SCIPintervalMul(), SCIPintervalPowerScalar(), SCIPintervalSet(), SCIPintervalSetEmpty(), SCIPintervalSquare(), and SCIPintervalSquareRoot().
◆ SCIP_DECL_EXPRCURV() [24/25]
|
static |
curvature for EXPR_POLYNOMIAL
Definition at line 3025 of file expr.c.
References SCIP_ExprData_Monomial::childidxs, SCIP_ExprData_Monomial::coef, SCIP_ExprData_Monomial::exponents, SCIP_ExprData_Polynomial::monomials, SCIP_ExprData_Monomial::nfactors, SCIP_ExprData_Polynomial::nmonomials, NULL, SCIP_EXPRCURV_LINEAR, SCIP_EXPRCURV_UNKNOWN, SCIP_OKAY, SCIPexprcurvAdd(), SCIPexprcurvMonomial(), and SCIPexprcurvMultiply().
◆ SCIP_DECL_EXPRCOPYDATA() [3/4]
|
static |
◆ SCIP_DECL_EXPRFREEDATA() [3/4]
|
static |
expression data free for EXPR_POLYNOMIAL
Definition at line 3079 of file expr.c.
References NULL, and polynomialdataFree().
◆ SCIP_DECL_EXPREVAL() [27/27]
|
static |
◆ SCIP_DECL_EXPRINTEVAL() [27/27]
|
static |
interval evaluation for user expression
Definition at line 3106 of file expr.c.
References infinity, NULL, SCIP_CALL, SCIP_OKAY, SCIPintervalSetEntire(), and SCIP_ExprData_User::userdata.
◆ SCIP_DECL_EXPRCURV() [25/25]
|
static |
curvature check for user expression
Definition at line 3127 of file expr.c.
References infinity, NULL, SCIP_CALL, SCIP_EXPRCURV_UNKNOWN, SCIP_OKAY, and SCIP_ExprData_User::userdata.
◆ SCIP_DECL_EXPRCOPYDATA() [4/4]
|
static |
data copy for user expression
Definition at line 3148 of file expr.c.
References BMSduplicateBlockMemory, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, and SCIP_ExprData_User::userdata.
◆ SCIP_DECL_EXPRFREEDATA() [4/4]
|
static |
data free for user expression
Definition at line 3180 of file expr.c.
References BMSfreeBlockMemory, eval(), NULL, SCIP_DECL_EXPRCOPYDATA(), SCIP_DECL_EXPRCURV(), SCIP_DECL_EXPREVAL(), SCIP_DECL_EXPRFREEDATA(), SCIP_DECL_EXPRINTEVAL(), and SCIP_ExprData_User::userdata.
◆ SCIPexpropGetName()
const char* SCIPexpropGetName | ( | SCIP_EXPROP | op | ) |
gives the name of an operand as string
- Parameters
-
op expression operand
Definition at line 3265 of file expr.c.
References SCIP_EXPR_LAST.
Referenced by exprgraphNodeUpdateBounds(), exprgraphPrintNodeExpression(), getCoeffsAndConstantFromLinearExpr(), printExpr(), printRowNl(), readExpression(), reformulate(), SCIPexprgraphNodeSplitOffLinear(), SCIPexprgraphReleaseNode(), SCIPexprgraphUpdateNodeBoundsCurvature(), and SCIPwritePip().
◆ SCIPexpropGetNChildren()
int SCIPexpropGetNChildren | ( | SCIP_EXPROP | op | ) |
gives the number of children of a simple operand
- Parameters
-
op expression operand
Definition at line 3275 of file expr.c.
References SCIP_EXPR_LAST.
◆ exprCreate()
|
static |
creates an expression
Note, that the expression is allocated but for the children only the pointer is copied.
- Parameters
-
blkmem block memory data structure expr pointer to buffer for expression address op operand of expression nchildren number of children children children opdata operand data
Definition at line 3294 of file expr.c.
References BMSallocBlockMemory, SCIP_Expr::data, NULL, SCIP_ALLOC, and SCIP_OKAY.
Referenced by SCIPexprCreate(), SCIPexprCreateLinear(), SCIPexprCreatePolynomial(), SCIPexprCreateQuadratic(), and SCIPexprCreateUser().
◆ exprConvertToPolynomial()
|
static |
tries to convert a given (operator,operatordata) pair into a polynomial operator with corresponding data
Does not do this for constants. If conversion is not possible or operator is already polynomial, *op and *data are left untouched.
- Parameters
-
blkmem block memory op pointer to expression operator data pointer to expression data nchildren number of children of operator
Definition at line 3325 of file expr.c.
References SCIP_ExprData_Monomial::childidxs, SCIP_ExprData_Monomial::coef, SCIP_QuadElement::coef, SCIP_ExprData_Quadratic::constant, EPSISINT, FALSE, SCIP_QuadElement::idx1, SCIP_QuadElement::idx2, SCIP_ExprData_Quadratic::lincoefs, monomialdataEnsureFactorsSize(), SCIP_ExprData_Polynomial::monomialssize, SCIP_ExprData_Quadratic::nquadelems, NULL, polynomialdataAddMonomials(), polynomialdataCreate(), polynomialdataEnsureMonomialsSize(), SCIP_ExprData_Quadratic::quadelems, 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_OKAY, SCIP_Real, SCIPexprAddMonomialFactors(), SCIPexprCreateMonomial(), SCIPexprFreeMonomial(), and TRUE.
Referenced by exprgraphNodeSimplify(), and exprsimplifyConvertToPolynomials().
◆ exprUnconvertPolynomial()
|
static |
converts polynomial expression back into simpler expression, if possible
- Parameters
-
blkmem block memory data structure op pointer to expression operator data pointer to expression data holding polynomial data nchildren number of children of operator children children array
Definition at line 3763 of file expr.c.
References BMSallocBlockMemory, BMSallocBlockMemoryArray, BMSclearMemoryArray, SCIP_ExprData_Monomial::childidxs, SCIP_ExprData_Monomial::coef, SCIP_QuadElement::coef, SCIP_ExprData_Quadratic::constant, SCIP_ExprData_Polynomial::constant, EPSISINT, EPSROUND, SCIP_ExprData_Monomial::exponents, FALSE, SCIP_QuadElement::idx1, SCIP_QuadElement::idx2, SCIP_ExprData_Quadratic::lincoefs, MAX, SCIP_ExprData_Polynomial::monomials, SCIP_ExprData_Monomial::nfactors, SCIP_ExprData_Polynomial::nmonomials, SCIP_ExprData_Quadratic::nquadelems, NULL, polynomialdataFree(), polynomialdataMergeMonomials(), SCIP_ExprData_Quadratic::quadelems, SCIP_ALLOC, SCIP_EXPR_DEGREEINFINITY, SCIP_EXPR_DIV, SCIP_EXPR_INTPOWER, SCIP_EXPR_LINEAR, SCIP_EXPR_MINUS, SCIP_EXPR_MUL, SCIP_EXPR_PLUS, SCIP_EXPR_POLYNOMIAL, SCIP_EXPR_PRODUCT, SCIP_EXPR_QUADRATIC, SCIP_EXPR_REALPOWER, SCIP_EXPR_SQRT, SCIP_EXPR_SQUARE, SCIP_EXPR_SUM, SCIP_OKAY, SCIP_Real, SCIP_ExprData_Quadratic::sorted, and TRUE.
Referenced by exprsimplifyUnconvertPolynomials(), and SCIPexprgraphSimplify().
◆ exprsimplifyAddChildren()
|
static |
adds copies of expressions to the array of children of a sum, product, linear, quadratic, or polynomial expression
For a sum or product expression, this corresponds to add additional summands and factors, resp. For a linear expression, this corresponds to add each expression with coefficient 1.0. For a quadratic or polynomial expression, only the children array may be enlarged, the expression itself remains the same.
- Parameters
-
blkmem block memory expr quadratic or polynomial expression nexprs number of expressions to add exprs expressions to add comparechildren whether to compare expressions with already existing children (no effect for sum and product) eps which epsilon to use when comparing expressions childmap array where to store mapping of indices from exprs to children array in expr, or NULL if not of interest
Definition at line 4149 of file expr.c.
References BMSclearMemoryArray, BMSreallocBlockMemoryArray, SCIP_Expr::children, SCIP_Expr::data, FALSE, SCIP_ExprData_Quadratic::lincoefs, SCIP_Expr::nchildren, NULL, SCIP_Expr::op, SCIP_ALLOC, SCIP_Bool, SCIP_CALL, SCIP_EXPR_LINEAR, SCIP_EXPR_POLYNOMIAL, SCIP_EXPR_PRODUCT, SCIP_EXPR_QUADRATIC, SCIP_EXPR_SUM, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, SCIPexprAreEqual(), SCIPexprCopyDeep(), and TRUE.
Referenced by exprsimplifyFlattenPolynomials().
◆ exprsimplifyConvertToPolynomials()
|
static |
converts expressions into polynomials, where possible and obvious
- Parameters
-
blkmem block memory data structure expr expression to convert
Definition at line 4268 of file expr.c.
References SCIP_Expr::children, SCIP_Expr::data, exprConvertToPolynomial(), SCIP_Expr::nchildren, NULL, SCIP_Expr::op, SCIP_CALL, and SCIP_OKAY.
Referenced by SCIPexprSimplify().
◆ exprsimplifyRemoveDuplicatePolynomialChildren()
|
static |
removes duplicate children in a polynomial expression
Leaves NULL's in children array.
- Parameters
-
blkmem block memory data structure expr expression eps threshold for zero
Definition at line 4292 of file expr.c.
References BMSallocBlockMemoryArray, BMSfreeBlockMemoryArray, SCIP_Expr::children, SCIP_Expr::data, FALSE, SCIP_Expr::nchildren, NULL, polynomialdataApplyChildmap(), SCIP_ALLOC, SCIP_Bool, SCIP_EXPR_POLYNOMIAL, SCIP_OKAY, SCIPexprAreEqual(), SCIPexprFreeDeep(), SCIPexprGetOperator(), and TRUE.
Referenced by exprsimplifyFlattenPolynomials().
◆ exprsimplifyRemovePolynomialNullChildren()
|
static |
eliminates NULL's in children array and shrinks it to actual size
- Parameters
-
blkmem block memory data structure expr expression
Definition at line 4346 of file expr.c.
References BMSallocBlockMemoryArray, BMSfreeBlockMemoryArray, BMSreallocBlockMemoryArray, SCIP_Expr::children, SCIP_Expr::data, SCIP_Expr::nchildren, NULL, polynomialdataApplyChildmap(), SCIP_ALLOC, SCIP_EXPR_POLYNOMIAL, SCIP_OKAY, and SCIPexprGetOperator().
Referenced by exprsimplifyFlattenPolynomials(), and exprsimplifySeparateLinearFromPolynomial().
◆ exprsimplifyRemovePolynomialUnusedChildren()
|
static |
checks which children are still in use and frees those which are not
- Parameters
-
blkmem block memory data structure expr polynomial expression
Definition at line 4412 of file expr.c.
References BMSallocBlockMemoryArray, BMSclearMemoryArray, BMSfreeBlockMemoryArray, SCIP_ExprData_Monomial::childidxs, SCIP_Expr::children, SCIP_Expr::data, SCIP_ExprData_Polynomial::monomials, SCIP_Expr::nchildren, SCIP_ExprData_Monomial::nfactors, SCIP_ExprData_Polynomial::nmonomials, NULL, SCIP_ALLOC, SCIP_Bool, SCIP_OKAY, SCIPexprFreeDeep(), and TRUE.
Referenced by exprsimplifyFlattenPolynomials().
◆ exprsimplifyFlattenPolynomials()
|
static |
flattens polynomials in polynomials, check for constants in non-polynomials expressions
exprsimplifyConvertToPolynomials should have been called before to eliminate simple polynomial operands.
- Parameters
-
blkmem block memory data structure messagehdlr message handler expr expression eps threshold, under which values are treat as 0 maxexpansionexponent maximal exponent for which we still expand non-monomial polynomials
Definition at line 4463 of file expr.c.
References BMSfreeBlockMemoryArray, BMSfreeBlockMemoryArrayNull, BMSreallocBlockMemoryArray, calcGrowSize(), SCIP_ExprData_Monomial::childidxs, SCIP_Expr::children, SCIP_ExprData_Monomial::coef, SCIP_ExprData_Polynomial::constant, SCIP_Expr::data, EPSISINT, SCIP_ExprData_Monomial::exponents, exprsimplifyAddChildren(), exprsimplifyRemoveDuplicatePolynomialChildren(), exprsimplifyRemovePolynomialNullChildren(), exprsimplifyRemovePolynomialUnusedChildren(), FALSE, SCIP_ExprData_Polynomial::monomials, SCIP_Expr::nchildren, SCIP_ExprData_Monomial::nfactors, SCIP_ExprData_Polynomial::nmonomials, NULL, SCIP_Expr::op, polynomialdataCreate(), polynomialdataExpandMonomialFactor(), polynomialdataFree(), pow(), 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_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, SCIP_Real, SCIPdebug, SCIPdebugMessage, SCIPdebugPrintf, SCIPexprEval(), SCIPexprFindMonomialFactor(), SCIPexprFreeDeep(), SCIPexprGetNChildren(), SCIPexprGetNMonomials(), SCIPexprGetOperator(), SCIPexprGetOpReal(), SCIPexprMergeMonomials(), SCIPexprPrint(), SCIPmessagePrintWarning(), SCIP_ExprData_Polynomial::sorted, SCIP_ExprData_Monomial::sorted, and TRUE.
Referenced by SCIPexprSimplify().
◆ exprsimplifySeparateLinearFromPolynomial()
|
static |
separates linear monomials from an expression, if it is a polynomial expression
Separates only those linear terms whose variable is not used otherwise in the expression.
- Parameters
-
blkmem block memory data structure expr expression eps threshold, under which positive values are treat as 0 nvars number of variables in expression nlinvars buffer to store number of linear variables in linear part linidxs array to store indices of variables in expression tree which belong to linear part lincoefs array to store coefficients of linear part
Definition at line 4792 of file expr.c.
References BMSallocBlockMemoryArray, BMSclearMemoryArray, BMSfreeBlockMemoryArray, SCIP_ExprData_Monomial::childidxs, SCIP_Expr::children, SCIP_ExprData_Monomial::coef, SCIP_Expr::data, SCIP_ExprData_Monomial::exponents, exprsimplifyRemovePolynomialNullChildren(), FALSE, SCIP_ExprData_Polynomial::monomials, SCIP_Expr::nchildren, SCIP_ExprData_Monomial::nfactors, SCIP_ExprData_Polynomial::nmonomials, NULL, polynomialdataMergeMonomials(), SCIP_ALLOC, SCIP_CALL, SCIP_EXPR_POLYNOMIAL, SCIP_EXPR_VARIDX, SCIP_OKAY, SCIPexprFreeDeep(), SCIPexprGetNChildren(), SCIPexprGetOperator(), SCIPexprGetOpIndex(), and SCIPexprGetVarsUsage().
Referenced by SCIPexprSimplify().
◆ exprsimplifyUnconvertPolynomials()
|
static |
converts polynomial expressions back into simpler expressions, where possible
- Parameters
-
blkmem block memory data structure expr expression to convert back
Definition at line 4893 of file expr.c.
References SCIP_Expr::children, SCIP_Expr::data, exprUnconvertPolynomial(), SCIP_Expr::nchildren, NULL, SCIP_Expr::op, SCIP_CALL, SCIP_EXPR_POLYNOMIAL, and SCIP_OKAY.
Referenced by SCIPexprSimplify().
◆ SCIP_DECL_HASHGETKEY()
|
static |
◆ exprparseReadVariable()
|
static |
parses a variable name from a string and creates corresponding expression
Creates a new variable index if variable not seen before, updates varnames and vartable structures.
- Parameters
-
blkmem block memory data structure str pointer to the string to be parsed expr buffer to store pointer to created expression nvars running number of encountered variables so far varnames pointer to buffer to store new variable names varnameslength pointer to length of the varnames buffer array vartable hash table for variable names and corresponding expression index coefficient coefficient to be used when creating the expression varnameendptr if a <varname> should be parsed, set this to NULL. Then, str points to the '<' else, str should point to the first letter of the varname, and varnameendptr should point one char behind the last char of the variable name
Definition at line 4927 of file expr.c.
References NULL, SCIP_CALL, SCIP_EXPR_VARIDX, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_READERROR, SCIP_VARTYPE_BINARY_CHAR, SCIP_VARTYPE_CONTINUOUS_CHAR, SCIP_VARTYPE_IMPLINT_CHAR, SCIP_VARTYPE_INTEGER_CHAR, SCIPerrorMessage, SCIPexprCreate(), SCIPexprCreateLinear(), SCIPhashtableInsert(), SCIPhashtableRetrieve(), and SCIPstrncpy().
Referenced by exprParse().
◆ exprparseFindClosingParenthesis()
|
static |
if str[0] points to an opening parenthesis, this function sets endptr to point to the matching closing bracket in str
Searches for at most length characters.
- Parameters
-
str pointer to the string to be parsed endptr pointer to point to the closing parenthesis length length of the string to be parsed
Definition at line 5028 of file expr.c.
References SCIP_OKAY, SCIP_READERROR, and SCIPerrorMessage.
Referenced by exprParse().
◆ exprparseFindSeparatingComma()
|
static |
this function sets endptr to point to the next separating comma in str
That is, for a given string like "x+f(x,y),z", endptr will point to the comma before "z"
Searches for at most length characters.
- Parameters
-
str pointer to the string to be parsed endptr pointer to point to the comma length length of the string to be parsed
Definition at line 5067 of file expr.c.
References SCIP_OKAY, SCIP_READERROR, and SCIPerrorMessage.
Referenced by exprParse().
◆ exprParse()
|
static |
parses an expression from a string
- Parameters
-
blkmem block memory data structure messagehdlr message handler expr buffer to store pointer to created expression str pointer to the string to be parsed length length of the string to be parsed lastchar pointer to the last char of str that should be parsed nvars running number of encountered variables so far varnames pointer to buffer to store new variable names varnameslength pointer to length of the varnames buffer array vartable hash table for variable names and corresponding expression index recursiondepth current recursion depth
Definition at line 5099 of file expr.c.
References EPSISINT, exprparseFindClosingParenthesis(), exprparseFindSeparatingComma(), exprparseReadVariable(), NULL, number, SCIP_CALL, SCIP_EXPR_ABS, SCIP_EXPR_CONST, SCIP_EXPR_COS, SCIP_EXPR_DIV, SCIP_EXPR_EXP, SCIP_EXPR_INTPOWER, SCIP_EXPR_LOG, SCIP_EXPR_MAX, SCIP_EXPR_MIN, SCIP_EXPR_MUL, SCIP_EXPR_REALPOWER, SCIP_EXPR_SIGNPOWER, SCIP_EXPR_SIN, SCIP_EXPR_SQRT, SCIP_EXPR_SQUARE, SCIP_EXPR_TAN, SCIP_OKAY, SCIP_READERROR, SCIP_Real, SCIPdebug, SCIPdebugMessage, SCIPerrorMessage, SCIPexprAdd(), SCIPexprCreate(), SCIPexprFreeDeep(), SCIPexprFreeShallow(), SCIPexprGetOperator(), SCIPexprGetOpReal(), SCIPexprMulConstant(), SCIPexprPrint(), SCIPmessagePrintInfo(), SCIPstrToIntValue(), and SCIPstrToRealValue().
Referenced by SCIPexprParse().
◆ SCIPexprGetOperator()
SCIP_EXPROP SCIPexprGetOperator | ( | SCIP_EXPR * | expr | ) |
gives operator of expression
- Parameters
-
expr expression
Definition at line 5697 of file expr.c.
References NULL, and 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().
◆ SCIPexprGetNChildren()
int SCIPexprGetNChildren | ( | SCIP_EXPR * | expr | ) |
gives number of children of an expression
- Parameters
-
expr expression
Definition at line 5707 of file expr.c.
References SCIP_Expr::nchildren, and NULL.
Referenced by addUserEstimator(), analyzeTree(), atomic_userexpr< Type >::atomic_userexpr(), eval(), evalUser(), exprIsNonSmooth(), exprsimplifyFlattenPolynomials(), exprsimplifySeparateLinearFromPolynomial(), getCoeffsAndConstantFromLinearExpr(), getExprSize(), getLinearAndQuadraticCoefs(), printExpr(), printRowNl(), readObjective(), SCIPexprAdd(), SCIPexprMulConstant(), and SCIPwritePip().
◆ SCIPexprGetChildren()
gives pointer to array with children of an expression
- Parameters
-
expr expression
Definition at line 5717 of file expr.c.
References SCIP_Expr::children, and NULL.
Referenced by addUserEstimator(), analyzeTree(), eval(), exprIsNonSmooth(), getCoeffsAndConstantFromLinearExpr(), getExprSize(), getLinearAndQuadraticCoefs(), printExpr(), printRowNl(), readObjective(), SCIPexprAdd(), and SCIPwritePip().
◆ SCIPexprGetOpIndex()
int SCIPexprGetOpIndex | ( | SCIP_EXPR * | expr | ) |
gives index belonging to a SCIP_EXPR_VARIDX or SCIP_EXPR_PARAM operand
- Parameters
-
expr expression
Definition at line 5727 of file expr.c.
References SCIP_Expr::data, NULL, SCIP_Expr::op, SCIP_EXPR_PARAM, and SCIP_EXPR_VARIDX.
Referenced by eval(), exprsimplifySeparateLinearFromPolynomial(), getCoeffsAndConstantFromLinearExpr(), getLinearAndQuadraticCoefs(), printExpr(), printRowNl(), and readObjective().
◆ SCIPexprGetOpReal()
gives real belonging to a SCIP_EXPR_CONST operand
- Parameters
-
expr expression
Definition at line 5738 of file expr.c.
References SCIP_Expr::data, NULL, SCIP_Expr::op, and SCIP_EXPR_CONST.
Referenced by eval(), exprParse(), exprsimplifyFlattenPolynomials(), getCoeffsAndConstantFromLinearExpr(), printExpr(), printRowNl(), readExpression(), SCIPexprAdd(), and SCIPexprMulConstant().
◆ SCIPexprGetOpData()
void* SCIPexprGetOpData | ( | SCIP_EXPR * | expr | ) |
gives void* belonging to a complex operand
- Parameters
-
expr expression
Definition at line 5749 of file expr.c.
References SCIP_Expr::data, NULL, SCIP_Expr::op, and SCIP_EXPR_SUM.
◆ SCIPexprGetRealPowerExponent()
gives exponent belonging to a SCIP_EXPR_REALPOWER expression
- Parameters
-
expr expression
Definition at line 5760 of file expr.c.
References SCIP_Expr::data, NULL, SCIP_Expr::op, and SCIP_EXPR_REALPOWER.
Referenced by eval(), printExpr(), printRowNl(), and SCIPwritePip().
◆ SCIPexprGetIntPowerExponent()
int SCIPexprGetIntPowerExponent | ( | SCIP_EXPR * | expr | ) |
gives exponent belonging to a SCIP_EXPR_INTPOWER expression
- Parameters
-
expr expression
Definition at line 5771 of file expr.c.
References SCIP_Expr::data, NULL, SCIP_Expr::op, and SCIP_EXPR_INTPOWER.
Referenced by eval(), printExpr(), printRowNl(), and SCIPwritePip().
◆ SCIPexprGetSignPowerExponent()
gives exponent belonging to a SCIP_EXPR_SIGNPOWER expression
- Parameters
-
expr expression
Definition at line 5782 of file expr.c.
References SCIP_Expr::data, NULL, SCIP_Expr::op, and SCIP_EXPR_SIGNPOWER.
Referenced by atomic_signpower< Type >::atomic_signpower(), evalSignPower(), and printExpr().
◆ SCIPexprGetLinearCoefs()
gives linear coefficients belonging to a SCIP_EXPR_LINEAR expression
- Parameters
-
expr expression
Definition at line 5793 of file expr.c.
References SCIP_Expr::data, NULL, SCIP_Expr::op, SCIP_EXPR_LINEAR, and SCIP_Real.
Referenced by eval(), getCoeffsAndConstantFromLinearExpr(), printExpr(), printRowNl(), and SCIPexprAdd().
◆ SCIPexprGetLinearConstant()
gives constant belonging to a SCIP_EXPR_LINEAR expression
- Parameters
-
expr expression
Definition at line 5806 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::nchildren, NULL, SCIP_Expr::op, SCIP_EXPR_LINEAR, and SCIP_Real.
Referenced by eval(), getCoeffsAndConstantFromLinearExpr(), printExpr(), printRowNl(), and SCIPexprAdd().
◆ SCIPexprGetQuadElements()
SCIP_QUADELEM* SCIPexprGetQuadElements | ( | SCIP_EXPR * | expr | ) |
gives quadratic elements belonging to a SCIP_EXPR_QUADRATIC expression
- Parameters
-
expr quadratic expression
Definition at line 5819 of file expr.c.
References SCIP_Expr::data, NULL, SCIP_Expr::op, and SCIP_EXPR_QUADRATIC.
Referenced by eval(), printExpr(), and printRowNl().
◆ SCIPexprGetQuadConstant()
gives constant belonging to a SCIP_EXPR_QUADRATIC expression
- Parameters
-
expr quadratic expression
Definition at line 5831 of file expr.c.
References SCIP_Expr::data, NULL, SCIP_Expr::op, and SCIP_EXPR_QUADRATIC.
Referenced by eval(), printExpr(), and printRowNl().
◆ SCIPexprGetQuadLinearCoefs()
gives linear coefficients belonging to a SCIP_EXPR_QUADRATIC expression can be NULL if all coefficients are 0.0
- Parameters
-
expr quadratic expression
Definition at line 5844 of file expr.c.
References SCIP_Expr::data, NULL, SCIP_Expr::op, and SCIP_EXPR_QUADRATIC.
Referenced by eval(), printExpr(), and printRowNl().
◆ SCIPexprGetNQuadElements()
int SCIPexprGetNQuadElements | ( | SCIP_EXPR * | expr | ) |
gives number of quadratic elements belonging to a SCIP_EXPR_QUADRATIC expression
- Parameters
-
expr quadratic expression
Definition at line 5856 of file expr.c.
References SCIP_Expr::data, NULL, SCIP_Expr::op, and SCIP_EXPR_QUADRATIC.
Referenced by eval(), printExpr(), and printRowNl().
◆ SCIPexprGetMonomials()
SCIP_EXPRDATA_MONOMIAL** SCIPexprGetMonomials | ( | SCIP_EXPR * | expr | ) |
gives the monomials belonging to a SCIP_EXPR_POLYNOMIAL expression
- Parameters
-
expr expression
Definition at line 5868 of file expr.c.
References SCIP_Expr::data, NULL, SCIP_Expr::op, and SCIP_EXPR_POLYNOMIAL.
Referenced by eval(), getLinearAndQuadraticCoefs(), printExpr(), printRowNl(), readObjective(), and SCIPwritePip().
◆ SCIPexprGetNMonomials()
int SCIPexprGetNMonomials | ( | SCIP_EXPR * | expr | ) |
gives the number of monomials belonging to a SCIP_EXPR_POLYNOMIAL expression
- Parameters
-
expr expression
Definition at line 5880 of file expr.c.
References SCIP_Expr::data, NULL, SCIP_Expr::op, and SCIP_EXPR_POLYNOMIAL.
Referenced by eval(), exprsimplifyFlattenPolynomials(), getLinearAndQuadraticCoefs(), printExpr(), printRowNl(), readConstraints(), readObjective(), and SCIPwritePip().
◆ SCIPexprGetPolynomialConstant()
gives the constant belonging to a SCIP_EXPR_POLYNOMIAL expression
- Parameters
-
expr expression
Definition at line 5892 of file expr.c.
References SCIP_Expr::data, NULL, SCIP_Expr::op, and SCIP_EXPR_POLYNOMIAL.
Referenced by eval(), getLinearAndQuadraticCoefs(), printExpr(), printRowNl(), and readObjective().
◆ SCIPexprGetMonomialCoef()
SCIP_Real SCIPexprGetMonomialCoef | ( | SCIP_EXPRDATA_MONOMIAL * | monomial | ) |
gets coefficient of a monomial
- Parameters
-
monomial monomial
Definition at line 5904 of file expr.c.
References SCIP_ExprData_Monomial::coef, and NULL.
Referenced by eval(), findAggregation(), getLinearAndQuadraticCoefs(), printExpr(), printRowNl(), readObjective(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
◆ SCIPexprGetMonomialNFactors()
int SCIPexprGetMonomialNFactors | ( | SCIP_EXPRDATA_MONOMIAL * | monomial | ) |
gets number of factors of a monomial
- Parameters
-
monomial monomial
Definition at line 5914 of file expr.c.
References SCIP_ExprData_Monomial::nfactors, and NULL.
Referenced by eval(), findAggregation(), getLinearAndQuadraticCoefs(), printExpr(), printRowNl(), readObjective(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), SCIP_DECL_NONLINCONSUPGD(), and SCIPwritePip().
◆ SCIPexprGetMonomialChildIndices()
int* SCIPexprGetMonomialChildIndices | ( | SCIP_EXPRDATA_MONOMIAL * | monomial | ) |
gets indices of children corresponding to factors of a monomial
- Parameters
-
monomial monomial
Definition at line 5924 of file expr.c.
References SCIP_ExprData_Monomial::childidxs, and NULL.
Referenced by eval(), findAggregation(), getLinearAndQuadraticCoefs(), printExpr(), printRowNl(), readObjective(), reformulate(), and SCIP_DECL_EXPRGRAPHNODEREFORM().
◆ SCIPexprGetMonomialExponents()
SCIP_Real* SCIPexprGetMonomialExponents | ( | SCIP_EXPRDATA_MONOMIAL * | monomial | ) |
gets exponents in factors of a monomial
- Parameters
-
monomial monomial
Definition at line 5934 of file expr.c.
References SCIP_ExprData_Monomial::exponents, and NULL.
Referenced by eval(), findAggregation(), getLinearAndQuadraticCoefs(), printExpr(), printRowNl(), readObjective(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), SCIP_DECL_NONLINCONSUPGD(), and SCIPwritePip().
◆ SCIPexprGetUserData()
SCIP_USEREXPRDATA* SCIPexprGetUserData | ( | SCIP_EXPR * | expr | ) |
gets user data of a user expression
Definition at line 5944 of file expr.c.
References SCIP_Expr::data, and NULL.
◆ SCIPexprHasUserEstimator()
indicates whether a user expression has the estimator callback defined
Definition at line 5955 of file expr.c.
References SCIP_Expr::data, and NULL.
Referenced by addUserEstimator().
◆ SCIPexprGetUserEvalCapability()
SCIP_EXPRINTCAPABILITY SCIPexprGetUserEvalCapability | ( | SCIP_EXPR * | expr | ) |
gives the evaluation capability of a user expression
Definition at line 5966 of file expr.c.
References SCIP_Expr::data, and NULL.
Referenced by analyzeTree().
◆ SCIPexprCreate()
SCIP_RETCODE SCIPexprCreate | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR ** | expr, | ||
SCIP_EXPROP | op, | ||
... | |||
) |
creates a simple expression
- Parameters
-
blkmem block memory data structure expr pointer to buffer for expression address op operand of expression
Definition at line 5977 of file expr.c.
References BMSallocBlockMemoryArray, BMSduplicateBlockMemoryArray, SCIP_Expr::data, exprCreate(), NULL, 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().
◆ SCIPexprCopyDeep()
SCIP_RETCODE SCIPexprCopyDeep | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR ** | targetexpr, | ||
SCIP_EXPR * | sourceexpr | ||
) |
copies an expression including its children
- Parameters
-
blkmem block memory data structure targetexpr buffer to store pointer to copied expression sourceexpr expression to copy
Definition at line 6145 of file expr.c.
References BMSallocBlockMemoryArray, BMSduplicateBlockMemory, SCIP_Expr::children, SCIP_Expr::data, SCIP_Expr::nchildren, NULL, 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().
◆ SCIPexprFreeDeep()
void SCIPexprFreeDeep | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR ** | expr | ||
) |
frees an expression including its children
- Parameters
-
blkmem block memory data structure expr pointer to expression to free
Definition at line 6187 of file expr.c.
References BMSfreeBlockMemory, BMSfreeBlockMemoryArray, NULL, 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().
◆ SCIPexprFreeShallow()
void SCIPexprFreeShallow | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR ** | expr | ||
) |
frees an expression but not its children
- Parameters
-
blkmem block memory data structure expr pointer to expression to free
Definition at line 6225 of file expr.c.
References BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, and NULL.
Referenced by exprParse(), and SCIPexprAdd().
◆ 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.
- Parameters
-
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 6250 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::nchildren, NULL, 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().
◆ SCIPexprMulConstant()
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 and maintaining SCIP_EXPR_LINEAR over SCIP_EXPR_PLUS or SCIP_EXPR_SUM.
- Parameters
-
blkmem block memory data structure expr buffer to store pointer to created expression term term to multiply by factor factor factor
Definition at line 6408 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, NULL, 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().
◆ SCIPexprCreateLinear()
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
- Parameters
-
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 6506 of file expr.c.
References BMSallocBlockMemoryArray, BMScopyMemoryArray, BMSduplicateBlockMemoryArray, exprCreate(), NULL, 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().
◆ SCIPexprAddToLinear()
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
- Parameters
-
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 6543 of file expr.c.
References BMScopyMemoryArray, BMSreallocBlockMemoryArray, SCIP_Expr::children, SCIP_Expr::data, SCIP_Expr::nchildren, NULL, SCIP_Expr::op, SCIP_ALLOC, SCIP_EXPR_LINEAR, SCIP_OKAY, and SCIP_Real.
Referenced by SCIPexprAdd().
◆ SCIPexprCreateQuadratic()
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
- Parameters
-
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 6588 of file expr.c.
References BMSduplicateBlockMemoryArray, exprCreate(), NULL, quadraticdataCreate(), SCIP_ALLOC, SCIP_CALL, SCIP_EXPR_QUADRATIC, and SCIP_OKAY.
Referenced by createConsFromQuadTerm(), exprgraphNodeCreateExpr(), readExpression(), readNonlinearExprs(), and SCIPexprgraphGetSeparableTrees().
◆ SCIPexprSortQuadElems()
void SCIPexprSortQuadElems | ( | SCIP_EXPR * | expr | ) |
ensures that quadratic elements of a quadratic expression are sorted
- Parameters
-
expr quadratic expression
Definition at line 6624 of file expr.c.
References SCIP_Expr::data, NULL, SCIP_Expr::op, quadraticdataSort(), and SCIP_EXPR_QUADRATIC.
Referenced by eval(), and SCIPexprAreEqual().
◆ SCIPexprCreatePolynomial()
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
- Parameters
-
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 6636 of file expr.c.
References BMSduplicateBlockMemoryArray, exprCreate(), NULL, polynomialdataCreate(), SCIP_ALLOC, SCIP_CALL, SCIP_EXPR_POLYNOMIAL, and SCIP_OKAY.
Referenced by createExprtreeFromMonomial(), createNlRow(), exprgraphNodeCreateExpr(), readPolynomial(), SCIPexprgraphGetSeparableTrees(), SCIPexprgraphGetSumTrees(), and setupProblem().
◆ SCIPexprAddMonomials()
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
- Parameters
-
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 6671 of file expr.c.
References SCIP_Expr::data, NULL, SCIP_Expr::op, polynomialdataAddMonomials(), SCIP_CALL, SCIP_EXPR_POLYNOMIAL, and SCIP_OKAY.
◆ SCIPexprChgPolynomialConstant()
changes the constant in a SCIP_EXPR_POLYNOMIAL expression
- Parameters
-
expr expression constant new value for constant
Definition at line 6693 of file expr.c.
References SCIP_Expr::data, NULL, SCIP_Expr::op, and SCIP_EXPR_POLYNOMIAL.
◆ SCIPexprMultiplyPolynomialByConstant()
void SCIPexprMultiplyPolynomialByConstant | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR * | expr, | ||
SCIP_Real | factor | ||
) |
multiplies each summand of a polynomial by a given constant
- Parameters
-
blkmem block memory expr polynomial expression factor constant factor
Definition at line 6706 of file expr.c.
References SCIP_Expr::data, NULL, SCIP_Expr::op, polynomialdataMultiplyByConstant(), and SCIP_EXPR_POLYNOMIAL.
◆ SCIPexprMultiplyPolynomialByMonomial()
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
- Parameters
-
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 6720 of file expr.c.
References SCIP_Expr::data, NULL, SCIP_Expr::op, polynomialdataMultiplyByMonomial(), SCIP_CALL, SCIP_EXPR_POLYNOMIAL, and SCIP_OKAY.
◆ SCIPexprMultiplyPolynomialByPolynomial()
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. Children of factor need to be children of expr already, w.r.t. an optional mapping of child indices.
- Parameters
-
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 6743 of file expr.c.
References SCIP_Expr::children, SCIP_Expr::data, SCIP_Expr::nchildren, NULL, SCIP_Expr::op, polynomialdataMultiplyByPolynomial(), SCIP_CALL, SCIP_EXPR_POLYNOMIAL, SCIP_OKAY, and SCIPexprAreEqual().
◆ SCIPexprPolynomialPower()
SCIP_RETCODE SCIPexprPolynomialPower | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPR * | expr, | ||
int | exponent | ||
) |
takes a power of the polynomial
Exponent need to be an integer. Polynomial needs to be a monomial, if exponent is negative.
- Parameters
-
blkmem block memory expr polynomial expression exponent exponent of power operation
Definition at line 6789 of file expr.c.
References SCIP_Expr::data, NULL, SCIP_Expr::op, polynomialdataPower(), SCIP_CALL, SCIP_EXPR_POLYNOMIAL, and SCIP_OKAY.
◆ SCIPexprMergeMonomials()
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.
- Parameters
-
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 6809 of file expr.c.
References SCIP_Expr::data, NULL, SCIP_Expr::op, polynomialdataMergeMonomials(), and SCIP_EXPR_POLYNOMIAL.
Referenced by exprsimplifyFlattenPolynomials().
◆ SCIPexprAreMonomialsEqual()
SCIP_Bool SCIPexprAreMonomialsEqual | ( | SCIP_EXPRDATA_MONOMIAL * | monomial1, |
SCIP_EXPRDATA_MONOMIAL * | monomial2, | ||
SCIP_Real | eps | ||
) |
checks if two monomials are equal
- Parameters
-
monomial1 first monomial monomial2 second monomial eps threshold under which numbers are treated as 0.0
Definition at line 6824 of file expr.c.
References SCIP_ExprData_Monomial::childidxs, SCIP_ExprData_Monomial::coef, EPSEQ, SCIP_ExprData_Monomial::exponents, FALSE, SCIP_ExprData_Monomial::nfactors, NULL, SCIPexprSortMonomialFactors(), and TRUE.
Referenced by exprgraphFindParentByOperator(), and SCIPexprAreEqual().
◆ SCIPexprChgMonomialCoef()
void SCIPexprChgMonomialCoef | ( | SCIP_EXPRDATA_MONOMIAL * | monomial, |
SCIP_Real | newcoef | ||
) |
changes coefficient of monomial
- Parameters
-
monomial monomial newcoef new coefficient
Definition at line 6855 of file expr.c.
References SCIP_ExprData_Monomial::coef, and NULL.
Referenced by polynomialdataMultiplyByConstant(), and polynomialdataMultiplyByPolynomial().
◆ SCIPexprAddMonomialFactors()
SCIP_RETCODE SCIPexprAddMonomialFactors | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPRDATA_MONOMIAL * | monomial, | ||
int | nfactors, | ||
int * | childidxs, | ||
SCIP_Real * | exponents | ||
) |
adds factors to a monomial
- Parameters
-
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 6866 of file expr.c.
References BMScopyMemoryArray, SCIP_ExprData_Monomial::childidxs, SCIP_ExprData_Monomial::exponents, monomialdataEnsureFactorsSize(), SCIP_ExprData_Monomial::nfactors, NULL, SCIP_CALL, SCIP_OKAY, and SCIP_ExprData_Monomial::sorted.
Referenced by exprConvertToPolynomial(), polynomialdataExpandMonomialFactor(), and SCIPexprMultiplyMonomialByMonomial().
◆ SCIPexprMultiplyMonomialByMonomial()
SCIP_RETCODE SCIPexprMultiplyMonomialByMonomial | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPRDATA_MONOMIAL * | monomial, | ||
SCIP_EXPRDATA_MONOMIAL * | factor, | ||
int * | childmap | ||
) |
multiplies a monomial with a monomial
- Parameters
-
blkmem block memory monomial monomial factor factor monomial childmap map to apply to children in factor, or NULL for 1:1
Definition at line 6895 of file expr.c.
References SCIP_ExprData_Monomial::childidxs, SCIP_ExprData_Monomial::coef, SCIP_ExprData_Monomial::exponents, SCIP_ExprData_Monomial::nfactors, NULL, SCIP_CALL, SCIP_OKAY, and SCIPexprAddMonomialFactors().
Referenced by polynomialdataMultiplyByMonomial(), and polynomialdataMultiplyByPolynomial().
◆ SCIPexprMonomialPower()
void SCIPexprMonomialPower | ( | SCIP_EXPRDATA_MONOMIAL * | monomial, |
int | exponent | ||
) |
replaces the monomial by a power of the monomial
Allows only integers as exponent.
- Parameters
-
monomial monomial exponent integer exponent of power operation
Definition at line 6930 of file expr.c.
References SCIP_ExprData_Monomial::coef, SCIP_ExprData_Monomial::exponents, SCIP_ExprData_Monomial::nfactors, NULL, pow(), and SCIP_Real.
Referenced by polynomialdataPower().
◆ SCIPexprMergeMonomialFactors()
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.
- Parameters
-
monomial monomial eps threshold under which numbers are treated as 0.0
Definition at line 6960 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, NULL, and SCIPexprSortMonomialFactors().
Referenced by exprgraphNodeSimplify(), and polynomialdataMergeMonomials().
◆ SCIPexprSortMonomials()
void SCIPexprSortMonomials | ( | SCIP_EXPR * | expr | ) |
ensures that monomials of a polynomial are sorted
- Parameters
-
expr polynomial expression
Definition at line 7027 of file expr.c.
References SCIP_Expr::data, NULL, SCIP_Expr::op, polynomialdataSortMonomials(), and SCIP_EXPR_POLYNOMIAL.
Referenced by SCIPexprAreEqual().
◆ SCIPexprCreateMonomial()
SCIP_RETCODE SCIPexprCreateMonomial | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPRDATA_MONOMIAL ** | monomial, | ||
SCIP_Real | coef, | ||
int | nfactors, | ||
int * | childidxs, | ||
SCIP_Real * | exponents | ||
) |
creates a monomial
- Parameters
-
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 7039 of file expr.c.
References BMSallocBlockMemory, BMSallocBlockMemoryArray, BMSduplicateBlockMemoryArray, NULL, SCIP_ALLOC, and SCIP_OKAY.
Referenced by createExprtreeFromMonomial(), createNlRow(), exprConvertToPolynomial(), polynomialdataAddMonomials(), polynomialdataCopy(), polynomialdataCreate(), polynomialdataMultiplyByMonomial(), polynomialdataMultiplyByPolynomial(), readPolynomial(), reformulate(), SCIPexprgraphGetSeparableTrees(), SCIPexprgraphGetSumTrees(), and setupProblem().
◆ SCIPexprFreeMonomial()
void SCIPexprFreeMonomial | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPRDATA_MONOMIAL ** | monomial | ||
) |
frees a monomial
- Parameters
-
blkmem block memory monomial pointer to monomial that should be freed
Definition at line 7096 of file expr.c.
References BMSfreeBlockMemory, BMSfreeBlockMemoryArray, and NULL.
Referenced by exprConvertToPolynomial(), polynomialdataExpandMonomialFactor(), polynomialdataFree(), polynomialdataMergeMonomials(), polynomialdataMultiplyByConstant(), and polynomialdataPower().
◆ SCIPexprSortMonomialFactors()
void SCIPexprSortMonomialFactors | ( | SCIP_EXPRDATA_MONOMIAL * | monomial | ) |
ensures that factors in a monomial are sorted
- Parameters
-
monomial monomial
Definition at line 7120 of file expr.c.
References SCIP_ExprData_Monomial::childidxs, SCIP_ExprData_Monomial::exponents, SCIP_ExprData_Monomial::nfactors, NULL, SCIPsortIntReal(), SCIP_ExprData_Monomial::sorted, and TRUE.
Referenced by SCIP_DECL_SORTPTRCOMP(), SCIPexprAreMonomialsEqual(), SCIPexprFindMonomialFactor(), and SCIPexprMergeMonomialFactors().
◆ SCIPexprFindMonomialFactor()
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.
- Parameters
-
monomial monomial childidx index of the child which factor to search for pos buffer to store position of factor
Definition at line 7140 of file expr.c.
References SCIP_ExprData_Monomial::childidxs, FALSE, SCIP_ExprData_Monomial::nfactors, NULL, SCIPexprSortMonomialFactors(), and SCIPsortedvecFindInt().
Referenced by exprgraphNodeSimplify(), and exprsimplifyFlattenPolynomials().
◆ SCIPexprCreateUser()
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
- Parameters
-
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 7157 of file expr.c.
References BMSallocBlockMemory, BMSduplicateBlockMemoryArray, eval(), SCIP_ExprData_User::evalcapability, exprCreate(), NULL, polyscip::global::print(), SCIP_ALLOC, SCIP_CALL, SCIP_EXPR_USER, SCIP_EXPRINTCAPABILITY_FUNCVALUE, SCIP_EXPRINTCAPABILITY_INTFUNCVALUE, SCIP_OKAY, and SCIP_ExprData_User::userdata.
Referenced by exprgraphNodeCreateExpr().
◆ SCIPexprHasParam()
indicates whether the expression contains a SCIP_EXPR_PARAM
- Parameters
-
expr expression
Definition at line 7217 of file expr.c.
References SCIP_Expr::children, FALSE, SCIP_Expr::nchildren, NULL, SCIP_Expr::op, SCIP_EXPR_PARAM, SCIPexprHasParam(), and TRUE.
Referenced by SCIPexprHasParam(), and SCIPexprtreeHasParam().
◆ SCIPexprGetMaxDegree()
SCIP_RETCODE SCIPexprGetMaxDegree | ( | SCIP_EXPR * | expr, |
int * | maxdegree | ||
) |
gets maximal degree of expression, or SCIP_EXPR_DEGREEINFINITY if not a polynomial
- Parameters
-
expr expression maxdegree buffer to store maximal degree
Definition at line 7236 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, NULL, 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().
◆ SCIPexprGetVarsUsage()
void SCIPexprGetVarsUsage | ( | SCIP_EXPR * | expr, |
int * | varsusage | ||
) |
counts usage of variables in expression
- Parameters
-
expr expression to update varsusage array with counters of variable usage
Definition at line 7561 of file expr.c.
References SCIP_Expr::children, SCIP_Expr::data, SCIP_Expr::nchildren, NULL, SCIP_Expr::op, SCIP_EXPR_VARIDX, and SCIPexprGetVarsUsage().
Referenced by exprsimplifySeparateLinearFromPolynomial(), SCIPexprGetVarsUsage(), and SCIPexprtreeGetVarsUsage().
◆ SCIPexprAreEqual()
compares whether two expressions are the same
Inconclusive, i.e., may give FALSE even if expressions are equivalent (x*y != y*x).
- Parameters
-
expr1 first expression expr2 second expression eps threshold under which numbers are assumed to be zero
Definition at line 7584 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, NULL, 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().
◆ SCIPexprSimplify()
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.
- Parameters
-
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 7799 of file expr.c.
References exprsimplifyConvertToPolynomials(), exprsimplifyFlattenPolynomials(), exprsimplifySeparateLinearFromPolynomial(), exprsimplifyUnconvertPolynomials(), NULL, SCIP_CALL, SCIP_OKAY, SCIPdebug, SCIPdebugMessage, SCIPdebugPrintf, and SCIPexprPrint().
Referenced by SCIPexprtreeSimplify().
◆ SCIPexprEvalShallow()
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
- Parameters
-
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 7851 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::nchildren, NULL, SCIP_Expr::op, SCIP_CALL, and SCIP_OKAY.
◆ SCIPexprEval()
SCIP_RETCODE SCIPexprEval | ( | SCIP_EXPR * | expr, |
SCIP_Real * | varvals, | ||
SCIP_Real * | param, | ||
SCIP_Real * | val | ||
) |
evaluates an expression w.r.t. a point
- Parameters
-
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 7870 of file expr.c.
References BMSallocMemoryArray, BMSfreeMemoryArray, SCIP_Expr::children, SCIP_Expr::data, SCIP_Expr::nchildren, NULL, SCIP_Expr::op, SCIP_ALLOC, SCIP_CALL, SCIP_EXPRESSION_MAXCHILDEST, SCIP_OKAY, SCIP_Real, and SCIPexprEval().
Referenced by addUserEstimator(), exprsimplifyFlattenPolynomials(), SCIPexprEval(), and SCIPexprtreeEval().
◆ SCIPexprEvalIntShallow()
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
- Parameters
-
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 7911 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::nchildren, NULL, SCIP_Expr::op, SCIP_CALL, and SCIP_OKAY.
◆ SCIPexprEvalInt()
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
- Parameters
-
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 7931 of file expr.c.
References BMSallocMemoryArray, BMSfreeMemoryArray, SCIP_Expr::children, SCIP_Expr::data, SCIP_Expr::nchildren, NULL, SCIP_Expr::op, SCIP_ALLOC, SCIP_CALL, SCIP_EXPRESSION_MAXCHILDEST, SCIP_OKAY, and SCIPexprEvalInt().
Referenced by addUserEstimator(), SCIPexprEvalInt(), and SCIPexprtreeEvalInt().
◆ SCIPexprEvalUser()
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
- Parameters
-
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 7973 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::nchildren, NULL, SCIP_Expr::op, SCIP_CALL, SCIP_EXPR_USER, SCIP_OKAY, and SCIP_ExprData_User::userdata.
Referenced by exprEvalUser().
◆ SCIPexprEvalIntUser()
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
- Parameters
-
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 7996 of file expr.c.
References SCIP_Expr::data, SCIP_Expr::nchildren, NULL, SCIP_Expr::op, SCIP_CALL, SCIP_EXPR_USER, SCIP_OKAY, SCIPintervalSetEntire(), and SCIP_ExprData_User::userdata.
Referenced by exprEvalUser().
◆ doCheckCurvature()
|
static |
internal curvature check method
- Parameters
-
expr expression to check infinity value to use for infinity varbounds domains of variables childbounds child bounds buffer array param values for parameters, can be NULL if the expression is not parameterized curv buffer to store curvature of expression childcurv buffer array for curvature of children bounds buffer to store bounds on expression
Definition at line 8030 of file expr.c.
References SCIP_Expr::children, SCIP_Expr::data, SCIP_Expr::nchildren, NULL, SCIP_Expr::op, SCIP_CALL, SCIP_EXPRCURV_LINEAR, SCIP_OKAY, and SCIPexprCheckCurvature().
Referenced by SCIPexprCheckCurvature().
◆ SCIPexprCheckCurvature()
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
- Parameters
-
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 8066 of file expr.c.
References BMSallocMemoryArray, BMSfreeMemoryArrayNull, doCheckCurvature(), SCIP_Expr::nchildren, NULL, SCIP_ALLOC, SCIP_ALLOC_TERMINATE, SCIP_EXPRESSION_MAXCHILDEST, and SCIP_OKAY.
Referenced by doCheckCurvature(), and SCIPexprtreeCheckCurvature().
◆ SCIPexprEstimateUser()
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
- Parameters
-
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 8111 of file expr.c.
References SCIP_Expr::data, FALSE, SCIP_Expr::nchildren, NULL, SCIP_Expr::op, SCIP_CALL, SCIP_EXPR_USER, SCIP_OKAY, and SCIP_ExprData_User::userdata.
Referenced by addUserEstimator().
◆ SCIPexprSubstituteVars()
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 the latter is not NULL. If substexprs[i] == NULL, then the variable expression i is not touched.
- Parameters
-
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 8149 of file expr.c.
References SCIP_Expr::children, SCIP_Expr::data, SCIP_Expr::nchildren, NULL, 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().
◆ SCIPexprReindexVars()
void SCIPexprReindexVars | ( | SCIP_EXPR * | expr, |
int * | newindices | ||
) |
updates variable indices in expression tree
- Parameters
-
expr expression to update newindices new indices of variables
Definition at line 8187 of file expr.c.
References SCIP_Expr::children, SCIP_Expr::data, SCIP_Expr::nchildren, NULL, SCIP_Expr::op, SCIP_EXPR_VARIDX, and SCIPexprReindexVars().
Referenced by initSepaData(), removeFixedVariables(), SCIPexprReindexVars(), and SCIPexprtreeRemoveFixedVars().
◆ SCIPexprReindexParams()
void SCIPexprReindexParams | ( | SCIP_EXPR * | expr, |
int * | newindices | ||
) |
updates parameter indices in expression tree
- Parameters
-
expr expression to update newindices new indices of variables
Definition at line 8208 of file expr.c.
References SCIP_Expr::children, SCIP_Expr::data, SCIP_Expr::nchildren, NULL, SCIP_Expr::op, SCIP_EXPR_PARAM, and SCIPexprReindexParams().
Referenced by SCIPexprReindexParams().
◆ SCIPexprPrint()
void SCIPexprPrint | ( | SCIP_EXPR * | expr, |
SCIP_MESSAGEHDLR * | messagehdlr, | ||
FILE * | file, | ||
const char ** | varnames, | ||
const char ** | paramnames, | ||
SCIP_Real * | paramvals | ||
) |
prints an expression
- Parameters
-
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 8229 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, NULL, 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().
◆ SCIPexprParse()
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
- Parameters
-
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 8542 of file expr.c.
References exprParse(), NULL, SCIP_CALL, SCIPhashtableCreate(), and SCIPhashtableFree().
Referenced by SCIP_DECL_CONSPARSE().
◆ SCIPexprtreeGetRoot()
SCIP_EXPR* SCIPexprtreeGetRoot | ( | SCIP_EXPRTREE * | tree | ) |
returns root expression of an expression tree
- Parameters
-
tree expression tree
Definition at line 8606 of file expr.c.
References NULL, and 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().
◆ SCIPexprtreeGetNVars()
int SCIPexprtreeGetNVars | ( | SCIP_EXPRTREE * | tree | ) |
returns number of variables in expression tree
- Parameters
-
tree expression tree
Definition at line 8616 of file expr.c.
References NULL, and 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(), SCIPaddNlRowGradientBenderscutOpt(), 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().
◆ SCIPexprtreeGetNParams()
int SCIPexprtreeGetNParams | ( | SCIP_EXPRTREE * | tree | ) |
returns number of parameters in expression tree
- Parameters
-
tree expression tree
Definition at line 8626 of file expr.c.
References SCIP_ExprTree::nparams, and NULL.
Referenced by nlrowExprtreeParamChanged(), nlrowRemoveFixedExprtreeVars(), SCIPnlpiOracleChgExprParam(), and SCIPnlrowChgExprtreeParams().
◆ SCIPexprtreeGetParamVals()
SCIP_Real* SCIPexprtreeGetParamVals | ( | SCIP_EXPRTREE * | tree | ) |
returns values of parameters or NULL if none
- Parameters
-
tree expression tree
Definition at line 8636 of file expr.c.
References NULL, and SCIP_ExprTree::params.
Referenced by addUserEstimator(), nlrowExprtreeParamChanged(), SCIPexprintEval(), and SCIPexprintEvalInt().
◆ SCIPexprtreeSetParamVal()
void SCIPexprtreeSetParamVal | ( | SCIP_EXPRTREE * | tree, |
int | paramidx, | ||
SCIP_Real | paramval | ||
) |
sets value of a single parameter in expression tree
- Parameters
-
tree expression tree paramidx index of parameter paramval new value of parameter
Definition at line 8646 of file expr.c.
References NULL, and SCIP_ExprTree::params.
Referenced by generateConvexConcaveUnderestimator(), SCIPnlpiOracleChgExprParam(), and SCIPnlrowChgExprtreeParam().
◆ SCIPexprtreeGetInterpreterData()
SCIP_EXPRINTDATA* SCIPexprtreeGetInterpreterData | ( | SCIP_EXPRTREE * | tree | ) |
gets data of expression tree interpreter, or NULL if not set
- Parameters
-
tree expression tree
Definition at line 8661 of file expr.c.
References SCIP_ExprTree::interpreterdata, and NULL.
Referenced by addIntervalGradientEstimator(), addLinearization(), computeGradient(), computeViolation(), generateLinearizationCut(), initSepaData(), SCIP_DECL_CONSINITLP(), SCIPaddNlRowGradientBenderscutOpt(), SCIPexprintCompile(), SCIPexprintEval(), SCIPexprintEvalInt(), SCIPexprintGetExprtreeCapability(), SCIPexprintGrad(), SCIPexprintGradInt(), SCIPexprintHessianDense(), SCIPexprintHessianSparsityDense(), SCIPexprintNewParametrization(), and solveDerivativeEquation().
◆ SCIPexprtreeSetInterpreterData()
void SCIPexprtreeSetInterpreterData | ( | SCIP_EXPRTREE * | tree, |
SCIP_EXPRINTDATA * | interpreterdata | ||
) |
sets data of expression tree interpreter
- Parameters
-
tree expression tree interpreterdata expression interpreter data
Definition at line 8671 of file expr.c.
References SCIP_ExprTree::interpreterdata, and NULL.
Referenced by SCIPexprintCompile().
◆ SCIPexprtreeFreeInterpreterData()
SCIP_RETCODE SCIPexprtreeFreeInterpreterData | ( | SCIP_EXPRTREE * | tree | ) |
frees data of expression tree interpreter, if any
- Parameters
-
tree expression tree
Definition at line 8684 of file expr.c.
References SCIP_ExprTree::interpreterdata, NULL, SCIP_CALL, SCIP_OKAY, and SCIPexprintFreeData().
Referenced by SCIPexprtreeAddExpr(), SCIPexprtreeFree(), SCIPexprtreeSimplify(), and SCIPexprtreeSubstituteVars().
◆ SCIPexprtreeHasParam()
SCIP_Bool SCIPexprtreeHasParam | ( | SCIP_EXPRTREE * | tree | ) |
indicates whether there are parameterized constants (SCIP_EXPR_PARAM) in expression tree
- Parameters
-
tree expression tree
Definition at line 8698 of file expr.c.
References NULL, SCIP_ExprTree::root, and SCIPexprHasParam().
◆ SCIPexprtreeGetMaxDegree()
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.
- Parameters
-
tree expression tree maxdegree buffer to store maximal degree
Definition at line 8714 of file expr.c.
References NULL, SCIP_ExprTree::root, SCIP_CALL, SCIP_OKAY, and SCIPexprGetMaxDegree().
Referenced by SCIPwriteGms().
◆ SCIPexprtreeEval()
SCIP_RETCODE SCIPexprtreeEval | ( | SCIP_EXPRTREE * | tree, |
SCIP_Real * | varvals, | ||
SCIP_Real * | val | ||
) |
evaluates an expression tree w.r.t. a point
- Parameters
-
tree expression tree varvals values for variables val buffer to store expression tree value
Definition at line 8727 of file expr.c.
References NULL, 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().
◆ SCIPexprtreeEvalInt()
SCIP_RETCODE SCIPexprtreeEvalInt | ( | SCIP_EXPRTREE * | tree, |
SCIP_Real | infinity, | ||
SCIP_INTERVAL * | varvals, | ||
SCIP_INTERVAL * | val | ||
) |
evaluates an expression tree w.r.t. an interval
- Parameters
-
tree expression tree infinity value for infinity varvals intervals for variables val buffer to store expression tree value
Definition at line 8743 of file expr.c.
References NULL, SCIP_ExprTree::nvars, SCIP_ExprTree::params, SCIP_ExprTree::root, SCIP_CALL, SCIP_OKAY, and SCIPexprEvalInt().
Referenced by nlrowCalcActivityBounds(), SCIPevalExprtreeGlobalBounds(), SCIPevalExprtreeLocalBounds(), and SCIPexprintEvalInt().
◆ SCIPexprtreePrint()
void SCIPexprtreePrint | ( | SCIP_EXPRTREE * | tree, |
SCIP_MESSAGEHDLR * | messagehdlr, | ||
FILE * | file, | ||
const char ** | varnames, | ||
const char ** | paramnames | ||
) |
prints an expression tree
- Parameters
-
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 8760 of file expr.c.
References NULL, SCIP_ExprTree::params, SCIP_ExprTree::root, and SCIPexprPrint().
Referenced by generateConvexConcaveUnderestimator(), isConvexLocal(), printFunction(), and SCIPexprtreePrintWithNames().
◆ SCIPexprtreeCreate()
SCIP_RETCODE SCIPexprtreeCreate | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPRTREE ** | tree, | ||
SCIP_EXPR * | root, | ||
int | nvars, | ||
int | nparams, | ||
SCIP_Real * | params | ||
) |
creates an expression tree
- Parameters
-
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 8775 of file expr.c.
References BMSallocBlockMemory, BMSallocBlockMemoryArray, BMSclearMemoryArray, BMSduplicateBlockMemoryArray, NULL, 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().
◆ SCIPexprtreeCopy()
SCIP_RETCODE SCIPexprtreeCopy | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPRTREE ** | targettree, | ||
SCIP_EXPRTREE * | sourcetree | ||
) |
copies an expression tree
- Parameters
-
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 8816 of file expr.c.
References BMSduplicateBlockMemory, BMSduplicateBlockMemoryArray, SCIP_ExprTree::nparams, NULL, 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().
◆ SCIPexprtreeFree()
SCIP_RETCODE SCIPexprtreeFree | ( | SCIP_EXPRTREE ** | tree | ) |
frees an expression tree
- Parameters
-
tree pointer to expression tree that is freed
Definition at line 8856 of file expr.c.
References BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, NULL, 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().
◆ SCIPexprtreeSetParams()
SCIP_RETCODE SCIPexprtreeSetParams | ( | SCIP_EXPRTREE * | tree, |
int | nparams, | ||
SCIP_Real * | paramvals | ||
) |
sets number and values of all parameters in expression tree
- Parameters
-
tree expression tree nparams number of parameters paramvals values of parameters, can be NULL if nparams == 0
Definition at line 8880 of file expr.c.
References SCIP_ExprTree::blkmem, BMScopyMemoryArray, BMSduplicateBlockMemoryArray, BMSfreeBlockMemoryArrayNull, BMSreallocBlockMemoryArray, SCIP_ExprTree::nparams, NULL, SCIP_ExprTree::params, SCIP_ALLOC, and SCIP_OKAY.
Referenced by generateConvexConcaveUnderestimator(), initSepaData(), and SCIPnlrowChgExprtreeParams().
◆ SCIPexprtreeGetVarsUsage()
void SCIPexprtreeGetVarsUsage | ( | SCIP_EXPRTREE * | tree, |
int * | varsusage | ||
) |
gives the number of usages for each variable in the expression tree
- Parameters
-
tree expression tree varsusage array where to store for each variable how often it is used in the tree
Definition at line 8911 of file expr.c.
References BMSclearMemoryArray, NULL, SCIP_ExprTree::nvars, SCIP_ExprTree::root, and SCIPexprGetVarsUsage().
◆ SCIPexprtreeSimplify()
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.
- Parameters
-
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 8930 of file expr.c.
References SCIP_ExprTree::blkmem, BMSallocMemoryArray, BMSfreeMemoryArray, EPSZ, NULL, SCIP_ExprTree::nvars, SCIP_ExprTree::root, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPexprSimplify(), SCIPexprtreeEval(), SCIPexprtreeFreeInterpreterData(), SCIPexprtreeGetNVars(), SCIPrandomCreate(), SCIPrandomFree(), SCIPrandomGetReal(), and SCIPrelDiff().
◆ SCIPexprtreeAddExpr()
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 (or a copy of it) as children. If no root existed yet, then the root is set to the given expression (or a copy of it).
- Parameters
-
tree expression tree expr expression to add to tree copyexpr whether expression should be copied
Definition at line 8985 of file expr.c.
References SCIP_ExprTree::blkmem, NULL, SCIP_ExprTree::root, SCIP_CALL, SCIP_EXPR_PLUS, SCIP_OKAY, SCIPexprCopyDeep(), SCIPexprCreate(), and SCIPexprtreeFreeInterpreterData().
Referenced by SCIPexprgraphGetSumTrees().
◆ SCIPexprtreeCheckCurvature()
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
- Parameters
-
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 9014 of file expr.c.
References NULL, SCIP_ExprTree::params, SCIP_ExprTree::root, SCIP_CALL, SCIP_EXPRCURV_LINEAR, SCIP_OKAY, SCIPexprCheckCurvature(), and SCIPintervalSet().
Referenced by checkCurvature().
◆ SCIPexprtreeSubstituteVars()
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.
- Parameters
-
tree expression tree substexprs array of substitute expressions; single entries can be NULL
Definition at line 9049 of file expr.c.
References SCIP_ExprTree::blkmem, SCIP_Expr::data, NULL, 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().
◆ quadelemsQuickSort()
|
static |
quicksort an array of quadratic elements; pivot is the medial element (taken from scip/sorttpl.c)
- Parameters
-
elems array to be sorted start starting index end ending index
Definition at line 9105 of file expr.c.
References h, QUADELEMS_ISBETTER, and QUADELEMS_SWAP.
Referenced by SCIPquadelemSort().
◆ SCIPquadelemSort()
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.
- Parameters
-
quadelems array of quadratic elements nquadelems number of quadratic elements
Definition at line 9215 of file expr.c.
References quadelemsQuickSort().
Referenced by createConstraint(), exprgraphFindParentByOperator(), nlrowSortQuadElem(), quadraticdataSort(), SCIPnlpiOracleChgQuadCoefs(), and SCIPnlpiOracleDelVarSet().
◆ SCIPquadelemSortedFind()
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.
- Parameters
-
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 9240 of file expr.c.
References FALSE, NULL, and TRUE.
Referenced by nlrowSearchQuadElem(), and SCIPnlpiOracleChgQuadCoefs().
◆ SCIPquadelemSqueeze()
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.
- Parameters
-
quadelems array of quadratic elements nquadelems number of quadratic elements nquadelemsnew pointer to store new (reduced) number of quadratic elements
Definition at line 9292 of file expr.c.
References SCIP_QuadElement::coef, NULL, and QUADELEMS_ISBETTER.
Referenced by createConstraint(), and SCIPnlpiOracleChgQuadCoefs().
◆ exprgraphNodeAddParent()
|
static |
adds a parent to an expression graph node
- Parameters
-
blkmem block memory node expression graph node where to add a parent parent parent node
Definition at line 9348 of file expr.c.
References SCIP_ExprGraphNode::depth, ensureBlockMemoryArraySize, SCIP_ExprGraphNode::nparents, NULL, SCIP_ExprGraphNode::parents, SCIP_ExprGraphNode::parentssize, SCIP_ExprGraphNode::parentssorted, SCIP_ExprGraphNode::pos, and SCIP_OKAY.
Referenced by exprgraphNodeAddChildren(), exprgraphNodeReplaceChild(), SCIPexprgraphAddNode(), and SCIPexprgraphReplaceVarByLinearSum().
◆ exprgraphNodeSortParents()
|
static |
ensures that array of parents in a node is sorted
- Parameters
-
node expression graph node
Definition at line 9377 of file expr.c.
References SCIP_ExprGraphNode::nparents, NULL, SCIP_ExprGraphNode::parents, SCIP_ExprGraphNode::parentssorted, SCIPsortPtr(), and TRUE.
Referenced by exprgraphNodeIsParent(), and exprgraphNodeRemoveParent().
◆ exprgraphNodeRemoveParent()
|
static |
removes a parent from an expression graph node
If the node is not used and has no other parents, then it is freed.
- Parameters
-
exprgraph expression graph node expression graph node where to remove a parent, *node will be set to NULL parent parent node to remove
Definition at line 9403 of file expr.c.
References SCIP_ExprGraphNode::depth, exprgraphNodeSortParents(), SCIP_ExprGraphNode::nparents, NULL, SCIP_ExprGraphNode::nuses, SCIP_ExprGraphNode::pos, SCIP_CALL, SCIP_OKAY, SCIPexprgraphCaptureNode(), SCIPexprgraphReleaseNode(), and SCIPsortedvecFindPtr().
Referenced by exprgraphNodeRemovePolynomialDuplicateChildren(), exprgraphNodeReplaceChild(), exprgraphNodeSimplify(), SCIPexprgraphNodeSplitOffLinear(), and SCIPexprgraphReleaseNode().
◆ exprgraphNodeIsParent()
|
static |
checks if a node is parent of a node
- Parameters
-
node expression graph node parent parent to look for
Definition at line 9463 of file expr.c.
References SCIP_ExprGraphNode::depth, exprgraphNodeSortParents(), FALSE, SCIP_ExprGraphNode::nparents, NULL, SCIP_ExprGraphNode::parents, and SCIPsortedvecFindPtr().
Referenced by exprgraphFindParentByOperator(), and exprgraphNodeRemovePolynomialDuplicateChildren().
◆ exprgraphNodeAddChildren()
|
static |
adds expression graph nodes to the array of children of a sum, product, linear, quadratic, or polynomial expression
For a sum or product expression, this corresponds to add additional summands and factors, resp. For a linear expression, this corresponds to add each expression with coefficient 1.0. For a quadratic or polynomial expression, only the children array may be enlarged, the expression itself remains the same.
It is assumed that node and all exprs are in the expression graph already. It is assumed that all expressions that are added have lower depth than node.
- Parameters
-
blkmem block memory node expression graph node nexprs number of children to add exprs children nodes to add childmap array where to store mapping of indices from exprs to children array in node, or NULL if not of interest
Definition at line 9494 of file expr.c.
References BMSclearMemoryArray, BMSreallocBlockMemoryArray, SCIP_ExprGraphNode::children, SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::depth, exprgraphNodeAddParent(), FALSE, SCIP_ExprData_Quadratic::lincoefs, SCIP_ExprGraphNode::nchildren, NULL, SCIP_ExprGraphNode::op, SCIP_ExprGraphNode::pos, SCIP_ALLOC, SCIP_Bool, SCIP_CALL, SCIP_EXPR_LINEAR, SCIP_EXPR_POLYNOMIAL, SCIP_EXPR_PRODUCT, SCIP_EXPR_QUADRATIC, SCIP_EXPR_SUM, SCIP_OKAY, SCIP_Real, SCIP_ExprGraphNode::simplified, and TRUE.
Referenced by exprgraphNodeSimplify().
◆ exprgraphNodeReplaceChild()
|
static |
replaces a child node by another node
Assumes that both nodes represent the same expression. If this node was the last parent of oldchild and oldchild is not in use, then it is freed. newchild must have deeper depth than node.
- Parameters
-
exprgraph expression graph node pointer to expression graph node oldchild child node that should be replaced, it may be freed newchild node that should take position of oldchild
Definition at line 9595 of file expr.c.
References SCIP_ExprGraph::blkmem, exprgraphNodeAddParent(), exprgraphNodeRemoveParent(), FALSE, SCIP_ExprGraph::lastreplacechildpos, NULL, SCIP_CALL, SCIP_OKAY, and SCIPdebugMessage.
Referenced by SCIPexprgraphMoveNodeParents(), and SCIPexprgraphSimplify().
◆ SCIP_DECL_SORTPTRCOMP() [3/3]
|
static |
comparison of SCIP_EXPRGRAPHNODE's that are of type SCIP_EXPR_CONST
A node is larger than another node, if their corresponding constants are related that way.
Definition at line 9652 of file expr.c.
References NULL, and SCIP_EXPR_CONST.
◆ exprgraphSortConstNodes()
|
static |
sort array of nodes that holds constants
- Parameters
-
exprgraph expression graph
Definition at line 9671 of file expr.c.
References SCIP_ExprGraph::constnodes, SCIP_ExprGraph::constssorted, SCIP_ExprGraph::nconsts, NULL, SCIPsortPtr(), and TRUE.
Referenced by exprgraphFindConstNodePos(), and SCIPexprgraphFindConstNode().
◆ exprgraphFindConstNodePos()
|
static |
finds position of expression graph node corresponding to a constant in constnodes array
- Parameters
-
exprgraph expression graph node node to search for pos buffer to store position of node, if found
Definition at line 9687 of file expr.c.
References SCIP_ExprGraph::constnodes, SCIP_ExprGraph::constssorted, SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::depth, exprgraphSortConstNodes(), FALSE, SCIP_ExprGraph::nconsts, NULL, SCIP_ExprGraphNode::op, SCIP_ExprGraphNode::pos, and SCIP_EXPR_CONST.
Referenced by SCIPexprgraphReleaseNode().
◆ exprgraphCreateNode()
|
static |
creates an expression graph node
- Parameters
-
blkmem block memory node buffer to store expression graph node op operator type of expression opdata operator data of expression
Definition at line 9742 of file expr.c.
References BMSallocBlockMemory, BMSclearMemory, NULL, SCIP_ALLOC, SCIP_EXPR_CONST, SCIP_EXPR_PARAM, SCIP_EXPR_VARIDX, SCIP_EXPRBOUNDSTATUS_VALID, SCIP_EXPRCURV_LINEAR, SCIP_EXPRCURV_UNKNOWN, SCIP_INVALID, SCIP_OKAY, SCIP_REAL_MAX, SCIPintervalSetEntire(), and TRUE.
Referenced by exprgraphAddExpr(), SCIPexprgraphAddConst(), SCIPexprgraphAddExprtreeSum(), SCIPexprgraphAddVars(), SCIPexprgraphCreateNode(), SCIPexprgraphCreateNodeLinear(), SCIPexprgraphCreateNodePolynomial(), SCIPexprgraphCreateNodeQuadratic(), SCIPexprgraphCreateNodeUser(), and SCIPexprgraphNodeSplitOffLinear().
◆ exprgraphPrintNodeExpression()
|
static |
prints the expression corresponding to a node (not recursively)
< gaussian error function (1 operand)
< imaginary part of gaussian error function (1 operand)
- Parameters
-
node node of expression graph messagehdlr message handler file file to print to, or NULL for stdout varnames variable names, or NULL for generic names printchildrenbounds whether to print bounds of children
Definition at line 9786 of file expr.c.
References SCIP_ExprGraphNode::bounds, 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_ExprData_Monomial::exponents, SCIP_QuadElement::idx1, SCIP_QuadElement::idx2, SCIP_Interval::inf, SCIP_ExprData_Quadratic::lincoefs, SCIP_ExprData_Polynomial::monomials, SCIP_ExprGraphNode::nchildren, SCIP_ExprData_Monomial::nfactors, SCIP_ExprData_Polynomial::nmonomials, SCIP_ExprData_Quadratic::nquadelems, NULL, SCIP_ExprGraphNode::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_VARIDX, SCIP_Real, SCIPABORT, SCIPexpropGetName(), SCIPmessageFPrintInfo(), and SCIP_Interval::sup.
Referenced by exprgraphNodeSimplify(), exprgraphPrintNodeDot(), and SCIPexprgraphPrintNode().
◆ exprgraphPrintNodeDot()
|
static |
prints a node of an expression graph
- Parameters
-
exprgraph expression graph node node of 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 10042 of file expr.c.
References SCIP_ExprGraphNode::bounds, SCIP_ExprGraphNode::boundstatus, SCIP_ExprGraphNode::children, SCIP_ExprGraphNode::depth, SCIP_ExprGraphNode::enabled, exprgraphPrintNodeExpression(), FALSE, SCIP_Interval::inf, SCIP_ExprGraphNode::nchildren, NULL, SCIP_ExprGraphNode::op, SCIP_ExprGraphNode::pos, SCIP_EXPR_LAST, SCIP_EXPRBOUNDSTATUS_CHILDRELAXED, SCIP_EXPRBOUNDSTATUS_CHILDTIGHTENED, SCIP_EXPRBOUNDSTATUS_TIGHTENEDBYPARENT, SCIP_Real, SCIPmessageFPrintInfo(), and SCIP_Interval::sup.
Referenced by SCIPexprgraphPrintDot().
◆ exprgraphNodeEval()
|
static |
evaluate node of expression graph w.r.t. values stored in children
- Parameters
-
node expression graph node varvals values for variables
Definition at line 10084 of file expr.c.
References BMSallocMemoryArray, BMSfreeMemoryArray, SCIP_ExprGraphNode::children, SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::nchildren, NULL, SCIP_ExprGraphNode::op, SCIP_ALLOC, SCIP_CALL, SCIP_EXPRESSION_MAXCHILDEST, SCIP_INVALID, SCIP_OKAY, SCIP_Real, and SCIP_ExprGraphNode::value.
Referenced by exprgraphNodeEvalWithChildren(), SCIPexprgraphAddNode(), SCIPexprgraphEval(), and SCIPexprgraphSimplify().
◆ exprgraphNodeEvalWithChildren()
|
static |
evaluates node including subtree
- Parameters
-
node expression graph node varvals values for variables
Definition at line 10128 of file expr.c.
References SCIP_ExprGraphNode::children, exprgraphNodeEval(), SCIP_ExprGraphNode::nchildren, NULL, SCIP_CALL, and SCIP_OKAY.
Referenced by exprgraphNodeSimplify().
◆ exprgraphNodeUpdateBounds()
|
static |
updates bounds of a node if a children has changed its bounds
- Parameters
-
node node of expression graph infinity value for infinity in interval arithmetics minstrength minimal required relative bound strengthening in a node to trigger a bound recalculation in parent nodes parenttightenisinvalid whether to consider bounds that have been tightened by parents as invalid
Definition at line 10149 of file expr.c.
References BMSallocMemoryArray, BMSfreeMemoryArray, SCIP_ExprGraphNode::bounds, SCIP_ExprGraphNode::boundstatus, SCIP_ExprGraphNode::children, SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::depth, SCIP_ExprGraphNode::enabled, SCIP_Interval::inf, isLbBetter(), isUbBetter(), SCIP_ExprGraphNode::nchildren, SCIP_ExprGraphNode::nparents, NULL, SCIP_ExprGraphNode::op, SCIP_ExprGraphNode::parents, SCIP_ExprGraphNode::pos, SCIP_ALLOC, SCIP_CALL, SCIP_EXPR_PARAM, SCIP_EXPR_VARIDX, SCIP_EXPRBOUNDSTATUS_CHILDRELAXED, SCIP_EXPRBOUNDSTATUS_CHILDTIGHTENED, SCIP_EXPRBOUNDSTATUS_TIGHTENEDBYPARENT, SCIP_EXPRBOUNDSTATUS_VALID, SCIP_EXPRESSION_MAXCHILDEST, SCIP_OKAY, SCIPdebugMessage, SCIPexpropGetName(), SCIPintervalIntersect(), SCIPintervalIsEmpty(), SCIPintervalSet(), and SCIP_Interval::sup.
Referenced by SCIPexprgraphPropagateVarBounds().
◆ exprgraphNodePropagateBounds()
|
static |
propagate bounds of a node into children by reverting the nodes expression
- Parameters
-
exprgraph expression graph node node in expression graph with no parents 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 10243 of file expr.c.
References a, b, SCIP_ExprGraph::blkmem, BMSallocBlockMemoryArray, BMSfreeBlockMemoryArray, SCIP_ExprGraphNode::bounds, SCIP_ExprGraphNode::boundstatus, 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_ExprGraphNode::enabled, SCIP_ExprData_Monomial::exponents, SCIP_QuadElement::idx1, SCIP_QuadElement::idx2, SCIP_Interval::inf, SCIP_ExprData_Quadratic::lincoefs, SCIP_ExprData_Polynomial::monomials, SCIP_ExprGraphNode::nchildren, SCIP_ExprData_Monomial::nfactors, SCIP_ExprData_Polynomial::nmonomials, SCIP_ExprData_Quadratic::nquadelems, NULL, SCIP_ExprGraphNode::op, SCIP_ExprGraphNode::pos, SCIP_ExprData_Quadratic::quadelems, SCIP_ALLOC_ABORT, SCIP_CALL_ABORT, 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_EXPRBOUNDSTATUS_CHILDRELAXED, SCIP_EXPRBOUNDSTATUS_TIGHTENEDBYPARENT, SCIP_EXPRBOUNDSTATUS_TIGHTENEDBYPARENTFORCE, SCIP_EXPRBOUNDSTATUS_TIGHTENEDBYPARENTRECENT, SCIP_Real, SCIPABORT, SCIPdebugMessage, SCIPdebugPrintf, SCIPexprgraphTightenNodeBounds(), SCIPintervalAdd(), SCIPintervalAddScalar(), SCIPintervalDiv(), SCIPintervalExp(), SCIPintervalGetRoundingMode(), SCIPintervalIsEmpty(), SCIPintervalIsEntire(), SCIPintervalLog(), SCIPintervalMul(), SCIPintervalMulScalar(), SCIPintervalNegateReal(), SCIPintervalPowerScalar(), SCIPintervalPowerScalarInverse(), SCIPintervalSet(), SCIPintervalSetBounds(), SCIPintervalSetEntire(), SCIPintervalSetRoundingMode(), SCIPintervalSetRoundingModeDownwards(), SCIPintervalSignPowerScalar(), SCIPintervalSolveBivariateQuadExpressionAllScalar(), SCIPintervalSolveUnivariateQuadExpression(), SCIPintervalSquare(), SCIPintervalSquareRoot(), SCIPintervalSub(), SCIPintervalSubScalar(), SCIP_Interval::sup, TRUE, and SCIP_ExprData_User::userdata.
Referenced by SCIPexprgraphPropagateNodeBounds().
◆ exprgraphNodeRemovePolynomialDuplicateChildren()
|
static |
removes duplicate children in a polynomial expression node
Leaves NULL's in children array.
- Parameters
-
exprgraph expression graph node expression graph node
Definition at line 11352 of file expr.c.
References SCIP_ExprGraph::blkmem, BMSallocBlockMemoryArray, BMSfreeBlockMemoryArray, SCIP_ExprGraphNode::children, SCIP_ExprGraphNode::data, exprgraphNodeIsParent(), exprgraphNodeRemoveParent(), FALSE, SCIP_ExprGraphNode::nchildren, NULL, SCIP_ExprGraphNode::op, polynomialdataApplyChildmap(), SCIP_ALLOC, SCIP_Bool, SCIP_CALL, SCIP_EXPR_POLYNOMIAL, SCIP_OKAY, and TRUE.
Referenced by exprgraphNodeSimplify().
◆ exprgraphNodeRemovePolynomialNullChildren()
|
static |
eliminates NULL's in children array and shrinks it to actual size
- Parameters
-
blkmem block memory node expression graph node
Definition at line 11410 of file expr.c.
References BMSallocBlockMemoryArray, BMSfreeBlockMemoryArray, BMSreallocBlockMemoryArray, SCIP_ExprGraphNode::children, SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::nchildren, NULL, SCIP_ExprGraphNode::op, polynomialdataApplyChildmap(), SCIP_ALLOC, SCIP_EXPR_POLYNOMIAL, and SCIP_OKAY.
Referenced by exprgraphNodeSimplify(), and SCIPexprgraphNodeSplitOffLinear().
◆ exprgraphNodeSimplify()
|
static |
aims at simplifying a node in an expression graph, assuming all children have been simplified
Converts node into polynomial, if possible and not constant.
- Parameters
-
exprgraph expression graph node expression graph node 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 flag to set if the node has been changed
Definition at line 11479 of file expr.c.
References SCIP_ExprGraph::blkmem, BMSallocBlockMemoryArray, BMSclearMemoryArray, BMSfreeBlockMemoryArray, BMSfreeBlockMemoryArrayNull, SCIP_ExprData_Monomial::childidxs, SCIP_ExprData_Monomial::coef, SCIP_ExprData_Polynomial::constant, SCIP_ExprGraphNode::depth, ensureBlockMemoryArraySize, EPSISINT, SCIP_ExprData_Monomial::exponents, exprConvertToPolynomial(), exprgraphNodeAddChildren(), exprgraphNodeEvalWithChildren(), exprgraphNodeRemoveParent(), exprgraphNodeRemovePolynomialDuplicateChildren(), exprgraphNodeRemovePolynomialNullChildren(), exprgraphPrintNodeExpression(), FALSE, SCIP_ExprData_Polynomial::monomials, SCIP_ExprData_Monomial::nfactors, SCIP_ExprData_Polynomial::nmonomials, NULL, polynomialdataExpandMonomialFactor(), polynomialdataFree(), polynomialdataMergeMonomials(), pow(), SCIP_ALLOC, SCIP_Bool, SCIP_CALL, SCIP_EXPR_CONST, SCIP_EXPR_POLYNOMIAL, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIPdebug, SCIPdebugMessage, SCIPdebugPrintf, SCIPexprFindMonomialFactor(), SCIPexprMergeMonomialFactors(), SCIPmessagePrintInfo(), SCIPmessagePrintWarning(), SCIP_ExprData_Polynomial::sorted, SCIP_ExprData_Monomial::sorted, and TRUE.
Referenced by SCIPexprgraphSimplify().
◆ exprgraphNodeCreateExpr()
|
static |
creates an expression from a given node in an expression graph
Assembles mapping of variables from graph to tree.
- Parameters
-
exprgraph expression graph node expression graph node which expression should be created expr buffer to store pointer to created expression nexprvars current number of variables in expression varidx current mapping of variable indices from graph to expression
Definition at line 11809 of file expr.c.
References SCIP_ExprGraph::blkmem, BMSallocBlockMemoryArray, BMSfreeBlockMemoryArrayNull, SCIP_ExprGraphNode::children, SCIP_ExprData_Quadratic::constant, SCIP_ExprData_Polynomial::constant, SCIP_ExprGraphNode::data, SCIP_ExprData_User::evalcapability, SCIP_ExprData_Quadratic::lincoefs, SCIP_ExprData_Polynomial::monomials, SCIP_ExprGraphNode::nchildren, SCIP_ExprData_Polynomial::nmonomials, SCIP_ExprData_Quadratic::nquadelems, NULL, SCIP_ExprGraph::nvars, SCIP_ExprGraphNode::op, SCIP_ExprData_Quadratic::quadelems, SCIP_ALLOC, 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_OKAY, SCIP_Real, SCIPerrorMessage, SCIPexprCreate(), SCIPexprCreateLinear(), SCIPexprCreatePolynomial(), SCIPexprCreateQuadratic(), SCIPexprCreateUser(), TRUE, and SCIP_ExprData_User::userdata.
Referenced by SCIPexprgraphGetSeparableTrees(), SCIPexprgraphGetSumTrees(), and SCIPexprgraphGetTree().
◆ exprgraphNodeGetVarsUsage()
|
static |
counts how often expression graph variables are used in a subtree of the expression graph
- Note
- The function does not clear the array first, but only increases already existing counts.
- Parameters
-
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 11997 of file expr.c.
References SCIP_ExprGraphNode::children, SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::nchildren, NULL, SCIP_ExprGraphNode::op, and SCIP_EXPR_VARIDX.
Referenced by SCIPexprgraphGetSubtreeVarsUsage(), and SCIPexprgraphNodeSplitOffLinear().
◆ exprgraphNodeCheckSeparabilityComponent()
|
static |
checks whether a node can be put into a component when checking block separability of an expression
If a variable used by node is already in another component, components are merged and component number is updated.
- Parameters
-
node node to which we assign a component compnr component number to assign, may be reduced if variables overlap nchildcomps number of entries for which childcomps have been set already childcomps component numbers of children nvars number of variables varcomps component numbers of variables
Definition at line 12022 of file expr.c.
References SCIP_ExprGraphNode::children, SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::nchildren, NULL, SCIP_ExprGraphNode::op, and SCIP_EXPR_VARIDX.
Referenced by SCIPexprgraphGetSeparableTrees().
◆ exprgraphEnsureDepth()
|
static |
assert that expression graph has at least a given depth
- Parameters
-
exprgraph buffer to store pointer to expression graph mindepth minimal depth that should be ensured
Definition at line 12083 of file expr.c.
References SCIP_ExprGraph::blkmem, BMSclearMemoryArray, SCIP_ExprGraph::depth, ensureBlockMemoryArraySize3, SCIP_ExprGraph::nnodes, SCIP_ExprGraph::nodes, SCIP_ExprGraph::nodessize, NULL, and SCIP_OKAY.
Referenced by exprgraphMoveNode(), SCIPexprgraphAddNode(), and SCIPexprgraphCreate().
◆ exprgraphRemoveVar()
|
static |
remove a variable from the variables arrays, assuming that its node will be removed or converted next
- Parameters
-
exprgraph expression graph varidx variable index
Definition at line 12110 of file expr.c.
References SCIP_ExprGraphNode::data, NULL, SCIP_ExprGraph::nvars, SCIP_CALL, SCIP_OKAY, SCIPhashmapRemove(), SCIPhashmapSetImageInt(), SCIP_ExprGraph::userdata, SCIP_ExprGraph::varbounds, SCIP_ExprGraph::varidxs, SCIP_ExprGraph::varnodes, and SCIP_ExprGraph::vars.
Referenced by SCIPexprgraphReleaseNode(), and SCIPexprgraphReplaceVarByLinearSum().
◆ exprgraphMoveNode()
|
static |
moves a node in an expression graph to a different depth
New depth must be larger than children depth. Moves parent nodes to higher depth, if needed. Variable nodes cannot be moved.
- Parameters
-
exprgraph expression graph node node that shall be moved newdepth new depth to which to move node
Definition at line 12163 of file expr.c.
References SCIP_ExprGraph::blkmem, SCIP_ExprGraphNode::children, SCIP_ExprGraph::constnodes, SCIP_ExprGraph::constssize, SCIP_ExprGraph::constssorted, SCIP_ExprGraphNode::depth, SCIP_ExprGraph::depth, ensureBlockMemoryArraySize, exprgraphEnsureDepth(), FALSE, SCIP_ExprGraphNode::nchildren, SCIP_ExprGraph::nconsts, nnodes, SCIP_ExprGraph::nnodes, SCIP_ExprGraph::nodes, SCIP_ExprGraph::nodessize, NULL, SCIP_ExprGraphNode::parentssorted, SCIP_ExprGraphNode::pos, SCIP_CALL, SCIP_ERROR, SCIP_EXPR_CONST, SCIP_EXPR_VARIDX, SCIP_EXPRCURV_LINEAR, SCIP_OKAY, SCIPdebugMessage, and SCIPerrorMessage.
Referenced by SCIPexprgraphMoveNodeParents(), SCIPexprgraphReplaceVarByLinearSum(), and SCIPexprgraphSimplify().
◆ exprgraphFindParentByOperator()
|
static |
given a list of children, tries to find a common parent that represents a given operator with the same given data
- Parameters
-
exprgraph expression graph nchildren number of children children children which parents to inspect op operator opdata operator data exprchildren children of expression to consider when modifying (reordering) operator data, or NULL parent buffer to store parent node if any is found, or NULL if none found
Definition at line 12259 of file expr.c.
References SCIP_ExprGraph::blkmem, BMSallocBlockMemoryArray, BMSfreeBlockMemoryArray, SCIP_QuadElement::coef, SCIP_ExprData_Quadratic::constant, SCIP_ExprData_Polynomial::constant, SCIP_ExprGraphNode::data, exprgraphNodeIsParent(), SCIP_QuadElement::idx1, SCIP_QuadElement::idx2, SCIP_ExprData_Quadratic::lincoefs, SCIP_ExprData_Polynomial::monomials, SCIP_ExprData_Polynomial::nmonomials, SCIP_ExprGraphNode::nparents, SCIP_ExprData_Quadratic::nquadelems, NULL, SCIP_ExprGraphNode::parents, polynomialdataApplyChildmap(), polynomialdataSortMonomials(), SCIP_ExprData_Quadratic::quadelems, SCIP_ALLOC, 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_OKAY, SCIP_Real, SCIPdebugMessage, SCIPerrorMessage, SCIPexprAreMonomialsEqual(), SCIPquadelemSort(), SCIPsortPtr(), SCIPsortPtrInt(), SCIPsortPtrPtrInt(), SCIPsortPtrPtrReal(), SCIPsortPtrPtrRealInt(), SCIPsortPtrReal(), SCIPsortPtrRealInt(), SCIP_ExprData_Quadratic::sorted, and TRUE.
Referenced by exprgraphAddExpr(), and SCIPexprgraphAddExprtreeSum().
◆ exprgraphAddExpr()
|
static |
adds an expression into an expression graph
Enables corresponding nodes.
- Parameters
-
exprgraph expression graph expr expression to add vars variables corresponding to VARIDX expressions params parameter values exprnode buffer to store expression graph node corresponding to root of this expression exprnodeisnew buffer to indicate whether the node in *exprnode has been newly created for this expression (otherwise, expression was already in graph)
Definition at line 12727 of file expr.c.
References SCIP_ExprGraph::blkmem, BMSallocBlockMemoryArray, BMSfreeBlockMemoryArray, SCIP_Expr::children, SCIP_Expr::data, exprgraphCreateNode(), exprgraphFindParentByOperator(), FALSE, SCIP_Expr::nchildren, NULL, SCIP_ExprGraph::nvars, SCIP_Expr::op, SCIP_ALLOC, SCIP_Bool, SCIP_CALL, SCIP_EXPR_CONST, SCIP_EXPR_PARAM, SCIP_EXPR_VARIDX, SCIP_OKAY, SCIPdebugMessage, SCIPexprgraphAddConst(), SCIPexprgraphAddNode(), SCIPexprgraphAddVars(), TRUE, and SCIP_ExprGraph::vars.
Referenced by SCIPexprgraphAddExprtreeSum().
◆ exprgraphUpdateVarNodeBounds()
|
static |
sets bounds in variable nodes to those stored in exprgraph's varbounds array
- Parameters
-
exprgraph expression graph clearreverseprop flag to set if we had reset bound tightenings from reverse propagation boundchanged buffer to store whether a variables bound has changes, compared to those stored in nodes
Definition at line 12859 of file expr.c.
References SCIP_ExprGraphNode::bounds, SCIP_ExprGraphNode::boundstatus, FALSE, SCIP_Interval::inf, isLbBetter(), isUbBetter(), MAX, SCIP_ExprGraphNode::nparents, NULL, SCIP_ExprGraph::nvars, SCIP_ExprGraphNode::parents, SCIP_EXPRBOUNDSTATUS_CHILDRELAXED, SCIP_EXPRBOUNDSTATUS_CHILDTIGHTENED, SCIP_EXPRBOUNDSTATUS_VALID, SCIP_Real, SCIPdebugMessage, SCIP_Interval::sup, TRUE, SCIP_ExprGraph::varbounds, and SCIP_ExprGraph::varnodes.
Referenced by SCIPexprgraphCheckCurvature(), and SCIPexprgraphPropagateVarBounds().
◆ SCIPexprgraphCaptureNode()
void SCIPexprgraphCaptureNode | ( | SCIP_EXPRGRAPHNODE * | node | ) |
captures node, i.e., increases number of uses
- Parameters
-
node expression graph node to capture
Definition at line 12972 of file expr.c.
References SCIP_ExprGraphNode::nuses, and SCIPdebugMessage.
Referenced by exprgraphNodeRemoveParent(), reformReplaceNode(), SCIPcreateConsNonlinear2(), SCIPexprgraphAddExprtreeSum(), and SCIPexprgraphNodeSplitOffLinear().
◆ SCIPexprgraphIsNodeEnabled()
SCIP_Bool SCIPexprgraphIsNodeEnabled | ( | SCIP_EXPRGRAPHNODE * | node | ) |
returns whether a node is currently enabled
- Parameters
-
node expression graph node to enable
Definition at line 12984 of file expr.c.
References SCIP_ExprGraphNode::enabled, and NULL.
Referenced by reformulate().
◆ SCIPexprgraphGetNodeNChildren()
int SCIPexprgraphGetNodeNChildren | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gets number of children of a node in an expression graph
- Parameters
-
node expression graph node
Definition at line 12994 of file expr.c.
References SCIP_ExprGraphNode::nchildren, and NULL.
Referenced by findAggregation(), reformEnsureChildrenMinCurvature(), reformMonomial(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), SCIP_DECL_NONLINCONSUPGD(), and splitOffLinearPart().
◆ SCIPexprgraphGetNodeChildren()
SCIP_EXPRGRAPHNODE** SCIPexprgraphGetNodeChildren | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gets children of a node in an expression graph
- Parameters
-
node expression graph node
Definition at line 13004 of file expr.c.
References SCIP_ExprGraphNode::children, and NULL.
Referenced by findAggregation(), reformEnsureChildrenMinCurvature(), reformMonomial(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
◆ SCIPexprgraphGetNodeNParents()
int SCIPexprgraphGetNodeNParents | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gets number of parents of a node in an expression graph
- Parameters
-
node expression graph node
Definition at line 13014 of file expr.c.
References SCIP_ExprGraphNode::nparents, and NULL.
Referenced by reformMonomial(), reformReplaceNode(), and reformulate().
◆ SCIPexprgraphGetNodeParents()
SCIP_EXPRGRAPHNODE** SCIPexprgraphGetNodeParents | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gets parents of a node in an expression graph
- Parameters
-
node expression graph node
Definition at line 13024 of file expr.c.
References NULL, and SCIP_ExprGraphNode::parents.
Referenced by reformMonomial().
◆ SCIPexprgraphGetNodeDepth()
int SCIPexprgraphGetNodeDepth | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gets depth of node in expression graph
- Parameters
-
node expression graph node
Definition at line 13034 of file expr.c.
References SCIP_ExprGraphNode::depth, and NULL.
Referenced by reformEnsureChildrenMinCurvature(), reformNode2Var(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
◆ SCIPexprgraphGetNodePosition()
int SCIPexprgraphGetNodePosition | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gets position of node in expression graph at its depth level
- Parameters
-
node expression graph node
Definition at line 13044 of file expr.c.
References NULL, and SCIP_ExprGraphNode::pos.
Referenced by reformEnsureChildrenMinCurvature(), reformNode2Var(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
◆ SCIPexprgraphGetNodeOperator()
SCIP_EXPROP SCIPexprgraphGetNodeOperator | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gets operator of a node in an expression graph
- Parameters
-
node expression graph node
Definition at line 13054 of file expr.c.
References NULL, and SCIP_ExprGraphNode::op.
Referenced by findAggregation(), reformEnsureChildrenMinCurvature(), reformMonomial(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), SCIP_DECL_NONLINCONSUPGD(), and SCIPexprgraphNodePolynomialAddMonomials().
◆ SCIPexprgraphGetNodeOperatorIndex()
int SCIPexprgraphGetNodeOperatorIndex | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives index belonging to a SCIP_EXPR_VARIDX or SCIP_EXPR_PARAM operand
- Parameters
-
node expression graph node
Definition at line 13064 of file expr.c.
References SCIP_ExprGraphNode::data, NULL, SCIP_ExprGraphNode::op, SCIP_EXPR_PARAM, and SCIP_EXPR_VARIDX.
◆ SCIPexprgraphGetNodeOperatorReal()
SCIP_Real SCIPexprgraphGetNodeOperatorReal | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives real belonging to a SCIP_EXPR_CONST operand
- Parameters
-
node expression graph node
Definition at line 13075 of file expr.c.
References SCIP_ExprGraphNode::data, NULL, SCIP_ExprGraphNode::op, and SCIP_EXPR_CONST.
◆ SCIPexprgraphGetNodeVar()
void* SCIPexprgraphGetNodeVar | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_EXPRGRAPHNODE * | node | ||
) |
gives variable belonging to a SCIP_EXPR_VARIDX expression
- Parameters
-
exprgraph expression graph node expression graph node
Definition at line 13086 of file expr.c.
References SCIP_ExprGraphNode::data, NULL, SCIP_ExprGraph::nvars, SCIP_ExprGraphNode::op, SCIP_EXPR_VARIDX, and SCIP_ExprGraph::vars.
Referenced by findAggregation(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
◆ SCIPexprgraphGetNodeRealPowerExponent()
SCIP_Real SCIPexprgraphGetNodeRealPowerExponent | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives exponent belonging to a SCIP_EXPR_REALPOWER expression
- Parameters
-
node expression graph node
Definition at line 13101 of file expr.c.
References SCIP_ExprGraphNode::data, NULL, SCIP_ExprGraphNode::op, and SCIP_EXPR_REALPOWER.
Referenced by reformMonomial(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
◆ SCIPexprgraphGetNodeIntPowerExponent()
int SCIPexprgraphGetNodeIntPowerExponent | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives exponent belonging to a SCIP_EXPR_INTPOWER expression
- Parameters
-
node expression graph node
Definition at line 13112 of file expr.c.
References SCIP_ExprGraphNode::data, NULL, SCIP_ExprGraphNode::op, and SCIP_EXPR_INTPOWER.
Referenced by reformMonomial(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
◆ SCIPexprgraphGetNodeSignPowerExponent()
SCIP_Real SCIPexprgraphGetNodeSignPowerExponent | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives exponent belonging to a SCIP_EXPR_SIGNPOWER expression
- Parameters
-
node expression graph node
Definition at line 13123 of file expr.c.
References SCIP_ExprGraphNode::data, NULL, SCIP_ExprGraphNode::op, and SCIP_EXPR_SIGNPOWER.
Referenced by reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
◆ SCIPexprgraphGetNodeLinearCoefs()
SCIP_Real* SCIPexprgraphGetNodeLinearCoefs | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives linear coefficients belonging to a SCIP_EXPR_LINEAR expression
- Parameters
-
node expression graph node
Definition at line 13134 of file expr.c.
References SCIP_ExprGraphNode::data, NULL, SCIP_ExprGraphNode::op, SCIP_EXPR_LINEAR, and SCIP_Real.
Referenced by SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
◆ SCIPexprgraphGetNodeLinearConstant()
SCIP_Real SCIPexprgraphGetNodeLinearConstant | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives constant belonging to a SCIP_EXPR_LINEAR expression
- Parameters
-
node expression graph node
Definition at line 13145 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_ExprGraphNode::nchildren, NULL, SCIP_ExprGraphNode::op, SCIP_EXPR_LINEAR, and SCIP_Real.
Referenced by SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
◆ SCIPexprgraphGetNodeQuadraticConstant()
SCIP_Real SCIPexprgraphGetNodeQuadraticConstant | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives constant belonging to a SCIP_EXPR_QUADRATIC expression
- Parameters
-
node expression graph node
Definition at line 13157 of file expr.c.
References SCIP_ExprGraphNode::data, NULL, SCIP_ExprGraphNode::op, and SCIP_EXPR_QUADRATIC.
Referenced by SCIP_DECL_NONLINCONSUPGD().
◆ SCIPexprgraphGetNodeQuadraticLinearCoefs()
SCIP_Real* SCIPexprgraphGetNodeQuadraticLinearCoefs | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives linear coefficients belonging to a SCIP_EXPR_QUADRATIC expression, or NULL if all coefficients are 0.0
- Parameters
-
node expression graph node
Definition at line 13169 of file expr.c.
References SCIP_ExprGraphNode::data, NULL, SCIP_ExprGraphNode::op, and SCIP_EXPR_QUADRATIC.
Referenced by SCIP_DECL_NONLINCONSUPGD().
◆ SCIPexprgraphGetNodeQuadraticQuadElements()
SCIP_QUADELEM* SCIPexprgraphGetNodeQuadraticQuadElements | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives quadratic elements belonging to a SCIP_EXPR_QUADRATIC expression
- Parameters
-
node expression graph node
Definition at line 13181 of file expr.c.
References SCIP_ExprGraphNode::data, NULL, SCIP_ExprGraphNode::op, and SCIP_EXPR_QUADRATIC.
Referenced by SCIP_DECL_NONLINCONSUPGD().
◆ SCIPexprgraphGetNodeQuadraticNQuadElements()
int SCIPexprgraphGetNodeQuadraticNQuadElements | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives number of quadratic elements belonging to a SCIP_EXPR_QUADRATIC expression
- Parameters
-
node expression graph node
Definition at line 13193 of file expr.c.
References SCIP_ExprGraphNode::data, NULL, SCIP_ExprGraphNode::op, and SCIP_EXPR_QUADRATIC.
Referenced by SCIP_DECL_NONLINCONSUPGD().
◆ SCIPexprgraphGetNodePolynomialMonomials()
SCIP_EXPRDATA_MONOMIAL** SCIPexprgraphGetNodePolynomialMonomials | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives the monomials belonging to a SCIP_EXPR_POLYNOMIAL expression
- Parameters
-
node expression graph node
Definition at line 13205 of file expr.c.
References SCIP_ExprGraphNode::data, NULL, SCIP_ExprGraphNode::op, and SCIP_EXPR_POLYNOMIAL.
Referenced by findAggregation(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
◆ SCIPexprgraphGetNodePolynomialNMonomials()
int SCIPexprgraphGetNodePolynomialNMonomials | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives the number of monomials belonging to a SCIP_EXPR_POLYNOMIAL expression
- Parameters
-
node expression graph node
Definition at line 13217 of file expr.c.
References SCIP_ExprGraphNode::data, NULL, SCIP_ExprGraphNode::op, and SCIP_EXPR_POLYNOMIAL.
Referenced by findAggregation(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
◆ SCIPexprgraphGetNodePolynomialConstant()
SCIP_Real SCIPexprgraphGetNodePolynomialConstant | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives the constant belonging to a SCIP_EXPR_POLYNOMIAL expression
- Parameters
-
node expression graph node
Definition at line 13229 of file expr.c.
References SCIP_ExprGraphNode::data, NULL, SCIP_ExprGraphNode::op, and SCIP_EXPR_POLYNOMIAL.
Referenced by findAggregation(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
◆ SCIPexprgraphGetNodePolynomialMonomialCurvature()
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
Assumes that curvature of children and bounds of children and node itself are valid.
- Parameters
-
node expression graph node monomialidx index of monomial infinity value for infinity in interval arithmetics curv buffer to store monomial curvature
Definition at line 13244 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, NULL, 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().
◆ SCIPexprgraphGetNodeUserData()
SCIP_USEREXPRDATA* SCIPexprgraphGetNodeUserData | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives the user data belonging to a SCIP_EXPR_USER expression
Definition at line 13324 of file expr.c.
References SCIP_ExprGraphNode::data, NULL, SCIP_ExprGraphNode::op, and SCIP_EXPR_USER.
◆ SCIPexprgraphHasNodeUserEstimator()
SCIP_Bool SCIPexprgraphHasNodeUserEstimator | ( | SCIP_EXPRGRAPHNODE * | node | ) |
indicates whether a user expression has the estimator callback defined
Definition at line 13336 of file expr.c.
References SCIP_ExprGraphNode::data, NULL, SCIP_ExprGraphNode::op, and SCIP_EXPR_USER.
◆ SCIPexprgraphGetNodeBounds()
SCIP_INTERVAL SCIPexprgraphGetNodeBounds | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gets bounds of a node in an expression graph
- Parameters
-
node expression graph node
Definition at line 13348 of file expr.c.
References SCIP_ExprGraphNode::bounds, and NULL.
Referenced by propagateBounds(), propagateBoundsCons(), propagateConstraintSides(), reformEnsureChildrenMinCurvature(), reformMonomial(), reformNode2Var(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
◆ SCIPexprgraphGetNodeVal()
SCIP_Real SCIPexprgraphGetNodeVal | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gets value of expression associated to node from last evaluation call
- Parameters
-
node expression graph node
Definition at line 13358 of file expr.c.
References NULL, and SCIP_ExprGraphNode::value.
Referenced by computeViolation(), reformMonomial(), reformNode2Var(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), SCIP_DECL_NONLINCONSUPGD(), and SCIPexprgraphSimplify().
◆ SCIPexprgraphGetNodeCurvature()
SCIP_EXPRCURV SCIPexprgraphGetNodeCurvature | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gets curvature of expression associated to node from last curvature check call
- Parameters
-
node expression graph node
Definition at line 13368 of file expr.c.
References SCIP_ExprGraphNode::curv, and NULL.
Referenced by reformEnsureChildrenMinCurvature(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), and SCIP_DECL_NONLINCONSUPGD().
◆ SCIPexprgraphCreateNode()
SCIP_RETCODE SCIPexprgraphCreateNode | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPRGRAPHNODE ** | node, | ||
SCIP_EXPROP | op, | ||
... | |||
) |
creates an expression graph node
- Parameters
-
blkmem block memory node buffer to store expression graph node op operator type of expression
Definition at line 13378 of file expr.c.
References exprgraphCreateNode(), NULL, 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().
◆ SCIPexprgraphCreateNodeLinear()
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
- Parameters
-
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 13461 of file expr.c.
References BMSallocBlockMemoryArray, BMScopyMemoryArray, exprgraphCreateNode(), NULL, SCIP_ALLOC, SCIP_CALL, SCIP_EXPR_LINEAR, SCIP_OKAY, and SCIP_Real.
Referenced by reformulate(), and SCIP_DECL_EXPRGRAPHNODEREFORM().
◆ SCIPexprgraphCreateNodeQuadratic()
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
- Parameters
-
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 13487 of file expr.c.
References exprgraphCreateNode(), NULL, quadraticdataCreate(), SCIP_CALL, SCIP_EXPR_QUADRATIC, and SCIP_OKAY.
Referenced by reformulate().
◆ SCIPexprgraphCreateNodePolynomial()
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
- Parameters
-
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 13513 of file expr.c.
References exprgraphCreateNode(), NULL, polynomialdataCreate(), SCIP_CALL, SCIP_EXPR_POLYNOMIAL, and SCIP_OKAY.
Referenced by reformulate().
◆ SCIPexprgraphNodePolynomialAddMonomials()
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
- Parameters
-
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 13538 of file expr.c.
References SCIP_ExprGraphNode::data, NULL, polynomialdataAddMonomials(), SCIP_CALL, SCIP_EXPR_POLYNOMIAL, SCIP_OKAY, and SCIPexprgraphGetNodeOperator().
◆ SCIPexprgraphCreateNodeUser()
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
- Parameters
-
blkmem block memory node buffer to store expression graph node data user data for expression, node assumes ownership evalcapability evaluation capability
Definition at line 13557 of file expr.c.
References BMSallocBlockMemory, eval(), SCIP_ExprData_User::evalcapability, exprgraphCreateNode(), NULL, polyscip::global::print(), SCIP_ALLOC, SCIP_CALL, SCIP_EXPR_USER, SCIP_EXPRINTCAPABILITY_FUNCVALUE, SCIP_EXPRINTCAPABILITY_INTFUNCVALUE, SCIP_OKAY, and SCIP_ExprData_User::userdata.
◆ SCIPexprgraphNodeSplitOffLinear()
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.
- Parameters
-
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 13611 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, NULL, 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().
◆ SCIPexprgraphMoveNodeParents()
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 assumed that targetnode represents the same expression as srcnode.
- Parameters
-
exprgraph expression graph srcnode node which parents to move targetnode node where to move parents to
Definition at line 14423 of file expr.c.
References SCIP_ExprGraphNode::depth, exprgraphMoveNode(), exprgraphNodeReplaceChild(), NULL, SCIP_CALL, and SCIP_OKAY.
Referenced by reformReplaceNode(), SCIPexprgraphReplaceVarByLinearSum(), and SCIPexprgraphSimplify().
◆ SCIPexprgraphReleaseNode()
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; similarly for constants.
- Parameters
-
exprgraph expression graph node expression graph node to release
Definition at line 14455 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, NULL, 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().
◆ SCIPexprgraphFreeNode()
void SCIPexprgraphFreeNode | ( | BMS_BLKMEM * | blkmem, |
SCIP_EXPRGRAPHNODE ** | node | ||
) |
frees a node of an expression graph
- Parameters
-
blkmem block memory node pointer to expression graph node that should be freed
Definition at line 14549 of file expr.c.
References BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, and NULL.
Referenced by SCIPexprgraphReleaseNode().
◆ SCIPexprgraphEnableNode()
void SCIPexprgraphEnableNode | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_EXPRGRAPHNODE * | node | ||
) |
enables a node and recursively all its children in an expression graph
- Parameters
-
exprgraph expression graph node expression graph node to enable
Definition at line 14574 of file expr.c.
References SCIP_ExprGraphNode::depth, SCIP_ExprGraphNode::enabled, SCIP_ExprGraph::needvarboundprop, NULL, SCIP_ExprGraphNode::pos, SCIP_REAL_MAX, SCIPdebugMessage, SCIPexprgraphEnableNode(), SCIPintervalSetEntire(), and TRUE.
Referenced by SCIP_DECL_CONSENABLE(), and SCIPexprgraphEnableNode().
◆ SCIPexprgraphDisableNode()
void SCIPexprgraphDisableNode | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_EXPRGRAPHNODE * | node | ||
) |
disables a node and recursively all children which have no enabled parents in an expression graph
- Parameters
-
exprgraph expression graph node expression graph node to enable
Definition at line 14601 of file expr.c.
References SCIP_ExprGraphNode::depth, SCIP_ExprGraphNode::enabled, FALSE, SCIP_ExprGraphNode::nparents, NULL, SCIP_ExprGraphNode::nuses, SCIP_ExprGraphNode::parents, SCIP_ExprGraphNode::pos, SCIPdebugMessage, SCIPexprgraphDisableNode(), and TRUE.
Referenced by presolveUpgrade(), SCIP_DECL_CONSDISABLE(), and SCIPexprgraphDisableNode().
◆ SCIPexprgraphHasNodeSibling()
SCIP_Bool SCIPexprgraphHasNodeSibling | ( | SCIP_EXPRGRAPHNODE * | node | ) |
returns whether the node has siblings in the expression graph
- Parameters
-
node expression graph node
Definition at line 14639 of file expr.c.
References FALSE, SCIP_ExprGraphNode::nchildren, SCIP_ExprGraphNode::nparents, NULL, SCIP_ExprGraphNode::parents, and TRUE.
Referenced by reformulate(), and SCIP_DECL_EXPRGRAPHNODEREFORM().
◆ SCIPexprgraphAreAllNodeChildrenVars()
SCIP_Bool SCIPexprgraphAreAllNodeChildrenVars | ( | SCIP_EXPRGRAPHNODE * | node | ) |
returns whether all children of an expression graph node are variable nodes
Returns TRUE for nodes without children.
- Parameters
-
node expression graph node
Definition at line 14658 of file expr.c.
References SCIP_ExprGraphNode::children, FALSE, SCIP_ExprGraphNode::nchildren, NULL, SCIP_ExprGraphNode::op, SCIP_EXPR_VARIDX, and TRUE.
Referenced by SCIP_DECL_NONLINCONSUPGD().
◆ SCIPexprgraphHasNodeNonlinearAncestor()
SCIP_Bool SCIPexprgraphHasNodeNonlinearAncestor | ( | SCIP_EXPRGRAPHNODE * | node | ) |
returns whether the node has an ancestor which has a nonlinear expression operand
- Parameters
-
node expression graph node
Definition at line 14674 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().
◆ SCIPexprgraphPrintNode()
void SCIPexprgraphPrintNode | ( | SCIP_EXPRGRAPHNODE * | node, |
SCIP_MESSAGEHDLR * | messagehdlr, | ||
FILE * | file | ||
) |
prints an expression graph node
- Parameters
-
node expression graph node messagehdlr message handler file file to print to, or NULL for stdout
Definition at line 14711 of file expr.c.
References exprgraphPrintNodeExpression(), FALSE, and NULL.
Referenced by reformulate().
◆ SCIPexprgraphTightenNodeBounds()
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.
- Parameters
-
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 14727 of file expr.c.
References SCIP_ExprGraphNode::depth, SCIP_ExprGraphNode::enabled, FALSE, SCIP_Interval::inf, isLbBetter(), isUbBetter(), NULL, 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().
◆ SCIPexprgraphUpdateNodeBoundsCurvature()
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.
- Parameters
-
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 14789 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, NULL, 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().
◆ SCIPexprgraphGetDepth()
int SCIPexprgraphGetDepth | ( | SCIP_EXPRGRAPH * | exprgraph | ) |
get current maximal depth of expression graph
- Parameters
-
exprgraph expression graph
Definition at line 14940 of file expr.c.
References SCIP_ExprGraph::depth, and NULL.
Referenced by reformulate().
◆ SCIPexprgraphGetNNodes()
int* SCIPexprgraphGetNNodes | ( | SCIP_EXPRGRAPH * | exprgraph | ) |
gets array with number of nodes at each depth of expression graph
- Parameters
-
exprgraph expression graph
Definition at line 14950 of file expr.c.
References SCIP_ExprGraph::nnodes, and NULL.
Referenced by reformulate().
◆ SCIPexprgraphGetNodes()
SCIP_EXPRGRAPHNODE*** SCIPexprgraphGetNodes | ( | SCIP_EXPRGRAPH * | exprgraph | ) |
gets nodes of expression graph, one array per depth
- Parameters
-
exprgraph expression graph
Definition at line 14960 of file expr.c.
References SCIP_ExprGraph::nodes, and NULL.
Referenced by reformulate().
◆ SCIPexprgraphGetNVars()
int SCIPexprgraphGetNVars | ( | SCIP_EXPRGRAPH * | exprgraph | ) |
gets number of variables in expression graph
- Parameters
-
exprgraph pointer to expression graph that should be freed
Definition at line 14970 of file expr.c.
References NULL, and SCIP_ExprGraph::nvars.
Referenced by computeViolations(), presolveUpgrade(), propagateBounds(), propagateConstraintSides(), reformulate(), removeFixedNonlinearVariables(), SCIP_DECL_CONSCHECK(), SCIP_DECL_CONSFREE(), SCIP_DECL_CONSGETNVARS(), and SCIP_DECL_CONSGETVARS().
◆ SCIPexprgraphGetVars()
void** SCIPexprgraphGetVars | ( | SCIP_EXPRGRAPH * | exprgraph | ) |
gets array of variables in expression graph
- Parameters
-
exprgraph pointer to expression graph that should be freed
Definition at line 14980 of file expr.c.
References NULL, and SCIP_ExprGraph::vars.
Referenced by computeViolations(), presolveUpgrade(), propagateBounds(), propagateConstraintSides(), reformulate(), removeFixedNonlinearVariables(), SCIP_DECL_CONSCHECK(), and SCIP_DECL_CONSGETVARS().
◆ SCIPexprgraphGetVarNodes()
SCIP_EXPRGRAPHNODE** SCIPexprgraphGetVarNodes | ( | SCIP_EXPRGRAPH * | exprgraph | ) |
gets array of expression graph nodes corresponding to variables
- Parameters
-
exprgraph pointer to expression graph that should be freed
Definition at line 14990 of file expr.c.
References NULL, and SCIP_ExprGraph::varnodes.
Referenced by propagateBounds(), and propagateConstraintSides().
◆ SCIPexprgraphSetVarNodeValue()
void SCIPexprgraphSetVarNodeValue | ( | SCIP_EXPRGRAPHNODE * | varnode, |
SCIP_Real | value | ||
) |
sets value for a single variable given as expression graph node
- Parameters
-
varnode expression graph node corresponding to variable value new value for variable
Definition at line 15000 of file expr.c.
References NULL, SCIP_ExprGraphNode::op, SCIP_EXPR_VARIDX, and SCIP_ExprGraphNode::value.
Referenced by reformMonomial(), reformNode2Var(), reformulate(), and SCIP_DECL_EXPRGRAPHNODEREFORM().
◆ SCIPexprgraphSetVarsBounds()
void SCIPexprgraphSetVarsBounds | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_INTERVAL * | varbounds | ||
) |
sets bounds for variables
- Parameters
-
exprgraph expression graph varbounds new bounds for variables
Definition at line 15012 of file expr.c.
References BMScopyMemoryArray, NULL, SCIP_ExprGraph::nvars, and SCIP_ExprGraph::varbounds.
◆ SCIPexprgraphSetVarBounds()
void SCIPexprgraphSetVarBounds | ( | SCIP_EXPRGRAPH * | exprgraph, |
void * | var, | ||
SCIP_INTERVAL | varbounds | ||
) |
sets bounds for a single variable
- Parameters
-
exprgraph expression graph var variable varbounds new bounds of variable
Definition at line 15024 of file expr.c.
References NULL, SCIPhashmapExists(), SCIPhashmapGetImageInt(), SCIP_ExprGraph::varbounds, SCIP_ExprGraph::varidxs, and SCIP_ExprGraph::vars.
◆ SCIPexprgraphSetVarNodeBounds()
void SCIPexprgraphSetVarNodeBounds | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_EXPRGRAPHNODE * | varnode, | ||
SCIP_INTERVAL | varbounds | ||
) |
sets bounds for a single variable given as expression graph node
- Parameters
-
exprgraph expression graph varnode expression graph node corresponding to variable varbounds new bounds of variable
Definition at line 15044 of file expr.c.
References SCIP_ExprGraphNode::data, NULL, SCIP_ExprGraph::varbounds, and SCIP_ExprGraph::varnodes.
Referenced by SCIP_DECL_EXPRGRAPHVARADDED().
◆ SCIPexprgraphSetVarNodeLb()
void SCIPexprgraphSetVarNodeLb | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_EXPRGRAPHNODE * | varnode, | ||
SCIP_Real | lb | ||
) |
sets lower bound for a single variable given as expression graph node
- Parameters
-
exprgraph expression graph varnode expression graph node corresponding to variable lb new lower bound for variable
Definition at line 15064 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_Interval::inf, NULL, SCIP_ExprGraph::varbounds, and SCIP_ExprGraph::varnodes.
Referenced by SCIP_DECL_EVENTEXEC().
◆ SCIPexprgraphSetVarNodeUb()
void SCIPexprgraphSetVarNodeUb | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_EXPRGRAPHNODE * | varnode, | ||
SCIP_Real | ub | ||
) |
sets upper bound for a single variable given as expression graph node
- Parameters
-
exprgraph expression graph varnode expression graph node corresponding to variable ub new upper bound for variable
Definition at line 15084 of file expr.c.
References SCIP_ExprGraphNode::data, NULL, SCIP_Interval::sup, SCIP_ExprGraph::varbounds, and SCIP_ExprGraph::varnodes.
Referenced by SCIP_DECL_EVENTEXEC().
◆ SCIPexprgraphGetVarsBounds()
SCIP_INTERVAL* SCIPexprgraphGetVarsBounds | ( | SCIP_EXPRGRAPH * | exprgraph | ) |
gets bounds that are stored for all variables
- Parameters
-
exprgraph expression graph
Definition at line 15104 of file expr.c.
References SCIP_ExprGraph::varbounds.
◆ SCIPexprgraphCreate()
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
- Parameters
-
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 15112 of file expr.c.
References BMSallocBlockMemory, BMSclearMemory, ensureBlockMemoryArraySize3, exprgraphEnsureDepth(), MAX, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIPhashmapCreate(), and TRUE.
Referenced by SCIPincludeConshdlrBivariate(), and SCIPincludeConshdlrNonlinear().
◆ SCIPexprgraphFree()
SCIP_RETCODE SCIPexprgraphFree | ( | SCIP_EXPRGRAPH ** | exprgraph | ) |
frees an expression graph
- Parameters
-
exprgraph pointer to expression graph that should be freed
Definition at line 15151 of file expr.c.
References BMSfreeBlockMemory, BMSfreeBlockMemoryArray, BMSfreeBlockMemoryArrayNull, NULL, SCIP_OKAY, and SCIPhashmapFree().
Referenced by SCIP_DECL_CONSFREE().
◆ SCIPexprgraphAddNode()
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.
- Parameters
-
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 15200 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, NULL, 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().
◆ SCIPexprgraphAddVars()
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.
- Parameters
-
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 15284 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, NULL, SCIP_ExprGraph::nvars, SCIP_CALL, SCIP_EXPR_VARIDX, SCIP_OKAY, SCIP_REAL_MAX, SCIPdebugMessage, SCIPexprgraphAddNode(), SCIPexprgraphFindVarNode(), SCIPhashmapExists(), SCIPhashmapInsertInt(), 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().
◆ SCIPexprgraphAddConst()
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.
- Parameters
-
exprgraph expression graph constant constant to add constnode buffer to store pointer to expression graph node corresponding to constant
Definition at line 15357 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, NULL, SCIP_CALL, SCIP_EXPR_CONST, SCIP_OKAY, SCIPdebugMessage, SCIPexprgraphAddNode(), SCIPexprgraphFindConstNode(), and TRUE.
Referenced by exprgraphAddExpr().
◆ SCIPexprgraphAddExprtreeSum()
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.
- Note
- Parameters will be converted into constants
- Parameters
-
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 15404 of file expr.c.
References SCIP_ExprGraph::blkmem, BMSallocBlockMemoryArray, BMScopyMemoryArray, BMSfreeBlockMemoryArray, SCIP_ExprGraphNode::depth, exprgraphAddExpr(), exprgraphCreateNode(), exprgraphFindParentByOperator(), FALSE, NULL, 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().
◆ SCIPexprgraphReplaceVarByLinearSum()
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.
- Parameters
-
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 15545 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, NULL, 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(), SCIPhashmapGetImageInt(), SCIPhashmapInsertInt(), 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().
◆ SCIPexprgraphFindVarNode()
SCIP_Bool SCIPexprgraphFindVarNode | ( | SCIP_EXPRGRAPH * | exprgraph, |
void * | var, | ||
SCIP_EXPRGRAPHNODE ** | varnode | ||
) |
finds expression graph node corresponding to a variable
- Parameters
-
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 15717 of file expr.c.
References FALSE, NULL, SCIP_EXPR_VARIDX, SCIPhashmapExists(), SCIPhashmapGetImageInt(), TRUE, SCIP_ExprGraph::varidxs, and SCIP_ExprGraph::varnodes.
Referenced by SCIPexprgraphAddVars(), and SCIPexprgraphReplaceVarByLinearSum().
◆ SCIPexprgraphFindConstNode()
SCIP_Bool SCIPexprgraphFindConstNode | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_Real | constant, | ||
SCIP_EXPRGRAPHNODE ** | constnode | ||
) |
finds expression graph node corresponding to a constant
- Parameters
-
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 15746 of file expr.c.
References SCIP_ExprGraph::constnodes, SCIP_ExprGraph::constssorted, SCIP_ExprGraphNode::data, exprgraphSortConstNodes(), FALSE, SCIP_ExprGraph::nconsts, NULL, SCIP_EXPR_CONST, and TRUE.
Referenced by SCIPexprgraphAddConst(), SCIPexprgraphReplaceVarByLinearSum(), and SCIPexprgraphSimplify().
◆ SCIPexprgraphPrintDot()
SCIP_RETCODE SCIPexprgraphPrintDot | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_MESSAGEHDLR * | messagehdlr, | ||
FILE * | file, | ||
const char ** | varnames | ||
) |
prints an expression graph in dot format
- Parameters
-
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 15794 of file expr.c.
References SCIP_ExprGraph::depth, exprgraphPrintNodeDot(), SCIP_ExprGraph::nnodes, SCIP_ExprGraph::nodes, SCIP_ExprGraphNode::nparents, NULL, SCIP_OKAY, and SCIPmessageFPrintInfo().
Referenced by propagateBounds(), propagateConstraintSides(), SCIP_DECL_CONSINIT(), and SCIPexprgraphSimplify().
◆ SCIPexprgraphEval()
SCIP_RETCODE SCIPexprgraphEval | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_Real * | varvals | ||
) |
evaluates nodes of expression graph for given values of variables
- Parameters
-
exprgraph expression graph varvals values for variables
Definition at line 15843 of file expr.c.
References SCIP_ExprGraph::depth, exprgraphNodeEval(), SCIP_ExprGraph::nnodes, SCIP_ExprGraph::nodes, NULL, SCIP_ExprGraph::nvars, SCIP_CALL, and SCIP_OKAY.
Referenced by computeViolations(), presolveUpgrade(), reformulate(), SCIP_DECL_CONSCHECK(), and SCIPexprgraphSimplify().
◆ SCIPexprgraphPropagateVarBounds()
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
- Parameters
-
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 15864 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, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, SCIPintervalIsEmpty(), and TRUE.
Referenced by propagateBounds(), reformulate(), and SCIP_DECL_CONSPRESOL().
◆ SCIPexprgraphPropagateNodeBounds()
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.
- Parameters
-
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 15918 of file expr.c.
References SCIP_ExprGraph::depth, exprgraphNodePropagateBounds(), FALSE, SCIP_ExprGraph::nnodes, SCIP_ExprGraph::nodes, and NULL.
Referenced by propagateBounds(), and propagateConstraintSides().
◆ SCIPexprgraphCheckCurvature()
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.
- Parameters
-
exprgraph expression graph infinity value for infinity in interval arithmetics clearreverseprop whether to reset bound tightenings from reverse propagation
Definition at line 15950 of file expr.c.
References SCIP_ExprGraphNode::bounds, SCIP_ExprGraphNode::curv, SCIP_ExprGraph::depth, exprgraphUpdateVarNodeBounds(), SCIP_ExprGraph::nnodes, SCIP_ExprGraph::nodes, NULL, SCIP_Bool, SCIP_CALL, SCIP_EXPRCURV_LINEAR, SCIP_OKAY, SCIPerrorMessage, SCIPexprgraphUpdateNodeBoundsCurvature(), and SCIPintervalIsEmpty().
◆ SCIPexprgraphSimplify()
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)).
- Parameters
-
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 15993 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_Interval::inf, MAX, SCIP_ExprGraphNode::nchildren, SCIP_ExprGraph::nnodes, SCIP_ExprGraph::nodes, SCIP_ExprGraphNode::nparents, NULL, 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(), SCIPhashmapGetImageInt(), SCIPhashmapInsertInt(), SCIPisFinite, SCIPrandomCreate(), SCIPrandomFree(), SCIPrandomGetReal(), SCIPrelDiff(), SCIP_ExprGraphNode::simplified, SCIP_Interval::sup, TRUE, SCIP_ExprGraphNode::value, and SCIP_ExprGraph::varbounds.
Referenced by SCIP_DECL_CONSEXITPRE(), and SCIP_DECL_CONSPRESOL().
◆ SCIPexprgraphGetTree()
SCIP_RETCODE SCIPexprgraphGetTree | ( | SCIP_EXPRGRAPH * | exprgraph, |
SCIP_EXPRGRAPHNODE * | rootnode, | ||
SCIP_EXPRTREE ** | exprtree | ||
) |
creates an expression tree from a given node in an expression graph
- Parameters
-
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 16257 of file expr.c.
References SCIP_ExprGraph::blkmem, BMSallocBlockMemoryArray, BMSfreeBlockMemoryArray, SCIP_ExprGraphNode::depth, exprgraphNodeCreateExpr(), NULL, 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().
◆ SCIPexprgraphGetSeparableTrees()
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.
- Parameters
-
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 16310 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, NULL, 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.
◆ SCIPexprgraphGetSubtreeVarsUsage()
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
- Parameters
-
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 16744 of file expr.c.
References BMSclearMemoryArray, exprgraphNodeGetVarsUsage(), NULL, and SCIP_ExprGraph::nvars.
Referenced by SCIP_DECL_CONSGETNVARS(), and SCIP_DECL_CONSGETVARS().
◆ SCIPexprgraphGetSumTreesNSummands()
int SCIPexprgraphGetSumTreesNSummands | ( | SCIP_EXPRGRAPHNODE * | node | ) |
gives the number of summands which the expression of an expression graph node consists of
- Parameters
-
node expression graph node
Definition at line 16760 of file expr.c.
References SCIP_ExprGraphNode::data, SCIP_ExprData_Quadratic::lincoefs, SCIP_ExprGraphNode::nchildren, SCIP_ExprData_Polynomial::nmonomials, nodedata, SCIP_ExprData_Quadratic::nquadelems, NULL, 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().
◆ SCIPexprgraphGetSumTrees()
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
- Parameters
-
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 16796 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, NULL, 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().
Variable Documentation
◆ curvnames
|
static |
curvature names as strings
Definition at line 195 of file expr.c.
Referenced by SCIPexprcurvGetName().