Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

absolute expression handler

Author
Stefan Vigerske
Benjamin Mueller

Definition in file expr_abs.c.

#include <string.h>
#include "scip/expr_value.h"
#include "scip/expr_abs.h"
#include "scip/expr.h"

Go to the source code of this file.

Macros

#define EXPRHDLR_NAME   "abs"
 
#define EXPRHDLR_DESC   "absolute value expression"
 
#define EXPRHDLR_PRECEDENCE   70000
 
#define EXPRHDLR_HASHKEY   SCIPcalcFibHash(7187.0)
 

Functions

static SCIP_RETCODE computeCutsAbs (SCIP *scip, SCIP_INTERVAL bounds, SCIP_Bool overestimate, SCIP_Real **coefs, SCIP_Real *constant, int *nreturned)
 
static SCIP_DECL_EXPRSIMPLIFY (simplifyAbs)
 
static SCIP_DECL_EXPRCOPYHDLR (copyhdlrAbs)
 
static SCIP_DECL_EXPRPARSE (parseAbs)
 
static SCIP_DECL_EXPREVAL (evalAbs)
 
static SCIP_DECL_EXPRBWDIFF (bwdiffAbs)
 
static SCIP_DECL_EXPRINTEVAL (intevalAbs)
 
static SCIP_DECL_EXPRESTIMATE (estimateAbs)
 
static SCIP_DECL_EXPRINITESTIMATES (initEstimatesAbs)
 
static SCIP_DECL_EXPRREVERSEPROP (reversepropAbs)
 
static SCIP_DECL_EXPRHASH (hashAbs)
 
static SCIP_DECL_EXPRCURVATURE (curvatureAbs)
 
static SCIP_DECL_EXPRMONOTONICITY (monotonicityAbs)
 
static SCIP_DECL_EXPRINTEGRALITY (integralityAbs)
 
SCIP_RETCODE SCIPincludeExprhdlrAbs (SCIP *scip)
 
SCIP_RETCODE SCIPcreateExprAbs (SCIP *scip, SCIP_EXPR **expr, SCIP_EXPR *child, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
 
SCIP_Bool SCIPisExprAbs (SCIP *scip, SCIP_EXPR *expr)
 

Macro Definition Documentation

◆ EXPRHDLR_NAME

#define EXPRHDLR_NAME   "abs"

◆ EXPRHDLR_DESC

#define EXPRHDLR_DESC   "absolute value expression"

Definition at line 41 of file expr_abs.c.

Referenced by SCIPincludeExprhdlrAbs().

◆ EXPRHDLR_PRECEDENCE

#define EXPRHDLR_PRECEDENCE   70000

Definition at line 42 of file expr_abs.c.

Referenced by SCIPincludeExprhdlrAbs().

◆ EXPRHDLR_HASHKEY

#define EXPRHDLR_HASHKEY   SCIPcalcFibHash(7187.0)

Definition at line 43 of file expr_abs.c.

Referenced by SCIP_DECL_EXPRHASH().

Function Documentation

◆ computeCutsAbs()

static SCIP_RETCODE computeCutsAbs ( SCIP scip,
SCIP_INTERVAL  bounds,
SCIP_Bool  overestimate,
SCIP_Real **  coefs,
SCIP_Real constant,
int *  nreturned 
)
static

computes both tangent underestimates and secant

! [SnippetExprInitestimatesAbs]

! [SnippetExprInitestimatesAbs]

Parameters
scipSCIP data structure
boundsbounds of child
overestimatewhether the expression shall be overestimated or underestimated
coefsbuffer to store coefficients of computed estimators
constantbuffer to store constant of computed estimators
nreturnedbuffer to store number of estimators that have been computed

Definition at line 55 of file expr_abs.c.

References SCIP_Interval::inf, NULL, REALABS, SCIP_OKAY, SCIP_Real, SCIPisEQ(), SCIPisInfinity(), SCIPisNegative(), SCIPisPositive(), and SCIP_Interval::sup.

Referenced by SCIP_DECL_EXPRINITESTIMATES().

◆ SCIP_DECL_EXPRSIMPLIFY()

static SCIP_DECL_EXPRSIMPLIFY ( simplifyAbs  )
static

simplifies an abs expression

Evaluates the absolute value function when its child is a value expression.

TODO: abs(*) = * if * >= 0 or - * if * < 0

Definition at line 142 of file expr_abs.c.

References NULL, REALABS, SCIP_CALL, SCIP_OKAY, SCIPcaptureExpr(), SCIPcreateExprValue(), SCIPexprGetChildren(), SCIPexprGetNChildren(), SCIPgetValueExprValue(), and SCIPisExprValue().

◆ SCIP_DECL_EXPRCOPYHDLR()

static SCIP_DECL_EXPRCOPYHDLR ( copyhdlrAbs  )
static

Definition at line 171 of file expr_abs.c.

References SCIP_CALL, SCIP_OKAY, and SCIPincludeExprhdlrAbs().

◆ SCIP_DECL_EXPRPARSE()

static SCIP_DECL_EXPRPARSE ( parseAbs  )
static

Definition at line 179 of file expr_abs.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPcreateExprAbs(), SCIPparseExpr(), SCIPreleaseExpr(), and TRUE.

◆ SCIP_DECL_EXPREVAL()

static SCIP_DECL_EXPREVAL ( evalAbs  )
static

expression point evaluation callback

Definition at line 203 of file expr_abs.c.

References NULL, REALABS, SCIP_INVALID, SCIP_OKAY, SCIPexprGetChildren(), SCIPexprGetEvalValue(), and SCIPexprGetNChildren().

◆ SCIP_DECL_EXPRBWDIFF()

static SCIP_DECL_EXPRBWDIFF ( bwdiffAbs  )
static

expression derivative evaluation callback

Definition at line 217 of file expr_abs.c.

References NULL, SCIP_INVALID, SCIP_OKAY, SCIPexprGetChildren(), SCIPexprGetEvalValue(), SCIPexprGetHdlr(), and SCIPexprhdlrGetName().

◆ SCIP_DECL_EXPRINTEVAL()

static SCIP_DECL_EXPRINTEVAL ( intevalAbs  )
static

◆ SCIP_DECL_EXPRESTIMATE()

static SCIP_DECL_EXPRESTIMATE ( estimateAbs  )
static

expression estimator callback

! [SnippetExprEstimateAbs]

! [SnippetExprEstimateAbs]

Definition at line 255 of file expr_abs.c.

References EXPRHDLR_NAME, FALSE, NULL, SCIP_OKAY, SCIP_Real, SCIPdebugMsg, SCIPexprGetHdlr(), SCIPexprGetNChildren(), SCIPexprhdlrGetName(), SCIPisNegative(), SCIPisPositive(), SCIPisRelEQ(), and TRUE.

◆ SCIP_DECL_EXPRINITESTIMATES()

static SCIP_DECL_EXPRINITESTIMATES ( initEstimatesAbs  )
static

expression estimate initialization callback

Definition at line 350 of file expr_abs.c.

References computeCutsAbs(), EXPRHDLR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPexprGetHdlr(), SCIPexprGetNChildren(), and SCIPexprhdlrGetName().

◆ SCIP_DECL_EXPRREVERSEPROP()

static SCIP_DECL_EXPRREVERSEPROP ( reversepropAbs  )
static

expression reverse propagation callback

! [SnippetExprReversepropAbs]

! [SnippetExprReversepropAbs]

Definition at line 364 of file expr_abs.c.

References SCIP_Interval::inf, NULL, SCIP_OKAY, SCIPexprGetNChildren(), SCIPintervalIntersect(), SCIPintervalSetBounds(), SCIPintervalUnify(), and SCIP_Interval::sup.

◆ SCIP_DECL_EXPRHASH()

static SCIP_DECL_EXPRHASH ( hashAbs  )
static

expression hash callback

Definition at line 397 of file expr_abs.c.

References EXPRHDLR_HASHKEY, NULL, SCIP_OKAY, and SCIPexprGetNChildren().

◆ SCIP_DECL_EXPRCURVATURE()

static SCIP_DECL_EXPRCURVATURE ( curvatureAbs  )
static

expression curvature detection callback

! [SnippetExprCurvatureAbs]

! [SnippetExprCurvatureAbs]

Definition at line 413 of file expr_abs.c.

References FALSE, NULL, SCIP_CALL, SCIP_EXPRCURV_CONVEX, SCIP_EXPRCURV_LINEAR, SCIP_EXPRCURV_UNKNOWN, SCIP_OKAY, SCIP_Real, SCIPevalExprActivity(), SCIPexprcurvNegate(), SCIPexprGetActivity(), SCIPexprGetChildren(), SCIPexprGetNChildren(), SCIPintervalGetInf(), SCIPintervalGetSup(), and TRUE.

◆ SCIP_DECL_EXPRMONOTONICITY()

static SCIP_DECL_EXPRMONOTONICITY ( monotonicityAbs  )
static

expression monotonicity detection callback

! [SnippetExprMonotonicityAbs]

! [SnippetExprMonotonicityAbs]

Definition at line 453 of file expr_abs.c.

References SCIP_Interval::inf, NULL, SCIP_CALL, SCIP_MONOTONE_DEC, SCIP_MONOTONE_INC, SCIP_MONOTONE_UNKNOWN, SCIP_OKAY, SCIPevalExprActivity(), SCIPexprGetActivity(), SCIPexprGetChildren(), and SCIP_Interval::sup.

◆ SCIP_DECL_EXPRINTEGRALITY()

static SCIP_DECL_EXPRINTEGRALITY ( integralityAbs  )
static

expression integrality detection callback

Definition at line 483 of file expr_abs.c.

References NULL, SCIP_OKAY, SCIPexprGetChildren(), SCIPexprGetNChildren(), and SCIPexprIsIntegral().