1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 /* */ 3 /* This file is part of the program and library */ 4 /* SCIP --- Solving Constraint Integer Programs */ 5 /* */ 6 /* Copyright (c) 2002-2023 Zuse Institute Berlin (ZIB) */ 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 pub_prop.h 26 * @ingroup PUBLICCOREAPI 27 * @brief public methods for propagators 28 * @author Tobias Achterberg 29 */ 30 31 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/ 32 33 #ifndef __SCIP_PUB_PROP_H__ 34 #define __SCIP_PUB_PROP_H__ 35 36 37 #include "scip/def.h" 38 #include "scip/type_misc.h" 39 #include "scip/type_prop.h" 40 41 #ifdef __cplusplus 42 extern "C" { 43 #endif 44 45 /**@addtogroup PublicPropagatorMethods 46 * 47 * @{ 48 */ 49 50 /** compares two propagators w. r. to their priority */ 51 SCIP_EXPORT 52 SCIP_DECL_SORTPTRCOMP(SCIPpropComp); 53 54 /** compares two propagators w. r. to their presolving priority */ 55 SCIP_EXPORT 56 SCIP_DECL_SORTPTRCOMP(SCIPpropCompPresol); 57 58 /** comparison method for sorting propagators w.r.t. to their name */ 59 SCIP_EXPORT 60 SCIP_DECL_SORTPTRCOMP(SCIPpropCompName); 61 62 /** gets user data of propagator */ 63 SCIP_EXPORT 64 SCIP_PROPDATA* SCIPpropGetData( 65 SCIP_PROP* prop /**< propagator */ 66 ); 67 68 /** sets user data of propagator; user has to free old data in advance! */ 69 SCIP_EXPORT 70 void SCIPpropSetData( 71 SCIP_PROP* prop, /**< propagator */ 72 SCIP_PROPDATA* propdata /**< new propagator user data */ 73 ); 74 75 /** gets name of propagator */ 76 SCIP_EXPORT 77 const char* SCIPpropGetName( 78 SCIP_PROP* prop /**< propagator */ 79 ); 80 81 /** gets description of propagator */ 82 SCIP_EXPORT 83 const char* SCIPpropGetDesc( 84 SCIP_PROP* prop /**< propagator */ 85 ); 86 87 /** gets priority of propagator */ 88 SCIP_EXPORT 89 int SCIPpropGetPriority( 90 SCIP_PROP* prop /**< propagator */ 91 ); 92 93 /** gets presolving priority of propagator */ 94 SCIP_EXPORT 95 int SCIPpropGetPresolPriority( 96 SCIP_PROP* prop /**< propagator */ 97 ); 98 99 /** gets frequency of propagator */ 100 SCIP_EXPORT 101 int SCIPpropGetFreq( 102 SCIP_PROP* prop /**< propagator */ 103 ); 104 105 /** gets time in seconds used for setting up this propagator for new stages */ 106 SCIP_EXPORT 107 SCIP_Real SCIPpropGetSetupTime( 108 SCIP_PROP* prop /**< propagator */ 109 ); 110 111 /** sets frequency of propagator */ 112 SCIP_EXPORT 113 void SCIPpropSetFreq( 114 SCIP_PROP* prop, /**< propagator */ 115 int freq /**< new frequency of propagator */ 116 ); 117 118 /** gets time in seconds used in this propagator */ 119 SCIP_EXPORT 120 SCIP_Real SCIPpropGetTime( 121 SCIP_PROP* prop /**< propagator */ 122 ); 123 124 /** gets time in seconds used in this propagator during strong branching */ 125 SCIP_EXPORT 126 SCIP_Real SCIPpropGetStrongBranchPropTime( 127 SCIP_PROP* prop /**< propagator */ 128 ); 129 130 /** gets time in seconds used in this propagator for resolve propagation */ 131 SCIP_EXPORT 132 SCIP_Real SCIPpropGetRespropTime( 133 SCIP_PROP* prop /**< propagator */ 134 ); 135 136 /** gets time in seconds used in this propagator for presolving */ 137 SCIP_EXPORT 138 SCIP_Real SCIPpropGetPresolTime( 139 SCIP_PROP* prop /**< propagator */ 140 ); 141 142 /** gets the total number of times, the propagator was called */ 143 SCIP_EXPORT 144 SCIP_Longint SCIPpropGetNCalls( 145 SCIP_PROP* prop /**< propagator */ 146 ); 147 148 /** gets the total number of times, the propagator was called for resolving a propagation */ 149 SCIP_EXPORT 150 SCIP_Longint SCIPpropGetNRespropCalls( 151 SCIP_PROP* prop /**< propagator */ 152 ); 153 154 /** gets total number of times, this propagator detected a cutoff */ 155 SCIP_EXPORT 156 SCIP_Longint SCIPpropGetNCutoffs( 157 SCIP_PROP* prop /**< propagator */ 158 ); 159 160 /** gets total number of domain reductions found by this propagator */ 161 SCIP_EXPORT 162 SCIP_Longint SCIPpropGetNDomredsFound( 163 SCIP_PROP* prop /**< propagator */ 164 ); 165 166 /** should propagator be delayed, if other propagators found reductions? */ 167 SCIP_EXPORT 168 SCIP_Bool SCIPpropIsDelayed( 169 SCIP_PROP* prop /**< propagator */ 170 ); 171 172 /** was propagator delayed at the last call? */ 173 SCIP_EXPORT 174 SCIP_Bool SCIPpropWasDelayed( 175 SCIP_PROP* prop /**< propagator */ 176 ); 177 178 /** is propagator initialized? */ 179 SCIP_EXPORT 180 SCIP_Bool SCIPpropIsInitialized( 181 SCIP_PROP* prop /**< propagator */ 182 ); 183 184 /** gets number of variables fixed during presolving of propagator */ 185 SCIP_EXPORT 186 int SCIPpropGetNFixedVars( 187 SCIP_PROP* prop /**< propagator */ 188 ); 189 190 /** gets number of variables aggregated during presolving of propagator */ 191 SCIP_EXPORT 192 int SCIPpropGetNAggrVars( 193 SCIP_PROP* prop /**< propagator */ 194 ); 195 196 /** gets number of variable types changed during presolving of propagator */ 197 SCIP_EXPORT 198 int SCIPpropGetNChgVarTypes( 199 SCIP_PROP* prop /**< propagator */ 200 ); 201 202 /** gets number of bounds changed during presolving of propagator */ 203 SCIP_EXPORT 204 int SCIPpropGetNChgBds( 205 SCIP_PROP* prop /**< propagator */ 206 ); 207 208 /** gets number of holes added to domains of variables during presolving of propagator */ 209 SCIP_EXPORT 210 int SCIPpropGetNAddHoles( 211 SCIP_PROP* prop /**< propagator */ 212 ); 213 214 /** gets number of constraints deleted during presolving of propagator */ 215 SCIP_EXPORT 216 int SCIPpropGetNDelConss( 217 SCIP_PROP* prop /**< propagator */ 218 ); 219 220 /** gets number of constraints added during presolving of propagator */ 221 SCIP_EXPORT 222 int SCIPpropGetNAddConss( 223 SCIP_PROP* prop /**< propagator */ 224 ); 225 226 /** gets number of constraints upgraded during presolving of propagator */ 227 SCIP_EXPORT 228 int SCIPpropGetNUpgdConss( 229 SCIP_PROP* prop /**< propagator */ 230 ); 231 232 /** gets number of coefficients changed during presolving of propagator */ 233 SCIP_EXPORT 234 int SCIPpropGetNChgCoefs( 235 SCIP_PROP* prop /**< propagator */ 236 ); 237 238 /** gets number of constraint sides changed during presolving of propagator */ 239 SCIP_EXPORT 240 int SCIPpropGetNChgSides( 241 SCIP_PROP* prop /**< propagator */ 242 ); 243 244 /** gets number of times the propagator was called in presolving and tried to find reductions */ 245 SCIP_EXPORT 246 int SCIPpropGetNPresolCalls( 247 SCIP_PROP* prop /**< propagator */ 248 ); 249 250 /** returns the timing mask of the propagator */ 251 SCIP_EXPORT 252 SCIP_PROPTIMING SCIPpropGetTimingmask( 253 SCIP_PROP* prop /**< propagator */ 254 ); 255 256 /** does the propagator perform presolving? */ 257 SCIP_EXPORT 258 SCIP_Bool SCIPpropDoesPresolve( 259 SCIP_PROP* prop /**< propagator */ 260 ); 261 262 /** returns the timing mask of the presolving method of the propagator */ 263 SCIP_EXPORT 264 SCIP_PRESOLTIMING SCIPpropGetPresolTiming( 265 SCIP_PROP* prop /**< propagator */ 266 ); 267 268 /** sets the timing mask of the presolving method of the propagator */ 269 SCIP_EXPORT 270 void SCIPpropSetPresolTiming( 271 SCIP_PROP* prop, /**< propagator */ 272 SCIP_PRESOLTIMING presoltiming /** timing mask to be set */ 273 ); 274 275 /** @} */ 276 277 #ifdef __cplusplus 278 } 279 #endif 280 281 #endif 282