Scippy

SCIP

Solving Constraint Integer Programs

pub_heur.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_heur.h
26 * @ingroup PUBLICCOREAPI
27 * @brief public methods for primal heuristics
28 * @author Tobias Achterberg
29 */
30
31/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
32
33#ifndef __SCIP_PUB_HEUR_H__
34#define __SCIP_PUB_HEUR_H__
35
36#include "scip/def.h"
37#include "scip/type_heur.h"
38#include "scip/type_misc.h"
39#include "scip/type_retcode.h"
40#include "scip/type_scip.h"
41#include "scip/type_sol.h"
42#include "scip/type_timing.h"
43#include "scip/type_var.h"
44
45#ifdef __cplusplus
46extern "C" {
47#endif
48
49/**@addtogroup PublicHeuristicMethods
50 *
51 * @{
52 */
53
54
55
56/** compares two heuristics w.r.t. to their delay positions and priorities */
57SCIP_EXPORT
58SCIP_DECL_SORTPTRCOMP(SCIPheurComp);
59
60/** compares two heuristics w.r.t. to their priority values */
61SCIP_EXPORT
62SCIP_DECL_SORTPTRCOMP(SCIPheurCompPriority);
63
64/** comparison method for sorting heuristics w.r.t. to their name */
65SCIP_EXPORT
66SCIP_DECL_SORTPTRCOMP(SCIPheurCompName);
67
68/** gets user data of primal heuristic */
69SCIP_EXPORT
71 SCIP_HEUR* heur /**< primal heuristic */
72 );
73
74/** sets user data of primal heuristic; user has to free old data in advance! */
75SCIP_EXPORT
77 SCIP_HEUR* heur, /**< primal heuristic */
78 SCIP_HEURDATA* heurdata /**< new primal heuristic user data */
79 );
80
81/** marks the primal heuristic as safe to use in exact solving mode */
82SCIP_EXPORT
84 SCIP_HEUR* heur /**< primal heuristic */
85 );
86
87/** gets name of primal heuristic */
88SCIP_EXPORT
89const char* SCIPheurGetName(
90 SCIP_HEUR* heur /**< primal heuristic */
91 );
92
93/** gets description of primal heuristic */
94SCIP_EXPORT
95const char* SCIPheurGetDesc(
96 SCIP_HEUR* heur /**< primal heuristic */
97 );
98
99/** gets display character of primal heuristic */
100SCIP_EXPORT
102 SCIP_HEUR* heur /**< primal heuristic */
103 );
104
105/** returns the timing mask of the heuristic */
106SCIP_EXPORT
108 SCIP_HEUR* heur /**< primal heuristic */
109 );
110
111/** sets new timing mask for heuristic */
112SCIP_EXPORT
114 SCIP_HEUR* heur, /**< primal heuristic */
115 SCIP_HEURTIMING timingmask /**< new timing mask of heuristic */
116 );
117
118/** does the heuristic use a secondary SCIP instance? */
119SCIP_EXPORT
121 SCIP_HEUR* heur /**< primal heuristic */
122 );
123
124/** gets priority of primal heuristic */
125SCIP_EXPORT
127 SCIP_HEUR* heur /**< primal heuristic */
128 );
129
130/** gets frequency of primal heuristic */
131SCIP_EXPORT
133 SCIP_HEUR* heur /**< primal heuristic */
134 );
135
136/** sets frequency of primal heuristic */
137SCIP_EXPORT
138void SCIPheurSetFreq(
139 SCIP_HEUR* heur, /**< primal heuristic */
140 int freq /**< new frequency of heuristic */
141 );
142
143/** gets frequency offset of primal heuristic */
144SCIP_EXPORT
146 SCIP_HEUR* heur /**< primal heuristic */
147 );
148
149/** gets maximal depth level for calling primal heuristic (returns -1, if no depth limit exists) */
150SCIP_EXPORT
152 SCIP_HEUR* heur /**< primal heuristic */
153 );
154
155/** gets the number of times, the heuristic was called and tried to find a solution */
156SCIP_EXPORT
158 SCIP_HEUR* heur /**< primal heuristic */
159 );
160
161/** gets the number of primal feasible solutions found by this heuristic */
162SCIP_EXPORT
164 SCIP_HEUR* heur /**< primal heuristic */
165 );
166
167/** gets the number of new best primal feasible solutions found by this heuristic */
168SCIP_EXPORT
170 SCIP_HEUR* heur /**< primal heuristic */
171 );
172
173/** is primal heuristic initialized? */
174SCIP_EXPORT
176 SCIP_HEUR* heur /**< primal heuristic */
177 );
178
179/** gets time in seconds used in this heuristic for setting up for next stages */
180SCIP_EXPORT
182 SCIP_HEUR* heur /**< primal heuristic */
183 );
184
185/** gets time in seconds used in this heuristic */
186SCIP_EXPORT
188 SCIP_HEUR* heur /**< primal heuristic */
189 );
190
191/** returns array of divesets of this primal heuristic, or NULL if it has no divesets */
192SCIP_EXPORT
194 SCIP_HEUR* heur /**< primal heuristic */
195 );
196
197/** returns the number of divesets of this primal heuristic */
198SCIP_EXPORT
200 SCIP_HEUR* heur /**< primal heuristic */
201 );
202
203/** @} */
204
205/** get the heuristic to which this diving setting belongs */
206SCIP_EXPORT
208 SCIP_DIVESET* diveset /**< diving settings */
209 );
210
211/** get the working solution of this dive set */
212SCIP_EXPORT
214 SCIP_DIVESET* diveset /**< diving settings */
215 );
216
217/** set the working solution for this dive set */
218SCIP_EXPORT
220 SCIP_DIVESET* diveset, /**< diving settings */
221 SCIP_SOL* sol /**< new working solution for this dive set, or NULL */
222 );
223
224/**@addtogroup PublicDivesetMethods
225 *
226 * @{
227 */
228
229/** get the name of the dive set */
230SCIP_EXPORT
231const char* SCIPdivesetGetName(
232 SCIP_DIVESET* diveset /**< diving settings */
233 );
234
235/** get the minimum relative depth of the diving settings */
236SCIP_EXPORT
238 SCIP_DIVESET* diveset /**< diving settings */
239 );
240
241/** get the maximum relative depth of the diving settings */
242SCIP_EXPORT
244 SCIP_DIVESET* diveset /**< diving settings */
245 );
246
247/** get the number of successful runs of the diving settings */
248SCIP_EXPORT
250 SCIP_DIVESET* diveset, /**< diving settings */
251 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
252 );
253
254/** get the number of calls to this dive set */
255SCIP_EXPORT
257 SCIP_DIVESET* diveset, /**< diving settings */
258 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
259 );
260
261/** get the number of calls successfully terminated at a feasible leaf node */
262SCIP_EXPORT
264 SCIP_DIVESET* diveset, /**< diving settings */
265 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
266 );
267
268/** get the minimum depth reached by this dive set */
269SCIP_EXPORT
271 SCIP_DIVESET* diveset, /**< diving settings */
272 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
273 );
274
275/** get the maximum depth reached by this dive set */
276SCIP_EXPORT
278 SCIP_DIVESET* diveset, /**< diving settings */
279 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
280 );
281
282/** get the average depth this dive set reached during execution */
283SCIP_EXPORT
285 SCIP_DIVESET* diveset, /**< diving settings */
286 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
287 );
288
289/** get the minimum depth at which this dive set found a solution */
290SCIP_EXPORT
292 SCIP_DIVESET* diveset, /**< diving settings */
293 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
294 );
295
296/** get the maximum depth at which this dive set found a solution */
297SCIP_EXPORT
299 SCIP_DIVESET* diveset, /**< diving settings */
300 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
301 );
302
303/** get the average depth at which this dive set found a solution */
304SCIP_EXPORT
306 SCIP_DIVESET* diveset, /**< diving settings */
307 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
308 );
309
310/** get the total number of LP iterations used by this dive set */
311SCIP_EXPORT
313 SCIP_DIVESET* diveset, /**< diving settings */
314 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
315 );
316
317/** get the total number of probing nodes used by this dive set */
318SCIP_EXPORT
320 SCIP_DIVESET* diveset, /**< diving settings */
321 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
322 );
323
324/** get the total number of backtracks performed by this dive set */
325SCIP_EXPORT
327 SCIP_DIVESET* diveset, /**< diving settings */
328 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
329 );
330
331/** get the total number of conflicts found by this dive set */
332SCIP_EXPORT
334 SCIP_DIVESET* diveset, /**< diving settings */
335 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
336 );
337
338/** get the total number of solutions (leaf and rounded solutions) found by the dive set */
339SCIP_EXPORT
341 SCIP_DIVESET* diveset, /**< diving settings */
342 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
343 );
344
345/** get the maximum LP iterations quotient of the diving settings */
346SCIP_EXPORT
348 SCIP_DIVESET* diveset /**< diving settings */
349 );
350
351/** get the maximum LP iterations offset of the diving settings */
352SCIP_EXPORT
354 SCIP_DIVESET* diveset /**< diving settings */
355 );
356
357/** get the maximum upper bound quotient parameter of the diving settings if no solution is available */
358SCIP_EXPORT
360 SCIP_DIVESET* diveset /**< diving settings */
361 );
362
363/** get the average quotient parameter of the diving settings if no solution is available */
364SCIP_EXPORT
366 SCIP_DIVESET* diveset /**< diving settings */
367 );
368
369/** get the maximum upper bound quotient parameter of the diving settings if an incumbent solution exists */
370SCIP_EXPORT
372 SCIP_DIVESET* diveset /**< diving settings */
373 );
374
375/** get the average upper bound quotient parameter of the diving settings if an incumbent solution exists */
376SCIP_EXPORT
378 SCIP_DIVESET* diveset /**< diving settings */
379 );
380
381/** should backtracking be applied? */
382SCIP_EXPORT
384 SCIP_DIVESET* diveset /**< diving settings */
385 );
386
387/** returns the LP solve frequency for diving LPs (0: dynamically based on number of intermediate domain reductions) */
388SCIP_EXPORT
390 SCIP_DIVESET* diveset /**< diving settings */
391 );
392
393/** returns the domain reduction quotient for triggering an immediate resolve of the diving LP (0.0: always resolve)*/
394SCIP_EXPORT
396 SCIP_DIVESET* diveset /**< diving settings */
397 );
398
399/** should only LP branching candidates be considered instead of the slower but
400 * more general constraint handler diving variable selection?
401 */
402SCIP_EXPORT
404 SCIP_DIVESET* diveset /**< diving settings */
405 );
406
407/** returns TRUE if dive set supports diving of the specified type */
408SCIP_EXPORT
410 SCIP_DIVESET* diveset, /**< diving settings */
411 SCIP_DIVETYPE divetype /**< bit mask that represents the supported dive types by this dive set */
412 );
413
414/** returns the random number generator of this \p diveset for tie-breaking */
415SCIP_EXPORT
417 SCIP_DIVESET* diveset /**< diving settings */
418 );
419
420/** is this dive set publicly available (ie., can be used by other primal heuristics?) */
421SCIP_EXPORT
423 SCIP_DIVESET* diveset /**< diving settings */
424 );
425
426/** @} */
427
428/**@defgroup PublicVariableGraphMethods Public Variable Graph Methods
429 * @ingroup MiscellaneousMethods
430 *
431 * @brief methods to create a variable graph and perform breadth-first search
432 *
433 * @{
434 */
435
436/** Perform breadth-first (BFS) search on the variable constraint graph.
437 *
438 * The result of the algorithm is that the \p distances array contains the correct distances for
439 * every variable from the start variables. The distance of a variable can then be accessed through its
440 * problem index (calling SCIPvarGetProbindex()).
441 * Hence, The method assumes that the length of \p distances is at least
442 * SCIPgetNVars().
443 * Variables that are not connected through constraints to the start variables have a distance of -1.
444 *
445 * Limits can be provided to further restrict the breadth-first search. If a distance limit is given,
446 * the search will be performed until the first variable at this distance is popped from the queue, i.e.,
447 * all variables with a distance < maxdistance have been labeled by the search.
448 * If a variable limit is given, the search stops after it completes the distance level at which
449 * the limit was reached. Hence, more variables may be actually labeled.
450 * The start variables are accounted for those variable limits.
451 *
452 * If no variable variable constraint graph is provided, the method will create one and free it at the end
453 * This is useful for a single use of the variable constraint graph. For several consecutive uses,
454 * it is advised to create a variable constraint graph via SCIPvariableGraphCreate().
455 */
456SCIP_EXPORT
458 SCIP* scip, /**< SCIP data structure */
459 SCIP_VGRAPH* vargraph, /**< pointer to the variable graph, or NULL to let the function create a local graph */
460 SCIP_VAR** startvars, /**< array of start variables to calculate distance from */
461 int nstartvars, /**< number of starting variables, at least 1 */
462 int* distances, /**< array to keep distance in vargraph from start variables for every variable */
463 int maxdistance, /**< maximum distance >= 0 from start variable (INT_MAX for complete BFS) */
464 int maxvars, /**< maximum number of variables to compute distance for */
465 int maxbinintvars /**< maximum number of binary or integer variables to compute distance for */
466 );
467
468/** initialization method of variable graph data structure */
469SCIP_EXPORT
471 SCIP* scip, /**< SCIP data structure */
472 SCIP_VGRAPH** vargraph, /**< pointer to the variable graph */
473 SCIP_Bool relaxdenseconss, /**< should dense constraints (at least as dense as \p density) be
474 * ignored by connectivity graph? */
475 SCIP_Real relaxdensity, /**< density (with respect to number of variables) to relax constraint from graph */
476 int* nrelaxedconstraints /**< pointer to store the number of constraints that were relaxed, or NULL if not needed */
477 );
478
479/** deinitialization method of variable graph data structure */
480SCIP_EXPORT
482 SCIP* scip, /**< SCIP data structure */
483 SCIP_VGRAPH** vargraph /**< pointer to the variable graph */
484 );
485
486/** @} */
487
488
489#ifdef __cplusplus
490}
491#endif
492
493#endif
common defines and data types used in all packages of SCIP
#define SCIP_Longint
Definition: def.h:141
#define SCIP_Bool
Definition: def.h:91
#define SCIP_Real
Definition: def.h:156
SCIP_Real SCIPdivesetGetMaxLPIterQuot(SCIP_DIVESET *diveset)
Definition: heur.c:655
SCIP_Bool SCIPdivesetIsPublic(SCIP_DIVESET *diveset)
Definition: heur.c:764
SCIP_Real SCIPdivesetGetUbQuotNoSol(SCIP_DIVESET *diveset)
Definition: heur.c:671
SCIP_Real SCIPdivesetGetMaxRelDepth(SCIP_DIVESET *diveset)
Definition: heur.c:463
SCIP_Longint SCIPdivesetGetNBacktracks(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
Definition: heur.c:615
SCIP_Longint SCIPdivesetGetNSols(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
Definition: heur.c:641
int SCIPdivesetGetMaxSolutionDepth(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
Definition: heur.c:563
SCIP_Longint SCIPdivesetGetNConflicts(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
Definition: heur.c:628
SCIP_Real SCIPdivesetGetAvgQuot(SCIP_DIVESET *diveset)
Definition: heur.c:694
SCIP_Bool SCIPdivesetUseBacktrack(SCIP_DIVESET *diveset)
Definition: heur.c:702
int SCIPdivesetGetLPSolveFreq(SCIP_DIVESET *diveset)
Definition: heur.c:710
SCIP_Real SCIPdivesetGetMinRelDepth(SCIP_DIVESET *diveset)
Definition: heur.c:455
SCIP_Real SCIPdivesetGetUbQuot(SCIP_DIVESET *diveset)
Definition: heur.c:686
SCIP_Real SCIPdivesetGetAvgSolutionDepth(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
Definition: heur.c:576
int SCIPdivesetGetMaxDepth(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
Definition: heur.c:524
int SCIPdivesetGetMinDepth(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
Definition: heur.c:511
SCIP_Bool SCIPdivesetSupportsType(SCIP_DIVESET *diveset, SCIP_DIVETYPE divetype)
Definition: heur.c:753
SCIP_Real SCIPdivesetGetAvgDepth(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
Definition: heur.c:537
SCIP_Bool SCIPdivesetUseOnlyLPBranchcands(SCIP_DIVESET *diveset)
Definition: heur.c:743
SCIP_Longint SCIPdivesetGetNLPIterations(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
Definition: heur.c:589
SCIP_Longint SCIPdivesetGetSolSuccess(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
Definition: heur.c:471
int SCIPdivesetGetMinSolutionDepth(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
Definition: heur.c:550
const char * SCIPdivesetGetName(SCIP_DIVESET *diveset)
Definition: heur.c:445
int SCIPdivesetGetNCalls(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
Definition: heur.c:485
SCIP_Real SCIPdivesetGetAvgQuotNoSol(SCIP_DIVESET *diveset)
Definition: heur.c:679
SCIP_RANDNUMGEN * SCIPdivesetGetRandnumgen(SCIP_DIVESET *diveset)
Definition: heur.c:720
SCIP_Longint SCIPdivesetGetNProbingNodes(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
Definition: heur.c:602
SCIP_Real SCIPdivesetGetLPResolveDomChgQuot(SCIP_DIVESET *diveset)
Definition: heur.c:731
int SCIPdivesetGetNSolutionCalls(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
Definition: heur.c:498
int SCIPdivesetGetMaxLPIterOffset(SCIP_DIVESET *diveset)
Definition: heur.c:663
char SCIPheurGetDispchar(SCIP_HEUR *heur)
Definition: heur.c:1487
SCIP_HEURDATA * SCIPheurGetData(SCIP_HEUR *heur)
Definition: heur.c:1368
SCIP_HEURTIMING SCIPheurGetTimingmask(SCIP_HEUR *heur)
Definition: heur.c:1497
const char * SCIPheurGetDesc(SCIP_HEUR *heur)
Definition: heur.c:1477
SCIP_Longint SCIPheurGetNSolsFound(SCIP_HEUR *heur)
Definition: heur.c:1603
int SCIPheurGetPriority(SCIP_HEUR *heur)
Definition: heur.c:1528
SCIP_Bool SCIPheurUsesSubscip(SCIP_HEUR *heur)
Definition: heur.c:1518
SCIP_Longint SCIPheurGetNBestSolsFound(SCIP_HEUR *heur)
Definition: heur.c:1613
void SCIPheurSetFreq(SCIP_HEUR *heur, int freq)
Definition: heur.c:1562
void SCIPheurSetTimingmask(SCIP_HEUR *heur, SCIP_HEURTIMING timingmask)
Definition: heur.c:1507
SCIP_Longint SCIPheurGetNCalls(SCIP_HEUR *heur)
Definition: heur.c:1593
int SCIPheurGetFreqofs(SCIP_HEUR *heur)
Definition: heur.c:1573
SCIP_DECL_SORTPTRCOMP(SCIPheurComp)
Definition: heur.c:51
SCIP_Real SCIPheurGetSetupTime(SCIP_HEUR *heur)
Definition: heur.c:1645
int SCIPheurGetMaxdepth(SCIP_HEUR *heur)
Definition: heur.c:1583
int SCIPheurGetNDivesets(SCIP_HEUR *heur)
Definition: heur.c:1675
void SCIPheurMarkExact(SCIP_HEUR *heur)
Definition: heur.c:1457
int SCIPheurGetFreq(SCIP_HEUR *heur)
Definition: heur.c:1552
SCIP_Real SCIPheurGetTime(SCIP_HEUR *heur)
Definition: heur.c:1655
const char * SCIPheurGetName(SCIP_HEUR *heur)
Definition: heur.c:1467
SCIP_Bool SCIPheurIsInitialized(SCIP_HEUR *heur)
Definition: heur.c:1623
SCIP_DIVESET ** SCIPheurGetDivesets(SCIP_HEUR *heur)
Definition: heur.c:1665
void SCIPheurSetData(SCIP_HEUR *heur, SCIP_HEURDATA *heurdata)
Definition: heur.c:1378
void SCIPvariableGraphFree(SCIP *scip, SCIP_VGRAPH **vargraph)
Definition: heur.c:2048
SCIP_RETCODE SCIPvariablegraphBreadthFirst(SCIP *scip, SCIP_VGRAPH *vargraph, SCIP_VAR **startvars, int nstartvars, int *distances, int maxdistance, int maxvars, int maxbinintvars)
Definition: heur.c:1704
SCIP_RETCODE SCIPvariableGraphCreate(SCIP *scip, SCIP_VGRAPH **vargraph, SCIP_Bool relaxdenseconss, SCIP_Real relaxdensity, int *nrelaxedconstraints)
Definition: heur.c:2010
SCIP_HEUR * SCIPdivesetGetHeur(SCIP_DIVESET *diveset)
Definition: heur.c:416
SCIP_SOL * SCIPdivesetGetWorkSolution(SCIP_DIVESET *diveset)
Definition: heur.c:424
void SCIPdivesetSetWorkSolution(SCIP_DIVESET *diveset, SCIP_SOL *sol)
Definition: heur.c:434
type definitions for primal heuristics
enum SCIP_DiveContext SCIP_DIVECONTEXT
Definition: type_heur.h:73
struct SCIP_HeurData SCIP_HEURDATA
Definition: type_heur.h:77
unsigned int SCIP_DIVETYPE
Definition: type_heur.h:63
type definitions for miscellaneous datastructures
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
type definitions for storing primal CIP solutions
timing definitions for SCIP
unsigned int SCIP_HEURTIMING
Definition: type_timing.h:103
type definitions for problem variables