Scippy

SCIP

Solving Constraint Integer Programs

Expression Interpreter

Detailed Description

methods and files provided by the default expression interpreters of SCIP

A detailed description what a expression interpreter does and how to add a expression interpreter to SCIP can be found here.

Modules

 Inclusion methods
 methods to include specific expression interpreters into SCIP
 

Functions

const char * SCIPexprintGetName (void)
 
const char * SCIPexprintGetDesc (void)
 
SCIP_EXPRINTCAPABILITY SCIPexprintGetCapability (void)
 
SCIP_RETCODE SCIPexprintCreate (BMS_BLKMEM *blkmem, SCIP_EXPRINT **exprint)
 
SCIP_RETCODE SCIPexprintFree (SCIP_EXPRINT **exprint)
 
SCIP_RETCODE SCIPexprintCompile (SCIP_EXPRINT *exprint, SCIP_EXPRTREE *tree)
 
SCIP_EXPRINTCAPABILITY SCIPexprintGetExprtreeCapability (SCIP_EXPRINT *exprint, SCIP_EXPRTREE *tree)
 
SCIP_RETCODE SCIPexprintFreeData (SCIP_EXPRINTDATA **interpreterdata)
 
SCIP_RETCODE SCIPexprintNewParametrization (SCIP_EXPRINT *exprint, SCIP_EXPRTREE *tree)
 
SCIP_RETCODE SCIPexprintEval (SCIP_EXPRINT *exprint, SCIP_EXPRTREE *tree, SCIP_Real *varvals, SCIP_Real *val)
 
SCIP_RETCODE SCIPexprintEvalInt (SCIP_EXPRINT *exprint, SCIP_EXPRTREE *tree, SCIP_Real infinity, SCIP_INTERVAL *varvals, SCIP_INTERVAL *val)
 
SCIP_RETCODE SCIPexprintGrad (SCIP_EXPRINT *exprint, SCIP_EXPRTREE *tree, SCIP_Real *varvals, SCIP_Bool new_varvals, SCIP_Real *val, SCIP_Real *gradient)
 
SCIP_RETCODE SCIPexprintGradInt (SCIP_EXPRINT *exprint, SCIP_EXPRTREE *tree, SCIP_Real infinity, SCIP_INTERVAL *varvals, SCIP_Bool new_varvals, SCIP_INTERVAL *val, SCIP_INTERVAL *gradient)
 
SCIP_RETCODE SCIPexprintHessianSparsityDense (SCIP_EXPRINT *exprint, SCIP_EXPRTREE *tree, SCIP_Real *varvals, SCIP_Bool *sparsity)
 
SCIP_RETCODE SCIPexprintHessianDense (SCIP_EXPRINT *exprint, SCIP_EXPRTREE *tree, SCIP_Real *varvals, SCIP_Bool new_varvals, SCIP_Real *val, SCIP_Real *hessian)
 

Files

file  exprinterpret_cppad.cpp
 methods to interpret (evaluate) an expression tree "fast" using CppAD
 
file  exprinterpret_none.c
 function definitions for nonexisting expression interpreter to resolve linking references
 

Function Documentation

◆ SCIPexprintGetName()

const char* SCIPexprintGetName ( void  )

gets name and version of expression interpreter

Definition at line 2146 of file exprinterpret_cppad.cpp.

Referenced by SCIP_DECL_CONSINIT(), SCIPcreate(), and SCIPnlpiOracleCreate().

◆ SCIPexprintGetDesc()

const char* SCIPexprintGetDesc ( void  )

gets descriptive text of expression interpreter

Definition at line 2152 of file exprinterpret_cppad.cpp.

Referenced by SCIPcreate().

◆ SCIPexprintGetCapability()

◆ SCIPexprintCreate()

SCIP_RETCODE SCIPexprintCreate ( BMS_BLKMEM blkmem,
SCIP_EXPRINT **  exprint 
)

creates an expression interpreter object

Parameters
blkmemblock memory data structure
exprintbuffer to store pointer to expression interpreter

Definition at line 2168 of file exprinterpret_cppad.cpp.

References SCIP_ExprInt::blkmem, BMSallocMemory, NULL, SCIP_NOMEMORY, SCIP_OKAY, and SCIPdebugMessage.

Referenced by applyHeur(), createCoveringProblem(), SCIP_DECL_SEPAEXECLP(), SCIPincludeConshdlrBivariate(), SCIPincludeConshdlrNonlinear(), and SCIPnlpiOracleCreate().

◆ SCIPexprintFree()

SCIP_RETCODE SCIPexprintFree ( SCIP_EXPRINT **  exprint)

frees an expression interpreter object

Parameters
exprintexpression interpreter that should be freed

Definition at line 2185 of file exprinterpret_cppad.cpp.

References BMSfreeMemory, NULL, and SCIP_OKAY.

Referenced by createCoveringProblem(), SCIP_DECL_CONSFREE(), SCIP_DECL_SEPAEXITSOL(), SCIPnlpiOracleFree(), and sepadataClear().

◆ SCIPexprintCompile()

◆ SCIPexprintGetExprtreeCapability()

SCIP_EXPRINTCAPABILITY SCIPexprintGetExprtreeCapability ( SCIP_EXPRINT exprint,
SCIP_EXPRTREE tree 
)

gives the capability to evaluate an expression by the expression interpreter

In cases of user-given expressions, higher order derivatives may not be available for the user-expression, even if the expression interpreter could handle these. This method allows to recognize that, e.g., the Hessian for an expression is not available because it contains a user expression that does not provide Hessians.

Parameters
exprintinterpreter data structure
treeexpression tree

Definition at line 2253 of file exprinterpret_cppad.cpp.

References NULL, SCIP_EXPRINTCAPABILITY_NONE, and SCIPexprtreeGetInterpreterData().

Referenced by SCIPnlpiOracleGetEvalCapability().

◆ SCIPexprintFreeData()

SCIP_RETCODE SCIPexprintFreeData ( SCIP_EXPRINTDATA **  interpreterdata)

frees interpreter data

Parameters
interpreterdatainterpreter data that should freed

Definition at line 2267 of file exprinterpret_cppad.cpp.

References NULL, SCIP_OKAY, and SCIPexprFreeDeep().

Referenced by SCIPexprtreeFreeInterpreterData().

◆ SCIPexprintNewParametrization()

SCIP_RETCODE SCIPexprintNewParametrization ( SCIP_EXPRINT exprint,
SCIP_EXPRTREE tree 
)

notify expression interpreter that a new parameterization is used this probably causes retaping by AD algorithms

notify expression interpreter that a new parameterization is used

This probably causes retaping by AD algorithms.

Parameters
exprintinterpreter data structure
treeexpression tree

Definition at line 2287 of file exprinterpret_cppad.cpp.

References NULL, SCIP_OKAY, and SCIPexprtreeGetInterpreterData().

Referenced by generateConvexConcaveUnderestimator().

◆ SCIPexprintEval()

◆ SCIPexprintEvalInt()

SCIP_RETCODE SCIPexprintEvalInt ( SCIP_EXPRINT exprint,
SCIP_EXPRTREE tree,
SCIP_Real  infinity,
SCIP_INTERVAL varvals,
SCIP_INTERVAL val 
)

evaluates an expression tree on intervals

Parameters
exprintinterpreter data structure
treeexpression tree
infinityvalue for infinity
varvalsinterval values of variables
valbuffer to store interval value of expression

Definition at line 2374 of file exprinterpret_cppad.cpp.

References eval(), infinity, NULL, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPerrorMessage, SCIPexprtreeEvalInt(), SCIPexprtreeGetInterpreterData(), SCIPexprtreeGetNVars(), SCIPexprtreeGetParamVals(), and SCIPexprtreeGetRoot().

Referenced by SCIPexprintGradInt().

◆ SCIPexprintGrad()

SCIP_RETCODE SCIPexprintGrad ( SCIP_EXPRINT exprint,
SCIP_EXPRTREE tree,
SCIP_Real varvals,
SCIP_Bool  new_varvals,
SCIP_Real val,
SCIP_Real gradient 
)

computes value and gradient of an expression tree

Parameters
exprintinterpreter data structure
treeexpression tree
varvalsvalues of variables, can be NULL if new_varvals is FALSE
new_varvalshave variable values changed since last call to a point evaluation routine?
valbuffer to store expression value
gradientbuffer to store expression gradient, need to have length at least SCIPexprtreeGetNVars(tree)

Definition at line 2440 of file exprinterpret_cppad.cpp.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPerrorMessage, SCIPexprintEval(), SCIPexprtreeGetInterpreterData(), and SCIPexprtreeGetNVars().

Referenced by addLinearization(), computeGradient(), computeViolation(), evalFunctionGradient(), generate1ConvexIndefiniteUnderestimatorAtBoundary(), generate1ConvexIndefiniteUnderestimatorInTheInteriorPatternA(), generate1ConvexIndefiniteUnderestimatorInTheInteriorPatternB(), generateConvexConcaveUnderestimator(), generateLinearizationCut(), generateOrthogonal_lx_ly_Underestimator(), generateOrthogonal_lx_uy_Underestimator(), generateUnderestimatorParallelYFacets(), getGradientMaxElement(), lifting(), SCIPnlpiOracleEvalJacobian(), and solveDerivativeEquation().

◆ SCIPexprintGradInt()

SCIP_RETCODE SCIPexprintGradInt ( SCIP_EXPRINT exprint,
SCIP_EXPRTREE tree,
SCIP_Real  infinity,
SCIP_INTERVAL varvals,
SCIP_Bool  new_varvals,
SCIP_INTERVAL val,
SCIP_INTERVAL gradient 
)

computes interval value and interval gradient of an expression tree

Parameters
exprintinterpreter data structure
treeexpression tree
infinityvalue for infinity
varvalsinterval values of variables, can be NULL if new_varvals is FALSE
new_varvalshave variable interval values changed since last call to an interval evaluation routine?
valbuffer to store expression interval value
gradientbuffer to store expression interval gradient, need to have length at least SCIPexprtreeGetNVars(tree)

Definition at line 2487 of file exprinterpret_cppad.cpp.

References NULL, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPerrorMessage, SCIPexprintEvalInt(), SCIPexprtreeGetInterpreterData(), and SCIPexprtreeGetNVars().

Referenced by addIntervalGradientEstimator().

◆ SCIPexprintHessianSparsityDense()

SCIP_RETCODE SCIPexprintHessianSparsityDense ( SCIP_EXPRINT exprint,
SCIP_EXPRTREE tree,
SCIP_Real varvals,
SCIP_Bool sparsity 
)

gives sparsity pattern of hessian

NOTE: this function might be replaced later by something nicer. Since the AD code might need to do a forward sweep, you should pass variable values in here.

gives sparsity pattern of hessian NOTE: this function might be replaced later by something nicer Since the AD code might need to do a forward sweep, you should pass variable values in here.

Parameters
exprintinterpreter data structure
treeexpression tree
varvalsvalues of variables
sparsitybuffer to store sparsity pattern of Hessian, sparsity[i+n*j] indicates whether entry (i,j) is nonzero in the hessian

Definition at line 2537 of file exprinterpret_cppad.cpp.

References NULL, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIP_Real, SCIPdebugMessage, SCIPerrorMessage, SCIPexprintEval(), SCIPexprtreeGetInterpreterData(), SCIPexprtreeGetNVars(), and TRUE.

Referenced by hessLagSparsitySetNzFlagForExprtree(), initSepaData(), and processNlRow().

◆ SCIPexprintHessianDense()

SCIP_RETCODE SCIPexprintHessianDense ( SCIP_EXPRINT exprint,
SCIP_EXPRTREE tree,
SCIP_Real varvals,
SCIP_Bool  new_varvals,
SCIP_Real val,
SCIP_Real hessian 
)

computes value and dense hessian of an expression tree

The full hessian is computed (lower left and upper right triangle).

computes value and dense hessian of an expression tree the full hessian is computed (lower left and upper right triangle)

Parameters
exprintinterpreter data structure
treeexpression tree
varvalsvalues of variables, can be NULL if new_varvals is FALSE
new_varvalshave variable values changed since last call to an evaluation routine?
valbuffer to store function value
hessianbuffer to store hessian values, need to have size at least n*n

Definition at line 2610 of file exprinterpret_cppad.cpp.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPerrorMessage, SCIPexprintEval(), SCIPexprtreeGetInterpreterData(), and SCIPexprtreeGetNVars().

Referenced by generate1ConvexIndefiniteUnderestimator(), hessLagAddExprtree(), and solveDerivativeEquation().