Scippy

    SCIP

    Solving Constraint Integer Programs

    pub_event.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_event.h
    26 * @ingroup PUBLICCOREAPI
    27 * @brief public methods for managing events
    28 * @author Tobias Achterberg
    29 */
    30
    31/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
    32
    33#ifndef __SCIP_PUB_EVENT_H__
    34#define __SCIP_PUB_EVENT_H__
    35
    36
    37#include "scip/def.h"
    38#include "scip/type_event.h"
    39#include "scip/type_lp.h"
    40#include "scip/type_rational.h"
    41#include "scip/type_sol.h"
    42#include "scip/type_tree.h"
    43#include "scip/type_var.h"
    44
    45/* In optimized mode, some function calls are overwritten by defines to reduce the number of function calls and
    46 * speed up the algorithms. For this, we need to include struct_event.h.
    47 */
    48#ifdef NDEBUG
    49#include "scip/struct_event.h"
    50#endif
    51
    52#ifdef __cplusplus
    53extern "C" {
    54#endif
    55
    56/*
    57 * Event handler methods
    58 */
    59
    60/**@addtogroup PublicEventHandlerMethods
    61 *
    62 * @{
    63 */
    64
    65/** gets name of event handler */
    66SCIP_EXPORT
    67const char* SCIPeventhdlrGetName(
    68 SCIP_EVENTHDLR* eventhdlr /**< event handler */
    69 );
    70
    71/** gets user data of event handler */
    72SCIP_EXPORT
    74 SCIP_EVENTHDLR* eventhdlr /**< event handler */
    75 );
    76
    77/** sets user data of event handler; user has to free old data in advance! */
    78SCIP_EXPORT
    80 SCIP_EVENTHDLR* eventhdlr, /**< event handler */
    81 SCIP_EVENTHDLRDATA* eventhdlrdata /**< new event handler user data */
    82 );
    83
    84/** is event handler initialized? */
    85SCIP_EXPORT
    87 SCIP_EVENTHDLR* eventhdlr /**< event handler */
    88 );
    89
    90/** gets time in seconds used in this event handler for setting up for next stages */
    91SCIP_EXPORT
    93 SCIP_EVENTHDLR* eventhdlr /**< event handler */
    94 );
    95
    96/** gets time in seconds used in this event handler */
    97SCIP_EXPORT
    99 SCIP_EVENTHDLR* eventhdlr /**< event handler */
    100 );
    101
    102/** @} */
    103
    104/*
    105 * Event methods
    106 */
    107
    108/**@addtogroup PublicEventMethods
    109 *
    110 * @{
    111 */
    112
    113/** gets type of event */
    114SCIP_EXPORT
    116 SCIP_EVENT* event /**< event */
    117 );
    118
    119/** gets variable for a variable event (var added, var deleted, var fixed,
    120 * objective value or domain change, domain hole added or removed) */
    121SCIP_EXPORT
    123 SCIP_EVENT* event /**< event */
    124 );
    125
    126/** gets old objective value for an objective value change event */
    127SCIP_EXPORT
    129 SCIP_EVENT* event /**< event */
    130 );
    131
    132/** gets new objective value for an objective value change event */
    133SCIP_EXPORT
    135 SCIP_EVENT* event /**< event */
    136 );
    137
    138/** gets old bound for a bound change event */
    139SCIP_EXPORT
    141 SCIP_EVENT* event /**< event */
    142 );
    143
    144/** gets exact old bound for a bound change event */
    145SCIP_EXPORT
    147 SCIP_EVENT* event /**< event */
    148 );
    149
    150/** gets new bound for a bound change event */
    151SCIP_EXPORT
    153 SCIP_EVENT* event /**< event */
    154 );
    155
    156/** gets old variable type for a variable type change event */
    157SCIP_EXPORT
    159 SCIP_EVENT* event /**< event */
    160 );
    161
    162/** gets new variable type for a variable type change event */
    163SCIP_EXPORT
    165 SCIP_EVENT* event /**< event */
    166 );
    167
    168/** gets old implied integral type for an implied integral type change event */
    169SCIP_EXPORT
    171 SCIP_EVENT* event /**< event */
    172 );
    173
    174/** gets new implied integral type for an implied integral type change event */
    175SCIP_EXPORT
    177 SCIP_EVENT* event /**< event */
    178 );
    179
    180/** gets node for a node or LP event */
    181SCIP_EXPORT
    183 SCIP_EVENT* event /**< event */
    184 );
    185
    186/** gets solution for a primal solution event */
    187SCIP_EXPORT
    189 SCIP_EVENT* event /**< event */
    190 );
    191
    192/** gets the left bound of open interval in the hole */
    193SCIP_EXPORT
    195 SCIP_EVENT* event /**< event */
    196 );
    197
    198/** gets the right bound of open interval in the hole */
    199SCIP_EXPORT
    201 SCIP_EVENT* event /**< event */
    202 );
    203
    204/** gets row for a row event */
    205SCIP_EXPORT
    207 SCIP_EVENT* event /**< event */
    208 );
    209
    210/** gets column for a row change coefficient event */
    211SCIP_EXPORT
    213 SCIP_EVENT* event /**< event */
    214 );
    215
    216/** gets old coefficient value for a row change coefficient event */
    217SCIP_EXPORT
    219 SCIP_EVENT* event /**< event */
    220 );
    221
    222/** gets new coefficient value for a row change coefficient event */
    223SCIP_EXPORT
    225 SCIP_EVENT* event /**< event */
    226 );
    227
    228/** gets old constant value for a row change constant event */
    229SCIP_EXPORT
    231 SCIP_EVENT* event /**< event */
    232 );
    233
    234/** gets new constant value for a row change constant event */
    235SCIP_EXPORT
    237 SCIP_EVENT* event /**< event */
    238 );
    239
    240/** gets side for a row change side event */
    241SCIP_EXPORT
    243 SCIP_EVENT* event /**< event */
    244 );
    245
    246/** gets old side value for a row change side event */
    247SCIP_EXPORT
    249 SCIP_EVENT* event /**< event */
    250 );
    251
    252/** gets new side value for a row change side event */
    253SCIP_EXPORT
    255 SCIP_EVENT* event /**< event */
    256 );
    257
    258#ifdef NDEBUG
    259
    260/* In optimized mode, the function calls are overwritten by defines to reduce the number of function calls and
    261 * speed up the algorithms.
    262 */
    263
    264#define SCIPeventGetType(event) ((event)->eventtype)
    265#define SCIPeventGetOldobj(event) ((event)->data.eventobjchg.oldobj)
    266#define SCIPeventGetNewobj(event) ((event)->data.eventobjchg.newobj)
    267#define SCIPeventGetOldbound(event) ((event)->data.eventbdchg.oldbound)
    268#define SCIPeventGetNewbound(event) ((event)->data.eventbdchg.newbound)
    269#define SCIPeventGetOldtype(event) ((event)->data.eventtypechg.oldtype)
    270#define SCIPeventGetNewtype(event) ((event)->data.eventtypechg.newtype)
    271#define SCIPeventGetNode(event) ((event)->data.node)
    272#define SCIPeventGetSol(event) ((event)->data.sol)
    273#define SCIPeventGetRowCol(event) ((event)->data.eventrowcoefchanged.col)
    274#define SCIPeventGetRowOldCoefVal(event) ((event)->data.eventrowcoefchanged.oldval)
    275#define SCIPeventGetRowNewCoefVal(event) ((event)->data.eventrowcoefchanged.newval)
    276#define SCIPeventGetRowOldConstVal(event) ((event)->data.eventrowconstchanged.oldval)
    277#define SCIPeventGetRowNewConstVal(event) ((event)->data.eventrowconstchanged.newval)
    278#define SCIPeventGetRowSide(event) ((event)->data.eventrowsidechanged.side)
    279#define SCIPeventGetRowOldSideVal(event) ((event)->data.eventrowsidechanged.oldval)
    280#define SCIPeventGetRowNewSideVal(event) ((event)->data.eventrowsidechanged.newval)
    281
    282#endif
    283
    284/** @} */
    285
    286#ifdef __cplusplus
    287}
    288#endif
    289
    290#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_Real SCIPeventhdlrGetSetupTime(SCIP_EVENTHDLR *eventhdlr)
    Definition: event.c:526
    SCIP_Bool SCIPeventhdlrIsInitialized(SCIP_EVENTHDLR *eventhdlr)
    Definition: event.c:504
    SCIP_Real SCIPeventhdlrGetTime(SCIP_EVENTHDLR *eventhdlr)
    Definition: event.c:538
    const char * SCIPeventhdlrGetName(SCIP_EVENTHDLR *eventhdlr)
    Definition: event.c:396
    SCIP_EVENTHDLRDATA * SCIPeventhdlrGetData(SCIP_EVENTHDLR *eventhdlr)
    Definition: event.c:406
    void SCIPeventhdlrSetData(SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTHDLRDATA *eventhdlrdata)
    Definition: event.c:416
    SCIP_Real SCIPeventGetRowOldCoefVal(SCIP_EVENT *event)
    Definition: event.c:1685
    SCIP_RATIONAL * SCIPeventGetOldboundExact(SCIP_EVENT *event)
    Definition: event.c:1439
    SCIP_IMPLINTTYPE SCIPeventGetNewImpltype(SCIP_EVENT *event)
    Definition: event.c:1513
    SCIP_EVENTTYPE SCIPeventGetType(SCIP_EVENT *event)
    Definition: event.c:1194
    SCIP_SOL * SCIPeventGetSol(SCIP_EVENT *event)
    Definition: event.c:1567
    SCIP_VARTYPE SCIPeventGetNewtype(SCIP_EVENT *event)
    Definition: event.c:1479
    SCIP_Real SCIPeventGetHoleRight(SCIP_EVENT *event)
    Definition: event.c:1621
    SCIP_Real SCIPeventGetHoleLeft(SCIP_EVENT *event)
    Definition: event.c:1604
    SCIP_Real SCIPeventGetOldobj(SCIP_EVENT *event)
    Definition: event.c:1357
    SCIP_Real SCIPeventGetOldbound(SCIP_EVENT *event)
    Definition: event.c:1391
    SCIP_VAR * SCIPeventGetVar(SCIP_EVENT *event)
    Definition: event.c:1217
    SCIP_Real SCIPeventGetRowNewConstVal(SCIP_EVENT *event)
    Definition: event.c:1736
    SCIP_COL * SCIPeventGetRowCol(SCIP_EVENT *event)
    Definition: event.c:1668
    SCIP_Real SCIPeventGetNewobj(SCIP_EVENT *event)
    Definition: event.c:1374
    SCIP_SIDETYPE SCIPeventGetRowSide(SCIP_EVENT *event)
    Definition: event.c:1753
    SCIP_Real SCIPeventGetRowOldSideVal(SCIP_EVENT *event)
    Definition: event.c:1770
    SCIP_IMPLINTTYPE SCIPeventGetOldImpltype(SCIP_EVENT *event)
    Definition: event.c:1496
    SCIP_Real SCIPeventGetNewbound(SCIP_EVENT *event)
    Definition: event.c:1415
    SCIP_NODE * SCIPeventGetNode(SCIP_EVENT *event)
    Definition: event.c:1530
    SCIP_Real SCIPeventGetRowNewCoefVal(SCIP_EVENT *event)
    Definition: event.c:1702
    SCIP_Real SCIPeventGetRowNewSideVal(SCIP_EVENT *event)
    Definition: event.c:1787
    SCIP_Real SCIPeventGetRowOldConstVal(SCIP_EVENT *event)
    Definition: event.c:1719
    SCIP_ROW * SCIPeventGetRow(SCIP_EVENT *event)
    Definition: event.c:1638
    SCIP_VARTYPE SCIPeventGetOldtype(SCIP_EVENT *event)
    Definition: event.c:1462
    datastructures for managing events
    type definitions for managing events
    struct SCIP_EventhdlrData SCIP_EVENTHDLRDATA
    Definition: type_event.h:160
    uint64_t SCIP_EVENTTYPE
    Definition: type_event.h:156
    type definitions for LP management
    enum SCIP_SideType SCIP_SIDETYPE
    Definition: type_lp.h:68
    type definitions for rational numbers
    type definitions for storing primal CIP solutions
    type definitions for branch and bound tree
    type definitions for problem variables
    enum SCIP_ImplintType SCIP_IMPLINTTYPE
    Definition: type_var.h:117
    enum SCIP_Vartype SCIP_VARTYPE
    Definition: type_var.h:73