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   pub_benderscut.h
17  * @ingroup PUBLICCOREAPI
18  * @brief  public methods for Benders' decomposition cuts
19  * @author Stephen J. Maher
20  */
21 
22 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
23 
24 #ifndef __SCIP_PUB_BENDERSCUT_H__
25 #define __SCIP_PUB_BENDERSCUT_H__
26 
27 #include "scip/def.h"
28 #include "scip/type_benderscut.h"
29 #include "scip/type_cons.h"
30 #include "scip/type_lp.h"
31 #include "scip/type_misc.h"
32 #include "scip/type_retcode.h"
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
38 /**@addtogroup PublicBenderscutsMethods
39  *
40  * @{
41  */
42 
43 /** compares two Benders' decomposition cuts w. r. to their priority */
44 SCIP_EXPORT
45 SCIP_DECL_SORTPTRCOMP(SCIPbenderscutComp);
46 
47 /** comparison method for sorting Benders' decomposition cuts w.r.t. to their name */
48 SCIP_EXPORT
49 SCIP_DECL_SORTPTRCOMP(SCIPbenderscutCompName);
50 
51 /** gets user data of the Benders' decomposition cut */
52 SCIP_EXPORT
53 SCIP_BENDERSCUTDATA* SCIPbenderscutGetData(
54    SCIP_BENDERSCUT*      benderscut          /**< Benders' decomposition cut */
55    );
56 
57 /** sets user data of the Benders' decomposition cut; user has to free old data in advance! */
58 SCIP_EXPORT
59 void SCIPbenderscutSetData(
60    SCIP_BENDERSCUT*      benderscut,         /**< Benders' decomposition cut */
61    SCIP_BENDERSCUTDATA*  benderscutdata      /**< new Benders' decomposition cut user data */
62    );
63 
64 /** gets name of the Benders' decomposition cut */
65 SCIP_EXPORT
66 const char* SCIPbenderscutGetName(
67    SCIP_BENDERSCUT*      benderscut          /**< Benders' decomposition cut */
68    );
69 
70 /** gets description of the Benders' decomposition cut */
71 SCIP_EXPORT
72 const char* SCIPbenderscutGetDesc(
73    SCIP_BENDERSCUT*      benderscut          /**< Benders' decomposition cut */
74    );
75 
76 /** gets priority of the Benders' decomposition cut */
77 SCIP_EXPORT
78 int SCIPbenderscutGetPriority(
79    SCIP_BENDERSCUT*      benderscut          /**< Benders' decomposition cut */
80    );
81 
82 /** gets the number of times, the Benders' decomposition cut was called and tried to find a violated cut */
83 SCIP_EXPORT
84 SCIP_Longint SCIPbenderscutGetNCalls(
85    SCIP_BENDERSCUT*      benderscut          /**< Benders' decomposition cut */
86    );
87 
88 /** gets the number of the cuts found by this Benders' decomposition cut */
89 SCIP_EXPORT
90 SCIP_Longint SCIPbenderscutGetNFound(
91    SCIP_BENDERSCUT*      benderscut          /**< Benders' decomposition cut */
92    );
93 
94 /** is the Benders' decomposition cut initialized? */
95 SCIP_EXPORT
96 SCIP_Bool SCIPbenderscutIsInitialized(
97    SCIP_BENDERSCUT*      benderscut          /**< Benders' decomposition cut */
98    );
99 
100 /** gets time in seconds used in this Benders' decomposition cut for setting up for next stages */
101 SCIP_EXPORT
102 SCIP_Real SCIPbenderscutGetSetupTime(
103    SCIP_BENDERSCUT*      benderscut          /**< Benders' decomposition cut */
104    );
105 
106 /** gets time in seconds used in this Benders' decomposition cut */
107 SCIP_EXPORT
108 SCIP_Real SCIPbenderscutGetTime(
109    SCIP_BENDERSCUT*      benderscut          /**< Benders' decomposition cut */
110    );
111 
112 /** returns whether the Benders' cut uses the LP information */
113 SCIP_EXPORT
114 SCIP_Bool SCIPbenderscutIsLPCut(
115    SCIP_BENDERSCUT*      benderscut          /**< Benders' decomposition cut */
116    );
117 
118 /** sets the enabled flag of the Benders' decomposition cut method */
119 SCIP_EXPORT
120 void SCIPbenderscutSetEnabled(
121    SCIP_BENDERSCUT*      benderscut,         /**< Benders' decomposition cut */
122    SCIP_Bool             enabled             /**< flag to indicate whether the Benders' decomposition cut is enabled */
123    );
124 
125 /** @} */
126 
127 #ifdef __cplusplus
128 }
129 #endif
130 
131 #endif
132