Scippy

SCIP

Solving Constraint Integer Programs

cons_nonlinear.c File Reference

Detailed Description

constraint handler for nonlinear constraints \(\textrm{lhs} \leq \sum_{i=1}^n a_ix_i + \sum_{j=1}^m c_jf_j(x) \leq \textrm{rhs}\)

Author
Stefan Vigerske
Ingmar Vierhaus (consparse)

Definition in file cons_nonlinear.c.

#include "blockmemshell/memory.h"
#include <ctype.h>
#include "lpi/lpi.h"
#include "lpi/type_lpi.h"
#include "nlpi/exprinterpret.h"
#include "nlpi/nlpi_ipopt.h"
#include "nlpi/pub_expr.h"
#include "nlpi/type_exprinterpret.h"
#include "nlpi/type_nlpi.h"
#include "scip/cons_linear.h"
#include "scip/cons_nonlinear.h"
#include "scip/cons_quadratic.h"
#include "scip/debug.h"
#include "scip/heur_subnlp.h"
#include "scip/heur_trysol.h"
#include "scip/intervalarith.h"
#include "scip/pub_cons.h"
#include "scip/pub_event.h"
#include "scip/pub_heur.h"
#include "scip/pub_lp.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/pub_misc_sort.h"
#include "scip/pub_nlp.h"
#include "scip/pub_sol.h"
#include "scip/pub_tree.h"
#include "scip/pub_var.h"
#include "scip/scip_branch.h"
#include "scip/scip_cons.h"
#include "scip/scip_copy.h"
#include "scip/scip_cut.h"
#include "scip/scip_event.h"
#include "scip/scip_expr.h"
#include "scip/scip_general.h"
#include "scip/scip_heur.h"
#include "scip/scip_lp.h"
#include "scip/scip_mem.h"
#include "scip/scip_message.h"
#include "scip/scip_nlp.h"
#include "scip/scip_numerics.h"
#include "scip/scip_param.h"
#include "scip/scip_prob.h"
#include "scip/scip_probing.h"
#include "scip/scip_sepa.h"
#include "scip/scip_sol.h"
#include "scip/scip_solvingstats.h"
#include "scip/scip_tree.h"
#include "scip/scip_var.h"
#include <string.h>

Go to the source code of this file.

Data Structures

struct  LinVarEventData
 
struct  SCIP_NlConsUpgrade
 

Macros

#define SCIP_PRIVATE_ROWPREP
 
#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
 
#define CONSHDLR_MAXPREROUNDS   -1
 
#define CONSHDLR_DELAYSEPA   FALSE
 
#define CONSHDLR_DELAYPROP   FALSE
 
#define CONSHDLR_NEEDSCONS   TRUE
 
#define CONSHDLR_PROP_TIMING   SCIP_PROPTIMING_BEFORELP
 
#define CONSHDLR_PRESOLTIMING   SCIP_PRESOLTIMING_ALWAYS
 
#define INTERVALINFTY   1E+43
 
#define BOUNDTIGHTENING_MINSTRENGTH   0.05
 
#define INITLPMAXVARVAL   1000.0
 
#define infty2infty(infty1, infty2, val)   ((val) >= (infty1) ? (infty2) : (val))
 

Typedefs

typedef struct LinVarEventData LINVAREVENTDATA
 
typedef struct SCIP_NlConsUpgrade SCIP_NLCONSUPGRADE
 

Functions

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, SCIP_Bool *infeasible)
 
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 mindepth, int *naddcons)
 
static SCIP_RETCODE reformulate (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss, int *naddcons)
 
static SCIP_RETCODE computeViolation (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool *solviolbounds)
 
static SCIP_RETCODE computeViolations (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss, SCIP_SOL *sol, SCIP_Bool *solviolbounds, SCIP_CONS **maxviolcon)
 
static SCIP_RETCODE addLinearization (SCIP *scip, SCIP_EXPRINT *exprint, SCIP_CONS *cons, int exprtreeidx, SCIP_Real *x, SCIP_Bool newx, SCIP_ROWPREP *rowprep, SCIP_Bool *success)
 
static SCIP_RETCODE addConcaveEstimatorUnivariate (SCIP *scip, SCIP_CONS *cons, int exprtreeidx, SCIP_ROWPREP *rowprep, SCIP_Bool *success)
 
static SCIP_RETCODE addConcaveEstimatorBivariate (SCIP *scip, SCIP_CONS *cons, int exprtreeidx, SCIP_Real *ref, SCIP_ROWPREP *rowprep, SCIP_Bool *success)
 
static SCIP_RETCODE addConcaveEstimatorMultivariate (SCIP *scip, SCIP_CONS *cons, int exprtreeidx, SCIP_Real *ref, SCIP_ROWPREP *rowprep, 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_ROWPREP *rowprep, 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_ROWPREP *rowprep, 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 minviol, 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 registerLargeRelaxValueVariableForBranching (SCIP *scip, SCIP_CONS **conss, int nconss, SCIP_SOL *sol, 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_RETCODE enforceConstraint (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss, int nusefulconss, SCIP_SOL *sol, SCIP_Bool solinfeasible, SCIP_RESULT *result)
 
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_CONSENFORELAX (consEnforelaxNonlinear)
 
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_RealSCIPgetLinearCoefsNonlinear (SCIP *scip, SCIP_CONS *cons)
 
int SCIPgetNExprtreesNonlinear (SCIP *scip, SCIP_CONS *cons)
 
SCIP_EXPRTREE ** SCIPgetExprtreesNonlinear (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RealSCIPgetExprtreeCoefsNonlinear (SCIP *scip, SCIP_CONS *cons)
 
SCIP_EXPRGRAPHNODESCIPgetExprgraphNodeNonlinear (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)
 
int SCIPgetLinvarMayDecreaseNonlinear (SCIP *scip, SCIP_CONS *cons)
 
int SCIPgetLinvarMayIncreaseNonlinear (SCIP *scip, SCIP_CONS *cons)
 
SCIP_EXPRGRAPHSCIPgetExprgraphNonlinear (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)
 

Macro Definition Documentation

◆ SCIP_PRIVATE_ROWPREP

#define SCIP_PRIVATE_ROWPREP

Definition at line 35 of file cons_nonlinear.c.

◆ CONSHDLR_NAME

◆ CONSHDLR_DESC

#define CONSHDLR_DESC   "constraint handler for nonlinear constraints"

Definition at line 85 of file cons_nonlinear.c.

Referenced by SCIPincludeConshdlrNonlinear().

◆ CONSHDLR_SEPAPRIORITY

#define CONSHDLR_SEPAPRIORITY   10

priority of the constraint handler for separation

Definition at line 86 of file cons_nonlinear.c.

Referenced by SCIPincludeConshdlrNonlinear().

◆ CONSHDLR_ENFOPRIORITY

#define CONSHDLR_ENFOPRIORITY   -60

priority of the constraint handler for constraint enforcing

Definition at line 87 of file cons_nonlinear.c.

Referenced by SCIPincludeConshdlrNonlinear().

◆ CONSHDLR_CHECKPRIORITY

#define CONSHDLR_CHECKPRIORITY   -4000010

priority of the constraint handler for checking feasibility

Definition at line 88 of file cons_nonlinear.c.

Referenced by SCIPincludeConshdlrNonlinear().

◆ CONSHDLR_SEPAFREQ

#define CONSHDLR_SEPAFREQ   1

frequency for separating cuts; zero means to separate only in the root node

Definition at line 89 of file cons_nonlinear.c.

Referenced by SCIPincludeConshdlrNonlinear().

◆ CONSHDLR_PROPFREQ

#define CONSHDLR_PROPFREQ   1

frequency for propagating domains; zero means only preprocessing propagation

Definition at line 90 of file cons_nonlinear.c.

Referenced by SCIPincludeConshdlrNonlinear().

◆ CONSHDLR_EAGERFREQ

#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 91 of file cons_nonlinear.c.

Referenced by SCIPincludeConshdlrNonlinear().

◆ CONSHDLR_MAXPREROUNDS

#define CONSHDLR_MAXPREROUNDS   -1

maximal number of presolving rounds the constraint handler participates in (-1: no limit)

Definition at line 94 of file cons_nonlinear.c.

Referenced by SCIPincludeConshdlrNonlinear().

◆ CONSHDLR_DELAYSEPA

#define CONSHDLR_DELAYSEPA   FALSE

should separation method be delayed, if other separators found cuts?

Definition at line 95 of file cons_nonlinear.c.

Referenced by SCIPincludeConshdlrNonlinear().

◆ CONSHDLR_DELAYPROP

#define CONSHDLR_DELAYPROP   FALSE

should propagation method be delayed, if other propagators found reductions?

Definition at line 96 of file cons_nonlinear.c.

Referenced by SCIPincludeConshdlrNonlinear().

◆ CONSHDLR_NEEDSCONS

#define CONSHDLR_NEEDSCONS   TRUE

should the constraint handler be skipped, if no constraints are available?

Definition at line 97 of file cons_nonlinear.c.

Referenced by SCIPincludeConshdlrNonlinear().

◆ CONSHDLR_PROP_TIMING

#define CONSHDLR_PROP_TIMING   SCIP_PROPTIMING_BEFORELP

propagation timing mask of the constraint handler

Definition at line 99 of file cons_nonlinear.c.

Referenced by SCIPincludeConshdlrNonlinear().

◆ CONSHDLR_PRESOLTIMING

#define CONSHDLR_PRESOLTIMING   SCIP_PRESOLTIMING_ALWAYS

presolving timing of the constraint handler (fast, medium, or exhaustive)

Definition at line 100 of file cons_nonlinear.c.

Referenced by SCIPincludeConshdlrNonlinear().

◆ INTERVALINFTY

◆ BOUNDTIGHTENING_MINSTRENGTH

#define BOUNDTIGHTENING_MINSTRENGTH   0.05

minimal required bound tightening strength in expression graph domain tightening for propagating bound change

Definition at line 103 of file cons_nonlinear.c.

Referenced by propagateConstraintSides(), reformEnsureChildrenMinCurvature(), reformMonomial(), reformNode2Var(), and reformulate().

◆ INITLPMAXVARVAL

#define INITLPMAXVARVAL   1000.0

maximal absolute value of variable for still generating a linearization cut at that point in initlp

Definition at line 104 of file cons_nonlinear.c.

Referenced by SCIP_DECL_CONSINITLP().

◆ infty2infty

#define infty2infty (   infty1,
  infty2,
  val 
)    ((val) >= (infty1) ? (infty2) : (val))

translate from one value of infinity to another

if val is >= infty1, then give infty2, else give val

Definition at line 219 of file cons_nonlinear.c.

Referenced by addIntervalGradientEstimator(), addUserEstimator(), checkCurvature(), propagateBoundsCons(), SCIP_DECL_EVENTEXEC(), and SCIP_DECL_EXPRGRAPHVARADDED().

Typedef Documentation

◆ LINVAREVENTDATA

Definition at line 118 of file cons_nonlinear.c.

◆ SCIP_NLCONSUPGRADE

Definition at line 173 of file cons_nonlinear.c.

Function Documentation

◆ catchLinearVarEvents()

◆ dropLinearVarEvents()

static SCIP_RETCODE dropLinearVarEvents ( SCIP scip,
SCIP_CONS cons,
int  linvarpos 
)
static

◆ lockLinearVariable()

static SCIP_RETCODE lockLinearVariable ( SCIP scip,
SCIP_CONS cons,
SCIP_VAR var,
SCIP_Real  coef 
)
static

locks a linear variable in a constraint

Parameters
scipSCIP data structure
consconstraint where to lock a variable
varvariable to lock
coefcoefficient of variable in constraint

Definition at line 352 of file cons_nonlinear.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPisInfinity(), SCIPlockVarCons(), and unlockLinearVariable().

Referenced by addLinearCoef(), chgLinearCoefPos(), dropLinearVarEvents(), and splitOffLinearPart().

◆ unlockLinearVariable()

static SCIP_RETCODE unlockLinearVariable ( SCIP scip,
SCIP_CONS cons,
SCIP_VAR var,
SCIP_Real  coef 
)
static

unlocks a linear variable in a constraint

Parameters
scipSCIP data structure
consconstraint where to unlock a variable
varvariable to unlock
coefcoefficient of variable in constraint

Definition at line 383 of file cons_nonlinear.c.

References consdataUpdateLinearActivity(), NULL, SCIP_CALL, SCIP_LOCKTYPE_CONFLICT, SCIP_OKAY, SCIPconsGetData(), SCIPconsIsLockedType(), SCIPisInfinity(), and SCIPunlockVarCons().

Referenced by chgLinearCoefPos(), delLinearCoefPos(), lockLinearVariable(), and splitOffLinearPart().

◆ consdataUpdateLinearActivity()

static void consdataUpdateLinearActivity ( SCIP scip,
SCIP_CONSDATA consdata 
)
static

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
scipSCIP data structure
consdataconstraint data

Definition at line 419 of file cons_nonlinear.c.

References consdataUpdateLinearActivityLbChange(), INTERVALINFTY, NULL, SCIP_INVALID, SCIP_Real, SCIPintervalGetRoundingMode(), SCIPintervalSetRoundingMode(), SCIPintervalSetRoundingModeDownwards(), SCIPintervalSetRoundingModeUpwards(), SCIPisInfinity(), SCIPvarGetLbLocal(), and SCIPvarGetUbLocal().

Referenced by propagateBoundsCons(), and unlockLinearVariable().

◆ consdataUpdateLinearActivityLbChange()

static void consdataUpdateLinearActivityLbChange ( SCIP scip,
SCIP_CONSDATA consdata,
SCIP_Real  coef,
SCIP_Real  oldbnd,
SCIP_Real  newbnd 
)
static

update the linear activities after a change in the lower bound of a variable

Parameters
scipSCIP data structure
consdataconstraint data
coefcoefficient of variable in constraint
oldbndprevious lower bound of variable
newbndnew lower bound of variable

Definition at line 529 of file cons_nonlinear.c.

References consdataUpdateLinearActivityUbChange(), INTERVALINFTY, NULL, SCIP_INVALID, SCIPintervalGetRoundingMode(), SCIPintervalNegateReal(), SCIPintervalSetRoundingMode(), SCIPintervalSetRoundingModeDownwards(), SCIPintervalSetRoundingModeUpwards(), and SCIPisInfinity().

Referenced by consdataUpdateLinearActivity(), and SCIP_DECL_EVENTEXEC().

◆ consdataUpdateLinearActivityUbChange()

static void consdataUpdateLinearActivityUbChange ( SCIP scip,
SCIP_CONSDATA consdata,
SCIP_Real  coef,
SCIP_Real  oldbnd,
SCIP_Real  newbnd 
)
static

update the linear activities after a change in the upper bound of a variable

Parameters
scipSCIP data structure
consdataconstraint data
coefcoefficient of variable in constraint
oldbndprevious lower bound of variable
newbndnew lower bound of variable

Definition at line 626 of file cons_nonlinear.c.

References INTERVALINFTY, NULL, SCIP_DECL_EVENTEXEC(), SCIP_INVALID, SCIPintervalGetRoundingMode(), SCIPintervalNegateReal(), SCIPintervalSetRoundingMode(), SCIPintervalSetRoundingModeDownwards(), SCIPintervalSetRoundingModeUpwards(), and SCIPisInfinity().

Referenced by consdataUpdateLinearActivityLbChange(), and SCIP_DECL_EVENTEXEC().

◆ SCIP_DECL_EVENTEXEC() [1/3]

◆ SCIP_DECL_EVENTEXEC() [2/3]

◆ SCIP_DECL_EXPRGRAPHVARADDED()

◆ SCIP_DECL_EXPRGRAPHVARREMOVE()

static SCIP_DECL_EXPRGRAPHVARREMOVE ( exprgraphVarRemove  )
static

◆ consdataAddExprtrees()

static SCIP_RETCODE consdataAddExprtrees ( SCIP scip,
SCIP_CONSDATA consdata,
int  nexprtrees,
SCIP_EXPRTREE **  exprtrees,
SCIP_Real coefs,
SCIP_Bool  copytrees 
)
static
Parameters
scipSCIP data structure
consdatanonlinear constraint data
nexprtreesnumber of expression trees
exprtreesexpression trees
coefscoefficients of expression trees, or NULL if all 1.0
copytreeswhether trees should be copied or ownership should be assumed

Definition at line 907 of file cons_nonlinear.c.

References 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().

◆ consdataSetExprtrees()

static SCIP_RETCODE consdataSetExprtrees ( SCIP scip,
SCIP_CONSDATA consdata,
int  nexprtrees,
SCIP_EXPRTREE **  exprtrees,
SCIP_Real coefs,
SCIP_Bool  copytrees 
)
static
Parameters
scipSCIP data structure
consdatanonlinear constraint data
nexprtreesnumber of expression trees
exprtreesexpression trees
coefscoefficients of expression trees, or NULL if all 1.0
copytreeswhether trees should be copied or ownership should be assumed

Definition at line 980 of file cons_nonlinear.c.

References 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().

◆ consdataEnsureLinearVarsSize()

static SCIP_RETCODE consdataEnsureLinearVarsSize ( SCIP scip,
SCIP_CONSDATA consdata,
int  num 
)
static

ensures, that linear vars and coefs arrays can store at least num entries

Parameters
scipSCIP data structure
consdatanonlinear constraint data
numminimum number of entries to store

Definition at line 1030 of file cons_nonlinear.c.

References consdataCreate(), NULL, SCIP_CALL, SCIP_OKAY, SCIPcalcMemGrowSize(), and SCIPreallocBlockMemoryArray.

Referenced by addLinearCoef(), consdataSetExprtrees(), removeFixedLinearVariables(), SCIPcreateConsNonlinear(), and SCIPcreateConsNonlinear2().

◆ consdataCreate()

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
scipSCIP data structure
consdataa buffer to store pointer to new constraint data
lhsleft hand side of constraint
rhsright hand side of constraint
nlinvarsnumber of linear variables
linvarsarray of linear variables
lincoefsarray of coefficients of linear variables
nexprtreesnumber of expression trees
exprtreesexpression trees
nonlincoefscoefficients of expression trees
capturevarswhether we should capture variables

Definition at line 1060 of file cons_nonlinear.c.

References BMSclearMemory, consdataCreateEmpty(), consdataSetExprtrees(), NULL, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIPallocBlockMemory, SCIPcaptureVar(), SCIPduplicateBlockMemoryArray, SCIPisInfinity(), and TRUE.

Referenced by consdataEnsureLinearVarsSize(), and SCIP_DECL_CONSTRANS().

◆ consdataCreateEmpty()

static SCIP_RETCODE consdataCreateEmpty ( SCIP scip,
SCIP_CONSDATA **  consdata 
)
static

creates empty constraint data structure

Parameters
scipSCIP data structure
consdataa buffer to store pointer to new constraint data

Definition at line 1128 of file cons_nonlinear.c.

References BMSclearMemory, consdataFree(), NULL, SCIP_CALL, SCIP_EXPRCURV_LINEAR, SCIP_INVALID, SCIP_OKAY, SCIPallocBlockMemory, SCIPinfinity(), and TRUE.

Referenced by consdataCreate(), SCIPcreateConsNonlinear(), and SCIPcreateConsNonlinear2().

◆ consdataFree()

static SCIP_RETCODE consdataFree ( SCIP scip,
SCIP_CONSDATA **  consdata 
)
static

frees constraint data structure

Parameters
scipSCIP data structure
consdatapointer to constraint data to free

Definition at line 1165 of file cons_nonlinear.c.

References consdataSortLinearVars(), NULL, SCIP_CALL, SCIP_OKAY, SCIPexprtreeFree(), SCIPfreeBlockMemory, SCIPfreeBlockMemoryArray, SCIPfreeBlockMemoryArrayNull, SCIPreleaseNlRow(), and SCIPreleaseVar().

Referenced by consdataCreateEmpty(), and SCIP_DECL_CONSDELETE().

◆ consdataSortLinearVars()

static void consdataSortLinearVars ( SCIP_CONSDATA consdata)
static

sorts linear part of constraint data

Parameters
consdatanonlinear constraint data

Definition at line 1225 of file cons_nonlinear.c.

References consdataMoveLinearVar(), NULL, SCIPsortedvecFindPtr(), SCIPsortPtrPtrReal(), SCIPsortPtrReal(), and TRUE.

Referenced by consdataFree(), and mergeAndCleanLinearVars().

◆ consdataMoveLinearVar()

static void consdataMoveLinearVar ( SCIP_CONSDATA consdata,
int  oldpos,
int  newpos 
)
static

moves a linear variable from one position to another

Parameters
consdataconstraint data
oldposposition of variable that shall be moved
newposnew position of variable

Definition at line 1287 of file cons_nonlinear.c.

References addLinearCoef(), FALSE, and NULL.

Referenced by consdataSortLinearVars(), and delLinearCoefPos().

◆ addLinearCoef()

static SCIP_RETCODE addLinearCoef ( SCIP scip,
SCIP_CONS cons,
SCIP_VAR var,
SCIP_Real  coef 
)
static

◆ delLinearCoefPos()

static SCIP_RETCODE delLinearCoefPos ( SCIP scip,
SCIP_CONS cons,
int  pos 
)
static

deletes linear coefficient at given position from nonlinear constraint data

Parameters
scipSCIP data structure
consnonlinear constraint
posposition of coefficient to delete

Definition at line 1399 of file cons_nonlinear.c.

References chgLinearCoefPos(), consdataMoveLinearVar(), dropLinearVarEvents(), FALSE, NULL, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPconsIsEnabled(), SCIPreleaseNlRow(), SCIPreleaseVar(), and unlockLinearVariable().

Referenced by addLinearCoef(), mergeAndCleanLinearVars(), and removeFixedLinearVariables().

◆ chgLinearCoefPos()

static SCIP_RETCODE chgLinearCoefPos ( SCIP scip,
SCIP_CONS cons,
int  pos,
SCIP_Real  newcoef 
)
static

changes linear coefficient value at given position of nonlinear constraint

Parameters
scipSCIP data structure
consnonlinear constraint
posposition of linear coefficient to change
newcoefnew value of linear coefficient

Definition at line 1458 of file cons_nonlinear.c.

References catchLinearVarEvents(), dropLinearVarEvents(), FALSE, lockLinearVariable(), mergeAndCleanLinearVars(), NLOCKTYPES, NULL, SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPconsIsEnabled(), SCIPconsIsLockedType(), SCIPconsIsTransformed(), SCIPisZero(), SCIPreleaseNlRow(), SCIPvarIsTransformed(), and unlockLinearVariable().

Referenced by delLinearCoefPos(), and mergeAndCleanLinearVars().

◆ mergeAndCleanLinearVars()

static SCIP_RETCODE mergeAndCleanLinearVars ( SCIP scip,
SCIP_CONS cons 
)
static

◆ removeFixedLinearVariables()

◆ removeFixedNonlinearVariables()

◆ splitOffLinearPart()

static SCIP_RETCODE splitOffLinearPart ( SCIP scip,
SCIP_CONSHDLR conshdlr,
SCIP_CONS cons,
SCIP_Bool infeasible 
)
static

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
scipSCIP data structure
conshdlrconstraint handler
consnonlinear constraint
infeasiblepointer to store whether the problem is infeasible or not

Definition at line 1804 of file cons_nonlinear.c.

References addLinearCoef(), catchLinearVarEvents(), LinVarEventData::conshdlrdata, createNlRow(), dropLinearVarEvents(), FALSE, lockLinearVariable(), MAX, NLOCKTYPES, NULL, REALABS, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPconsGetData(), SCIPconshdlrGetData(), SCIPconsIsEnabled(), SCIPconsIsLockedType(), SCIPexprgraphGetNodeNChildren(), SCIPexprgraphNodeSplitOffLinear(), SCIPfreeBufferArray, SCIPinfinity(), SCIPisInfinity(), TRUE, and unlockLinearVariable().

Referenced by removeFixedNonlinearVariables(), SCIP_DECL_CONSEXITPRE(), and SCIP_DECL_CONSPRESOL().

◆ createNlRow()

static SCIP_RETCODE createNlRow ( SCIP scip,
SCIP_CONS cons 
)
static

create a nonlinear row representation of the constraint and stores them in consdata

Parameters
scipSCIP data structure
consnonlinear constraint

Definition at line 1974 of file cons_nonlinear.c.

References 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().

◆ presolveUpgrade()

static SCIP_RETCODE presolveUpgrade ( SCIP scip,
SCIP_CONSHDLR conshdlr,
SCIP_CONS cons,
SCIP_Bool upgraded,
int *  nupgdconss,
int *  naddconss 
)
static

tries to automatically convert a nonlinear constraint (or a part of it) into a more specific and more specialized constraint

Parameters
scipSCIP data structure
conshdlrconstraint handler data structure
conssource constraint to try to convert
upgradedbuffer to store whether constraint was upgraded
nupgdconssbuffer to increase if constraint was upgraded
naddconssbuffer to increase with number of additional constraints created during upgrade

Definition at line 2035 of file cons_nonlinear.c.

References checkCurvature(), LinVarEventData::conshdlrdata, FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddCons(), SCIPallocBufferArray, SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsModifiable(), SCIPdebugGetSolVal, SCIPdebugMsg, SCIPdebugMsgPrint, SCIPdebugPrintCons, SCIPdelCons(), SCIPexprgraphEval(), SCIPexprgraphGetNVars(), SCIPexprgraphGetVars(), SCIPfreeBufferArray, SCIPreallocBufferArray, SCIPreleaseCons(), and TRUE.

Referenced by createNlRow(), and SCIP_DECL_CONSPRESOL().

◆ checkCurvature()

◆ reformReplaceNode()

static SCIP_RETCODE reformReplaceNode ( SCIP_EXPRGRAPH exprgraph,
SCIP_EXPRGRAPHNODE **  node,
SCIP_EXPRGRAPHNODE replacement,
SCIP_CONS **  conss,
int  nconss 
)
static
Parameters
exprgraphexpression graph
nodepointer to node to be replaced in expression graph
replacementnode which takes node's place
conssconstraints
nconssnumber of constraints

Definition at line 2251 of file cons_nonlinear.c.

References FALSE, NULL, reformNode2Var(), SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPexprgraphCaptureNode(), SCIPexprgraphGetNodeNParents(), SCIPexprgraphMoveNodeParents(), and SCIPexprgraphReleaseNode().

Referenced by checkCurvature(), reformNode2Var(), and reformulate().

◆ reformNode2Var()

static SCIP_RETCODE reformNode2Var ( SCIP scip,
SCIP_EXPRGRAPH exprgraph,
SCIP_EXPRGRAPHNODE node,
SCIP_CONS **  conss,
int  nconss,
int *  naddcons,
SCIP_Bool  donotmultaggr 
)
static

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
scipSCIP data structure
exprgraphexpression graph
nodeexpression graph node
conssconstraints where to update exprgraphnode
nconssnumber of constraints
naddconscounter to increase when constraint is added
donotmultaggrwhether to mark auxiliary variable as not to multiaggregate

Definition at line 2305 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, SCIPdebugMsg, SCIPexprgraphAddVars(), SCIPexprgraphGetNodeBounds(), SCIPexprgraphGetNodeDepth(), SCIPexprgraphGetNodePosition(), SCIPexprgraphGetNodeVal(), SCIPexprgraphSetVarNodeValue(), SCIPexprgraphTightenNodeBounds(), SCIPintervalGetInf(), SCIPintervalGetSup(), SCIPmarkDoNotMultaggrVar(), SCIPreleaseCons(), SCIPreleaseVar(), SCIPsnprintf(), and TRUE.

Referenced by reformEnsureChildrenMinCurvature(), reformReplaceNode(), and reformulate().

◆ reformEnsureChildrenMinCurvature()

static SCIP_RETCODE reformEnsureChildrenMinCurvature ( SCIP scip,
SCIP_EXPRGRAPH exprgraph,
SCIP_EXPRGRAPHNODE node,
SCIP_EXPRCURV  mincurv,
SCIP_CONS **  conss,
int  nconss,
int *  naddcons 
)
static

ensures that all children of a node have at least a given curvature by adding auxiliary variables

Parameters
scipSCIP data structure
exprgraphexpression graph
nodeexpression graph node
mincurvminimal desired curvature
conssconstraints to check whether they use one of the replaced nodes
nconssnumber of constraints to check
naddconscounter to increase when constraint is added

Definition at line 2378 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, SCIPdebugMsg, SCIPexprcurvGetName(), SCIPexprgraphGetNodeBounds(), SCIPexprgraphGetNodeChildren(), SCIPexprgraphGetNodeCurvature(), SCIPexprgraphGetNodeDepth(), SCIPexprgraphGetNodeNChildren(), SCIPexprgraphGetNodeOperator(), SCIPexprgraphGetNodePosition(), SCIPexprgraphUpdateNodeBoundsCurvature(), SCIPintervalIsEmpty(), and TRUE.

Referenced by reformNode2Var(), and reformulate().

◆ reformMonomial()

static SCIP_RETCODE reformMonomial ( SCIP scip,
SCIP_EXPRGRAPH exprgraph,
int  nfactors,
SCIP_EXPRGRAPHNODE **  factors,
SCIP_Real exponents,
SCIP_EXPRGRAPHNODE **  resultnode,
SCIP_Bool  createauxcons,
int  mindepth,
int *  naddcons 
)
static

reformulates a monomial by adding auxiliary variables and constraints for bilinear terms

Parameters
scipSCIP data structure
exprgraphexpression graph
nfactorsnumber of factors
factorsfactors
exponentsexponents, or NULL if all 1.0
resultnodebuffer to store node which represents the reformulated monomial
createauxconswhether to create auxiliary var/cons
mindepthminimal depth of new nodes in expression graph, or -1
naddconsbuffer to increase by number of added cons

Definition at line 2433 of file cons_nonlinear.c.

References BOUNDTIGHTENING_MINSTRENGTH, fabs(), 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, SCIPdebugMsg, 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().

◆ reformulate()

static SCIP_RETCODE reformulate ( SCIP scip,
SCIP_CONSHDLR conshdlr,
SCIP_CONS **  conss,
int  nconss,
int *  naddcons 
)
static

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
scipSCIP data structure
conshdlrconstraint handler
conssconstraints
nconssnumber of constraints
naddconsbuffer to increase by the number of added constraints

Definition at line 2756 of file cons_nonlinear.c.

References BOUNDTIGHTENING_MINSTRENGTH, SCIP_QuadElement::coef, computeViolation(), LinVarEventData::conshdlrdata, FALSE, 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, SCIPallocClearBufferArray, SCIPblkmem(), SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsDeleted(), SCIPcreateConsNonlinear2(), SCIPcreateVar(), SCIPdebug, SCIPdebugAddSolVal, SCIPdebugGetSolVal, SCIPdebugMessage, SCIPdebugMsg, SCIPdebugMsgPrint, SCIPdebugPrintCons, 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, 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().

◆ computeViolation()

static SCIP_RETCODE computeViolation ( SCIP scip,
SCIP_CONSHDLR conshdlr,
SCIP_CONS cons,
SCIP_SOL sol,
SCIP_Bool solviolbounds 
)
static

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.

If a solution is found to violate the variable bounds, then violation calculation is stopped and solviolbounds is set to TRUE.

Parameters
scipSCIP data structure
conshdlrconstraint handler
consnonlinear constraint
solsolution or NULL if LP solution should be used
solviolboundsbuffer to indicate whether solution is found to violate variable bounds by more than feastol

Definition at line 3747 of file cons_nonlinear.c.

References computeViolations(), LinVarEventData::conshdlrdata, FALSE, MAX, MIN, NULL, REALABS, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIP_STAGE_EXITPRESOLVE, SCIP_STAGE_INITPRESOLVE, SCIPallocBufferArray, SCIPconsGetData(), SCIPconshdlrGetData(), SCIPexprgraphGetNodeVal(), SCIPexprintCompile(), SCIPexprintEval(), SCIPexprtreeGetInterpreterData(), SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPfeastol(), SCIPfreeBufferArray, SCIPgetSolVal(), SCIPgetStage(), SCIPinfinity(), SCIPisFeasGE(), SCIPisFeasLE(), SCIPisFinite, SCIPisGT(), SCIPisInfinity(), SCIPrelDiff(), SCIPupdateSolConsViolation(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), TRUE, and x.

Referenced by computeViolations(), proposeFeasibleSolution(), reformulate(), SCIP_DECL_CONSCHECK(), and SCIPgetViolationNonlinear().

◆ computeViolations()

static SCIP_RETCODE computeViolations ( SCIP scip,
SCIP_CONSHDLR conshdlr,
SCIP_CONS **  conss,
int  nconss,
SCIP_SOL sol,
SCIP_Bool solviolbounds,
SCIP_CONS **  maxviolcon 
)
static

computes violation of a set of constraints

If the solution is found to violate bounds of some variable in some constraint, then violation computation is stopped and solviolbounds is set to TRUE.

Parameters
scipSCIP data structure
conshdlrconstraint handler
conssconstraints
nconssnumber of constraints
solsolution or NULL if LP solution should be used
solviolboundsbuffer to indicate whether solution violates bounds of some variable by more than feastol
maxviolconbuffer to store constraint with largest violation, or NULL if solution is feasible

Definition at line 3999 of file cons_nonlinear.c.

References addLinearization(), computeViolation(), 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(), enforceConstraint(), SCIP_DECL_CONSENFOPS(), SCIP_DECL_CONSSEPALP(), and SCIP_DECL_CONSSEPASOL().

◆ addLinearization()

static SCIP_RETCODE addLinearization ( SCIP scip,
SCIP_EXPRINT exprint,
SCIP_CONS cons,
int  exprtreeidx,
SCIP_Real x,
SCIP_Bool  newx,
SCIP_ROWPREP rowprep,
SCIP_Bool success 
)
static

adds linearization of a constraints expression tree in reference point to a row

Parameters
scipSCIP data structure
exprintexpression interpreter
consconstraint
exprtreeidxfor which tree a linearization should be added
xvalue of expression tree variables where to generate cut
newxwhether the last evaluation of the expression with the expression interpreter was not at x
rowpreprowprep where to add linearization
successbuffer to store whether a linearization was succefully added to the row

Definition at line 4070 of file cons_nonlinear.c.

References addConcaveEstimatorUnivariate(), FALSE, MIN, MIN3, NULL, REALABS, SCIP_Bool, SCIP_CALL, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_OKAY, SCIP_Real, SCIPaddRowprepConstant(), SCIPaddRowprepTerms(), SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPdebug, SCIPdebugMsg, SCIPdebugMsgPrint, SCIPexprintCompile(), SCIPexprintGrad(), SCIPexprtreeGetInterpreterData(), SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPfeastol(), SCIPfreeBufferArray, SCIPisEQ(), SCIPisFinite, SCIPisInfinity(), SCIPisZero(), SCIPprintRowprep(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), TRUE, and x.

Referenced by computeViolations(), and generateCut().

◆ addConcaveEstimatorUnivariate()

static SCIP_RETCODE addConcaveEstimatorUnivariate ( SCIP scip,
SCIP_CONS cons,
int  exprtreeidx,
SCIP_ROWPREP rowprep,
SCIP_Bool success 
)
static

adds secant of a constraints univariate expression tree in reference point to a row

Parameters
scipSCIP data structure
consconstraint
exprtreeidxfor which tree a secant should be added
rowpreprowprep where to add estimator
successbuffer to store whether a secant was succefully added to the row

Definition at line 4230 of file cons_nonlinear.c.

References addConcaveEstimatorBivariate(), FALSE, MAX, MIN, NULL, REALABS, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_SIDETYPE_LEFT, SCIPaddRowprepConstant(), SCIPaddRowprepTerm(), SCIPconsGetData(), SCIPconsGetName(), SCIPdebug, SCIPdebugMsg, SCIPexprtreeEval(), SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPisEQ(), SCIPisFinite, SCIPisInfinity(), SCIPisLE(), SCIPprintRowprep(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), SCIP_RowPrep::sidetype, and TRUE.

Referenced by addLinearization(), and generateCut().

◆ addConcaveEstimatorBivariate()

static SCIP_RETCODE addConcaveEstimatorBivariate ( SCIP scip,
SCIP_CONS cons,
int  exprtreeidx,
SCIP_Real ref,
SCIP_ROWPREP rowprep,
SCIP_Bool success 
)
static

adds estimator of a constraints bivariate expression tree to a row a reference point is given to decide which hyperplane to choose

Parameters
scipSCIP data structure
consconstraint
exprtreeidxfor which tree a secant should be added
refreference values of expression tree variables where to generate cut
rowpreprowprep where to add estimator
successbuffer to store whether a secant was succefully added to the row

Definition at line 4329 of file cons_nonlinear.c.

References FALSE, MAX, MIN, NULL, REALABS, SCIP_Bool, SCIP_CALL, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_OKAY, SCIP_Real, SCIPaddRowprepConstant(), SCIPaddRowprepTerm(), SCIPcomputeHyperplaneThreePoints(), SCIPconsGetData(), SCIPconsGetName(), SCIPdebug, SCIPdebugMsg, SCIPexprtreeEval(), SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPisEQ(), SCIPisFeasGE(), SCIPisFeasLE(), SCIPisFinite, SCIPisInfinity(), SCIPisNegative(), SCIPisRelEQ(), SCIPisRelLE(), SCIPisZero(), SCIPprintRowprep(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbLocal(), TRUE, x, and y.

Referenced by addConcaveEstimatorUnivariate(), and generateCut().

◆ addConcaveEstimatorMultivariate()

static SCIP_RETCODE addConcaveEstimatorMultivariate ( SCIP scip,
SCIP_CONS cons,
int  exprtreeidx,
SCIP_Real ref,
SCIP_ROWPREP rowprep,
SCIP_Bool success 
)
static

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
scipSCIP data structure
consconstraint
exprtreeidxfor which tree a secant should be added
refreference values of expression tree variables where to generate cut
rowpreprowprep where to add estimator
successbuffer to store whether a secant was succefully added to the row

Definition at line 4882 of file cons_nonlinear.c.

References FALSE, MAX, MIN, NULL, SCIP_Bool, SCIP_CALL, SCIP_ERROR, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_OBJSEN_MAXIMIZE, SCIP_OBJSEN_MINIMIZE, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMsg, SCIPerrorMessage, SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPgetMessagehdlr(), SCIPisFeasGE(), SCIPisFeasLE(), SCIPisInfinity(), SCIPlpiCreate(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbLocal(), SCIPwarningMessage(), and TRUE.

Referenced by generateCut().

◆ getCoeffsAndConstantFromLinearExpr()

static SCIP_RETCODE getCoeffsAndConstantFromLinearExpr ( SCIP_EXPR expr,
SCIP_Real  scalar,
SCIP_Real varcoeffs,
SCIP_Real constant 
)
static

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
exprthe linear expression
scalarthe scalar value, i.e. the coeff of the given expression
varcoeffsbuffer array to store the computed coefficients
constantbuffer to hold the constant value of the given expression

Definition at line 4979 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_SUM, SCIP_EXPR_VARIDX, SCIP_OKAY, SCIP_Real, SCIPABORT, SCIPerrorMessage, SCIPexprGetChildren(), SCIPexprGetLinearCoefs(), SCIPexprGetLinearConstant(), SCIPexprGetNChildren(), SCIPexprGetOperator(), SCIPexprGetOpIndex(), SCIPexprGetOpReal(), and SCIPexpropGetName().

Referenced by addUserEstimator().

◆ addUserEstimator()

static SCIP_RETCODE addUserEstimator ( SCIP scip,
SCIP_CONS cons,
int  exprtreeidx,
SCIP_Real x,
SCIP_Bool  overestimate,
SCIP_ROWPREP rowprep,
SCIP_Bool success 
)
static

adds estimator from user callback of a constraints user expression tree to a row

Parameters
scipSCIP data structure
consconstraint
exprtreeidxfor which tree an estimator should be added
xvalue of expression tree variables where to generate cut
overestimatewhether to compute an overestimator instead of an underestimator
rowpreprowprep where to add estimator
successbuffer to store whether an estimator was succefully added to the rowprep

Definition at line 5093 of file cons_nonlinear.c.

References addIntervalGradientEstimator(), FALSE, getCoeffsAndConstantFromLinearExpr(), infty2infty, INTERVALINFTY, MAX, MIN, NULL, SCIP_CALL, SCIP_EXPR_USER, SCIP_OKAY, SCIP_Real, SCIPaddRowprepConstant(), SCIPaddRowprepTerms(), SCIPallocBufferArray, SCIPconsGetData(), SCIPexprEstimateUser(), SCIPexprEval(), SCIPexprEvalInt(), SCIPexprGetChildren(), SCIPexprGetNChildren(), SCIPexprGetOperator(), SCIPexprHasUserEstimator(), SCIPexprtreeGetNVars(), SCIPexprtreeGetParamVals(), SCIPexprtreeGetRoot(), SCIPexprtreeGetVars(), SCIPfreeBufferArray, SCIPinfinity(), SCIPintervalSetBounds(), SCIPvarGetLbLocal(), and SCIPvarGetUbLocal().

Referenced by generateCut(), and getCoeffsAndConstantFromLinearExpr().

◆ addIntervalGradientEstimator()

static SCIP_RETCODE addIntervalGradientEstimator ( SCIP scip,
SCIP_EXPRINT exprint,
SCIP_CONS cons,
int  exprtreeidx,
SCIP_Real x,
SCIP_Bool  newx,
SCIP_Bool  overestimate,
SCIP_ROWPREP rowprep,
SCIP_Bool success 
)
static

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
scipSCIP data structure
exprintexpression interpreter
consconstraint
exprtreeidxfor which tree a secant should be added
xvalue of expression tree variables where to generate cut
newxwhether the last evaluation of the expression with the expression interpreter was not at x
overestimatewhether to compute an overestimator instead of an underestimator
rowpreprowprep where to add estimator
successbuffer to store whether an estimator was succefully added to the rowprep

Definition at line 5204 of file cons_nonlinear.c.

References FALSE, generateCut(), infty2infty, INTERVALINFTY, MAX, MIN, NULL, SCIP_CALL, SCIP_EXPRINTCAPABILITY_INTGRADIENT, SCIP_OKAY, SCIP_Real, SCIPaddRowprepConstant(), SCIPaddRowprepTerms(), SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMsg, SCIPexprintCompile(), SCIPexprintEval(), SCIPexprintGetCapability(), SCIPexprintGradInt(), SCIPexprtreeGetInterpreterData(), SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPfreeBufferArrayNull, SCIPinfinity(), SCIPintervalGetInf(), SCIPintervalGetSup(), SCIPintervalMulScalar(), SCIPintervalSetBounds(), SCIPisEQ(), SCIPisFinite, SCIPisInfinity(), SCIPisZero(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbLocal(), and TRUE.

Referenced by addUserEstimator(), and generateCut().

◆ 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  minviol,
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
scipSCIP data structure
exprintexpression interpreter
consconstraint
refreference point for each exprtree, or NULL if sol should be used
solreference solution where cut should be generated, or NULL if LP solution should be used
newsolwhether the last evaluation of the expression with the expression interpreter was not at sol
sidefor which side a cut should be generated
rowstorage for cut
minviolminimal absolute violation we try to achieve
maxrangemaximal range allowed
expensivecurvcheckswhether also expensive checks should be executed
assumeconvexwhether to assume convexity in inequalities

Definition at line 5359 of file cons_nonlinear.c.

References addConcaveEstimatorBivariate(), addConcaveEstimatorMultivariate(), addConcaveEstimatorUnivariate(), addIntervalGradientEstimator(), addLinearization(), addUserEstimator(), checkCurvature(), SCIP_RowPrep::coefs, FALSE, SCIP_RowPrep::name, NULL, SCIP_RowPrep::nvars, 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, SCIPaddRowprepSide(), SCIPaddRowprepTerms(), SCIPaddVarsToRow(), SCIPallocBufferArray, SCIPcleanupRowprep(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconsIsLocal(), SCIPcreateEmptyRowCons(), SCIPcreateRowprep(), SCIPdebugMsg, SCIPexprGetOperator(), SCIPexprtreeGetNVars(), SCIPexprtreeGetRoot(), SCIPexprtreeGetVars(), SCIPfreeBufferArray, SCIPfreeRowprep(), SCIPgetRowprepRowCons(), SCIPgetSolVals(), SCIPisInfinity(), SCIPmergeRowprepTerms(), SCIPreallocBufferArray, SCIPsnprintf(), separatePoint(), SCIP_RowPrep::side, TRUE, and x.

Referenced by addIntervalGradientEstimator(), addLinearizationCuts(), SCIP_DECL_CONSINITLP(), and separatePoint().

◆ 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
scipSCIP data structure
conshdlrnonlinear constraints handler
conssconstraints
nconssnumber of constraints
nusefulconssnumber of constraints that seem to be useful
solsolution to separate, or NULL if LP solution should be used
newsolhave the constraints just been evaluated at this point?
minefficacyminimal efficacy of a cut if it should be added to the LP
inenforcementwhether we are in constraint enforcement
resultresult of separation
bestefficacybuffer to store best efficacy of a cut that was added to the LP, if found; or NULL if not of interest

Definition at line 5516 of file cons_nonlinear.c.

References addLinearizationCuts(), LinVarEventData::conshdlrdata, FALSE, generateCut(), MAX, NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_FEASIBLE, SCIP_OKAY, SCIP_Real, SCIP_SEPARATED, SCIP_SIDETYPE_LEFT, SCIP_SIDETYPE_RIGHT, SCIPaddRow(), SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsActive(), SCIPconsIsDeleted(), SCIPconsIsEnabled(), SCIPdebug, SCIPdebugMsg, SCIPfeastol(), SCIPgetRowLPFeasibility(), SCIPgetRowSolFeasibility(), SCIPisCutApplicable(), SCIPisGT(), SCIPisInfinity(), SCIPmarkRowNotRemovableLocal(), SCIPprintRow(), SCIPreleaseRow(), and SCIPresetConsAge().

Referenced by enforceConstraint(), generateCut(), SCIP_DECL_CONSSEPALP(), and SCIP_DECL_CONSSEPASOL().

◆ addLinearizationCuts()

static SCIP_RETCODE addLinearizationCuts ( SCIP scip,
SCIP_CONSHDLR conshdlr,
SCIP_CONS **  conss,
int  nconss,
SCIP_SOL ref,
SCIP_Bool separatedlpsol,
SCIP_Real  minefficacy 
)
static

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
scipSCIP data structure
conshdlrquadratic constraints handler
conssconstraints
nconssnumber of constraints
refreference point where to linearize, or NULL for LP solution
separatedlpsolbuffer to store whether a cut that separates the current LP solution was found and added to LP, or NULL if adding to cutpool only
minefficacyminimal efficacy of a cut when checking for separation of LP solution

Definition at line 5635 of file cons_nonlinear.c.

References checkCurvature(), LinVarEventData::conshdlrdata, FALSE, generateCut(), NULL, SCIP_Bool, SCIP_CALL, SCIP_DECL_EVENTEXEC(), SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_OKAY, SCIP_SIDETYPE_LEFT, SCIP_SIDETYPE_RIGHT, SCIPaddPoolCut(), SCIPaddRow(), SCIPconsGetData(), SCIPconshdlrGetData(), SCIPconsIsLocal(), SCIPgetRowLPFeasibility(), SCIPisInfinity(), SCIPreleaseRow(), SCIProwIsLocal(), and TRUE.

Referenced by SCIP_DECL_CONSSEPALP(), SCIP_DECL_EVENTEXEC(), and separatePoint().

◆ SCIP_DECL_EVENTEXEC() [3/3]

◆ registerBranchingVariables()

static SCIP_RETCODE registerBranchingVariables ( SCIP scip,
SCIP_CONSHDLR conshdlr,
SCIP_CONS **  conss,
int  nconss,
int *  nnotify 
)
static

registers unfixed variables in nonlinear terms of violated constraints as external branching candidates

Parameters
scipSCIP data structure
conshdlrconstraint handler
conssconstraints to check
nconssnumber of constraints to check
nnotifycounter for number of notifications performed

Definition at line 5761 of file cons_nonlinear.c.

References MAX, NULL, registerLargeRelaxValueVariableForBranching(), SCIP_CALL, SCIP_EXPRCURV_CONCAVE, SCIP_EXPRCURV_CONVEX, SCIP_INVALID, SCIP_OKAY, SCIPaddExternBranchCand(), SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMsg, SCIPexprcurvGetName(), SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPfeastol(), SCIPisGT(), SCIPisRelEQ(), SCIPvarGetLbLocal(), SCIPvarGetName(), and SCIPvarGetUbLocal().

Referenced by enforceConstraint(), and SCIP_DECL_EVENTEXEC().

◆ registerLargeRelaxValueVariableForBranching()

static SCIP_RETCODE registerLargeRelaxValueVariableForBranching ( SCIP scip,
SCIP_CONS **  conss,
int  nconss,
SCIP_SOL sol,
SCIP_VAR **  brvar 
)
static

registers a nonlinear variable from a violated constraint as branching candidate that has a large absolute value in the relaxation

Parameters
scipSCIP data structure
conssconstraints
nconssnumber of constraints
solsolution to enforce (NULL for the LP solution)
brvarbuffer to store branching variable

Definition at line 5827 of file cons_nonlinear.c.

References ABS, NULL, REALABS, replaceViolatedByLinearConstraints(), SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIPaddExternBranchCand(), SCIPconsGetData(), SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPfeastol(), SCIPgetSolVal(), SCIPisGT(), SCIPisRelEQ(), SCIPvarGetLbLocal(), and SCIPvarGetUbLocal().

Referenced by enforceConstraint(), and registerBranchingVariables().

◆ replaceViolatedByLinearConstraints()

static SCIP_RETCODE replaceViolatedByLinearConstraints ( SCIP scip,
SCIP_CONS **  conss,
int  nconss,
SCIP_Bool addedcons,
SCIP_Bool reduceddom,
SCIP_Bool infeasible 
)
static

replaces violated nonlinear constraints where all nonlinear variables are almost fixed by linear constraints only adds constraint if it is violated in current solution first tries to fix almost fixed variables

Parameters
scipSCIP data structure
conssconstraints
nconssnumber of constraints
addedconsbuffer to store whether a linear constraint was added
reduceddomwhether a domain has been reduced
infeasiblewhether we detected infeasibility

Definition at line 5889 of file cons_nonlinear.c.

References LinVarEventData::cons, FALSE, h, 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(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPdelConsLocal(), SCIPevalExprtreeLocalBounds(), SCIPexprtreeGetNVars(), SCIPexprtreeGetVars(), SCIPfeastol(), SCIPgetLPSolstat(), SCIPinfinity(), SCIPintervalGetInf(), SCIPintervalGetSup(), SCIPintervalIsEmpty(), SCIPintervalMulScalar(), SCIPisEQ(), SCIPisFeasLE(), SCIPisGT(), SCIPisInfinity(), SCIPisRelEQ(), SCIPisZero(), SCIPreleaseCons(), SCIPtightenVarLb(), SCIPtightenVarUb(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbLocal(), SCIPwarningMessage(), and TRUE.

Referenced by enforceConstraint(), and registerLargeRelaxValueVariableForBranching().

◆ propagateBoundsTightenVarLb()

static SCIP_RETCODE propagateBoundsTightenVarLb ( SCIP scip,
SCIP_CONS cons,
SCIP_VAR var,
SCIP_Real  bnd,
SCIP_RESULT result,
int *  nchgbds 
)
static
Parameters
scipSCIP data structure
consconstraint where we currently propagate, or NULL if tightening is from expression graph
varvariable which domain we might reduce
bndnew lower bound for variable
resultresult to update if there was a tightening or cutoff
nchgbdscounter to increase if a bound was tightened

Definition at line 6135 of file cons_nonlinear.c.

References FALSE, INTERVALINFTY, NULL, propagateBoundsTightenVarUb(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_REDUCEDDOM, SCIPadjustedVarLb(), SCIPconsGetName(), SCIPdebugMsg, SCIPinProbing(), SCIPisInfinity(), SCIPresetConsAge(), SCIPtightenVarLb(), and SCIPvarGetName().

Referenced by propagateBoundsCons(), propagateConstraintSides(), and replaceViolatedByLinearConstraints().

◆ propagateBoundsTightenVarUb()

static SCIP_RETCODE propagateBoundsTightenVarUb ( SCIP scip,
SCIP_CONS cons,
SCIP_VAR var,
SCIP_Real  bnd,
SCIP_RESULT result,
int *  nchgbds 
)
static
Parameters
scipSCIP data structure
consconstraint where we currently propagate, or NULL if tightening is from expression graph
varvariable which domain we might reduce
bndnew upper bound for variable
resultresult to update if there was a tightening or cutoff
nchgbdscounter to increase if a bound was tightened

Definition at line 6196 of file cons_nonlinear.c.

References FALSE, INTERVALINFTY, NULL, propagateBoundsCons(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_REDUCEDDOM, SCIPadjustedVarUb(), SCIPconsGetName(), SCIPdebugMsg, SCIPinProbing(), SCIPisInfinity(), SCIPresetConsAge(), SCIPtightenVarUb(), and SCIPvarGetName().

Referenced by propagateBoundsCons(), propagateBoundsTightenVarLb(), and propagateConstraintSides().

◆ propagateBoundsCons()

static SCIP_RETCODE propagateBoundsCons ( SCIP scip,
SCIP_CONSHDLR conshdlr,
SCIP_CONS cons,
SCIP_RESULT result,
int *  nchgbds,
SCIP_Bool redundant 
)
static

◆ propagateConstraintSides()

static SCIP_RETCODE propagateConstraintSides ( SCIP scip,
SCIP_CONSHDLR conshdlr,
SCIP_CONS **  conss,
int  nconss,
SCIP_RESULT result,
int *  nchgbds 
)
static

◆ propagateBounds()

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

calls domain propagation for a set of constraints

Parameters
scipSCIP data structure
conshdlrconstraint handler
conssconstraints to process
nconssnumber of constraints
needclearwhether we may need to clear remainings from a previous backward propagation
resultpointer to store the result of the propagation calls
nchgbdsbuffer where to add the the number of changed bounds
ndelconssbuffer where to increase if a constraint was deleted (locally) due to redundancy

Definition at line 6654 of file cons_nonlinear.c.

References 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(), SCIPdebugMsg, SCIPdelConsLocal(), SCIPexprgraphGetNodeBounds(), SCIPexprgraphPrintDot(), SCIPexprgraphPropagateVarBounds(), SCIPgetMessagehdlr(), SCIPintervalIsEmpty(), and TRUE.

Referenced by enforceConstraint(), propagateConstraintSides(), SCIP_DECL_CONSENFOPS(), SCIP_DECL_CONSPRESOL(), and SCIP_DECL_CONSPROP().

◆ consdataFindUnlockedLinearVar()

static void consdataFindUnlockedLinearVar ( SCIP scip,
SCIP_CONSDATA consdata 
)
static

◆ proposeFeasibleSolution()

static SCIP_RETCODE proposeFeasibleSolution ( SCIP scip,
SCIP_CONSHDLR conshdlr,
SCIP_CONS **  conss,
int  nconss,
SCIP_SOL sol,
SCIP_Bool success 
)
static

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
scipSCIP data structure
conshdlrconstraint handler
conssconstraints to process
nconssnumber of constraints
solsolution to process
successbuffer to store whether we succeeded to construct a solution that satisfies all provided constraints

Definition at line 6842 of file cons_nonlinear.c.

References computeViolation(), LinVarEventData::conshdlrdata, enforceConstraint(), FALSE, MAX, MIN, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_STAGE_INITPRESOLVE, SCIP_STAGE_SOLVED, SCIPceil(), SCIPconsGetData(), SCIPconshdlrGetData(), SCIPcreateLPSol(), SCIPcreateSolCopy(), SCIPdebugMsg, 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().

◆ enforceConstraint()

static SCIP_RETCODE enforceConstraint ( SCIP scip,
SCIP_CONSHDLR conshdlr,
SCIP_CONS **  conss,
int  nconss,
int  nusefulconss,
SCIP_SOL sol,
SCIP_Bool  solinfeasible,
SCIP_RESULT result 
)
static

helper function to enforce constraints

Parameters
scipSCIP data structure
conshdlrconstraint handler
conssconstraints to process
nconssnumber of constraints
nusefulconssnumber of useful (non-obsolete) constraints to process
solsolution to enforce (NULL for the LP solution)
solinfeasiblewas the solution already declared infeasible by a constraint handler?
resultpointer to store the result of the enforcing call

Definition at line 6996 of file cons_nonlinear.c.

References computeViolations(), LinVarEventData::conshdlrdata, FALSE, NULL, propagateBounds(), registerBranchingVariables(), registerLargeRelaxValueVariableForBranching(), replaceViolatedByLinearConstraints(), SCIP_Bool, SCIP_BRANCHED, SCIP_CALL, SCIP_CONSADDED, SCIP_CUTOFF, SCIP_DECL_CONSHDLRCOPY(), SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIP_Real, SCIP_REDUCEDDOM, SCIP_SEPARATED, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsActive(), SCIPcreateChild(), SCIPdebugMsg, SCIPfeastol(), SCIPgetCurrentNode(), SCIPgetSolVal(), SCIPisGT(), SCIPisInfinity(), SCIPisStopped(), SCIPlpfeastol(), SCIPnodeGetEstimate(), SCIPvarGetName(), SCIPwarningMessage(), separatePoint(), and TRUE.

Referenced by proposeFeasibleSolution(), SCIP_DECL_CONSENFOLP(), and SCIP_DECL_CONSENFORELAX().

◆ SCIP_DECL_CONSHDLRCOPY()

static SCIP_DECL_CONSHDLRCOPY ( conshdlrCopyNonlinear  )
static

copy method for constraint handler plugins (called when SCIP copies plugins)

Definition at line 7189 of file cons_nonlinear.c.

References NULL, SCIP_CALL, SCIP_DECL_CONSFREE(), SCIP_OKAY, SCIPincludeConshdlrNonlinear(), and TRUE.

Referenced by enforceConstraint().

◆ SCIP_DECL_CONSFREE()

static SCIP_DECL_CONSFREE ( consFreeNonlinear  )
static

destructor of constraint handler to free constraint handler data (called when SCIP is exiting)

Definition at line 7205 of file cons_nonlinear.c.

References LinVarEventData::conshdlrdata, NULL, SCIP_CALL, SCIP_DECL_CONSINIT(), SCIP_OKAY, SCIPconshdlrGetData(), SCIPexprgraphFree(), SCIPexprgraphGetNVars(), SCIPexprintFree(), SCIPfreeBlockMemory, and SCIPfreeBlockMemoryArrayNull.

Referenced by SCIP_DECL_CONSHDLRCOPY().

◆ SCIP_DECL_CONSINIT()

static SCIP_DECL_CONSINIT ( consInitNonlinear  )
static

initialization method of constraint handler (called after problem was transformed)

Definition at line 7240 of file cons_nonlinear.c.

References LinVarEventData::conshdlrdata, NULL, SCIP_CALL, SCIP_DECL_CONSEXIT(), SCIP_OKAY, SCIPconshdlrGetData(), SCIPexprgraphPrintDot(), SCIPfindHeur(), and SCIPgetMessagehdlr().

Referenced by SCIP_DECL_CONSFREE().

◆ SCIP_DECL_CONSEXIT()

static SCIP_DECL_CONSEXIT ( consExitNonlinear  )
static

deinitialization method of constraint handler (called before transformed problem is freed)

Definition at line 7273 of file cons_nonlinear.c.

References LinVarEventData::conshdlrdata, NULL, SCIP_DECL_CONSINITPRE(), SCIP_OKAY, and SCIPconshdlrGetData().

Referenced by SCIP_DECL_CONSINIT().

◆ SCIP_DECL_CONSINITPRE()

static SCIP_DECL_CONSINITPRE ( consInitpreNonlinear  )
static

presolving initialization method of constraint handler (called when presolving is about to begin)

Definition at line 7292 of file cons_nonlinear.c.

References consdataSetExprtrees(), FALSE, NULL, SCIP_CALL, SCIP_DECL_CONSEXITPRE(), SCIP_OKAY, SCIPconsGetData(), SCIPconsIsActive(), and SCIPmarkConsPropagate().

Referenced by SCIP_DECL_CONSEXIT().

◆ SCIP_DECL_CONSEXITPRE()

◆ SCIP_DECL_CONSINITSOL()

static SCIP_DECL_CONSINITSOL ( consInitsolNonlinear  )
static

◆ SCIP_DECL_CONSEXITSOL()

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 7505 of file cons_nonlinear.c.

References 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().

◆ SCIP_DECL_CONSDELETE()

static SCIP_DECL_CONSDELETE ( consDeleteNonlinear  )
static

frees specific constraint data

Definition at line 7547 of file cons_nonlinear.c.

References consdataFree(), NULL, SCIP_CALL, SCIP_DECL_CONSTRANS(), SCIP_OKAY, SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsActive(), and SCIPdebugMsg.

Referenced by SCIP_DECL_CONSEXITSOL().

◆ SCIP_DECL_CONSTRANS()

◆ SCIP_DECL_CONSINITLP()

◆ SCIP_DECL_CONSSEPALP()

◆ SCIP_DECL_CONSSEPASOL()

static SCIP_DECL_CONSSEPASOL ( consSepasolNonlinear  )
static

separation method of constraint handler for arbitrary primal solutions

Definition at line 7900 of file cons_nonlinear.c.

References computeViolations(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSENFOLP(), SCIP_DIDNOTFIND, SCIP_OKAY, SCIPgetSepaMinEfficacy(), and separatePoint().

Referenced by SCIP_DECL_CONSSEPALP().

◆ SCIP_DECL_CONSENFOLP()

static SCIP_DECL_CONSENFOLP ( consEnfolpNonlinear  )
static

constraint enforcing method of constraint handler for LP solutions

Definition at line 7933 of file cons_nonlinear.c.

References enforceConstraint(), NULL, SCIP_CALL, SCIP_DECL_CONSENFORELAX(), and SCIP_OKAY.

Referenced by SCIP_DECL_CONSSEPASOL().

◆ SCIP_DECL_CONSENFORELAX()

static SCIP_DECL_CONSENFORELAX ( consEnforelaxNonlinear  )
static

constraint enforcing method of constraint handler for relaxation solutions

Definition at line 7942 of file cons_nonlinear.c.

References enforceConstraint(), SCIP_CALL, SCIP_DECL_CONSENFOPS(), and SCIP_OKAY.

Referenced by SCIP_DECL_CONSENFOLP().

◆ SCIP_DECL_CONSENFOPS()

◆ SCIP_DECL_CONSCHECK()

◆ SCIP_DECL_CONSPROP()

static SCIP_DECL_CONSPROP ( consPropNonlinear  )
static

domain propagation method of constraint handler

Definition at line 8172 of file cons_nonlinear.c.

References NULL, propagateBounds(), SCIP_CALL, SCIP_DECL_CONSPRESOL(), SCIP_OKAY, and TRUE.

Referenced by SCIP_DECL_CONSCHECK().

◆ SCIP_DECL_CONSPRESOL()

◆ SCIP_DECL_CONSLOCK()

static SCIP_DECL_CONSLOCK ( consLockNonlinear  )
static

◆ SCIP_DECL_CONSACTIVE()

static SCIP_DECL_CONSACTIVE ( consActiveNonlinear  )
static

◆ SCIP_DECL_CONSDEACTIVE()

◆ SCIP_DECL_CONSENABLE()

static SCIP_DECL_CONSENABLE ( consEnableNonlinear  )
static

◆ SCIP_DECL_CONSDISABLE()

static SCIP_DECL_CONSDISABLE ( consDisableNonlinear  )
static

◆ SCIP_DECL_CONSPRINT()

◆ SCIP_DECL_CONSCOPY()

◆ SCIP_DECL_CONSGETVARS()

static SCIP_DECL_CONSGETVARS ( consGetVarsNonlinear  )
static

◆ SCIP_DECL_CONSGETNVARS()

static SCIP_DECL_CONSGETNVARS ( consGetNVarsNonlinear  )
static

◆ SCIP_DECL_CONSPARSE()