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 1477 of file exprinterpret_cppad.cpp.

    Referenced by doScipCreate(), and SCIPnlpiOracleCreate().

    ◆ SCIPexprintGetDesc()

    const char * SCIPexprintGetDesc ( void  )

    gets descriptive text of expression interpreter

    Definition at line 1483 of file exprinterpret_cppad.cpp.

    Referenced by doScipCreate().

    ◆ SCIPexprintGetCapability()

    SCIP_EXPRINTCAPABILITY SCIPexprintGetCapability ( void  )

    gets capabilities of expression interpreter (using bitflags)

    Definition at line 1489 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 1497 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 1510 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 1529 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 1640 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 1670 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 1683 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 1759 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 1828 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 2000 of file exprinterpret_cppad.cpp.

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

    Referenced by hessLagAddExpr().