struct_cons.h
Go to the documentation of this file.
31/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
48 SCIP_Real age; /**< age of constraint: number of successive times, the constraint was irrelevant */
52 SCIP_CONS* transorigcons; /**< for original constraints: associated transformed constraint or NULL,
54 SCIP_CONSSETCHG* addconssetchg; /**< constraint change that added constraint to current subproblem, or NULL if
56 int addarraypos; /**< position of constraint in the conssetchg's/prob's addedconss/conss array */
63 int nlockspos[NLOCKTYPES]; /**< array of times, the constraint locked rounding of its variables */
64 int nlocksneg[NLOCKTYPES]; /**< array of times, the constraint locked vars for the constraint's negation */
65 int activedepth; /**< depth level of constraint activation (-2: inactive, -1: problem constraint) */
68 unsigned int initial:1; /**< TRUE iff LP relaxation of constraint should be in initial LP, if possible */
72 unsigned int propagate:1; /**< TRUE iff constraint should be propagated during node processing */
73 unsigned int sepaenabled:1; /**< TRUE iff constraint should be separated in the next separation call */
74 unsigned int propenabled:1; /**< TRUE iff constraint should be propagated in the next propagation call */
76 unsigned int modifiable:1; /**< TRUE iff constraint is modifiable (subject to column generation) */
78 unsigned int removable:1; /**< TRUE iff relaxation should be removed from the LP due to aging or cleanup */
79 unsigned int stickingatnode:1; /**< TRUE iff the node should always be kept at the node where it was added */
81 unsigned int deleteconsdata:1; /**< TRUE iff constraint data has to be deleted if constraint is freed */
88 unsigned int enabled:1; /**< TRUE iff constraint is enforced, separated, and propagated in current node */
90 unsigned int markpropagate:1; /**< TRUE iff constraint is marked to be propagated in the next round */
95 unsigned int updatedeactivate:1; /**< TRUE iff constraint has to be deactivated in update phase */
98 unsigned int updatesepaenable:1; /**< TRUE iff constraint's separation has to be enabled in update phase */
99 unsigned int updatesepadisable:1;/**< TRUE iff constraint's separation has to be disabled in update phase */
100 unsigned int updatepropenable:1; /**< TRUE iff constraint's propagation has to be enabled in update phase */
101 unsigned int updatepropdisable:1;/**< TRUE iff constraint's propagation has to be disabled in update phase */
102 unsigned int updateobsolete:1; /**< TRUE iff obsolete status of constraint has to be updated in update phase */
104 unsigned int updateactfocus:1; /**< TRUE iff delayed constraint activation happened at focus node */
105 unsigned int updatemarkpropagate:1;/**< TRUE iff constraint has to be marked to be propagated in update phase */
106 unsigned int updateunmarkpropagate:1;/**< TRUE iff constraint has to be unmarked to be propagated in update phase */
137 SCIP_Longint ncutsapplied; /**< number of cuts found by this constraint handler applied to lp */
138 SCIP_Longint nconssfound; /**< number of additional constraints added by this constraint handler */
139 SCIP_Longint ndomredsfound; /**< number of domain reductions found so far by this constraint handler */
140 SCIP_Longint nchildren; /**< number of children the constraint handler created during branching */
141 SCIP_Longint lastpropdomchgcount;/**< last bound change number, where the domain propagation was called */
142 SCIP_Longint storedpropdomchgcount;/**< bound change number, where the domain propagation was called last before starting probing */
143 SCIP_Longint lastenfolpdomchgcount;/**< last bound change number, where the LP enforcement was called */
144 SCIP_Longint lastenfopsdomchgcount;/**< last bound change number, where the pseudo enforcement was called */
145 SCIP_Longint lastenforelaxdomchgcount;/**< last bound change number, where the relaxation enforcement was called */
148 SCIP_Longint lastenforelaxnode; /**< last node at which the relaxation enforcement was called */
152 SCIP_Real ageresetavg; /**< exp. decaying weighted average of constraint ages at moment of age reset */
155 SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)); /**< copy method of constraint handler or NULL if you don't want to copy your plugin into sub-SCIPs */
159 SCIP_DECL_CONSINITPRE ((*consinitpre)); /**< presolving initialization method of constraint handler */
160 SCIP_DECL_CONSEXITPRE ((*consexitpre)); /**< presolving deinitialization method of constraint handler */
161 SCIP_DECL_CONSINITSOL ((*consinitsol)); /**< solving process initialization method of constraint handler */
162 SCIP_DECL_CONSEXITSOL ((*consexitsol)); /**< solving process deinitialization method of constraint handler */
164 SCIP_DECL_CONSTRANS ((*constrans)); /**< transform constraint data into data belonging to the transformed problem */
165 SCIP_DECL_CONSINITLP ((*consinitlp)); /**< initialize LP with relaxations of "initial" constraints */
167 SCIP_DECL_CONSSEPASOL ((*conssepasol)); /**< separate cutting planes for arbitrary primal solution */
169 SCIP_DECL_CONSENFORELAX ((*consenforelax)); /**< enforcing constraints for relaxation solutions */
186 SCIP_DECL_CONSGETDIVEBDCHGS((*consgetdivebdchgs)); /**< constraint handler diving solution enforcement method */
187 SCIP_DECL_CONSGETPERMSYMGRAPH((*consgetpermsymgraph)); /**< constraint get permutation symmetry detection graph method */
188 SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH((*consgetsignedpermsymgraph)); /**< constraint get signed permutation symmetry detection graph method */
194 SCIP_CONS** initconss; /**< array with active constraints that must enter the LP with their initial representation */
195 SCIP_CONS** sepaconss; /**< array with active constraints that must be separated during LP processing */
196 SCIP_CONS** enfoconss; /**< array with active constraints that must be enforced during node processing */
197 SCIP_CONS** checkconss; /**< array with active constraints that must be checked for feasibility */
198 SCIP_CONS** propconss; /**< array with active constraints that must be propagated during node processing */
199 SCIP_CONS** storedpropconss; /**< array to store constraints that were marked for propagation before
202 SCIP_CONS** updateconss; /**< array with constraints that changed and have to be update in the handler */
203 SCIP_CLOCK* setuptime; /**< time spend for setting up this constraint handler for the next stages */
208 SCIP_CLOCK* enforelaxtime; /**< time used for relaxation enforcement of this constraint handler */
210 SCIP_CLOCK* sbproptime; /**< time used for propagation of this constraint handler during strong branching */
215 SCIP_Longint lastenforelaxrelaxcount; /**< last relax number, where the relax enforcement was called */
219 int sepafreq; /**< frequency for separating cuts; zero means to separate only in the root node */
220 int propfreq; /**< frequency for propagating domains; zero means only preprocessing propagation */
221 int eagerfreq; /**< frequency for using all instead of only the useful constraints in separation,
223 int maxprerounds; /**< maximal number of presolving rounds the constraint handler participates in (-1: no limit) */
228 int startnactiveconss; /**< number of active constraints existing when problem solving started */
231 int ninitconsskept; /**< number of active constraints that must enter the LP, but were not initialized at
236 int nusefulsepaconss; /**< number of non-obsolete active constraints that should be separated */
238 int nenfoconss; /**< number of active constraints that must be enforced during node processing */
244 int npropconss; /**< number of active constraints that may be propagated during node processing */
245 int nmarkedpropconss; /**< number of active constraints which are marked to be propagated in the next round */
246 int nusefulpropconss; /**< number of non-obsolete active constraints that should be propagated */
248 int storednmarkedpropconss;/**< number of marked propagation constraints that are stored away */
252 int lastnusefulpropconss;/**< number of already propagated useful constraints on current domains */
253 int lastnusefulsepaconss;/**< number of already separated useful constraints on current solution */
254 int lastnusefulenfoconss;/**< number of already enforced useful constraints on current solution */
257 int lastnchgvartypes; /**< number of variable type changes before the last call to the presolver */
258 int lastnchgbds; /**< number of variable bounds tightened before the last call to the presolver */
262 int lastnupgdconss; /**< number of upgraded constraints before the last call to the presolver */
264 int lastnchgsides; /**< number of changed left or right hand sides before the last call to the presolver */
275 int npresolcalls; /**< number of times the constraint handler was called in presolving and tried to find reductions */
276 int delayupdatecount; /**< must the updates of the constraint arrays be delayed until processUpdates()? */
277 SCIP_Bool delaysepa; /**< should separation method be delayed, if other separators found cuts? */
278 SCIP_Bool delayprop; /**< should propagation method be delayed, if other propagators found reductions? */
279 SCIP_Bool needscons; /**< should the constraint handler be skipped, if no constraints are available? */
286 SCIP_PROPTIMING proptiming; /**< positions in the node solving loop where propagation method of constraint handlers should be executed */
287 SCIP_PRESOLTIMING presoltiming; /**< timing mask of the constraint handler's presolving method */
common defines and data types used in all packages of SCIP
Definition: struct_clock.h:65
Definition: struct_cons.h:116
Definition: struct_cons.h:47
Definition: struct_cons.h:127
SCIP_DECL_CONSSEPASOL((*conssepasol))
SCIP_DECL_CONSENFORELAX((*consenforelax))
SCIP_DECL_CONSPROP((*consprop))
SCIP_DECL_CONSACTIVE((*consactive))
SCIP_DECL_CONSGETNVARS((*consgetnvars))
SCIP_DECL_CONSPRESOL((*conspresol))
SCIP_DECL_CONSDELETE((*consdelete))
SCIP_DECL_CONSPRINT((*consprint))
SCIP_DECL_CONSEXITPRE((*consexitpre))
SCIP_DECL_CONSCOPY((*conscopy))
SCIP_DECL_CONSRESPROP((*consresprop))
SCIP_DECL_CONSENFOPS((*consenfops))
SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy))
SCIP_DECL_CONSEXIT((*consexit))
SCIP_DECL_CONSGETVARS((*consgetvars))
SCIP_DECL_CONSDEACTIVE((*consdeactive))
SCIP_DECL_CONSINIT((*consinit))
SCIP_DECL_CONSEXITSOL((*consexitsol))
SCIP_DECL_CONSTRANS((*constrans))
SCIP_DECL_CONSENFOLP((*consenfolp))
SCIP_Longint lastenforelaxrelaxcount
Definition: struct_cons.h:215
SCIP_DECL_CONSSEPALP((*conssepalp))
SCIP_DECL_CONSCHECK((*conscheck))
SCIP_DECL_CONSDELVARS((*consdelvars))
SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH((*consgetsignedpermsymgraph))
SCIP_DECL_CONSGETPERMSYMGRAPH((*consgetpermsymgraph))
SCIP_DECL_CONSGETDIVEBDCHGS((*consgetdivebdchgs))
SCIP_DECL_CONSPARSE((*consparse))
SCIP_DECL_CONSINITSOL((*consinitsol))
SCIP_DECL_CONSINITPRE((*consinitpre))
SCIP_Longint lastenforelaxdomchgcount
Definition: struct_cons.h:145
SCIP_DECL_CONSENABLE((*consenable))
SCIP_DECL_CONSDISABLE((*consdisable))
SCIP_DECL_CONSINITLP((*consinitlp))
SCIP_DECL_CONSFREE((*consfree))
SCIP_DECL_CONSLOCK((*conslock))
Definition: struct_cons.h:292
Definition: struct_scip.h:70
type definitions for clocks and timing issues
type definitions for constraints and constraint handlers