Scippy

SCIP

Solving Constraint Integer Programs

struct_sepa.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-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 struct_sepa.h
17  * @ingroup INTERNALAPI
18  * @brief datastructures 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_STRUCT_SEPA_H__
25 #define __SCIP_STRUCT_SEPA_H__
26 
27 
28 #include "scip/def.h"
29 #include "scip/type_clock.h"
30 #include "scip/type_sepa.h"
31 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35 
36 /** separators data */
37 struct SCIP_Sepa
38 {
39  SCIP_Longint lastsepanode; /**< last (total) node where this separator was called */
40  SCIP_Longint ncalls; /**< number of times, this separator was called */
41  SCIP_Longint ncutoffs; /**< number of cutoffs found so far by this separator */
42  SCIP_Longint ncutsfound; /**< number of cutting planes found so far by this separator */
43  SCIP_Longint ncutsapplied; /**< number of cutting planes applied to LP */
44  SCIP_Longint nconssfound; /**< number of additional constraints added by this separator */
45  SCIP_Longint ndomredsfound; /**< number of domain reductions found so far by this separator */
46  SCIP_Real maxbounddist; /**< maximal relative distance from current node's dual bound to primal bound compared
47  * to best node's dual bound for applying separation */
48  char* name; /**< name of separator */
49  char* desc; /**< description of separator */
50  SCIP_DECL_SEPACOPY ((*sepacopy)); /**< copy method of separator or NULL if you don't want to copy your plugin into sub-SCIPs */
51  SCIP_DECL_SEPAFREE ((*sepafree)); /**< destructor of separator */
52  SCIP_DECL_SEPAINIT ((*sepainit)); /**< initialize separator */
53  SCIP_DECL_SEPAEXIT ((*sepaexit)); /**< deinitialize separator */
54  SCIP_DECL_SEPAINITSOL ((*sepainitsol)); /**< solving process initialization method of separator */
55  SCIP_DECL_SEPAEXITSOL ((*sepaexitsol)); /**< solving process deinitialization method of separator */
56  SCIP_DECL_SEPAEXECLP ((*sepaexeclp)); /**< LP solution separation method of separator */
57  SCIP_DECL_SEPAEXECSOL ((*sepaexecsol)); /**< arbitrary primal solution separation method of separator */
58  SCIP_SEPADATA* sepadata; /**< separators local data */
59  SCIP_CLOCK* setuptime; /**< time spend for setting up this separator for the next stages */
60  SCIP_CLOCK* sepaclock; /**< separation time */
61  int priority; /**< priority of the separator */
62  int freq; /**< frequency for calling separator */
63  int ncallsatnode; /**< number of times, this separator was called at the current node */
64  int ncutsfoundatnode; /**< number of cutting planes found at the current node */
65  int expbackoff; /**< base for exponential increase of frequency at which the separator is called */
66  SCIP_Bool usessubscip; /**< does the separator use a secondary SCIP instance? */
67  SCIP_Bool delay; /**< should separator be delayed, if other separators found cuts? */
68  SCIP_Bool lpwasdelayed; /**< was the LP separation delayed at the last call? */
69  SCIP_Bool solwasdelayed; /**< was the solution separation delayed at the last call? */
70  SCIP_Bool initialized; /**< is separator initialized? */
71 };
72 
73 #ifdef __cplusplus
74 }
75 #endif
76 
77 #endif
SCIP_Bool solwasdelayed
Definition: struct_sepa.h:69
SCIP_Bool usessubscip
Definition: struct_sepa.h:66
SCIP_DECL_SEPAEXECSOL((*sepaexecsol))
SCIP_SEPADATA * sepadata
Definition: struct_sepa.h:58
SCIP_CLOCK * setuptime
Definition: struct_sepa.h:59
SCIP_CLOCK * sepaclock
Definition: struct_sepa.h:60
SCIP_DECL_SEPAEXITSOL((*sepaexitsol))
char * name
Definition: struct_sepa.h:48
SCIP_Real maxbounddist
Definition: struct_sepa.h:46
SCIP_Bool initialized
Definition: struct_sepa.h:70
SCIP_Longint ncutsfound
Definition: struct_sepa.h:42
SCIP_DECL_SEPAEXECLP((*sepaexeclp))
int ncallsatnode
Definition: struct_sepa.h:63
SCIP_DECL_SEPAEXIT((*sepaexit))
SCIP_Longint nconssfound
Definition: struct_sepa.h:44
SCIP_DECL_SEPAFREE((*sepafree))
SCIP_Longint lastsepanode
Definition: struct_sepa.h:39
SCIP_Bool lpwasdelayed
Definition: struct_sepa.h:68
SCIP_Longint ncalls
Definition: struct_sepa.h:40
SCIP_DECL_SEPAINITSOL((*sepainitsol))
int ncutsfoundatnode
Definition: struct_sepa.h:64
#define SCIP_Bool
Definition: def.h:70
SCIP_Longint ncutoffs
Definition: struct_sepa.h:41
type definitions for clocks and timing issues
SCIP_Bool delay
Definition: struct_sepa.h:67
SCIP_DECL_SEPACOPY((*sepacopy))
type definitions for separators
SCIP_Longint ncutsapplied
Definition: struct_sepa.h:43
SCIP_Longint ndomredsfound
Definition: struct_sepa.h:45
#define SCIP_Real
Definition: def.h:163
#define SCIP_Longint
Definition: def.h:148
int priority
Definition: struct_sepa.h:61
common defines and data types used in all packages of SCIP
SCIP_DECL_SEPAINIT((*sepainit))
int expbackoff
Definition: struct_sepa.h:65
struct SCIP_SepaData SCIP_SEPADATA
Definition: type_sepa.h:43
char * desc
Definition: struct_sepa.h:49