Scippy

SCIP

Solving Constraint Integer Programs

pub_benders.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-2024 Zuse Institute Berlin (ZIB) */
7 /* */
8 /* Licensed under the Apache License, Version 2.0 (the "License"); */
9 /* you may not use this file except in compliance with the License. */
10 /* You may obtain a copy of the License at */
11 /* */
12 /* http://www.apache.org/licenses/LICENSE-2.0 */
13 /* */
14 /* Unless required by applicable law or agreed to in writing, software */
15 /* distributed under the License is distributed on an "AS IS" BASIS, */
16 /* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
17 /* See the License for the specific language governing permissions and */
18 /* limitations under the License. */
19 /* */
20 /* You should have received a copy of the Apache-2.0 license */
21 /* along with SCIP; see the file LICENSE. If not visit scipopt.org. */
22 /* */
23 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
24 
25 /**@file pub_benders.h
26  * @ingroup PUBLICCOREAPI
27  * @brief public methods for Benders' decomposition
28  * @author Stephen J. Maher
29  */
30 
31 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
32 
33 #ifndef __SCIP_PUB_BENDERS_H__
34 #define __SCIP_PUB_BENDERS_H__
35 
36 #include "scip/def.h"
37 #include "scip/type_benders.h"
38 #include "scip/type_benderscut.h"
39 #include "scip/type_misc.h"
40 #include "scip/type_retcode.h"
41 #include "scip/type_scip.h"
42 #include "scip/type_var.h"
43 #include "scip/type_stat.h"
44 #include "scip/type_nlpi.h"
45 
46 #ifdef __cplusplus
47 extern "C" {
48 #endif
49 
50 /**@addtogroup PublicBendersMethods
51  *
52  * @{
53  */
54 
55 /** compares two benderss w. r. to their priority */
56 SCIP_EXPORT
57 SCIP_DECL_SORTPTRCOMP(SCIPbendersComp);
58 
59 /** comparison method for sorting benderss w.r.t. to their name */
60 SCIP_EXPORT
61 SCIP_DECL_SORTPTRCOMP(SCIPbendersCompName);
62 
63 /** gets user data of Benders' decomposition */
64 SCIP_EXPORT
66  SCIP_BENDERS* benders /**< Benders' decomposition */
67  );
68 
69 /** sets user data of Benders' decomposition; user has to free old data in advance! */
70 SCIP_EXPORT
72  SCIP_BENDERS* benders, /**< Benders' decomposition */
73  SCIP_BENDERSDATA* bendersdata /**< new Benders' decomposition user data */
74  );
75 
76 /** gets name of Benders' decomposition */
77 SCIP_EXPORT
78 const char* SCIPbendersGetName(
79  SCIP_BENDERS* benders /**< Benders' decomposition */
80  );
81 
82 /** gets description of Benders' decomposition */
83 SCIP_EXPORT
84 const char* SCIPbendersGetDesc(
85  SCIP_BENDERS* benders /**< Benders' decomposition */
86  );
87 
88 /** gets priority of Benders' decomposition */
89 SCIP_EXPORT
91  SCIP_BENDERS* benders /**< Benders' decomposition */
92  );
93 
94 /** gets the number of subproblems for the Benders' decomposition */
95 SCIP_EXPORT
97  SCIP_BENDERS* benders /**< the Benders' decomposition data structure */
98  );
99 
100 /** returns the SCIP instance for a given subproblem */
101 SCIP_EXPORT
103  SCIP_BENDERS* benders, /**< the Benders' decomposition data structure */
104  int probnumber /**< the subproblem number */
105  );
106 
107 /** gets the number of times, the Bender' decomposition was called and tried to find a violated second stage constraint */
108 SCIP_EXPORT
110  SCIP_BENDERS* benders /**< Benders' decomposition */
111  );
112 
113 /** gets the number of optimality cuts found by the collection of Benders' decomposition subproblems */
114 SCIP_EXPORT
116  SCIP_BENDERS* benders /**< Benders' decomposition */
117  );
118 
119 /** gets the number of cuts found from the strengthening round */
120 SCIP_EXPORT
122  SCIP_BENDERS* benders /**< Benders' decomposition */
123  );
124 
125 /** gets the number of calls to the strengthening round */
126 SCIP_EXPORT
128  SCIP_BENDERS* benders /**< Benders' decomposition */
129  );
130 
131 /** gets the number of calls to the strengthening round that fail */
132 SCIP_EXPORT
134  SCIP_BENDERS* benders /**< Benders' decomposition */
135  );
136 
137 /** gets time in seconds used in this Benders' decomposition for setting up for next stages */
138 SCIP_EXPORT
140  SCIP_BENDERS* benders /**< Benders' decomposition */
141  );
142 
143 /** gets execution time in seconds used in this Benders' decomposition */
144 SCIP_EXPORT
146  SCIP_BENDERS* benders /**< Benders' decomposition */
147  );
148 
149 /** Is Benders' decomposition initialized? */
150 SCIP_EXPORT
152  SCIP_BENDERS* benders /**< Benders' decomposition */
153  );
154 
155 /** returns whether the given Benders' decomposition is in use in the current problem */
156 SCIP_EXPORT
158  SCIP_BENDERS* benders /**< the Benders' decomposition structure */
159  );
160 
161 /** Returns whether only the convex relaxations will be checked in this solve loop
162  * when Benders' is used in the LNS heuristics, only the convex relaxations of the master/subproblems are checked,
163  * i.e. no integer cuts are generated. In this case, then Benders' decomposition is performed under the assumption
164  * that all subproblems are convex relaxations.
165  */
166 SCIP_EXPORT
168  SCIP_BENDERS* benders, /**< Benders' decomposition */
169  SCIP_Bool subscipsoff /**< flag indicating whether plugins using sub-SCIPs are deactivated */
170  );
171 
172 /** returns NLP solver parameters used for solving NLP subproblems */
173 SCIP_EXPORT
175  SCIP_BENDERS* benders /**< Benders' decomposition */
176 );
177 
178 /** Are Benders' cuts generated from the LP solutions? */
179 SCIP_EXPORT
181  SCIP_BENDERS* benders /**< Benders' decomposition */
182  );
183 
184 /** Are Benders' cuts generated from the pseudo solutions? */
185 SCIP_EXPORT
187  SCIP_BENDERS* benders /**< Benders' decomposition */
188  );
189 
190 /** Are Benders' cuts generated from the relaxation solutions? */
191 SCIP_EXPORT
193  SCIP_BENDERS* benders /**< Benders' decomposition */
194  );
195 
196 /** Should this Benders' use the auxiliary variables from the highest priority Benders'? */
197 SCIP_EXPORT
199  SCIP_BENDERS* benders /**< Benders' decomposition */
200  );
201 
202 /** sets the subproblem setup flag */
203 SCIP_EXPORT
205  SCIP_BENDERS* benders, /**< Benders' decomposition */
206  int probnumber, /**< the subproblem number */
207  SCIP_Bool issetup /**< flag to indicate whether the subproblem has been setup */
208  );
209 
210 /** returns the subproblem setup flag */
211 SCIP_EXPORT
213  SCIP_BENDERS* benders, /**< Benders' decomposition */
214  int probnumber /**< the subproblem number */
215  );
216 
217 /** returns the auxiliary variable for the given subproblem */
218 SCIP_EXPORT
220  SCIP_BENDERS* benders, /**< Benders' decomposition */
221  int probnumber /**< the subproblem number */
222  );
223 
224 /** returns all auxiliary variables */
225 SCIP_EXPORT
227  SCIP_BENDERS* benders /**< Benders' decomposition */
228  );
229 
230 /** stores the objective function value of the subproblem for use in cut generation */
231 SCIP_EXPORT
233  SCIP_BENDERS* benders, /**< Benders' decomposition */
234  int probnumber, /**< the subproblem number */
235  SCIP_Real objval /**< the objective function value for the subproblem */
236  );
237 
238 /** returns the objective function value of the subproblem for use in cut generation */
239 SCIP_EXPORT
241  SCIP_BENDERS* benders, /**< Benders' decomposition */
242  int probnumber /**< the subproblem number */
243  );
244 
245 /** returns the number of cuts that have been added for storage */
246 SCIP_EXPORT
248  SCIP_BENDERS* benders /**< Benders' decomposition cut */
249  );
250 
251 /** returns the data for the cuts that have been added by the Benders' cut plugin */
252 SCIP_EXPORT
254  SCIP_BENDERS* benders, /**< Benders' decomposition cut */
255  int cutidx, /**< the index for the cut data that is requested */
256  SCIP_VAR*** vars, /**< the variables that have non-zero coefficients in the cut */
257  SCIP_Real** vals, /**< the coefficients of the variables in the cut */
258  SCIP_Real* lhs, /**< the left hand side of the cut */
259  SCIP_Real* rhs, /**< the right hand side of the cut */
260  int* nvars /**< the number of variables with non-zero coefficients in the cut */
261  );
262 
263 /** returns the original problem data for the cuts that have been added by the Benders' cut plugin. The stored
264  * variables and values will populate the input vars and vals arrays. Thus, memory must be allocated for the vars and
265  * vals arrays
266  */
267 SCIP_EXPORT
269  SCIP_BENDERS* benders, /**< Benders' decomposition cut */
270  int cutidx, /**< the index for the cut data that is requested */
271  SCIP_VAR*** vars, /**< the variables that have non-zero coefficients in the cut */
272  SCIP_Real** vals, /**< the coefficients of the variables in the cut */
273  SCIP_Real* lhs, /**< the left hand side of the cut */
274  SCIP_Real* rhs, /**< the right hand side of the cut */
275  int* nvars, /**< the number of variables with non-zero coefficients in the cut */
276  int varssize /**< the available slots in the array */
277  );
278 
279 /*
280  * Public functions associated with Benders' cuts
281  */
282 
283 /** returns the Benders' cut of the given name, or NULL if not existing */
284 SCIP_EXPORT
286  SCIP_BENDERS* benders, /**< Benders' decomposition */
287  const char* name /**< name of Benderscut' decomposition */
288  );
289 
290 
291 /** returns the array of currently available Benders' cuts; active Benders' decomposition are in the first slots of
292  * the array
293  */
294 SCIP_EXPORT
296  SCIP_BENDERS* benders /**< Benders' decomposition */
297  );
298 
299 
300 /** returns the number of currently available Benders' cuts */
301 SCIP_EXPORT
303  SCIP_BENDERS* benders /**< Benders' decomposition */
304  );
305 
306 /** sets the priority of a Benders' decomposition */
307 SCIP_EXPORT
309  SCIP_BENDERS* benders, /**< Benders' decomposition */
310  SCIP_BENDERSCUT* benderscut, /**< Benders' cut */
311  int priority /**< new priority of the Benders' decomposition */
312  );
313 
314 /** returns whether the solution has non-zero slack variables */
315 SCIP_EXPORT
317  SCIP_BENDERS* benders, /**< Benders' decomposition */
318  SCIP_Bool* activeslack /**< flag to indicate whether a slack variable is active */
319  );
320 
321 /** sets the subproblem type
322  *
323  * The subproblem types are:
324  * - Convex constraints with continuous variables
325  * - Convex constraints with discrete variables
326  * - Non-convex constraints with continuous variables
327  * - Non-convex constraints with discrete variables
328  */
329 SCIP_EXPORT
331  SCIP_BENDERS* benders, /**< Benders' decomposition */
332  int probnumber, /**< the subproblem number */
333  SCIP_BENDERSSUBTYPE subprobtype /**< the subproblem type */
334  );
335 
336 /** returns the type of the subproblem
337  *
338  * This type is used to determine whether the duals of the problem can be used to generate cuts
339  */
340 SCIP_EXPORT
342  SCIP_BENDERS* benders, /**< Benders' decomposition */
343  int probnumber /**< the subproblem number */
344  );
345 
346 /** sets the flag indicating whether a subproblem is convex
347  *
348  * It is possible that this can change during the solving process. One example is when the three-phase method is
349  * employed, where the first phase solves the convex relaxation of both the master and subproblems, the second phase
350  * reintroduces the integrality constraints to the master problem and the third phase then reintroduces integrality
351  * constraints to the subproblems.
352  */
353 SCIP_EXPORT
355  SCIP_BENDERS* benders, /**< Benders' decomposition */
356  int probnumber, /**< the subproblem number */
357  SCIP_Bool isconvex /**< flag to indicate whether the subproblem is convex */
358  );
359 
360 /** returns whether the subproblem is convex
361  *
362  * This means that the dual solution can be used to generate cuts.
363  */
364 SCIP_EXPORT
366  SCIP_BENDERS* benders, /**< Benders' decomposition */
367  int probnumber /**< the subproblem number */
368  );
369 
370 /** returns the number of subproblems that are convex */
371 SCIP_EXPORT
373  SCIP_BENDERS* benders /**< Benders' decomposition */
374  );
375 
376 /** sets the flag indicating whether a subproblem contains non-linear constraints */
377 SCIP_EXPORT
379  SCIP_BENDERS* benders, /**< Benders' decomposition */
380  int probnumber, /**< the subproblem number */
381  SCIP_Bool isnonlinear /**< flag to indicate whether the subproblem contains non-linear constraints */
382  );
383 
384 /** returns whether the subproblem contains non-linear constraints. */
385 SCIP_EXPORT
387  SCIP_BENDERS* benders, /**< Benders' decomposition */
388  int probnumber /**< the subproblem number */
389  );
390 
391 /** returns the number of subproblems that contain non-linear constraints */
392 SCIP_EXPORT
394  SCIP_BENDERS* benders /**< Benders' decomposition */
395  );
396 
397 /** sets the flag indicating whether the master problem contains non-linear constraints */
398 SCIP_EXPORT
400  SCIP_BENDERS* benders, /**< Benders' decomposition */
401  SCIP_Bool isnonlinear /**< flag to indicate whether the subproblem contains non-linear constraints */
402  );
403 
404 /** returns whether the master problem contains non-linear constraints. */
405 SCIP_EXPORT
407  SCIP_BENDERS* benders /**< Benders' decomposition */
408  );
409 
410 /** returns the flag indicating that Benders' decomposition is in a cut strengthening round */
411 SCIP_EXPORT
413  SCIP_BENDERS* benders /**< Benders' decomposition */
414  );
415 
416 /** solves the LP of the Benders' decomposition subproblem
417  *
418  * This requires that the subproblem is in probing mode.
419  */
420 SCIP_EXPORT
422  SCIP* scip, /**< the SCIP data structure */
423  SCIP_BENDERS* benders, /**< the Benders' decomposition data structure */
424  int probnumber, /**< the subproblem number */
425  SCIP_STATUS* solvestatus, /**< status of subproblem solve */
426  SCIP_Real* objective /**< optimal value of subproblem, if solved to optimality */
427  );
428 
429 /** solves the Benders' decomposition subproblem */
430 SCIP_EXPORT
432  SCIP* scip, /**< the SCIP data structure */
433  SCIP_BENDERS* benders, /**< the Benders' decomposition data structure */
434  int probnumber, /**< the subproblem number */
435  SCIP_STATUS* solvestatus, /**< status of subproblem solve */
436  SCIP_Bool solvecip /**< directly solve the CIP subproblem */
437  );
438 
439 /** returns the number of cuts that have been transferred from sub SCIPs to the master SCIP */
440 SCIP_EXPORT
442  SCIP_BENDERS* benders /**< the Benders' decomposition data structure */
443  );
444 
445 /** updates the lower bound for the subproblem. If the lower bound is not greater than the previously stored lowerbound,
446  * then no update occurs.
447  */
448 SCIP_EXPORT
450  SCIP_BENDERS* benders, /**< Benders' decomposition */
451  int probnumber, /**< the subproblem number */
452  SCIP_Real lowerbound /**< the lower bound */
453  );
454 
455 /** returns the stored lower bound for the given subproblem */
456 SCIP_EXPORT
458  SCIP_BENDERS* benders, /**< Benders' decomposition */
459  int probnumber /**< the subproblem number */
460  );
461 
462 /** sets the independent subproblem flag */
463 SCIP_EXPORT
465  SCIP_BENDERS* benders, /**< Benders' decomposition */
466  int probnumber, /**< the subproblem number */
467  SCIP_Bool isindep /**< flag to indicate whether the subproblem is independent */
468  );
469 
470 /** returns whether the subproblem is independent */
471 SCIP_EXPORT
473  SCIP_BENDERS* benders, /**< Benders' decomposition */
474  int probnumber /**< the subproblem number */
475  );
476 
477 /** returns whether the subproblem is enabled, i.e. the subproblem is still solved in the solving loop. */
478 SCIP_EXPORT
480  SCIP_BENDERS* benders, /**< Benders' decomposition */
481  int probnumber /**< the subproblem number */
482  );
483 
484 /** @} */
485 
486 #ifdef __cplusplus
487 }
488 #endif
489 
490 #endif
int SCIPbendersGetNBenderscuts(SCIP_BENDERS *benders)
Definition: benders.c:6958
void SCIPbendersSetSubproblemType(SCIP_BENDERS *benders, int probnumber, SCIP_BENDERSSUBTYPE subprobtype)
Definition: benders.c:6298
SCIP_Real SCIPbendersGetSubproblemObjval(SCIP_BENDERS *benders, int probnumber)
Definition: benders.c:6201
type definitions for miscellaneous datastructures
int SCIPbendersGetNStrengthenCutsFound(SCIP_BENDERS *benders)
Definition: benders.c:6012
int SCIPbendersGetNStoredCuts(SCIP_BENDERS *benders)
Definition: benders.c:6746
const char * SCIPbendersGetName(SCIP_BENDERS *benders)
Definition: benders.c:5926
SCIP_Bool SCIPbendersIsInitialized(SCIP_BENDERS *benders)
Definition: benders.c:6074
SCIP_Bool SCIPbendersSubproblemIsNonlinear(SCIP_BENDERS *benders, int probnumber)
Definition: benders.c:6406
void SCIPbendersSetMasterIsNonlinear(SCIP_BENDERS *benders, SCIP_Bool isnonlinear)
Definition: benders.c:6428
void SCIPbendersSetData(SCIP_BENDERS *benders, SCIP_BENDERSDATA *bendersdata)
Definition: benders.c:5761
SCIP_VAR ** SCIPbendersGetAuxiliaryVars(SCIP_BENDERS *benders)
Definition: benders.c:6174
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:63
SCIP_RETCODE SCIPbendersSolveSubproblemLP(SCIP *scip, SCIP_BENDERS *benders, int probnumber, SCIP_STATUS *solvestatus, SCIP_Real *objective)
Definition: benders.c:4770
type definitions for return codes for SCIP methods
const char * SCIPbendersGetDesc(SCIP_BENDERS *benders)
Definition: benders.c:5936
SCIP_Bool SCIPbendersOnlyCheckConvexRelax(SCIP_BENDERS *benders, SCIP_Bool subscipsoff)
Definition: benders.c:2990
SCIP_Bool SCIPbendersMasterIsNonlinear(SCIP_BENDERS *benders)
Definition: benders.c:6439
type definitions for problem statistics
int SCIPbendersGetNCalls(SCIP_BENDERS *benders)
Definition: benders.c:5992
enum SCIP_BendersSubType SCIP_BENDERSSUBTYPE
Definition: type_benders.h:79
SCIP_RETCODE SCIPbendersSolveSubproblemCIP(SCIP *scip, SCIP_BENDERS *benders, int probnumber, SCIP_STATUS *solvestatus, SCIP_Bool solvecip)
Definition: benders.c:4940
int SCIPbendersGetNTransferredCuts(SCIP_BENDERS *benders)
Definition: benders.c:6703
SCIP_BENDERSSUBTYPE SCIPbendersGetSubproblemType(SCIP_BENDERS *benders, int probnumber)
Definition: benders.c:6323
int SCIPbendersGetNNonlinearSubproblems(SCIP_BENDERS *benders)
Definition: benders.c:6418
type definitions for SCIP&#39;s main datastructure
SCIP_BENDERSDATA * SCIPbendersGetData(SCIP_BENDERS *benders)
Definition: benders.c:5751
SCIP_BENDERSCUT * SCIPfindBenderscut(SCIP_BENDERS *benders, const char *name)
Definition: benders.c:6919
struct SCIP_BendersData SCIP_BENDERSDATA
Definition: type_benders.h:82
type definitions for problem variables
void SCIPbendersSetSubproblemObjval(SCIP_BENDERS *benders, int probnumber, SCIP_Real objval)
Definition: benders.c:6184
SCIP_RETCODE SCIPbendersSolSlackVarsActive(SCIP_BENDERS *benders, SCIP_Bool *activeslack)
Definition: benders.c:6213
SCIP_Bool SCIPbendersIsActive(SCIP_BENDERS *benders)
Definition: benders.c:2677
#define SCIP_Bool
Definition: def.h:91
int SCIPbendersGetNStrengthenCalls(SCIP_BENDERS *benders)
Definition: benders.c:6022
int SCIPbendersGetNStrengthenFails(SCIP_BENDERS *benders)
Definition: benders.c:6032
enum SCIP_Status SCIP_STATUS
Definition: type_stat.h:67
void SCIPbendersSetSubproblemIsIndependent(SCIP_BENDERS *benders, int probnumber, SCIP_Bool isindep)
Definition: benders.c:6564
SCIP_DECL_SORTPTRCOMP(SCIPbendersComp)
Definition: benders.c:860
SCIP_RETCODE SCIPbendersGetStoredCutOrigData(SCIP_BENDERS *benders, int cutidx, SCIP_VAR ***vars, SCIP_Real **vals, SCIP_Real *lhs, SCIP_Real *rhs, int *nvars, int varssize)
Definition: benders.c:6787
SCIP_Bool SCIPbendersCutLP(SCIP_BENDERS *benders)
Definition: benders.c:6084
int SCIPbendersGetNCutsFound(SCIP_BENDERS *benders)
Definition: benders.c:6002
int SCIPbendersGetNConvexSubproblems(SCIP_BENDERS *benders)
Definition: benders.c:6376
SCIP * SCIPbendersSubproblem(SCIP_BENDERS *benders, int probnumber)
Definition: benders.c:5980
SCIP_Bool SCIPbendersSubproblemIsIndependent(SCIP_BENDERS *benders, int probnumber)
Definition: benders.c:6604
type definitions for Benders&#39; decomposition methods
int SCIPbendersGetPriority(SCIP_BENDERS *benders)
Definition: benders.c:5946
SCIP_Bool SCIPbendersSubproblemIsEnabled(SCIP_BENDERS *benders, int probnumber)
Definition: benders.c:6644
int SCIPbendersGetNSubproblems(SCIP_BENDERS *benders)
Definition: benders.c:5970
type definitions for Benders&#39; decomposition cut
void SCIPbendersSetSubproblemIsConvex(SCIP_BENDERS *benders, int probnumber, SCIP_Bool isconvex)
Definition: benders.c:6341
SCIP_Bool SCIPbendersInStrengthenRound(SCIP_BENDERS *benders)
Definition: benders.c:6449
SCIP_BENDERSCUT ** SCIPbendersGetBenderscuts(SCIP_BENDERS *benders)
Definition: benders.c:6941
SCIP_Real SCIPbendersGetSubproblemLowerbound(SCIP_BENDERS *benders, int probnumber)
Definition: benders.c:6734
void SCIPbendersUpdateSubproblemLowerbound(SCIP_BENDERS *benders, int probnumber, SCIP_Real lowerbound)
Definition: benders.c:6715
SCIP_Bool SCIPbendersCutPseudo(SCIP_BENDERS *benders)
Definition: benders.c:6094
SCIP_Bool SCIPbendersShareAuxVars(SCIP_BENDERS *benders)
Definition: benders.c:6114
#define SCIP_Real
Definition: def.h:173
SCIP_Bool SCIPbendersCutRelaxation(SCIP_BENDERS *benders)
Definition: benders.c:6104
SCIP_Real SCIPbendersGetSetupTime(SCIP_BENDERS *benders)
Definition: benders.c:6042
SCIP_RETCODE SCIPbendersGetStoredCutData(SCIP_BENDERS *benders, int cutidx, SCIP_VAR ***vars, SCIP_Real **vals, SCIP_Real *lhs, SCIP_Real *rhs, int *nvars)
Definition: benders.c:6756
SCIP_Real SCIPbendersGetTime(SCIP_BENDERS *benders)
Definition: benders.c:6052
SCIP_Bool SCIPbendersSubproblemIsConvex(SCIP_BENDERS *benders, int probnumber)
Definition: benders.c:6364
common defines and data types used in all packages of SCIP
void SCIPbendersSetSubproblemIsSetup(SCIP_BENDERS *benders, int probnumber, SCIP_Bool issetup)
Definition: benders.c:6539
SCIP_VAR * SCIPbendersGetAuxiliaryVar(SCIP_BENDERS *benders, int probnumber)
Definition: benders.c:6162
SCIP_RETCODE SCIPbendersSetBenderscutPriority(SCIP_BENDERS *benders, SCIP_BENDERSCUT *benderscut, int priority)
Definition: benders.c:6968
SCIP_Bool SCIPbendersSubproblemIsSetup(SCIP_BENDERS *benders, int probnumber)
Definition: benders.c:6552
void SCIPbendersSetSubproblemIsNonlinear(SCIP_BENDERS *benders, int probnumber, SCIP_Bool isnonlinear)
Definition: benders.c:6386
type definitions for NLP solver interfaces
SCIP_NLPPARAM SCIPbendersGetNLPParam(SCIP_BENDERS *benders)
Definition: benders.c:4757