58struct SCIP_ExprPrintData
80 assert((*expr)->nuses == 1);
161 assert((*quadexprterm)->expr == expr);
169 (*quadexprterm)->expr = expr;
170 (*quadexprterm)->sqrcoef = 0.0;
171 (*quadexprterm)->sqrexpr =
NULL;
172 (*quadexprterm)->lincoef = 0.0;
173 (*quadexprterm)->nadjbilin = 0;
257#undef SCIPexprhdlrSetCopyFreeHdlr
258#undef SCIPexprhdlrSetCopyFreeData
259#undef SCIPexprhdlrSetPrint
260#undef SCIPexprhdlrSetParse
261#undef SCIPexprhdlrSetCurvature
262#undef SCIPexprhdlrSetMonotonicity
263#undef SCIPexprhdlrSetIntegrality
264#undef SCIPexprhdlrSetHash
265#undef SCIPexprhdlrSetCompare
266#undef SCIPexprhdlrSetDiff
267#undef SCIPexprhdlrSetIntEval
268#undef SCIPexprhdlrSetSimplify
269#undef SCIPexprhdlrSetReverseProp
270#undef SCIPexprhdlrSetEstimate
271#undef SCIPexprhdlrGetName
272#undef SCIPexprhdlrGetDescription
273#undef SCIPexprhdlrGetPrecedence
274#undef SCIPexprhdlrGetData
275#undef SCIPexprhdlrHasPrint
276#undef SCIPexprhdlrHasBwdiff
277#undef SCIPexprhdlrHasFwdiff
278#undef SCIPexprhdlrHasIntEval
279#undef SCIPexprhdlrHasEstimate
280#undef SCIPexprhdlrHasInitEstimates
281#undef SCIPexprhdlrHasSimplify
282#undef SCIPexprhdlrHasCurvature
283#undef SCIPexprhdlrHasMonotonicity
284#undef SCIPexprhdlrHasReverseProp
285#undef SCIPexprhdlrGetNCreated
286#undef SCIPexprhdlrGetNIntevalCalls
287#undef SCIPexprhdlrGetIntevalTime
288#undef SCIPexprhdlrGetNReversepropCalls
289#undef SCIPexprhdlrGetReversepropTime
290#undef SCIPexprhdlrGetNCutoffs
291#undef SCIPexprhdlrGetNDomainReductions
292#undef SCIPexprhdlrIncrementNDomainReductions
293#undef SCIPexprhdlrGetNEstimateCalls
294#undef SCIPexprhdlrGetEstimateTime
295#undef SCIPexprhdlrGetNBranchings
296#undef SCIPexprhdlrIncrementNBranchings
297#undef SCIPexprhdlrGetNSimplifyCalls
298#undef SCIPexprhdlrGetSimplifyTime
299#undef SCIPexprhdlrGetNSimplifications
308 unsigned int precedence,
324 (*exprhdlr)->precedence = precedence;
325 (*exprhdlr)->eval =
eval;
326 (*exprhdlr)->data = data;
344 if( (*exprhdlr)->freehdlr !=
NULL )
346 SCIP_CALL( (*exprhdlr)->freehdlr(
set->scip, *exprhdlr, &(*exprhdlr)->
data) );
401 exprhdlr->print =
print;
412 exprhdlr->parse =
parse;
423 exprhdlr->curvature = curvature;
434 exprhdlr->monotonicity = monotonicity;
456 exprhdlr->hash =
hash;
467 exprhdlr->compare = compare;
480 exprhdlr->bwdiff =
bwdiff;
481 exprhdlr->fwdiff =
fwdiff;
528 exprhdlr->estimate = estimate;
538 return exprhdlr->
name;
548 return exprhdlr->
desc;
568 return exprhdlr->
data;
578 return exprhdlr->print !=
NULL;
588 return exprhdlr->bwdiff !=
NULL;
598 return exprhdlr->fwdiff !=
NULL;
608 return exprhdlr->inteval !=
NULL;
618 return exprhdlr->estimate !=
NULL;
628 return exprhdlr->initestimates !=
NULL;
638 return exprhdlr->simplify !=
NULL;
648 return exprhdlr->curvature !=
NULL;
658 return exprhdlr->monotonicity !=
NULL;
668 return exprhdlr->reverseprop !=
NULL;
845 if( exprhdlr->copyhdlr !=
NULL )
868 if(
set->misc_resetstat )
932 assert(currentchild >= 0);
980 if( exprhdlr->parse ==
NULL )
1019 if( exprhdlr->curvature !=
NULL )
1048 if( exprhdlr->monotonicity !=
NULL )
1064 SCIP_Bool* isintegral
1073 *isintegral =
FALSE;
1076 if( exprhdlr->integrality !=
NULL )
1078 SCIP_CALL( exprhdlr->integrality(
set->scip, expr, isintegral) );
1154 return expr1->
exprhdlr->compare(
set->scip, expr1, expr2);
1255 SCIP_Real* derivative,
1270 if( exprhdlr->bwdiff ==
NULL )
1336 if( exprhdlr->fwdiff ==
NULL )
1483 if( exprhdlr->bwfwdiff ==
NULL )
1517 if( exprhdlr->inteval !=
NULL )
1540 SCIP_Bool overestimate,
1541 SCIP_Real targetvalue,
1543 SCIP_Real* constant,
1546 SCIP_Bool* branchcand
1559 if( exprhdlr->estimate !=
NULL )
1582 SCIP_Bool overestimate,
1596 if( exprhdlr->initestimates )
1599 SCIP_CALL( exprhdlr->initestimates(
set->scip, expr, bounds, overestimate, coefs, constant,
nreturned) );
1627 if( exprhdlr->simplify !=
NULL )
1663 SCIP_Bool* infeasible
1673 *infeasible =
FALSE;
1675 if( exprhdlr->reverseprop !=
NULL )
1696#undef SCIPexprCapture
1698#undef SCIPexprIsValue
1700#undef SCIPexprIsProduct
1701#undef SCIPexprIsPower
1729 (*expr)->exprhdlr = exprhdlr;
1730 (*expr)->exprdata = exprdata;
1731 (*expr)->activitytag = -1;
1740 (*expr)->nchildren = nchildren;
1741 (*expr)->childrensize = nchildren;
1743 for(
c = 0;
c < nchildren; ++
c )
2063 assert((*rootexpr)->nuses > 0);
2065 if( (*rootexpr)->nuses > 1 )
2067 --(*rootexpr)->nuses;
2078 if( (*rootexpr)->ownerfree !=
NULL )
2088 if( (*rootexpr)->exprdata !=
NULL )
2090 assert((*rootexpr)->exprhdlr->freedata !=
NULL);
2116 if( child->
nuses > 1 )
2127 if( child->ownerfree !=
NULL )
2311 (*printdata)->file = file;
2313 (*printdata)->closefile =
FALSE;
2314 (*printdata)->whattoprint = whattoprint;
2317 fputs(
"strict digraph exprgraph {\n", file);
2318 fputs(
"node [fontcolor=white, style=filled, rankdir=LR]\n", file);
2329 const char* filename,
2341 f =
fopen(filename,
"w");
2350 (*printdata)->closefile =
TRUE;
2387 fprintf(
printdata->file,
"n%p [fillcolor=\"%g,%g,%g\", label=\"", (
void*)expr, color, color, color);
2398 for(
c = 0;
c < expr->nchildren; ++
c )
2421 if( expr->ownerprint !=
NULL )
2425 else if( expr->ownerdata !=
NULL )
2447 fprintf(
printdata->file,
"[%g,%g]", expr->activity.inf, expr->activity.sup);
2460 for(
c = 0;
c < expr->nchildren; ++
c )
2461 fprintf(
printdata->file,
"n%p -> n%p [label=\"c%d\"]\n", (
void*)expr, (
void*)expr->children[
c],
c);
2488 file = (*printdata)->file;
2492 fputs(
"{rank=same;", file);
2503 fprintf(file,
" n%p", (
void*)expr);
2514 if( (*printdata)->closefile )
2515 fclose((*printdata)->file);
2578 if( expr->ownerprint !=
NULL )
2734 SCIP_Real derivative;
2735 SCIP_Longint difftag;
2790 &derivative,
NULL, 0.0) );
2834 SCIP_Real derivative;
3004 SCIPsetDebugMsg(
set,
" exprhdlr <%s>::inteval = [%.20g, %.20g]", expr->exprhdlr->name, expr->activity.inf,
3005 expr->activity.sup);
3014 if( expr->isintegral && expr->nchildren > 0 )
3021 SCIPsetDebugMsg(
set,
" applying integrality: [%.20g, %.20g]\n", expr->activity.inf, expr->activity.sup);
3030 SCIPsetDebugMsg(
set,
"treat activity [%g,%g] as empty as beyond infinity\n", expr->activity.inf, expr->activity.sup);
3173 SCIP_Bool* infeasible,
3195 *infeasible =
FALSE;
3274 int nbilinterms = 0;
3298 SCIPsetDebugMsg(
set,
"expr %p looks like square: fill data structures\n", (
void*)expr);
3301 expr->quaddata->nquadexprs = 1;
3303 expr->quaddata->quadexprterms[0].expr = expr->children[0];
3304 expr->quaddata->quadexprterms[0].sqrcoef = 1.0;
3306 expr->quaddata->allexprsarevars =
SCIPexprIsVar(
set, expr->quaddata->quadexprterms[0].expr);
3315 SCIPsetDebugMsg(
set,
"expr %p looks like bilinear product: fill data structures\n", (
void*)expr);
3317 expr->quaddata->nquadexprs = 2;
3323 expr->quaddata->quadexprterms[0].adjbilin[0] = 0;
3328 expr->quaddata->quadexprterms[1].adjbilin[0] = 0;
3330 expr->quaddata->nbilinexprterms = 1;
3336 expr->quaddata->allexprsarevars =
SCIPexprIsVar(
set, expr->quaddata->quadexprterms[0].expr)
3391 SCIPsetDebugMsg(
set,
"expr %p looks quadratic: fill data structures\n", (
void*)expr);
3555 for(
i = 0;
i < n; ++
i )
3631 "number of quadratic variables is too large (%d) to check the curvature\n", n);
3662 for(
i = 0;
i < n; ++
i )
3728 "matrix --> don't know curvature\n");
3767#undef SCIPexprGetNUses
3768#undef SCIPexprGetNChildren
3769#undef SCIPexprGetChildren
3770#undef SCIPexprGetHdlr
3771#undef SCIPexprGetData
3772#undef SCIPexprSetData
3773#undef SCIPexprGetOwnerData
3774#undef SCIPexprGetEvalValue
3775#undef SCIPexprGetEvalTag
3776#undef SCIPexprGetDerivative
3777#undef SCIPexprGetDot
3778#undef SCIPexprGetBardot
3779#undef SCIPexprGetDiffTag
3780#undef SCIPexprGetActivity
3781#undef SCIPexprGetActivityTag
3782#undef SCIPexprSetActivity
3783#undef SCIPexprGetCurvature
3784#undef SCIPexprSetCurvature
3785#undef SCIPexprIsIntegral
3786#undef SCIPexprSetIntegrality
3787#undef SCIPexprAreQuadraticExprsVariables
3986 SCIP_Longint activitytag
4032 SCIP_Bool isintegral
4062 SCIP_Real* constant,
4065 SCIP_Real** lincoefs,
4068 SCIP_Real** eigenvalues,
4069 SCIP_Real** eigenvectors
4079 if( constant !=
NULL )
4081 if( nlinexprs !=
NULL )
4083 if( linexprs !=
NULL )
4085 if( lincoefs !=
NULL )
4087 if( nquadexprs !=
NULL )
4091 if( eigenvalues !=
NULL )
4093 if( eigenvectors !=
NULL )
4128 if( lincoef !=
NULL )
4130 if( sqrcoef !=
NULL )
4132 if( nadjbilin !=
NULL )
4134 if( adjbilin !=
NULL )
4136 if( sqrexpr !=
NULL )
4173 if( prodexpr !=
NULL )
void SCIPclockStop(SCIP_CLOCK *clck, SCIP_SET *set)
void SCIPclockStart(SCIP_CLOCK *clck, SCIP_SET *set)
SCIP_Real SCIPclockGetTime(SCIP_CLOCK *clck)
void SCIPclockReset(SCIP_CLOCK *clck)
void SCIPclockFree(SCIP_CLOCK **clck)
SCIP_RETCODE SCIPclockCreate(SCIP_CLOCK **clck, SCIP_CLOCKTYPE clocktype)
internal methods for clocks and timing issues
#define SCIP_INTERVAL_INFINITY
#define SCIP_CALL_FINALLY(x, y)
SCIP_RETCODE SCIPexprPrint(SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_MESSAGEHDLR *messagehdlr, FILE *file, SCIP_EXPR *expr)
SCIP_Bool SCIPexprIsPower(SCIP_SET *set, SCIP_EXPR *expr)
SCIP_RETCODE SCIPexprhdlrBwDiffExpr(SCIP_EXPRHDLR *exprhdlr, SCIP_SET *set, BMS_BUFMEM *bufmem, SCIP_EXPR *expr, int childidx, SCIP_Real *derivative, SCIP_Real *childrenvals, SCIP_Real exprval)
SCIP_RETCODE SCIPexprEvalActivity(SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_EXPR *rootexpr)
static SCIP_RETCODE evalAndDiff(SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_EXPR *expr, SCIP_SOL *sol, SCIP_Longint soltag, SCIP_SOL *direction)
SCIP_RETCODE SCIPexprPrintDotInit(SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_EXPRPRINTDATA **printdata, FILE *file, SCIP_EXPRPRINT_WHAT whattoprint)
SCIP_RETCODE SCIPexprhdlrIntegralityExpr(SCIP_EXPRHDLR *exprhdlr, SCIP_SET *set, SCIP_EXPR *expr, SCIP_Bool *isintegral)
SCIP_RETCODE SCIPexprCopy(SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_SET *targetset, SCIP_STAT *targetstat, BMS_BLKMEM *targetblkmem, SCIP_EXPR *sourceexpr, SCIP_EXPR **targetexpr, SCIP_DECL_EXPR_MAPEXPR((*mapexpr)), void *mapexprdata, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPexprPrintDotInit2(SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_EXPRPRINTDATA **printdata, const char *filename, SCIP_EXPRPRINT_WHAT whattoprint)
SCIP_RETCODE SCIPexprSimplify(SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_EXPR *rootexpr, SCIP_EXPR **simplified, SCIP_Bool *changed, SCIP_Bool *infeasible, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPexprhdlrInitEstimatesExpr(SCIP_EXPRHDLR *exprhdlr, SCIP_SET *set, SCIP_EXPR *expr, SCIP_INTERVAL *bounds, SCIP_Bool overestimate, SCIP_Real *coefs[SCIP_EXPR_MAXINITESTIMATES], SCIP_Real constant[SCIP_EXPR_MAXINITESTIMATES], int *nreturned)
SCIP_RETCODE SCIPexprComputeQuadraticCurvature(SCIP_SET *set, BMS_BLKMEM *blkmem, BMS_BUFMEM *bufmem, SCIP_MESSAGEHDLR *messagehdlr, SCIP_EXPR *expr, SCIP_EXPRCURV *curv, SCIP_HASHMAP *assumevarfixed, SCIP_Bool storeeigeninfo)
SCIP_RETCODE SCIPexprhdlrSimplifyExpr(SCIP_EXPRHDLR *exprhdlr, SCIP_SET *set, SCIP_EXPR *expr, SCIP_EXPR **simplifiedexpr, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPexprEvalGradient(SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_EXPR *rootexpr, SCIP_SOL *sol, SCIP_Longint soltag)
SCIP_RETCODE SCIPexprReplaceChild(SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_EXPR *expr, int childidx, SCIP_EXPR *newchild)
SCIP_RETCODE SCIPexprhdlrReversePropExpr(SCIP_EXPRHDLR *exprhdlr, SCIP_SET *set, SCIP_EXPR *expr, SCIP_INTERVAL bounds, SCIP_INTERVAL *childrenbounds, SCIP_Bool *infeasible)
SCIP_Bool SCIPexprIsVar(SCIP_SET *set, SCIP_EXPR *expr)
static SCIP_RETCODE freeExpr(BMS_BLKMEM *blkmem, SCIP_EXPR **expr)
SCIP_RETCODE SCIPexprCheckQuadratic(SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_EXPR *expr, SCIP_Bool *isquadratic)
SCIP_RETCODE SCIPexprhdlrFree(SCIP_EXPRHDLR **exprhdlr, SCIP_SET *set, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPexprhdlrPrintExpr(SCIP_EXPRHDLR *exprhdlr, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_EXPR *expr, SCIP_EXPRITER_STAGE stage, int currentchild, unsigned int parentprecedence, FILE *file)
SCIP_RETCODE SCIPexprEvalHessianDir(SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_EXPR *rootexpr, SCIP_SOL *sol, SCIP_Longint soltag, SCIP_SOL *direction)
int SCIPexprCompare(SCIP_SET *set, SCIP_EXPR *expr1, SCIP_EXPR *expr2)
SCIP_RETCODE SCIPexprhdlrMonotonicityExpr(SCIP_EXPRHDLR *exprhdlr, SCIP_SET *set, SCIP_EXPR *expr, int childidx, SCIP_MONOTONE *result)
SCIP_RETCODE SCIPexprhdlrEvalExpr(SCIP_EXPRHDLR *exprhdlr, SCIP_SET *set, BMS_BUFMEM *bufmem, SCIP_EXPR *expr, SCIP_Real *val, SCIP_Real *childrenvals, SCIP_SOL *sol)
void SCIPexprhdlrInit(SCIP_EXPRHDLR *exprhdlr, SCIP_SET *set)
SCIP_RETCODE SCIPexprRemoveChildren(SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_EXPR *expr)
SCIP_RETCODE SCIPexprhdlrCopyInclude(SCIP_EXPRHDLR *exprhdlr, SCIP_SET *targetset)
SCIP_RETCODE SCIPexprhdlrHashExpr(SCIP_EXPRHDLR *exprhdlr, SCIP_SET *set, SCIP_EXPR *expr, unsigned int *hashkey, unsigned int *childrenhashes)
SCIP_Bool SCIPexprIsValue(SCIP_SET *set, SCIP_EXPR *expr)
SCIP_RETCODE SCIPexprhdlrFwDiffExpr(SCIP_EXPRHDLR *exprhdlr, SCIP_SET *set, SCIP_EXPR *expr, SCIP_Real *dot, SCIP_SOL *direction)
void SCIPexprCapture(SCIP_EXPR *expr)
SCIP_RETCODE SCIPexprhdlrIntEvalExpr(SCIP_EXPRHDLR *exprhdlr, SCIP_SET *set, SCIP_EXPR *expr, SCIP_INTERVAL *interval, SCIP_DECL_EXPR_INTEVALVAR((*intevalvar)), void *intevalvardata)
static SCIP_RETCODE quadDetectProcessExpr(SCIP_EXPR *expr, SCIP_HASHMAP *seenexpr, int *nquadterms, int *nlinterms)
SCIP_RETCODE SCIPexprhdlrBwFwDiffExpr(SCIP_EXPRHDLR *exprhdlr, SCIP_SET *set, SCIP_EXPR *expr, int childidx, SCIP_Real *bardot, SCIP_SOL *direction)
SCIP_RETCODE SCIPexprPrintDotFinal(SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_EXPRPRINTDATA **printdata)
SCIP_RETCODE SCIPexprAppendChild(SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_EXPR *expr, SCIP_EXPR *child)
SCIP_RETCODE SCIPexprDuplicateShallow(SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_EXPR *expr, SCIP_EXPR **copyexpr, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPexprhdlrParseExpr(SCIP_EXPRHDLR *exprhdlr, SCIP_SET *set, const char *string, const char **endstring, SCIP_EXPR **expr, SCIP_Bool *success, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
int SCIPexprhdlrCompareExpr(SCIP_SET *set, SCIP_EXPR *expr1, SCIP_EXPR *expr2)
SCIP_RETCODE SCIPexprhdlrCurvatureExpr(SCIP_EXPRHDLR *exprhdlr, SCIP_SET *set, SCIP_EXPR *expr, SCIP_EXPRCURV exprcurvature, SCIP_Bool *success, SCIP_EXPRCURV *childcurv)
SCIP_RETCODE SCIPexprDismantle(SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_MESSAGEHDLR *messagehdlr, FILE *file, SCIP_EXPR *expr)
SCIP_RETCODE SCIPexprCreate(SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_EXPR **expr, SCIP_EXPRHDLR *exprhdlr, SCIP_EXPRDATA *exprdata, int nchildren, SCIP_EXPR **children, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_Bool SCIPexprIsProduct(SCIP_SET *set, SCIP_EXPR *expr)
SCIP_RETCODE SCIPexprPrintDot(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_EXPRPRINTDATA *printdata, SCIP_EXPR *expr)
SCIP_Bool SCIPexprIsSum(SCIP_SET *set, SCIP_EXPR *expr)
SCIP_RETCODE SCIPexprRelease(SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_EXPR **rootexpr)
SCIP_RETCODE SCIPexprhdlrEstimateExpr(SCIP_EXPRHDLR *exprhdlr, SCIP_SET *set, SCIP_EXPR *expr, SCIP_INTERVAL *localbounds, SCIP_INTERVAL *globalbounds, SCIP_Real *refpoint, SCIP_Bool overestimate, SCIP_Real targetvalue, SCIP_Real *coefs, SCIP_Real *constant, SCIP_Bool *islocal, SCIP_Bool *success, SCIP_Bool *branchcand)
SCIP_RETCODE SCIPexprhdlrEvalFwDiffExpr(SCIP_EXPRHDLR *exprhdlr, SCIP_SET *set, BMS_BUFMEM *bufmem, SCIP_EXPR *expr, SCIP_Real *val, SCIP_Real *dot, SCIP_Real *childrenvals, SCIP_SOL *sol, SCIP_Real *childrendirs, SCIP_SOL *direction)
SCIP_RETCODE SCIPexprhdlrCreate(BMS_BLKMEM *blkmem, SCIP_EXPRHDLR **exprhdlr, const char *name, const char *desc, unsigned int precedence, SCIP_DECL_EXPREVAL((*eval)), SCIP_EXPRHDLRDATA *data)
static SCIP_RETCODE quadDetectGetQuadexprterm(BMS_BLKMEM *blkmem, SCIP_EXPR *expr, SCIP_HASHMAP *expr2idx, SCIP_HASHMAP *seenexpr, SCIP_QUADEXPR *quadexpr, SCIP_QUADEXPR_QUADTERM **quadexprterm)
void SCIPexprFreeQuadratic(BMS_BLKMEM *blkmem, SCIP_EXPR *expr)
SCIP_RETCODE SCIPexprEval(SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_EXPR *expr, SCIP_SOL *sol, SCIP_Longint soltag)
private functions to work with algebraic expressions
void SCIPexpriterFree(SCIP_EXPRITER **iterator)
SCIP_RETCODE SCIPexpriterCreate(SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_EXPRITER **iterator)
static SCIP_RETCODE eval(SCIP *scip, SCIP_EXPR *expr, SCIP_EXPRINTDATA *exprintdata, const vector< Type > &x, Type &val)
void SCIPhashmapFree(SCIP_HASHMAP **hashmap)
int SCIPhashmapGetImageInt(SCIP_HASHMAP *hashmap, void *origin)
void * SCIPhashmapGetImage(SCIP_HASHMAP *hashmap, void *origin)
SCIP_RETCODE SCIPhashmapInsert(SCIP_HASHMAP *hashmap, void *origin, void *image)
int SCIPhashmapGetNEntries(SCIP_HASHMAP *hashmap)
SCIP_HASHMAPENTRY * SCIPhashmapGetEntry(SCIP_HASHMAP *hashmap, int entryidx)
SCIP_RETCODE SCIPhashmapCreate(SCIP_HASHMAP **hashmap, BMS_BLKMEM *blkmem, int mapsize)
void * SCIPhashmapEntryGetOrigin(SCIP_HASHMAPENTRY *entry)
SCIP_Bool SCIPhashmapExists(SCIP_HASHMAP *hashmap, void *origin)
SCIP_RETCODE SCIPhashmapInsertInt(SCIP_HASHMAP *hashmap, void *origin, int image)
SCIP_RETCODE SCIPhashmapSetImageInt(SCIP_HASHMAP *hashmap, void *origin, int image)
SCIP_RETCODE SCIPcallLapackDsyevIpopt(SCIP_Bool computeeigenvectors, int N, SCIP_Real *a, SCIP_Real *w)
SCIP_Bool SCIPisIpoptAvailableIpopt(void)
unsigned int SCIPcalcFibHash(SCIP_Real v)
const char * SCIPexprhdlrGetName(SCIP_EXPRHDLR *exprhdlr)
SCIP_Real SCIPexprhdlrGetEstimateTime(SCIP_EXPRHDLR *exprhdlr)
SCIP_Bool SCIPexprhdlrHasSimplify(SCIP_EXPRHDLR *exprhdlr)
SCIP_Longint SCIPexprhdlrGetNDomainReductions(SCIP_EXPRHDLR *exprhdlr)
void SCIPexprhdlrSetCompare(SCIP_EXPRHDLR *exprhdlr,)
void SCIPexprhdlrSetIntegrality(SCIP_EXPRHDLR *exprhdlr,)
void SCIPexprhdlrSetCurvature(SCIP_EXPRHDLR *exprhdlr,)
SCIP_Bool SCIPexprhdlrHasCurvature(SCIP_EXPRHDLR *exprhdlr)
void SCIPexprhdlrSetParse(SCIP_EXPRHDLR *exprhdlr,)
void SCIPexprhdlrIncrementNDomainReductions(SCIP_EXPRHDLR *exprhdlr, int nreductions)
SCIP_EXPRHDLRDATA * SCIPexprhdlrGetData(SCIP_EXPRHDLR *exprhdlr)
SCIP_Real SCIPexprhdlrGetReversepropTime(SCIP_EXPRHDLR *exprhdlr)
unsigned int SCIPexprhdlrGetPrecedence(SCIP_EXPRHDLR *exprhdlr)
void SCIPexprhdlrIncrementNBranchings(SCIP_EXPRHDLR *exprhdlr)
SCIP_Longint SCIPexprhdlrGetNReversepropCalls(SCIP_EXPRHDLR *exprhdlr)
void SCIPexprhdlrSetIntEval(SCIP_EXPRHDLR *exprhdlr,)
void SCIPexprhdlrSetMonotonicity(SCIP_EXPRHDLR *exprhdlr,)
const char * SCIPexprhdlrGetDescription(SCIP_EXPRHDLR *exprhdlr)
SCIP_Bool SCIPexprhdlrHasFwdiff(SCIP_EXPRHDLR *exprhdlr)
SCIP_Bool SCIPexprhdlrHasMonotonicity(SCIP_EXPRHDLR *exprhdlr)
void SCIPexprhdlrSetReverseProp(SCIP_EXPRHDLR *exprhdlr,)
SCIP_Bool SCIPexprhdlrHasReverseProp(SCIP_EXPRHDLR *exprhdlr)
unsigned int SCIPexprhdlrGetNCreated(SCIP_EXPRHDLR *exprhdlr)
SCIP_Bool SCIPexprhdlrHasInitEstimates(SCIP_EXPRHDLR *exprhdlr)
SCIP_Longint SCIPexprhdlrGetNBranchings(SCIP_EXPRHDLR *exprhdlr)
SCIP_Bool SCIPexprhdlrHasPrint(SCIP_EXPRHDLR *exprhdlr)
SCIP_Longint SCIPexprhdlrGetNSimplifyCalls(SCIP_EXPRHDLR *exprhdlr)
SCIP_Real SCIPexprhdlrGetIntevalTime(SCIP_EXPRHDLR *exprhdlr)
void SCIPexprhdlrSetHash(SCIP_EXPRHDLR *exprhdlr,)
SCIP_Bool SCIPexprhdlrHasEstimate(SCIP_EXPRHDLR *exprhdlr)
SCIP_Real SCIPexprhdlrGetSimplifyTime(SCIP_EXPRHDLR *exprhdlr)
SCIP_Longint SCIPexprhdlrGetNIntevalCalls(SCIP_EXPRHDLR *exprhdlr)
SCIP_Longint SCIPexprhdlrGetNSimplifications(SCIP_EXPRHDLR *exprhdlr)
void SCIPexprhdlrSetSimplify(SCIP_EXPRHDLR *exprhdlr,)
SCIP_Longint SCIPexprhdlrGetNCutoffs(SCIP_EXPRHDLR *exprhdlr)
void SCIPexprhdlrSetDiff(SCIP_EXPRHDLR *exprhdlr, SCIP_DECL_EXPRBWDIFF((*bwdiff)), SCIP_DECL_EXPRFWDIFF((*fwdiff)),)
void SCIPexprhdlrSetCopyFreeHdlr(SCIP_EXPRHDLR *exprhdlr, SCIP_DECL_EXPRCOPYHDLR((*copyhdlr)),)
void SCIPexprhdlrSetPrint(SCIP_EXPRHDLR *exprhdlr,)
SCIP_Bool SCIPexprhdlrHasIntEval(SCIP_EXPRHDLR *exprhdlr)
SCIP_Bool SCIPexprhdlrHasBwdiff(SCIP_EXPRHDLR *exprhdlr)
SCIP_Longint SCIPexprhdlrGetNEstimateCalls(SCIP_EXPRHDLR *exprhdlr)
void SCIPexprhdlrSetCopyFreeData(SCIP_EXPRHDLR *exprhdlr, SCIP_DECL_EXPRCOPYDATA((*copydata)),)
void SCIPexprhdlrSetEstimate(SCIP_EXPRHDLR *exprhdlr, SCIP_DECL_EXPRINITESTIMATES((*initestimates)),)
void SCIPexprSetActivity(SCIP_EXPR *expr, SCIP_INTERVAL activity, SCIP_Longint activitytag)
void SCIPexprSetData(SCIP_EXPR *expr, SCIP_EXPRDATA *exprdata)
int SCIPexprGetNChildren(SCIP_EXPR *expr)
void SCIPexprGetQuadraticBilinTerm(SCIP_EXPR *expr, int termidx, SCIP_EXPR **expr1, SCIP_EXPR **expr2, SCIP_Real *coef, int *pos2, SCIP_EXPR **prodexpr)
SCIP_Real SCIPgetExponentExprPow(SCIP_EXPR *expr)
SCIP_Bool SCIPexpriterIsEnd(SCIP_EXPRITER *iterator)
void SCIPexprSetCurvature(SCIP_EXPR *expr, SCIP_EXPRCURV curvature)
SCIP_EXPR * SCIPexpriterSkipDFS(SCIP_EXPRITER *iterator)
SCIP_EXPR_OWNERDATA * SCIPexprGetOwnerData(SCIP_EXPR *expr)
SCIP_Real SCIPexprGetDerivative(SCIP_EXPR *expr)
SCIP_Longint SCIPexprGetEvalTag(SCIP_EXPR *expr)
SCIP_Bool SCIPexprIsIntegral(SCIP_EXPR *expr)
SCIP_Bool SCIPexprAreQuadraticExprsVariables(SCIP_EXPR *expr)
void SCIPexprGetQuadraticData(SCIP_EXPR *expr, SCIP_Real *constant, int *nlinexprs, SCIP_EXPR ***linexprs, SCIP_Real **lincoefs, int *nquadexprs, int *nbilinexprs, SCIP_Real **eigenvalues, SCIP_Real **eigenvectors)
SCIP_Real * SCIPgetCoefsExprSum(SCIP_EXPR *expr)
SCIP_EXPRITER_USERDATA SCIPexpriterGetCurrentUserData(SCIP_EXPRITER *iterator)
SCIP_Real SCIPgetCoefExprProduct(SCIP_EXPR *expr)
SCIP_EXPR * SCIPexpriterGetCurrent(SCIP_EXPRITER *iterator)
void SCIPexpriterSetStagesDFS(SCIP_EXPRITER *iterator, SCIP_EXPRITER_STAGE stopstages)
SCIP_Real SCIPexprGetDot(SCIP_EXPR *expr)
SCIP_EXPRDATA * SCIPexprGetData(SCIP_EXPR *expr)
void SCIPexprSetIntegrality(SCIP_EXPR *expr, SCIP_Bool isintegral)
SCIP_RETCODE SCIPprintExpr(SCIP *scip, SCIP_EXPR *expr, FILE *file)
SCIP_EXPRCURV SCIPexprGetCurvature(SCIP_EXPR *expr)
SCIP_EXPR * SCIPexpriterGetParentDFS(SCIP_EXPRITER *iterator)
SCIP_Real SCIPgetValueExprValue(SCIP_EXPR *expr)
void SCIPexpriterSetCurrentUserData(SCIP_EXPRITER *iterator, SCIP_EXPRITER_USERDATA userdata)
SCIP_Real SCIPexprGetEvalValue(SCIP_EXPR *expr)
SCIP_Longint SCIPexprGetActivityTag(SCIP_EXPR *expr)
SCIP_EXPR * SCIPexpriterGetNext(SCIP_EXPRITER *iterator)
SCIP_Real SCIPexprGetBardot(SCIP_EXPR *expr)
SCIP_EXPR ** SCIPexprGetChildren(SCIP_EXPR *expr)
SCIP_Real SCIPgetConstantExprSum(SCIP_EXPR *expr)
SCIP_VAR * SCIPgetVarExprVar(SCIP_EXPR *expr)
SCIP_INTERVAL SCIPexprGetActivity(SCIP_EXPR *expr)
void SCIPexprGetQuadraticQuadTerm(SCIP_EXPR *quadexpr, int termidx, SCIP_EXPR **expr, SCIP_Real *lincoef, SCIP_Real *sqrcoef, int *nadjbilin, int **adjbilin, SCIP_EXPR **sqrexpr)
int SCIPexpriterGetChildIdxDFS(SCIP_EXPRITER *iterator)
SCIP_EXPRITER_USERDATA SCIPexpriterGetChildUserDataDFS(SCIP_EXPRITER *iterator)
SCIP_EXPRITER_STAGE SCIPexpriterGetStageDFS(SCIP_EXPRITER *iterator)
SCIP_RETCODE SCIPexpriterInit(SCIP_EXPRITER *iterator, SCIP_EXPR *expr, SCIP_EXPRITER_TYPE type, SCIP_Bool allowrevisit)
int SCIPexprGetNUses(SCIP_EXPR *expr)
SCIP_EXPRITER_USERDATA SCIPexpriterGetExprUserData(SCIP_EXPRITER *iterator, SCIP_EXPR *expr)
SCIP_Longint SCIPexprGetDiffTag(SCIP_EXPR *expr)
SCIP_EXPRHDLR * SCIPexprGetHdlr(SCIP_EXPR *expr)
SCIP_EXPR * SCIPexpriterGetChildExprDFS(SCIP_EXPRITER *iterator)
void SCIPintervalSetEntire(SCIP_Real infinity, SCIP_INTERVAL *resultant)
void SCIPintervalSetEmpty(SCIP_INTERVAL *resultant)
SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)
assert(minobj< SCIPgetCutoffbound(scip))
#define BMSduplicateBlockMemoryArray(mem, ptr, source, num)
#define BMSfreeBlockMemory(mem, ptr)
#define BMSallocBlockMemory(mem, ptr)
#define BMSfreeBlockMemoryArrayNull(mem, ptr, num)
#define BMSduplicateMemoryArray(ptr, source, num)
#define BMSfreeBufferMemoryArray(mem, ptr)
#define BMSfreeMemoryArray(ptr)
#define BMSallocBlockMemoryArray(mem, ptr, num)
#define BMSreallocBlockMemoryArray(mem, ptr, oldnum, newnum)
#define BMSallocClearBlockMemoryArray(mem, ptr, num)
#define BMSallocBufferMemoryArray(mem, ptr, num)
#define BMSallocClearBlockMemory(mem, ptr)
#define BMSallocClearBufferMemoryArray(mem, ptr, num)
struct BMS_BlkMem BMS_BLKMEM
#define BMSfreeMemoryArrayNull(ptr)
void SCIPmessageFPrintVerbInfo(SCIP_MESSAGEHDLR *messagehdlr, SCIP_VERBLEVEL verblevel, SCIP_VERBLEVEL msgverblevel, FILE *file, const char *formatstr,...)
void SCIPmessageFPrintInfo(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, const char *formatstr,...)
void SCIPmessagePrintWarning(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...)
public data structures and miscellaneous methods
public methods for problem variables
SCIP_Real SCIPsetFloor(SCIP_SET *set, SCIP_Real val)
SCIP_EXPRHDLR * SCIPsetFindExprhdlr(SCIP_SET *set, const char *name)
SCIP_Real SCIPsetCeil(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPsetIsPositive(SCIP_SET *set, SCIP_Real val)
SCIP_Real SCIPsetFrac(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPsetIsInfinity(SCIP_SET *set, SCIP_Real val)
int SCIPsetCalcMemGrowSize(SCIP_SET *set, int num)
SCIP_Bool SCIPsetIsNegative(SCIP_SET *set, SCIP_Real val)
internal methods for global SCIP settings
#define SCIPsetDebugMsgPrint
internal methods for storing primal CIP solutions
SCIP_EXPR_OWNERDATA * ownerdata
SCIP_Longint nsimplifycalls
SCIP_Longint nestimatecalls
SCIP_CLOCK * simplifytime
SCIP_CLOCK * estimatetime
SCIP_Longint nintevalcalls
SCIP_Longint nbranchscores
SCIP_Bool curvaturechecked
SCIP_QUADEXPR_QUADTERM * quadexprterms
SCIP_Bool eigeninfostored
SCIP_Bool allexprsarevars
SCIP_QUADEXPR_BILINTERM * bilinexprterms
SCIP_Longint exprlastdifftag
structure definitions related to algebraic expressions
datastructures for global SCIP settings
datastructures for problem statistics
internal methods for branch and bound tree
#define SCIP_DECL_EXPR_OWNERCREATE(x)
#define SCIP_DECL_EXPRREVERSEPROP(x)
#define SCIP_DECL_EXPRINITESTIMATES(x)
#define SCIP_DECL_EXPRBWFWDIFF(x)
#define SCIP_DECL_EXPRCURVATURE(x)
struct SCIP_ExprhdlrData SCIP_EXPRHDLRDATA
struct SCIP_ExprData SCIP_EXPRDATA
#define SCIP_EXPRPRINT_EXPRSTRING
#define SCIP_DECL_EXPRFREEDATA(x)
#define SCIP_EXPR_MAXINITESTIMATES
#define SCIP_DECL_EXPRPARSE(x)
#define SCIP_DECL_EXPRBWDIFF(x)
#define SCIP_DECL_EXPRINTEVAL(x)
#define SCIP_EXPRPRINT_OWNER
#define SCIP_EXPRPRINT_ACTIVITYTAG
#define SCIP_DECL_EXPRMONOTONICITY(x)
#define SCIP_EXPRITER_VISITINGCHILD
struct SCIP_Expr_OwnerData SCIP_EXPR_OWNERDATA
unsigned int SCIP_EXPRPRINT_WHAT
#define SCIP_DECL_EXPR_INTEVALVAR(x)
#define SCIP_DECL_EXPRCOMPARE(x)
#define SCIP_DECL_EXPRSIMPLIFY(x)
#define SCIP_DECL_EXPREVAL(x)
#define SCIP_DECL_EXPRFWDIFF(x)
#define SCIP_EXPRPRINT_ACTIVITY
#define SCIP_DECL_EXPRHASH(x)
#define SCIP_DECL_EXPRCOPYHDLR(x)
#define SCIP_DECL_EXPRPRINT(x)
#define SCIP_EXPRPRINT_EVALVALUE
#define SCIP_DECL_EXPRFREEHDLR(x)
#define SCIP_DECL_EXPR_MAPEXPR(x)
#define SCIP_EXPRPRINT_EXPRHDLR
#define SCIP_EXPRPRINT_EVALTAG
#define SCIP_DECL_EXPRINTEGRALITY(x)
#define SCIP_EXPRPRINT_NUSES
#define SCIP_EXPRITER_VISITEDCHILD
struct SCIP_ExprPrintData SCIP_EXPRPRINTDATA
#define SCIP_DECL_EXPRCOPYDATA(x)
#define SCIP_EXPRITER_LEAVEEXPR
#define SCIP_EXPRITER_ALLSTAGES
#define SCIP_DECL_EXPRESTIMATE(x)
#define SCIP_EXPRITER_ENTEREXPR
unsigned int SCIP_EXPRITER_STAGE
#define SCIP_DECL_SORTPTRCOMP(x)
enum SCIP_Retcode SCIP_RETCODE