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