Scippy

SCIP

Solving Constraint Integer Programs

scip_timing.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-2024 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 scip_timing.h
26 * @ingroup PUBLICCOREAPI
27 * @brief public methods for timing
28 * @author Tobias Achterberg
29 * @author Timo Berthold
30 * @author Thorsten Koch
31 * @author Alexander Martin
32 * @author Marc Pfetsch
33 * @author Kati Wolter
34 * @author Gregor Hendel
35 * @author Leona Gottwald
36 */
37
38/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
39
40#ifndef __SCIP_SCIP_TIMING_H__
41#define __SCIP_SCIP_TIMING_H__
42
43
44#include "scip/def.h"
45#include "scip/type_clock.h"
46#include "scip/type_retcode.h"
47#include "scip/type_scip.h"
48
49#ifdef __cplusplus
50extern "C" {
51#endif
52
53/**@addtogroup PublicTimingMethods
54 *
55 * @{
56 */
57
58/** gets current time of day in seconds (standard time zone)
59 *
60 * @return the current time of day in seconds (standard time zone).
61 */
62SCIP_EXPORT
64 SCIP* scip /**< SCIP data structure */
65 );
66
67/** creates a clock using the default clock type
68 *
69 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
70 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
71 */
72SCIP_EXPORT
74 SCIP* scip, /**< SCIP data structure */
75 SCIP_CLOCK** clck /**< pointer to clock timer */
76 );
77
78/** creates a clock counting the CPU user seconds
79 *
80 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
81 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
82 */
83SCIP_EXPORT
85 SCIP* scip, /**< SCIP data structure */
86 SCIP_CLOCK** clck /**< pointer to clock timer */
87 );
88
89/** creates a clock counting the wall clock seconds
90 *
91 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
92 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
93 */
94SCIP_EXPORT
96 SCIP* scip, /**< SCIP data structure */
97 SCIP_CLOCK** clck /**< pointer to clock timer */
98 );
99
100/** frees a clock
101 *
102 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
103 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
104 */
105SCIP_EXPORT
107 SCIP* scip, /**< SCIP data structure */
108 SCIP_CLOCK** clck /**< pointer to clock timer */
109 );
110
111/** resets the time measurement of a clock to zero and completely stops the clock
112 *
113 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
114 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
115 */
116SCIP_EXPORT
118 SCIP* scip, /**< SCIP data structure */
119 SCIP_CLOCK* clck /**< clock timer */
120 );
121
122/** starts the time measurement of a clock
123 *
124 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
125 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
126 */
127SCIP_EXPORT
129 SCIP* scip, /**< SCIP data structure */
130 SCIP_CLOCK* clck /**< clock timer */
131 );
132
133/** stops the time measurement of a clock
134 *
135 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
136 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
137 */
138SCIP_EXPORT
140 SCIP* scip, /**< SCIP data structure */
141 SCIP_CLOCK* clck /**< clock timer */
142 );
143
144/** enables or disables \p clck */
145SCIP_EXPORT
147 SCIP_CLOCK* clck, /**< the clock to be disabled/enabled */
148 SCIP_Bool enable /**< should the clock be enabled or disabled? */
149 );
150
151/** enables or disables all statistic clocks of SCIP concerning plugin statistics,
152 * LP execution time, strong branching time, etc.
153 *
154 * Method reads the value of the parameter timing/statistictiming. In order to disable statistic timing,
155 * set the parameter to FALSE.
156 *
157 * @note: The (pre-)solving time clocks which are relevant for the output during (pre-)solving
158 * are not affected by this method
159 *
160 * @see: For completely disabling all timing of SCIP, consider setting the parameter timing/enabled to FALSE
161 *
162 * @pre This method can be called if SCIP is in one of the following stages:
163 * - \ref SCIP_STAGE_PROBLEM
164 * - \ref SCIP_STAGE_TRANSFORMING
165 * - \ref SCIP_STAGE_TRANSFORMED
166 * - \ref SCIP_STAGE_INITPRESOLVE
167 * - \ref SCIP_STAGE_PRESOLVING
168 * - \ref SCIP_STAGE_EXITPRESOLVE
169 * - \ref SCIP_STAGE_PRESOLVED
170 * - \ref SCIP_STAGE_INITSOLVE
171 * - \ref SCIP_STAGE_SOLVING
172 * - \ref SCIP_STAGE_SOLVED
173 * - \ref SCIP_STAGE_EXITSOLVE
174 * - \ref SCIP_STAGE_FREETRANS
175 *
176 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
177 */
178SCIP_EXPORT
180 SCIP* scip /**< SCIP data structure */
181 );
182
183/** starts the current solving time
184 *
185 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
186 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
187 *
188 * @pre This method can be called if SCIP is in one of the following stages:
189 * - \ref SCIP_STAGE_PROBLEM
190 * - \ref SCIP_STAGE_TRANSFORMING
191 * - \ref SCIP_STAGE_TRANSFORMED
192 * - \ref SCIP_STAGE_INITPRESOLVE
193 * - \ref SCIP_STAGE_PRESOLVING
194 * - \ref SCIP_STAGE_EXITPRESOLVE
195 * - \ref SCIP_STAGE_PRESOLVED
196 * - \ref SCIP_STAGE_INITSOLVE
197 * - \ref SCIP_STAGE_SOLVING
198 * - \ref SCIP_STAGE_SOLVED
199 * - \ref SCIP_STAGE_EXITSOLVE
200 * - \ref SCIP_STAGE_FREETRANS
201 *
202 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
203 */
204SCIP_EXPORT
206 SCIP* scip /**< SCIP data structure */
207 );
208
209/** stops the current solving time in seconds
210 *
211 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
212 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
213 *
214 * @pre This method can be called if SCIP is in one of the following stages:
215 * - \ref SCIP_STAGE_PROBLEM
216 * - \ref SCIP_STAGE_TRANSFORMING
217 * - \ref SCIP_STAGE_TRANSFORMED
218 * - \ref SCIP_STAGE_INITPRESOLVE
219 * - \ref SCIP_STAGE_PRESOLVING
220 * - \ref SCIP_STAGE_EXITPRESOLVE
221 * - \ref SCIP_STAGE_PRESOLVED
222 * - \ref SCIP_STAGE_INITSOLVE
223 * - \ref SCIP_STAGE_SOLVING
224 * - \ref SCIP_STAGE_SOLVED
225 * - \ref SCIP_STAGE_EXITSOLVE
226 * - \ref SCIP_STAGE_FREETRANS
227 *
228 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
229 */
230SCIP_EXPORT
232 SCIP* scip /**< SCIP data structure */
233 );
234
235/** gets the measured time of a clock in seconds
236 *
237 * @return the measured time of a clock in seconds.
238 */
239SCIP_EXPORT
241 SCIP* scip, /**< SCIP data structure */
242 SCIP_CLOCK* clck /**< clock timer */
243 );
244
245/** sets the measured time of a clock to the given value in seconds
246 *
247 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
248 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
249 */
250SCIP_EXPORT
252 SCIP* scip, /**< SCIP data structure */
253 SCIP_CLOCK* clck, /**< clock timer */
254 SCIP_Real sec /**< time in seconds to set the clock's timer to */
255 );
256
257/** gets the current total SCIP time in seconds, possibly accumulated over several problems.
258 *
259 * @return the current total SCIP time in seconds, ie. the total time since the SCIP instance has been created
260 */
261SCIP_EXPORT
263 SCIP* scip /**< SCIP data structure */
264 );
265
266/** gets the current solving time in seconds
267 *
268 * @return the current solving time in seconds.
269 *
270 * @pre This method can be called if SCIP is in one of the following stages:
271 * - \ref SCIP_STAGE_PROBLEM
272 * - \ref SCIP_STAGE_TRANSFORMING
273 * - \ref SCIP_STAGE_TRANSFORMED
274 * - \ref SCIP_STAGE_INITPRESOLVE
275 * - \ref SCIP_STAGE_PRESOLVING
276 * - \ref SCIP_STAGE_EXITPRESOLVE
277 * - \ref SCIP_STAGE_PRESOLVED
278 * - \ref SCIP_STAGE_INITSOLVE
279 * - \ref SCIP_STAGE_SOLVING
280 * - \ref SCIP_STAGE_SOLVED
281 *
282 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
283 */
284SCIP_EXPORT
286 SCIP* scip /**< SCIP data structure */
287 );
288
289/** gets the current reading time in seconds
290 *
291 * @return the current reading time in seconds.
292 *
293 * @pre This method can be called if SCIP is in one of the following stages:
294 * - \ref SCIP_STAGE_PROBLEM
295 * - \ref SCIP_STAGE_TRANSFORMING
296 * - \ref SCIP_STAGE_TRANSFORMED
297 * - \ref SCIP_STAGE_INITPRESOLVE
298 * - \ref SCIP_STAGE_PRESOLVING
299 * - \ref SCIP_STAGE_EXITPRESOLVE
300 * - \ref SCIP_STAGE_PRESOLVED
301 * - \ref SCIP_STAGE_INITSOLVE
302 * - \ref SCIP_STAGE_SOLVING
303 * - \ref SCIP_STAGE_SOLVED
304 *
305 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
306 */
307SCIP_EXPORT
309 SCIP* scip /**< SCIP data structure */
310 );
311
312/** gets the current presolving time in seconds
313 *
314 * @return the current presolving time in seconds.
315 *
316 * @pre This method can be called if SCIP is in one of the following stages:
317 * - \ref SCIP_STAGE_INITPRESOLVE
318 * - \ref SCIP_STAGE_PRESOLVING
319 * - \ref SCIP_STAGE_EXITPRESOLVE
320 * - \ref SCIP_STAGE_PRESOLVED
321 * - \ref SCIP_STAGE_INITSOLVE
322 * - \ref SCIP_STAGE_SOLVING
323 * - \ref SCIP_STAGE_SOLVED
324 *
325 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
326 */
327SCIP_EXPORT
329 SCIP* scip /**< SCIP data structure */
330 );
331
332/** gets the time need to solve the first LP in the root node
333 *
334 * @return the solving time for the first LP in the root node in seconds.
335 *
336 * @pre This method can be called if SCIP is in one of the following stages:
337 * - \ref SCIP_STAGE_TRANSFORMING
338 * - \ref SCIP_STAGE_TRANSFORMED
339 * - \ref SCIP_STAGE_INITPRESOLVE
340 * - \ref SCIP_STAGE_PRESOLVING
341 * - \ref SCIP_STAGE_EXITPRESOLVE
342 * - \ref SCIP_STAGE_PRESOLVED
343 * - \ref SCIP_STAGE_INITSOLVE
344 * - \ref SCIP_STAGE_SOLVING
345 * - \ref SCIP_STAGE_SOLVED
346 *
347 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
348 */
349SCIP_EXPORT
351 SCIP* scip /**< SCIP data structure */
352 );
353
354/**@} */
355
356#ifdef __cplusplus
357}
358#endif
359
360#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:172
SCIP_RETCODE SCIPcreateClock(SCIP *scip, SCIP_CLOCK **clck)
Definition: scip_timing.c:76
SCIP_RETCODE SCIPresetClock(SCIP *scip, SCIP_CLOCK *clck)
Definition: scip_timing.c:144
SCIP_Real SCIPgetFirstLPTime(SCIP *scip)
Definition: scip_timing.c:468
void SCIPsetClockEnabled(SCIP_CLOCK *clck, SCIP_Bool enable)
Definition: scip_timing.c:191
SCIP_RETCODE SCIPcreateCPUClock(SCIP *scip, SCIP_CLOCK **clck)
Definition: scip_timing.c:93
SCIP_Real SCIPgetTimeOfDay(SCIP *scip)
Definition: scip_timing.c:62
SCIP_RETCODE SCIPstopClock(SCIP *scip, SCIP_CLOCK *clck)
Definition: scip_timing.c:178
SCIP_RETCODE SCIPenableOrDisableStatisticTiming(SCIP *scip)
Definition: scip_timing.c:227
SCIP_RETCODE SCIPstartSolvingTime(SCIP *scip)
Definition: scip_timing.c:270
SCIP_Real SCIPgetSolvingTime(SCIP *scip)
Definition: scip_timing.c:378
SCIP_Real SCIPgetTotalTime(SCIP *scip)
Definition: scip_timing.c:351
SCIP_RETCODE SCIPfreeClock(SCIP *scip, SCIP_CLOCK **clck)
Definition: scip_timing.c:127
SCIP_Real SCIPgetReadingTime(SCIP *scip)
Definition: scip_timing.c:405
SCIP_RETCODE SCIPcreateWallClock(SCIP *scip, SCIP_CLOCK **clck)
Definition: scip_timing.c:110
SCIP_RETCODE SCIPstopSolvingTime(SCIP *scip)
Definition: scip_timing.c:303
SCIP_Real SCIPgetClockTime(SCIP *scip, SCIP_CLOCK *clck)
Definition: scip_timing.c:319
SCIP_Real SCIPgetPresolvingTime(SCIP *scip)
Definition: scip_timing.c:442
SCIP_RETCODE SCIPstartClock(SCIP *scip, SCIP_CLOCK *clck)
Definition: scip_timing.c:161
SCIP_RETCODE SCIPsetClockTime(SCIP *scip, SCIP_CLOCK *clck, SCIP_Real sec)
Definition: scip_timing.c:334
type definitions for clocks and timing issues
type definitions for return codes for SCIP methods
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:63
type definitions for SCIP's main datastructure