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