Scippy

    SCIP

    Solving Constraint Integer Programs

    pub_branch.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_branch.h
    26 * @ingroup PUBLICCOREAPI
    27 * @brief public methods for branching rules
    28 * @author Tobias Achterberg
    29 */
    30
    31/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
    32
    33#ifndef __SCIP_PUB_BRANCH_H__
    34#define __SCIP_PUB_BRANCH_H__
    35
    36
    37#include "scip/def.h"
    38#include "scip/type_misc.h"
    39#include "scip/type_branch.h"
    40
    41#ifdef __cplusplus
    42extern "C" {
    43#endif
    44
    45/**@addtogroup PublicBranchRuleMethods
    46 *
    47 * @{
    48 */
    49
    50/** compares two branching rules w. r. to their priority */
    51SCIP_EXPORT
    52SCIP_DECL_SORTPTRCOMP(SCIPbranchruleComp);
    53
    54/** comparison method for sorting branching rules w.r.t. to their name */
    55SCIP_EXPORT
    56SCIP_DECL_SORTPTRCOMP(SCIPbranchruleCompName);
    57
    58/** gets user data of branching rule */
    59SCIP_EXPORT
    61 SCIP_BRANCHRULE* branchrule /**< branching rule */
    62 );
    63
    64/** sets user data of branching rule; user has to free old data in advance! */
    65SCIP_EXPORT
    67 SCIP_BRANCHRULE* branchrule, /**< branching rule */
    68 SCIP_BRANCHRULEDATA* branchruledata /**< new branching rule user data */
    69 );
    70
    71/** marks this branching rule as safe to use in exact solving mode */
    72SCIP_EXPORT
    74 SCIP_BRANCHRULE* branchrule /**< branching rule */
    75 );
    76
    77/** gets name of branching rule */
    78SCIP_EXPORT
    79const char* SCIPbranchruleGetName(
    80 SCIP_BRANCHRULE* branchrule /**< branching rule */
    81 );
    82
    83/** gets description of branching rule */
    84SCIP_EXPORT
    85const char* SCIPbranchruleGetDesc(
    86 SCIP_BRANCHRULE* branchrule /**< branching rule */
    87 );
    88
    89/** gets priority of branching rule */
    90SCIP_EXPORT
    92 SCIP_BRANCHRULE* branchrule /**< branching rule */
    93 );
    94
    95/** gets maximal depth level, up to which this branching rule should be used (-1 for no limit) */
    96SCIP_EXPORT
    98 SCIP_BRANCHRULE* branchrule /**< branching rule */
    99 );
    100
    101/** gets maximal relative distance from current node's dual bound to primal bound for applying branching rule */
    102SCIP_EXPORT
    104 SCIP_BRANCHRULE* branchrule /**< branching rule */
    105 );
    106
    107/** gets time in seconds used in this branching rule for setting up for next stages */
    108SCIP_EXPORT
    110 SCIP_BRANCHRULE* branchrule /**< branching rule */
    111 );
    112
    113/** gets time in seconds used in this branching rule */
    114SCIP_EXPORT
    116 SCIP_BRANCHRULE* branchrule /**< branching rule */
    117 );
    118
    119/** gets the total number of times, the branching rule was called on an LP solution */
    120SCIP_EXPORT
    122 SCIP_BRANCHRULE* branchrule /**< branching rule */
    123 );
    124
    125/** gets the total number of times, the branching rule was called on external candidates */
    126SCIP_EXPORT
    128 SCIP_BRANCHRULE* branchrule /**< branching rule */
    129 );
    130
    131/** gets the total number of times, the branching rule was called on a pseudo solution */
    132SCIP_EXPORT
    134 SCIP_BRANCHRULE* branchrule /**< branching rule */
    135 );
    136
    137/** gets the total number of times, the branching rule detected a cutoff */
    138SCIP_EXPORT
    140 SCIP_BRANCHRULE* branchrule /**< branching rule */
    141 );
    142
    143/** gets the total number of cuts, the branching rule separated */
    144SCIP_EXPORT
    146 SCIP_BRANCHRULE* branchrule /**< branching rule */
    147 );
    148
    149/** gets the total number of constraints, the branching rule added to the respective local nodes (not counting constraints
    150 * that were added to the child nodes as branching decisions)
    151 */
    152SCIP_EXPORT
    154 SCIP_BRANCHRULE* branchrule /**< branching rule */
    155 );
    156
    157/** gets the total number of domain reductions, the branching rule found */
    158SCIP_EXPORT
    160 SCIP_BRANCHRULE* branchrule /**< branching rule */
    161 );
    162
    163/** gets the total number of children, the branching rule created */
    164SCIP_EXPORT
    166 SCIP_BRANCHRULE* branchrule /**< branching rule */
    167 );
    168
    169/** is branching rule initialized? */
    170SCIP_EXPORT
    172 SCIP_BRANCHRULE* branchrule /**< branching rule */
    173 );
    174
    175/** @} */
    176
    177#ifdef __cplusplus
    178}
    179#endif
    180
    181#endif
    common defines and data types used in all packages of SCIP
    #define SCIP_Longint
    Definition: def.h:141
    #define SCIP_Bool
    Definition: def.h:91
    #define SCIP_Real
    Definition: def.h:156
    SCIP_Bool SCIPbranchruleIsInitialized(SCIP_BRANCHRULE *branchrule)
    Definition: branch.c:2220
    SCIP_Longint SCIPbranchruleGetNDomredsFound(SCIP_BRANCHRULE *branchrule)
    Definition: branch.c:2200
    SCIP_Longint SCIPbranchruleGetNPseudoCalls(SCIP_BRANCHRULE *branchrule)
    Definition: branch.c:2158
    int SCIPbranchruleGetMaxdepth(SCIP_BRANCHRULE *branchrule)
    Definition: branch.c:2062
    SCIP_Longint SCIPbranchruleGetNConssFound(SCIP_BRANCHRULE *branchrule)
    Definition: branch.c:2190
    SCIP_DECL_SORTPTRCOMP(SCIPbranchruleComp)
    Definition: branch.c:1253
    SCIP_Longint SCIPbranchruleGetNLPCalls(SCIP_BRANCHRULE *branchrule)
    Definition: branch.c:2138
    const char * SCIPbranchruleGetName(SCIP_BRANCHRULE *branchrule)
    Definition: branch.c:2018
    SCIP_BRANCHRULEDATA * SCIPbranchruleGetData(SCIP_BRANCHRULE *branchrule)
    Definition: branch.c:1886
    SCIP_Longint SCIPbranchruleGetNChildren(SCIP_BRANCHRULE *branchrule)
    Definition: branch.c:2210
    SCIP_Real SCIPbranchruleGetTime(SCIP_BRANCHRULE *branchrule)
    Definition: branch.c:2128
    void SCIPbranchruleMarkExact(SCIP_BRANCHRULE *branchrule)
    Definition: branch.c:1907
    int SCIPbranchruleGetPriority(SCIP_BRANCHRULE *branchrule)
    Definition: branch.c:2038
    SCIP_Real SCIPbranchruleGetSetupTime(SCIP_BRANCHRULE *branchrule)
    Definition: branch.c:2118
    SCIP_Real SCIPbranchruleGetMaxbounddist(SCIP_BRANCHRULE *branchrule)
    Definition: branch.c:2084
    const char * SCIPbranchruleGetDesc(SCIP_BRANCHRULE *branchrule)
    Definition: branch.c:2028
    SCIP_Longint SCIPbranchruleGetNCutoffs(SCIP_BRANCHRULE *branchrule)
    Definition: branch.c:2168
    SCIP_Longint SCIPbranchruleGetNExternCalls(SCIP_BRANCHRULE *branchrule)
    Definition: branch.c:2148
    void SCIPbranchruleSetData(SCIP_BRANCHRULE *branchrule, SCIP_BRANCHRULEDATA *branchruledata)
    Definition: branch.c:1896
    SCIP_Longint SCIPbranchruleGetNCutsFound(SCIP_BRANCHRULE *branchrule)
    Definition: branch.c:2178
    type definitions for branching rules
    struct SCIP_BranchruleData SCIP_BRANCHRULEDATA
    Definition: type_branch.h:57
    type definitions for miscellaneous datastructures