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