33#ifndef __SCIP_STAT_H__
34#define __SCIP_STAT_H__
216#define SCIPstatUpdate(stat, set, field, val) do { \
217 (stat)->field = (val); \
220#define SCIPstatIncrement(stat, set, field) do { \
224#define SCIPstatAdd(stat, set, field, val) do { \
225 (stat)->field += (val); \
231#define SCIPupdateDeterministicTimeCount(stat, set, val) do { \
232 (stat)->detertimecnt += (val); \
233 if( (stat)->detertimecnt > 10000.0 ) { \
234 SCIP_CALL_ABORT( SCIPincrementConcurrentTime( (set)->scip, (stat)->detertimecnt ) ); \
235 (stat)->detertimecnt = 0.0; \
239#define SCIPstatUpdate(stat, set, field, val) do { \
240 switch( offsetof(SCIP_STAT, field) ) \
244 case offsetof(SCIP_STAT, nprimalresolvelpiterations): \
245 SCIPupdateDeterministicTimeCount(stat, set, 0.00328285264101 * ((val) - (stat)->field) * (stat)->nnz ); \
247 case offsetof(SCIP_STAT, ndualresolvelpiterations): \
248 SCIPupdateDeterministicTimeCount(stat, set, 0.00531625104146 * ((val) - (stat)->field) * (stat)->nnz ); \
250 case offsetof(SCIP_STAT, nprobboundchgs): \
251 SCIPupdateDeterministicTimeCount(stat, set, 0.000738719124051 * ((val) - (stat)->field) * (stat)->nnz ); \
253 case offsetof(SCIP_STAT, nisstoppedcalls): \
254 SCIPupdateDeterministicTimeCount(stat, set, 0.0011123144764 * ((val) - (stat)->field) * (stat)->nnz ); \
256 (stat)->field = (val); \
260#define SCIPstatIncrement(stat, set, field) do { \
261 switch( offsetof(SCIP_STAT, field) ) \
265 case offsetof(SCIP_STAT, nprimalresolvelpiterations): \
266 SCIPupdateDeterministicTimeCount(stat, set, 0.00328285264101 * (stat)->nnz ); \
268 case offsetof(SCIP_STAT, ndualresolvelpiterations): \
269 SCIPupdateDeterministicTimeCount(stat, set, 0.00531625104146 * (stat)->nnz ); \
271 case offsetof(SCIP_STAT, nprobboundchgs): \
272 SCIPupdateDeterministicTimeCount(stat, set, 0.000738719124051 * (stat)->nnz ); \
274 case offsetof(SCIP_STAT, nisstoppedcalls): \
275 SCIPupdateDeterministicTimeCount(stat, set, 0.0011123144764 * (stat)->nnz ); \
280#define SCIPstatAdd(stat, set, field, val) do { \
281 switch( offsetof(SCIP_STAT, field) ) \
285 case offsetof(SCIP_STAT, nprimalresolvelpiterations): \
286 SCIPupdateDeterministicTimeCount(stat, set, 0.00328285264101 * (val) * (stat)->nnz); \
288 case offsetof(SCIP_STAT, ndualresolvelpiterations): \
289 SCIPupdateDeterministicTimeCount(stat, set, 0.00531625104146 * (val) * (stat)->nnz); \
291 case offsetof(SCIP_STAT, nprobboundchgs): \
292 SCIPupdateDeterministicTimeCount(stat, set, 0.000738719124051 * (val) * (stat)->nnz ); \
294 case offsetof(SCIP_STAT, nisstoppedcalls): \
295 SCIPupdateDeterministicTimeCount(stat, set, 0.0011123144764 * (val) * (stat)->nnz ); \
297 (stat)->field += (val); \
303#ifdef SCIP_HAVE_VARIADIC_MACROS
307#define SCIPstatDebugMsg(set, ...) SCIPstatPrintDebugMessage(stat, __FILE__, __LINE__, __VA_ARGS__)
308#define SCIPstatDebugMsgPrint(set, ...) SCIPstatPrintDebugMessagePrint(stat, __VA_ARGS__)
310#define SCIPstatDebugMsg(set, ...) while ( FALSE ) SCIPstatPrintDebugMessage(stat, __FILE__, __LINE__, __VA_ARGS__)
311#define SCIPstatDebugMsgPrint(set, ...) while ( FALSE ) SCIPstatPrintDebugMessagePrint(stat, __VA_ARGS__)
319#define SCIPstatDebugMsg printf("debug: "), SCIPstatDebugMessagePrint
320#define SCIPstatDebugMsgPrint SCIPstatDebugMessagePrint
322#define SCIPstatDebugMsg while ( FALSE ) SCIPstatDebugMessagePrint
323#define SCIPstatDebugMsgPrint while ( FALSE ) SCIPstatDebugMessagePrint
331__attribute__((format(printf, 4, 5)))
336 const char* sourcefile,
338 const char* formatstr,
344__attribute__((format(printf, 2, 3)))
349 const char* formatstr,
helper functions for concurrent scip solvers
common defines and data types used in all packages of SCIP
memory allocation routines
struct BMS_BlkMem BMS_BLKMEM
public methods for message output
void SCIPstatComputeRootLPBestEstimate(SCIP_STAT *stat, SCIP_SET *set, SCIP_Real rootlpobjval, SCIP_VAR **vars, int nvars)
void SCIPstatMark(SCIP_STAT *stat)
SCIP_Real SCIPstatGetPrimalReferenceIntegral(SCIP_STAT *stat, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_Bool update)
SCIP_RETCODE SCIPstatUpdateVarRootLPBestEstimate(SCIP_STAT *stat, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldrootpscostscore)
void SCIPstatResetImplications(SCIP_STAT *stat)
void SCIPstatResetDisplay(SCIP_STAT *stat)
void SCIPstatPrintDebugMessage(SCIP_STAT *stat, const char *sourcefile, int sourceline, const char *formatstr,...)
SCIP_Real SCIPstatGetDualReferenceIntegral(SCIP_STAT *stat, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_Bool update)
SCIP_RETCODE SCIPstatFree(SCIP_STAT **stat, BMS_BLKMEM *blkmem)
void SCIPstatUpdatePrimalDualIntegrals(SCIP_STAT *stat, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_Real primalbound, SCIP_Real dualbound)
void SCIPstatResetPrimalDualIntegrals(SCIP_STAT *stat, SCIP_SET *set, SCIP_Bool partialreset)
void SCIPstatResetPresolving(SCIP_STAT *stat, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob)
void SCIPstatReset(SCIP_STAT *stat, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob)
void SCIPstatEnableOrDisableStatClocks(SCIP_STAT *stat, SCIP_Bool enable)
void SCIPstatEnableVarHistory(SCIP_STAT *stat)
void SCIPstatEnforceLPUpdates(SCIP_STAT *stat)
void SCIPstatUpdateMemsaveMode(SCIP_STAT *stat, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_MEM *mem)
void SCIPstatDisableVarHistory(SCIP_STAT *stat)
void SCIPstatResetCurrentRun(SCIP_STAT *stat, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_Bool solved)
SCIP_RETCODE SCIPstatCreate(SCIP_STAT **stat, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_MESSAGEHDLR *messagehdlr)
SCIP_Longint SCIPstatGetMemExternEstim(SCIP_STAT *stat)
SCIP_Real SCIPstatGetPrimalDualIntegral(SCIP_STAT *stat, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_Bool update)
void SCIPstatDebugMessagePrint(SCIP_STAT *stat, const char *formatstr,...)
datastructures for problem statistics
type definitions for block memory pools and memory buffers
struct SCIP_Messagehdlr SCIP_MESSAGEHDLR
type definitions for storing and manipulating the main problem
struct SCIP_Prob SCIP_PROB
type definitions for return codes for SCIP methods
enum SCIP_Retcode SCIP_RETCODE
type definitions for global SCIP settings
type definitions for problem statistics
struct SCIP_Stat SCIP_STAT