SCIP

Solving Constraint Integer Programs

pub_nlp.h File Reference

Detailed Description

public methods for NLP management

Author
Thorsten Gellermann
Stefan Vigerske

Definition in file pub_nlp.h.

#include <stdio.h>
#include "scip/def.h"
#include "scip/type_message.h"
#include "blockmemshell/memory.h"
#include "scip/type_set.h"
#include "scip/type_stat.h"
#include "scip/type_nlp.h"
#include "scip/type_var.h"
#include "scip/type_sol.h"
#include "nlpi/type_expr.h"
#include "nlpi/type_nlpi.h"

Go to the source code of this file.

Functions

Expressions and Expression tree methods
SCIP_VAR ** SCIPexprtreeGetVars (SCIP_EXPRTREE *tree)
 
SCIP_RETCODE SCIPexprtreeSetVars (SCIP_EXPRTREE *tree, int nvars, SCIP_VAR **vars)
 
SCIP_RETCODE SCIPexprtreeAddVars (SCIP_EXPRTREE *tree, int nvars, SCIP_VAR **vars)
 
SCIP_RETCODE SCIPexprtreePrintWithNames (SCIP_EXPRTREE *tree, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
 
int SCIPexprtreeFindVar (SCIP_EXPRTREE *tree, SCIP_VAR *var)
 
Nonlinear row methods
SCIP_Real SCIPnlrowGetConstant (SCIP_NLROW *nlrow)
 
int SCIPnlrowGetNLinearVars (SCIP_NLROW *nlrow)
 
SCIP_VAR ** SCIPnlrowGetLinearVars (SCIP_NLROW *nlrow)
 
SCIP_Real * SCIPnlrowGetLinearCoefs (SCIP_NLROW *nlrow)
 
int SCIPnlrowGetNQuadVars (SCIP_NLROW *nlrow)
 
SCIP_VAR ** SCIPnlrowGetQuadVars (SCIP_NLROW *nlrow)
 
int SCIPnlrowSearchQuadVar (SCIP_NLROW *nlrow, SCIP_VAR *var)
 
int SCIPnlrowGetNQuadElems (SCIP_NLROW *nlrow)
 
SCIP_QUADELEM * SCIPnlrowGetQuadElems (SCIP_NLROW *nlrow)
 
void SCIPnlrowGetQuadData (SCIP_NLROW *nlrow, int *nquadvars, SCIP_VAR ***quadvars, int *nquadelems, SCIP_QUADELEM **quadelems)
 
SCIP_EXPRTREE * SCIPnlrowGetExprtree (SCIP_NLROW *nlrow)
 
SCIP_Real SCIPnlrowGetLhs (SCIP_NLROW *nlrow)
 
SCIP_Real SCIPnlrowGetRhs (SCIP_NLROW *nlrow)
 
const char * SCIPnlrowGetName (SCIP_NLROW *nlrow)
 
int SCIPnlrowGetNLPPos (SCIP_NLROW *nlrow)
 
SCIP_Bool SCIPnlrowIsInNLP (SCIP_NLROW *nlrow)
 
SCIP_Real SCIPnlrowGetDualsol (SCIP_NLROW *nlrow)
 

Function Documentation

SCIP_VAR** SCIPexprtreeGetVars ( SCIP_EXPRTREE *  tree)

returns variables of expression tree

Parameters
treeexpression tree

Definition at line 101 of file nlp.c.

References NULL, and SCIP_ExprTree::vars.

Referenced by addConcaveEstimatorBivariate(), addConcaveEstimatorMultivariate(), addConcaveEstimatorUnivariate(), addIntervalGradientEstimator(), addLinearization(), addUserEstimator(), checkCurvature(), computeViolation(), consdataAddExprtrees(), generate1ConvexIndefiniteUnderestimator(), generate1ConvexIndefiniteUnderestimatorAtBoundary(), generate1ConvexIndefiniteUnderestimatorInTheInteriorPatternA(), generate1ConvexIndefiniteUnderestimatorInTheInteriorPatternB(), generateConvexConcaveEstimator(), generateConvexConcaveUnderestimator(), generateCut(), generateEstimatingHyperplane(), generateLinearizationCut(), generateOrthogonal_lx_ly_Underestimator(), generateOrthogonal_lx_uy_Underestimator(), generateOverestimatingHyperplaneCut(), generateUnderestimatorParallelYFacets(), getGradientMaxElement(), getLinearAndQuadraticCoefs(), initSepaData(), isConvexLocal(), nlpAddNlRows(), nlpSetupNlpiIndices(), nlrowCalcActivityBounds(), nlrowExprtreeChanged(), printNonlinearRow(), printRowNl(), processNlRow(), readObjective(), registerBranchingVariables(), registerLargeLPValueVariableForBranching(), removeFixedVariables(), SCIP_DECL_CONSACTIVE(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSENFOPS(), SCIP_DECL_CONSEXITPRE(), SCIP_DECL_CONSGETVARS(), SCIP_DECL_CONSINITLP(), SCIP_DECL_CONSTRANS(), SCIP_DECL_EVENTEXEC(), SCIPcreateConsBivariate(), SCIPevalExprtreeGlobalBounds(), SCIPevalExprtreeLocalBounds(), SCIPevalExprtreeSol(), SCIPgetExprtreeTransformedVars(), SCIPnlpGetVarsNonlinearity(), SCIPnlpHasContinuousNonlinearity(), SCIPnlrowGetSolActivity(), SCIPnlrowRecalcNLPActivity(), SCIPnlrowRecalcPseudoActivity(), and SCIPwritePip().

SCIP_RETCODE SCIPexprtreeAddVars ( SCIP_EXPRTREE *  tree,
int  nvars,
SCIP_VAR **  vars 
)

adds variables to the expression tree variables array

Parameters
treeexpression tree
nvarsnumber of variables
varsvariables

Definition at line 143 of file nlp.c.

References SCIP_ExprTree::blkmem, BMScopyMemoryArray, BMSduplicateBlockMemoryArray, BMSreallocBlockMemoryArray, NULL, SCIP_ExprTree::nvars, SCIP_ALLOC, SCIP_OKAY, and SCIP_ExprTree::vars.

Referenced by createNlRow(), and SCIPexprtreeRemoveFixedVars().

int SCIPexprtreeFindVar ( SCIP_EXPRTREE *  tree,
SCIP_VAR *  var 
)

searches the variables array of an expression tree for a variable and returns its position, or -1 if not found Note that this is an O(n) operation!

Parameters
treeexpression tree
varvariable to search for

Definition at line 205 of file nlp.c.

References NULL, SCIP_ExprTree::nvars, and SCIP_ExprTree::vars.

Referenced by nlpDelVarPos(), and nlrowRemoveFixedVar().

SCIP_Real SCIPnlrowGetConstant ( SCIP_NLROW *  nlrow)

gets constant

Parameters
nlrowNLP row

Definition at line 3225 of file nlp.c.

References SCIP_NlRow::constant, and NULL.

Referenced by nlrowaggrCreate().

int SCIPnlrowGetNLinearVars ( SCIP_NLROW *  nlrow)

gets number of variables of linear part

Parameters
nlrowNLP row

Definition at line 3235 of file nlp.c.

References SCIP_NlRow::nlinvars, and NULL.

Referenced by nlrowaggrCreate().

SCIP_VAR** SCIPnlrowGetLinearVars ( SCIP_NLROW *  nlrow)

gets array with variables of linear part

Parameters
nlrowNLP row

Definition at line 3245 of file nlp.c.

References SCIP_NlRow::linvars, and NULL.

Referenced by nlrowaggrCreate().

SCIP_Real* SCIPnlrowGetLinearCoefs ( SCIP_NLROW *  nlrow)

gets array with coefficients in linear part

Parameters
nlrowNLP row

Definition at line 3255 of file nlp.c.

References SCIP_NlRow::lincoefs, and NULL.

Referenced by nlrowaggrCreate().

int SCIPnlrowGetNQuadVars ( SCIP_NLROW *  nlrow)

gets number of quadratic variables in quadratic part

Parameters
nlrowNLP row

Definition at line 3265 of file nlp.c.

References SCIP_NlRow::nquadvars, and NULL.

Referenced by createMIP(), createTcliqueGraph(), findAndStoreEcAggregations(), isCandidate(), nlrowaggrCreate(), SCIPaddQuadVarsToNlRow(), searchEcAggr(), and searchEcAggrWithCliques().

SCIP_VAR** SCIPnlrowGetQuadVars ( SCIP_NLROW *  nlrow)

gets quadratic variables in quadratic part

Parameters
nlrowNLP row

Definition at line 3275 of file nlp.c.

References NULL, and SCIP_NlRow::quadvars.

Referenced by computeInteriorPoint(), createMIP(), createTcliqueGraph(), isCandidate(), nlrowaggrCreate(), processNlRow(), and searchEcAggr().

int SCIPnlrowSearchQuadVar ( SCIP_NLROW *  nlrow,
SCIP_VAR *  var 
)

gives position of variable in quadvars array of row, or -1 if not found

Parameters
nlrownonlinear row
varvariable to search for

Definition at line 3285 of file nlp.c.

References SCIP_NlRow::nquadvars, NULL, SCIP_NlRow::quadvars, SCIP_NlRow::quadvarshash, SCIPhashmapExists(), and SCIPhashmapGetImage().

Referenced by createNlRow(), nlpDelVarPos(), nlrowRemoveFixedQuadVars(), nlrowRemoveFixedVar(), and SCIPnlrowAddQuadVar().

int SCIPnlrowGetNQuadElems ( SCIP_NLROW *  nlrow)

gets number of quadratic elements in quadratic part

Parameters
nlrowNLP row

Definition at line 3312 of file nlp.c.

References SCIP_NlRow::nquadelems, and NULL.

Referenced by computeInteriorPoint(), createMIP(), createTcliqueGraph(), isCandidate(), nlrowaggrCreate(), processNlRow(), SCIPaddQuadElementsToNlRow(), searchEcAggr(), searchEcAggrWithCliques(), storeAggrFromMIP(), and updateMIP().

SCIP_QUADELEM* SCIPnlrowGetQuadElems ( SCIP_NLROW *  nlrow)

gets quadratic elements in quadratic part

Parameters
nlrowNLP row

Definition at line 3322 of file nlp.c.

References NULL, and SCIP_NlRow::quadelems.

Referenced by computeInteriorPoint(), createMIP(), createTcliqueGraph(), isCandidate(), nlrowaggrCreate(), processNlRow(), searchEcAggrWithCliques(), storeAggrFromMIP(), and updateMIP().

void SCIPnlrowGetQuadData ( SCIP_NLROW *  nlrow,
int *  nquadvars,
SCIP_VAR ***  quadvars,
int *  nquadelems,
SCIP_QUADELEM **  quadelems 
)

gets array with coefficients in linear part

Parameters
nlrowNLP row
nquadvarsbuffer to store number of variables in quadratic term, or NULL if not of interest
quadvarsbuffer to store pointer to array of variables in quadratic term, or NULL if not of interest
nquadelemsbuffer to store number of entries in quadratic term, or NULL if not of interest
quadelemsbuffer to store pointer to array of entries in quadratic term, or NULL if not of interest

Definition at line 3332 of file nlp.c.

References SCIP_NlRow::nquadelems, SCIP_NlRow::nquadvars, NULL, SCIP_NlRow::quadelems, and SCIP_NlRow::quadvars.

SCIP_EXPRTREE* SCIPnlrowGetExprtree ( SCIP_NLROW *  nlrow)

gets expression tree

Parameters
nlrowNLP row

Definition at line 3353 of file nlp.c.

References SCIP_NlRow::exprtree, and NULL.

Referenced by isCandidate(), and processNlRow().

SCIP_Real SCIPnlrowGetLhs ( SCIP_NLROW *  nlrow)

returns the left hand side of a nonlinear row

Parameters
nlrowNLP row

Definition at line 3363 of file nlp.c.

References SCIP_NlRow::lhs, and NULL.

Referenced by findAndStoreEcAggregations(), isCandidate(), nlrowaggrCreate(), and processNlRow().

SCIP_Real SCIPnlrowGetRhs ( SCIP_NLROW *  nlrow)

returns the right hand side of a nonlinear row

Parameters
nlrowNLP row

Definition at line 3373 of file nlp.c.

References NULL, and SCIP_NlRow::rhs.

Referenced by findAndStoreEcAggregations(), isCandidate(), nlrowaggrCreate(), and processNlRow().

const char* SCIPnlrowGetName ( SCIP_NLROW *  nlrow)

returns the name of a nonlinear row

Parameters
nlrowNLP row

Definition at line 3383 of file nlp.c.

References SCIP_NlRow::name, and NULL.

Referenced by processNlRow().

int SCIPnlrowGetNLPPos ( SCIP_NLROW *  nlrow)

gets position of a nonlinear row in current NLP, or -1 if not in NLP

Parameters
nlrowNLP row

Definition at line 3393 of file nlp.c.

References SCIP_NlRow::nlpindex, and NULL.

SCIP_Bool SCIPnlrowIsInNLP ( SCIP_NLROW *  nlrow)

returns TRUE iff row is member of current NLP

Parameters
nlrowNLP row

Definition at line 3403 of file nlp.c.

References SCIP_NlRow::nlpindex, and NULL.

Referenced by computeCut(), isCandidate(), and isPossibleToComputeCut().

SCIP_Real SCIPnlrowGetDualsol ( SCIP_NLROW *  nlrow)

gets the dual NLP solution of a nlrow for a ranged constraint, the dual value is positive if the right hand side is active and negative if the left hand side is active

Parameters
nlrowNLP row

Definition at line 3415 of file nlp.c.

References SCIP_NlRow::dualsol, SCIP_NlRow::nlpiindex, and NULL.

Referenced by SCIPapplyHeurDualval().