Scippy

    SCIP

    Solving Constraint Integer Programs

    type_nodesel.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 type_nodesel.h
    26 * @ingroup TYPEDEFINITIONS
    27 * @brief type definitions for node selectors
    28 * @author Tobias Achterberg
    29 */
    30
    31/** @defgroup DEFPLUGINS_NODESEL Default node selectors
    32 * @ingroup DEFPLUGINS
    33 * @brief implementation files (.c files) of the default node selectors of SCIP
    34 */
    35
    36/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
    37
    38#ifndef __SCIP_TYPE_NODESEL_H__
    39#define __SCIP_TYPE_NODESEL_H__
    40
    41#include "scip/def.h"
    42#include "scip/type_retcode.h"
    43#include "scip/type_tree.h"
    44#include "scip/type_scip.h"
    45
    46#ifdef __cplusplus
    47extern "C" {
    48#endif
    49
    50typedef struct SCIP_NodePQ SCIP_NODEPQ; /**< node priority queue */
    51typedef struct SCIP_Nodesel SCIP_NODESEL; /**< node selector data structure */
    52typedef struct SCIP_NodeselData SCIP_NODESELDATA; /**< node selector specific data */
    53
    54
    55/** copy method for node selector plugins (called when SCIP copies plugins)
    56 *
    57 * input:
    58 * - scip : SCIP main data structure
    59 * - nodesel : the node selector itself
    60 */
    61#define SCIP_DECL_NODESELCOPY(x) SCIP_RETCODE x (SCIP* scip, SCIP_NODESEL* nodesel)
    62
    63
    64/** destructor of node selector to free user data (called when SCIP is exiting)
    65 *
    66 * input:
    67 * - scip : SCIP main data structure
    68 * - nodesel : the node selector itself
    69 */
    70#define SCIP_DECL_NODESELFREE(x) SCIP_RETCODE x (SCIP* scip, SCIP_NODESEL* nodesel)
    71
    72/** initialization method of node selector (called after problem was transformed)
    73 *
    74 * input:
    75 * - scip : SCIP main data structure
    76 * - nodesel : the node selector itself
    77 */
    78#define SCIP_DECL_NODESELINIT(x) SCIP_RETCODE x (SCIP* scip, SCIP_NODESEL* nodesel)
    79
    80/** deinitialization method of node selector (called before transformed problem is freed)
    81 *
    82 * input:
    83 * - scip : SCIP main data structure
    84 * - nodesel : the node selector itself
    85 */
    86#define SCIP_DECL_NODESELEXIT(x) SCIP_RETCODE x (SCIP* scip, SCIP_NODESEL* nodesel)
    87
    88/** solving process initialization method of node selector (called when branch and bound process is about to begin)
    89 *
    90 * This method is called when the presolving was finished and the branch and bound process is about to begin.
    91 * The node selector may use this call to initialize its branch and bound specific data.
    92 *
    93 * input:
    94 * - scip : SCIP main data structure
    95 * - nodesel : the node selector itself
    96 */
    97#define SCIP_DECL_NODESELINITSOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_NODESEL* nodesel)
    98
    99/** solving process deinitialization method of node selector (called before branch and bound process data is freed)
    100 *
    101 * This method is called before the branch and bound process is freed.
    102 * The node selector should use this call to clean up its branch and bound data.
    103 *
    104 * input:
    105 * - scip : SCIP main data structure
    106 * - nodesel : the node selector itself
    107 */
    108#define SCIP_DECL_NODESELEXITSOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_NODESEL* nodesel)
    109
    110/** node selection method of node selector
    111 *
    112 * This method is called to select the next leaf of the branch and bound tree to be processed.
    113 *
    114 * input:
    115 * - scip : SCIP main data structure
    116 * - nodesel : the node selector itself
    117 * - selnode : pointer to store the selected node
    118 *
    119 * possible return values for *selnode:
    120 * - NULL : problem is solved, because tree is empty
    121 * - non-NULL: node to be solved next
    122 */
    123#define SCIP_DECL_NODESELSELECT(x) SCIP_RETCODE x (SCIP* scip, SCIP_NODESEL* nodesel, SCIP_NODE** selnode)
    124
    125/** node comparison method of node selector
    126 *
    127 * This method is called to compare two nodes regarding their order in the node priority queue.
    128 *
    129 * input:
    130 * - scip : SCIP main data structure
    131 * - nodesel : the node selector itself
    132 * - node1 : first node to compare
    133 * - node2 : second node to compare
    134 *
    135 * possible return values:
    136 * - value < 0: node1 comes before (is better than) node2
    137 * - value = 0: both nodes are equally good
    138 * - value > 0: node2 comes after (is worse than) node2
    139 */
    140#define SCIP_DECL_NODESELCOMP(x) int x (SCIP* scip, SCIP_NODESEL* nodesel, SCIP_NODE* node1, SCIP_NODE* node2)
    141
    142#ifdef __cplusplus
    143}
    144#endif
    145
    146#endif
    common defines and data types used in all packages of SCIP
    struct SCIP_NodeselData SCIP_NODESELDATA
    Definition: type_nodesel.h:52
    type definitions for return codes for SCIP methods
    type definitions for SCIP's main datastructure
    type definitions for branch and bound tree