1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /*                                                                           */
3 /*                  This file is part of the program and library             */
4 /*         SCIP --- Solving Constraint Integer Programs                      */
5 /*                                                                           */
6 /*    Copyright (C) 2002-2021 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 visit scipopt.org.         */
13 /*                                                                           */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file   pub_sepa.h
17  * @ingroup PUBLICCOREAPI
18  * @brief  public methods 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_PUB_SEPA_H__
25 #define __SCIP_PUB_SEPA_H__
26 
27 
28 #include "scip/def.h"
29 #include "scip/type_misc.h"
30 #include "scip/type_sepa.h"
31 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35 
36 /*--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
37 /**@addtogroup PublicSeparatorMethods
38  *
39  * @{
40  */
41 
42 
43 /** compares two separators w. r. to their priority */
44 SCIP_EXPORT
45 SCIP_DECL_SORTPTRCOMP(SCIPsepaComp);
46 
47 /** comparison method for sorting separators w.r.t. to their name */
48 SCIP_EXPORT
49 SCIP_DECL_SORTPTRCOMP(SCIPsepaCompName);
50 
51 /** gets user data of separator */
52 SCIP_EXPORT
53 SCIP_SEPADATA* SCIPsepaGetData(
54    SCIP_SEPA*            sepa                /**< separator */
55    );
56 
57 /** sets user data of separator; user has to free old data in advance! */
58 SCIP_EXPORT
59 void SCIPsepaSetData(
60    SCIP_SEPA*            sepa,               /**< separator */
61    SCIP_SEPADATA*        sepadata            /**< new separator user data */
62    );
63 
64 /** gets name of separator */
65 SCIP_EXPORT
66 const char* SCIPsepaGetName(
67    SCIP_SEPA*            sepa                /**< separator */
68    );
69 
70 /** gets description of separator */
71 SCIP_EXPORT
72 const char* SCIPsepaGetDesc(
73    SCIP_SEPA*            sepa                /**< separator */
74    );
75 
76 /** gets priority of separator */
77 SCIP_EXPORT
78 int SCIPsepaGetPriority(
79    SCIP_SEPA*            sepa                /**< separator */
80    );
81 
82 /** gets frequency of separator */
83 SCIP_EXPORT
84 int SCIPsepaGetFreq(
85    SCIP_SEPA*            sepa                /**< separator */
86    );
87 
88 /** sets frequency of separator */
89 SCIP_EXPORT
90 void SCIPsepaSetFreq(
91    SCIP_SEPA*            sepa,               /**< separator */
92    int                   freq                /**< new frequency of separator */
93    );
94 
95 /** get maximal bound distance at which the separator is called */
96 SCIP_EXPORT
97 SCIP_Real SCIPsepaGetMaxbounddist(
98    SCIP_SEPA*            sepa                /**< separator */
99    );
100 
101 /** does the separator use a secondary SCIP instance? */
102 SCIP_EXPORT
103 SCIP_Bool SCIPsepaUsesSubscip(
104    SCIP_SEPA*            sepa                /**< separator */
105    );
106 
107 /** gets time in seconds used in this separator for setting up for next stages */
108 SCIP_EXPORT
109 SCIP_Real SCIPsepaGetSetupTime(
110    SCIP_SEPA*            sepa                /**< separator */
111    );
112 
113 /** gets time in seconds used in this separator */
114 SCIP_EXPORT
115 SCIP_Real SCIPsepaGetTime(
116    SCIP_SEPA*            sepa                /**< separator */
117    );
118 
119 /** gets the total number of times, the separator was called */
120 SCIP_EXPORT
121 SCIP_Longint SCIPsepaGetNCalls(
122    SCIP_SEPA*            sepa                /**< separator */
123    );
124 
125 /** gets the number of times, the separator was called at the current node */
126 SCIP_EXPORT
127 int SCIPsepaGetNCallsAtNode(
128    SCIP_SEPA*            sepa                /**< separator */
129    );
130 
131 /** gets total number of times, the separator detected a cutoff */
132 SCIP_EXPORT
133 SCIP_Longint SCIPsepaGetNCutoffs(
134    SCIP_SEPA*            sepa                /**< separator */
135    );
136 
137 /** gets the total number of cutting planes found by this separator */
138 SCIP_EXPORT
139 SCIP_Longint SCIPsepaGetNCutsFound(
140    SCIP_SEPA*            sepa                /**< separator */
141    );
142 
143 /** gets the total number of cutting planes applied to lp */
144 SCIP_EXPORT
145 SCIP_Longint SCIPsepaGetNCutsApplied(
146    SCIP_SEPA*            sepa                /**< separator */
147    );
148 
149 /** gets the number of cutting planes found by this separator at the current node */
150 SCIP_EXPORT
151 SCIP_Longint SCIPsepaGetNCutsFoundAtNode(
152    SCIP_SEPA*            sepa                /**< separator */
153    );
154 
155 /** gets total number of additional constraints added by this separator */
156 SCIP_EXPORT
157 SCIP_Longint SCIPsepaGetNConssFound(
158    SCIP_SEPA*            sepa                /**< separator */
159    );
160 
161 /** gets total number of domain reductions found by this separator */
162 SCIP_EXPORT
163 SCIP_Longint SCIPsepaGetNDomredsFound(
164    SCIP_SEPA*            sepa                /**< separator */
165    );
166 
167 /** should separator be delayed, if other separators found cuts? */
168 SCIP_EXPORT
169 SCIP_Bool SCIPsepaIsDelayed(
170    SCIP_SEPA*            sepa                /**< separator */
171    );
172 
173 /** was separation of the LP solution delayed at the last call? */
174 SCIP_EXPORT
175 SCIP_Bool SCIPsepaWasLPDelayed(
176    SCIP_SEPA*            sepa                /**< separator */
177    );
178 
179 /** was separation of the primal solution delayed at the last call? */
180 SCIP_EXPORT
181 SCIP_Bool SCIPsepaWasSolDelayed(
182    SCIP_SEPA*            sepa                /**< separator */
183    );
184 
185 /** is separator initialized? */
186 SCIP_EXPORT
187 SCIP_Bool SCIPsepaIsInitialized(
188    SCIP_SEPA*            sepa                /**< separator */
189    );
190 
191 /** @} */
192 
193 #ifdef __cplusplus
194 }
195 #endif
196 
197 #endif
198