Scippy

SCIP

Solving Constraint Integer Programs

stat.c File Reference

Detailed Description

methods for problem statistics

Author
Tobias Achterberg
Stefan Heinz
Gregor Hendel
Gerald Gamrath
Marc Pfetsch
Stefan Vigerske

Definition in file stat.c.

#include <assert.h>
#include "scip/def.h"
#include "blockmemshell/memory.h"
#include "scip/set.h"
#include "scip/prob.h"
#include "scip/stat.h"
#include "scip/clock.h"
#include "scip/visual.h"
#include "scip/mem.h"
#include "scip/var.h"
#include "scip/history.h"
#include "scip/concsolver.h"

Go to the source code of this file.

Functions

SCIP_RETCODE SCIPstatCreate (SCIP_STAT **stat, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_MESSAGEHDLR *messagehdlr)
 
SCIP_RETCODE SCIPstatFree (SCIP_STAT **stat, BMS_BLKMEM *blkmem)
 
void SCIPstatDisableVarHistory (SCIP_STAT *stat)
 
void SCIPstatEnableVarHistory (SCIP_STAT *stat)
 
void SCIPstatMark (SCIP_STAT *stat)
 
void SCIPstatReset (SCIP_STAT *stat, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob)
 
void SCIPstatResetImplications (SCIP_STAT *stat)
 
void SCIPstatResetPresolving (SCIP_STAT *stat, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob)
 
void SCIPstatResetPrimalDualIntegral (SCIP_STAT *stat, SCIP_SET *set, SCIP_Bool partialreset)
 
void SCIPstatUpdatePrimalDualIntegral (SCIP_STAT *stat, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_Real upperbound, SCIP_Real lowerbound)
 
void SCIPstatResetCurrentRun (SCIP_STAT *stat, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_Bool solved)
 
void SCIPstatResetDisplay (SCIP_STAT *stat)
 
void SCIPstatEnforceLPUpdates (SCIP_STAT *stat)
 
void SCIPstatUpdateMemsaveMode (SCIP_STAT *stat, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_MEM *mem)
 
SCIP_Longint SCIPstatGetMemExternEstim (SCIP_STAT *stat)
 
void SCIPstatEnableOrDisableStatClocks (SCIP_STAT *stat, SCIP_Bool enable)
 
void SCIPstatComputeRootLPBestEstimate (SCIP_STAT *stat, SCIP_SET *set, SCIP_Real rootlpobjval, SCIP_VAR **vars, int nvars)
 
SCIP_RETCODE SCIPstatUpdateVarRootLPBestEstimate (SCIP_STAT *stat, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldrootpscostscore)
 
void SCIPstatPrintDebugMessage (SCIP_STAT *stat, const char *sourcefile, int sourceline, const char *formatstr,...)
 
void SCIPstatDebugMessagePrint (SCIP_STAT *stat, const char *formatstr,...)
 

Function Documentation

◆ SCIPstatCreate()

SCIP_RETCODE SCIPstatCreate ( SCIP_STAT **  stat,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_MESSAGEHDLR messagehdlr 
)

creates problem statistics data

Parameters
statpointer to problem statistics data
blkmemblock memory
setglobal SCIP settings
transprobtransformed problem, or NULL
origproboriginal problem, or NULL
messagehdlrmessage handler

Definition at line 45 of file stat.c.

References BMSallocMemory, FALSE, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_CLOCKTYPE_DEFAULT, SCIP_OKAY, SCIP_STATUS_UNKNOWN, SCIPclockCreate(), SCIPhistoryCreate(), SCIPregressionCreate(), SCIPstatEnableOrDisableStatClocks(), SCIPstatReset(), SCIPvisualCreate(), and TRUE.

Referenced by copyProb(), and SCIPcreateProb().

◆ SCIPstatFree()

SCIP_RETCODE SCIPstatFree ( SCIP_STAT **  stat,
BMS_BLKMEM blkmem 
)

frees problem statistics data

Parameters
statpointer to problem statistics data
blkmemblock memory

Definition at line 110 of file stat.c.

References BMSfreeMemory, NULL, SCIP_OKAY, SCIPclockFree(), SCIPhistoryFree(), SCIPregressionFree(), and SCIPvisualFree().

Referenced by SCIPfreeProb().

◆ SCIPstatDisableVarHistory()

void SCIPstatDisableVarHistory ( SCIP_STAT stat)

diables the collection of any statistic for a variable

Parameters
statproblem statistics data

Definition at line 151 of file stat.c.

References SCIP_Stat::collectvarhistory, FALSE, and NULL.

Referenced by SCIPdisableVarHistory(), and SCIPstartProbing().

◆ SCIPstatEnableVarHistory()

void SCIPstatEnableVarHistory ( SCIP_STAT stat)

enables the collection of statistics for a variable

Parameters
statproblem statistics data

Definition at line 161 of file stat.c.

References SCIP_Stat::collectvarhistory, NULL, and TRUE.

Referenced by SCIPenableVarHistory(), and SCIPendProbing().

◆ SCIPstatMark()

void SCIPstatMark ( SCIP_STAT stat)

marks statistics to be able to reset them when solving process is freed

Parameters
statproblem statistics data

Definition at line 171 of file stat.c.

References SCIP_Stat::marked_ncolidx, SCIP_Stat::marked_nrowidx, SCIP_Stat::marked_nvaridx, SCIP_Stat::ncolidx, SCIP_Stat::nrowidx, NULL, and SCIP_Stat::nvaridx.

Referenced by prepareReoptimization(), and SCIPtransformProb().

◆ SCIPstatReset()

void SCIPstatReset ( SCIP_STAT stat,
SCIP_SET set,
SCIP_PROB transprob,
SCIP_PROB origprob 
)

reset statistics to the data before solving started

Parameters
statproblem statistics data
setglobal SCIP settings
transprobtransformed problem, or NULL
origproboriginal problem, or NULL

Definition at line 183 of file stat.c.

References SCIP_Stat::avgnnz, SCIP_Stat::barrierlptime, SCIP_Stat::barrierzeroittime, SCIP_Stat::branchedunbdvar, SCIP_Stat::conflictlptime, SCIP_Stat::copyclock, SCIP_Stat::divinglptime, SCIP_Stat::domchgcount, SCIP_Stat::duallptime, SCIP_Stat::dualzeroittime, SCIP_Stat::externmemestim, FALSE, SCIP_Stat::firstlpdualbound, SCIP_Stat::firstlptime, SCIP_Stat::firstprimalbound, SCIP_Stat::firstprimalheur, SCIP_Stat::firstprimaltime, SCIP_Stat::firstsolgap, SCIP_Stat::glbhistory, SCIP_Stat::lastsblpsolstats, SCIP_Stat::lastsolgap, SCIP_Stat::lexduallptime, SCIP_Stat::lpcount, SCIP_Stat::lpsoltime, SCIP_Stat::marked_ncolidx, SCIP_Stat::marked_nrowidx, SCIP_Stat::marked_nvaridx, SCIP_Stat::maxcopytime, SCIP_Stat::maxtotaldepth, SCIP_Stat::memsavemode, SCIP_Stat::mincopytime, SCIP_Stat::nactiveconss, SCIP_Stat::nbarrierlpiterations, SCIP_Stat::nbarrierlps, SCIP_Stat::nbarrierzeroitlps, SCIP_Stat::nboundchgs, SCIP_Stat::nclockskipsleft, SCIP_Stat::ncolidx, SCIP_Stat::nconflictlpiterations, SCIP_Stat::nconflictlps, SCIP_Stat::nconfrestarts, SCIP_Stat::ncopies, SCIP_Stat::ncreatednodes, SCIP_Stat::ndivesetcalls, SCIP_Stat::ndivesetlpiterations, SCIP_Stat::ndivesetlps, SCIP_Stat::ndivinglpiterations, SCIP_Stat::ndivinglps, SCIP_Stat::nduallpiterations, SCIP_Stat::nduallps, SCIP_Stat::ndualresolvelpiterations, SCIP_Stat::ndualresolvelps, SCIP_Stat::ndualzeroitlps, SCIP_Stat::nenabledconss, SCIP_Stat::nexternalsolsfound, SCIP_Stat::nholechgs, SCIP_Stat::ninitconssadded, SCIP_Stat::ninitlpiterations, SCIP_Stat::ninitlps, SCIP_Stat::nisstoppedcalls, SCIP_Stat::nlexduallpiterations, SCIP_Stat::nlexduallps, SCIP_Stat::nlexdualresolvelpiterations, SCIP_Stat::nlexdualresolvelps, SCIP_Stat::nlpbestsolsfound, SCIP_Stat::nlpiterations, SCIP_Stat::nlps, SCIP_Stat::nlpsolsfound, SCIP_Stat::nlpsoltime, SCIP_Stat::nnlps, SCIP_Stat::nnodelpiterations, SCIP_Stat::nnodelps, SCIP_Stat::nnodesbeforefirst, SCIP_Stat::nnz, SCIP_Stat::nodeactivationtime, SCIP_Stat::nprimallpiterations, SCIP_Stat::nprimallps, SCIP_Stat::nprimalresolvelpiterations, SCIP_Stat::nprimalresolvelps, SCIP_Stat::nprimalzeroitlps, SCIP_Stat::nprobboundchgs, SCIP_Stat::nprobholechgs, SCIP_Stat::npsbestsolsfound, SCIP_Stat::npssolsfound, SCIP_Stat::nrelaxbestsolsfound, SCIP_Stat::nrelaxsolsfound, SCIP_Stat::nrootboundchgs, SCIP_Stat::nrootfirstlpiterations, SCIP_Stat::nrootintfixings, SCIP_Stat::nrootlpiterations, SCIP_Stat::nrootlps, SCIP_Stat::nrootsblpiterations, SCIP_Stat::nrootstrongbranchs, SCIP_Stat::nrowidx, SCIP_Stat::nruns, SCIP_Stat::nrunsbeforefirst, SCIP_Stat::nsbbestsolsfound, SCIP_Stat::nsbdivinglpiterations, SCIP_Stat::nsbdivinglps, SCIP_Stat::nsbdowndomchgs, SCIP_Stat::nsblpiterations, SCIP_Stat::nsbsolsfound, SCIP_Stat::nsbtimesiterlimhit, SCIP_Stat::nsbupdomchgs, SCIP_Stat::nstrongbranchs, SCIP_Stat::ntotalinternalnodes, SCIP_Stat::ntotalnodes, SCIP_Stat::ntotalnodesmerged, NULL, SCIP_Stat::nvaridx, SCIP_Stat::presolvingtime, SCIP_Stat::prevrunnvars, SCIP_Stat::primallptime, SCIP_Stat::primalzeroittime, SCIP_Stat::pseudosoltime, SCIP_Stat::relaxcount, SCIP_Stat::relaxsoltime, SCIP_Stat::sbsoltime, SCIP_DEFAULT_INFINITY, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIP_UNKNOWN, SCIPclockReset(), SCIPhistoryReset(), SCIPstatResetImplications(), SCIPstatResetPresolving(), SCIPstatResetPrimalDualIntegral(), SCIP_Stat::solindex, SCIP_Stat::solvingtime, SCIP_Stat::strongbranchtime, SCIP_Stat::strongpropclock, SCIP_Stat::totaldivesetdepth, and SCIP_Stat::vsidsweight.

Referenced by freeReoptSolve(), freeTransform(), and SCIPstatCreate().

◆ SCIPstatResetImplications()

void SCIPstatResetImplications ( SCIP_STAT stat)

reset implication counter

Parameters
statproblem statistics data

Definition at line 328 of file stat.c.

References SCIP_Stat::nimplications, and NULL.

Referenced by SCIPstatReset().

◆ SCIPstatResetPresolving()

void SCIPstatResetPresolving ( SCIP_STAT stat,
SCIP_SET set,
SCIP_PROB transprob,
SCIP_PROB origprob 
)

reset presolving and current run specific statistics

Parameters
statproblem statistics data
setglobal SCIP settings
transprobtransformed problem, or NULL if not yet existing
origproboriginal problem, or NULL

Definition at line 338 of file stat.c.

References FALSE, SCIP_Stat::npresoladdconss, SCIP_Stat::npresoladdholes, SCIP_Stat::npresolaggrvars, SCIP_Stat::npresolchgbds, SCIP_Stat::npresolchgcoefs, SCIP_Stat::npresolchgsides, SCIP_Stat::npresolchgvartypes, SCIP_Stat::npresoldelconss, SCIP_Stat::npresolfixedvars, SCIP_Stat::npresolrounds, SCIP_Stat::npresolroundsext, SCIP_Stat::npresolroundsfast, SCIP_Stat::npresolroundsmed, SCIP_Stat::npresolupgdconss, NULL, and SCIPstatResetCurrentRun().

Referenced by initPresolve(), and SCIPstatReset().

◆ SCIPstatResetPrimalDualIntegral()

void SCIPstatResetPrimalDualIntegral ( SCIP_STAT stat,
SCIP_SET set,
SCIP_Bool  partialreset 
)

reset primal-dual integral

Parameters
statproblem statistics data
setglobal SCIP settings
partialresetshould time and integral value be kept? (in combination with no statistical reset, integrals are added for each problem to be solved)

Definition at line 366 of file stat.c.

References SCIP_Stat::lastdualbound, SCIP_Stat::lastlowerbound, SCIP_Stat::lastprimalbound, SCIP_Stat::lastupperbound, NULL, SCIP_Stat::previntegralevaltime, SCIP_Stat::previousgap, SCIP_Stat::primaldualintegral, SCIP_UNKNOWN, and SCIPsetInfinity().

Referenced by freeReoptSolve(), freeTransform(), and SCIPstatReset().

◆ SCIPstatUpdatePrimalDualIntegral()

void SCIPstatUpdatePrimalDualIntegral ( SCIP_STAT stat,
SCIP_SET set,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_Real  upperbound,
SCIP_Real  lowerbound 
)

update the primal-dual integral statistic. method accepts + and - SCIPsetInfinity() as values for upper and lower bound, respectively

Parameters
statproblem statistics data
setglobal SCIP settings
transprobtransformed problem
origproboriginal problem
upperboundcurrent upper bound in transformed problem, or infinity
lowerboundcurrent lower bound in transformed space, or -infinity

Definition at line 392 of file stat.c.

References SCIP_Stat::lastdualbound, SCIP_Stat::lastlowerbound, SCIP_Stat::lastprimalbound, SCIP_Stat::lastupperbound, MAX, NULL, SCIP_Stat::previntegralevaltime, SCIP_Stat::previousgap, SCIP_Stat::primaldualintegral, REALABS, SCIP_Real, SCIP_UNKNOWN, SCIPclockGetTime(), SCIPprobExternObjval(), SCIPsetIsEQ(), SCIPsetIsGE(), SCIPsetIsInfinity(), SCIPsetIsLE(), SCIPsetIsZero(), and SCIP_Stat::solvingtime.

Referenced by exitPresolve(), SCIPnodeCutoff(), SCIPnodeUpdateLowerbound(), SCIPsolveCIP(), and SCIPstoreSolutionGap().

◆ SCIPstatResetCurrentRun()

void SCIPstatResetCurrentRun ( SCIP_STAT stat,
SCIP_SET set,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_Bool  solved 
)

reset current branch and bound run specific statistics

Parameters
statproblem statistics data
setglobal SCIP settings
transprobtransformed problem, or NULL
origproboriginal problem, or NULL
solvedis problem already solved?

Definition at line 483 of file stat.c.

References SCIP_Stat::bestsolnode, SCIP_Stat::branchedunbdvar, FALSE, SCIP_Stat::glbhistorycrun, SCIP_Stat::lastbranchdir, SCIP_Stat::lastbranchvalue, SCIP_Stat::lastbranchvar, SCIP_Stat::lastconflictnode, SCIP_Stat::lastdivenode, SCIP_Stat::maxdepth, SCIP_Stat::nactivatednodes, SCIP_Stat::nbacktracks, SCIP_Stat::ncreatednodesrun, SCIP_Stat::ndeactivatednodes, SCIP_Stat::ndelayedcutoffs, SCIP_Stat::nearlybacktracks, SCIP_Stat::nfeasleaves, SCIP_Stat::ninfeasleaves, SCIP_Stat::ninternalnodes, SCIP_Stat::nnodes, SCIP_Stat::nnodesaboverefbound, SCIP_Stat::nobjleaves, SCIP_Stat::npricerounds, SCIP_Stat::nrepropboundchgs, SCIP_Stat::nrepropcutoffs, SCIP_Stat::nreprops, SCIP_Stat::nrootboundchgsrun, SCIP_Stat::nrootintfixingsrun, SCIP_Stat::nseparounds, NULL, SCIP_Stat::plungedepth, SCIP_Stat::referencebound, SCIP_Stat::regressioncandsobjval, SCIP_Stat::rootlowerbound, SCIP_Stat::rootlpbestestimate, SCIP_BRANCHDIR_DOWNWARDS, SCIP_INVALID, SCIP_REAL_MIN, SCIP_STATUS_UNKNOWN, SCIP_UNKNOWN, SCIPhistoryReset(), SCIPprobInternObjval(), SCIPregressionReset(), SCIPsetGetReferencevalue(), SCIPsetInfinity(), SCIPsetIsInfinity(), SCIPstatResetDisplay(), and SCIP_Stat::status.

Referenced by freeReoptSolve(), freeSolve(), initSolve(), and SCIPstatResetPresolving().

◆ SCIPstatResetDisplay()

void SCIPstatResetDisplay ( SCIP_STAT stat)

resets display statistics, such that a new header line is displayed before the next display line

Parameters
statproblem statistics data

Definition at line 544 of file stat.c.

References SCIP_Stat::lastdispnode, SCIP_Stat::ndisplines, and NULL.

Referenced by SCIPsolve(), and SCIPstatResetCurrentRun().

◆ SCIPstatEnforceLPUpdates()

void SCIPstatEnforceLPUpdates ( SCIP_STAT stat)

increases LP count, such that all lazy updates depending on the LP are enforced again

Parameters
statproblem statistics data

Definition at line 555 of file stat.c.

References SCIP_Stat::lpcount, and NULL.

Referenced by initSolve().

◆ SCIPstatUpdateMemsaveMode()

void SCIPstatUpdateMemsaveMode ( SCIP_STAT stat,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
SCIP_MEM mem 
)

depending on the current memory usage, switches mode flag to standard or memory saving mode

Parameters
statproblem statistics data
setglobal SCIP settings
messagehdlrmessage handler
memblock memory pools

Definition at line 565 of file stat.c.

References FALSE, SCIP_Stat::memsavemode, SCIP_Stat::nnodes, NULL, SCIP_Longint, SCIP_Real, SCIP_VERBLEVEL_HIGH, SCIPmemGetUsed(), SCIPmessagePrintVerbInfo(), SCIPsetIsLT(), and TRUE.

Referenced by SCIPsolveCIP().

◆ SCIPstatGetMemExternEstim()

SCIP_Longint SCIPstatGetMemExternEstim ( SCIP_STAT stat)

returns the estimated number of bytes used by extern software, e.g., the LP solver

Parameters
statdynamic SCIP statistics

Definition at line 604 of file stat.c.

References SCIP_Stat::externmemestim.

Referenced by SCIPgetMemExternEstim().

◆ SCIPstatEnableOrDisableStatClocks()

void SCIPstatEnableOrDisableStatClocks ( SCIP_STAT stat,
SCIP_Bool  enable 
)

enables or disables all statistic clocks of stat concerning LP execution time, strong branching time, etc.

Note
: The (pre-)solving time clocks which are relevant for the output during (pre-)solving are not affected by this method
See also
: For completely disabling all timing of SCIP, consider setting the parameter timing/enabled to FALSE
Parameters
statSCIP statistics
enableshould the LP clocks be enabled?

Definition at line 618 of file stat.c.

References SCIP_Stat::barrierlptime, SCIP_Stat::conflictlptime, SCIP_Stat::copyclock, SCIP_Stat::divinglptime, SCIP_Stat::duallptime, SCIP_Stat::lexduallptime, SCIP_Stat::lpsoltime, SCIP_Stat::nlpsoltime, SCIP_Stat::nodeactivationtime, NULL, SCIP_Stat::primallptime, SCIP_Stat::pseudosoltime, SCIP_Stat::relaxsoltime, SCIP_Stat::sbsoltime, SCIPclockEnableOrDisable(), SCIP_Stat::strongbranchtime, and SCIP_Stat::strongpropclock.

Referenced by SCIPenableOrDisableStatisticTiming(), and SCIPstatCreate().

◆ SCIPstatComputeRootLPBestEstimate()

void SCIPstatComputeRootLPBestEstimate ( SCIP_STAT stat,
SCIP_SET set,
SCIP_Real  rootlpobjval,
SCIP_VAR **  vars,
int  nvars 
)

recompute root LP best-estimate from scratch

Parameters
statSCIP statistics
setglobal SCIP settings
rootlpobjvalroot LP objective value
varsproblem variables
nvarsnumber of variables

Definition at line 643 of file stat.c.

References SCIP_Stat::rootlpbestestimate, SCIP_Real, SCIPstatDebugMsg, SCIPvarGetMinPseudocostScore(), SCIPvarGetName(), SCIPvarGetRootSol(), and SCIPvarIsIntegral().

Referenced by SCIPprobStoreRootSol().

◆ SCIPstatUpdateVarRootLPBestEstimate()

SCIP_RETCODE SCIPstatUpdateVarRootLPBestEstimate ( SCIP_STAT stat,
SCIP_SET set,
SCIP_VAR var,
SCIP_Real  oldrootpscostscore 
)

update root LP best-estimate with changed variable pseudo-costs

Parameters
statSCIP statistics
setglobal SCIP settings
varvariable with changed pseudo costs
oldrootpscostscoreold minimum pseudo cost score of variable

Definition at line 674 of file stat.c.

References SCIP_Stat::rootlpbestestimate, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPsetIsFeasIntegral(), SCIPstatDebugMsg, SCIPvarGetMinPseudocostScore(), SCIPvarGetName(), SCIPvarGetRootSol(), and SCIPvarGetStatus().

Referenced by SCIPvarUpdatePseudocost().

◆ SCIPstatPrintDebugMessage()

void SCIPstatPrintDebugMessage ( SCIP_STAT stat,
const char *  sourcefile,
int  sourceline,
const char *  formatstr,
  ... 
)

prints a debug message

Parameters
statSCIP statistics
sourcefilename of the source file that called the function
sourcelineline in the source file where the function was called
formatstrformat string like in printf() function

Definition at line 709 of file stat.c.

References NULL, and SCIP_Stat::subscipdepth.

◆ SCIPstatDebugMessagePrint()

void SCIPstatDebugMessagePrint ( SCIP_STAT stat,
const char *  formatstr,
  ... 
)

prints a debug message without precode

Parameters
statSCIP statistics
formatstrformat string like in printf() function

Definition at line 734 of file stat.c.