Scippy

SCIP

Solving Constraint Integer Programs

struct_nlhdlr.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of the program and library */
4 /* SCIP --- Solving Constraint Integer Programs */
5 /* */
6 /* Copyright (C) 2002-2022 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 struct_nlhdlr.h
17  * @ingroup INTERNALAPI
18  * @brief structure definitions related to nonlinear handlers of nonlinear constraints
19  * @author Ksenia Bestuzheva
20  * @author Benjamin Mueller
21  * @author Felipe Serrano
22  * @author Stefan Vigerske
23  */
24 
25 #ifndef SCIP_STRUCT_NLHLDR_H_
26 #define SCIP_STRUCT_NLHLDR_H_
27 
28 #include "scip/def.h"
29 #include "scip/type_scip.h"
30 #include "scip/type_nlhdlr.h"
31 #include "scip/type_clock.h"
32 
33 /** generic data and callback methods of a nonlinear handler */
35 {
36  char* name; /**< nonlinear handler name */
37  char* desc; /**< nonlinear handler description (can be NULL) */
38  SCIP_NLHDLRDATA* data; /**< data of handler */
39 
40  int detectpriority; /**< detection priority of nonlinear handler */
41  int enfopriority; /**< enforcement priority of nonlinear handler */
42  SCIP_Bool enabled; /**< whether the nonlinear handler should be used */
43 
44  /* callbacks */
45  SCIP_DECL_NLHDLRFREEHDLRDATA((*freehdlrdata)); /**< callback to free data of handler (can be NULL) */
46  SCIP_DECL_NLHDLRFREEEXPRDATA((*freeexprdata)); /**< callback to free expression specific data (can be NULL) */
47  SCIP_DECL_NLHDLRCOPYHDLR((*copyhdlr)); /**< callback to copy nonlinear handler (can be NULL) */
48  SCIP_DECL_NLHDLRINIT((*init)); /**< initialization callback (can be NULL) */
49  SCIP_DECL_NLHDLREXIT((*exit)); /**< deinitialization callback (can be NULL) */
50  SCIP_DECL_NLHDLRDETECT((*detect)); /**< structure detection callback */
51  SCIP_DECL_NLHDLREVALAUX((*evalaux)); /**< auxiliary evaluation callback */
52  SCIP_DECL_NLHDLRINITSEPA((*initsepa)); /**< separation initialization callback (can be NULL) */
53  SCIP_DECL_NLHDLRENFO((*enfo)); /**< enforcement callback (can be NULL) */
54  SCIP_DECL_NLHDLRESTIMATE((*estimate)); /**< estimator callback (can be NULL) */
55  SCIP_DECL_NLHDLREXITSEPA((*exitsepa)); /**< separation deinitialization callback (can be NULL) */
56  SCIP_DECL_NLHDLRINTEVAL((*inteval)); /**< interval evaluation callback (can be NULL) */
57  SCIP_DECL_NLHDLRREVERSEPROP((*reverseprop)); /**< reverse propagation callback (can be NULL) */
58 
59  /* statistics */
60  SCIP_Longint nenfocalls; /**< number of times, the enforcement or estimation callback was called */
61  SCIP_Longint nintevalcalls; /**< number of times, the interval evaluation callback was called */
62  SCIP_Longint npropcalls; /**< number of times, the propagation callback was called */
63  SCIP_Longint nseparated; /**< number of times, the nonlinear handler enforced by separation */
64  SCIP_Longint ncutoffs; /**< number of cutoffs found so far by this nonlinear handler */
65  SCIP_Longint ndomreds; /**< number of domain reductions found so far by this nonlinear handler */
66  SCIP_Longint ndetections; /**< number of detect calls in which structure was detected (success returned by detect call) (over all runs) */
67  SCIP_Longint ndetectionslast; /**< number of detect calls in which structure was detected (success returned by detect call) (in last round) */
68  SCIP_Longint nbranchscores; /**< number of times, branching scores were added by this nonlinear handler */
69 
70  SCIP_CLOCK* detecttime; /**< time used for detection */
71  SCIP_CLOCK* enfotime; /**< time used for enforcement or estimation */
72  SCIP_CLOCK* proptime; /**< time used for reverse propagation */
73  SCIP_CLOCK* intevaltime; /**< time used for interval evaluation */
74 };
75 
76 #endif /* SCIP_STRUCT_NLHLDR_H_ */
SCIP_Longint nbranchscores
Definition: struct_nlhdlr.h:68
SCIP_Longint ndetectionslast
Definition: struct_nlhdlr.h:67
SCIP_DECL_NLHDLREVALAUX((*evalaux))
SCIP_Longint ndomreds
Definition: struct_nlhdlr.h:65
SCIP_Longint nseparated
Definition: struct_nlhdlr.h:63
SCIP_Longint nintevalcalls
Definition: struct_nlhdlr.h:61
SCIP_Longint npropcalls
Definition: struct_nlhdlr.h:62
SCIP_Longint ndetections
Definition: struct_nlhdlr.h:66
SCIP_CLOCK * detecttime
Definition: struct_nlhdlr.h:70
type definitions related to nonlinear handlers of nonlinear constraints
type definitions for SCIP&#39;s main datastructure
SCIP_DECL_NLHDLRFREEHDLRDATA((*freehdlrdata))
SCIP_DECL_NLHDLREXIT((*exit))
SCIP_CLOCK * enfotime
Definition: struct_nlhdlr.h:71
SCIP_Longint nenfocalls
Definition: struct_nlhdlr.h:60
SCIP_Bool enabled
Definition: struct_nlhdlr.h:42
SCIP_NLHDLRDATA * data
Definition: struct_nlhdlr.h:38
SCIP_DECL_NLHDLRESTIMATE((*estimate))
#define SCIP_Bool
Definition: def.h:84
SCIP_DECL_NLHDLRDETECT((*detect))
SCIP_DECL_NLHDLRINTEVAL((*inteval))
type definitions for clocks and timing issues
SCIP_DECL_NLHDLRREVERSEPROP((*reverseprop))
SCIP_DECL_NLHDLRENFO((*enfo))
SCIP_DECL_NLHDLRINITSEPA((*initsepa))
SCIP_DECL_NLHDLRCOPYHDLR((*copyhdlr))
SCIP_DECL_NLHDLRFREEEXPRDATA((*freeexprdata))
SCIP_DECL_NLHDLREXITSEPA((*exitsepa))
#define SCIP_Longint
Definition: def.h:162
SCIP_DECL_NLHDLRINIT((*init))
SCIP_CLOCK * intevaltime
Definition: struct_nlhdlr.h:73
struct SCIP_NlhdlrData SCIP_NLHDLRDATA
Definition: type_nlhdlr.h:403
int detectpriority
Definition: struct_nlhdlr.h:40
SCIP_CLOCK * proptime
Definition: struct_nlhdlr.h:72
common defines and data types used in all packages of SCIP
SCIP_Longint ncutoffs
Definition: struct_nlhdlr.h:64