|
constraint handler for nonlinear constraints
- Author
- Stefan Vigerske
-
Ingmar Vierhaus (consparse)
Definition in file cons_nonlinear.c.
#include <assert.h>
#include <math.h>
#include <string.h>
#include <ctype.h>
#include "scip/cons_nonlinear.h"
#include "scip/cons_linear.h"
#include "scip/heur_trysol.h"
#include "scip/heur_subnlp.h"
#include "nlpi/exprinterpret.h"
#include "nlpi/nlpi_ipopt.h"
#include "scip/debug.h"
Go to the source code of this file.
|
static SCIP_RETCODE | catchLinearVarEvents (SCIP *scip, SCIP_CONS *cons, int linvarpos) |
|
static SCIP_RETCODE | dropLinearVarEvents (SCIP *scip, SCIP_CONS *cons, int linvarpos) |
|
static SCIP_RETCODE | lockLinearVariable (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real coef) |
|
static SCIP_RETCODE | unlockLinearVariable (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real coef) |
|
static void | consdataUpdateLinearActivity (SCIP *scip, SCIP_CONSDATA *consdata) |
|
static void | consdataUpdateLinearActivityLbChange (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_Real coef, SCIP_Real oldbnd, SCIP_Real newbnd) |
|
static void | consdataUpdateLinearActivityUbChange (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_Real coef, SCIP_Real oldbnd, SCIP_Real newbnd) |
|
static | SCIP_DECL_EVENTEXEC (processLinearVarEvent) |
|
static | SCIP_DECL_EVENTEXEC (processNonlinearVarEvent) |
|
static | SCIP_DECL_EXPRGRAPHVARADDED (exprgraphVarAdded) |
|
static | SCIP_DECL_EXPRGRAPHVARREMOVE (exprgraphVarRemove) |
|
static SCIP_RETCODE | consdataAddExprtrees (SCIP *scip, SCIP_CONSDATA *consdata, int nexprtrees, SCIP_EXPRTREE **exprtrees, SCIP_Real *coefs, SCIP_Bool copytrees) |
|
static SCIP_RETCODE | consdataSetExprtrees (SCIP *scip, SCIP_CONSDATA *consdata, int nexprtrees, SCIP_EXPRTREE **exprtrees, SCIP_Real *coefs, SCIP_Bool copytrees) |
|
static SCIP_RETCODE | consdataEnsureLinearVarsSize (SCIP *scip, SCIP_CONSDATA *consdata, int num) |
|
static SCIP_RETCODE | consdataCreate (SCIP *scip, SCIP_CONSDATA **consdata, SCIP_Real lhs, SCIP_Real rhs, int nlinvars, SCIP_VAR **linvars, SCIP_Real *lincoefs, int nexprtrees, SCIP_EXPRTREE **exprtrees, SCIP_Real *nonlincoefs, SCIP_Bool capturevars) |
|
static SCIP_RETCODE | consdataCreateEmpty (SCIP *scip, SCIP_CONSDATA **consdata) |
|
static SCIP_RETCODE | consdataFree (SCIP *scip, SCIP_CONSDATA **consdata) |
|
static void | consdataSortLinearVars (SCIP_CONSDATA *consdata) |
|
static void | consdataMoveLinearVar (SCIP_CONSDATA *consdata, int oldpos, int newpos) |
|
static SCIP_RETCODE | addLinearCoef (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real coef) |
|
static SCIP_RETCODE | delLinearCoefPos (SCIP *scip, SCIP_CONS *cons, int pos) |
|
static SCIP_RETCODE | chgLinearCoefPos (SCIP *scip, SCIP_CONS *cons, int pos, SCIP_Real newcoef) |
|
static SCIP_RETCODE | mergeAndCleanLinearVars (SCIP *scip, SCIP_CONS *cons) |
|
static SCIP_RETCODE | removeFixedLinearVariables (SCIP *scip, SCIP_CONS *cons) |
|
static SCIP_RETCODE | removeFixedNonlinearVariables (SCIP *scip, SCIP_CONSHDLR *conshdlr) |
|
static SCIP_RETCODE | splitOffLinearPart (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons) |
|
static SCIP_RETCODE | createNlRow (SCIP *scip, SCIP_CONS *cons) |
|
static SCIP_RETCODE | presolveUpgrade (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons, SCIP_Bool *upgraded, int *nupgdconss, int *naddconss) |
|
static SCIP_RETCODE | checkCurvature (SCIP *scip, SCIP_CONS *cons, SCIP_Bool expensivechecks, SCIP_Bool assumeconvex) |
|
static SCIP_RETCODE | reformReplaceNode (SCIP_EXPRGRAPH *exprgraph, SCIP_EXPRGRAPHNODE **node, SCIP_EXPRGRAPHNODE *replacement, SCIP_CONS **conss, int nconss) |
|
static SCIP_RETCODE | reformNode2Var (SCIP *scip, SCIP_EXPRGRAPH *exprgraph, SCIP_EXPRGRAPHNODE *node, SCIP_CONS **conss, int nconss, int *naddcons, SCIP_Bool donotmultaggr) |
|
static SCIP_RETCODE | reformEnsureChildrenMinCurvature (SCIP *scip, SCIP_EXPRGRAPH *exprgraph, SCIP_EXPRGRAPHNODE *node, SCIP_EXPRCURV mincurv, SCIP_CONS **conss, int nconss, int *naddcons) |
|
static SCIP_RETCODE | reformMonomial (SCIP *scip, SCIP_EXPRGRAPH *exprgraph, int nfactors, SCIP_EXPRGRAPHNODE **factors, SCIP_Real *exponents, SCIP_EXPRGRAPHNODE **resultnode, SCIP_Bool createauxcons, int *naddcons) |
|
static SCIP_RETCODE | reformulate (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss, int *naddcons) |
|
static SCIP_RETCODE | getGradientMaxElement (SCIP *scip, SCIP_EXPRINT *exprint, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool newsol, SCIP_Real *maxelem) |
|
static SCIP_RETCODE | computeViolation (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons, SCIP_SOL *sol) |
|
static SCIP_RETCODE | computeViolations (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss, SCIP_SOL *sol, SCIP_CONS **maxviolcon) |
|
static SCIP_RETCODE | addLinearization (SCIP *scip, SCIP_EXPRINT *exprint, SCIP_CONS *cons, int exprtreeidx, SCIP_Real *x, SCIP_Bool newx, SCIP_ROW *row, SCIP_Bool *success) |
|
static SCIP_RETCODE | addConcaveEstimatorUnivariate (SCIP *scip, SCIP_CONS *cons, int exprtreeidx, SCIP_ROW *row, SCIP_Bool *success) |
|
static SCIP_RETCODE | addConcaveEstimatorBivariate (SCIP *scip, SCIP_CONS *cons, int exprtreeidx, SCIP_Real *ref, SCIP_ROW *row, SCIP_Bool *success) |
|
static SCIP_RETCODE | addConcaveEstimatorMultivariate (SCIP *scip, SCIP_CONS *cons, int exprtreeidx, SCIP_Real *ref, SCIP_ROW *row, SCIP_Bool *success) |
|
static SCIP_RETCODE | getCoeffsAndConstantFromLinearExpr (SCIP_EXPR *expr, SCIP_Real scalar, SCIP_Real *varcoeffs, SCIP_Real *constant) |
|
static SCIP_RETCODE | addUserEstimator (SCIP *scip, SCIP_CONS *cons, int exprtreeidx, SCIP_Real *x, SCIP_Bool overestimate, SCIP_ROW *row, SCIP_Bool *success) |
|
static SCIP_RETCODE | addIntervalGradientEstimator (SCIP *scip, SCIP_EXPRINT *exprint, SCIP_CONS *cons, int exprtreeidx, SCIP_Real *x, SCIP_Bool newx, SCIP_Bool overestimate, SCIP_ROW *row, SCIP_Bool *success) |
|
static SCIP_RETCODE | generateCut (SCIP *scip, SCIP_EXPRINT *exprint, SCIP_CONS *cons, SCIP_Real **ref, SCIP_SOL *sol, SCIP_Bool newsol, SCIP_SIDETYPE side, SCIP_ROW **row, SCIP_Real maxrange, SCIP_Bool expensivecurvchecks, SCIP_Bool assumeconvex) |
|
static SCIP_RETCODE | separatePoint (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss, int nusefulconss, SCIP_SOL *sol, SCIP_Bool newsol, SCIP_Real minefficacy, SCIP_Bool inenforcement, SCIP_RESULT *result, SCIP_Real *bestefficacy) |
|
static SCIP_RETCODE | addLinearizationCuts (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss, SCIP_SOL *ref, SCIP_Bool *separatedlpsol, SCIP_Real minefficacy) |
|
static | SCIP_DECL_EVENTEXEC (processNewSolutionEvent) |
|
static SCIP_RETCODE | registerBranchingVariables (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss, int *nnotify) |
|
static SCIP_RETCODE | registerLargeLPValueVariableForBranching (SCIP *scip, SCIP_CONS **conss, int nconss, SCIP_VAR **brvar) |
|
static SCIP_RETCODE | replaceViolatedByLinearConstraints (SCIP *scip, SCIP_CONS **conss, int nconss, SCIP_Bool *addedcons, SCIP_Bool *reduceddom, SCIP_Bool *infeasible) |
|
static SCIP_RETCODE | propagateBoundsTightenVarLb (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real bnd, SCIP_RESULT *result, int *nchgbds) |
|
static SCIP_RETCODE | propagateBoundsTightenVarUb (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real bnd, SCIP_RESULT *result, int *nchgbds) |
|
static SCIP_RETCODE | propagateBoundsCons (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons, SCIP_RESULT *result, int *nchgbds, SCIP_Bool *redundant) |
|
static SCIP_RETCODE | propagateConstraintSides (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss, SCIP_RESULT *result, int *nchgbds) |
|
static SCIP_RETCODE | propagateBounds (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss, SCIP_Bool needclear, SCIP_RESULT *result, int *nchgbds, int *ndelconss) |
|
static void | consdataFindUnlockedLinearVar (SCIP *scip, SCIP_CONSDATA *consdata) |
|
static SCIP_RETCODE | proposeFeasibleSolution (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss, SCIP_SOL *sol, SCIP_Bool *success) |
|
static | SCIP_DECL_CONSHDLRCOPY (conshdlrCopyNonlinear) |
|
static | SCIP_DECL_CONSFREE (consFreeNonlinear) |
|
static | SCIP_DECL_CONSINIT (consInitNonlinear) |
|
static | SCIP_DECL_CONSEXIT (consExitNonlinear) |
|
static | SCIP_DECL_CONSINITPRE (consInitpreNonlinear) |
|
static | SCIP_DECL_CONSEXITPRE (consExitpreNonlinear) |
|
static | SCIP_DECL_CONSINITSOL (consInitsolNonlinear) |
|
static | SCIP_DECL_CONSEXITSOL (consExitsolNonlinear) |
|
static | SCIP_DECL_CONSDELETE (consDeleteNonlinear) |
|
static | SCIP_DECL_CONSTRANS (consTransNonlinear) |
|
static | SCIP_DECL_CONSINITLP (consInitlpNonlinear) |
|
static | SCIP_DECL_CONSSEPALP (consSepalpNonlinear) |
|
static | SCIP_DECL_CONSSEPASOL (consSepasolNonlinear) |
|
static | SCIP_DECL_CONSENFOLP (consEnfolpNonlinear) |
|
static | SCIP_DECL_CONSENFOPS (consEnfopsNonlinear) |
|
static | SCIP_DECL_CONSCHECK (consCheckNonlinear) |
|
static | SCIP_DECL_CONSPROP (consPropNonlinear) |
|
static | SCIP_DECL_CONSPRESOL (consPresolNonlinear) |
|
static | SCIP_DECL_CONSLOCK (consLockNonlinear) |
|
static | SCIP_DECL_CONSACTIVE (consActiveNonlinear) |
|
static | SCIP_DECL_CONSDEACTIVE (consDeactiveNonlinear) |
|
static | SCIP_DECL_CONSENABLE (consEnableNonlinear) |
|
static | SCIP_DECL_CONSDISABLE (consDisableNonlinear) |
|
static | SCIP_DECL_CONSPRINT (consPrintNonlinear) |
|
static | SCIP_DECL_CONSCOPY (consCopyNonlinear) |
|
static | SCIP_DECL_CONSGETVARS (consGetVarsNonlinear) |
|
static | SCIP_DECL_CONSGETNVARS (consGetNVarsNonlinear) |
|
static | SCIP_DECL_CONSPARSE (consParseNonlinear) |
|
SCIP_RETCODE | SCIPincludeConshdlrNonlinear (SCIP *scip) |
|
SCIP_RETCODE | SCIPincludeNonlinconsUpgrade (SCIP *scip, SCIP_DECL_NONLINCONSUPGD((*nonlinconsupgd)), SCIP_DECL_EXPRGRAPHNODEREFORM((*nodereform)), int priority, SCIP_Bool active, const char *conshdlrname) |
|
SCIP_RETCODE | SCIPcreateConsNonlinear (SCIP *scip, SCIP_CONS **cons, const char *name, int nlinvars, SCIP_VAR **linvars, SCIP_Real *lincoefs, int nexprtrees, SCIP_EXPRTREE **exprtrees, SCIP_Real *nonlincoefs, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode) |
|
SCIP_RETCODE | SCIPcreateConsBasicNonlinear (SCIP *scip, SCIP_CONS **cons, const char *name, int nlinvars, SCIP_VAR **linvars, SCIP_Real *lincoefs, int nexprtrees, SCIP_EXPRTREE **exprtrees, SCIP_Real *nonlincoefs, SCIP_Real lhs, SCIP_Real rhs) |
|
SCIP_RETCODE | SCIPcreateConsNonlinear2 (SCIP *scip, SCIP_CONS **cons, const char *name, int nlinvars, SCIP_VAR **linvars, SCIP_Real *lincoefs, SCIP_EXPRGRAPHNODE *exprgraphnode, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode) |
|
SCIP_RETCODE | SCIPcreateConsBasicNonlinear2 (SCIP *scip, SCIP_CONS **cons, const char *name, int nlinvars, SCIP_VAR **linvars, SCIP_Real *lincoefs, SCIP_EXPRGRAPHNODE *exprgraphnode, SCIP_Real lhs, SCIP_Real rhs) |
|
SCIP_RETCODE | SCIPaddLinearVarNonlinear (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real coef) |
|
SCIP_RETCODE | SCIPsetExprtreesNonlinear (SCIP *scip, SCIP_CONS *cons, int nexprtrees, SCIP_EXPRTREE **exprtrees, SCIP_Real *coefs) |
|
SCIP_RETCODE | SCIPaddExprtreesNonlinear (SCIP *scip, SCIP_CONS *cons, int nexprtrees, SCIP_EXPRTREE **exprtrees, SCIP_Real *coefs) |
|
SCIP_RETCODE | SCIPgetNlRowNonlinear (SCIP *scip, SCIP_CONS *cons, SCIP_NLROW **nlrow) |
|
int | SCIPgetNLinearVarsNonlinear (SCIP *scip, SCIP_CONS *cons) |
|
SCIP_VAR ** | SCIPgetLinearVarsNonlinear (SCIP *scip, SCIP_CONS *cons) |
|
SCIP_Real * | SCIPgetLinearCoefsNonlinear (SCIP *scip, SCIP_CONS *cons) |
|
int | SCIPgetNExprtreesNonlinear (SCIP *scip, SCIP_CONS *cons) |
|
SCIP_EXPRTREE ** | SCIPgetExprtreesNonlinear (SCIP *scip, SCIP_CONS *cons) |
|
SCIP_Real * | SCIPgetExprtreeCoefsNonlinear (SCIP *scip, SCIP_CONS *cons) |
|
SCIP_EXPRGRAPHNODE * | SCIPgetExprgraphNodeNonlinear (SCIP *scip, SCIP_CONS *cons) |
|
SCIP_Real | SCIPgetLhsNonlinear (SCIP *scip, SCIP_CONS *cons) |
|
SCIP_Real | SCIPgetRhsNonlinear (SCIP *scip, SCIP_CONS *cons) |
|
SCIP_RETCODE | SCIPcheckCurvatureNonlinear (SCIP *scip, SCIP_CONS *cons) |
|
SCIP_RETCODE | SCIPgetCurvatureNonlinear (SCIP *scip, SCIP_CONS *cons, SCIP_Bool checkcurv, SCIP_EXPRCURV *curvature) |
|
SCIP_RETCODE | SCIPgetExprtreeCurvaturesNonlinear (SCIP *scip, SCIP_CONS *cons, SCIP_Bool checkcurv, SCIP_EXPRCURV **curvatures) |
|
SCIP_RETCODE | SCIPgetViolationNonlinear (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Real *violation) |
|
SCIP_EXPRGRAPH * | SCIPgetExprgraphNonlinear (SCIP *scip, SCIP_CONSHDLR *conshdlr) |
|
SCIP_RETCODE | SCIPcomputeHyperplaneThreePoints (SCIP *scip, SCIP_Real a1, SCIP_Real a2, SCIP_Real a3, SCIP_Real b1, SCIP_Real b2, SCIP_Real b3, SCIP_Real c1, SCIP_Real c2, SCIP_Real c3, SCIP_Real *alpha, SCIP_Real *beta, SCIP_Real *gamma_, SCIP_Real *delta) |
|
#define CONSHDLR_NAME "nonlinear" |
#define CONSHDLR_DESC "constraint handler for nonlinear constraints" |
#define CONSHDLR_SEPAPRIORITY 10 |
#define CONSHDLR_ENFOPRIORITY -60 |
#define CONSHDLR_CHECKPRIORITY -4000010 |
#define CONSHDLR_SEPAFREQ 1 |
#define CONSHDLR_PROPFREQ 1 |
#define CONSHDLR_EAGERFREQ 100 |
frequency for using all instead of only the useful constraints in separation, propagation and enforcement, -1 for no eager evaluations, 0 for first only
Definition at line 45 of file cons_nonlinear.c.
Referenced by SCIPincludeConshdlrNonlinear().
#define CONSHDLR_MAXPREROUNDS -1 |
#define CONSHDLR_DELAYSEPA FALSE |
#define CONSHDLR_DELAYPROP FALSE |
#define CONSHDLR_NEEDSCONS TRUE |
#define INTERVALINFTY 1E+43 |
value for infinity in interval operations
Definition at line 56 of file cons_nonlinear.c.
Referenced by addIntervalGradientEstimator(), addUserEstimator(), checkCurvature(), consdataUpdateLinearActivity(), consdataUpdateLinearActivityLbChange(), consdataUpdateLinearActivityUbChange(), propagateBounds(), propagateBoundsCons(), propagateBoundsTightenVarLb(), propagateBoundsTightenVarUb(), propagateConstraintSides(), reformEnsureChildrenMinCurvature(), reformMonomial(), reformNode2Var(), reformulate(), replaceViolatedByLinearConstraints(), SCIP_DECL_CONSPRESOL(), SCIP_DECL_EVENTEXEC(), and SCIP_DECL_EXPRGRAPHVARADDED().
#define BOUNDTIGHTENING_MINSTRENGTH 0.05 |
#define INITLPMAXVARVAL 1000.0 |
#define infty2infty |
( |
|
infty1, |
|
|
|
infty2, |
|
|
|
val |
|
) |
| ((val) >= (infty1) ? (infty2) : (val)) |
- Parameters
-
scip | SCIP data structure |
cons | constraint for which to catch bound change events |
linvarpos | position of variable in linear variables array |
Definition at line 181 of file cons_nonlinear.c.
References LinVarEventData::consdata, LinVarEventData::conshdlrdata, dropLinearVarEvents(), FALSE, LinVarEventData::filterpos, NULL, SCIP_CALL, SCIP_EVENTTYPE_LBCHANGED, SCIP_EVENTTYPE_UBCHANGED, SCIP_EVENTTYPE_VARFIXED, SCIP_INVALID, SCIP_OKAY, SCIPallocBlockMemory, SCIPallocBlockMemoryArray, SCIPcatchVarEvent(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetData(), SCIPconsIsEnabled(), SCIPconsIsTransformed(), SCIPisInfinity(), and LinVarEventData::varidx.
Referenced by addLinearCoef(), chgLinearCoefPos(), and SCIP_DECL_CONSENABLE().
- Parameters
-
scip | SCIP data structure |
cons | constraint for which to catch bound change events |
linvarpos | position of variable in linear variables array |
Definition at line 251 of file cons_nonlinear.c.
References LinVarEventData::consdata, LinVarEventData::conshdlrdata, lockLinearVariable(), NULL, SCIP_CALL, SCIP_EVENTTYPE_LBCHANGED, SCIP_EVENTTYPE_UBCHANGED, SCIP_EVENTTYPE_VARFIXED, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetData(), SCIPconsIsTransformed(), SCIPdropVarEvent(), SCIPfreeBlockMemory, and SCIPisInfinity().
Referenced by catchLinearVarEvents(), chgLinearCoefPos(), delLinearCoefPos(), and SCIP_DECL_CONSDISABLE().
computes the minimal and maximal activity for the linear part in a constraint data only sums up terms that contribute finite values gives the number of terms that contribute infinite values only computes those activities where the corresponding side of the constraint is finite
- Parameters
-
scip | SCIP data structure |
consdata | constraint data |
Definition at line 374 of file cons_nonlinear.c.
References LinVarEventData::consdata, consdataUpdateLinearActivityLbChange(), INTERVALINFTY, NULL, SCIP_INVALID, SCIP_Real, SCIPintervalGetRoundingMode(), SCIPintervalSetRoundingMode(), SCIPintervalSetRoundingModeDownwards(), SCIPintervalSetRoundingModeUpwards(), SCIPisInfinity(), SCIPvarGetLbLocal(), and SCIPvarGetUbLocal().
Referenced by propagateBoundsCons(), and unlockLinearVariable().
update the linear activities after a change in the lower bound of a variable
- Parameters
-
scip | SCIP data structure |
consdata | constraint data |
coef | coefficient of variable in constraint |
oldbnd | previous lower bound of variable |
newbnd | new lower bound of variable |
Definition at line 484 of file cons_nonlinear.c.
References LinVarEventData::consdata, consdataUpdateLinearActivityUbChange(), INTERVALINFTY, NULL, SCIP_INVALID, SCIPintervalGetRoundingMode(), SCIPintervalNegateReal(), SCIPintervalSetRoundingMode(), SCIPintervalSetRoundingModeDownwards(), SCIPintervalSetRoundingModeUpwards(), and SCIPisInfinity().
Referenced by consdataUpdateLinearActivity(), and SCIP_DECL_EVENTEXEC().
update the linear activities after a change in the upper bound of a variable
- Parameters
-
scip | SCIP data structure |
consdata | constraint data |
coef | coefficient of variable in constraint |
oldbnd | previous lower bound of variable |
newbnd | new lower bound of variable |
Definition at line 581 of file cons_nonlinear.c.
References LinVarEventData::consdata, INTERVALINFTY, NULL, SCIP_DECL_EVENTEXEC(), SCIP_INVALID, SCIPintervalGetRoundingMode(), SCIPintervalNegateReal(), SCIPintervalSetRoundingMode(), SCIPintervalSetRoundingModeDownwards(), SCIPintervalSetRoundingModeUpwards(), and SCIPisInfinity().
Referenced by consdataUpdateLinearActivityLbChange(), and SCIP_DECL_EVENTEXEC().
static SCIP_DECL_EVENTEXEC |
( |
processLinearVarEvent |
| ) |
|
|
static |
processes variable fixing or bound change event
Definition at line 677 of file cons_nonlinear.c.
References LinVarEventData::consdata, consdataUpdateLinearActivityLbChange(), consdataUpdateLinearActivityUbChange(), LinVarEventData::conshdlrdata, FALSE, NULL, SCIP_EVENTTYPE_BOUNDCHANGED, SCIP_EVENTTYPE_BOUNDTIGHTENED, SCIP_EVENTTYPE_LBCHANGED, SCIP_EVENTTYPE_VARFIXED, SCIP_OKAY, SCIPeventGetNewbound(), SCIPeventGetOldbound(), SCIPeventGetType(), and LinVarEventData::varidx.
Referenced by addLinearizationCuts(), and consdataUpdateLinearActivityUbChange().
static SCIP_DECL_EVENTEXEC |
( |
processNonlinearVarEvent |
| ) |
|
|
static |
processes bound change events for variables in expression graph
Definition at line 723 of file cons_nonlinear.c.
References LinVarEventData::conshdlrdata, FALSE, infty2infty, INTERVALINFTY, NULL, SCIP_DECL_EXPRGRAPHVARADDED(), SCIP_EVENTTYPE_BOUNDCHANGED, SCIP_EVENTTYPE_BOUNDTIGHTENED, SCIP_EVENTTYPE_LBCHANGED, SCIP_EVENTTYPE_VARFIXED, SCIP_OKAY, SCIP_Real, SCIPdebugMessage, SCIPepsilon(), SCIPeventGetNewbound(), SCIPeventGetOldbound(), SCIPeventGetType(), SCIPeventGetVar(), SCIPeventhdlrGetData(), SCIPexprgraphSetVarNodeLb(), SCIPexprgraphSetVarNodeUb(), SCIPinfinity(), and SCIPvarGetName().
static SCIP_DECL_EXPRGRAPHVARADDED |
( |
exprgraphVarAdded |
| ) |
|
|
static |
callback method for variable addition in expression graph
Definition at line 786 of file cons_nonlinear.c.
References LinVarEventData::conshdlrdata, FALSE, infty2infty, INTERVALINFTY, MAX, MIN, NULL, SCIP_CALL, SCIP_DECL_EXPRGRAPHVARREMOVE(), SCIP_EVENTTYPE_BOUNDCHANGED, SCIP_EVENTTYPE_VARFIXED, SCIP_OKAY, SCIPaddVarLocks(), SCIPcaptureVar(), SCIPcatchVarEvent(), SCIPdebugMessage, SCIPexprgraphSetVarNodeBounds(), SCIPinfinity(), SCIPintervalSetBounds(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbLocal(), and SCIPvarIsActive().
Referenced by SCIP_DECL_EVENTEXEC().
static SCIP_DECL_EXPRGRAPHVARREMOVE |
( |
exprgraphVarRemove |
| ) |
|
|
static |
callback method for variable removal in expression graph
Definition at line 827 of file cons_nonlinear.c.
References consdataAddExprtrees(), LinVarEventData::conshdlrdata, NULL, SCIP_CALL, SCIP_EVENTTYPE_BOUNDCHANGED, SCIP_EVENTTYPE_VARFIXED, SCIP_OKAY, SCIPaddVarLocks(), SCIPdebugMessage, SCIPdropVarEvent(), SCIPreleaseVar(), and SCIPvarGetName().
Referenced by SCIP_DECL_EXPRGRAPHVARADDED().
- Parameters
-
scip | SCIP data structure |
consdata | nonlinear constraint data |
nexprtrees | number of expression trees |
exprtrees | expression trees |
coefs | coefficients of expression trees, or NULL if all 1.0 |
copytrees | whether trees should be copied or ownership should be assumed |
Definition at line 856 of file cons_nonlinear.c.
References LinVarEventData::consdata, consdataSetExprtrees(), FALSE, NULL, SCIP_CALL, SCIP_EXPRCURV_UNKNOWN, SCIP_INVALID, SCIP_OKAY, SCIPallocBlockMemoryArray, SCIPblkmem(), SCIPexprtreeCopy(), SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPreallocBlockMemoryArray, and SCIPreleaseNlRow().
Referenced by consdataSetExprtrees(), SCIP_DECL_EXPRGRAPHVARREMOVE(), and SCIPaddExprtreesNonlinear().
- Parameters
-
scip | SCIP data structure |
consdata | nonlinear constraint data |
nexprtrees | number of expression trees |
exprtrees | expression trees |
coefs | coefficients of expression trees, or NULL if all 1.0 |
copytrees | whether trees should be copied or ownership should be assumed |
Definition at line 929 of file cons_nonlinear.c.
References LinVarEventData::consdata, consdataAddExprtrees(), consdataEnsureLinearVarsSize(), FALSE, NULL, SCIP_CALL, SCIP_EXPRCURV_LINEAR, SCIP_INVALID, SCIP_OKAY, SCIPexprtreeFree(), SCIPfreeBlockMemoryArray, SCIPreleaseNlRow(), and TRUE.
Referenced by consdataAddExprtrees(), consdataCreate(), SCIP_DECL_CONSACTIVE(), SCIP_DECL_CONSDEACTIVE(), SCIP_DECL_CONSEXITPRE(), SCIP_DECL_CONSINITPRE(), SCIPcreateConsNonlinear(), and SCIPsetExprtreesNonlinear().
ensures, that linear vars and coefs arrays can store at least num entries
- Parameters
-
scip | SCIP data structure |
consdata | nonlinear constraint data |
num | minimum number of entries to store |
Definition at line 979 of file cons_nonlinear.c.
References LinVarEventData::consdata, consdataCreate(), NULL, SCIP_CALL, SCIP_OKAY, SCIPcalcMemGrowSize(), and SCIPreallocBlockMemoryArray.
Referenced by addLinearCoef(), consdataSetExprtrees(), removeFixedLinearVariables(), SCIPcreateConsNonlinear(), and SCIPcreateConsNonlinear2().
static SCIP_RETCODE consdataCreate |
( |
SCIP * |
scip, |
|
|
SCIP_CONSDATA ** |
consdata, |
|
|
SCIP_Real |
lhs, |
|
|
SCIP_Real |
rhs, |
|
|
int |
nlinvars, |
|
|
SCIP_VAR ** |
linvars, |
|
|
SCIP_Real * |
lincoefs, |
|
|
int |
nexprtrees, |
|
|
SCIP_EXPRTREE ** |
exprtrees, |
|
|
SCIP_Real * |
nonlincoefs, |
|
|
SCIP_Bool |
capturevars |
|
) |
| |
|
static |
creates constraint data structure
- Parameters
-
scip | SCIP data structure |
consdata | a buffer to store pointer to new constraint data |
lhs | left hand side of constraint |
rhs | right hand side of constraint |
nlinvars | number of linear variables |
linvars | array of linear variables |
lincoefs | array of coefficients of linear variables |
nexprtrees | number of expression trees |
exprtrees | expression trees |
nonlincoefs | coefficients of expression trees |
capturevars | whether we should capture variables |
Definition at line 1009 of file cons_nonlinear.c.
References BMSclearMemory, LinVarEventData::consdata, consdataCreateEmpty(), consdataSetExprtrees(), NULL, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIPallocBlockMemory, SCIPcaptureVar(), SCIPduplicateBlockMemoryArray, SCIPisInfinity(), and TRUE.
Referenced by consdataEnsureLinearVarsSize(), and SCIP_DECL_CONSTRANS().
creates empty constraint data structure
- Parameters
-
scip | SCIP data structure |
consdata | a buffer to store pointer to new constraint data |
Definition at line 1077 of file cons_nonlinear.c.
References BMSclearMemory, LinVarEventData::consdata, consdataFree(), NULL, SCIP_CALL, SCIP_EXPRCURV_LINEAR, SCIP_INVALID, SCIP_OKAY, SCIPallocBlockMemory, SCIPinfinity(), and TRUE.
Referenced by consdataCreate(), SCIPcreateConsNonlinear(), and SCIPcreateConsNonlinear2().
frees constraint data structure
- Parameters
-
scip | SCIP data structure |
consdata | pointer to constraint data to free |
Definition at line 1115 of file cons_nonlinear.c.
References LinVarEventData::consdata, consdataSortLinearVars(), NULL, SCIP_CALL, SCIP_OKAY, SCIPexprtreeFree(), SCIPfreeBlockMemory, SCIPfreeBlockMemoryArray, SCIPfreeBlockMemoryArrayNull, SCIPreleaseNlRow(), and SCIPreleaseVar().
Referenced by consdataCreateEmpty(), and SCIP_DECL_CONSDELETE().
static void consdataMoveLinearVar |
( |
SCIP_CONSDATA * |
consdata, |
|
|
int |
oldpos, |
|
|
int |
newpos |
|
) |
| |
|
static |
adds linear coefficient in nonlinear constraint
- Parameters
-
scip | SCIP data structure |
cons | nonlinear constraint |
var | variable of constraint entry |
coef | coefficient of constraint entry |
Definition at line 1270 of file cons_nonlinear.c.
References catchLinearVarEvents(), LinVarEventData::consdata, consdataEnsureLinearVarsSize(), delLinearCoefPos(), FALSE, lockLinearVariable(), NULL, SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIPcaptureVar(), SCIPconsGetData(), SCIPconsIsEnabled(), SCIPconsIsTransformed(), SCIPgetTransformedVar(), SCIPisZero(), SCIPreleaseNlRow(), SCIPvarCompare(), SCIPvarIsActive(), SCIPvarIsTransformed(), and TRUE.
Referenced by consdataMoveLinearVar(), removeFixedLinearVariables(), SCIPaddLinearVarNonlinear(), SCIPcreateConsNonlinear(), SCIPcreateConsNonlinear2(), and splitOffLinearPart().
deletes linear coefficient at given position from nonlinear constraint data
- Parameters
-
scip | SCIP data structure |
cons | nonlinear constraint |
pos | position of coefficient to delete |
Definition at line 1350 of file cons_nonlinear.c.
References chgLinearCoefPos(), LinVarEventData::consdata, consdataMoveLinearVar(), dropLinearVarEvents(), FALSE, NULL, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPconsIsEnabled(), SCIPreleaseNlRow(), SCIPreleaseVar(), and unlockLinearVariable().
Referenced by addLinearCoef(), mergeAndCleanLinearVars(), and removeFixedLinearVariables().
changes linear coefficient value at given position of nonlinear constraint
- Parameters
-
scip | SCIP data structure |
cons | nonlinear constraint |
pos | position of linear coefficient to change |
newcoef | new value of linear coefficient |
Definition at line 1410 of file cons_nonlinear.c.
References catchLinearVarEvents(), LinVarEventData::consdata, dropLinearVarEvents(), FALSE, lockLinearVariable(), mergeAndCleanLinearVars(), NULL, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPconsIsEnabled(), SCIPconsIsLocked(), SCIPconsIsTransformed(), SCIPisZero(), SCIPreleaseNlRow(), SCIPvarIsTransformed(), and unlockLinearVariable().
Referenced by delLinearCoefPos(), and mergeAndCleanLinearVars().
- Parameters
-
scip | SCIP data structure |
cons | nonlinear constraint |
Definition at line 1495 of file cons_nonlinear.c.
References chgLinearCoefPos(), LinVarEventData::consdata, consdataSortLinearVars(), delLinearCoefPos(), NULL, removeFixedLinearVariables(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPisZero(), and TRUE.
Referenced by chgLinearCoefPos(), removeFixedLinearVariables(), and SCIP_DECL_CONSEXITPRE().
removes fixes (or aggregated) linear variables from a nonlinear constraint
- Parameters
-
scip | SCIP data structure |
cons | nonlinearconstraint |
Definition at line 1554 of file cons_nonlinear.c.
References addLinearCoef(), LinVarEventData::consdata, consdataEnsureLinearVarsSize(), delLinearCoefPos(), mergeAndCleanLinearVars(), NULL, REALABS, removeFixedNonlinearVariables(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_MULTAGGR, SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMessage, SCIPdebugPrintCons, SCIPgetProbvarSum(), SCIPisInfinity(), SCIPvarGetMultaggrConstant(), SCIPvarGetMultaggrNVars(), SCIPvarGetMultaggrScalars(), SCIPvarGetMultaggrVars(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarIsActive(), and TRUE.
Referenced by mergeAndCleanLinearVars(), SCIP_DECL_CONSEXITPRE(), and SCIP_DECL_CONSPRESOL().
removes fixed variables from expression graph
- Parameters
-
scip | SCIP data structure |
conshdlr | constraint handler |
Definition at line 1674 of file cons_nonlinear.c.
References LinVarEventData::conshdlrdata, FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPconshdlrGetData(), SCIPdebug, SCIPdebugMessage, SCIPdebugPrintf, SCIPexprgraphGetNVars(), SCIPexprgraphGetVars(), SCIPexprgraphReplaceVarByLinearSum(), SCIPfreeBufferArray, SCIPgetProbvarLinearSum(), SCIPreallocBufferArray, SCIPvarGetName(), SCIPvarIsActive(), splitOffLinearPart(), and TRUE.
Referenced by removeFixedLinearVariables(), SCIP_DECL_CONSEXITPRE(), and SCIP_DECL_CONSPRESOL().
moves constant and linear part from expression graph node into constraint sides and linear part frees expression graph node if expression is constant or linear
- Parameters
-
scip | SCIP data structure |
conshdlr | constraint handler |
cons | nonlinear constraint |
Definition at line 1755 of file cons_nonlinear.c.
References addLinearCoef(), LinVarEventData::consdata, LinVarEventData::conshdlrdata, createNlRow(), MAX, NULL, REALABS, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPconsGetData(), SCIPconshdlrGetData(), SCIPexprgraphGetNodeNChildren(), SCIPexprgraphNodeSplitOffLinear(), SCIPfreeBufferArray, and SCIPisInfinity().
Referenced by removeFixedNonlinearVariables(), SCIP_DECL_CONSEXITPRE(), and SCIP_DECL_CONSPRESOL().
create a nonlinear row representation of the constraint and stores them in consdata
- Parameters
-
scip | SCIP data structure |
cons | nonlinear constraint |
Definition at line 1822 of file cons_nonlinear.c.
References LinVarEventData::consdata, LinVarEventData::conshdlrdata, NULL, presolveUpgrade(), SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPcreateNlRow(), SCIPexprgraphGetTree(), SCIPexprtreeFree(), and SCIPreleaseNlRow().
Referenced by SCIP_DECL_CONSINITSOL(), SCIPgetNlRowNonlinear(), and splitOffLinearPart().
tries to automatically convert a nonlinear constraint (or a part of it) into a more specific and more specialized constraint
- Parameters
-
scip | SCIP data structure |
conshdlr | constraint handler data structure |
cons | source constraint to try to convert |
upgraded | buffer to store whether constraint was upgraded |
nupgdconss | buffer to increase if constraint was upgraded |
naddconss | buffer to increase with number of additional constraints created during upgrade |
Definition at line 1880 of file cons_nonlinear.c.
References checkCurvature(), LinVarEventData::conshdlrdata, FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddCons(), SCIPallocBufferArray, SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsModifiable(), SCIPdebugGetSolVal, SCIPdebugMessage, SCIPdebugPrintCons, SCIPdebugPrintf, SCIPdelCons(), SCIPexprgraphEval(), SCIPexprgraphGetNVars(), SCIPexprgraphGetVars(), SCIPfreeBufferArray, SCIPreallocBufferArray, SCIPreleaseCons(), and TRUE.
Referenced by createNlRow(), and SCIP_DECL_CONSPRESOL().
checks a nonlinear constraint for convexity and/or concavity
- Parameters
-
scip | SCIP data structure |
cons | nonlinear constraint |
expensivechecks | whether also expensive checks should be executed |
assumeconvex | whether to assume convexity in inequalities |
Definition at line 1999 of file cons_nonlinear.c.
References LinVarEventData::consdata, infty2infty, INTERVALINFTY, MAX, MIN, NULL, reformReplaceNode(), SCIP_CALL, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_EXPRCURV_LINEAR, SCIP_EXPRCURV_UNKNOWN, SCIP_OKAY, SCIP_VERBLEVEL_NORMAL, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPdebug, SCIPdebugMessage, SCIPdebugPrintf, SCIPexprcurvAdd(), SCIPexprcurvGetName(), SCIPexprcurvMultiply(), SCIPexprtreeCheckCurvature(), SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPexprtreePrintWithNames(), SCIPfreeBufferArrayNull, SCIPgetMessagehdlr(), SCIPinfinity(), SCIPintervalSetBounds(), SCIPisInfinity(), SCIPreallocBufferArray, SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), SCIPverbMessage(), and TRUE.
Referenced by addLinearizationCuts(), generateCut(), presolveUpgrade(), SCIP_DECL_CONSINITLP(), SCIP_DECL_CONSSEPALP(), SCIPcheckCurvatureNonlinear(), SCIPgetCurvatureNonlinear(), and SCIPgetExprtreeCurvaturesNonlinear().
- Parameters
-
exprgraph | expression graph |
node | pointer to node to be replaced in expression graph |
replacement | node which takes node's place |
conss | constraints |
nconss | number of constraints |
Definition at line 2096 of file cons_nonlinear.c.
References LinVarEventData::consdata, FALSE, NULL, reformNode2Var(), SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPexprgraphCaptureNode(), SCIPexprgraphGetNodeNParents(), SCIPexprgraphMoveNodeParents(), and SCIPexprgraphReleaseNode().
Referenced by checkCurvature(), reformNode2Var(), and reformulate().
creates a new auxiliary variable and a new auxiliary nonlinear constraint connecting the var and a given node node is replaced by new new auxiliary variables node in all parents of node in expression graph and in all constraints that use node
- Parameters
-
scip | SCIP data structure |
exprgraph | expression graph |
node | expression graph node |
conss | constraints where to update exprgraphnode |
nconss | number of constraints |
naddcons | counter to increase when constraint is added |
donotmultaggr | whether to mark auxiliary variable as not to multiaggregate |
Definition at line 2150 of file cons_nonlinear.c.
References BOUNDTIGHTENING_MINSTRENGTH, FALSE, INTERVALINFTY, NULL, reformEnsureChildrenMinCurvature(), reformReplaceNode(), SCIP_Bool, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPaddCons(), SCIPaddVar(), SCIPcreateConsNonlinear2(), SCIPcreateVar(), SCIPdebugAddSolVal, SCIPdebugMessage, SCIPexprgraphAddVars(), SCIPexprgraphGetNodeBounds(), SCIPexprgraphGetNodeDepth(), SCIPexprgraphGetNodePosition(), SCIPexprgraphGetNodeVal(), SCIPexprgraphSetVarNodeValue(), SCIPexprgraphTightenNodeBounds(), SCIPintervalGetInf(), SCIPintervalGetSup(), SCIPmarkDoNotMultaggrVar(), SCIPreleaseCons(), SCIPreleaseVar(), SCIPsnprintf(), and TRUE.
Referenced by reformEnsureChildrenMinCurvature(), reformReplaceNode(), and reformulate().
ensures that all children of a node have at least a given curvature by adding auxiliary variables
- Parameters
-
scip | SCIP data structure |
exprgraph | expression graph |
node | expression graph node |
mincurv | minimal desired curvature |
conss | constraints to check whether they use one of the replaced nodes |
nconss | number of constraints to check |
naddcons | counter to increase when constraint is added |
Definition at line 2223 of file cons_nonlinear.c.
References BOUNDTIGHTENING_MINSTRENGTH, FALSE, INTERVALINFTY, NULL, reformMonomial(), reformNode2Var(), SCIP_Bool, SCIP_CALL, SCIP_EXPR_VARIDX, SCIP_EXPRCURV_UNKNOWN, SCIP_OKAY, SCIPdebugMessage, SCIPexprcurvGetName(), SCIPexprgraphGetNodeBounds(), SCIPexprgraphGetNodeChildren(), SCIPexprgraphGetNodeCurvature(), SCIPexprgraphGetNodeDepth(), SCIPexprgraphGetNodeNChildren(), SCIPexprgraphGetNodeOperator(), SCIPexprgraphGetNodePosition(), SCIPexprgraphUpdateNodeBoundsCurvature(), SCIPintervalIsEmpty(), and TRUE.
Referenced by reformNode2Var(), and reformulate().
reformulates a monomial by adding auxiliary variables and constraints for bilinear terms
- Parameters
-
scip | SCIP data structure |
exprgraph | expression graph |
nfactors | number of factors |
factors | factors |
exponents | exponents, or NULL if all 1.0 |
resultnode | buffer to store node which represents the reformulated monomial |
createauxcons | whether to create auxiliary var/cons |
naddcons | buffer to increase by number of added cons |
Definition at line 2278 of file cons_nonlinear.c.
References BOUNDTIGHTENING_MINSTRENGTH, FALSE, INTERVALINFTY, NULL, pow(), reformulate(), SCIP_CALL, SCIP_EXPR_INTPOWER, SCIP_EXPR_MINUS, SCIP_EXPR_MUL, SCIP_EXPR_REALPOWER, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPaddCons(), SCIPaddVar(), SCIPblkmem(), SCIPcreateConsNonlinear2(), SCIPcreateVar(), SCIPdebugAddSolVal, SCIPdebugMessage, SCIPexprgraphAddNode(), SCIPexprgraphAddVars(), SCIPexprgraphCreateNode(), SCIPexprgraphGetNodeBounds(), SCIPexprgraphGetNodeChildren(), SCIPexprgraphGetNodeIntPowerExponent(), SCIPexprgraphGetNodeNChildren(), SCIPexprgraphGetNodeNParents(), SCIPexprgraphGetNodeOperator(), SCIPexprgraphGetNodeParents(), SCIPexprgraphGetNodeRealPowerExponent(), SCIPexprgraphGetNodeVal(), SCIPexprgraphSetVarNodeValue(), SCIPexprgraphUpdateNodeBoundsCurvature(), SCIPinfinity(), SCIPintervalIsEmpty(), SCIPisEQ(), SCIPisIntegral(), SCIPreleaseCons(), SCIPreleaseVar(), SCIPround(), SCIPsnprintf(), and TRUE.
Referenced by reformEnsureChildrenMinCurvature(), and reformulate().
reformulates expression graph into a form so that for each node under- and overestimators could be computed similar to factorable reformulation in other global solvers, but sometimes does not split up complex operands (like quadratic)
- Parameters
-
scip | SCIP data structure |
conshdlr | constraint handler |
conss | constraints |
nconss | number of constraints |
naddcons | buffer to increase by the number of added constraints |
Definition at line 2600 of file cons_nonlinear.c.
References BMSclearMemoryArray, BOUNDTIGHTENING_MINSTRENGTH, SCIP_QuadElement::coef, LinVarEventData::consdata, LinVarEventData::conshdlrdata, FALSE, getGradientMaxElement(), SCIP_QuadElement::idx1, SCIP_QuadElement::idx2, SCIP_Interval::inf, INTERVALINFTY, NULL, reformEnsureChildrenMinCurvature(), reformMonomial(), reformNode2Var(), reformReplaceNode(), SCIP_Bool, SCIP_CALL, SCIP_ERROR, SCIP_EXPR_ABS, SCIP_EXPR_CONST, SCIP_EXPR_COS, SCIP_EXPR_DIV, SCIP_EXPR_EXP, SCIP_EXPR_INTPOWER, SCIP_EXPR_LAST, SCIP_EXPR_LINEAR, SCIP_EXPR_LOG, SCIP_EXPR_MAX, SCIP_EXPR_MIN, SCIP_EXPR_MINUS, SCIP_EXPR_MUL, SCIP_EXPR_PARAM, SCIP_EXPR_PLUS, SCIP_EXPR_POLYNOMIAL, SCIP_EXPR_PRODUCT, SCIP_EXPR_QUADRATIC, SCIP_EXPR_REALPOWER, SCIP_EXPR_SIGN, SCIP_EXPR_SIGNPOWER, SCIP_EXPR_SIN, SCIP_EXPR_SQRT, SCIP_EXPR_SQUARE, SCIP_EXPR_SUM, SCIP_EXPR_TAN, SCIP_EXPR_USER, SCIP_EXPR_VARIDX, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_EXPRCURV_LINEAR, SCIP_EXPRCURV_UNKNOWN, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_STAGE_PRESOLVING, SCIP_VARTYPE_CONTINUOUS, SCIPABORT, SCIPaddCons(), SCIPaddVar(), SCIPallocBufferArray, SCIPblkmem(), SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPcreateConsNonlinear2(), SCIPcreateVar(), SCIPdebug, SCIPdebugAddSolVal, SCIPdebugGetSolVal, SCIPdebugMessage, SCIPdebugPrintCons, SCIPdebugPrintf, SCIPerrorMessage, SCIPexprCreateMonomial(), SCIPexprcurvGetName(), SCIPexprcurvMultiply(), SCIPexprcurvNegate(), SCIPexprcurvPower(), SCIPexprGetMonomialChildIndices(), SCIPexprGetMonomialCoef(), SCIPexprGetMonomialExponents(), SCIPexprGetMonomialNFactors(), SCIPexprgraphAddNode(), SCIPexprgraphAddVars(), SCIPexprgraphCreateNode(), SCIPexprgraphCreateNodeLinear(), SCIPexprgraphCreateNodePolynomial(), SCIPexprgraphCreateNodeQuadratic(), SCIPexprgraphEval(), SCIPexprgraphGetDepth(), SCIPexprgraphGetNNodes(), SCIPexprgraphGetNodeBounds(), SCIPexprgraphGetNodeChildren(), SCIPexprgraphGetNodeCurvature(), SCIPexprgraphGetNodeDepth(), SCIPexprgraphGetNodeIntPowerExponent(), SCIPexprgraphGetNodeNChildren(), SCIPexprgraphGetNodeNParents(), SCIPexprgraphGetNodeOperator(), SCIPexprgraphGetNodePolynomialConstant(), SCIPexprgraphGetNodePolynomialMonomialCurvature(), SCIPexprgraphGetNodePolynomialMonomials(), SCIPexprgraphGetNodePolynomialNMonomials(), SCIPexprgraphGetNodePosition(), SCIPexprgraphGetNodes(), SCIPexprgraphGetNodeSignPowerExponent(), SCIPexprgraphGetNodeVal(), SCIPexprgraphGetNVars(), SCIPexprgraphGetVars(), SCIPexprgraphHasNodeNonlinearAncestor(), SCIPexprgraphHasNodeSibling(), SCIPexprgraphIsNodeEnabled(), SCIPexprgraphPrintNode(), SCIPexprgraphPropagateVarBounds(), SCIPexprgraphSetVarNodeValue(), SCIPexprgraphUpdateNodeBoundsCurvature(), SCIPexpropGetName(), SCIPfreeBufferArray, SCIPfreeBufferArrayNull, SCIPgetMessagehdlr(), SCIPgetStage(), SCIPinProbing(), SCIPintervalGetInf(), SCIPintervalGetSup(), SCIPintervalIsEmpty(), SCIPisGE(), SCIPisInfinity(), SCIPisIntegral(), SCIPisLE(), SCIPreleaseCons(), SCIPreleaseVar(), SCIPround(), SCIPsnprintf(), SCIP_Interval::sup, and TRUE.
Referenced by reformMonomial(), and SCIP_DECL_CONSPRESOL().
gets maximal absolute element of gradient of nonlinear function
- Parameters
-
scip | SCIP data structure |
exprint | expressions interpreter |
cons | constraint |
sol | solution or NULL if LP solution should be used |
newsol | have the expression trees been evaluated at sol before? |
maxelem | buffer to store maximal element |
Definition at line 3540 of file cons_nonlinear.c.
References computeViolation(), LinVarEventData::consdata, FALSE, NULL, REALABS, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_STAGE_SOLVING, SCIPallocBufferArray, SCIPconsGetData(), SCIPexprintCompile(), SCIPexprintGrad(), SCIPexprtreeGetInterpreterData(), SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPfreeBufferArray, SCIPgetSolVal(), SCIPgetSolVals(), SCIPgetStage(), and TRUE.
Referenced by computeViolation(), and reformulate().
computes activity and violation of a constraint during presolving and if the constraint is active, it is assumes that SCIPexprgraphEval has been called for sol before
- Parameters
-
scip | SCIP data structure |
conshdlr | constraint handler |
cons | nonlinear constraint |
sol | solution or NULL if LP solution should be used |
Definition at line 3663 of file cons_nonlinear.c.
References computeViolations(), LinVarEventData::consdata, LinVarEventData::conshdlrdata, FALSE, getGradientMaxElement(), MAX, MIN, NULL, REALABS, SCIP_CALL, SCIP_INVALID, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIP_STAGE_EXITPRESOLVE, SCIP_STAGE_INITPRESOLVE, SCIPABORT, SCIPallocBufferArray, SCIPconsGetData(), SCIPconshdlrGetData(), SCIPerrorMessage, SCIPexprgraphGetNodeVal(), SCIPexprintCompile(), SCIPexprintEval(), SCIPexprtreeGetInterpreterData(), SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPfeastol(), SCIPfreeBufferArray, SCIPgetSolVal(), SCIPgetStage(), SCIPinfinity(), SCIPisFeasGE(), SCIPisFeasLE(), SCIPisFinite, SCIPisGT(), SCIPisInfinity(), SCIPvarGetLbLocal(), and SCIPvarGetUbLocal().
Referenced by computeViolations(), getGradientMaxElement(), proposeFeasibleSolution(), SCIP_DECL_CONSCHECK(), and SCIPgetViolationNonlinear().
computes violation of a set of constraints
- Parameters
-
scip | SCIP data structure |
conshdlr | constraint handler |
conss | constraints |
nconss | number of constraints |
sol | solution or NULL if LP solution should be used |
maxviolcon | buffer to store constraint with largest violation, or NULL if solution is feasible |
Definition at line 3866 of file cons_nonlinear.c.
References addLinearization(), computeViolation(), LinVarEventData::consdata, LinVarEventData::conshdlrdata, MAX, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_STAGE_EXITPRESOLVE, SCIP_STAGE_INITPRESOLVE, SCIPallocBufferArray, SCIPconsGetData(), SCIPconshdlrGetData(), SCIPexprgraphEval(), SCIPexprgraphGetNVars(), SCIPexprgraphGetVars(), SCIPfeastol(), SCIPfreeBufferArray, SCIPgetSolVals(), SCIPgetStage(), and SCIPisGT().
Referenced by computeViolation(), SCIP_DECL_CONSENFOLP(), SCIP_DECL_CONSENFOPS(), SCIP_DECL_CONSSEPALP(), and SCIP_DECL_CONSSEPASOL().
adds linearization of a constraints expression tree in reference point to a row
- Parameters
-
scip | SCIP data structure |
exprint | expression interpreter |
cons | constraint |
exprtreeidx | for which tree a linearization should be added |
x | value of expression tree variables where to generate cut |
newx | whether the last evaluation of the expression with the expression interpreter was not at x |
row | row where to add linearization |
success | buffer to store whether a linearization was succefully added to the row |
Definition at line 3931 of file cons_nonlinear.c.
References addConcaveEstimatorUnivariate(), LinVarEventData::consdata, FALSE, MIN, NULL, REALABS, SCIP_Bool, SCIP_CALL, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_OKAY, SCIP_Real, SCIPaddVarsToRow(), SCIPallocBufferArray, SCIPchgRowLhs(), SCIPchgRowRhs(), SCIPconsGetData(), SCIPconsGetName(), SCIPdebug, SCIPdebugMessage, SCIPdebugPrintf, SCIPexprintCompile(), SCIPexprintGrad(), SCIPexprtreeGetInterpreterData(), SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPfeastol(), SCIPfreeBufferArray, SCIPisEQ(), SCIPisFinite, SCIPisInfinity(), SCIPisZero(), SCIPprintRow(), SCIProwGetLhs(), SCIProwGetRhs(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), and TRUE.
Referenced by computeViolations(), and generateCut().
adds secant of a constraints univariate expression tree in reference point to a row
- Parameters
-
scip | SCIP data structure |
cons | constraint |
exprtreeidx | for which tree a secant should be added |
row | row where to add secant |
success | buffer to store whether a secant was succefully added to the row |
Definition at line 4094 of file cons_nonlinear.c.
References addConcaveEstimatorBivariate(), LinVarEventData::consdata, FALSE, MAX, MIN, NULL, REALABS, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddVarsToRow(), SCIPchgRowLhs(), SCIPchgRowRhs(), SCIPconsGetData(), SCIPconsGetName(), SCIPdebug, SCIPdebugMessage, SCIPexprtreeEval(), SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPisEQ(), SCIPisFinite, SCIPisInfinity(), SCIPisLE(), SCIPprintRow(), SCIProwGetLhs(), SCIProwGetRhs(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), and TRUE.
Referenced by addLinearization(), and generateCut().
adds estimator of a constraints bivariate expression tree to a row a reference point is given to decide which hyperplane to choose
- Parameters
-
scip | SCIP data structure |
cons | constraint |
exprtreeidx | for which tree a secant should be added |
ref | reference values of expression tree variables where to generate cut |
row | row where to add secant |
success | buffer to store whether a secant was succefully added to the row |
Definition at line 4201 of file cons_nonlinear.c.
References addConcaveEstimatorMultivariate(), LinVarEventData::consdata, FALSE, MAX, MIN, NULL, REALABS, SCIP_Bool, SCIP_CALL, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_OKAY, SCIP_Real, SCIPaddVarsToRow(), SCIPchgRowLhs(), SCIPchgRowRhs(), SCIPcomputeHyperplaneThreePoints(), SCIPconsGetData(), SCIPconsGetName(), SCIPdebug, SCIPdebugMessage, SCIPexprtreeEval(), SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPisEQ(), SCIPisFeasGE(), SCIPisFeasLE(), SCIPisFinite, SCIPisInfinity(), SCIPisNegative(), SCIPisRelEQ(), SCIPisRelLE(), SCIPisZero(), SCIPprintRow(), SCIProwGetLhs(), SCIProwGetRhs(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbLocal(), and TRUE.
Referenced by addConcaveEstimatorUnivariate(), and generateCut().
adds estimator of a constraints multivariate expression tree to a row Given concave function f(x) and reference point ref. Let (v_i: i=1,...,n) be corner points of current domain of x. Find (coef,constant) such that <coef,v_i> + constant <= f(v_i) (cut validity) and such that <coef, ref> + constant is maximized (cut efficacy). Then <coef, x> + constant <= f(x) for all x in current domain.
Similar to compute an overestimator for a convex function f(x). Find (coef,constant) such that <coef,v_i> + constant >= f(v_i) and such that <coef, ref> + constant is minimized. Then <coef, x> + constant >= f(x) for all x in current domain.
- Parameters
-
scip | SCIP data structure |
cons | constraint |
exprtreeidx | for which tree a secant should be added |
ref | reference values of expression tree variables where to generate cut |
row | row where to add secant |
success | buffer to store whether a secant was succefully added to the row |
Definition at line 4560 of file cons_nonlinear.c.
References BMScopyMemoryArray, LinVarEventData::consdata, FALSE, getCoeffsAndConstantFromLinearExpr(), MAX, MIN, NULL, REALABS, SCIP_Bool, SCIP_CALL, SCIP_ERROR, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_LPPAR_FEASTOL, SCIP_LPPAR_FROMSCRATCH, SCIP_LPPAR_LOBJLIM, SCIP_LPPAR_LPITLIM, SCIP_LPPAR_SCALING, SCIP_LPPAR_UOBJLIM, SCIP_OBJSEN_MAXIMIZE, SCIP_OBJSEN_MINIMIZE, SCIP_OKAY, SCIP_Real, SCIPaddVarsToRow(), SCIPallocBufferArray, SCIPchgRowLhs(), SCIPchgRowRhs(), SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMessage, SCIPdebugPrintf, SCIPerrorMessage, SCIPexprtreeEval(), SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPfeastol(), SCIPfreeBufferArray, SCIPgetMessagehdlr(), SCIPisFeasGE(), SCIPisFeasGT(), SCIPisFeasLE(), SCIPisFinite, SCIPisInfinity(), SCIPlpiAddCols(), SCIPlpiAddRows(), SCIPlpiCreate(), SCIPlpiFree(), SCIPlpiGetSol(), SCIPlpiInfinity(), SCIPlpiIsIterlimExc(), SCIPlpiIsObjlimExc(), SCIPlpiIsOptimal(), SCIPlpiIsPrimalFeasible(), SCIPlpiIsPrimalUnbounded(), SCIPlpiSetIntpar(), SCIPlpiSetRealpar(), SCIPlpiSolveDual(), SCIProwGetLhs(), SCIProwGetRhs(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbLocal(), SCIPwarningMessage(), and TRUE.
Referenced by addConcaveEstimatorBivariate(), and generateCut().
Computes the linear coeffs and the constant in a linear expression both scaled by a given scalar value. The coeffs of the variables will be stored in the given array at their variable index. The constant of the given linear expression will be added to the given buffer.
- Parameters
-
expr | the linear expression |
scalar | the scalar value, i.e. the coeff of the given expression |
varcoeffs | buffer array to store the computed coefficients |
constant | buffer to hold the constant value of the given expression |
Definition at line 4819 of file cons_nonlinear.c.
References addUserEstimator(), SCIP_CALL, SCIP_ERROR, SCIP_EXPR_CONST, SCIP_EXPR_LINEAR, SCIP_EXPR_MINUS, SCIP_EXPR_MUL, SCIP_EXPR_PLUS, SCIP_EXPR_VARIDX, SCIP_OKAY, SCIP_Real, SCIPABORT, SCIPerrorMessage, SCIPexprGetChildren(), SCIPexprGetLinearCoefs(), SCIPexprGetLinearConstant(), SCIPexprGetNChildren(), SCIPexprGetOperator(), SCIPexprGetOpIndex(), and SCIPexprGetOpReal().
Referenced by addConcaveEstimatorMultivariate(), and addUserEstimator().
adds estimator from user callback of a constraints user expression tree to a row
- Parameters
-
scip | SCIP data structure |
cons | constraint |
exprtreeidx | for which tree an estimator should be added |
x | value of expression tree variables where to generate cut |
overestimate | whether to compute an overestimator instead of an underestimator |
row | row where to add cut |
success | buffer to store whether a cut was succefully added to the row |
Definition at line 4916 of file cons_nonlinear.c.
References addIntervalGradientEstimator(), LinVarEventData::consdata, FALSE, getCoeffsAndConstantFromLinearExpr(), infty2infty, INTERVALINFTY, MAX, MIN, NULL, SCIP_CALL, SCIP_EXPR_USER, SCIP_OKAY, SCIP_Real, SCIPaddVarsToRow(), SCIPallocBufferArray, SCIPchgRowLhs(), SCIPchgRowRhs(), SCIPconsGetData(), SCIPexprEstimateUser(), SCIPexprEval(), SCIPexprEvalInt(), SCIPexprGetChildren(), SCIPexprGetNChildren(), SCIPexprGetOperator(), SCIPexprHasUserEstimator(), SCIPexprtreeGetNVars(), SCIPexprtreeGetParamVals(), SCIPexprtreeGetRoot(), SCIPexprtreeGetVars(), SCIPfreeBufferArray, SCIPinfinity(), SCIPintervalSetBounds(), SCIPisInfinity(), SCIProwGetLhs(), SCIProwGetRhs(), SCIPvarGetLbLocal(), and SCIPvarGetUbLocal().
Referenced by generateCut(), and getCoeffsAndConstantFromLinearExpr().
adds estimator from interval gradient of a constraints univariate expression tree to a row a reference point is used to decide in which corner to generate the cut
- Parameters
-
scip | SCIP data structure |
exprint | expression interpreter |
cons | constraint |
exprtreeidx | for which tree a secant should be added |
x | value of expression tree variables where to generate cut |
newx | whether the last evaluation of the expression with the expression interpreter was not at x |
overestimate | whether to compute an overestimator instead of an underestimator |
row | row where to add secant |
success | buffer to store whether a secant was succefully added to the row |
Definition at line 5035 of file cons_nonlinear.c.
References LinVarEventData::consdata, FALSE, generateCut(), infty2infty, INTERVALINFTY, MAX, MIN, NULL, SCIP_CALL, SCIP_EXPRINTCAPABILITY_INTGRADIENT, SCIP_OKAY, SCIP_Real, SCIPaddVarsToRow(), SCIPallocBufferArray, SCIPchgRowLhs(), SCIPchgRowRhs(), SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMessage, SCIPexprintCompile(), SCIPexprintEval(), SCIPexprintGetCapability(), SCIPexprintGradInt(), SCIPexprtreeGetInterpreterData(), SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPfreeBufferArrayNull, SCIPinfinity(), SCIPintervalGetInf(), SCIPintervalGetSup(), SCIPintervalMulScalar(), SCIPintervalSetBounds(), SCIPisEQ(), SCIPisFinite, SCIPisInfinity(), SCIPisZero(), SCIProwGetLhs(), SCIProwGetRhs(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbLocal(), and TRUE.
Referenced by addUserEstimator(), and generateCut().
static SCIP_RETCODE generateCut |
( |
SCIP * |
scip, |
|
|
SCIP_EXPRINT * |
exprint, |
|
|
SCIP_CONS * |
cons, |
|
|
SCIP_Real ** |
ref, |
|
|
SCIP_SOL * |
sol, |
|
|
SCIP_Bool |
newsol, |
|
|
SCIP_SIDETYPE |
side, |
|
|
SCIP_ROW ** |
row, |
|
|
SCIP_Real |
maxrange, |
|
|
SCIP_Bool |
expensivecurvchecks, |
|
|
SCIP_Bool |
assumeconvex |
|
) |
| |
|
static |
generates a cut based on linearization (if convex), secant (if concave), or intervalgradient (if indefinite)
- Parameters
-
scip | SCIP data structure |
exprint | expression interpreter |
cons | constraint |
ref | reference point for each exprtree, or NULL if sol should be used |
sol | reference solution where cut should be generated, or NULL if LP solution should be used |
newsol | whether the last evaluation of the expression with the expression interpreter was not at sol |
side | for which side a cut should be generated |
row | storage for cut |
maxrange | maximal range allowed |
expensivecurvchecks | whether also expensive checks should be executed |
assumeconvex | whether to assume convexity in inequalities |
Definition at line 5197 of file cons_nonlinear.c.
References addConcaveEstimatorBivariate(), addConcaveEstimatorMultivariate(), addConcaveEstimatorUnivariate(), addIntervalGradientEstimator(), addLinearization(), addUserEstimator(), checkCurvature(), LinVarEventData::consdata, FALSE, MAX, MIN, NULL, REALABS, SCIP_Bool, SCIP_CALL, SCIP_EXPR_USER, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_SIDETYPE_LEFT, SCIP_SIDETYPE_RIGHT, SCIP_STAGE_SOLVING, SCIPaddVarsToRow(), SCIPaddVarToRow(), SCIPallocBufferArray, SCIPchgRowLhs(), SCIPchgRowRhs(), SCIPcolGetVar(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconsIsLocal(), SCIPcreateEmptyRowCons(), SCIPdebugMessage, SCIPexprGetOperator(), SCIPexprtreeGetNVars(), SCIPexprtreeGetRoot(), SCIPexprtreeGetVars(), SCIPfreeBufferArray, SCIPgetRowMaxCoef(), SCIPgetRowMinCoef(), SCIPgetSolVal(), SCIPgetSolVals(), SCIPgetStage(), SCIPinfinity(), SCIPisEQ(), SCIPisInfinity(), SCIPreallocBufferArray, SCIPreleaseRow(), SCIProwGetCols(), SCIProwGetLhs(), SCIProwGetNNonz(), SCIProwGetRhs(), SCIProwGetVals(), SCIProwIsLocal(), SCIPsnprintf(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), separatePoint(), and TRUE.
Referenced by addIntervalGradientEstimator(), addLinearizationCuts(), SCIP_DECL_CONSINITLP(), and separatePoint().
static SCIP_RETCODE separatePoint |
( |
SCIP * |
scip, |
|
|
SCIP_CONSHDLR * |
conshdlr, |
|
|
SCIP_CONS ** |
conss, |
|
|
int |
nconss, |
|
|
int |
nusefulconss, |
|
|
SCIP_SOL * |
sol, |
|
|
SCIP_Bool |
newsol, |
|
|
SCIP_Real |
minefficacy, |
|
|
SCIP_Bool |
inenforcement, |
|
|
SCIP_RESULT * |
result, |
|
|
SCIP_Real * |
bestefficacy |
|
) |
| |
|
static |
tries to separate solution or LP solution by a linear cut
assumes that constraint violations have been computed
- Parameters
-
scip | SCIP data structure |
conshdlr | nonlinear constraints handler |
conss | constraints |
nconss | number of constraints |
nusefulconss | number of constraints that seem to be useful |
sol | solution to separate, or NULL if LP solution should be used |
newsol | have the constraints just been evaluated at this point? |
minefficacy | minimal efficacy of a cut if it should be added to the LP |
inenforcement | whether we are in constraint enforcement |
result | result of separation |
bestefficacy | buffer to store best efficacy of a cut that was added to the LP, if found; or NULL if not of interest |
Definition at line 5436 of file cons_nonlinear.c.
References addLinearizationCuts(), LinVarEventData::consdata, LinVarEventData::conshdlrdata, FALSE, generateCut(), MAX, MIN, NULL, REALABS, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_FEASIBLE, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIP_SEPARATED, SCIP_SIDETYPE_LEFT, SCIP_SIDETYPE_RIGHT, SCIPABORT, SCIPaddCut(), SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsActive(), SCIPconsIsDeleted(), SCIPconsIsEnabled(), SCIPdebug, SCIPdebugMessage, SCIPepsilon(), SCIPerrorMessage, SCIPfeastol(), SCIPgetRelaxFeastolFactor(), SCIPgetRowLPFeasibility(), SCIPgetRowMaxCoef(), SCIPgetRowSolFeasibility(), SCIPisCutApplicable(), SCIPisGT(), SCIPisInfinity(), SCIPmarkRowNotRemovableLocal(), SCIPprintRow(), SCIPreleaseRow(), SCIPresetConsAge(), SCIProwGetLhs(), and SCIProwGetRhs().
Referenced by generateCut(), SCIP_DECL_CONSENFOLP(), SCIP_DECL_CONSSEPALP(), and SCIP_DECL_CONSSEPASOL().
adds linearizations cuts for convex constraints w.r.t. a given reference point to cutpool and sepastore if separatedlpsol is not NULL, then a cut that separates the LP solution is added to the sepastore and is forced to enter the LP if separatedlpsol is not NULL, but cut does not separate the LP solution, then it is added to the cutpool only if separatedlpsol is NULL, then cut is added to cutpool only
- Parameters
-
scip | SCIP data structure |
conshdlr | quadratic constraints handler |
conss | constraints |
nconss | number of constraints |
ref | reference point where to linearize, or NULL for LP solution |
separatedlpsol | buffer to store whether a cut that separates the current LP solution was found and added to LP, or NULL if adding to cutpool only |
minefficacy | minimal efficacy of a cut when checking for separation of LP solution |
Definition at line 5594 of file cons_nonlinear.c.
References checkCurvature(), LinVarEventData::consdata, LinVarEventData::conshdlrdata, FALSE, generateCut(), MAX, MIN, NULL, REALABS, SCIP_Bool, SCIP_CALL, SCIP_DECL_EVENTEXEC(), SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIP_SIDETYPE_LEFT, SCIP_SIDETYPE_RIGHT, SCIPABORT, SCIPaddCut(), SCIPaddPoolCut(), SCIPconsGetData(), SCIPconshdlrGetData(), SCIPconsIsLocal(), SCIPerrorMessage, SCIPgetRowLPFeasibility(), SCIPgetRowMaxCoef(), SCIPisInfinity(), SCIPreleaseRow(), SCIProwGetLhs(), SCIProwGetRhs(), SCIProwIsLocal(), and TRUE.
Referenced by SCIP_DECL_CONSSEPALP(), SCIP_DECL_EVENTEXEC(), and separatePoint().
static SCIP_DECL_EVENTEXEC |
( |
processNewSolutionEvent |
| ) |
|
|
static |
processes the event that a new primal solution has been found
Definition at line 5706 of file cons_nonlinear.c.
References addLinearizationCuts(), LinVarEventData::conshdlrdata, NULL, registerBranchingVariables(), SCIP_CALL, SCIP_EVENTTYPE_SOLFOUND, SCIP_OKAY, SCIPconshdlrGetConss(), SCIPconshdlrGetData(), SCIPconshdlrGetNConss(), SCIPdebugMessage, SCIPeventGetSol(), SCIPeventGetType(), SCIPheurGetName(), and SCIPsolGetHeur().
registers unfixed variables in nonlinear terms of violated constraints as external branching candidates
- Parameters
-
scip | SCIP data structure |
conshdlr | constraint handler |
conss | constraints to check |
nconss | number of constraints to check |
nnotify | counter for number of notifications performed |
Definition at line 5753 of file cons_nonlinear.c.
References LinVarEventData::consdata, MAX, NULL, registerLargeLPValueVariableForBranching(), SCIP_CALL, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_INVALID, SCIP_OKAY, SCIPaddExternBranchCand(), SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMessage, SCIPexprcurvGetName(), SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPfeastol(), SCIPisGT(), SCIPisRelEQ(), SCIPvarGetLbLocal(), SCIPvarGetName(), and SCIPvarGetUbLocal().
Referenced by SCIP_DECL_CONSENFOLP(), and SCIP_DECL_EVENTEXEC().
registers a nonlinear variable from a violated constraint as branching candidate that has a large absolute value in the LP relaxation
- Parameters
-
scip | SCIP data structure |
conss | constraints |
nconss | number of constraints |
brvar | buffer to store branching variable |
Definition at line 5819 of file cons_nonlinear.c.
References LinVarEventData::consdata, NULL, REALABS, replaceViolatedByLinearConstraints(), SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIPaddExternBranchCand(), SCIPconsGetData(), SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPfeastol(), SCIPgetSolVal(), SCIPisGT(), SCIPisRelEQ(), SCIPvarGetLbLocal(), and SCIPvarGetUbLocal().
Referenced by registerBranchingVariables(), and SCIP_DECL_CONSENFOLP().
replaces violated nonlinear constraints where all nonlinear variables are fixed by linear constraints only adds constraint if it is violated in current solution
- Parameters
-
scip | SCIP data structure |
conss | constraints |
nconss | number of constraints |
addedcons | buffer to store whether a linear constraint was added |
reduceddom | whether a domain has been reduced |
infeasible | whether we detected infeasibility |
Definition at line 5879 of file cons_nonlinear.c.
References LinVarEventData::consdata, FALSE, INTERVALINFTY, NULL, propagateBoundsTightenVarLb(), SCIP_Bool, SCIP_CALL, SCIP_INFEASIBLE, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIP_Real, SCIPaddConsLocal(), SCIPcheckCons(), SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsLinear(), SCIPdebugMessage, SCIPdebugPrintCons, SCIPdelConsLocal(), SCIPevalExprtreeLocalBounds(), SCIPfeastol(), SCIPgetLPSolstat(), SCIPinfinity(), SCIPintervalGetInf(), SCIPintervalGetSup(), SCIPintervalMulScalar(), SCIPisFeasLE(), SCIPisGT(), SCIPisInfinity(), SCIPisZero(), SCIPreleaseCons(), SCIPtightenVarLb(), SCIPtightenVarUb(), SCIPvarGetName(), SCIPwarningMessage(), and TRUE.
Referenced by registerLargeLPValueVariableForBranching(), and SCIP_DECL_CONSENFOLP().
- Parameters
-
scip | SCIP data structure |
cons | constraint where we currently propagate, or NULL if tightening is from expression graph |
var | variable which domain we might reduce |
bnd | new lower bound for variable |
result | result to update if there was a tightening or cutoff |
nchgbds | counter to increase if a bound was tightened |
Definition at line 6049 of file cons_nonlinear.c.
References FALSE, INTERVALINFTY, NULL, propagateBoundsTightenVarUb(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_REDUCEDDOM, SCIPadjustedVarLb(), SCIPconsGetName(), SCIPdebugMessage, SCIPinProbing(), SCIPisInfinity(), SCIPresetConsAge(), SCIPtightenVarLb(), and SCIPvarGetName().
Referenced by propagateBoundsCons(), propagateConstraintSides(), and replaceViolatedByLinearConstraints().
- Parameters
-
scip | SCIP data structure |
cons | constraint where we currently propagate, or NULL if tightening is from expression graph |
var | variable which domain we might reduce |
bnd | new upper bound for variable |
result | result to update if there was a tightening or cutoff |
nchgbds | counter to increase if a bound was tightened |
Definition at line 6110 of file cons_nonlinear.c.
References FALSE, INTERVALINFTY, NULL, propagateBoundsCons(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_REDUCEDDOM, SCIPadjustedVarUb(), SCIPconsGetName(), SCIPdebugMessage, SCIPinProbing(), SCIPisInfinity(), SCIPresetConsAge(), SCIPtightenVarUb(), and SCIPvarGetName().
Referenced by propagateBoundsCons(), propagateBoundsTightenVarLb(), and propagateConstraintSides().
tightens bounds of linear variables in a single nonlinear constraint
- Parameters
-
scip | SCIP data structure |
conshdlr | constraint handler |
cons | constraint to process |
result | pointer to store the result of the propagation call |
nchgbds | buffer where to add the the number of changed bounds |
redundant | buffer where to store whether constraint has been found to be redundant |
Definition at line 6171 of file cons_nonlinear.c.
References LinVarEventData::consdata, consdataUpdateLinearActivity(), FALSE, infty2infty, INTERVALINFTY, MAX, NULL, propagateBoundsTightenVarLb(), propagateBoundsTightenVarUb(), propagateConstraintSides(), SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMessage, SCIPexprgraphGetNodeBounds(), SCIPfeastol(), SCIPinfinity(), SCIPintervalAdd(), SCIPintervalAreDisjoint(), SCIPintervalGetInf(), SCIPintervalGetRoundingMode(), SCIPintervalGetSup(), SCIPintervalIsEmpty(), SCIPintervalIsEntire(), SCIPintervalIsSubsetEQ(), SCIPintervalSet(), SCIPintervalSetBounds(), SCIPintervalSetRoundingMode(), SCIPintervalSetRoundingModeDownwards(), SCIPintervalSetRoundingModeUpwards(), SCIPintervalSub(), SCIPisEQ(), SCIPisInfinity(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), and TRUE.
Referenced by propagateBounds(), and propagateBoundsTightenVarUb().
propagate constraints sides minus linear activity into nonlinear variables
- Parameters
-
scip | SCIP data structure |
conshdlr | constraint handler |
conss | constraints to process |
nconss | number of constraints |
result | pointer to store the result of the propagation calls |
nchgbds | buffer where to add the number of changed bounds |
Definition at line 6432 of file cons_nonlinear.c.
References BOUNDTIGHTENING_MINSTRENGTH, LinVarEventData::consdata, LinVarEventData::conshdlrdata, FALSE, SCIP_Interval::inf, INTERVALINFTY, NULL, propagateBounds(), propagateBoundsTightenVarLb(), propagateBoundsTightenVarUb(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsDeleted(), SCIPconsIsEnabled(), SCIPdebugMessage, SCIPexprgraphGetNodeBounds(), SCIPexprgraphGetNVars(), SCIPexprgraphGetVarNodes(), SCIPexprgraphGetVars(), SCIPexprgraphPrintDot(), SCIPexprgraphPropagateNodeBounds(), SCIPexprgraphTightenNodeBounds(), SCIPfeastol(), SCIPgetMessagehdlr(), SCIPinProbing(), SCIPintervalGetInf(), SCIPintervalGetRoundingMode(), SCIPintervalGetSup(), SCIPintervalNegateReal(), SCIPintervalSetRoundingMode(), SCIPintervalSetRoundingModeDownwards(), SCIPisInfinity(), and SCIP_Interval::sup.
Referenced by propagateBounds(), and propagateBoundsCons().
calls domain propagation for a set of constraints
- Parameters
-
scip | SCIP data structure |
conshdlr | constraint handler |
conss | constraints to process |
nconss | number of constraints |
needclear | whether we may need to clear remainings from a previous backward propagation |
result | pointer to store the result of the propagation calls |
nchgbds | buffer where to add the the number of changed bounds |
ndelconss | buffer where to increase if a constraint was deleted (locally) due to redundancy |
Definition at line 6564 of file cons_nonlinear.c.
References LinVarEventData::consdata, consdataFindUnlockedLinearVar(), LinVarEventData::conshdlrdata, FALSE, INTERVALINFTY, NULL, propagateBoundsCons(), propagateConstraintSides(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsActive(), SCIPconsIsDeleted(), SCIPconsIsEnabled(), SCIPdebugMessage, SCIPdelConsLocal(), SCIPexprgraphGetNodeBounds(), SCIPexprgraphPrintDot(), SCIPexprgraphPropagateVarBounds(), SCIPgetMessagehdlr(), SCIPintervalIsEmpty(), and TRUE.
Referenced by propagateConstraintSides(), SCIP_DECL_CONSENFOLP(), SCIP_DECL_CONSENFOPS(), SCIP_DECL_CONSPRESOL(), and SCIP_DECL_CONSPROP().
Given a solution where every nonlinear constraint is either feasible or can be made feasible by moving a linear variable, construct the corresponding feasible solution and pass it to the trysol heuristic. The method assumes that this is always possible and that not all constraints are feasible already.
- Parameters
-
scip | SCIP data structure |
conshdlr | constraint handler |
conss | constraints to process |
nconss | number of constraints |
sol | solution to process |
success | buffer to store whether we succeeded to construct a solution that satisfies all provided constraints |
Definition at line 6752 of file cons_nonlinear.c.
References computeViolation(), LinVarEventData::consdata, LinVarEventData::conshdlrdata, FALSE, MAX, MIN, NULL, SCIP_CALL, SCIP_DECL_CONSHDLRCOPY(), SCIP_OKAY, SCIP_Real, SCIP_STAGE_INITPRESOLVE, SCIP_STAGE_SOLVED, SCIPceil(), SCIPconsGetData(), SCIPconshdlrGetData(), SCIPcreateLPSol(), SCIPcreateSolCopy(), SCIPdebugMessage, SCIPfeastol(), SCIPfloor(), SCIPfreeSol(), SCIPgetSolTransObj(), SCIPgetSolVal(), SCIPgetStage(), SCIPgetUpperbound(), SCIPheurPassSolTrySol(), SCIPincSolVal(), SCIPisGT(), SCIPisInfinity(), SCIPisNegative(), SCIPisPositive(), SCIPisSumLT(), SCIPisZero(), SCIPunlinkSol(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), SCIPvarIsIntegral(), and TRUE.
Referenced by consdataFindUnlockedLinearVar(), and SCIP_DECL_CONSCHECK().
static SCIP_DECL_CONSHDLRCOPY |
( |
conshdlrCopyNonlinear |
| ) |
|
|
static |
static SCIP_DECL_CONSFREE |
( |
consFreeNonlinear |
| ) |
|
|
static |
destructor of constraint handler to free constraint handler data (called when SCIP is exiting)
Definition at line 6919 of file cons_nonlinear.c.
References LinVarEventData::conshdlrdata, NULL, SCIP_CALL, SCIP_DECL_CONSINIT(), SCIP_OKAY, SCIPconshdlrGetData(), SCIPexprgraphFree(), SCIPexprgraphGetNVars(), SCIPexprintFree(), SCIPfreeMemory, and SCIPfreeMemoryArrayNull.
Referenced by SCIP_DECL_CONSHDLRCOPY().
static SCIP_DECL_CONSINIT |
( |
consInitNonlinear |
| ) |
|
|
static |
static SCIP_DECL_CONSEXIT |
( |
consExitNonlinear |
| ) |
|
|
static |
static SCIP_DECL_CONSINITPRE |
( |
consInitpreNonlinear |
| ) |
|
|
static |
static SCIP_DECL_CONSEXITPRE |
( |
consExitpreNonlinear |
| ) |
|
|
static |
presolving deinitialization method of constraint handler (called after presolving has been finished)
Definition at line 7035 of file cons_nonlinear.c.
References LinVarEventData::consdata, consdataSetExprtrees(), LinVarEventData::conshdlrdata, FALSE, mergeAndCleanLinearVars(), NULL, removeFixedLinearVariables(), removeFixedNonlinearVariables(), SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSINITSOL(), SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPconsGetData(), SCIPconshdlrGetData(), SCIPconsIsActive(), SCIPconsIsAdded(), SCIPdebugMessage, SCIPenableNLP(), SCIPepsilon(), SCIPexprgraphGetSumTrees(), SCIPexprgraphGetSumTreesNSummands(), SCIPexprgraphSimplify(), SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPfreeBufferArray, SCIPgetMessagehdlr(), SCIPvarIsActive(), splitOffLinearPart(), and TRUE.
Referenced by SCIP_DECL_CONSINITPRE().
static SCIP_DECL_CONSINITSOL |
( |
consInitsolNonlinear |
| ) |
|
|
static |
solving process initialization method of constraint handler (called when branch and bound process is about to begin)
Definition at line 7140 of file cons_nonlinear.c.
References LinVarEventData::consdata, consdataFindUnlockedLinearVar(), CONSHDLR_NAME, LinVarEventData::conshdlrdata, createNlRow(), FALSE, MAX, MIN, NULL, REALABS, SCIP_CALL, SCIP_DECL_CONSEXITSOL(), SCIP_EVENTTYPE_SOLFOUND, SCIP_OKAY, SCIPaddNlRow(), SCIPcatchEvent(), SCIPconsGetData(), SCIPconshdlrGetData(), SCIPconsIsEnabled(), SCIPfindEventhdlr(), SCIPinfinity(), and SCIPisNLPConstructed().
Referenced by SCIP_DECL_CONSEXITPRE().
static SCIP_DECL_CONSEXITSOL |
( |
consExitsolNonlinear |
| ) |
|
|
static |
solving process deinitialization method of constraint handler (called before branch and bound process data is freed)
Definition at line 7205 of file cons_nonlinear.c.
References LinVarEventData::consdata, CONSHDLR_NAME, LinVarEventData::conshdlrdata, NULL, SCIP_CALL, SCIP_DECL_CONSDELETE(), SCIP_EVENTTYPE_SOLFOUND, SCIP_OKAY, SCIPconsGetData(), SCIPconshdlrGetData(), SCIPdropEvent(), SCIPfindEventhdlr(), and SCIPreleaseNlRow().
Referenced by SCIP_DECL_CONSINITSOL().
static SCIP_DECL_CONSDELETE |
( |
consDeleteNonlinear |
| ) |
|
|
static |
static SCIP_DECL_CONSTRANS |
( |
consTransNonlinear |
| ) |
|
|
static |
transforms constraint data into data belonging to the transformed problem
Definition at line 7270 of file cons_nonlinear.c.
References BMScopyMemoryArray, consdataCreate(), FALSE, NULL, SCIP_CALL, SCIP_DECL_CONSINITLP(), SCIP_OKAY, SCIPcaptureVar(), SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateCons(), SCIPdebugMessage, SCIPdebugPrintCons, SCIPgetExprtreeTransformedVars(), SCIPgetTransformedVar(), and TRUE.
Referenced by SCIP_DECL_CONSDELETE().
static SCIP_DECL_CONSINITLP |
( |
consInitlpNonlinear |
| ) |
|
|
static |
LP initialization method of constraint handler (called before the initial LP relaxation at a node is solved)
Definition at line 7319 of file cons_nonlinear.c.
References checkCurvature(), LinVarEventData::consdata, LinVarEventData::conshdlrdata, FALSE, generateCut(), INITLPMAXVARVAL, MAX, MIN, NULL, SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSSEPALP(), SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_OKAY, SCIP_Real, SCIP_SIDETYPE_LEFT, SCIP_SIDETYPE_RIGHT, SCIPaddCut(), SCIPaddVarsToRow(), SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsLocal(), SCIPcreateEmptyRowCons(), SCIPdebug, SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPfreeBufferArray, SCIPisInfinity(), SCIPprintRow(), SCIPreleaseRow(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), and TRUE.
Referenced by SCIP_DECL_CONSTRANS().
static SCIP_DECL_CONSSEPALP |
( |
consSepalpNonlinear |
| ) |
|
|
static |
separation method of constraint handler for LP solutions
Definition at line 7449 of file cons_nonlinear.c.
References addLinearizationCuts(), checkCurvature(), computeViolations(), LinVarEventData::consdata, LinVarEventData::conshdlrdata, FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DECL_CONSSEPASOL(), SCIP_DIDNOTFIND, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_LPSOLSTAT_OPTIMAL, SCIP_LPSOLSTAT_UNBOUNDEDRAY, SCIP_NLPSOLSTAT_FEASIBLE, SCIP_NLPSOLSTAT_GLOBINFEASIBLE, SCIP_NLPSOLSTAT_UNKNOWN, SCIP_OKAY, SCIP_SEPARATED, SCIPaddLinearConsToNlpHeurSubNlp(), SCIPconsGetData(), SCIPconshdlrGetData(), SCIPcreateNLPSol(), SCIPdebugMessage, SCIPfeastol(), SCIPfreeSol(), SCIPgetDepth(), SCIPgetLPSolstat(), SCIPgetNBinVars(), SCIPgetNContVars(), SCIPgetNIntVars(), SCIPgetNLPFracVars(), SCIPgetNLPSolstat(), SCIPgetNNlpis(), SCIPgetNVars(), SCIPheurPassSolTrySol(), SCIPisGT(), SCIPisNLPConstructed(), SCIPsetNLPInitialGuessSol(), SCIPsolveNLP(), separatePoint(), and TRUE.
Referenced by SCIP_DECL_CONSINITLP().
static SCIP_DECL_CONSSEPASOL |
( |
consSepasolNonlinear |
| ) |
|
|
static |
static SCIP_DECL_CONSENFOLP |
( |
consEnfolpNonlinear |
| ) |
|
|
static |
constraint enforcing method of constraint handler for LP solutions
Definition at line 7625 of file cons_nonlinear.c.
References computeViolations(), LinVarEventData::consdata, LinVarEventData::conshdlrdata, FALSE, MAX, MIN, NULL, propagateBounds(), registerBranchingVariables(), registerLargeLPValueVariableForBranching(), replaceViolatedByLinearConstraints(), SCIP_Bool, SCIP_BRANCHED, SCIP_CALL, SCIP_CONSADDED, SCIP_CUTOFF, SCIP_DECL_CONSENFOPS(), SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIP_Real, SCIP_REDUCEDDOM, SCIP_SEPARATED, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsActive(), SCIPcreateChild(), SCIPdebugMessage, SCIPepsilon(), SCIPfeastol(), SCIPgetCurrentNode(), SCIPgetRelaxFeastolFactor(), SCIPgetSolVal(), SCIPisGT(), SCIPisInfinity(), SCIPisStopped(), SCIPnodeGetEstimate(), SCIPvarGetName(), SCIPwarningMessage(), separatePoint(), and TRUE.
Referenced by SCIP_DECL_CONSSEPASOL().
static SCIP_DECL_CONSENFOPS |
( |
consEnfopsNonlinear |
| ) |
|
|
static |
constraint enforcing method of constraint handler for pseudo solutions
Definition at line 7797 of file cons_nonlinear.c.
References computeViolations(), LinVarEventData::consdata, MAX, NULL, propagateBounds(), SCIP_CALL, SCIP_CUTOFF, SCIP_DECL_CONSCHECK(), SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_INVALID, SCIP_OKAY, SCIP_REDUCEDDOM, SCIP_SOLVELP, SCIPaddExternBranchCand(), SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsActive(), SCIPdebugMessage, SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPfeastol(), SCIPisGT(), SCIPisRelEQ(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), and TRUE.
Referenced by SCIP_DECL_CONSENFOLP().
static SCIP_DECL_CONSCHECK |
( |
consCheckNonlinear |
| ) |
|
|
static |
feasibility check method of constraint handler for integral solutions
Definition at line 7884 of file cons_nonlinear.c.
References computeViolation(), LinVarEventData::consdata, consdataFindUnlockedLinearVar(), LinVarEventData::conshdlrdata, FALSE, MAX, NULL, proposeFeasibleSolution(), REALABS, SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSPROP(), SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIP_Real, SCIP_STAGE_EXITPRESOLVE, SCIP_STAGE_INITPRESOLVE, SCIP_STAGE_SOLVING, SCIP_STAGE_TRANSFORMED, SCIPallocBufferArray, SCIPconsGetData(), SCIPconshdlrGetData(), SCIPexprgraphEval(), SCIPexprgraphGetNVars(), SCIPexprgraphGetVars(), SCIPfeastol(), SCIPfreeBufferArray, SCIPgetSolVals(), SCIPgetStage(), SCIPinfoMessage(), SCIPisGT(), SCIPisInfinity(), SCIPprintCons(), and SCIPupdateStartpointHeurSubNlp().
Referenced by SCIP_DECL_CONSENFOPS().
static SCIP_DECL_CONSPROP |
( |
consPropNonlinear |
| ) |
|
|
static |
static SCIP_DECL_CONSPRESOL |
( |
consPresolNonlinear |
| ) |
|
|
static |
presolving method of constraint handler
Definition at line 8028 of file cons_nonlinear.c.
References LinVarEventData::consdata, LinVarEventData::conshdlrdata, FALSE, INTERVALINFTY, NULL, presolveUpgrade(), propagateBounds(), reformulate(), removeFixedLinearVariables(), removeFixedNonlinearVariables(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DECL_CONSLOCK(), SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_PRESOLTIMING_EXHAUSTIVE, SCIP_PRESOLTIMING_FAST, SCIP_REDUCEDDOM, SCIP_SUCCESS, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsActive(), SCIPdebugMessage, SCIPdebugPrintCons, SCIPdelCons(), SCIPepsilon(), SCIPexprgraphPropagateVarBounds(), SCIPexprgraphSimplify(), SCIPgetMessagehdlr(), SCIPisFeasNegative(), SCIPisFeasPositive(), SCIPisInfinity(), SCIPisPresolveFinished(), splitOffLinearPart(), and TRUE.
Referenced by SCIP_DECL_CONSPROP().
static SCIP_DECL_CONSLOCK |
( |
consLockNonlinear |
| ) |
|
|
static |
variable rounding lock method of constraint handler
Definition at line 8229 of file cons_nonlinear.c.
References LinVarEventData::consdata, NULL, SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSACTIVE(), SCIP_OKAY, SCIPaddVarLocks(), SCIPconsGetData(), SCIPconsIsActive(), SCIPconsIsDeleted(), and SCIPisInfinity().
Referenced by SCIP_DECL_CONSPRESOL().
static SCIP_DECL_CONSACTIVE |
( |
consActiveNonlinear |
| ) |
|
|
static |
constraint activation notification method of constraint handler
Definition at line 8281 of file cons_nonlinear.c.
References LinVarEventData::consdata, consdataSetExprtrees(), LinVarEventData::conshdlrdata, FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSDEACTIVE(), SCIP_OKAY, SCIP_STAGE_EXITPRESOLVE, SCIP_STAGE_INITPRESOLVE, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsTransformed(), SCIPdebugMessage, SCIPexprgraphAddExprtreeSum(), SCIPgetStage(), and TRUE.
Referenced by SCIP_DECL_CONSLOCK().
static SCIP_DECL_CONSDEACTIVE |
( |
consDeactiveNonlinear |
| ) |
|
|
static |
constraint deactivation notification method of constraint handler
Definition at line 8341 of file cons_nonlinear.c.
References LinVarEventData::consdata, consdataSetExprtrees(), LinVarEventData::conshdlrdata, FALSE, NULL, SCIP_CALL, SCIP_DECL_CONSENABLE(), SCIP_OKAY, SCIP_STAGE_EXITPRESOLVE, SCIP_STAGE_FREETRANS, SCIP_STAGE_PRESOLVING, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsTransformed(), SCIPdebugMessage, SCIPexprgraphGetTree(), SCIPexprgraphReleaseNode(), and SCIPgetStage().
Referenced by SCIP_DECL_CONSACTIVE().
static SCIP_DECL_CONSENABLE |
( |
consEnableNonlinear |
| ) |
|
|
static |
constraint enabling notification method of constraint handler
Definition at line 8384 of file cons_nonlinear.c.
References catchLinearVarEvents(), LinVarEventData::consdata, LinVarEventData::conshdlrdata, NULL, SCIP_CALL, SCIP_DECL_CONSDISABLE(), SCIP_OKAY, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsActive(), SCIPconsIsTransformed(), SCIPdebugMessage, SCIPexprgraphEnableNode(), SCIPvarIsActive(), and TRUE.
Referenced by SCIP_DECL_CONSDEACTIVE().
static SCIP_DECL_CONSDISABLE |
( |
consDisableNonlinear |
| ) |
|
|
static |
constraint disabling notification method of constraint handler
Definition at line 8425 of file cons_nonlinear.c.
References LinVarEventData::consdata, LinVarEventData::conshdlrdata, dropLinearVarEvents(), NULL, SCIP_CALL, SCIP_DECL_CONSPRINT(), SCIP_OKAY, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsTransformed(), SCIPdebugMessage, and SCIPexprgraphDisableNode().
Referenced by SCIP_DECL_CONSENABLE().
static SCIP_DECL_CONSPRINT |
( |
consPrintNonlinear |
| ) |
|
|
static |
constraint display method of constraint handler
Definition at line 8463 of file cons_nonlinear.c.
References LinVarEventData::consdata, LinVarEventData::conshdlrdata, NULL, SCIP_CALL, SCIP_DECL_CONSCOPY(), SCIP_OKAY, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_IMPLINT, SCIP_VARTYPE_INTEGER, SCIPconsGetData(), SCIPconshdlrGetData(), SCIPexprgraphGetTree(), SCIPexprtreeFree(), SCIPexprtreePrintWithNames(), SCIPgetMessagehdlr(), SCIPinfoMessage(), SCIPisEQ(), SCIPisInfinity(), SCIPvarGetName(), and SCIPvarGetType().
Referenced by SCIP_DECL_CONSDISABLE().
static SCIP_DECL_CONSCOPY |
( |
consCopyNonlinear |
| ) |
|
|
static |
constraint copying method of constraint handler
Definition at line 8542 of file cons_nonlinear.c.
References BMSclearMemoryArray, LinVarEventData::consdata, LinVarEventData::conshdlrdata, NULL, SCIP_CALL, SCIP_DECL_CONSGETVARS(), SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPblkmem(), SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPcreateConsNonlinear(), SCIPexprgraphGetTree(), SCIPexprtreeCopy(), SCIPexprtreeFree(), SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPexprtreeSetVars(), SCIPfreeBufferArray, SCIPfreeBufferArrayNull, SCIPgetVarCopy(), SCIPreallocBufferArray, and TRUE.
Referenced by SCIP_DECL_CONSPRINT().
static SCIP_DECL_CONSGETVARS |
( |
consGetVarsNonlinear |
| ) |
|
|
static |
constraint method of constraint handler which returns the variables (if possible)
Definition at line 8666 of file cons_nonlinear.c.
References BMScopyMemoryArray, LinVarEventData::consdata, LinVarEventData::conshdlrdata, FALSE, NULL, SCIP_CALL, SCIP_DECL_CONSGETNVARS(), SCIP_OKAY, SCIPallocBufferArray, SCIPconsGetData(), SCIPconshdlrGetData(), SCIPexprgraphGetNVars(), SCIPexprgraphGetSubtreeVarsUsage(), SCIPexprgraphGetVars(), SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPfreeBufferArray, and TRUE.
Referenced by SCIP_DECL_CONSCOPY().
static SCIP_DECL_CONSGETNVARS |
( |
consGetNVarsNonlinear |
| ) |
|
|
static |
constraint method of constraint handler which returns the number of variables (if possible)
Definition at line 8745 of file cons_nonlinear.c.
References LinVarEventData::consdata, LinVarEventData::conshdlrdata, NULL, SCIP_CALL, SCIP_DECL_CONSPARSE(), SCIP_OKAY, SCIPallocBufferArray, SCIPconsGetData(), SCIPconshdlrGetData(), SCIPexprgraphGetNVars(), SCIPexprgraphGetSubtreeVarsUsage(), SCIPexprtreeGetNVars(), SCIPfreeBufferArray, and TRUE.
Referenced by SCIP_DECL_CONSGETVARS().
static SCIP_DECL_CONSPARSE |
( |
consParseNonlinear |
| ) |
|
|
static |
constraint parsing method of constraint handler
Definition at line 8788 of file cons_nonlinear.c.
References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_READERROR, SCIP_Real, SCIPallocBufferArray, SCIPblkmem(), SCIPcreateConsNonlinear(), SCIPdebugMessage, SCIPdebugPrintCons, SCIPerrorMessage, SCIPexprParse(), SCIPexprtreeCreate(), SCIPexprtreeFree(), SCIPexprtreeSetVars(), SCIPfindVar(), SCIPfreeBufferArray, SCIPgetMessagehdlr(), SCIPincludeConshdlrNonlinear(), SCIPinfinity(), SCIPisInfinity(), SCIPstrToRealValue(), and TRUE.
Referenced by SCIP_DECL_CONSGETNVARS().
creates the handler for nonlinear constraints and includes it in SCIP
- Parameters
-
Definition at line 8987 of file cons_nonlinear.c.
References BMSclearMemory, CONSHDLR_CHECKPRIORITY, CONSHDLR_DELAYPROP, CONSHDLR_DELAYSEPA, CONSHDLR_DESC, CONSHDLR_EAGERFREQ, CONSHDLR_ENFOPRIORITY, CONSHDLR_MAXPREROUNDS, CONSHDLR_NAME, CONSHDLR_NEEDSCONS, CONSHDLR_PRESOLTIMING, CONSHDLR_PROP_TIMING, CONSHDLR_PROPFREQ, CONSHDLR_SEPAFREQ, CONSHDLR_SEPAPRIORITY, LinVarEventData::conshdlrdata, FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPaddBoolParam(), SCIPaddCharParam(), SCIPaddIntParam(), SCIPaddRealParam(), SCIPallocMemory, SCIPblkmem(), SCIPexprgraphCreate(), SCIPexprintCreate(), SCIPincludeConshdlrBasic(), SCIPincludeEventhdlrBasic(), SCIPincludeNonlinconsUpgrade(), SCIPinfinity(), SCIPsetConshdlrActive(), SCIPsetConshdlrCopy(), SCIPsetConshdlrDeactive(), SCIPsetConshdlrDelete(), SCIPsetConshdlrDisable(), SCIPsetConshdlrEnable(), SCIPsetConshdlrExit(), SCIPsetConshdlrExitpre(), SCIPsetConshdlrExitsol(), SCIPsetConshdlrFree(), SCIPsetConshdlrGetNVars(), SCIPsetConshdlrGetVars(), SCIPsetConshdlrInit(), SCIPsetConshdlrInitlp(), SCIPsetConshdlrInitpre(), SCIPsetConshdlrInitsol(), SCIPsetConshdlrParse(), SCIPsetConshdlrPresol(), SCIPsetConshdlrPrint(), SCIPsetConshdlrProp(), SCIPsetConshdlrSepa(), SCIPsetConshdlrTrans(), and TRUE.
Referenced by SCIP_DECL_CONSHDLRCOPY(), SCIP_DECL_CONSPARSE(), and SCIPincludeDefaultPlugins().
includes a nonlinear constraint upgrade method into the nonlinear constraint handler
- Parameters
-
scip | SCIP data structure |
priority | priority of upgrading method |
active | should the upgrading method by active by default? |
conshdlrname | name of the constraint handler |
Definition at line 9110 of file cons_nonlinear.c.
References SCIP_NlConsUpgrade::active, CONSHDLR_NAME, LinVarEventData::conshdlrdata, FALSE, NULL, paramname, SCIP_NlConsUpgrade::priority, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPaddBoolParam(), SCIPallocMemory, SCIPcalcMemGrowSize(), SCIPconshdlrGetData(), SCIPcreateConsNonlinear(), SCIPerrorMessage, SCIPfindConshdlr(), SCIPreallocMemoryArray, SCIPsnprintf(), and SCIPwarningMessage().
Referenced by SCIPincludeConshdlrAbspower(), SCIPincludeConshdlrAnd(), SCIPincludeConshdlrBivariate(), SCIPincludeConshdlrNonlinear(), and SCIPincludeConshdlrQuadratic().
SCIP_RETCODE SCIPcreateConsNonlinear |
( |
SCIP * |
scip, |
|
|
SCIP_CONS ** |
cons, |
|
|
const char * |
name, |
|
|
int |
nlinvars, |
|
|
SCIP_VAR ** |
linvars, |
|
|
SCIP_Real * |
lincoefs, |
|
|
int |
nexprtrees, |
|
|
SCIP_EXPRTREE ** |
exprtrees, |
|
|
SCIP_Real * |
nonlincoefs, |
|
|
SCIP_Real |
lhs, |
|
|
SCIP_Real |
rhs, |
|
|
SCIP_Bool |
initial, |
|
|
SCIP_Bool |
separate, |
|
|
SCIP_Bool |
enforce, |
|
|
SCIP_Bool |
check, |
|
|
SCIP_Bool |
propagate, |
|
|
SCIP_Bool |
local, |
|
|
SCIP_Bool |
modifiable, |
|
|
SCIP_Bool |
dynamic, |
|
|
SCIP_Bool |
removable, |
|
|
SCIP_Bool |
stickingatnode |
|
) |
| |
creates and captures a nonlinear constraint this variant takes expression trees as input
- Note
- the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
- Parameters
-
scip | SCIP data structure |
cons | pointer to hold the created constraint |
name | name of constraint |
nlinvars | number of linear variables in the constraint |
linvars | array with linear variables of constraint entries |
lincoefs | array with coefficients of constraint linear entries |
nexprtrees | number of expression trees for nonlinear part of constraint |
exprtrees | expression trees for nonlinear part of constraint |
nonlincoefs | coefficients for expression trees for nonlinear part, or NULL if all 1.0 |
lhs | left hand side of constraint |
rhs | right hand side of constraint |
initial | should the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'. |
separate | should the constraint be separated during LP processing? Usually set to TRUE. |
enforce | should the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints. |
check | should the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints. |
propagate | should the constraint be propagated during node processing? Usually set to TRUE. |
local | is constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. |
modifiable | is constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint. |
dynamic | is constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are seperated as constraints. |
removable | should the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'. |
stickingatnode | should the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data. |
Definition at line 9195 of file cons_nonlinear.c.
References addLinearCoef(), LinVarEventData::consdata, consdataCreateEmpty(), consdataEnsureLinearVarsSize(), consdataSetExprtrees(), CONSHDLR_NAME, FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPcreateCons(), SCIPcreateConsBasicNonlinear(), SCIPdebugMessage, SCIPdebugPrintCons, SCIPerrorMessage, SCIPfindConshdlr(), SCIPisZero(), and TRUE.
Referenced by readConstraints(), readNonlinearExprs(), readObjective(), removeFixedVariables(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSPARSE(), SCIPcreateConsBasicNonlinear(), and SCIPincludeNonlinconsUpgrade().
SCIP_RETCODE SCIPcreateConsBasicNonlinear |
( |
SCIP * |
scip, |
|
|
SCIP_CONS ** |
cons, |
|
|
const char * |
name, |
|
|
int |
nlinvars, |
|
|
SCIP_VAR ** |
linvars, |
|
|
SCIP_Real * |
lincoefs, |
|
|
int |
nexprtrees, |
|
|
SCIP_EXPRTREE ** |
exprtrees, |
|
|
SCIP_Real * |
nonlincoefs, |
|
|
SCIP_Real |
lhs, |
|
|
SCIP_Real |
rhs |
|
) |
| |
creates and captures a nonlinear constraint in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsNonlinear(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h
this variant takes expression trees as input
- See also
- SCIPcreateConsNonlinear() for information about the basic constraint flag configuration
- Note
- the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
- Parameters
-
scip | SCIP data structure |
cons | pointer to hold the created constraint |
name | name of constraint |
nlinvars | number of linear variables in the constraint |
linvars | array with linear variables of constraint entries |
lincoefs | array with coefficients of constraint linear entries |
nexprtrees | number of expression trees for nonlinear part of constraint |
exprtrees | expression trees for nonlinear part of constraint |
nonlincoefs | coefficients for expression trees for nonlinear part, or NULL if all 1.0 |
lhs | left hand side of constraint |
rhs | right hand side of constraint |
Definition at line 9288 of file cons_nonlinear.c.
References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPcreateConsNonlinear(), SCIPcreateConsNonlinear2(), and TRUE.
Referenced by SCIPcreateConsNonlinear().
SCIP_RETCODE SCIPcreateConsNonlinear2 |
( |
SCIP * |
scip, |
|
|
SCIP_CONS ** |
cons, |
|
|
const char * |
name, |
|
|
int |
nlinvars, |
|
|
SCIP_VAR ** |
linvars, |
|
|
SCIP_Real * |
lincoefs, |
|
|
SCIP_EXPRGRAPHNODE * |
exprgraphnode, |
|
|
SCIP_Real |
lhs, |
|
|
SCIP_Real |
rhs, |
|
|
SCIP_Bool |
initial, |
|
|
SCIP_Bool |
separate, |
|
|
SCIP_Bool |
enforce, |
|
|
SCIP_Bool |
check, |
|
|
SCIP_Bool |
propagate, |
|
|
SCIP_Bool |
local, |
|
|
SCIP_Bool |
modifiable, |
|
|
SCIP_Bool |
dynamic, |
|
|
SCIP_Bool |
removable, |
|
|
SCIP_Bool |
stickingatnode |
|
) |
| |
creates and captures a nonlinear constraint this variant takes a node of the expression graph as input and can only be used during presolving it is assumed that the nonlinear constraint will be added to the transformed problem short after creation the given exprgraphnode is captured in this method
- Note
- the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
- Parameters
-
scip | SCIP data structure |
cons | pointer to hold the created constraint |
name | name of constraint |
nlinvars | number of linear variables in the constraint |
linvars | array with linear variables of constraint entries |
lincoefs | array with coefficients of constraint linear entries |
exprgraphnode | expression graph node associated to nonlinear expression |
lhs | left hand side of constraint |
rhs | right hand side of constraint |
initial | should the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'. |
separate | should the constraint be separated during LP processing? Usually set to TRUE. |
enforce | should the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints. |
check | should the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints. |
propagate | should the constraint be propagated during node processing? Usually set to TRUE. |
local | is constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. |
modifiable | is constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint. |
dynamic | is constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are seperated as constraints. |
removable | should the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'. |
stickingatnode | should the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data. |
Definition at line 9318 of file cons_nonlinear.c.
References addLinearCoef(), LinVarEventData::consdata, consdataCreateEmpty(), consdataEnsureLinearVarsSize(), CONSHDLR_NAME, FALSE, NULL, SCIP_CALL, SCIP_EXPRCURV_UNKNOWN, SCIP_INVALID, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIP_STAGE_PRESOLVING, SCIPcreateCons(), SCIPcreateConsBasicNonlinear2(), SCIPdebugMessage, SCIPdebugPrintCons, SCIPerrorMessage, SCIPexprgraphCaptureNode(), SCIPfindConshdlr(), SCIPgetStage(), and SCIPisZero().
Referenced by reformMonomial(), reformNode2Var(), reformulate(), SCIP_DECL_EXPRGRAPHNODEREFORM(), SCIP_DECL_NONLINCONSUPGD(), SCIPcreateConsBasicNonlinear(), and SCIPcreateConsBasicNonlinear2().
creates and captures a nonlinear constraint in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsNonlinear(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h
this variant takes a node of the expression graph as input and can only be used during presolving it is assumed that the nonlinear constraint will be added to the transformed problem short after creation the given exprgraphnode is captured in this method
- See also
- SCIPcreateConsNonlinear() for information about the basic constraint flag configuration
- Note
- the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
- Parameters
-
scip | SCIP data structure |
cons | pointer to hold the created constraint |
name | name of constraint |
nlinvars | number of linear variables in the constraint |
linvars | array with linear variables of constraint entries |
lincoefs | array with coefficients of constraint linear entries |
exprgraphnode | expression graph node associated to nonlinear expression |
lhs | left hand side of constraint |
rhs | right hand side of constraint |
Definition at line 9416 of file cons_nonlinear.c.
References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPaddLinearVarNonlinear(), SCIPcreateConsNonlinear2(), and TRUE.
Referenced by SCIPcreateConsNonlinear2().
adds expression trees to a nonlinear constraint constraint must not be active yet
- Parameters
-
scip | SCIP data structure |
cons | constraint |
nexprtrees | number of expression trees |
exprtrees | new expression trees, or NULL if nexprtrees is 0 |
coefs | coefficients of expression trees, or NULL if all 1.0 |
Definition at line 9479 of file cons_nonlinear.c.
References consdataAddExprtrees(), NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsIsActive(), SCIPgetNlRowNonlinear(), and TRUE.
Referenced by readNonlinearExprs(), and SCIPsetExprtreesNonlinear().
int SCIPgetNLinearVarsNonlinear |
( |
SCIP * |
scip, |
|
|
SCIP_CONS * |
cons |
|
) |
| |
gets the curvature of the nonlinear function of a nonlinear constraint
- Parameters
-
scip | SCIP data structure |
cons | constraint |
checkcurv | whether to check constraint curvature, if not checked before |
curvature | pointer to store curvature of constraint |
Definition at line 9657 of file cons_nonlinear.c.
References checkCurvature(), LinVarEventData::consdata, LinVarEventData::conshdlrdata, NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetData(), and SCIPgetExprtreeCurvaturesNonlinear().
Referenced by SCIPcheckCurvatureNonlinear().
gets the curvature of the expression trees (multiplied by their coefficient) of a nonlinear constraint
- Parameters
-
scip | SCIP data structure |
cons | constraint |
checkcurv | whether to check constraint curvature, if not checked before |
curvatures | buffer to store curvatures of exprtrees |
Definition at line 9691 of file cons_nonlinear.c.
References checkCurvature(), LinVarEventData::consdata, LinVarEventData::conshdlrdata, NULL, SCIP_CALL, SCIP_OKAY, SCIP_STAGE_EXITPRESOLVE, SCIP_STAGE_INITPRESOLVE, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetData(), SCIPgetStage(), and SCIPgetViolationNonlinear().
Referenced by SCIPgetCurvatureNonlinear().
computes the violation of a nonlinear constraint by a solution
- Parameters
-
scip | SCIP data structure |
cons | constraint |
sol | solution which violation to calculate, or NULL for LP solution |
violation | pointer to store violation of constraint |
Definition at line 9728 of file cons_nonlinear.c.
References computeViolation(), LinVarEventData::consdata, MAX, NULL, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_STAGE_EXITPRESOLVE, SCIP_STAGE_INITPRESOLVE, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsIsActive(), SCIPgetExprgraphNonlinear(), SCIPgetStage(), and SCIPwarningMessage().
Referenced by SCIPgetExprtreeCurvaturesNonlinear().
SCIP_RETCODE SCIPcomputeHyperplaneThreePoints |
( |
SCIP * |
scip, |
|
|
SCIP_Real |
a1, |
|
|
SCIP_Real |
a2, |
|
|
SCIP_Real |
a3, |
|
|
SCIP_Real |
b1, |
|
|
SCIP_Real |
b2, |
|
|
SCIP_Real |
b3, |
|
|
SCIP_Real |
c1, |
|
|
SCIP_Real |
c2, |
|
|
SCIP_Real |
c3, |
|
|
SCIP_Real * |
alpha, |
|
|
SCIP_Real * |
beta, |
|
|
SCIP_Real * |
gamma_, |
|
|
SCIP_Real * |
delta |
|
) |
| |
given three points, constructs coefficient of equation for hyperplane generated by these three points Three points a, b, and c are given. Computes coefficients alpha, beta, gamma, and delta, such that a, b, and c, satisfy alpha * x1 + beta * x2 + gamma * x3 = delta and gamma >= 0.0.
- Parameters
-
scip | SCIP data structure |
a1 | first coordinate of a |
a2 | second coordinate of a |
a3 | third coordinate of a |
b1 | first coordinate of b |
b2 | second coordinate of b |
b3 | third coordinate of b |
c1 | first coordinate of c |
c2 | second coordinate of c |
c3 | third coordinate of c |
alpha | coefficient of first coordinate |
beta | coefficient of second coordinate |
gamma_ | coefficient of third coordinate |
delta | constant right-hand side |
Definition at line 9786 of file cons_nonlinear.c.
References NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPdebugMessage, SCIPisRelEQ(), and SCIPsolveLinearProb().
Referenced by addConcaveEstimatorBivariate(), generateEstimatingHyperplane(), and SCIPgetExprgraphNonlinear().
|