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