Scippy

SCIP

Solving Constraint Integer Programs

stat.c
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 stat.c
17  * @brief methods for problem statistics
18  * @author Tobias Achterberg
19  * @author Stefan Heinz
20  * @author Gregor Hendel
21  * @author Gerald Gamrath
22  * @author Marc Pfetsch
23  * @author Stefan Vigerske
24  */
25 
26 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
27 
28 #include <assert.h>
29 
30 #include "scip/def.h"
31 #include "blockmemshell/memory.h"
32 #include "scip/set.h"
33 #include "scip/prob.h"
34 #include "scip/stat.h"
35 #include "scip/clock.h"
36 #include "scip/visual.h"
37 #include "scip/mem.h"
38 #include "scip/history.h"
39 
40 
41 
42 /** creates problem statistics data */
44  SCIP_STAT** stat, /**< pointer to problem statistics data */
45  BMS_BLKMEM* blkmem, /**< block memory */
46  SCIP_SET* set, /**< global SCIP settings */
47  SCIP_MESSAGEHDLR* messagehdlr /**< message handler */
48  )
49 {
50  assert(stat != NULL);
51  assert(set != NULL);
52 
53  SCIP_ALLOC( BMSallocMemory(stat) );
54 
55  SCIP_CALL( SCIPclockCreate(&(*stat)->solvingtime, SCIP_CLOCKTYPE_DEFAULT) );
56  SCIP_CALL( SCIPclockCreate(&(*stat)->solvingtimeoverall, SCIP_CLOCKTYPE_DEFAULT) );
57  SCIP_CALL( SCIPclockCreate(&(*stat)->presolvingtime, SCIP_CLOCKTYPE_DEFAULT) );
58  SCIP_CALL( SCIPclockCreate(&(*stat)->presolvingtimeoverall, SCIP_CLOCKTYPE_DEFAULT) );
59  SCIP_CALL( SCIPclockCreate(&(*stat)->primallptime, SCIP_CLOCKTYPE_DEFAULT) );
60  SCIP_CALL( SCIPclockCreate(&(*stat)->duallptime, SCIP_CLOCKTYPE_DEFAULT) );
61  SCIP_CALL( SCIPclockCreate(&(*stat)->lexduallptime, SCIP_CLOCKTYPE_DEFAULT) );
62  SCIP_CALL( SCIPclockCreate(&(*stat)->barrierlptime, SCIP_CLOCKTYPE_DEFAULT) );
63  SCIP_CALL( SCIPclockCreate(&(*stat)->divinglptime, SCIP_CLOCKTYPE_DEFAULT) );
64  SCIP_CALL( SCIPclockCreate(&(*stat)->strongbranchtime, SCIP_CLOCKTYPE_DEFAULT) );
65  SCIP_CALL( SCIPclockCreate(&(*stat)->conflictlptime, SCIP_CLOCKTYPE_DEFAULT) );
66  SCIP_CALL( SCIPclockCreate(&(*stat)->lpsoltime, SCIP_CLOCKTYPE_DEFAULT) );
67  SCIP_CALL( SCIPclockCreate(&(*stat)->pseudosoltime, SCIP_CLOCKTYPE_DEFAULT) );
68  SCIP_CALL( SCIPclockCreate(&(*stat)->sbsoltime, SCIP_CLOCKTYPE_DEFAULT) );
69  SCIP_CALL( SCIPclockCreate(&(*stat)->nodeactivationtime, SCIP_CLOCKTYPE_DEFAULT) );
70  SCIP_CALL( SCIPclockCreate(&(*stat)->nlpsoltime, SCIP_CLOCKTYPE_DEFAULT) );
71  SCIP_CALL( SCIPclockCreate(&(*stat)->copyclock, SCIP_CLOCKTYPE_DEFAULT) );
72  SCIP_CALL( SCIPclockCreate(&(*stat)->strongpropclock, SCIP_CLOCKTYPE_DEFAULT) );
73  SCIP_CALL( SCIPclockCreate(&(*stat)->reoptupdatetime, SCIP_CLOCKTYPE_DEFAULT) );
74 
75  /* turn statistic timing on or off, depending on the user parameter */
76  SCIPstatEnableOrDisableStatClocks(*stat, set->time_statistictiming);
77 
78  SCIP_CALL( SCIPhistoryCreate(&(*stat)->glbhistory, blkmem) );
79  SCIP_CALL( SCIPhistoryCreate(&(*stat)->glbhistorycrun, blkmem) );
80  SCIP_CALL( SCIPvisualCreate(&(*stat)->visual, messagehdlr) );
81 
82  (*stat)->status = SCIP_STATUS_UNKNOWN;
83  (*stat)->marked_nvaridx = 0;
84  (*stat)->marked_ncolidx = 0;
85  (*stat)->marked_nrowidx = 0;
86  (*stat)->userinterrupt = FALSE;
87  (*stat)->userrestart = FALSE;
88  (*stat)->inrestart = FALSE;
89  (*stat)->collectvarhistory = TRUE;
90  (*stat)->performpresol = FALSE;
91  (*stat)->subscipdepth = 0;
92  (*stat)->nreoptruns = 0;
93 
94  SCIPstatReset(*stat, set);
95 
96  return SCIP_OKAY;
97 }
98 
99 /** frees problem statistics data */
101  SCIP_STAT** stat, /**< pointer to problem statistics data */
102  BMS_BLKMEM* blkmem /**< block memory */
103  )
104 {
105  assert(stat != NULL);
106  assert(*stat != NULL);
107 
108  SCIPclockFree(&(*stat)->solvingtime);
109  SCIPclockFree(&(*stat)->solvingtimeoverall);
110  SCIPclockFree(&(*stat)->presolvingtime);
111  SCIPclockFree(&(*stat)->presolvingtimeoverall);
112  SCIPclockFree(&(*stat)->primallptime);
113  SCIPclockFree(&(*stat)->duallptime);
114  SCIPclockFree(&(*stat)->lexduallptime);
115  SCIPclockFree(&(*stat)->barrierlptime);
116  SCIPclockFree(&(*stat)->divinglptime);
117  SCIPclockFree(&(*stat)->strongbranchtime);
118  SCIPclockFree(&(*stat)->conflictlptime);
119  SCIPclockFree(&(*stat)->lpsoltime);
120  SCIPclockFree(&(*stat)->pseudosoltime);
121  SCIPclockFree(&(*stat)->sbsoltime);
122  SCIPclockFree(&(*stat)->nodeactivationtime);
123  SCIPclockFree(&(*stat)->nlpsoltime);
124  SCIPclockFree(&(*stat)->copyclock);
125  SCIPclockFree(&(*stat)->strongpropclock);
126  SCIPclockFree(&(*stat)->reoptupdatetime);
127 
128  SCIPhistoryFree(&(*stat)->glbhistory, blkmem);
129  SCIPhistoryFree(&(*stat)->glbhistorycrun, blkmem);
130  SCIPvisualFree(&(*stat)->visual);
131 
132  BMSfreeMemory(stat);
133 
134  return SCIP_OKAY;
135 }
136 
137 /** diables the collection of any statistic for a variable */
139  SCIP_STAT* stat /**< problem statistics data */
140  )
141 {
142  assert(stat != NULL);
143 
144  stat->collectvarhistory = FALSE;
145 }
146 
147 /** enables the collection of statistics for a variable */
149  SCIP_STAT* stat /**< problem statistics data */
150  )
151 {
152  assert(stat != NULL);
153 
154  stat->collectvarhistory = TRUE;
155 }
156 
157 /** marks statistics to be able to reset them when solving process is freed */
159  SCIP_STAT* stat /**< problem statistics data */
160  )
161 {
162  assert(stat != NULL);
163 
164  stat->marked_nvaridx = stat->nvaridx;
165  stat->marked_ncolidx = stat->ncolidx;
166  stat->marked_nrowidx = stat->nrowidx;
167 }
168 
169 /** reset statistics to the data before solving started */
171  SCIP_STAT* stat, /**< problem statistics data */
172  SCIP_SET* set /**< global SCIP settings */
173  )
174 {
175  assert(stat != NULL);
176  assert(stat->marked_nvaridx >= 0);
177  assert(stat->marked_ncolidx >= 0);
178  assert(stat->marked_nrowidx >= 0);
179 
183  SCIPclockReset(stat->duallptime);
189  SCIPclockReset(stat->lpsoltime);
191  SCIPclockReset(stat->sbsoltime);
193  SCIPclockReset(stat->nlpsoltime);
194  SCIPclockReset(stat->copyclock);
196 
198 
199  stat->vsidsweight = 1.0;
200  stat->nlpiterations = 0;
201  stat->nrootlpiterations = 0;
202  stat->nrootfirstlpiterations = 0;
203  stat->nprimallpiterations = 0;
204  stat->nduallpiterations = 0;
205  stat->nlexduallpiterations = 0;
206  stat->nbarrierlpiterations = 0;
207  stat->nprimalresolvelpiterations = 0;
208  stat->ndualresolvelpiterations = 0;
209  stat->nlexdualresolvelpiterations = 0;
210  stat->nnodelpiterations = 0;
211  stat->ninitlpiterations = 0;
212  stat->ndivinglpiterations = 0;
213  stat->nsbdivinglpiterations = 0;
214  stat->nsblpiterations = 0;
215  stat->nrootsblpiterations = 0;
216  stat->nconflictlpiterations = 0;
217  stat->ntotalnodes = 0;
218  stat->ntotalinternalnodes = 0;
219  stat->ncreatednodes = 0;
220  stat->nlpsolsfound = 0;
221  stat->npssolsfound = 0;
222  stat->nsbsolsfound = 0;
223  stat->nexternalsolsfound = 0;
224  stat->domchgcount = 0;
225  stat->nboundchgs = 0;
226  stat->nholechgs = 0;
227  stat->nprobboundchgs = 0;
228  stat->nprobholechgs = 0;
229  stat->nsbdowndomchgs = 0;
230  stat->nsbupdomchgs = 0;
231  stat->nruns = 0;
232  stat->nconfrestarts = 0;
233  stat->nrootboundchgs = 0;
234  stat->nrootintfixings = 0;
235  stat->prevrunnvars = 0;
236  stat->nvaridx = stat->marked_nvaridx;
237  stat->ncolidx = stat->marked_ncolidx;
238  stat->nrowidx = stat->marked_nrowidx;
239  stat->lpcount = 0;
240  stat->nlps = 0;
241  stat->nrootlps = 0;
242  stat->nprimallps = 0;
243  stat->nprimalzeroitlps = 0;
244  stat->nduallps = 0;
245  stat->ndualzeroitlps = 0;
246  stat->nlexduallps = 0;
247  stat->nbarrierlps = 0;
248  stat->nbarrierzeroitlps = 0;
249  stat->nprimalresolvelps = 0;
250  stat->ndualresolvelps = 0;
251  stat->nlexdualresolvelps = 0;
252  stat->nnodelps = 0;
253  stat->nisstoppedcalls = 0;
254  stat->ninitlps = 0;
255  stat->ndivinglps = 0;
256  stat->nsbdivinglps = 0;
257  stat->nstrongbranchs = 0;
258  stat->nrootstrongbranchs = 0;
259  stat->nconflictlps = 0;
260  stat->nnlps = 0;
261  stat->maxtotaldepth = -1;
262  stat->nactiveconss = 0;
263  stat->nenabledconss = 0;
264  stat->solindex = 0;
265  stat->memsavemode = FALSE;
266  stat->nnodesbeforefirst = -1;
267  stat->ninitconssadded = 0;
268  stat->nrunsbeforefirst = -1;
269  stat->firstprimalheur = NULL;
274  stat->primalzeroittime = 0.0;
275  stat->dualzeroittime = 0.0;
276  stat->barrierzeroittime = 0.0;
277  stat->maxcopytime = SCIP_REAL_MIN;
278  stat->mincopytime = SCIP_REAL_MAX;
279  stat->firstlptime = 0.0;
281  stat->ncopies = 0;
282  stat->nclockskipsleft = 0;
283  stat->marked_nvaridx = -1;
284  stat->marked_ncolidx = -1;
285  stat->marked_nrowidx = -1;
286 
287  stat->ndivesetlpiterations = 0;
288  stat->ndivesetcalls = 0;
289  stat->ndivesetlps = 0;
290  stat->totaldivesetdepth = 0;
291 
295 }
296 
297 /** reset implication counter */
299  SCIP_STAT* stat /**< problem statistics data */
300  )
301 {
302  assert(stat != NULL);
303 
304  stat->nimplications = 0;
305 }
306 
307 /** reset presolving and current run specific statistics */
309  SCIP_STAT* stat /**< problem statistics data */
310  )
311 {
312  assert(stat != NULL);
313 
314  stat->npresolrounds = 0;
315  stat->npresolroundsfast = 0;
316  stat->npresolroundsmed = 0;
317  stat->npresolroundsext = 0;
318  stat->npresolfixedvars = 0;
319  stat->npresolaggrvars = 0;
320  stat->npresolchgvartypes = 0;
321  stat->npresolchgbds = 0;
322  stat->npresoladdholes = 0;
323  stat->npresoldelconss = 0;
324  stat->npresoladdconss = 0;
325  stat->npresolupgdconss = 0;
326  stat->npresolchgcoefs = 0;
327  stat->npresolchgsides = 0;
328 
330 }
331 
332 /** reset primal-dual integral */
334  SCIP_STAT* stat, /**< problem statistics data */
335  SCIP_SET* set, /**< global SCIP settings */
336  SCIP_Bool partialreset /**< should time and integral value be kept? (in combination with no statistical
337  * reset, integrals are added for each problem to be solved) */
338  )
339 {
340  assert(stat != NULL);
341 
342  stat->previousgap = 100.0;
344  stat->lastdualbound = SCIP_UNKNOWN;
345  stat->lastlowerbound = -SCIPsetInfinity(set);
346  stat->lastupperbound = SCIPsetInfinity(set);
347 
348  /* partial resets keep the integral value and previous evaluation time */
349  if( !partialreset )
350  {
351  stat->previntegralevaltime = 0.0;
352  stat->primaldualintegral = 0.0;
353  }
354 }
355 
356 /** update the primal-dual integral statistic. method accepts + and - SCIPsetInfinity() as values for
357  * upper and lower bound, respectively
358  */
360  SCIP_STAT* stat, /**< problem statistics data */
361  SCIP_SET* set, /**< global SCIP settings */
362  SCIP_PROB* transprob, /**< transformed problem */
363  SCIP_PROB* origprob, /**< original problem */
364  SCIP_Real upperbound, /**< current upper bound in transformed problem, or infinity */
365  SCIP_Real lowerbound /**< current lower bound in transformed space, or -infinity */
366  )
367 {
368  SCIP_Real currentgap;
369  SCIP_Real solvingtime;
370  SCIP_Real primalbound;
371  SCIP_Real dualbound;
372 
373  assert(stat != NULL);
374  assert(set != NULL);
375 
376  solvingtime = SCIPclockGetTime(stat->solvingtime);
377  assert(solvingtime >= stat->previntegralevaltime);
378 
379  if( !SCIPsetIsInfinity(set, upperbound) ) /*lint !e777*/
380  {
381  /* get value in original space for gap calculation */
382  primalbound = SCIPprobExternObjval(transprob, origprob, set, upperbound);
383 
384  if( SCIPsetIsZero(set, primalbound) )
385  primalbound = 0.0;
386  }
387  else
388  {
389  /* no new upper bound: use stored values from last update */
390  upperbound = stat->lastupperbound;
391  primalbound = stat->lastprimalbound;
392  assert(SCIPsetIsZero(set, primalbound) == (primalbound == 0.0)); /*lint !e777*/
393  }
394 
395  if( !SCIPsetIsInfinity(set, -lowerbound) ) /*lint !e777*/
396  {
397  /* get value in original space for gap calculation */
398  dualbound = SCIPprobExternObjval(transprob, origprob, set, lowerbound);
399 
400  if( SCIPsetIsZero(set, dualbound) )
401  dualbound = 0.0;
402  }
403  else
404  {
405  /* no new lower bound: use stored values from last update */
406  lowerbound = stat->lastlowerbound;
407  dualbound = stat->lastdualbound;
408  assert(SCIPsetIsZero(set, dualbound) == (dualbound == 0.0)); /*lint !e777*/
409  }
410 
411  /* computation of the gap, special cases are handled first */
412  if( primalbound == SCIP_UNKNOWN || dualbound == SCIP_UNKNOWN ) /*lint !e777*/
413  currentgap = 100.0;
414  /* the gap is 0.0 if bounds coincide */
415  else if( SCIPsetIsGE(set, lowerbound, upperbound) || SCIPsetIsEQ(set, primalbound, dualbound) )
416  currentgap = 0.0;
417  /* the gap is 100.0 if bounds have different signs */
418  else if( primalbound * dualbound <= 0.0 ) /*lint !e777*/
419  currentgap = 100.0;
420  else if( !SCIPsetIsInfinity(set, REALABS(primalbound)) && !SCIPsetIsInfinity(set, REALABS(dualbound)) )
421  {
422  SCIP_Real absprim = REALABS(primalbound);
423  SCIP_Real absdual = REALABS(dualbound);
424 
425  /* The gap in the definition of the primal-dual integral differs from the default SCIP gap function.
426  * Here, the MAX(primalbound, dualbound) is taken for gap quotient in order to ensure a gap <= 100.
427  */
428  currentgap = 100.0 * REALABS(primalbound - dualbound) / MAX(absprim, absdual);
429  assert(SCIPsetIsLE(set, currentgap, 100.0));
430  }
431  else
432  currentgap = 100.0;
433 
434  /* if primal and dual bound have opposite signs, the gap always evaluates to 100.0% */
435  assert(currentgap == 0.0 || currentgap == 100.0 || SCIPsetIsGE(set, primalbound * dualbound, 0.0));
436 
437  /* update the integral based on previous information */
438  stat->primaldualintegral += (solvingtime - stat->previntegralevaltime) * stat->previousgap;
439 
440  /* update all relevant information for next evaluation */
441  stat->previousgap = currentgap;
442  stat->previntegralevaltime = solvingtime;
443  stat->lastprimalbound = primalbound;
444  stat->lastdualbound = dualbound;
445  stat->lastlowerbound = lowerbound;
446  stat->lastupperbound = upperbound;
447 }
448 
449 /** reset current branch and bound run specific statistics */
451  SCIP_STAT* stat, /**< problem statistics data */
452  SCIP_Bool solved /**< is problem already solved? */
453  )
454 {
455  assert(stat != NULL);
456 
457  stat->nnodes = 0;
458  stat->ninternalnodes = 0;
459  stat->ncreatednodesrun = 0;
460  stat->nactivatednodes = 0;
461  stat->ndeactivatednodes = 0;
462  stat->nbacktracks = 0;
463  stat->ndelayedcutoffs = 0;
464  stat->nreprops = 0;
465  stat->nrepropboundchgs = 0;
466  stat->nrepropcutoffs = 0;
467  stat->lastdivenode = 0;
468  stat->lastconflictnode = 0;
469  stat->bestsolnode = 0;
472  stat->lastbranchvar = NULL;
474  stat->nrootboundchgsrun = 0;
475  stat->nrootintfixingsrun = 0;
476  stat->npricerounds = 0;
477  stat->nseparounds = 0;
478  stat->maxdepth = -1;
479  stat->plungedepth = 0;
480 
481  if( !solved )
482  stat->status = SCIP_STATUS_UNKNOWN;
483 
485 
486  SCIPstatResetDisplay(stat);
487 }
488 
489 /** resets display statistics, such that a new header line is displayed before the next display line */
491  SCIP_STAT* stat /**< problem statistics data */
492  )
493 {
494  assert(stat != NULL);
495 
496  stat->lastdispnode = 0;
497  stat->ndisplines = 0;
498 }
499 
500 /** increases LP count, such that all lazy updates depending on the LP are enforced again */
502  SCIP_STAT* stat /**< problem statistics data */
503  )
504 {
505  assert(stat != NULL);
506 
507  stat->lpcount++;
508 }
509 
510 /** depending on the current memory usage, switches mode flag to standard or memory saving mode */
512  SCIP_STAT* stat, /**< problem statistics data */
513  SCIP_SET* set, /**< global SCIP settings */
514  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
515  SCIP_MEM* mem /**< block memory pools */
516  )
517 {
518  assert(stat != NULL);
519  assert(set != NULL);
520 
521  if( SCIPsetIsLT(set, set->mem_savefac, 1.0) )
522  {
523  SCIP_Longint memused;
524 
525  memused = SCIPmemGetUsed(mem);
526  if( !stat->memsavemode && memused >= set->mem_savefac * set->limit_memory * 1024.0 * 1024.0 )
527  {
528  /* switch to memory saving mode */
529  SCIPmessagePrintVerbInfo(messagehdlr, set->disp_verblevel, SCIP_VERBLEVEL_HIGH,
530  "(node %" SCIP_LONGINT_FORMAT ") switching to memory saving mode (mem: %.1fM/%.1fM)\n",
531  stat->nnodes, (SCIP_Real)memused/(1024.0*1024.0), set->limit_memory);
532  stat->memsavemode = TRUE;
533  set->nodesel = NULL;
534  }
535  else if( stat->memsavemode && memused < 0.5 * set->mem_savefac * set->limit_memory * 1024.0 * 1024.0 )
536  {
537  /* switch to standard mode */
538  SCIPmessagePrintVerbInfo(messagehdlr, set->disp_verblevel, SCIP_VERBLEVEL_HIGH,
539  "(node %" SCIP_LONGINT_FORMAT ") switching to standard mode (mem: %.1fM/%.1fM)\n",
540  stat->nnodes, (SCIP_Real)memused/(1024.0*1024.0), set->limit_memory);
541  stat->memsavemode = FALSE;
542  set->nodesel = NULL;
543  }
544  }
545  else
546  stat->memsavemode = FALSE;
547 }
548 
549 /** enables or disables all statistic clocks of \p stat concerning LP execution time, strong branching time, etc.
550  *
551  * @note: The (pre-)solving time clocks which are relevant for the output during (pre-)solving
552  * are not affected by this method
553  *
554  * @see: For completely disabling all timing of SCIP, consider setting the parameter timing/enabled to FALSE
555  */
557  SCIP_STAT* stat, /**< SCIP statistics */
558  SCIP_Bool enable /**< should the LP clocks be enabled? */
559  )
560 {
561  assert(stat != NULL);
562 
563  SCIPclockEnableOrDisable(stat->primallptime, enable);
564  SCIPclockEnableOrDisable(stat->duallptime, enable);
567  SCIPclockEnableOrDisable(stat->divinglptime, enable);
570  SCIPclockEnableOrDisable(stat->lpsoltime, enable);
572  SCIPclockEnableOrDisable(stat->sbsoltime, enable);
574  SCIPclockEnableOrDisable(stat->nlpsoltime, enable);
575  SCIPclockEnableOrDisable(stat->copyclock, enable);
577 }
SCIP_Longint nlexduallps
Definition: struct_stat.h:148
SCIP_Longint nprimallps
Definition: struct_stat.h:144
SCIP_RETCODE SCIPvisualCreate(SCIP_VISUAL **visual, SCIP_MESSAGEHDLR *messagehdlr)
Definition: visual.c:75
SCIP_Longint ndualresolvelpiterations
Definition: struct_stat.h:54
SCIP_Real lastupperbound
Definition: struct_stat.h:114
SCIP_Longint nsbdivinglps
Definition: struct_stat.h:158
int npresoladdconss
Definition: struct_stat.h:199
SCIP_Bool SCIPsetIsInfinity(SCIP_SET *set, SCIP_Real val)
Definition: set.c:5180
SCIP_Real firstlpdualbound
Definition: struct_stat.h:94
int npresolroundsfast
Definition: struct_stat.h:190
SCIP_Longint nnodelpiterations
Definition: struct_stat.h:56
int marked_ncolidx
Definition: struct_stat.h:178
SCIP_Bool SCIPsetIsLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:5238
void SCIPstatEnableVarHistory(SCIP_STAT *stat)
Definition: stat.c:148
SCIP_Longint nlpsolsfound
Definition: struct_stat.h:77
int solindex
Definition: struct_stat.h:217
SCIP_Longint nsbdowndomchgs
Definition: struct_stat.h:90
SCIP_STATUS status
Definition: struct_stat.h:139
SCIP_Longint nlpiterations
Definition: struct_stat.h:46
SCIP_Longint ndeactivatednodes
Definition: struct_stat.h:71
void SCIPstatResetPresolving(SCIP_STAT *stat)
Definition: stat.c:308
SCIP_Longint nlexdualresolvelps
Definition: struct_stat.h:153
int npricerounds
Definition: struct_stat.h:180
SCIP_Longint SCIPmemGetUsed(SCIP_MEM *mem)
Definition: mem.c:79
SCIP_Longint nlps
Definition: struct_stat.h:142
SCIP_Longint nbarrierlpiterations
Definition: struct_stat.h:52
SCIP_Longint ninitconssadded
Definition: struct_stat.h:93
SCIP_CLOCK * conflictlptime
Definition: struct_stat.h:125
int nrunsbeforefirst
Definition: struct_stat.h:218
SCIP_Real rootlowerbound
Definition: struct_stat.h:95
internal methods for clocks and timing issues
void SCIPstatUpdateMemsaveMode(SCIP_STAT *stat, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_MEM *mem)
Definition: stat.c:511
SCIP_Longint ntotalnodes
Definition: struct_stat.h:66
SCIP_Real previntegralevaltime
Definition: struct_stat.h:110
int npresolaggrvars
Definition: struct_stat.h:194
SCIP_Real lastbranchvalue
Definition: struct_stat.h:107
#define NULL
Definition: lpi_spx.cpp:130
SCIP_Longint nrootfirstlpiterations
Definition: struct_stat.h:48
SCIP_Longint ndivinglps
Definition: struct_stat.h:156
SCIP_BRANCHDIR lastbranchdir
Definition: struct_stat.h:140
int npresolfixedvars
Definition: struct_stat.h:193
void SCIPstatDisableVarHistory(SCIP_STAT *stat)
Definition: stat.c:138
SCIP_Real lastsolgap
Definition: struct_stat.h:100
SCIP_Longint nrootstrongbranchs
Definition: struct_stat.h:160
SCIP_Real SCIPsetInfinity(SCIP_SET *set)
Definition: set.c:5042
int nclockskipsleft
Definition: struct_stat.h:222
int npresoldelconss
Definition: struct_stat.h:198
SCIP_Longint nstrongbranchs
Definition: struct_stat.h:159
SCIP_Longint nholechgs
Definition: struct_stat.h:87
SCIP_RETCODE SCIPhistoryCreate(SCIP_HISTORY **history, BMS_BLKMEM *blkmem)
Definition: history.c:40
SCIP_Longint nrootsblpiterations
Definition: struct_stat.h:62
void SCIPvisualFree(SCIP_VISUAL **visual)
Definition: visual.c:95
#define FALSE
Definition: def.h:56
void SCIPstatEnableOrDisableStatClocks(SCIP_STAT *stat, SCIP_Bool enable)
Definition: stat.c:556
SCIP_Longint nrootlps
Definition: struct_stat.h:143
SCIP_Longint ncreatednodes
Definition: struct_stat.h:68
void SCIPhistoryReset(SCIP_HISTORY *history)
Definition: history.c:67
SCIP_Real primaldualintegral
Definition: struct_stat.h:108
SCIP_Bool SCIPsetIsZero(SCIP_SET *set, SCIP_Real val)
Definition: set.c:5292
#define TRUE
Definition: def.h:55
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:53
int nenabledconss
Definition: struct_stat.h:187
#define SCIP_CALL(x)
Definition: def.h:266
SCIP_Longint nnlps
Definition: struct_stat.h:162
void SCIPstatResetImplications(SCIP_STAT *stat)
Definition: stat.c:298
SCIP_Longint nbacktracks
Definition: struct_stat.h:72
int maxtotaldepth
Definition: struct_stat.h:184
SCIP_CLOCK * barrierlptime
Definition: struct_stat.h:122
int ndisplines
Definition: struct_stat.h:182
SCIP_Longint lastdispnode
Definition: struct_stat.h:81
int npresolroundsext
Definition: struct_stat.h:192
methods for creating output for visualization tools (VBC, BAK)
void SCIPclockEnableOrDisable(SCIP_CLOCK *clck, SCIP_Bool enable)
Definition: clock.c:250
SCIP_CLOCK * copyclock
Definition: struct_stat.h:131
int maxdepth
Definition: struct_stat.h:183
SCIP_CLOCK * nlpsoltime
Definition: struct_stat.h:130
void SCIPstatReset(SCIP_STAT *stat, SCIP_SET *set)
Definition: stat.c:170
SCIP_Real lastdualbound
Definition: struct_stat.h:112
SCIP_Real dualzeroittime
Definition: struct_stat.h:102
SCIP_Longint nexternalsolsfound
Definition: struct_stat.h:80
void SCIPstatEnforceLPUpdates(SCIP_STAT *stat)
Definition: stat.c:501
internal methods for branching and inference history
int nrootintfixings
Definition: struct_stat.h:171
SCIP_Longint nsblpiterations
Definition: struct_stat.h:61
SCIP_Real primalzeroittime
Definition: struct_stat.h:101
int nrootboundchgs
Definition: struct_stat.h:169
SCIP_Bool SCIPsetIsGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:5274
SCIP_HISTORY * glbhistorycrun
Definition: struct_stat.h:135
int nconfrestarts
Definition: struct_stat.h:168
SCIP_Longint nlexduallpiterations
Definition: struct_stat.h:51
SCIP_Bool SCIPsetIsLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:5220
SCIP_CLOCK * strongpropclock
Definition: struct_stat.h:132
int npresolchgcoefs
Definition: struct_stat.h:201
int npresolchgvartypes
Definition: struct_stat.h:195
SCIP_Real barrierzeroittime
Definition: struct_stat.h:103
SCIP_Longint npssolsfound
Definition: struct_stat.h:78
SCIP_Real mincopytime
Definition: struct_stat.h:105
int npresolroundsmed
Definition: struct_stat.h:191
int prevrunnvars
Definition: struct_stat.h:173
internal methods for storing and manipulating the main problem
void SCIPmessagePrintVerbInfo(SCIP_MESSAGEHDLR *messagehdlr, SCIP_VERBLEVEL verblevel, SCIP_VERBLEVEL msgverblevel, const char *formatstr,...)
Definition: message.c:662
SCIP_Longint lpcount
Definition: struct_stat.h:141
SCIP_RETCODE SCIPstatFree(SCIP_STAT **stat, BMS_BLKMEM *blkmem)
Definition: stat.c:100
int ndivesetcalls
Definition: struct_stat.h:166
methods for block memory pools and memory buffers
SCIP_Longint bestsolnode
Definition: struct_stat.h:84
void SCIPclockReset(SCIP_CLOCK *clck)
Definition: clock.c:199
SCIP_Longint nconflictlpiterations
Definition: struct_stat.h:63
int npresolchgsides
Definition: struct_stat.h:202
SCIP_CLOCK * pseudosoltime
Definition: struct_stat.h:127
SCIP_Longint nsbupdomchgs
Definition: struct_stat.h:91
SCIP_HEUR * firstprimalheur
Definition: struct_stat.h:138
SCIP_Longint ninitlpiterations
Definition: struct_stat.h:57
#define BMSallocMemory(ptr)
Definition: memory.h:74
SCIP_Real SCIPclockGetTime(SCIP_CLOCK *clck)
Definition: clock.c:428
SCIP_Longint nsbdivinglpiterations
Definition: struct_stat.h:60
SCIP_Longint nprimalresolvelpiterations
Definition: struct_stat.h:53
int nseparounds
Definition: struct_stat.h:181
SCIP_HISTORY * glbhistory
Definition: struct_stat.h:134
SCIP_Longint nconflictlps
Definition: struct_stat.h:161
int npresolchgbds
Definition: struct_stat.h:196
internal methods for global SCIP settings
int npresoladdholes
Definition: struct_stat.h:197
int marked_nvaridx
Definition: struct_stat.h:177
#define BMSfreeMemory(ptr)
Definition: memory.h:100
SCIP_Longint nduallpiterations
Definition: struct_stat.h:50
SCIP_Longint nbarrierzeroitlps
Definition: struct_stat.h:150
SCIP_Bool SCIPsetIsEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:5202
SCIP_Real vsidsweight
Definition: struct_stat.h:96
void SCIPstatResetPrimalDualIntegral(SCIP_STAT *stat, SCIP_SET *set, SCIP_Bool partialreset)
Definition: stat.c:333
void SCIPstatResetDisplay(SCIP_STAT *stat)
Definition: stat.c:490
SCIP_Longint ncreatednodesrun
Definition: struct_stat.h:69
SCIP_Longint nprimalresolvelps
Definition: struct_stat.h:151
SCIP_CLOCK * divinglptime
Definition: struct_stat.h:123
SCIP_Longint nprobboundchgs
Definition: struct_stat.h:88
SCIP_RETCODE SCIPclockCreate(SCIP_CLOCK **clck, SCIP_CLOCKTYPE clocktype)
Definition: clock.c:160
SCIP_Longint nduallps
Definition: struct_stat.h:146
SCIP_RETCODE SCIPstatCreate(SCIP_STAT **stat, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr)
Definition: stat.c:43
#define SCIP_UNKNOWN
Definition: def.h:148
SCIP_Longint nisstoppedcalls
Definition: struct_stat.h:163
#define SCIP_Bool
Definition: def.h:53
SCIP_Real lastprimalbound
Definition: struct_stat.h:111
SCIP_Longint ndivesetlpiterations
Definition: struct_stat.h:59
SCIP_Longint ndualresolvelps
Definition: struct_stat.h:152
SCIP_CLOCK * sbsoltime
Definition: struct_stat.h:128
SCIP_Longint ndivesetlps
Definition: struct_stat.h:157
SCIP_CLOCK * presolvingtime
Definition: struct_stat.h:117
SCIP_Bool memsavemode
Definition: struct_stat.h:223
int npresolrounds
Definition: struct_stat.h:189
SCIP_Longint nlexdualresolvelpiterations
Definition: struct_stat.h:55
SCIP_Real lastlowerbound
Definition: struct_stat.h:113
void SCIPclockFree(SCIP_CLOCK **clck)
Definition: clock.c:175
int marked_nrowidx
Definition: struct_stat.h:179
SCIP_Longint nrepropcutoffs
Definition: struct_stat.h:76
#define MAX(x, y)
Definition: tclique_def.h:75
SCIP_Longint lastdivenode
Definition: struct_stat.h:82
SCIP_Real maxcopytime
Definition: struct_stat.h:104
SCIP_CLOCK * lexduallptime
Definition: struct_stat.h:121
SCIP_Longint nnodesbeforefirst
Definition: struct_stat.h:92
#define SCIP_REAL_MAX
Definition: def.h:128
SCIP_Longint nrootlpiterations
Definition: struct_stat.h:47
SCIP_CLOCK * strongbranchtime
Definition: struct_stat.h:124
#define SCIP_REAL_MIN
Definition: def.h:129
void SCIPstatResetCurrentRun(SCIP_STAT *stat, SCIP_Bool solved)
Definition: stat.c:450
SCIP_Real firstsolgap
Definition: struct_stat.h:99
#define SCIP_DEFAULT_INFINITY
Definition: def.h:132
int nactiveconss
Definition: struct_stat.h:186
SCIP_Longint lastconflictnode
Definition: struct_stat.h:83
#define REALABS(x)
Definition: def.h:151
SCIP_Longint domchgcount
Definition: struct_stat.h:85
SCIP_CLOCK * solvingtime
Definition: struct_stat.h:115
SCIP_Longint nbarrierlps
Definition: struct_stat.h:149
SCIP_Longint nprimalzeroitlps
Definition: struct_stat.h:145
SCIP_CLOCK * primallptime
Definition: struct_stat.h:119
int nrootboundchgsrun
Definition: struct_stat.h:170
SCIP_Longint nboundchgs
Definition: struct_stat.h:86
#define SCIP_Real
Definition: def.h:127
internal methods for problem statistics
void SCIPstatUpdatePrimalDualIntegral(SCIP_STAT *stat, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_Real upperbound, SCIP_Real lowerbound)
Definition: stat.c:359
SCIP_Real firstprimaltime
Definition: struct_stat.h:98
SCIP_Longint nrepropboundchgs
Definition: struct_stat.h:75
SCIP_Real firstprimalbound
Definition: struct_stat.h:97
SCIP_Longint ntotalinternalnodes
Definition: struct_stat.h:67
SCIP_CLOCK * duallptime
Definition: struct_stat.h:120
#define SCIP_Longint
Definition: def.h:112
SCIP_Longint nactivatednodes
Definition: struct_stat.h:70
SCIP_VAR * lastbranchvar
Definition: struct_stat.h:136
SCIP_Longint nprimallpiterations
Definition: struct_stat.h:49
SCIP_Longint nreprops
Definition: struct_stat.h:74
SCIP_Longint nsbsolsfound
Definition: struct_stat.h:79
SCIP_CLOCK * nodeactivationtime
Definition: struct_stat.h:129
SCIP_Longint ndualzeroitlps
Definition: struct_stat.h:147
SCIP_Real firstlptime
Definition: struct_stat.h:106
SCIP_Bool collectvarhistory
Definition: struct_stat.h:227
SCIP_Longint ninternalnodes
Definition: struct_stat.h:65
SCIP_Real SCIPprobExternObjval(SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_SET *set, SCIP_Real objval)
Definition: prob.c:1953
int plungedepth
Definition: struct_stat.h:185
SCIP_Real previousgap
Definition: struct_stat.h:109
SCIP_Longint nnodelps
Definition: struct_stat.h:154
common defines and data types used in all packages of SCIP
SCIP_Longint nnodes
Definition: struct_stat.h:64
int nrootintfixingsrun
Definition: struct_stat.h:172
struct BMS_BlkMem BMS_BLKMEM
Definition: memory.h:392
#define SCIP_ALLOC(x)
Definition: def.h:277
SCIP_Longint nprobholechgs
Definition: struct_stat.h:89
void SCIPhistoryFree(SCIP_HISTORY **history, BMS_BLKMEM *blkmem)
Definition: history.c:55
int npresolupgdconss
Definition: struct_stat.h:200
void SCIPstatMark(SCIP_STAT *stat)
Definition: stat.c:158
SCIP_Longint ninitlps
Definition: struct_stat.h:155
SCIP_Longint ndelayedcutoffs
Definition: struct_stat.h:73
SCIP_CLOCK * lpsoltime
Definition: struct_stat.h:126
int nimplications
Definition: struct_stat.h:188
SCIP_Longint totaldivesetdepth
Definition: struct_stat.h:164
SCIP_Longint ndivinglpiterations
Definition: struct_stat.h:58
memory allocation routines