Scippy

SCIP

Solving Constraint Integer Programs

cons_disjunction.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 2002-2022 Zuse Institute Berlin */
7 /* */
8 /* Licensed under the Apache License, Version 2.0 (the "License"); */
9 /* you may not use this file except in compliance with the License. */
10 /* You may obtain a copy of the License at */
11 /* */
12 /* http://www.apache.org/licenses/LICENSE-2.0 */
13 /* */
14 /* Unless required by applicable law or agreed to in writing, software */
15 /* distributed under the License is distributed on an "AS IS" BASIS, */
16 /* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
17 /* See the License for the specific language governing permissions and */
18 /* limitations under the License. */
19 /* */
20 /* You should have received a copy of the Apache-2.0 license */
21 /* along with SCIP; see the file LICENSE. If not visit scipopt.org. */
22 /* */
23 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
24 
25 /**@file cons_disjunction.h
26  * @ingroup CONSHDLRS
27  * @brief constraint handler for disjunction constraints
28  * @author Stefan Heinz
29  * @author Michael Winkler
30  *
31  */
32 
33 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
34 
35 #ifndef __SCIP_CONS_DISJUNCTION_H__
36 #define __SCIP_CONS_DISJUNCTION_H__
37 
38 
39 #include "scip/def.h"
40 #include "scip/type_cons.h"
41 #include "scip/type_retcode.h"
42 #include "scip/type_scip.h"
43 
44 #ifdef __cplusplus
45 extern "C" {
46 #endif
47 
48 /** creates the handler for disjunction constraints and includes it in SCIP
49  *
50  * @ingroup ConshdlrIncludes
51  * */
52 SCIP_EXPORT
54  SCIP* scip /**< SCIP data structure */
55  );
56 
57 /**@addtogroup CONSHDLRS
58  *
59  * @{
60  *
61  * @name Disjunction Constraints
62  *
63  * @{
64  *
65  * A disjunction constraint \f$ C \f$ is a constraint of the form
66  * \f[
67  * C = C_1 \vee \dots \vee C_n
68  * \f]
69  * where all the \f$ C_i \f$ are individual constraints themselves.
70  */
71 
72 /** creates and captures a disjunction constraint
73  *
74  * @note the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
75  */
76 SCIP_EXPORT
78  SCIP* scip, /**< SCIP data structure */
79  SCIP_CONS** cons, /**< pointer to hold the created constraint */
80  const char* name, /**< name of constraint */
81  int nconss, /**< number of initial constraints in disjunction */
82  SCIP_CONS** conss, /**< initial constraint in disjunction */
83  SCIP_CONS* relaxcons, /**< a conjunction constraint containing the linear relaxation of the disjunction constraint, or NULL */
84  SCIP_Bool initial, /**< should the LP relaxation of constraint be in the initial LP?
85  * Usually set to TRUE. Set to FALSE for 'lazy constraints'. */
86  SCIP_Bool enforce, /**< should the constraint be enforced during node processing?
87  * TRUE for model constraints, FALSE for additional, redundant constraints. */
88  SCIP_Bool check, /**< should the constraint be checked for feasibility?
89  * TRUE for model constraints, FALSE for additional, redundant constraints. */
90  SCIP_Bool local, /**< is constraint only valid locally?
91  * Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. */
92  SCIP_Bool modifiable, /**< is constraint modifiable (subject to column generation)?
93  * Usually set to FALSE. In column generation applications, set to TRUE if pricing
94  * adds coefficients to this constraint. */
95  SCIP_Bool dynamic /**< is constraint subject to aging?
96  * Usually set to FALSE. Set to TRUE for own cuts which
97  * are separated as constraints. */
98  );
99 
100 /** creates and captures a cumulative constraint
101  * in its most basic version, i. e., all constraint flags are set to their basic value as explained for the
102  * method SCIPcreateConsDisjunction(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h
103  *
104  * @see SCIPcreateConsDisjunction() for information about the basic constraint flag configuration
105  *
106  * @note the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
107  */
108 SCIP_EXPORT
110  SCIP* scip, /**< SCIP data structure */
111  SCIP_CONS** cons, /**< pointer to hold the created constraint */
112  const char* name, /**< name of constraint */
113  int nconss, /**< number of initial constraints in disjunction */
114  SCIP_CONS** conss, /**< initial constraint in disjunction */
115  SCIP_CONS* relaxcons /**< a conjunction constraint containing the linear relaxation of the disjunction constraint, or NULL */
116  );
117 
118 /** adds constraint to the disjunction of constraints */
119 SCIP_EXPORT
121  SCIP* scip, /**< SCIP data structure */
122  SCIP_CONS* cons, /**< disjunction constraint */
123  SCIP_CONS* addcons /**< additional constraint in disjunction */
124  );
125 
126 /** @} */
127 
128 /** @} */
129 
130 #ifdef __cplusplus
131 }
132 #endif
133 
134 #endif
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:63
type definitions for return codes for SCIP methods
type definitions for SCIP&#39;s main datastructure
SCIP_RETCODE SCIPcreateConsBasicDisjunction(SCIP *scip, SCIP_CONS **cons, const char *name, int nconss, SCIP_CONS **conss, SCIP_CONS *relaxcons)
#define SCIP_Bool
Definition: def.h:93
SCIP_RETCODE SCIPaddConsElemDisjunction(SCIP *scip, SCIP_CONS *cons, SCIP_CONS *addcons)
SCIP_RETCODE SCIPincludeConshdlrDisjunction(SCIP *scip)
common defines and data types used in all packages of SCIP
SCIP_RETCODE SCIPcreateConsDisjunction(SCIP *scip, SCIP_CONS **cons, const char *name, int nconss, SCIP_CONS **conss, SCIP_CONS *relaxcons, SCIP_Bool initial, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic)
type definitions for constraints and constraint handlers