Scippy

SCIP

Solving Constraint Integer Programs

type_sepa.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-2015 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 type_sepa.h
17  * @ingroup TYPEDEFINITIONS
18  * @brief type definitions for separators
19  * @author Tobias Achterberg
20  */
21 
22 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
23 
24 #ifndef __SCIP_TYPE_SEPA_H__
25 #define __SCIP_TYPE_SEPA_H__
26 
27 #include "scip/def.h"
28 #include "scip/type_retcode.h"
29 #include "scip/type_result.h"
30 #include "scip/type_sol.h"
31 #include "scip/type_scip.h"
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
37 typedef struct SCIP_Sepa SCIP_SEPA; /**< separator */
38 typedef struct SCIP_SepaData SCIP_SEPADATA; /**< locally defined separator data */
39 
40 
41 /** copy method for separator plugins (called when SCIP copies plugins)
42  *
43  * input:
44  * - scip : SCIP main data structure
45  * - sepa : the separator itself
46  */
47 #define SCIP_DECL_SEPACOPY(x) SCIP_RETCODE x (SCIP* scip, SCIP_SEPA* sepa)
48 
49 /** destructor of separator to free user data (called when SCIP is exiting)
50  *
51  * input:
52  * - scip : SCIP main data structure
53  * - sepa : the separator itself
54  */
55 #define SCIP_DECL_SEPAFREE(x) SCIP_RETCODE x (SCIP* scip, SCIP_SEPA* sepa)
56 
57 /** initialization method of separator (called after problem was transformed)
58  *
59  * input:
60  * - scip : SCIP main data structure
61  * - sepa : the separator itself
62  */
63 #define SCIP_DECL_SEPAINIT(x) SCIP_RETCODE x (SCIP* scip, SCIP_SEPA* sepa)
64 
65 /** deinitialization method of separator (called before transformed problem is freed)
66  *
67  * input:
68  * - scip : SCIP main data structure
69  * - sepa : the separator itself
70  */
71 #define SCIP_DECL_SEPAEXIT(x) SCIP_RETCODE x (SCIP* scip, SCIP_SEPA* sepa)
72 
73 /** solving process initialization method of separator (called when branch and bound process is about to begin)
74  *
75  * This method is called when the presolving was finished and the branch and bound process is about to begin.
76  * The separator may use this call to initialize its branch and bound specific data.
77  *
78  * input:
79  * - scip : SCIP main data structure
80  * - sepa : the separator itself
81  */
82 #define SCIP_DECL_SEPAINITSOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_SEPA* sepa)
83 
84 /** solving process deinitialization method of separator (called before branch and bound process data is freed)
85  *
86  * This method is called before the branch and bound process is freed.
87  * The separator should use this call to clean up its branch and bound data.
88  *
89  * input:
90  * - scip : SCIP main data structure
91  * - sepa : the separator itself
92  */
93 #define SCIP_DECL_SEPAEXITSOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_SEPA* sepa)
94 
95 /** LP solution separation method of separator
96  *
97  * Searches for cutting planes that separate the current LP solution. The method is called in the LP solving loop,
98  * which means that a valid LP solution exists.
99  *
100  * input:
101  * - scip : SCIP main data structure
102  * - sepa : the separator itself
103  * - result : pointer to store the result of the separation call
104  *
105  * possible return values for *result (if more than one applies, the first in the list should be used):
106  * - SCIP_CUTOFF : the node is infeasible in the variable's bounds and can be cut off
107  * - SCIP_CONSADDED : an additional constraint was generated
108  * - SCIP_REDUCEDDOM : a variable's domain was reduced
109  * - SCIP_SEPARATED : a cutting plane was generated
110  * - SCIP_NEWROUND : a cutting plane was generated and a new separation round should immediately start
111  * - SCIP_DIDNOTFIND : the separator searched, but did not find domain reductions, cutting planes, or cut constraints
112  * - SCIP_DIDNOTRUN : the separator was skipped
113  * - SCIP_DELAYED : the separator was skipped, but should be called again
114  */
115 #define SCIP_DECL_SEPAEXECLP(x) SCIP_RETCODE x (SCIP* scip, SCIP_SEPA* sepa, SCIP_RESULT* result)
116 
117 /** arbitrary primal solution separation method of separator
118  *
119  * Searches for cutting planes that separate the given primal solution. The method is called outside the LP solution
120  * loop (e.g., by a relaxator or a primal heuristic), which means that there is no valid LP solution.
121  *
122  * input:
123  * - scip : SCIP main data structure
124  * - sepa : the separator itself
125  * - sol : primal solution that should be separated
126  * - result : pointer to store the result of the separation call
127  *
128  * possible return values for *result (if more than one applies, the first in the list should be used):
129  * - SCIP_CUTOFF : the node is infeasible in the variable's bounds and can be cut off
130  * - SCIP_CONSADDED : an additional constraint was generated
131  * - SCIP_REDUCEDDOM : a variable's domain was reduced
132  * - SCIP_SEPARATED : a cutting plane was generated
133  * - SCIP_NEWROUND : a cutting plane was generated and a new separation round should immediately start
134  * - SCIP_DIDNOTFIND : the separator searched, but did not find domain reductions, cutting planes, or cut constraints
135  * - SCIP_DIDNOTRUN : the separator was skipped
136  * - SCIP_DELAYED : the separator was skipped, but should be called again
137  */
138 #define SCIP_DECL_SEPAEXECSOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_SEPA* sepa, SCIP_SOL* sol, SCIP_RESULT* result)
139 
140 #ifdef __cplusplus
141 }
142 #endif
143 
144 #endif
type definitions for return codes for SCIP methods
type definitions for SCIP's main datastructure
type definitions for storing primal CIP solutions
result codes for SCIP callback methods
common defines and data types used in all packages of SCIP
struct SCIP_SepaData SCIP_SEPADATA
Definition: type_sepa.h:38