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