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-2016 Konrad-Zuse-Zentrum */
7 /* fuer Informationstechnik Berlin */
8 /* */
9 /* SCIP is distributed under the terms of the ZIB Academic License. */
10 /* */
11 /* You should have received a copy of the ZIB Academic License */
12 /* along with SCIP; see the file COPYING. If not email to scip@zib.de. */
13 /* */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file pub_heur.h
17  * @ingroup PUBLICMETHODS
18  * @brief public methods for primal heuristics
19  * @author Tobias Achterberg
20  */
21 
22 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
23 
24 #ifndef __SCIP_PUB_HEUR_H__
25 #define __SCIP_PUB_HEUR_H__
26 
27 
28 #include "scip/def.h"
29 #include "scip/type_misc.h"
30 #include "scip/type_heur.h"
31 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35 
36 /** compares two heuristics w. r. to their priority */
37 extern
38 SCIP_DECL_SORTPTRCOMP(SCIPheurComp);
39 
40 /** comparison method for sorting heuristics w.r.t. to their name */
41 extern
42 SCIP_DECL_SORTPTRCOMP(SCIPheurCompName);
43 
44 /** gets user data of primal heuristic */
45 extern
47  SCIP_HEUR* heur /**< primal heuristic */
48  );
49 
50 /** sets user data of primal heuristic; user has to free old data in advance! */
51 extern
52 void SCIPheurSetData(
53  SCIP_HEUR* heur, /**< primal heuristic */
54  SCIP_HEURDATA* heurdata /**< new primal heuristic user data */
55  );
56 
57 /** gets name of primal heuristic */
58 extern
59 const char* SCIPheurGetName(
60  SCIP_HEUR* heur /**< primal heuristic */
61  );
62 
63 /** gets description of primal heuristic */
64 extern
65 const char* SCIPheurGetDesc(
66  SCIP_HEUR* heur /**< primal heuristic */
67  );
68 
69 /** gets display character of primal heuristic */
70 extern
72  SCIP_HEUR* heur /**< primal heuristic */
73  );
74 
75 /** returns the timing mask of the heuristic */
76 extern
78  SCIP_HEUR* heur /**< primal heuristic */
79  );
80 
81 /** sets new timing mask for heuristic */
82 extern
84  SCIP_HEUR* heur, /**< primal heuristic */
85  SCIP_HEURTIMING timingmask /**< new timing mask of heuristic */
86  );
87 
88 /** does the heuristic use a secondary SCIP instance? */
89 extern
91  SCIP_HEUR* heur /**< primal heuristic */
92  );
93 
94 /** gets priority of primal heuristic */
95 extern
97  SCIP_HEUR* heur /**< primal heuristic */
98  );
99 
100 /** gets frequency of primal heuristic */
101 extern
102 int SCIPheurGetFreq(
103  SCIP_HEUR* heur /**< primal heuristic */
104  );
105 
106 /** sets frequency of primal heuristic */
107 extern
108 void SCIPheurSetFreq(
109  SCIP_HEUR* heur, /**< primal heuristic */
110  int freq /**< new frequency of heuristic */
111  );
112 
113 /** gets frequency offset of primal heuristic */
114 extern
116  SCIP_HEUR* heur /**< primal heuristic */
117  );
118 
119 /** gets maximal depth level for calling primal heuristic (returns -1, if no depth limit exists) */
120 extern
122  SCIP_HEUR* heur /**< primal heuristic */
123  );
124 
125 /** gets the number of times, the heuristic was called and tried to find a solution */
126 extern
128  SCIP_HEUR* heur /**< primal heuristic */
129  );
130 
131 /** gets the number of primal feasible solutions found by this heuristic */
132 extern
134  SCIP_HEUR* heur /**< primal heuristic */
135  );
136 
137 /** gets the number of new best primal feasible solutions found by this heuristic */
138 extern
140  SCIP_HEUR* heur /**< primal heuristic */
141  );
142 
143 /** is primal heuristic initialized? */
144 extern
146  SCIP_HEUR* heur /**< primal heuristic */
147  );
148 
149 /** gets time in seconds used in this heuristic for setting up for next stages */
150 extern
152  SCIP_HEUR* heur /**< primal heuristic */
153  );
154 
155 /** gets time in seconds used in this heuristic */
156 extern
158  SCIP_HEUR* heur /**< primal heuristic */
159  );
160 
161 /** returns array of divesets of this primal heuristic, or NULL if it has no divesets */
162 extern
164  SCIP_HEUR* heur /**< primal heuristic */
165  );
166 
167 /** returns the number of divesets of this primal heuristic */
168 extern
170  SCIP_HEUR* heur /**< primal heuristic */
171  );
172 
173 /** get the heuristic to which this diving setting belongs */
174 extern
176  SCIP_DIVESET* diveset /**< diving settings */
177  );
178 
179 /** get the working solution of this dive set */
180 extern
182  SCIP_DIVESET* diveset /**< diving settings */
183  );
184 
185 /** set the working solution for this dive set */
186 extern
188  SCIP_DIVESET* diveset, /**< diving settings */
189  SCIP_SOL* sol /**< new working solution for this dive set, or NULL */
190  );
191 
192 /** get the name of the dive set */
193 extern
194 const char* SCIPdivesetGetName(
195  SCIP_DIVESET* diveset /**< diving settings */
196  );
197 
198 /** get the minimum relative depth of the diving settings */
199 extern
201  SCIP_DIVESET* diveset /**< diving settings */
202  );
203 
204 /** get the maximum relative depth of the diving settings */
205 extern
207  SCIP_DIVESET* diveset /**< diving settings */
208  );
209 
210 /** get the number of successful runs of the diving settings */
211 extern
213  SCIP_DIVESET* diveset /**< diving settings */
214  );
215 
216 /** get the number of calls to this dive set */
217 extern
219  SCIP_DIVESET* diveset /**< diving settings */
220  );
221 
222 /** get the number of calls successfully terminated at a feasible leaf node */
223 extern
225  SCIP_DIVESET* diveset /**< diving settings */
226  );
227 
228 /** get the minimum depth reached by this dive set */
229 extern
231  SCIP_DIVESET* diveset /**< diving settings */
232  );
233 
234 /** get the maximum depth reached by this dive set */
235 extern
237  SCIP_DIVESET* diveset /**< diving settings */
238  );
239 
240 /** get the average depth this dive set reached during execution */
241 extern
243  SCIP_DIVESET* diveset /**< diving settings */
244  );
245 
246 /** get the minimum depth at which this dive set found a solution */
247 extern
249  SCIP_DIVESET* diveset /**< diving settings */
250  );
251 
252 /** get the maximum depth at which this dive set found a solution */
253 extern
255  SCIP_DIVESET* diveset /**< diving settings */
256  );
257 
258 /** get the average depth at which this dive set found a solution */
259 extern
261  SCIP_DIVESET* diveset /**< diving settings */
262  );
263 
264 /** get the total number of LP iterations used by this dive set */
265 extern
267  SCIP_DIVESET* diveset /**< diving settings */
268  );
269 
270 /** get the total number of probing nodes used by this dive set */
271 extern
273  SCIP_DIVESET* diveset /**< diving settings */
274  );
275 
276 /** get the total number of backtracks performed by this dive set */
277 extern
279  SCIP_DIVESET* diveset /**< diving settings */
280  );
281 
282 /** get the maximum LP iterations quotient of the diving settings */
283 extern
285  SCIP_DIVESET* diveset /**< diving settings */
286  );
287 
288 /** get the maximum LP iterations offset of the diving settings */
289 extern
291  SCIP_DIVESET* diveset /**< diving settings */
292  );
293 
294 /** get the maximum upper bound quotient parameter of the diving settings if no solution is available */
295 extern
297  SCIP_DIVESET* diveset /**< diving settings */
298  );
299 
300 /** get the average quotient parameter of the diving settings if no solution is available */
301 extern
303  SCIP_DIVESET* diveset /**< diving settings */
304  );
305 
306 /** get the maximum upper bound quotient parameter of the diving settings if an incumbent solution exists */
307 extern
309  SCIP_DIVESET* diveset /**< diving settings */
310  );
311 
312 /** get the average upper bound quotient parameter of the diving settings if an incumbent solution exists */
313 extern
315  SCIP_DIVESET* diveset /**< diving settings */
316  );
317 
318 /** should backtracking be applied? */
319 extern
321  SCIP_DIVESET* diveset /**< diving settings */
322  );
323 
324 /** returns the LP solve frequency for diving LPs (0: dynamically based on number of intermediate domain reductions) */
325 extern
327  SCIP_DIVESET* diveset /**< diving settings */
328  );
329 
330 /** returns the domain reduction quotient for triggering an immediate resolve of the diving LP (0.0: always resolve)*/
331 extern
333  SCIP_DIVESET* diveset /**< diving settings */
334  );
335 
336 /** should only LP branching candidates be considered instead of the slower but
337  * more general constraint handler diving variable selection?
338  */
339 extern
341  SCIP_DIVESET* diveset /**< diving settings */
342  );
343 
344 /** returns TRUE if dive set supports diving of the specified type */
345 extern
347  SCIP_DIVESET* diveset, /**< diving settings */
348  SCIP_DIVETYPE divetype /**< bit mask that represents the supported dive types by this dive set */
349  );
350 
351 #ifdef __cplusplus
352 }
353 #endif
354 
355 #endif
type definitions for miscellaneous datastructures
SCIP_SOL * SCIPdivesetGetWorkSolution(SCIP_DIVESET *diveset)
Definition: heur.c:310
SCIP_Real SCIPdivesetGetMaxLPIterQuot(SCIP_DIVESET *diveset)
Definition: heur.c:475
unsigned int SCIP_HEURTIMING
Definition: type_timing.h:95
int SCIPheurGetMaxdepth(SCIP_HEUR *heur)
Definition: heur.c:1263
SCIP_DECL_SORTPTRCOMP(SCIPheurComp)
Definition: heur.c:40
SCIP_Real SCIPheurGetTime(SCIP_HEUR *heur)
Definition: heur.c:1335
SCIP_Longint SCIPheurGetNSolsFound(SCIP_HEUR *heur)
Definition: heur.c:1283
SCIP_HEURDATA * SCIPheurGetData(SCIP_HEUR *heur)
Definition: heur.c:1058
struct SCIP_HeurData SCIP_HEURDATA
Definition: type_heur.h:51
char SCIPheurGetDispchar(SCIP_HEUR *heur)
Definition: heur.c:1167
unsigned int SCIP_DIVETYPE
Definition: type_heur.h:48
SCIP_Bool SCIPheurIsInitialized(SCIP_HEUR *heur)
Definition: heur.c:1303
SCIP_Longint SCIPdivesetGetNProbingNodes(SCIP_DIVESET *diveset)
Definition: heur.c:455
int SCIPdivesetGetMaxSolutionDepth(SCIP_DIVESET *diveset)
Definition: heur.c:425
SCIP_HEURTIMING SCIPheurGetTimingmask(SCIP_HEUR *heur)
Definition: heur.c:1177
SCIP_Real SCIPdivesetGetAvgQuotNoSol(SCIP_DIVESET *diveset)
Definition: heur.c:499
SCIP_Real SCIPdivesetGetUbQuotNoSol(SCIP_DIVESET *diveset)
Definition: heur.c:491
SCIP_Bool SCIPdivesetSupportsType(SCIP_DIVESET *diveset, SCIP_DIVETYPE divetype)
Definition: heur.c:562
int SCIPdivesetGetMinDepth(SCIP_DIVESET *diveset)
Definition: heur.c:385
int SCIPdivesetGetLPSolveFreq(SCIP_DIVESET *diveset)
Definition: heur.c:530
int SCIPheurGetPriority(SCIP_HEUR *heur)
Definition: heur.c:1208
type definitions for primal heuristics
SCIP_Real SCIPdivesetGetAvgDepth(SCIP_DIVESET *diveset)
Definition: heur.c:405
int SCIPdivesetGetMaxDepth(SCIP_DIVESET *diveset)
Definition: heur.c:395
SCIP_Real SCIPdivesetGetMinRelDepth(SCIP_DIVESET *diveset)
Definition: heur.c:341
int SCIPheurGetFreq(SCIP_HEUR *heur)
Definition: heur.c:1232
SCIP_Real SCIPheurGetSetupTime(SCIP_HEUR *heur)
Definition: heur.c:1325
SCIP_HEUR * SCIPdivesetGetHeur(SCIP_DIVESET *diveset)
Definition: heur.c:302
void SCIPheurSetTimingmask(SCIP_HEUR *heur, SCIP_HEURTIMING timingmask)
Definition: heur.c:1187
SCIP_Bool SCIPheurUsesSubscip(SCIP_HEUR *heur)
Definition: heur.c:1198
SCIP_Longint SCIPdivesetGetNLPIterations(SCIP_DIVESET *diveset)
Definition: heur.c:445
SCIP_Longint SCIPheurGetNBestSolsFound(SCIP_HEUR *heur)
Definition: heur.c:1293
#define SCIP_Bool
Definition: def.h:53
SCIP_Real SCIPdivesetGetLPResolveDomChgQuot(SCIP_DIVESET *diveset)
Definition: heur.c:540
SCIP_Bool SCIPdivesetUseBacktrack(SCIP_DIVESET *diveset)
Definition: heur.c:522
void SCIPdivesetSetWorkSolution(SCIP_DIVESET *diveset, SCIP_SOL *sol)
Definition: heur.c:320
SCIP_Longint SCIPdivesetGetSolSuccess(SCIP_DIVESET *diveset)
Definition: heur.c:357
int SCIPdivesetGetNSolutionCalls(SCIP_DIVESET *diveset)
Definition: heur.c:375
int SCIPdivesetGetMinSolutionDepth(SCIP_DIVESET *diveset)
Definition: heur.c:415
const char * SCIPheurGetDesc(SCIP_HEUR *heur)
Definition: heur.c:1157
void SCIPheurSetData(SCIP_HEUR *heur, SCIP_HEURDATA *heurdata)
Definition: heur.c:1068
SCIP_Real SCIPdivesetGetMaxRelDepth(SCIP_DIVESET *diveset)
Definition: heur.c:349
int SCIPdivesetGetNCalls(SCIP_DIVESET *diveset)
Definition: heur.c:365
int SCIPheurGetNDivesets(SCIP_HEUR *heur)
Definition: heur.c:1355
#define SCIP_Real
Definition: def.h:127
int SCIPdivesetGetMaxLPIterOffset(SCIP_DIVESET *diveset)
Definition: heur.c:483
const char * SCIPdivesetGetName(SCIP_DIVESET *diveset)
Definition: heur.c:331
#define SCIP_Longint
Definition: def.h:112
SCIP_DIVESET ** SCIPheurGetDivesets(SCIP_HEUR *heur)
Definition: heur.c:1345
common defines and data types used in all packages of SCIP
SCIP_Longint SCIPdivesetGetNBacktracks(SCIP_DIVESET *diveset)
Definition: heur.c:465
SCIP_Longint SCIPheurGetNCalls(SCIP_HEUR *heur)
Definition: heur.c:1273
SCIP_Real SCIPdivesetGetAvgQuot(SCIP_DIVESET *diveset)
Definition: heur.c:514
SCIP_Bool SCIPdivesetUseOnlyLPBranchcands(SCIP_DIVESET *diveset)
Definition: heur.c:552
const char * SCIPheurGetName(SCIP_HEUR *heur)
Definition: heur.c:1147
int SCIPheurGetFreqofs(SCIP_HEUR *heur)
Definition: heur.c:1253
void SCIPheurSetFreq(SCIP_HEUR *heur, int freq)
Definition: heur.c:1242
SCIP_Real SCIPdivesetGetAvgSolutionDepth(SCIP_DIVESET *diveset)
Definition: heur.c:435
SCIP_Real SCIPdivesetGetUbQuot(SCIP_DIVESET *diveset)
Definition: heur.c:506