Scippy

    SCIP

    Solving Constraint Integer Programs

    pub_dcmp.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_dcmp.h
    26 * @ingroup DecompMethods
    27 * @brief public methods for decompositions
    28 * @author Gregor Hendel
    29 */
    30
    31/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
    32
    33#ifndef SCIP_PUB_DECOMP_H_
    34#define SCIP_PUB_DECOMP_H_
    35
    36
    38#include "scip/type_cons.h"
    39#include "scip/type_dcmp.h"
    40
    41#ifdef __cplusplus
    42extern "C" {
    43#endif
    44
    45/**@addtogroup DecompMethods
    46 *
    47 * @{
    48 */
    49
    50/** creates a decomposition */
    51SCIP_EXPORT
    53 SCIP_DECOMP** decomp, /**< pointer to store the decomposition data structure */
    54 BMS_BLKMEM* blkmem, /**< block memory */
    55 int nblocks, /**< the number of blocks (without the linking block) */
    56 SCIP_Bool original, /**< is this a decomposition in the original (TRUE) or transformed space? */
    57 SCIP_Bool benderslabels /**< should the variables be labeled for the application of Benders' decomposition */
    58 );
    59
    60/** frees a decomposition */
    61SCIP_EXPORT
    63 SCIP_DECOMP** decomp, /**< pointer to store the decomposition data structure */
    64 BMS_BLKMEM* blkmem /**< block memory */
    65 );
    66
    67/** returns TRUE if decomposition is in the original space */
    68SCIP_EXPORT
    70 SCIP_DECOMP* decomp /**< decomposition data structure */
    71 );
    72
    73/** sets the parameter that indicates whether the variables must be labeled for the application of Benders'
    74 * decomposition
    75 */
    76SCIP_EXPORT
    78 SCIP_DECOMP* decomp, /**< decomposition data structure */
    79 SCIP_Bool benderslabels /**< whether Benders' variable labels should be used */
    80 );
    81
    82/** returns TRUE if the variables must be labeled for the application of Benders' decomposition */
    83SCIP_EXPORT
    85 SCIP_DECOMP* decomp /**< decomposition data structure */
    86 );
    87
    88/** gets number of blocks of this decomposition */
    89SCIP_EXPORT
    91 SCIP_DECOMP* decomp /**< decomposition data structure */
    92 );
    93
    94/** gets area score of this decomposition */
    95SCIP_EXPORT
    97 SCIP_DECOMP* decomp /**< decomposition data structure */
    98 );
    99
    100/** gets modularity of this decomposition */
    101SCIP_EXPORT
    103 SCIP_DECOMP* decomp /**< decomposition data structure */
    104 );
    105
    106/** gets variable size for each block, sorted by increasing block label
    107 *
    108 * To get all variable sizes, set nlabels to SCIPdecompGetNBlocks() + 1.
    109 * The first entry corresponds to the number of border variables.
    110 *
    111 * @note Ensure that SCIPcomputeDecompStats() has been called before.
    112 * If the decomposition was read from a file, this was done automatically.
    113 */
    114SCIP_EXPORT
    116 SCIP_DECOMP* decomp, /**< decomposition data structure */
    117 int* varssize, /**< array to store variable sizes of blocks*/
    118 int nlabels /**< length of variable sizes array */
    119 );
    120
    121/** gets constraint size for each block, sorted by increasing block label
    122 *
    123 * To get all constraint sizes, set nlabels to SCIPdecompGetNBlocks() + 1.
    124 * The first entry corresponds to the number of border constraints.
    125 *
    126 * @note Ensure that SCIPcomputeDecompStats() has been called before.
    127 * If the decomposition was read from a file, this was done automatically.
    128 */
    129SCIP_EXPORT
    131 SCIP_DECOMP* decomp, /**< decomposition data structure */
    132 int* consssize, /**< array to store constraint sizes of blocks*/
    133 int nlabels /**< length of constraint sizes array */
    134 );
    135
    136/** gets number of border variables of this decomposition
    137 *
    138 * @note Ensure that SCIPcomputeDecompStats() has been called before.
    139 * If the decomposition was read from a file, this was done automatically.
    140 */
    141SCIP_EXPORT
    143 SCIP_DECOMP* decomp /**< decomposition data structure */
    144 );
    145
    146/** gets number of border constraints of this decomposition
    147 *
    148 * @note Ensure that SCIPcomputeDecompStats() has been called before.
    149 * If the decomposition was read from a file, this was done automatically.
    150 */
    151SCIP_EXPORT
    153 SCIP_DECOMP* decomp /**< decomposition data structure */
    154 );
    155
    156/** gets number of edges in the block-decomposition graph of this decomposition */
    157SCIP_EXPORT
    159 SCIP_DECOMP* decomp /**< decomposition data structure */
    160 );
    161
    162/** gets number of connected components in the block-decomposition graph of this decomposition */
    163SCIP_EXPORT
    165 SCIP_DECOMP* decomp /**< decomposition data structure */
    166 );
    167
    168/** gets number of articulation points in the block-decomposition graph of this decomposition */
    169SCIP_EXPORT
    171 SCIP_DECOMP* decomp /**< decomposition data structure */
    172 );
    173
    174/** gets the maximum degree of the block-decomposition graph of this decomposition */
    175SCIP_EXPORT
    177 SCIP_DECOMP* decomp /**< decomposition data structure */
    178 );
    179
    180/** gets the minimum degree of the block-decomposition graph of this decomposition */
    181SCIP_EXPORT
    183 SCIP_DECOMP* decomp /**< decomposition data structure */
    184 );
    185
    186/** sets labels for an array of variables */
    187SCIP_EXPORT
    189 SCIP_DECOMP* decomp, /**< decomposition data structure */
    190 SCIP_VAR** vars, /**< array of variables */
    191 int* labels, /**< array of labels, one per variable */
    192 int nvars /**< length of variables array */
    193 );
    194
    195/** queries labels for an array of variables */
    196SCIP_EXPORT
    198 SCIP_DECOMP* decomp, /**< decomposition data structure */
    199 SCIP_VAR** vars, /**< array of variables */
    200 int* labels, /**< buffer to store labels, one per variable */
    201 int nvars /**< length of variables array */
    202 );
    203
    204/** sets labels for an array of constraints */
    205SCIP_EXPORT
    207 SCIP_DECOMP* decomp, /**< decomposition data structure */
    208 SCIP_CONS** conss, /**< array of constraints */
    209 int* labels, /**< array of labels, one per constraint */
    210 int nconss /**< length of constraints array */
    211 );
    212
    213/** queries labels for an array of constraints */
    214SCIP_EXPORT
    216 SCIP_DECOMP* decomp, /**< decomposition data structure */
    217 SCIP_CONS** conss, /**< array of constraints */
    218 int* labels, /**< array of labels, one per constraint */
    219 int nconss /**< length of constraints array */
    220 );
    221
    222/** clears the corresponding labeling (constraints, variables, or both) of this decomposition */
    223SCIP_EXPORT
    225 SCIP_DECOMP* decomp, /**< decomposition data structure */
    226 SCIP_Bool clearvarlabels, /**< should the variable labels be cleared? */
    227 SCIP_Bool clearconslabels /**< should the constraint labels be cleared? */
    228 );
    229
    230/** prints decomposition statistics into string buffer */
    231SCIP_EXPORT
    233 SCIP_DECOMP* decomp, /**< decomposition data structure */
    234 char* strbuf /**< string buffer storage */
    235 );
    236
    237/** @} */
    238
    239#ifdef __cplusplus
    240}
    241#endif
    242
    243#endif
    #define SCIP_Bool
    Definition: def.h:91
    #define SCIP_Real
    Definition: def.h:156
    SCIP_RETCODE SCIPdecompSetVarsLabels(SCIP_DECOMP *decomp, SCIP_VAR **vars, int *labels, int nvars)
    Definition: dcmp.c:124
    int SCIPdecompGetNBlocks(SCIP_DECOMP *decomp)
    Definition: dcmp.c:279
    int SCIPdecompGetBlockGraphMinDegree(SCIP_DECOMP *decomp)
    Definition: dcmp.c:445
    SCIP_RETCODE SCIPdecompSetConsLabels(SCIP_DECOMP *decomp, SCIP_CONS **conss, int *labels, int nconss)
    Definition: dcmp.c:173
    SCIP_RETCODE SCIPdecompCreate(SCIP_DECOMP **decomp, BMS_BLKMEM *blkmem, int nblocks, SCIP_Bool original, SCIP_Bool benderslabels)
    Definition: dcmp.c:57
    int SCIPdecompGetNBlockGraphEdges(SCIP_DECOMP *decomp)
    Definition: dcmp.c:405
    char * SCIPdecompPrintStats(SCIP_DECOMP *decomp, char *strbuf)
    Definition: dcmp.c:455
    SCIP_RETCODE SCIPdecompClear(SCIP_DECOMP *decomp, SCIP_Bool clearvarlabels, SCIP_Bool clearconslabels)
    Definition: dcmp.c:224
    void SCIPdecompGetConsLabels(SCIP_DECOMP *decomp, SCIP_CONS **conss, int *labels, int nconss)
    Definition: dcmp.c:198
    SCIP_RETCODE SCIPdecompGetConssSize(SCIP_DECOMP *decomp, int *consssize, int nlabels)
    Definition: dcmp.c:349
    void SCIPdecompFree(SCIP_DECOMP **decomp, BMS_BLKMEM *blkmem)
    Definition: dcmp.c:99
    int SCIPdecompGetBlockGraphMaxDegree(SCIP_DECOMP *decomp)
    Definition: dcmp.c:435
    void SCIPdecompSetUseBendersLabels(SCIP_DECOMP *decomp, SCIP_Bool benderslabels)
    Definition: dcmp.c:258
    SCIP_Real SCIPdecompGetModularity(SCIP_DECOMP *decomp)
    Definition: dcmp.c:299
    int SCIPdecompGetNBorderVars(SCIP_DECOMP *decomp)
    Definition: dcmp.c:379
    SCIP_Real SCIPdecompGetAreaScore(SCIP_DECOMP *decomp)
    Definition: dcmp.c:289
    void SCIPdecompGetVarsLabels(SCIP_DECOMP *decomp, SCIP_VAR **vars, int *labels, int nvars)
    Definition: dcmp.c:149
    SCIP_RETCODE SCIPdecompGetVarsSize(SCIP_DECOMP *decomp, int *varssize, int nlabels)
    Definition: dcmp.c:316
    SCIP_Bool SCIPdecompUseBendersLabels(SCIP_DECOMP *decomp)
    Definition: dcmp.c:269
    int SCIPdecompGetNBlockGraphArticulations(SCIP_DECOMP *decomp)
    Definition: dcmp.c:425
    int SCIPdecompGetNBorderConss(SCIP_DECOMP *decomp)
    Definition: dcmp.c:394
    int SCIPdecompGetNBlockGraphComponents(SCIP_DECOMP *decomp)
    Definition: dcmp.c:415
    SCIP_Bool SCIPdecompIsOriginal(SCIP_DECOMP *decomp)
    Definition: dcmp.c:246
    memory allocation routines
    struct BMS_BlkMem BMS_BLKMEM
    Definition: memory.h:437
    type definitions for constraints and constraint handlers
    type definitions for decompositions and the decomposition store
    enum SCIP_Retcode SCIP_RETCODE
    Definition: type_retcode.h:63