Scippy

    SCIP

    Solving Constraint Integer Programs

    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 event.h
    26 * @brief internal methods for managing events
    27 * @author Tobias Achterberg
    28 */
    29
    30/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
    31
    32#ifndef __SCIP_EVENT_H__
    33#define __SCIP_EVENT_H__
    34
    35
    36#include "scip/def.h"
    38#include "scip/type_retcode.h"
    39#include "scip/type_set.h"
    40#include "scip/type_event.h"
    41#include "scip/type_lp.h"
    42#include "scip/type_var.h"
    43#include "scip/type_sol.h"
    44#include "scip/type_primal.h"
    45#include "scip/type_branch.h"
    46#include "scip/pub_event.h"
    47
    48/* In optimized mode, some function calls are overwritten by defines to reduce the number of function calls and
    49 * speed up the algorithms. For this, we need to include struct_event.h.
    50 */
    51#ifdef NDEBUG
    52#include "scip/struct_event.h"
    53#endif
    54
    55#ifdef __cplusplus
    56extern "C" {
    57#endif
    58
    59/*
    60 * Event handler methods
    61 */
    62
    63/** copies the given event handler to a new scip */
    65 SCIP_EVENTHDLR* eventhdlr, /**< event handler */
    66 SCIP_SET* set /**< SCIP_SET of SCIP to copy to */
    67 );
    68
    69/** creates an event handler */
    71 SCIP_EVENTHDLR** eventhdlr, /**< pointer to event handler data structure */
    72 SCIP_SET* set, /**< global SCIP settings */
    73 const char* name, /**< name of event handler */
    74 const char* desc, /**< description of event handler */
    75 SCIP_DECL_EVENTCOPY ((*eventcopy)), /**< copy method of event handler or NULL if you don't want to copy your plugin into sub-SCIPs */
    76 SCIP_DECL_EVENTFREE ((*eventfree)), /**< destructor of event handler */
    77 SCIP_DECL_EVENTINIT ((*eventinit)), /**< initialize event handler */
    78 SCIP_DECL_EVENTEXIT ((*eventexit)), /**< deinitialize event handler */
    79 SCIP_DECL_EVENTINITSOL((*eventinitsol)), /**< solving process initialization method of event handler */
    80 SCIP_DECL_EVENTEXITSOL((*eventexitsol)), /**< solving process deinitialization method of event handler */
    81 SCIP_DECL_EVENTDELETE ((*eventdelete)), /**< free specific event data */
    82 SCIP_DECL_EVENTEXEC ((*eventexec)), /**< execute event handler */
    83 SCIP_EVENTHDLRDATA* eventhdlrdata /**< event handler data */
    84 );
    85
    86/** calls destructor and frees memory of event handler */
    88 SCIP_EVENTHDLR** eventhdlr, /**< pointer to event handler data structure */
    89 SCIP_SET* set /**< global SCIP settings */
    90 );
    91
    92/** initializes event handler */
    94 SCIP_EVENTHDLR* eventhdlr, /**< event handler for this event */
    95 SCIP_SET* set /**< global SCIP settings */
    96 );
    97
    98/** calls exit method of event handler */
    100 SCIP_EVENTHDLR* eventhdlr, /**< event handler for this event */
    101 SCIP_SET* set /**< global SCIP settings */
    102 );
    103
    104/** informs event handler that the branch and bound process is being started */
    106 SCIP_EVENTHDLR* eventhdlr, /**< event handler */
    107 SCIP_SET* set /**< global SCIP settings */
    108 );
    109
    110/** informs event handler that the branch and bound process data is being freed */
    112 SCIP_EVENTHDLR* eventhdlr, /**< event handler */
    113 SCIP_SET* set /**< global SCIP settings */
    114 );
    115
    116/** calls execution method of event handler */
    118 SCIP_EVENTHDLR* eventhdlr, /**< event handler */
    119 SCIP_SET* set, /**< global SCIP settings */
    120 SCIP_EVENT* event, /**< event to call event handler with */
    121 SCIP_EVENTDATA* eventdata /**< user data for the issued event */
    122 );
    123
    124/**
    125 * callback setter methods of event handlers
    126 */
    127/** sets copy callback for all events of this event handler */
    129 SCIP_EVENTHDLR* eventhdlr, /**< event handler */
    130 SCIP_DECL_EVENTCOPY ((*eventcopy)) /**< copy callback for events */
    131 );
    132
    133/** sets destructor callback of this event handler */
    135 SCIP_EVENTHDLR* eventhdlr, /**< event handler */
    136 SCIP_DECL_EVENTFREE ((*eventfree)) /**< destructor callback of event handler */
    137 );
    138
    139/** sets initialization callback of this event handler */
    141 SCIP_EVENTHDLR* eventhdlr, /**< event handler */
    142 SCIP_DECL_EVENTINIT ((*eventinit)) /**< initialization callback of event handler */
    143 );
    144
    145/** sets deinitialization callback of this event handler */
    147 SCIP_EVENTHDLR* eventhdlr, /**< event handler */
    148 SCIP_DECL_EVENTEXIT ((*eventexit)) /**< deinitialization callback of event handler */
    149 );
    150
    151/** sets solving process initialization callback of this event handler */
    153 SCIP_EVENTHDLR* eventhdlr, /**< event handler */
    154 SCIP_DECL_EVENTINITSOL((*eventinitsol)) /**< solving process initialization callback of event handler */
    155 );
    156
    157/** sets solving process deinitialization callback of this event handler */
    159 SCIP_EVENTHDLR* eventhdlr, /**< event handler */
    160 SCIP_DECL_EVENTEXITSOL((*eventexitsol)) /**< solving process deinitialization callback of event handler */
    161 );
    162
    163/** sets callback to free specific event data */
    165 SCIP_EVENTHDLR* eventhdlr, /**< event handler */
    166 SCIP_DECL_EVENTDELETE ((*eventdelete)) /**< callback to free specific event data */
    167 );
    168
    169/** enables or disables all clocks of \p eventhdlr, depending on the value of the flag */
    171 SCIP_EVENTHDLR* eventhdlr, /**< the event handler for which all clocks should be enabled or disabled */
    172 SCIP_Bool enable /**< should the clocks of the event handler be enabled? */
    173 );
    174
    175/*
    176 * Event methods
    177 */
    178
    179/** creates a synchronization event */
    181 SCIP_EVENT** event, /**< pointer to store the event */
    182 BMS_BLKMEM* blkmem /**< block memory */
    183 );
    184
    185/** creates an event for an addition of a variable to the problem */
    187 SCIP_EVENT** event, /**< pointer to store the event */
    188 BMS_BLKMEM* blkmem, /**< block memory */
    189 SCIP_VAR* var /**< variable that was added to the problem */
    190 );
    191
    192/** creates an event for a deletion of a variable from the problem */
    194 SCIP_EVENT** event, /**< pointer to store the event */
    195 BMS_BLKMEM* blkmem, /**< block memory */
    196 SCIP_VAR* var /**< variable that is to be deleted from the problem */
    197 );
    198
    199/** creates an event for a fixing of a variable */
    201 SCIP_EVENT** event, /**< pointer to store the event */
    202 BMS_BLKMEM* blkmem, /**< block memory */
    203 SCIP_VAR* var /**< variable that was fixed */
    204 );
    205
    206/** creates an event for a change in the number of locks of a variable down to zero or one */
    208 SCIP_EVENT** event, /**< pointer to store the event */
    209 BMS_BLKMEM* blkmem, /**< block memory */
    210 SCIP_VAR* var /**< variable that changed the number of locks */
    211 );
    212
    213/** creates an event for a change in the objective value of a variable */
    215 SCIP_EVENT** event, /**< pointer to store the event */
    216 BMS_BLKMEM* blkmem, /**< block memory */
    217 SCIP_VAR* var, /**< variable whose objective value changed */
    218 SCIP_Real oldobj, /**< old objective value before value changed */
    219 SCIP_Real newobj /**< new objective value after value changed */
    220 );
    221
    222/** creates an event for a change in the global lower bound of a variable */
    224 SCIP_EVENT** event, /**< pointer to store the event */
    225 BMS_BLKMEM* blkmem, /**< block memory */
    226 SCIP_VAR* var, /**< variable whose bound changed */
    227 SCIP_Real oldbound, /**< old bound before bound changed */
    228 SCIP_Real newbound /**< new bound after bound changed */
    229 );
    230
    231/** creates an event for a change in the global upper bound of a variable */
    233 SCIP_EVENT** event, /**< pointer to store the event */
    234 BMS_BLKMEM* blkmem, /**< block memory */
    235 SCIP_VAR* var, /**< variable whose bound changed */
    236 SCIP_Real oldbound, /**< old bound before bound changed */
    237 SCIP_Real newbound /**< new bound after bound changed */
    238 );
    239
    240/** creates an event for a change in the lower bound of a variable */
    242 SCIP_EVENT** event, /**< pointer to store the event */
    243 BMS_BLKMEM* blkmem, /**< block memory */
    244 SCIP_VAR* var, /**< variable whose bound changed */
    245 SCIP_Real oldbound, /**< old bound before bound changed */
    246 SCIP_Real newbound /**< new bound after bound changed */
    247 );
    248
    249/** creates an event for a change in the upper bound of a variable */
    251 SCIP_EVENT** event, /**< pointer to store the event */
    252 BMS_BLKMEM* blkmem, /**< block memory */
    253 SCIP_VAR* var, /**< variable whose bound changed */
    254 SCIP_Real oldbound, /**< old bound before bound changed */
    255 SCIP_Real newbound /**< new bound after bound changed */
    256 );
    257
    258/** adds the data for the exact changes to existing bound event */
    260 SCIP_EVENT* event, /**< the event */
    261 BMS_BLKMEM* blkmem, /**< block memory */
    262 SCIP_RATIONAL* oldbound, /**< old bound before bound changed */
    263 SCIP_RATIONAL* newbound /**< new bound after bound changed */
    264 );
    265
    266/** adds the data for the exact changes to existing obj event */
    268 SCIP_EVENT* event, /**< the event */
    269 BMS_BLKMEM* blkmem, /**< block memory */
    270 SCIP_RATIONAL* oldobj, /**< old obj before change */
    271 SCIP_RATIONAL* newobj /**< new obj after change */
    272 );
    273
    274/** creates an event for an addition of a global domain hole to a variable */
    276 SCIP_EVENT** event, /**< pointer to store the event */
    277 BMS_BLKMEM* blkmem, /**< block memory */
    278 SCIP_VAR* var, /**< variable whose bound changed */
    279 SCIP_Real left, /**< left bound of open interval in new hole */
    280 SCIP_Real right /**< right bound of open interval in new hole */
    281 );
    282
    283/** creates an event for removing a global domain hole of a variable */
    285 SCIP_EVENT** event, /**< pointer to store the event */
    286 BMS_BLKMEM* blkmem, /**< block memory */
    287 SCIP_VAR* var, /**< variable whose bound changed */
    288 SCIP_Real left, /**< left bound of open interval in hole */
    289 SCIP_Real right /**< right bound of open interval in hole */
    290 );
    291
    292/** creates an event for an addition of a local domain hole to a variable */
    294 SCIP_EVENT** event, /**< pointer to store the event */
    295 BMS_BLKMEM* blkmem, /**< block memory */
    296 SCIP_VAR* var, /**< variable whose bound changed */
    297 SCIP_Real left, /**< left bound of open interval in new hole */
    298 SCIP_Real right /**< right bound of open interval in new hole */
    299 );
    300
    301/** creates an event for removing a local domain hole of a variable */
    303 SCIP_EVENT** event, /**< pointer to store the event */
    304 BMS_BLKMEM* blkmem, /**< block memory */
    305 SCIP_VAR* var, /**< variable whose bound changed */
    306 SCIP_Real left, /**< left bound of open interval in hole */
    307 SCIP_Real right /**< right bound of open interval in hole */
    308 );
    309
    310/** creates an event for an addition to the variable's implications list, clique or variable bounds information */
    312 SCIP_EVENT** event, /**< pointer to store the event */
    313 BMS_BLKMEM* blkmem, /**< block memory */
    314 SCIP_VAR* var /**< variable that was fixed */
    315 );
    316
    317/** creates an event for changing the type of a variable */
    319 SCIP_EVENT** event, /**< pointer to store the event */
    320 BMS_BLKMEM* blkmem, /**< block memory */
    321 SCIP_VAR* var, /**< variable whose type changed */
    322 SCIP_VARTYPE oldtype, /**< old variable type */
    323 SCIP_VARTYPE newtype /**< new variable type */
    324 );
    325
    326/** creates an event for changing the implied integral type of a variable */
    328 SCIP_EVENT** event, /**< pointer to store the event */
    329 BMS_BLKMEM* blkmem, /**< block memory */
    330 SCIP_VAR* var, /**< variable whose implied type changed */
    331 SCIP_IMPLINTTYPE oldtype, /**< old variable implied type */
    332 SCIP_IMPLINTTYPE newtype /**< new variable implied type */
    333);
    334
    335/** creates an event for the addition of a linear row to the separation storage */
    337 SCIP_EVENT** event, /**< pointer to store the event */
    338 BMS_BLKMEM* blkmem, /**< block memory */
    339 SCIP_ROW* row /**< row that was added to the separation storage*/
    340 );
    341
    342/** creates an event for the deletion of a linear row from the separation storage */
    344 SCIP_EVENT** event, /**< pointer to store the event */
    345 BMS_BLKMEM* blkmem, /**< block memory */
    346 SCIP_ROW* row /**< row that was deleted from the separation storage */
    347 );
    348
    349/** creates an event for the addition of a linear row to the LP */
    351 SCIP_EVENT** event, /**< pointer to store the event */
    352 BMS_BLKMEM* blkmem, /**< block memory */
    353 SCIP_ROW* row /**< row that was added to the LP */
    354 );
    355
    356/** creates an event for the deletion of a linear row from the LP */
    358 SCIP_EVENT** event, /**< pointer to store the event */
    359 BMS_BLKMEM* blkmem, /**< block memory */
    360 SCIP_ROW* row /**< row that was deleted from the LP */
    361 );
    362
    363/** creates an event for the change of a coefficient in a linear row */
    365 SCIP_EVENT** event, /**< pointer to store the event */
    366 BMS_BLKMEM* blkmem, /**< block memory */
    367 SCIP_ROW* row, /**< row in which a coefficient changed */
    368 SCIP_COL* col, /**< column which coefficient changed */
    369 SCIP_Real oldval, /**< old value of coefficient */
    370 SCIP_Real newval /**< new value of coefficient */
    371 );
    372
    373/** creates an event for the change of a constant in a linear row */
    375 SCIP_EVENT** event, /**< pointer to store the event */
    376 BMS_BLKMEM* blkmem, /**< block memory */
    377 SCIP_ROW* row, /**< row in which the constant changed */
    378 SCIP_Real oldval, /**< old value of constant */
    379 SCIP_Real newval /**< new value of constant */
    380 );
    381
    382/** creates an event for the change of a side of a linear row */
    384 SCIP_EVENT** event, /**< pointer to store the event */
    385 BMS_BLKMEM* blkmem, /**< block memory */
    386 SCIP_ROW* row, /**< row which side has changed */
    387 SCIP_SIDETYPE side, /**< which side has changed */
    388 SCIP_Real oldval, /**< old value of side */
    389 SCIP_Real newval /**< new value of side */
    390 );
    391
    392/** frees an event */
    394 SCIP_EVENT** event, /**< event to free */
    395 BMS_BLKMEM* blkmem /**< block memory buffer */
    396 );
    397
    398/** sets type of event */
    400 SCIP_EVENT* event, /**< event */
    401 SCIP_EVENTTYPE eventtype /**< new event type */
    402 );
    403
    404/** sets variable for a variable event */
    406 SCIP_EVENT* event, /**< event */
    407 SCIP_VAR* var /**< new variable */
    408 );
    409
    410/** sets node for a node or LP event */
    412 SCIP_EVENT* event, /**< event */
    413 SCIP_NODE* node /**< new node */
    414 );
    415
    416/** sets solution for a primal solution event */
    418 SCIP_EVENT* event, /**< event */
    419 SCIP_SOL* sol /**< new primal solution */
    420 );
    421
    422/** processes event by calling the appropriate event handlers */
    424 SCIP_EVENT* event, /**< event */
    425 SCIP_SET* set, /**< global SCIP settings */
    426 SCIP_PRIMAL* primal, /**< primal data; only needed for objchanged events, or NULL */
    427 SCIP_LP* lp, /**< current LP data; only needed for obj/boundchanged events, or NULL */
    428 SCIP_BRANCHCAND* branchcand, /**< branching candidate storage; only needed for bound change events, or NULL */
    429 SCIP_EVENTFILTER* eventfilter /**< event filter for global events; not needed for variable specific events */
    430 );
    431
    432
    433
    434/*
    435 * Event filter methods
    436 */
    437
    438/** creates an event filter */
    440 SCIP_EVENTFILTER** eventfilter, /**< pointer to store the event filter */
    441 BMS_BLKMEM* blkmem /**< block memory buffer */
    442 );
    443
    444/** frees an event filter and the associated event data entries */
    446 SCIP_EVENTFILTER** eventfilter, /**< pointer to store the event filter */
    447 BMS_BLKMEM* blkmem, /**< block memory buffer */
    448 SCIP_SET* set /**< global SCIP settings */
    449 );
    450
    451/** adds element to event filter */
    453 SCIP_EVENTFILTER* eventfilter, /**< event filter */
    454 BMS_BLKMEM* blkmem, /**< block memory buffer */
    455 SCIP_SET* set, /**< global SCIP settings */
    456 SCIP_EVENTTYPE eventtype, /**< event type to catch */
    457 SCIP_EVENTHDLR* eventhdlr, /**< event handler to call for the event processing */
    458 SCIP_EVENTDATA* eventdata, /**< event data to pass to the event handler for the event processing */
    459 int* filterpos /**< pointer to store position of event filter entry, or NULL */
    460 );
    461
    462/** deletes element from event filter */
    464 SCIP_EVENTFILTER* eventfilter, /**< event filter */
    465 BMS_BLKMEM* blkmem, /**< block memory buffer */
    466 SCIP_SET* set, /**< global SCIP settings */
    467 SCIP_EVENTTYPE eventtype, /**< event type */
    468 SCIP_EVENTHDLR* eventhdlr, /**< event handler to call for the event processing */
    469 SCIP_EVENTDATA* eventdata, /**< event data to pass to the event handler for the event processing */
    470 int filterpos /**< position of event filter entry, or -1 if unknown */
    471 );
    472
    473/** processes the event with all event handlers with matching filter setting */
    475 SCIP_EVENTFILTER* eventfilter, /**< event filter */
    476 SCIP_SET* set, /**< global SCIP settings */
    477 SCIP_EVENT* event /**< event to process */
    478 );
    479
    480
    481
    482/*
    483 * Event queue methods
    484 */
    485
    486/** creates an event queue */
    488 SCIP_EVENTQUEUE** eventqueue /**< pointer to store the event queue */
    489 );
    490
    491/** frees event queue; there must not be any unprocessed events in the queue! */
    493 SCIP_EVENTQUEUE** eventqueue /**< pointer to the event queue */
    494 );
    495
    496/** processes event or adds event to the event queue */
    498 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    499 BMS_BLKMEM* blkmem, /**< block memory buffer */
    500 SCIP_SET* set, /**< global SCIP settings */
    501 SCIP_PRIMAL* primal, /**< primal data; only needed for objchanged events, or NULL */
    502 SCIP_LP* lp, /**< current LP data; only needed for obj/boundchanged events, or NULL */
    503 SCIP_BRANCHCAND* branchcand, /**< branching candidate storage; only needed for bound change events, or NULL */
    504 SCIP_EVENTFILTER* eventfilter, /**< event filter for global events; not needed for variable specific events */
    505 SCIP_EVENT** event /**< pointer to event to add to the queue; will be NULL after queue addition */
    506 );
    507
    508/** marks queue to delay incoming events until a call to SCIPeventqueueProcess() */
    510 SCIP_EVENTQUEUE* eventqueue /**< event queue */
    511 );
    512
    513/** processes all events in the queue */
    515 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    516 BMS_BLKMEM* blkmem, /**< block memory buffer */
    517 SCIP_SET* set, /**< global SCIP settings */
    518 SCIP_PRIMAL* primal, /**< primal data */
    519 SCIP_LP* lp, /**< current LP data */
    520 SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
    521 SCIP_EVENTFILTER* eventfilter /**< global event filter */
    522 );
    523
    524/** returns TRUE iff events of the queue are delayed until the next SCIPeventqueueProcess() call */
    526 SCIP_EVENTQUEUE* eventqueue /**< event queue */
    527 );
    528
    529#ifdef NDEBUG
    530
    531/* In optimized mode, the function calls are overwritten by defines to reduce the number of function calls and
    532 * speed up the algorithms.
    533 */
    534
    535#define SCIPeventqueueIsDelayed(eventqueue) ((eventqueue)->delayevents)
    536
    537#endif
    538
    539#ifdef __cplusplus
    540}
    541#endif
    542
    543#endif
    SCIP_DECL_EVENTDELETE(EventhdlrNewSol::scip_delete)
    SCIP_DECL_EVENTEXEC(EventhdlrNewSol::scip_exec)
    SCIP_DECL_EVENTINIT(EventhdlrNewSol::scip_init)
    SCIP_DECL_EVENTINITSOL(EventhdlrNewSol::scip_initsol)
    SCIP_DECL_EVENTEXIT(EventhdlrNewSol::scip_exit)
    SCIP_DECL_EVENTEXITSOL(EventhdlrNewSol::scip_exitsol)
    SCIP_DECL_EVENTFREE(EventhdlrNewSol::scip_free)
    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_RETCODE SCIPeventhdlrCopyInclude(SCIP_EVENTHDLR *eventhdlr, SCIP_SET *set)
    Definition: event.c:62
    SCIP_RETCODE SCIPeventFree(SCIP_EVENT **event, BMS_BLKMEM *blkmem)
    Definition: event.c:1168
    SCIP_RETCODE SCIPeventCreateLbChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound)
    Definition: event.c:752
    SCIP_RETCODE SCIPeventCreateVarFixed(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var)
    Definition: event.c:634
    SCIP_RETCODE SCIPeventhdlrInitsol(SCIP_EVENTHDLR *eventhdlr, SCIP_SET *set)
    Definition: event.c:318
    SCIP_RETCODE SCIPeventCreateVarAdded(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var)
    Definition: event.c:598
    SCIP_RETCODE SCIPeventCreateRowDeletedLP(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row)
    Definition: event.c:1055
    SCIP_RETCODE SCIPeventhdlrCreate(SCIP_EVENTHDLR **eventhdlr, SCIP_SET *set, const char *name, const char *desc, SCIP_DECL_EVENTCOPY((*eventcopy)), SCIP_DECL_EVENTFREE((*eventfree)), SCIP_DECL_EVENTINIT((*eventinit)), SCIP_DECL_EVENTEXIT((*eventexit)), SCIP_DECL_EVENTINITSOL((*eventinitsol)), SCIP_DECL_EVENTEXITSOL((*eventexitsol)), SCIP_DECL_EVENTDELETE((*eventdelete)), SCIP_DECL_EVENTEXEC((*eventexec)), SCIP_EVENTHDLRDATA *eventhdlrdata)
    Definition: event.c:195
    SCIP_RETCODE SCIPeventqueueFree(SCIP_EVENTQUEUE **eventqueue)
    Definition: event.c:2521
    void SCIPeventhdlrSetFree(SCIP_EVENTHDLR *eventhdlr, SCIP_DECL_EVENTFREE((*eventfree)))
    Definition: event.c:438
    SCIP_RETCODE SCIPeventCreateGholeRemoved(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real left, SCIP_Real right)
    Definition: event.c:867
    SCIP_RETCODE SCIPeventhdlrExitsol(SCIP_EVENTHDLR *eventhdlr, SCIP_SET *set)
    Definition: event.c:342
    SCIP_RETCODE SCIPeventCreateUbChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound)
    Definition: event.c:780
    void SCIPeventhdlrEnableOrDisableClocks(SCIP_EVENTHDLR *eventhdlr, SCIP_Bool enable)
    Definition: event.c:514
    void SCIPeventhdlrSetExitsol(SCIP_EVENTHDLR *eventhdlr, SCIP_DECL_EVENTEXITSOL((*eventexitsol)))
    Definition: event.c:482
    SCIP_RETCODE SCIPeventCreateVarUnlocked(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var)
    Definition: event.c:656
    SCIP_RETCODE SCIPeventhdlrExit(SCIP_EVENTHDLR *eventhdlr, SCIP_SET *set)
    Definition: event.c:288
    SCIP_RETCODE SCIPeventChgSol(SCIP_EVENT *event, SCIP_SOL *sol)
    Definition: event.c:1584
    SCIP_RETCODE SCIPeventAddExactObjChg(SCIP_EVENT *event, BMS_BLKMEM *blkmem, SCIP_RATIONAL *oldobj, SCIP_RATIONAL *newobj)
    Definition: event.c:827
    void SCIPeventhdlrSetInitsol(SCIP_EVENTHDLR *eventhdlr, SCIP_DECL_EVENTINITSOL((*eventinitsol)))
    Definition: event.c:471
    SCIP_RETCODE SCIPeventCreateObjChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real newobj)
    Definition: event.c:677
    SCIP_RETCODE SCIPeventChgNode(SCIP_EVENT *event, SCIP_NODE *node)
    Definition: event.c:1547
    SCIP_RETCODE SCIPeventqueueAdd(SCIP_EVENTQUEUE *eventqueue, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTFILTER *eventfilter, SCIP_EVENT **event)
    Definition: event.c:2561
    SCIP_RETCODE SCIPeventhdlrFree(SCIP_EVENTHDLR **eventhdlr, SCIP_SET *set)
    Definition: event.c:221
    SCIP_RETCODE SCIPeventfilterFree(SCIP_EVENTFILTER **eventfilter, BMS_BLKMEM *blkmem, SCIP_SET *set)
    Definition: event.c:2167
    SCIP_RETCODE SCIPeventCreateRowSideChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row, SCIP_SIDETYPE side, SCIP_Real oldval, SCIP_Real newval)
    Definition: event.c:1122
    SCIP_RETCODE SCIPeventCreateRowAddedSepa(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row)
    Definition: event.c:998
    SCIP_Bool SCIPeventqueueIsDelayed(SCIP_EVENTQUEUE *eventqueue)
    Definition: event.c:2933
    SCIP_RETCODE SCIPeventAddExactBdChg(SCIP_EVENT *event, BMS_BLKMEM *blkmem, SCIP_RATIONAL *oldbound, SCIP_RATIONAL *newbound)
    Definition: event.c:808
    SCIP_RETCODE SCIPeventCreateGholeAdded(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real left, SCIP_Real right)
    Definition: event.c:845
    SCIP_RETCODE SCIPeventqueueProcess(SCIP_EVENTQUEUE *eventqueue, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTFILTER *eventfilter)
    Definition: event.c:2861
    SCIP_RETCODE SCIPeventCreateRowDeletedSepa(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row)
    Definition: event.c:1017
    void SCIPeventhdlrSetCopy(SCIP_EVENTHDLR *eventhdlr, SCIP_DECL_EVENTCOPY((*eventcopy)))
    Definition: event.c:427
    SCIP_RETCODE SCIPeventCreateLholeAdded(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real left, SCIP_Real right)
    Definition: event.c:889
    void SCIPeventhdlrSetInit(SCIP_EVENTHDLR *eventhdlr, SCIP_DECL_EVENTINIT((*eventinit)))
    Definition: event.c:449
    SCIP_RETCODE SCIPeventhdlrInit(SCIP_EVENTHDLR *eventhdlr, SCIP_SET *set)
    Definition: event.c:252
    SCIP_RETCODE SCIPeventfilterDel(SCIP_EVENTFILTER *eventfilter, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)
    Definition: event.c:2300
    SCIP_RETCODE SCIPeventfilterCreate(SCIP_EVENTFILTER **eventfilter, BMS_BLKMEM *blkmem)
    Definition: event.c:2142
    void SCIPeventhdlrSetDelete(SCIP_EVENTHDLR *eventhdlr, SCIP_DECL_EVENTDELETE((*eventdelete)))
    Definition: event.c:493
    void SCIPeventhdlrSetExit(SCIP_EVENTHDLR *eventhdlr, SCIP_DECL_EVENTEXIT((*eventexit)))
    Definition: event.c:460
    SCIP_RETCODE SCIPeventhdlrExec(SCIP_EVENTHDLR *eventhdlr, SCIP_SET *set, SCIP_EVENT *event, SCIP_EVENTDATA *eventdata)
    Definition: event.c:366
    SCIP_RETCODE SCIPeventChgVar(SCIP_EVENT *event, SCIP_VAR *var)
    Definition: event.c:1281
    SCIP_RETCODE SCIPeventCreateRowConstChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row, SCIP_Real oldval, SCIP_Real newval)
    Definition: event.c:1099
    SCIP_RETCODE SCIPeventProcess(SCIP_EVENT *event, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTFILTER *eventfilter)
    Definition: event.c:1804
    SCIP_RETCODE SCIPeventCreateSync(SCIP_EVENT **event, BMS_BLKMEM *blkmem)
    Definition: event.c:555
    SCIP_RETCODE SCIPeventCreateImplAdded(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var)
    Definition: event.c:933
    SCIP_RETCODE SCIPeventChgType(SCIP_EVENT *event, SCIP_EVENTTYPE eventtype)
    Definition: event.c:1204
    SCIP_RETCODE SCIPeventqueueCreate(SCIP_EVENTQUEUE **eventqueue)
    Definition: event.c:2505
    SCIP_RETCODE SCIPeventfilterProcess(SCIP_EVENTFILTER *eventfilter, SCIP_SET *set, SCIP_EVENT *event)
    Definition: event.c:2403
    SCIP_RETCODE SCIPeventCreateImplTypeChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_IMPLINTTYPE oldtype, SCIP_IMPLINTTYPE newtype)
    Definition: event.c:975
    SCIP_RETCODE SCIPeventfilterAdd(SCIP_EVENTFILTER *eventfilter, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)
    Definition: event.c:2207
    SCIP_RETCODE SCIPeventCreateVarDeleted(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var)
    Definition: event.c:616
    SCIP_RETCODE SCIPeventCreateRowCoefChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row, SCIP_COL *col, SCIP_Real oldval, SCIP_Real newval)
    Definition: event.c:1074
    SCIP_RETCODE SCIPeventCreateGubChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound)
    Definition: event.c:727
    SCIP_RETCODE SCIPeventCreateGlbChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound)
    Definition: event.c:702
    SCIP_RETCODE SCIPeventqueueDelay(SCIP_EVENTQUEUE *eventqueue)
    Definition: event.c:2846
    SCIP_RETCODE SCIPeventCreateLholeRemoved(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real left, SCIP_Real right)
    Definition: event.c:911
    SCIP_RETCODE SCIPeventCreateTypeChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_VARTYPE oldtype, SCIP_VARTYPE newtype)
    Definition: event.c:952
    SCIP_RETCODE SCIPeventCreateRowAddedLP(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row)
    Definition: event.c:1036
    memory allocation routines
    struct BMS_BlkMem BMS_BLKMEM
    Definition: memory.h:437
    public methods for managing events
    datastructures for managing events
    Definition: heur_padm.c:135
    type definitions for branching rules
    type definitions for managing events
    struct SCIP_EventData SCIP_EVENTDATA
    Definition: type_event.h:179
    struct SCIP_EventhdlrData SCIP_EVENTHDLRDATA
    Definition: type_event.h:160
    #define SCIP_DECL_EVENTCOPY(x)
    Definition: type_event.h:189
    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 collecting primal CIP solutions and primal informations
    type definitions for return codes for SCIP methods
    enum SCIP_Retcode SCIP_RETCODE
    Definition: type_retcode.h:63
    type definitions for global SCIP settings
    type definitions for storing primal CIP solutions
    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