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-2025 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"
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
47extern "C" {
48#endif
49
50/**@addtogroup PublicBendersMethods
51 *
52 * @{
53 */
54
55/** compares two benderss w. r. to their priority */
56SCIP_EXPORT
57SCIP_DECL_SORTPTRCOMP(SCIPbendersComp);
58
59/** comparison method for sorting benderss w.r.t. to their name */
60SCIP_EXPORT
61SCIP_DECL_SORTPTRCOMP(SCIPbendersCompName);
62
63/** gets user data of Benders' decomposition */
64SCIP_EXPORT
66 SCIP_BENDERS* benders /**< Benders' decomposition */
67 );
68
69/** sets user data of Benders' decomposition; user has to free old data in advance! */
70SCIP_EXPORT
72 SCIP_BENDERS* benders, /**< Benders' decomposition */
73 SCIP_BENDERSDATA* bendersdata /**< new Benders' decomposition user data */
74 );
75
76/** gets name of Benders' decomposition */
77SCIP_EXPORT
78const char* SCIPbendersGetName(
79 SCIP_BENDERS* benders /**< Benders' decomposition */
80 );
81
82/** gets description of Benders' decomposition */
83SCIP_EXPORT
84const char* SCIPbendersGetDesc(
85 SCIP_BENDERS* benders /**< Benders' decomposition */
86 );
87
88/** gets priority of Benders' decomposition */
89SCIP_EXPORT
91 SCIP_BENDERS* benders /**< Benders' decomposition */
92 );
93
94/** gets the number of subproblems for the Benders' decomposition */
95SCIP_EXPORT
97 SCIP_BENDERS* benders /**< the Benders' decomposition data structure */
98 );
99
100/** returns the SCIP instance for a given subproblem */
101SCIP_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 */
108SCIP_EXPORT
110 SCIP_BENDERS* benders /**< Benders' decomposition */
111 );
112
113/** gets the number of optimality cuts found by the collection of Benders' decomposition subproblems */
114SCIP_EXPORT
116 SCIP_BENDERS* benders /**< Benders' decomposition */
117 );
118
119/** gets the number of cuts found from the strengthening round */
120SCIP_EXPORT
122 SCIP_BENDERS* benders /**< Benders' decomposition */
123 );
124
125/** gets the number of calls to the strengthening round */
126SCIP_EXPORT
128 SCIP_BENDERS* benders /**< Benders' decomposition */
129 );
130
131/** gets the number of calls to the strengthening round that fail */
132SCIP_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 */
138SCIP_EXPORT
140 SCIP_BENDERS* benders /**< Benders' decomposition */
141 );
142
143/** gets execution time in seconds used in this Benders' decomposition */
144SCIP_EXPORT
146 SCIP_BENDERS* benders /**< Benders' decomposition */
147 );
148
149/** Is Benders' decomposition initialized? */
150SCIP_EXPORT
152 SCIP_BENDERS* benders /**< Benders' decomposition */
153 );
154
155/** returns whether the given Benders' decomposition is in use in the current problem */
156SCIP_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 */
166SCIP_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 */
173SCIP_EXPORT
175 SCIP_BENDERS* benders /**< Benders' decomposition */
176);
177
178/** Are Benders' cuts generated from the LP solutions? */
179SCIP_EXPORT
181 SCIP_BENDERS* benders /**< Benders' decomposition */
182 );
183
184/** Are Benders' cuts generated from the pseudo solutions? */
185SCIP_EXPORT
187 SCIP_BENDERS* benders /**< Benders' decomposition */
188 );
189
190/** Are Benders' cuts generated from the relaxation solutions? */
191SCIP_EXPORT
193 SCIP_BENDERS* benders /**< Benders' decomposition */
194 );
195
196/** Should this Benders' use the auxiliary variables from the highest priority Benders'? */
197SCIP_EXPORT
199 SCIP_BENDERS* benders /**< Benders' decomposition */
200 );
201
202/** sets the subproblem setup flag */
203SCIP_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 */
211SCIP_EXPORT
213 SCIP_BENDERS* benders, /**< Benders' decomposition */
214 int probnumber /**< the subproblem number */
215 );
216
217/** returns the master auxiliary variable that represents an underestimation of the subproblem objective value. */
218SCIP_EXPORT
220 SCIP_BENDERS* benders /**< Benders' decomposition */
221 );
222
223/** returns the auxiliary variable for the given subproblem */
224SCIP_EXPORT
226 SCIP_BENDERS* benders, /**< Benders' decomposition */
227 int probnumber /**< the subproblem number */
228 );
229
230/** returns all auxiliary variables */
231SCIP_EXPORT
233 SCIP_BENDERS* benders /**< Benders' decomposition */
234 );
235
236/** returns the subproblem master variables for the given subproblem */
237SCIP_EXPORT
239 SCIP_BENDERS* benders, /**< Benders' decomposition */
240 int probnumber /**< the subproblem number */
241 );
242
243/** returns the number of subproblem master variables for the given subproblem */
244SCIP_EXPORT
246 SCIP_BENDERS* benders, /**< Benders' decomposition */
247 int probnumber /**< the subproblem number */
248 );
249
250/** returns the subproblem master variable data for the given subproblem */
251SCIP_EXPORT
253 SCIP_BENDERS* benders, /**< Benders' decomposition */
254 int probnumber, /**< the subproblem number */
255 SCIP_VAR*** vars, /**< pointer to store the master variables, or NULL */
256 int* nvars, /**< the number of master problem variables, or NULL */
257 int* nbinvars, /**< the number of binary master problem variables, or NULL */
258 int* nintvars /**< the number of integer master problem variables, or NULL */
259 );
260
261/** stores the objective function value of the subproblem for use in cut generation */
262SCIP_EXPORT
264 SCIP_BENDERS* benders, /**< Benders' decomposition */
265 int probnumber, /**< the subproblem number */
266 SCIP_Real objval /**< the objective function value for the subproblem */
267 );
268
269/** returns the objective function value of the subproblem for use in cut generation */
270SCIP_EXPORT
272 SCIP_BENDERS* benders, /**< Benders' decomposition */
273 int probnumber /**< the subproblem number */
274 );
275
276/** returns the number of cuts that have been added for storage */
277SCIP_EXPORT
279 SCIP_BENDERS* benders /**< Benders' decomposition cut */
280 );
281
282/** returns the data for the cuts that have been added by the Benders' cut plugin */
283SCIP_EXPORT
285 SCIP_BENDERS* benders, /**< Benders' decomposition cut */
286 int cutidx, /**< the index for the cut data that is requested */
287 SCIP_VAR*** vars, /**< the variables that have non-zero coefficients in the cut */
288 SCIP_Real** vals, /**< the coefficients of the variables in the cut */
289 SCIP_Real* lhs, /**< the left hand side of the cut */
290 SCIP_Real* rhs, /**< the right hand side of the cut */
291 int* nvars /**< the number of variables with non-zero coefficients in the cut */
292 );
293
294/** returns the original problem data for the cuts that have been added by the Benders' cut plugin. The stored
295 * variables and values will populate the input vars and vals arrays. Thus, memory must be allocated for the vars and
296 * vals arrays
297 */
298SCIP_EXPORT
300 SCIP_BENDERS* benders, /**< Benders' decomposition cut */
301 int cutidx, /**< the index for the cut data that is requested */
302 SCIP_VAR*** vars, /**< the variables that have non-zero coefficients in the cut */
303 SCIP_Real** vals, /**< the coefficients of the variables in the cut */
304 SCIP_Real* lhs, /**< the left hand side of the cut */
305 SCIP_Real* rhs, /**< the right hand side of the cut */
306 int* nvars, /**< the number of variables with non-zero coefficients in the cut */
307 int varssize /**< the available slots in the array */
308 );
309
310/*
311 * Public functions associated with Benders' cuts
312 */
313
314/** returns the Benders' cut of the given name, or NULL if not existing */
315SCIP_EXPORT
317 SCIP_BENDERS* benders, /**< Benders' decomposition */
318 const char* name /**< name of Benderscut' decomposition */
319 );
320
321
322/** returns the array of currently available Benders' cuts; active Benders' decomposition are in the first slots of
323 * the array
324 */
325SCIP_EXPORT
327 SCIP_BENDERS* benders /**< Benders' decomposition */
328 );
329
330
331/** returns the number of currently available Benders' cuts */
332SCIP_EXPORT
334 SCIP_BENDERS* benders /**< Benders' decomposition */
335 );
336
337/** sets the priority of a Benders' decomposition */
338SCIP_EXPORT
340 SCIP_BENDERS* benders, /**< Benders' decomposition */
341 SCIP_BENDERSCUT* benderscut, /**< Benders' cut */
342 int priority /**< new priority of the Benders' decomposition */
343 );
344
345/** returns whether the solution has non-zero slack variables */
346SCIP_EXPORT
348 SCIP_BENDERS* benders, /**< Benders' decomposition */
349 SCIP_Bool* activeslack /**< flag to indicate whether a slack variable is active */
350 );
351
352/** sets the subproblem type
353 *
354 * The subproblem types are:
355 * - Convex constraints with continuous variables
356 * - Convex constraints with discrete variables
357 * - Non-convex constraints with continuous variables
358 * - Non-convex constraints with discrete variables
359 */
360SCIP_EXPORT
362 SCIP_BENDERS* benders, /**< Benders' decomposition */
363 int probnumber, /**< the subproblem number */
364 SCIP_BENDERSSUBTYPE subprobtype /**< the subproblem type */
365 );
366
367/** returns the type of the subproblem
368 *
369 * This type is used to determine whether the duals of the problem can be used to generate cuts
370 */
371SCIP_EXPORT
373 SCIP_BENDERS* benders, /**< Benders' decomposition */
374 int probnumber /**< the subproblem number */
375 );
376
377/** sets the flag indicating whether a subproblem is convex
378 *
379 * It is possible that this can change during the solving process. One example is when the three-phase method is
380 * employed, where the first phase solves the convex relaxation of both the master and subproblems, the second phase
381 * reintroduces the integrality constraints to the master problem and the third phase then reintroduces integrality
382 * constraints to the subproblems.
383 */
384SCIP_EXPORT
386 SCIP_BENDERS* benders, /**< Benders' decomposition */
387 int probnumber, /**< the subproblem number */
388 SCIP_Bool isconvex /**< flag to indicate whether the subproblem is convex */
389 );
390
391/** returns whether the subproblem is convex
392 *
393 * This means that the dual solution can be used to generate cuts.
394 */
395SCIP_EXPORT
397 SCIP_BENDERS* benders, /**< Benders' decomposition */
398 int probnumber /**< the subproblem number */
399 );
400
401/** returns the number of subproblems that are convex */
402SCIP_EXPORT
404 SCIP_BENDERS* benders /**< Benders' decomposition */
405 );
406
407/** sets the flag indicating whether a subproblem contains non-linear constraints */
408SCIP_EXPORT
410 SCIP_BENDERS* benders, /**< Benders' decomposition */
411 int probnumber, /**< the subproblem number */
412 SCIP_Bool isnonlinear /**< flag to indicate whether the subproblem contains non-linear constraints */
413 );
414
415/** returns whether the subproblem contains non-linear constraints. */
416SCIP_EXPORT
418 SCIP_BENDERS* benders, /**< Benders' decomposition */
419 int probnumber /**< the subproblem number */
420 );
421
422/** returns the number of subproblems that contain non-linear constraints */
423SCIP_EXPORT
425 SCIP_BENDERS* benders /**< Benders' decomposition */
426 );
427
428/** sets the flag indicating whether the master problem contains non-linear constraints */
429SCIP_EXPORT
431 SCIP_BENDERS* benders, /**< Benders' decomposition */
432 SCIP_Bool isnonlinear /**< flag to indicate whether the subproblem contains non-linear constraints */
433 );
434
435/** returns whether the master problem contains non-linear constraints. */
436SCIP_EXPORT
438 SCIP_BENDERS* benders /**< Benders' decomposition */
439 );
440
441/** returns the objective type for the aggregation of the Benders' decomposition subproblem objectives */
442SCIP_EXPORT
444 SCIP_BENDERS* benders /**< Benders' decomposition */
445 );
446
447/** returns the flag indicating that Benders' decomposition is in a cut strengthening round */
448SCIP_EXPORT
450 SCIP_BENDERS* benders /**< Benders' decomposition */
451 );
452
453/** returns whether at least one of the subproblems has been identified as infeasible.
454 * NOTE: this is without any variable fixing being performed
455 */
456SCIP_EXPORT
458 SCIP_BENDERS* benders /**< Benders' decomposition */
459 );
460
461/** solves the LP of the Benders' decomposition subproblem
462 *
463 * This requires that the subproblem is in probing mode.
464 */
465SCIP_EXPORT
467 SCIP* scip, /**< the SCIP data structure */
468 SCIP_BENDERS* benders, /**< the Benders' decomposition data structure */
469 int probnumber, /**< the subproblem number */
470 SCIP_STATUS* solvestatus, /**< status of subproblem solve */
471 SCIP_Real* objective /**< optimal value of subproblem, if solved to optimality */
472 );
473
474/** solves the Benders' decomposition subproblem */
475SCIP_EXPORT
477 SCIP* scip, /**< the SCIP data structure */
478 SCIP_BENDERS* benders, /**< the Benders' decomposition data structure */
479 int probnumber, /**< the subproblem number */
480 SCIP_STATUS* solvestatus, /**< status of subproblem solve */
481 SCIP_Bool solvecip /**< directly solve the CIP subproblem */
482 );
483
484/** returns the number of cuts that have been transferred from sub SCIPs to the master SCIP */
485SCIP_EXPORT
487 SCIP_BENDERS* benders /**< the Benders' decomposition data structure */
488 );
489
490/** updates the lower bound for the subproblem. If the lower bound is not greater than the previously stored lowerbound,
491 * then no update occurs.
492 */
493SCIP_EXPORT
495 SCIP_BENDERS* benders, /**< Benders' decomposition */
496 int probnumber, /**< the subproblem number */
497 SCIP_Real lowerbound /**< the lower bound */
498 );
499
500/** returns the stored lower bound for the given subproblem */
501SCIP_EXPORT
503 SCIP_BENDERS* benders, /**< Benders' decomposition */
504 int probnumber /**< the subproblem number */
505 );
506
507/** sets the independent subproblem flag */
508SCIP_EXPORT
510 SCIP_BENDERS* benders, /**< Benders' decomposition */
511 int probnumber, /**< the subproblem number */
512 SCIP_Bool isindep /**< flag to indicate whether the subproblem is independent */
513 );
514
515/** returns whether the subproblem is independent */
516SCIP_EXPORT
518 SCIP_BENDERS* benders, /**< Benders' decomposition */
519 int probnumber /**< the subproblem number */
520 );
521
522/** returns whether the subproblem is enabled, i.e. the subproblem is still solved in the solving loop. */
523SCIP_EXPORT
525 SCIP_BENDERS* benders, /**< Benders' decomposition */
526 int probnumber /**< the subproblem number */
527 );
528
529/** @} */
530
531#ifdef __cplusplus
532}
533#endif
534
535#endif
common defines and data types used in all packages of SCIP
#define SCIP_Bool
Definition: def.h:91
#define SCIP_Real
Definition: def.h:156
SCIP_BENDERSOBJTYPE SCIPbendersGetObjectiveType(SCIP_BENDERS *benders)
Definition: benders.c:6852
SCIP_Real SCIPbendersGetSetupTime(SCIP_BENDERS *benders)
Definition: benders.c:6083
void SCIPbendersSetSubproblemObjval(SCIP_BENDERS *benders, int probnumber, SCIP_Real objval)
Definition: benders.c:6285
SCIP_DECL_SORTPTRCOMP(SCIPbendersComp)
Definition: benders.c:990
SCIP_RETCODE SCIPbendersSolSlackVarsActive(SCIP_BENDERS *benders, SCIP_Bool *activeslack)
Definition: benders.c:6314
SCIP_Bool SCIPbendersCutRelaxation(SCIP_BENDERS *benders)
Definition: benders.c:6145
int SCIPbendersGetNTransferredCuts(SCIP_BENDERS *benders)
Definition: benders.c:6862
SCIP_Bool SCIPbendersSubproblemIsConvex(SCIP_BENDERS *benders, int probnumber)
Definition: benders.c:6465
int SCIPbendersGetNStrengthenFails(SCIP_BENDERS *benders)
Definition: benders.c:6073
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:6946
void SCIPbendersSetSubproblemIsNonlinear(SCIP_BENDERS *benders, int probnumber, SCIP_Bool isnonlinear)
Definition: benders.c:6487
void SCIPbendersSetMasterIsNonlinear(SCIP_BENDERS *benders, SCIP_Bool isnonlinear)
Definition: benders.c:6529
void SCIPbendersSetData(SCIP_BENDERS *benders, SCIP_BENDERSDATA *bendersdata)
Definition: benders.c:5802
SCIP_Bool SCIPbendersOnlyCheckConvexRelax(SCIP_BENDERS *benders, SCIP_Bool subscipsoff)
Definition: benders.c:3301
SCIP_Bool SCIPbendersSubproblemIsNonlinear(SCIP_BENDERS *benders, int probnumber)
Definition: benders.c:6507
int SCIPbendersGetPriority(SCIP_BENDERS *benders)
Definition: benders.c:5987
SCIP_VAR * SCIPbendersGetAuxiliaryVar(SCIP_BENDERS *benders, int probnumber)
Definition: benders.c:6213
SCIP_BENDERSCUT * SCIPfindBenderscut(SCIP_BENDERS *benders, const char *name)
Definition: benders.c:7078
const char * SCIPbendersGetDesc(SCIP_BENDERS *benders)
Definition: benders.c:5977
int SCIPbendersGetNConvexSubproblems(SCIP_BENDERS *benders)
Definition: benders.c:6477
SCIP_BENDERSSUBTYPE SCIPbendersGetSubproblemType(SCIP_BENDERS *benders, int probnumber)
Definition: benders.c:6424
SCIP_VAR ** SCIPbendersGetSubproblemMasterVars(SCIP_BENDERS *benders, int probnumber)
Definition: benders.c:6235
SCIP_RETCODE SCIPbendersSolveSubproblemCIP(SCIP *scip, SCIP_BENDERS *benders, int probnumber, SCIP_STATUS *solvestatus, SCIP_Bool solvecip)
Definition: benders.c:5230
int SCIPbendersGetNNonlinearSubproblems(SCIP_BENDERS *benders)
Definition: benders.c:6519
SCIP_NLPPARAM SCIPbendersGetNLPParam(SCIP_BENDERS *benders)
Definition: benders.c:5047
SCIP_Bool SCIPbendersSubproblemIsEnabled(SCIP_BENDERS *benders, int probnumber)
Definition: benders.c:6780
int SCIPbendersGetNStrengthenCalls(SCIP_BENDERS *benders)
Definition: benders.c:6063
int SCIPbendersGetNStoredCuts(SCIP_BENDERS *benders)
Definition: benders.c:6905
SCIP_RETCODE SCIPbendersSolveSubproblemLP(SCIP *scip, SCIP_BENDERS *benders, int probnumber, SCIP_STATUS *solvestatus, SCIP_Real *objective)
Definition: benders.c:5060
int SCIPbendersGetNBenderscuts(SCIP_BENDERS *benders)
Definition: benders.c:7117
void SCIPbendersSetSubproblemIsConvex(SCIP_BENDERS *benders, int probnumber, SCIP_Bool isconvex)
Definition: benders.c:6442
SCIP_Bool SCIPbendersIsActive(SCIP_BENDERS *benders)
Definition: benders.c:2988
SCIP_Bool SCIPbendersSubproblemsAreInfeasible(SCIP_BENDERS *benders)
Definition: benders.c:6577
void SCIPbendersSetSubproblemIsSetup(SCIP_BENDERS *benders, int probnumber, SCIP_Bool issetup)
Definition: benders.c:6675
SCIP_BENDERSDATA * SCIPbendersGetData(SCIP_BENDERS *benders)
Definition: benders.c:5792
const char * SCIPbendersGetName(SCIP_BENDERS *benders)
Definition: benders.c:5967
SCIP_Bool SCIPbendersCutPseudo(SCIP_BENDERS *benders)
Definition: benders.c:6135
SCIP_VAR ** SCIPbendersGetAuxiliaryVars(SCIP_BENDERS *benders)
Definition: benders.c:6225
int SCIPbendersGetNSubproblems(SCIP_BENDERS *benders)
Definition: benders.c:6011
void SCIPbendersSetSubproblemType(SCIP_BENDERS *benders, int probnumber, SCIP_BENDERSSUBTYPE subprobtype)
Definition: benders.c:6399
int SCIPbendersGetNStrengthenCutsFound(SCIP_BENDERS *benders)
Definition: benders.c:6053
void SCIPbendersUpdateSubproblemLowerbound(SCIP_BENDERS *benders, int probnumber, SCIP_Real lowerbound)
Definition: benders.c:6874
SCIP * SCIPbendersSubproblem(SCIP_BENDERS *benders, int probnumber)
Definition: benders.c:6021
void SCIPbendersGetSubproblemMasterVarsData(SCIP_BENDERS *benders, int probnumber, SCIP_VAR ***vars, int *nvars, int *nbinvars, int *nintvars)
Definition: benders.c:6259
SCIP_Bool SCIPbendersMasterIsNonlinear(SCIP_BENDERS *benders)
Definition: benders.c:6540
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:6915
int SCIPbendersGetNCalls(SCIP_BENDERS *benders)
Definition: benders.c:6033
SCIP_Bool SCIPbendersIsInitialized(SCIP_BENDERS *benders)
Definition: benders.c:6115
int SCIPbendersGetNCutsFound(SCIP_BENDERS *benders)
Definition: benders.c:6043
SCIP_Bool SCIPbendersShareAuxVars(SCIP_BENDERS *benders)
Definition: benders.c:6155
SCIP_Bool SCIPbendersCutLP(SCIP_BENDERS *benders)
Definition: benders.c:6125
SCIP_RETCODE SCIPbendersSetBenderscutPriority(SCIP_BENDERS *benders, SCIP_BENDERSCUT *benderscut, int priority)
Definition: benders.c:7127
SCIP_Real SCIPbendersGetTime(SCIP_BENDERS *benders)
Definition: benders.c:6093
SCIP_Bool SCIPbendersSubproblemIsIndependent(SCIP_BENDERS *benders, int probnumber)
Definition: benders.c:6740
SCIP_BENDERSCUT ** SCIPbendersGetBenderscuts(SCIP_BENDERS *benders)
Definition: benders.c:7100
SCIP_VAR * SCIPbenderGetMasterAuxiliaryVar(SCIP_BENDERS *benders)
Definition: benders.c:6203
SCIP_Real SCIPbendersGetSubproblemObjval(SCIP_BENDERS *benders, int probnumber)
Definition: benders.c:6302
void SCIPbendersSetSubproblemIsIndependent(SCIP_BENDERS *benders, int probnumber, SCIP_Bool isindep)
Definition: benders.c:6700
SCIP_Bool SCIPbendersInStrengthenRound(SCIP_BENDERS *benders)
Definition: benders.c:6550
SCIP_Bool SCIPbendersSubproblemIsSetup(SCIP_BENDERS *benders, int probnumber)
Definition: benders.c:6688
SCIP_Real SCIPbendersGetSubproblemLowerbound(SCIP_BENDERS *benders, int probnumber)
Definition: benders.c:6893
int SCIPbendersGetNSubproblemMasterVars(SCIP_BENDERS *benders, int probnumber)
Definition: benders.c:6247
type definitions for Benders' decomposition methods
enum SCIP_BendersObjectiveType SCIP_BENDERSOBJTYPE
Definition: type_benders.h:91
enum SCIP_BendersSubType SCIP_BENDERSSUBTYPE
Definition: type_benders.h:84
struct SCIP_BendersData SCIP_BENDERSDATA
Definition: type_benders.h:94
type definitions for Benders' decomposition cut
type definitions for miscellaneous datastructures
type definitions for NLP solver interfaces
type definitions for return codes for SCIP methods
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:63
type definitions for SCIP's main datastructure
type definitions for problem statistics
enum SCIP_Status SCIP_STATUS
Definition: type_stat.h:64
type definitions for problem variables