Scippy

SCIP

Solving Constraint Integer Programs

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.

Functions

const char * SCIPexprintGetName (void)
 
const char * SCIPexprintGetDesc (void)
 
SCIP_EXPRINTCAPABILITY SCIPexprintGetCapability (void)
 
SCIP_RETCODE SCIPexprintCreate (SCIP *scip, SCIP_EXPRINT **exprint)
 
SCIP_RETCODE SCIPexprintFree (SCIP *scip, SCIP_EXPRINT **exprint)
 
SCIP_RETCODE SCIPexprintCompile (SCIP *scip, SCIP_EXPRINT *exprint, SCIP_EXPR *expr, SCIP_EXPRINTDATA **exprintdata)
 
SCIP_RETCODE SCIPexprintFreeData (SCIP *scip, SCIP_EXPRINT *exprint, SCIP_EXPR *expr, SCIP_EXPRINTDATA **exprintdata)
 
SCIP_EXPRINTCAPABILITY SCIPexprintGetExprCapability (SCIP *scip, SCIP_EXPRINT *exprint, SCIP_EXPR *expr, SCIP_EXPRINTDATA *exprintdata)
 
SCIP_RETCODE SCIPexprintEval (SCIP *scip, SCIP_EXPRINT *exprint, SCIP_EXPR *expr, SCIP_EXPRINTDATA *exprintdata, SCIP_Real *varvals, SCIP_Real *val)
 
SCIP_RETCODE SCIPexprintGrad (SCIP *scip, SCIP_EXPRINT *exprint, SCIP_EXPR *expr, SCIP_EXPRINTDATA *exprintdata, SCIP_Real *varvals, SCIP_Bool new_varvals, SCIP_Real *val, SCIP_Real *gradient)
 
SCIP_RETCODE SCIPexprintHessianSparsity (SCIP *scip, SCIP_EXPRINT *exprint, SCIP_EXPR *expr, SCIP_EXPRINTDATA *exprintdata, SCIP_Real *varvals, int **rowidxs, int **colidxs, int *nnz)
 
SCIP_RETCODE SCIPexprintHessian (SCIP *scip, SCIP_EXPRINT *exprint, SCIP_EXPR *expr, SCIP_EXPRINTDATA *exprintdata, SCIP_Real *varvals, SCIP_Bool new_varvals, SCIP_Real *val, int **rowidxs, int **colidxs, SCIP_Real **hessianvals, int *nnz)
 

Files

file  exprinterpret.h
 methods to interpret (evaluate) an expression "fast"
 

Function Documentation

◆ SCIPexprintGetName()

const char * SCIPexprintGetName ( void  )

gets name and version of expression interpreter

Definition at line 1478 of file exprinterpret_cppad.cpp.

Referenced by doScipCreate(), and SCIPnlpiOracleCreate().

◆ SCIPexprintGetDesc()

const char * SCIPexprintGetDesc ( void  )

gets descriptive text of expression interpreter

Definition at line 1484 of file exprinterpret_cppad.cpp.

Referenced by doScipCreate().

◆ SCIPexprintGetCapability()

SCIP_EXPRINTCAPABILITY SCIPexprintGetCapability ( void  )

gets capabilities of expression interpreter (using bitflags)

Definition at line 1490 of file exprinterpret_cppad.cpp.

References SCIP_EXPRINTCAPABILITY_FUNCVALUE, SCIP_EXPRINTCAPABILITY_GRADIENT, SCIP_EXPRINTCAPABILITY_HESSIAN, and SCIP_EXPRINTCAPABILITY_NONE.

Referenced by SCIP_DECL_NLPISOLVE().

◆ SCIPexprintCreate()

SCIP_RETCODE SCIPexprintCreate ( SCIP scip,
SCIP_EXPRINT **  exprint 
)

creates an expression interpreter object

Parameters
scipSCIP data structure
exprintbuffer to store pointer to expression interpreter

Definition at line 1498 of file exprinterpret_cppad.cpp.

References NULL, and SCIP_OKAY.

Referenced by SCIPnlpiOracleCreate().

◆ SCIPexprintFree()

SCIP_RETCODE SCIPexprintFree ( SCIP scip,
SCIP_EXPRINT **  exprint 
)

frees an expression interpreter object

Parameters
scipSCIP data structure
exprintexpression interpreter that should be freed

Definition at line 1511 of file exprinterpret_cppad.cpp.

References NULL, and SCIP_OKAY.

Referenced by SCIPnlpiOracleFree().

◆ SCIPexprintCompile()

SCIP_RETCODE SCIPexprintCompile ( SCIP scip,
SCIP_EXPRINT exprint,
SCIP_EXPR expr,
SCIP_EXPRINTDATA **  exprintdata 
)

compiles an expression and returns interpreter-specific data for expression

can be called again with existing exprintdata if expression has been changed

Attention
*exprintdata needs to be initialized to NULL at first call
the expression is assumed to use varidx expressions instead of var expressions
Parameters
scipSCIP data structure
exprintinterpreter data structure
exprexpression
exprintdatabuffer to store pointer to compiled data

Definition at line 1530 of file exprinterpret_cppad.cpp.

References FALSE, NULL, SCIP_CALL, SCIP_EXPRINTCAPABILITY_FUNCVALUE, SCIP_EXPRINTCAPABILITY_GRADIENT, SCIP_EXPRITER_DFS, SCIP_OKAY, SCIPcreateExpriter(), SCIPdebugMsg, SCIPexprGetChildren(), SCIPexprGetHdlr(), SCIPexprGetNChildren(), SCIPexprhdlrGetName(), SCIPexprhdlrHasFwdiff(), SCIPexpriterGetCurrent(), SCIPexpriterGetNext(), SCIPexpriterInit(), SCIPexpriterIsEnd(), SCIPfreeExpriter(), SCIPgetExponentExprPow(), SCIPgetIndexExprVaridx(), SCIPisExprExp(), SCIPisExprLog(), SCIPisExprPower(), SCIPisExprProduct(), SCIPisExprSignpower(), SCIPisExprSum(), SCIPisExprValue(), SCIPisExprVar(), and SCIPisExprVaridx().

Referenced by createConstraint(), and SCIPnlpiOracleChgExpr().

◆ SCIPexprintFreeData()

SCIP_RETCODE SCIPexprintFreeData ( SCIP scip,
SCIP_EXPRINT exprint,
SCIP_EXPR expr,
SCIP_EXPRINTDATA **  exprintdata 
)

frees interpreter data for expression

Parameters
scipSCIP data structure
exprintinterpreter data structure
exprexpression
exprintdatapointer to pointer to compiled data to be freed

Definition at line 1641 of file exprinterpret_cppad.cpp.

References NULL, SCIP_OKAY, and SCIPfreeBlockMemoryArrayNull.

Referenced by freeConstraint(), SCIPnlpiOracleChgExpr(), and SCIPnlpiOracleDelVarSet().

◆ SCIPexprintGetExprCapability()

SCIP_EXPRINTCAPABILITY SCIPexprintGetExprCapability ( SCIP scip,
SCIP_EXPRINT exprint,
SCIP_EXPR expr,
SCIP_EXPRINTDATA exprintdata 
)

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
scipSCIP data structure
exprintinterpreter data structure
exprexpression
exprintdatainterpreter-specific data for expression

Definition at line 1667 of file exprinterpret_cppad.cpp.

References NULL, and SCIP_EXPRINTCAPABILITY_NONE.

Referenced by SCIPnlpiOracleGetEvalCapability().

◆ SCIPexprintEval()

SCIP_RETCODE SCIPexprintEval ( SCIP scip,
SCIP_EXPRINT exprint,
SCIP_EXPR expr,
SCIP_EXPRINTDATA exprintdata,
SCIP_Real varvals,
SCIP_Real val 
)

evaluates an expression

Parameters
scipSCIP data structure
exprintinterpreter data structure
exprexpression
exprintdatainterpreter-specific data for expression
varvalsvalues of variables
valbuffer to store value of expression

Definition at line 1680 of file exprinterpret_cppad.cpp.

References eval(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPdebugMessage, SCIPerrorMessage, SCIPevalExpr(), SCIPexprGetEvalValue(), and SCIPfreeBlockMemoryArrayNull.

Referenced by evalFunctionValue(), SCIPexprintGrad(), SCIPexprintHessian(), and SCIPexprintHessianSparsity().

◆ SCIPexprintGrad()

SCIP_RETCODE SCIPexprintGrad ( SCIP scip,
SCIP_EXPRINT exprint,
SCIP_EXPR expr,
SCIP_EXPRINTDATA exprintdata,
SCIP_Real varvals,
SCIP_Bool  new_varvals,
SCIP_Real val,
SCIP_Real gradient 
)

computes value and gradient of an expression

Parameters
scipSCIP data structure
exprintinterpreter data structure
exprexpression
exprintdatainterpreter-specific data for expression
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

Definition at line 1756 of file exprinterpret_cppad.cpp.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPerrorMessage, SCIPexprintEval(), SCIPinfoMessage(), and SCIPprintExpr().

Referenced by evalFunctionGradient(), and SCIPnlpiOracleEvalJacobian().

◆ SCIPexprintHessianSparsity()

SCIP_RETCODE SCIPexprintHessianSparsity ( SCIP scip,
SCIP_EXPRINT exprint,
SCIP_EXPR expr,
SCIP_EXPRINTDATA exprintdata,
SCIP_Real varvals,
int **  rowidxs,
int **  colidxs,
int *  nnz 
)

gives sparsity pattern of lower-triangular part of Hessian

Since the AD code might need to do a forward sweep, variable values need to be passed in here.

Result will have (*colidxs)[i] <= (*rowidixs)[i] for i=0..*nnz.

Parameters
scipSCIP data structure
exprintinterpreter data structure
exprexpression
exprintdatainterpreter-specific data for expression
varvalsvalues of variables
rowidxsbuffer to return array with row indices of Hessian elements
colidxsbuffer to return array with column indices of Hessian elements
nnzbuffer to return length of arrays

Definition at line 1825 of file exprinterpret_cppad.cpp.

References NULL, r, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIP_Real, SCIPallocBlockMemoryArray, SCIPdebugMessage, SCIPerrorMessage, SCIPexprintEval(), SCIPinfoMessage(), and SCIPprintExpr().

Referenced by hessLagSparsitySetNzFlagForExpr(), and SCIPexprintHessian().

◆ SCIPexprintHessian()

SCIP_RETCODE SCIPexprintHessian ( SCIP scip,
SCIP_EXPRINT exprint,
SCIP_EXPR expr,
SCIP_EXPRINTDATA exprintdata,
SCIP_Real varvals,
SCIP_Bool  new_varvals,
SCIP_Real val,
int **  rowidxs,
int **  colidxs,
SCIP_Real **  hessianvals,
int *  nnz 
)

computes value and Hessian of an expression

Returned arrays rowidxs and colidxs and number of elements nnz are the same as given by SCIPexprintHessianSparsity(). Returned array hessianvals will contain the corresponding Hessian elements.

Parameters
scipSCIP data structure
exprintinterpreter data structure
exprexpression
exprintdatainterpreter-specific data for expression
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
rowidxsbuffer to return array with row indices of Hessian elements
colidxsbuffer to return array with column indices of Hessian elements
hessianvalsbuffer to return array with Hessian elements
nnzbuffer to return length of arrays

Definition at line 1997 of file exprinterpret_cppad.cpp.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPerrorMessage, SCIPexprintEval(), SCIPexprintHessianSparsity(), SCIPinfoMessage(), and SCIPprintExpr().

Referenced by hessLagAddExpr().