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 struct_prop.h 26 * @ingroup INTERNALAPI 27 * @brief datastructures 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_STRUCT_PROP_H__ 34 #define __SCIP_STRUCT_PROP_H__ 35 36 37 #include "scip/def.h" 38 #include "scip/type_clock.h" 39 #include "scip/type_prop.h" 40 41 #ifdef __cplusplus 42 extern "C" { 43 #endif 44 45 /** propagators data */ 46 struct SCIP_Prop 47 { 48 SCIP_Longint ncalls; /**< number of times, this propagator was called */ 49 SCIP_Longint nrespropcalls; /**< number of times, the resolve propagation was called */ 50 SCIP_Longint ncutoffs; /**< number of cutoffs found so far by this propagator */ 51 SCIP_Longint ndomredsfound; /**< number of domain reductions found so far by this propagator */ 52 char* name; /**< name of propagator */ 53 char* desc; /**< description of propagator */ 54 SCIP_DECL_PROPCOPY ((*propcopy)); /**< copy method of propagator or NULL if you don't want to copy your plugin into sub-SCIPs */ 55 SCIP_DECL_PROPFREE ((*propfree)); /**< destructor of propagator */ 56 SCIP_DECL_PROPINIT ((*propinit)); /**< initialize propagator */ 57 SCIP_DECL_PROPEXIT ((*propexit)); /**< deinitialize propagator */ 58 SCIP_DECL_PROPINITPRE ((*propinitpre)); /**< presolving initialization method of propagator */ 59 SCIP_DECL_PROPEXITPRE ((*propexitpre)); /**< presolving deinitialization method of propagator */ 60 SCIP_DECL_PROPINITSOL ((*propinitsol)); /**< solving process initialization method of propagator */ 61 SCIP_DECL_PROPEXITSOL ((*propexitsol)); /**< solving process deinitialization method of propagator */ 62 SCIP_DECL_PROPPRESOL ((*proppresol)); /**< presolving method of propagator */ 63 SCIP_DECL_PROPEXEC ((*propexec)); /**< execution method of propagator */ 64 SCIP_DECL_PROPRESPROP ((*propresprop)); /**< propagation conflict resolving method */ 65 SCIP_PROPDATA* propdata; /**< propagators local data */ 66 SCIP_CLOCK* setuptime; /**< time spend for setting up this propagator for the next stages */ 67 SCIP_CLOCK* proptime; /**< time used for propagation of this propagator */ 68 SCIP_CLOCK* sbproptime; /**< time used for propagation of this propagator during strong branching */ 69 SCIP_CLOCK* resproptime; /**< time used for resolve propagation of this propagator */ 70 SCIP_CLOCK* presoltime; /**< time used for presolving of this propagator */ 71 int priority; /**< priority of the propagator for propagation */ 72 int freq; /**< frequency for calling propagator */ 73 SCIP_PROPTIMING timingmask; /**< positions in the node solving loop where propagator should be executed */ 74 SCIP_PRESOLTIMING presoltiming; /**< timing mask of the presolving method of the propagator */ 75 int presolpriority; /**< priority of the presolving of the propagator */ 76 int maxprerounds; /**< maximal number of presolving rounds the constraint handler participates in (-1: no limit) */ 77 int lastnfixedvars; /**< number of variables fixed before the last call to the propagator */ 78 int lastnaggrvars; /**< number of variables aggregated in presolving before the last call to the propagator */ 79 int lastnchgvartypes; /**< number of variable type changes in presolving before the last call to the propagator */ 80 int lastnchgbds; /**< number of variable bounds tightened in presolving before the last call to the propagator */ 81 int lastnaddholes; /**< number of domain holes added in presolving before the last call to the propagator */ 82 int lastndelconss; /**< number of deleted constraints in presolving before the last call to the propagator */ 83 int lastnaddconss; /**< number of added constraints in presolving before the last call to the propagator */ 84 int lastnupgdconss; /**< number of upgraded constraints in presolving before the last call to the propagator */ 85 int lastnchgcoefs; /**< number of changed coefficients in presolving before the last call to the propagator */ 86 int lastnchgsides; /**< number of changed left or right hand sides in presolving before the last call to the propagator */ 87 int nfixedvars; /**< total number of variables fixed by this propagator in presolving */ 88 int naggrvars; /**< total number of variables aggregated by this propagator in presolving */ 89 int nchgvartypes; /**< total number of variable type changes by this propagator in presolving */ 90 int nchgbds; /**< total number of variable bounds tightened by this propagator in presolving */ 91 int naddholes; /**< total number of domain holes added by this propagator in presolving */ 92 int ndelconss; /**< total number of deleted constraints by this propagator in presolving */ 93 int naddconss; /**< total number of added constraints by this propagator in presolving */ 94 int nupgdconss; /**< total number of upgraded constraints by this propagator in presolving */ 95 int nchgcoefs; /**< total number of changed coefficients by this propagator in presolving */ 96 int nchgsides; /**< total number of changed left or right hand sides by this propagator in presolving */ 97 int npresolcalls; /**< number of times the propagator was called in presolving and tried to find reductions */ 98 SCIP_Bool delay; /**< should propagator be delayed, if other propagators found reductions? */ 99 SCIP_Bool wasdelayed; /**< was the propagator delayed at the last call? */ 100 SCIP_Bool initialized; /**< is propagator initialized? */ 101 }; 102 103 #ifdef __cplusplus 104 } 105 #endif 106 107 #endif 108