Scippy

SCIP

Solving Constraint Integer Programs

type_benderscut.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 type_benderscut.h
17  * @ingroup TYPEDEFINITIONS
18  * @brief type definitions for Benders' decomposition cut
19  * @author Stephen J. Maher
20  *
21  * This file defines the interface for Benders' decomposition cut implemented in C.
22  *
23  */
24 
25 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
26 
27 #ifndef __SCIP_TYPE_BENDERSCUT_H__
28 #define __SCIP_TYPE_BENDERSCUT_H__
29 
30 #include "scip/def.h"
31 #include "scip/type_scip.h"
32 #include "scip/type_result.h"
33 #include "scip/type_timing.h"
34 
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38 
39 typedef struct SCIP_Benderscut SCIP_BENDERSCUT; /**< Benders' decomposition cut */
40 typedef struct SCIP_BenderscutData SCIP_BENDERSCUTDATA; /**< locally defined Benders' decomposition cut data */
41 
42 
43 /** copy method for the Benders' decomposition cut plugins (called when SCIP copies plugins)
44  *
45  * input:
46  * - scip : SCIP main data structure
47  * - benders : the Benders' decomposition structure
48  * - benderscut : the Benders' decomposition cut structure
49  */
50 #define SCIP_DECL_BENDERSCUTCOPY(x) SCIP_RETCODE x (SCIP* scip, SCIP_BENDERS* benders, SCIP_BENDERSCUT* benderscut)
51 
52 /** destructor of the Benders' decomposition cut to free user data (called when SCIP is exiting)
53  *
54  * input:
55  * - scip : SCIP main data structure
56  * - benderscut : the Benders' decomposition cut structure
57  */
58 #define SCIP_DECL_BENDERSCUTFREE(x) SCIP_RETCODE x (SCIP* scip, SCIP_BENDERSCUT* benderscut)
59 
60 /** initialization method of the Benders' decomposition cut (called after problem was transformed)
61  *
62  * input:
63  * - scip : SCIP main data structure
64  * - benderscut : the Benders' decomposition cut structure
65  */
66 #define SCIP_DECL_BENDERSCUTINIT(x) SCIP_RETCODE x (SCIP* scip, SCIP_BENDERSCUT* benderscut)
67 
68 /** deinitialization method of the Benders' decomposition cut (called before transformed problem is freed)
69  *
70  * input:
71  * - scip : SCIP main data structure
72  * - benderscut : the Benders' decomposition cut structure
73  */
74 #define SCIP_DECL_BENDERSCUTEXIT(x) SCIP_RETCODE x (SCIP* scip, SCIP_BENDERSCUT* benderscut)
75 
76 /** solving process initialization method of the Benders' decomposition cut (called when branch and bound process is about to begin)
77  *
78  * This method is called when the presolving was finished and the branch and bound process is about to begin.
79  *
80  * input:
81  * - scip : SCIP main data structure
82  * - benderscut : the Benders' decomposition cut structure
83  */
84 #define SCIP_DECL_BENDERSCUTINITSOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_BENDERSCUT* benderscut)
85 
86 /** solving process deinitialization method of the Benders' decomposition cut (called before branch and bound process data is freed)
87  *
88  * This method is called before the branch and bound process is freed.
89  * The Benders' decomposition cut should use this call to clean up its branch and bound data.
90  *
91  * input:
92  * - scip : SCIP main data structure
93  * - benderscut : the Benders' decomposition cut structure
94  */
95 #define SCIP_DECL_BENDERSCUTEXITSOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_BENDERSCUT* benderscut)
96 
97 /** execution method of the Benders' decomposition cut technique
98  *
99  * input:
100  * - scip : SCIP main data structure
101  * - benders : the Benders' decomposition structure
102  * - benderscut : the Benders' cut structure
103  * - sol : the solution that was used for setting up the subproblems
104  * - probnumber : the number of the subproblem from which the cut is generated
105  * - type : the enforcement type that called the subproblem solve
106  * - result : pointer to store the result of the cut algorithm
107  *
108  * possible return values for *result (if more than one applies, the first in the list should be used):
109  * - SCIP_DIDNOTRUN : if the Benders' cut was not run.
110  * - SCIP_DIDNOTFIND : if the Benders' cut was run, but there was an error in generating the cut.
111  * - SCIP_FEASIBLE : if the Benders' decomposition cut algorithm has not generated a constraint or cut.
112  * - SCIP_CONSADDED : an additional constraint for the Benders' decomposition cut was generated
113  * - SCIP_SEPARATED : a cutting plane representing the Benders' decomposition cut was generated
114  */
115 #define SCIP_DECL_BENDERSCUTEXEC(x) SCIP_RETCODE x (SCIP* scip, SCIP_BENDERS* benders, SCIP_BENDERSCUT* benderscut,\
116  SCIP_SOL* sol, int probnumber, SCIP_BENDERSENFOTYPE type, SCIP_RESULT* result)
117 
118 #ifdef __cplusplus
119 }
120 #endif
121 
122 #endif
timing definitions for SCIP
struct SCIP_BenderscutData SCIP_BENDERSCUTDATA
type definitions for SCIP&#39;s main datastructure
result codes for SCIP callback methods
common defines and data types used in all packages of SCIP