Scippy

    SCIP

    Solving Constraint Integer Programs

    scip_cut.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 scip_cut.h
    26 * @ingroup PUBLICCOREAPI
    27 * @brief public methods for cuts and aggregation rows
    28 * @author Tobias Achterberg
    29 * @author Timo Berthold
    30 * @author Thorsten Koch
    31 * @author Alexander Martin
    32 * @author Marc Pfetsch
    33 * @author Kati Wolter
    34 * @author Gregor Hendel
    35 * @author Leona Gottwald
    36 */
    37
    38/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
    39
    40#ifndef __SCIP_SCIP_CUT_H__
    41#define __SCIP_SCIP_CUT_H__
    42
    43
    44#include "scip/def.h"
    45#include "scip/type_cutpool.h"
    46#include "scip/type_lp.h"
    47#include "scip/type_result.h"
    48#include "scip/type_retcode.h"
    49#include "scip/type_scip.h"
    50#include "scip/type_sol.h"
    51
    52#ifdef __cplusplus
    53extern "C" {
    54#endif
    55
    56/**@addtogroup PublicCutMethods
    57 *
    58 * @{
    59 */
    60
    61/** returns row's cutoff distance in the direction of the given primal solution
    62 *
    63 * @return the cutoff distance of the cut with respect to the LP solution in the direction of the given primal solution
    64 *
    65 * @pre This method can be called if @p scip is in one of the following stages:
    66 * - \ref SCIP_STAGE_SOLVING
    67 */
    68SCIP_EXPORT
    70 SCIP* scip, /**< SCIP data structure */
    71 SCIP_SOL* sol, /**< solution to compute direction for cutoff distance; must not be NULL */
    72 SCIP_ROW* cut /**< separated cut */
    73 );
    74
    75/** returns efficacy of the cut with respect to the given primal solution or the current LP solution:
    76 * e = -feasibility/norm
    77 *
    78 * @return the efficacy of the cut with respect to the given primal solution or the current LP solution:
    79 * e = -feasibility/norm
    80 *
    81 * @pre This method can be called if @p scip is in one of the following stages:
    82 * - \ref SCIP_STAGE_SOLVING
    83 */
    84SCIP_EXPORT
    86 SCIP* scip, /**< SCIP data structure */
    87 SCIP_SOL* sol, /**< primal CIP solution, or NULL for current LP solution */
    88 SCIP_ROW* cut /**< separated cut */
    89 );
    90
    91/** returns whether the cut's efficacy with respect to the given primal solution or the current LP solution is greater
    92 * than the minimal cut efficacy
    93 *
    94 * @return TRUE if the cut's efficacy with respect to the given primal solution or the current LP solution is greater
    95 * than the minimal cut efficacy, otherwise FALSE
    96 *
    97 * @pre This method can be called if @p scip is in one of the following stages:
    98 * - \ref SCIP_STAGE_SOLVING
    99 */
    100SCIP_EXPORT
    102 SCIP* scip, /**< SCIP data structure */
    103 SCIP_SOL* sol, /**< primal CIP solution, or NULL for current LP solution */
    104 SCIP_ROW* cut /**< separated cut */
    105 );
    106
    107/** checks if the given cut's efficacy is larger than the minimal cut efficacy
    108 *
    109 * @return TRUE if the given cut's efficacy is larger than the minimal cut efficacy, otherwise FALSE
    110 */
    111SCIP_EXPORT
    113 SCIP* scip, /**< SCIP data structure */
    114 SCIP_Real efficacy /**< efficacy of the cut */
    115 );
    116
    117/** calculates the efficacy norm of the given vector, which depends on the "separating/efficacynorm" parameter
    118 *
    119 * @return the efficacy norm of the given vector, which depends on the "separating/efficacynorm" parameter
    120 */
    121SCIP_EXPORT
    123 SCIP* scip, /**< SCIP data structure */
    124 SCIP_Real* vals, /**< array of values */
    125 int nvals /**< number of values */
    126 );
    127
    128/** indicates whether a cut is applicable
    129 *
    130 * If the cut has only one variable and this method returns FALSE, it may
    131 * still be possible that the cut can be added to the LP (as a row instead
    132 * of a boundchange), but it will be a very weak cut. The user is asked
    133 * to avoid such cuts.
    134 *
    135 * @pre This method can be called if @p scip is in one of the following stages:
    136 * - \ref SCIP_STAGE_SOLVING
    137 *
    138 * @return whether the cut is modifiable, not a bound change, or a bound change that changes bounds by at least epsilon
    139 */
    140SCIP_EXPORT
    142 SCIP* scip, /**< SCIP data structure */
    143 SCIP_ROW* cut /**< separated cut */
    144 );
    145
    146/** adds row to separation storage
    147 *
    148 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    149 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    150 *
    151 * @pre This method can be called if @p scip is in one of the following stages:
    152 * - \ref SCIP_STAGE_SOLVING
    153 */
    154SCIP_EXPORT
    156 SCIP* scip, /**< SCIP data structure */
    157 SCIP_ROW* row, /**< row */
    158 SCIP_Bool forcecut, /**< should the row be forced to enter the LP? */
    159 SCIP_Bool* infeasible /**< pointer to store whether row has been detected to be infeasible for local bounds */
    160 );
    161
    162/** checks if cut is already existing in global cutpool
    163 *
    164 * @return TRUE is returned if the cut is not already existing in the global cutpool, FALSE otherwise
    165 *
    166 * @pre This method can be called if @p scip is in one of the following stages:
    167 * - \ref SCIP_STAGE_SOLVING
    168 */
    169SCIP_EXPORT
    171 SCIP* scip, /**< SCIP data structure */
    172 SCIP_ROW* row /**< cutting plane to add */
    173 );
    174
    175/** if not already existing, adds row to global cut pool
    176 *
    177 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    178 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    179 *
    180 * @pre This method can be called if @p scip is in one of the following stages:
    181 * - \ref SCIP_STAGE_SOLVING
    182 */
    183SCIP_EXPORT
    185 SCIP* scip, /**< SCIP data structure */
    186 SCIP_ROW* row /**< cutting plane to add */
    187 );
    188
    189/** removes the row from the global cut pool
    190 *
    191 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    192 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    193 *
    194 * @pre This method can be called if @p scip is in one of the following stages:
    195 * - \ref SCIP_STAGE_SOLVING
    196 */
    197SCIP_EXPORT
    199 SCIP* scip, /**< SCIP data structure */
    200 SCIP_ROW* row /**< row to remove */
    201 );
    202
    203/** gets current cuts in the global cut pool
    204 *
    205 * @return the current cuts in the global cut pool
    206 *
    207 * @pre This method can be called if @p scip is in one of the following stages:
    208 * - \ref SCIP_STAGE_SOLVING
    209 * - \ref SCIP_STAGE_SOLVED
    210 * - \ref SCIP_STAGE_EXITSOLVE
    211 */
    212SCIP_EXPORT
    214 SCIP* scip /**< SCIP data structure */
    215 );
    216
    217/** gets current number of rows in the global cut pool
    218 *
    219 * @return the current number of rows in the global cut pool
    220 *
    221 * @pre This method can be called if @p scip is in one of the following stages:
    222 * - \ref SCIP_STAGE_SOLVING
    223 * - \ref SCIP_STAGE_SOLVED
    224 * - \ref SCIP_STAGE_EXITSOLVE
    225 */
    226SCIP_EXPORT
    228 SCIP* scip /**< SCIP data structure */
    229 );
    230
    231/** gets the global cut pool used by SCIP
    232 *
    233 * @return the global cut pool used by SCIP
    234 *
    235 * @pre This method can be called if @p scip is in one of the following stages:
    236 * - \ref SCIP_STAGE_SOLVING
    237 * - \ref SCIP_STAGE_SOLVED
    238 * - \ref SCIP_STAGE_EXITSOLVE
    239 */
    240SCIP_EXPORT
    242 SCIP* scip /**< SCIP data structure */
    243 );
    244
    245/** creates a cut pool
    246 *
    247 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    248 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    249 *
    250 * @pre This method can be called if @p scip is in one of the following stages:
    251 * - \ref SCIP_STAGE_TRANSFORMING
    252 * - \ref SCIP_STAGE_TRANSFORMED
    253 * - \ref SCIP_STAGE_INITPRESOLVE
    254 * - \ref SCIP_STAGE_PRESOLVING
    255 * - \ref SCIP_STAGE_EXITPRESOLVE
    256 * - \ref SCIP_STAGE_PRESOLVED
    257 * - \ref SCIP_STAGE_INITSOLVE
    258 * - \ref SCIP_STAGE_SOLVING
    259 */
    260SCIP_EXPORT
    262 SCIP* scip, /**< SCIP data structure */
    263 SCIP_CUTPOOL** cutpool, /**< pointer to store cut pool */
    264 int agelimit /**< maximum age a cut can reach before it is deleted from the pool */
    265 );
    266
    267/** frees a cut pool
    268 *
    269 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    270 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    271 *
    272 * @pre This method can be called if @p scip is in one of the following stages:
    273 * - \ref SCIP_STAGE_TRANSFORMING
    274 * - \ref SCIP_STAGE_TRANSFORMED
    275 * - \ref SCIP_STAGE_INITPRESOLVE
    276 * - \ref SCIP_STAGE_PRESOLVING
    277 * - \ref SCIP_STAGE_EXITPRESOLVE
    278 * - \ref SCIP_STAGE_PRESOLVED
    279 * - \ref SCIP_STAGE_INITSOLVE
    280 * - \ref SCIP_STAGE_SOLVING
    281 * - \ref SCIP_STAGE_SOLVED
    282 * - \ref SCIP_STAGE_EXITSOLVE
    283 * - \ref SCIP_STAGE_FREETRANS
    284 */
    285SCIP_EXPORT
    287 SCIP* scip, /**< SCIP data structure */
    288 SCIP_CUTPOOL** cutpool /**< pointer to store cut pool */
    289 );
    290
    291/** if not already existing, adds row to a cut pool and captures it
    292 *
    293 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    294 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    295 *
    296 * @pre This method can be called if @p scip is in one of the following stages:
    297 * - \ref SCIP_STAGE_INITSOLVE
    298 * - \ref SCIP_STAGE_SOLVING
    299 */
    300SCIP_EXPORT
    302 SCIP* scip, /**< SCIP data structure */
    303 SCIP_CUTPOOL* cutpool, /**< cut pool */
    304 SCIP_ROW* row /**< cutting plane to add */
    305 );
    306
    307/** adds row to a cut pool and captures it; doesn't check for multiple cuts
    308 *
    309 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    310 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    311 *
    312 * @pre This method can be called if @p scip is in one of the following stages:
    313 * - \ref SCIP_STAGE_INITSOLVE
    314 * - \ref SCIP_STAGE_SOLVING
    315 */
    316SCIP_EXPORT
    318 SCIP* scip, /**< SCIP data structure */
    319 SCIP_CUTPOOL* cutpool, /**< cut pool */
    320 SCIP_ROW* row /**< cutting plane to add */
    321 );
    322
    323/** removes the LP row from a cut pool
    324 *
    325 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    326 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    327 *
    328 * @pre This method can be called if @p scip is in one of the following stages:
    329 * - \ref SCIP_STAGE_INITSOLVE
    330 * - \ref SCIP_STAGE_SOLVING
    331 * - \ref SCIP_STAGE_SOLVED
    332 */
    333SCIP_EXPORT
    335 SCIP* scip, /**< SCIP data structure */
    336 SCIP_CUTPOOL* cutpool, /**< cut pool */
    337 SCIP_ROW* row /**< row to remove */
    338 );
    339
    340/** separates cuts from a cut pool
    341 *
    342 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    343 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    344 *
    345 * @pre This method can be called if @p scip is in one of the following stages:
    346 * - \ref SCIP_STAGE_SOLVING
    347 */
    348SCIP_EXPORT
    350 SCIP* scip, /**< SCIP data structure */
    351 SCIP_CUTPOOL* cutpool, /**< cut pool */
    352 SCIP_RESULT* result /**< pointer to store the result of the separation call */
    353 );
    354
    355/** separates cuts w.r.t. given solution from a cut pool
    356 *
    357 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    358 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    359 *
    360 * @pre This method can be called if @p scip is in one of the following stages:
    361 * - \ref SCIP_STAGE_SOLVING
    362 */
    363SCIP_EXPORT
    365 SCIP* scip, /**< SCIP data structure */
    366 SCIP_CUTPOOL* cutpool, /**< cut pool */
    367 SCIP_SOL* sol, /**< solution to be separated */
    368 SCIP_Bool pretendroot, /**< should the cut separators be called as if we are at the root node? */
    369 SCIP_RESULT* result /**< pointer to store the result of the separation call */
    370 );
    371
    372/** if not already existing, adds row to the delayed global cut pool
    373 *
    374 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    375 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    376 *
    377 * @pre This method can be called if @p scip is the stages \ref SCIP_STAGE_SOLVING
    378 */
    379SCIP_EXPORT
    381 SCIP* scip, /**< SCIP data structure */
    382 SCIP_ROW* row /**< cutting plane to add */
    383 );
    384
    385/** removes the row from the delayed global cut pool
    386 *
    387 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    388 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    389 *
    390 * @pre This method can be called if @p scip is the stages \ref SCIP_STAGE_SOLVING
    391 */
    392SCIP_EXPORT
    394 SCIP* scip, /**< SCIP data structure */
    395 SCIP_ROW* row /**< cutting plane to add */
    396 );
    397
    398/** gets current cuts in the delayed global cut pool
    399 *
    400 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    401 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    402 *
    403 * @pre This method can be called if @p scip is the stages \ref SCIP_STAGE_SOLVING
    404 */
    405SCIP_EXPORT
    407 SCIP* scip /**< SCIP data structure */
    408 );
    409
    410/** gets current number of rows in the delayed global cut pool
    411 *
    412 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    413 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    414 *
    415 * @pre This method can be called if @p scip is the stages \ref SCIP_STAGE_SOLVING
    416 */
    417SCIP_EXPORT
    419 SCIP* scip /**< SCIP data structure */
    420 );
    421
    422/** gets the delayed global cut pool used by SCIP
    423 *
    424 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    425 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    426 *
    427 * @pre This method can be called if @p scip is the stages \ref SCIP_STAGE_SOLVING
    428 */
    429SCIP_EXPORT
    431 SCIP* scip /**< SCIP data structure */
    432 );
    433
    434/** separates the given primal solution or the current LP solution by calling the separators and constraint handlers'
    435 * separation methods;
    436 * the generated cuts are stored in the separation storage and can be accessed with the methods SCIPgetCuts() and
    437 * SCIPgetNCuts();
    438 * after evaluating the cuts, you have to call SCIPclearCuts() in order to remove the cuts from the
    439 * separation storage;
    440 * it is possible to call SCIPseparateSol() multiple times with different solutions and evaluate the found cuts
    441 * afterwards
    442 *
    443 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    444 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    445 *
    446 * @pre This method can be called if @p scip is in one of the following stages:
    447 * - \ref SCIP_STAGE_SOLVING
    448 */
    449SCIP_EXPORT
    451 SCIP* scip, /**< SCIP data structure */
    452 SCIP_SOL* sol, /**< primal solution that should be separated, or NULL for LP solution */
    453 SCIP_Bool pretendroot, /**< should the cut separators be called as if we are at the root node? */
    454 SCIP_Bool allowlocal, /**< should the separator be asked to separate local cuts */
    455 SCIP_Bool onlydelayed, /**< should only separators be called that were delayed in the previous round? */
    456 SCIP_Bool* delayed, /**< pointer to store whether a separator was delayed */
    457 SCIP_Bool* cutoff /**< pointer to store whether the node can be cut off */
    458 );
    459
    460/** gets the array of cuts currently stored in the separation storage
    461 *
    462 * @return the array of cuts currently stored in the separation storage
    463 *
    464 * @pre This method can be called if @p scip is in one of the following stages:
    465 * - \ref SCIP_STAGE_PRESOLVED
    466 * - \ref SCIP_STAGE_SOLVING
    467 * - \ref SCIP_STAGE_SOLVED
    468 */
    469SCIP_EXPORT
    471 SCIP* scip /**< SCIP data structure */
    472 );
    473
    474/** get current number of cuts in the separation storage
    475 *
    476 * @return the current number of cuts in the separation storage
    477 *
    478 * @pre This method can be called if @p scip is in one of the following stages:
    479 * - \ref SCIP_STAGE_PRESOLVED
    480 * - \ref SCIP_STAGE_SOLVING
    481 * - \ref SCIP_STAGE_SOLVED
    482 */
    483SCIP_EXPORT
    484int SCIPgetNCuts(
    485 SCIP* scip /**< SCIP data structure */
    486 );
    487
    488/** clears the separation storage
    489 *
    490 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    491 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    492 *
    493 * @pre This method can be called if @p scip is in one of the following stages:
    494 * - \ref SCIP_STAGE_SOLVING
    495 */
    496SCIP_EXPORT
    498 SCIP* scip /**< SCIP data structure */
    499 );
    500
    501/** removes cuts that are inefficacious w.r.t. the current LP solution from separation storage without adding the cuts to the LP
    502 *
    503 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    504 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    505 *
    506 * @pre This method can be called if @p scip is in one of the following stages:
    507 * - \ref SCIP_STAGE_SOLVING
    508 */
    509SCIP_EXPORT
    511 SCIP* scip /**< SCIP data structure */
    512 );
    513
    514/**@} */
    515
    516#ifdef __cplusplus
    517}
    518#endif
    519
    520#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_RETCODE SCIPseparateSol(SCIP *scip, SCIP_SOL *sol, SCIP_Bool pretendroot, SCIP_Bool allowlocal, SCIP_Bool onlydelayed, SCIP_Bool *delayed, SCIP_Bool *cutoff)
    Definition: scip_cut.c:710
    SCIP_RETCODE SCIPaddPoolCut(SCIP *scip, SCIP_ROW *row)
    Definition: scip_cut.c:336
    SCIP_Real SCIPgetCutEfficacy(SCIP *scip, SCIP_SOL *sol, SCIP_ROW *cut)
    Definition: scip_cut.c:94
    SCIP_RETCODE SCIPdelDelayedPoolCut(SCIP *scip, SCIP_ROW *row)
    Definition: scip_cut.c:635
    SCIP_Real SCIPgetCutLPSolCutoffDistance(SCIP *scip, SCIP_SOL *sol, SCIP_ROW *cut)
    Definition: scip_cut.c:72
    SCIP_RETCODE SCIPdelRowCutpool(SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_ROW *row)
    Definition: scip_cut.c:534
    SCIP_RETCODE SCIPremoveInefficaciousCuts(SCIP *scip)
    Definition: scip_cut.c:798
    SCIP_RETCODE SCIPseparateCutpool(SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_RESULT *result)
    Definition: scip_cut.c:555
    SCIP_CUT ** SCIPgetDelayedPoolCuts(SCIP *scip)
    Definition: scip_cut.c:654
    SCIP_RETCODE SCIPaddRowCutpool(SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_ROW *row)
    Definition: scip_cut.c:489
    SCIP_Bool SCIPisCutNew(SCIP *scip, SCIP_ROW *row)
    Definition: scip_cut.c:318
    SCIP_Bool SCIPisCutEfficacious(SCIP *scip, SCIP_SOL *sol, SCIP_ROW *cut)
    Definition: scip_cut.c:117
    SCIP_CUTPOOL * SCIPgetGlobalCutpool(SCIP *scip)
    Definition: scip_cut.c:413
    SCIP_RETCODE SCIPseparateSolCutpool(SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_SOL *sol, SCIP_Bool pretendroot, SCIP_RESULT *result)
    Definition: scip_cut.c:585
    SCIP_Bool SCIPisEfficacious(SCIP *scip, SCIP_Real efficacy)
    Definition: scip_cut.c:135
    SCIP_Bool SCIPisCutApplicable(SCIP *scip, SCIP_ROW *cut)
    Definition: scip_cut.c:207
    SCIP_CUTPOOL * SCIPgetDelayedGlobalCutpool(SCIP *scip)
    Definition: scip_cut.c:686
    SCIP_RETCODE SCIPaddRow(SCIP *scip, SCIP_ROW *row, SCIP_Bool forcecut, SCIP_Bool *infeasible)
    Definition: scip_cut.c:225
    int SCIPgetNPoolCuts(SCIP *scip)
    Definition: scip_cut.c:395
    SCIP_ROW ** SCIPgetCuts(SCIP *scip)
    Definition: scip_cut.c:744
    SCIP_CUT ** SCIPgetPoolCuts(SCIP *scip)
    Definition: scip_cut.c:377
    SCIP_RETCODE SCIPclearCuts(SCIP *scip)
    Definition: scip_cut.c:779
    SCIP_RETCODE SCIPcreateCutpool(SCIP *scip, SCIP_CUTPOOL **cutpool, int agelimit)
    Definition: scip_cut.c:437
    SCIP_Real SCIPgetVectorEfficacyNorm(SCIP *scip, SCIP_Real *vals, int nvals)
    Definition: scip_cut.c:149
    int SCIPgetNDelayedPoolCuts(SCIP *scip)
    Definition: scip_cut.c:670
    int SCIPgetNCuts(SCIP *scip)
    Definition: scip_cut.c:762
    SCIP_RETCODE SCIPdelPoolCut(SCIP *scip, SCIP_ROW *row)
    Definition: scip_cut.c:356
    SCIP_RETCODE SCIPfreeCutpool(SCIP *scip, SCIP_CUTPOOL **cutpool)
    Definition: scip_cut.c:468
    SCIP_RETCODE SCIPaddNewRowCutpool(SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_ROW *row)
    Definition: scip_cut.c:511
    SCIP_RETCODE SCIPaddDelayedPoolCut(SCIP *scip, SCIP_ROW *row)
    Definition: scip_cut.c:616
    type definitions for storing cuts in a cut pool
    type definitions for LP management
    result codes for SCIP callback methods
    enum SCIP_Result SCIP_RESULT
    Definition: type_result.h:61
    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 storing primal CIP solutions