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