# SCIP

Solving Constraint Integer Programs

 cons_bivariate.h Go to the documentation of this file. 1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 /* */ 3 /* This file is part of the program and library */ 4 /* SCIP --- Solving Constraint Integer Programs */ 5 /* */ 6 /* Copyright (C) 2002-2014 Konrad-Zuse-Zentrum */ 7 /* fuer Informationstechnik Berlin */ 8 /* */ 9 /* SCIP is distributed under the terms of the ZIB Academic License. */ 10 /* */ 11 /* You should have received a copy of the ZIB Academic License */ 12 /* along with SCIP; see the file COPYING. If not email to scip@zib.de. */ 13 /* */ 14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 15  16 /**@file cons_bivariate.h 17  * @ingroup CONSHDLRS 18  * @brief constraint handler for bivariate nonlinear constraints \f$\textrm{lhs} \leq f(x,y) + c z \leq \textrm{rhs}\f$ 19  * @author Martin Ballerstein 20  * @author Dennis Michaels 21  * @author Stefan Vigerske 22  * 23  * This constraint handler handles constraints of the form 24  * \f[ 25  * \textrm{lhs} \leq f(x,y) + c z \leq \textrm{rhs} 26  * \f] 27  * for a bivariate nonlinear function \f$f(x,y)\f$ (given as expression tree) that has 28  * a fixed convexity behaviour, that is, \f$f(x,y)\f$ has to be either jointly convex in \f$(x,y)\f$, 29  * or convex in \f$x\f$ and concave in \f$y\f$, 30  * or convex in \f$x\f$ and convex in \f$y\f$, but indefinite w.r.t. \f$(x,y)\f$. 31  * See also 32  * 33  * @par 34  * Martin Ballerstein, Dennis Michaels, and Stefan Vigerske@n 35  * Linear Underestimators for bivariate functions with a fixed convexity behavior@n 36  * ZIB Report 13-02, 2013. http://opus4.kobv.de/opus4-zib/frontdoor/index/index/docId/1764 37  */ 38  39 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/ 40  41 #ifndef __SCIP_CONS_BIVARIATE_H__ 42 #define __SCIP_CONS_BIVARIATE_H__ 43  44 #include "scip/scip.h" 45  46 #ifdef __cplusplus 47 extern "C" { 48 #endif 49  50 typedef enum 51 { 52  SCIP_BIVAR_ALLCONVEX = 0, /* f(x,y) is convex */ 53  SCIP_BIVAR_1CONVEX_INDEFINITE = 1, /* f(x,y) is 1-convex and indefinite */ 54  SCIP_BIVAR_CONVEX_CONCAVE = 2, /* f(x,y) is convex in x and concave in y */ 55  SCIP_BIVAR_UNKNOWN = 3 /* unknown */ 57  58 /** creates the handler for bivariate constraints and includes it in SCIP */ 59 extern 61  SCIP* scip /**< SCIP data structure */ 62  ); 63  64 /** creates and captures a bivariate constraint 65  * 66  * @note the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons() 67  */ 68 extern 70  SCIP* scip, /**< SCIP data structure */ 71  SCIP_CONS** cons, /**< pointer to hold the created constraint */ 72  const char* name, /**< name of constraint */ 73  SCIP_EXPRTREE* f, /**< expression tree specifying bivariate function f(x,y) */ 74  SCIP_BIVAR_CONVEXITY convextype, /**< kind of convexity of f(x,y) */ 75  SCIP_VAR* z, /**< linear variable in constraint */ 76  SCIP_Real zcoef, /**< coefficient of linear variable */ 77  SCIP_Real lhs, /**< left hand side of constraint */ 78  SCIP_Real rhs, /**< right hand side of constraint */ 79  SCIP_Bool initial, /**< should the LP relaxation of constraint be in the initial LP? 80  * Usually set to TRUE. Set to FALSE for 'lazy constraints'. */ 81  SCIP_Bool separate, /**< should the constraint be separated during LP processing? 82  * Usually set to TRUE. */ 83  SCIP_Bool enforce, /**< should the constraint be enforced during node processing? 84  * TRUE for model constraints, FALSE for additional, redundant constraints. */ 85  SCIP_Bool check, /**< should the constraint be checked for feasibility? 86  * TRUE for model constraints, FALSE for additional, redundant constraints. */ 87  SCIP_Bool propagate, /**< should the constraint be propagated during node processing? 88  * Usually set to TRUE. */ 89  SCIP_Bool local, /**< is constraint only valid locally? 90  * Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. */ 91  SCIP_Bool modifiable, /**< is constraint modifiable (subject to column generation)? 92  * Usually set to FALSE. In column generation applications, set to TRUE if pricing 93  * adds coefficients to this constraint. */ 94  SCIP_Bool dynamic, /**< is constraint subject to aging? 95  * Usually set to FALSE. Set to TRUE for own cuts which 96  * are seperated as constraints. */ 97  SCIP_Bool removable, /**< should the relaxation be removed from the LP due to aging or cleanup? 98  * Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'. */ 99  SCIP_Bool stickingatnode /**< should the constraint always be kept at the node where it was added, even 100  * if it may be moved to a more global node? 101  * Usually set to FALSE. Set to TRUE to for constraints that represent node data. */ 102  ); 103  104 /** creates and captures an absolute power constraint 105  * in its most basic version, i. e., all constraint flags are set to their basic value as explained for the 106  * method SCIPcreateConsBivariate(); all flags can be set via SCIPconsSetFLAGNAME-methods in cons.h 107  * 108  * @see SCIPcreateConsBivariate() for information about the basic constraint flag configuration 109  * 110  * @note the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons() 111  */ 112 extern 114  SCIP* scip, /**< SCIP data structure */ 115  SCIP_CONS** cons, /**< pointer to hold the created constraint */ 116  const char* name, /**< name of constraint */ 117  SCIP_EXPRTREE* f, /**< expression tree specifying bivariate function f(x,y) */ 118  SCIP_BIVAR_CONVEXITY convextype, /**< kind of convexity of f(x,y) */ 119  SCIP_VAR* z, /**< linear variable in constraint */ 120  SCIP_Real zcoef, /**< coefficient of linear variable */ 121  SCIP_Real lhs, /**< left hand side of constraint */ 122  SCIP_Real rhs /**< right hand side of constraint */ 123  ); 124  125 /** gets the linear variable of a bivariate constraint, or NULL if no such variable */ 126 extern 128  SCIP* scip, /**< SCIP data structure */ 129  SCIP_CONS* cons /**< constraint */ 130  ); 131  132 /** gets the coefficients of the linear variable of a bivariate constraint */ 133 extern 135  SCIP* scip, /**< SCIP data structure */ 136  SCIP_CONS* cons /**< constraint */ 137  ); 138  139 /** gets the expression tree of a bivariate constraint */ 140 extern 142  SCIP* scip, /**< SCIP data structure */ 143  SCIP_CONS* cons /**< constraint */ 144  ); 145  146 /** gets the left hand side of a bivariate constraint */ 147 extern 149  SCIP* scip, /**< SCIP data structure */ 150  SCIP_CONS* cons /**< constraint */ 151  ); 152  153 /** gets the right hand side of a bivariate constraint */ 154 extern 156  SCIP* scip, /**< SCIP data structure */ 157  SCIP_CONS* cons /**< constraint */ 158  ); 159  160 #ifdef __cplusplus 161 } 162 #endif 163  164 #endif 165  Generated on Wed Apr 2 2014 for SCIP Doxygen Documentation by doxygen (1.8.2) © 2024 by Zuse Institute Berlin (ZIB), Imprint designed with Bootstrap