Scippy

    SCIP

    Solving Constraint Integer Programs

    benderscut_feas.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 benderscut_feas.h
    26 * @ingroup BENDERSCUTS
    27 * @brief Standard feasibility cuts for Benders' decomposition
    28 * @author Stephen J. Maher
    29 *
    30 * The classical Benders' decomposition feasibility cuts arise from an infeasible instance of the Benders' decomposition
    31 * subproblem.
    32 * Consider the linear Benders' decomposition subproblem that takes the master problem solution \f$\bar{x}\f$ as input:
    33 * \f[
    34 * z(\bar{x}) = \min\{d^{T}y : Ty \geq h - H\bar{x}, y \geq 0\}
    35 * \f]
    36 * If the subproblem is infeasible as a result of the solution \f$\bar{x}\f$, then the Benders' decomposition
    37 * feasibility cut can be generated from the dual ray. Let \f$w\f$ be the vector corresponding to the dual ray of the
    38 * Benders' decomposition subproblem. The resulting cut is:
    39 * \f[
    40 * 0 \geq w^{T}(h - Hx)
    41 * \f]
    42 *
    43 * Next, consider the nonlinear Benders' decomposition subproblem that takes the master problem solution \f$\bar{x}\f$ as input:
    44 * \f[
    45 * z(\bar{x}) = \min\{d^{T}y : g(\bar{x}, y) \leq 0, y \geq 0\}
    46 * \f]
    47 * If the subproblem is infeasible as a result of the solution \f$\bar{x}\f$, then the Benders' decomposition
    48 * feasibility cut can be generated from a minimal infeasible solution, i.e., a solution of the NLP
    49 * \f[
    50 * \min\left\{\sum_i u_i : g(\bar{x}, y) \leq u, y \geq 0, u \geq 0\right\}
    51 * \f]
    52 * Let \f$\bar{y}\f$, \f$w\f$ be the vectors corresponding to the primal and dual solution of this auxiliary NLP.
    53 * The resulting cut is:
    54 * \f[
    55 * 0 \geq w^{T}\left(g(\bar{x},\bar{y}) + \nabla_x g(\bar{x},\bar{y}) (x - \bar{x})\right)
    56 * \f]
    57 * Note, that usually NLP solvers already provide a minimal infeasible solution when declaring the Benders'
    58 * decomposition subproblem as infeasible.
    59 */
    60
    61/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
    62
    63#ifndef __SCIP_BENDERSCUT_FEAS_H__
    64#define __SCIP_BENDERSCUT_FEAS_H__
    65
    66
    67#include "scip/def.h"
    68#include "scip/type_benders.h"
    69#include "scip/type_retcode.h"
    70#include "scip/type_scip.h"
    71
    72#ifdef __cplusplus
    73extern "C" {
    74#endif
    75
    76/** creates the Standard Feasibility Benders' decomposition cuts and includes it in SCIP
    77 *
    78 * @ingroup BenderscutIncludes
    79 */
    80SCIP_EXPORT
    82 SCIP* scip, /**< SCIP data structure */
    83 SCIP_BENDERS* benders /**< Benders' decomposition */
    84 );
    85
    86#ifdef __cplusplus
    87}
    88#endif
    89
    90#endif
    common defines and data types used in all packages of SCIP
    SCIP_RETCODE SCIPincludeBenderscutFeas(SCIP *scip, SCIP_BENDERS *benders)
    type definitions for Benders' decomposition methods
    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