Scippy

SCIP

Solving Constraint Integer Programs

struct_stat.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-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 struct_stat.h
17  * @brief datastructures for problem statistics
18  * @author Tobias Achterberg
19  * @author Timo Berthold
20  * @author Stefan Heinz
21  * @author Gregor Hendel
22  * @author Gerald Gamrath
23  * @author Marc Pfetsch
24  * @author Stefan Vigerske
25  */
26 
27 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
28 
29 #ifndef __SCIP_STRUCT_STAT_H__
30 #define __SCIP_STRUCT_STAT_H__
31 
32 
33 #include "scip/def.h"
34 #include "scip/type_stat.h"
35 #include "scip/type_clock.h"
36 #include "scip/type_vbc.h"
37 #include "scip/type_history.h"
38 
39 #ifdef __cplusplus
40 extern "C" {
41 #endif
42 
43 /** problem and runtime specific statistics */
44 struct SCIP_Stat
45 {
46  SCIP_Longint nlpiterations; /**< total number of LP iterations */
47  SCIP_Longint nrootlpiterations; /**< total number of LP iterations in root node */
48  SCIP_Longint nrootfirstlpiterations;/**< number of LP iterations for first LP solved at the root node */
49  SCIP_Longint nprimallpiterations;/**< number of iterations in primal simplex */
50  SCIP_Longint nduallpiterations; /**< number of iterations in dual simplex */
51  SCIP_Longint nlexduallpiterations;/**< number of iterations in lexicographic dual simplex */
52  SCIP_Longint nbarrierlpiterations;/**< number of iterations in barrier algorithm */
53  SCIP_Longint nprimalresolvelpiterations; /**< number of primal LP iterations with advanced start basis */
54  SCIP_Longint ndualresolvelpiterations; /**< number of dual LP iterations with advanced start basis */
55  SCIP_Longint nlexdualresolvelpiterations; /**< number of lexicographic dual LP iterations with advanced start basis */
56  SCIP_Longint nnodelpiterations; /**< number of iterations for totally solving node relaxations */
57  SCIP_Longint ninitlpiterations; /**< number of iterations for solving nodes' initial relaxations */
58  SCIP_Longint ndivinglpiterations;/**< number of iterations in diving and probing */
59  SCIP_Longint nsbdivinglpiterations;/**< number of iterations in probing mode for strong branching */
60  SCIP_Longint nsblpiterations; /**< number of simplex iterations used in strong branching */
61  SCIP_Longint nrootsblpiterations;/**< number of simplex iterations used in strong branching at the root node */
62  SCIP_Longint nconflictlpiterations;/**< number of simplex iterations used in conflict analysis */
63  SCIP_Longint nnodes; /**< number of nodes processed in current run (including focus node) */
64  SCIP_Longint ninternalnodes; /**< number of nodes processed in current run where a branching was performed */
65  SCIP_Longint ntotalnodes; /**< total number of nodes processed in all runs (including focus node) */
66  SCIP_Longint ntotalinternalnodes;/**< total number of nodes processed in all runs where a branching was performed */
67  SCIP_Longint ncreatednodes; /**< total number of nodes created */
68  SCIP_Longint ncreatednodesrun; /**< number of nodes created in current run */
69  SCIP_Longint nactivatednodes; /**< number of times, a node got activated in current run */
70  SCIP_Longint ndeactivatednodes; /**< number of times, a node got deactivated in current run */
71  SCIP_Longint nbacktracks; /**< number of times, the new node was chosen from the leaves queue */
72  SCIP_Longint ndelayedcutoffs; /**< number of times, the selected node was from a cut off subtree */
73  SCIP_Longint nreprops; /**< number of times, a solved node is repropagated again */
74  SCIP_Longint nrepropboundchgs; /**< number of bound changes generated in repropagating nodes */
75  SCIP_Longint nrepropcutoffs; /**< number of times, a repropagated node was cut off */
76  SCIP_Longint nlpsolsfound; /**< number of CIP-feasible LP solutions found so far */
77  SCIP_Longint npssolsfound; /**< number of CIP-feasible pseudo solutions found so far */
78  SCIP_Longint nsbsolsfound; /**< number of CIP-feasible solutions found during strong branching so far */
79  SCIP_Longint nexternalsolsfound; /**< number of externally given CIP-feasible solutions (or new solutions found when transforming old ones) */
80  SCIP_Longint lastdispnode; /**< last node for which an information line was displayed */
81  SCIP_Longint lastdivenode; /**< last node where LP diving was applied */
82  SCIP_Longint lastconflictnode; /**< last node where conflict analysis was applied */
83  SCIP_Longint bestsolnode; /**< node number where the last incumbent solution was found */
84  SCIP_Longint domchgcount; /**< internal counter, where all domain changes are counted */
85  SCIP_Longint nboundchgs; /**< total number of bound changes generated in the tree */
86  SCIP_Longint nholechgs; /**< total number of hole changes generated in the tree */
87  SCIP_Longint nprobboundchgs; /**< total number of bound changes generated in the tree during probing */
88  SCIP_Longint nprobholechgs; /**< total number of hole changes generated in the tree during probing */
89  SCIP_Longint nsbdowndomchgs; /**< total number of domain changes generated at down children during strong branching */
90  SCIP_Longint nsbupdomchgs; /**< total number of domain changes generated at up children during strong branching */
91  SCIP_Longint nnodesbeforefirst; /**< number of nodes before first primal solution */
92  SCIP_Longint ninitconssadded; /**< total number of initial constraints added during the solve */
93  SCIP_Real firstlpdualbound; /**< dual bound of root node computed by first LP solve (without cuts) */
94  SCIP_Real rootlowerbound; /**< lower bound of root node */
95  SCIP_Real vsidsweight; /**< current weight to use for updating VSIDS in history */
96  SCIP_Real firstprimalbound; /**< objective value of first primal solution */
97  SCIP_Real firstprimaltime; /**< time (in seconds) needed for first primal solution */
98  SCIP_Real firstsolgap; /**< solution gap when first solution is found */
99  SCIP_Real lastsolgap; /**< solution gap when last solution is found */
100  SCIP_Real primalzeroittime; /**< time used in primal simplex calls without iterations */
101  SCIP_Real dualzeroittime; /**< time used in dual simplex calls without iterations */
102  SCIP_Real barrierzeroittime; /**< time used in barrier calls without iterations */
103  SCIP_Real maxcopytime; /**< maxmimal time needed for copying a problem */
104  SCIP_Real mincopytime; /**< minimal time needed for copying a problem */
105  SCIP_Real firstlptime; /**< time needed to solve the very first LP in the root node */
106  SCIP_Real lastbranchvalue; /**< domain value of the last branching */
107  SCIP_Real primaldualintegral; /**< current primal-dual integral value */
108  SCIP_Real previousgap; /**< primal dual gap preceding the current gap */
109  SCIP_Real previntegralevaltime;/**< last time of primal-dual integral evaluation */
110  SCIP_Real lastprimalbound; /**< last (non-infinite) primal bound (in transformed space) for integral evaluation */
111  SCIP_Real lastdualbound; /**< last (non-infinite) dual bound (in transformed space) for integral evaluation */
112  SCIP_Real lastlowerbound; /**< last lower bound (in transformed space) for integral evaluation */
113  SCIP_Real lastupperbound; /**< last upper bound (in transformed space) for integral evaluation */
114  SCIP_CLOCK* solvingtime; /**< total time used for solving (including presolving) the current problem */
115  SCIP_CLOCK* presolvingtime; /**< total time used for presolving the current problem */
116  SCIP_CLOCK* primallptime; /**< primal LP solution time */
117  SCIP_CLOCK* duallptime; /**< dual LP solution time */
118  SCIP_CLOCK* lexduallptime; /**< lexicographic dual LP solution time */
119  SCIP_CLOCK* barrierlptime; /**< barrier LP solution time */
120  SCIP_CLOCK* divinglptime; /**< diving and probing LP solution time */
121  SCIP_CLOCK* strongbranchtime; /**< strong branching time */
122  SCIP_CLOCK* conflictlptime; /**< conflict analysis LP solution time */
123  SCIP_CLOCK* lpsoltime; /**< time needed for storing feasible LP solutions */
124  SCIP_CLOCK* pseudosoltime; /**< time needed for storing feasible pseudo solutions */
125  SCIP_CLOCK* sbsoltime; /**< time needed for searching and storing feasible strong branching solutions */
126  SCIP_CLOCK* nodeactivationtime; /**< time needed for path switching and activating nodes */
127  SCIP_CLOCK* nlpsoltime; /**< time needed for solving NLPs */
128  SCIP_CLOCK* copyclock; /**< time needed for copying problems */
129  SCIP_CLOCK* strongpropclock; /**< time needed for propagation during strong branching */
130  SCIP_HISTORY* glbhistory; /**< global history information over all variables */
131  SCIP_HISTORY* glbhistorycrun; /**< global history information over all variables for current run */
132  SCIP_VAR* lastbranchvar; /**< last variable, that was branched on */
133  SCIP_VBC* vbc; /**< VBC Tool information */
134  SCIP_HEUR* firstprimalheur; /**< heuristic which found the first primal solution */
135  SCIP_STATUS status; /**< SCIP solving status */
136  SCIP_BRANCHDIR lastbranchdir; /**< direction of the last branching */
137  SCIP_Longint lpcount; /**< internal counter, where all lp calls are counted; this includes the restored lps after diving and probing */
138  SCIP_Longint nlps; /**< total number of LPs solved with at least 1 iteration */
139  SCIP_Longint nrootlps; /**< number of LPs solved at the root node with at least 1 iteration */
140  SCIP_Longint nprimallps; /**< number of primal LPs solved with at least 1 iteration */
141  SCIP_Longint nprimalzeroitlps; /**< number of primal LPs with 0 iterations */
142  SCIP_Longint nduallps; /**< number of dual LPs solved with at least 1 iteration */
143  SCIP_Longint ndualzeroitlps; /**< number of dual LPs with 0 iterations */
144  SCIP_Longint nlexduallps; /**< number of lexicographic dual LPs solved */
145  SCIP_Longint nbarrierlps; /**< number of barrier LPs solved with at least 1 iteration */
146  SCIP_Longint nbarrierzeroitlps; /**< number of barrier LPs with 1 iteration */
147  SCIP_Longint nprimalresolvelps; /**< number of primal LPs solved with advanced start basis and at least 1 iteration */
148  SCIP_Longint ndualresolvelps; /**< number of dual LPs solved with advanced start basis and at least 1 iteration */
149  SCIP_Longint nlexdualresolvelps; /**< number of lexicographic dual LPs solved with advanced start basis and at least 1 iteration */
150  SCIP_Longint nnodelps; /**< number of LPs solved for node relaxations */
151  SCIP_Longint ninitlps; /**< number of LPs solved for nodes' initial relaxations */
152  SCIP_Longint ndivinglps; /**< number of LPs solved during diving and probing */
153  SCIP_Longint nsbdivinglps; /**< number of LPs solved during strong branching probing mode */
154  SCIP_Longint nstrongbranchs; /**< number of strong branching calls */
155  SCIP_Longint nrootstrongbranchs; /**< number of strong branching calls at the root node */
156  SCIP_Longint nconflictlps; /**< number of LPs solved during conflict analysis */
157  SCIP_Longint nnlps; /**< number of NLPs solved */
158  int subscipdepth; /**< depth of current scip instance (increased by each copy call) */
159  int nruns; /**< number of branch and bound runs on current problem, including current run */
160  int nconfrestarts; /**< number of restarts performed due to conflict analysis */
161  int nrootboundchgs; /**< total number of bound changes generated in the root node */
162  int nrootboundchgsrun; /**< total number of bound changes generated in the root node of current run */
163  int nrootintfixings; /**< total number of global fixings of integer variables */
164  int nrootintfixingsrun; /**< total number of global fixings of integer variables of current run */
165  int prevrunnvars; /**< number of variables in the previous run */
166  int nvaridx; /**< number of used variable indices */
167  int ncolidx; /**< number of used column indices */
168  int nrowidx; /**< number of used row indices */
169  int marked_nvaridx; /**< number of used variable indices before solving started */
170  int marked_ncolidx; /**< number of used column indices before solving started */
171  int marked_nrowidx; /**< number of used row indices before solving started */
172  int npricerounds; /**< number of pricing rounds performed in current node */
173  int nseparounds; /**< number of separation rounds performed in current node */
174  int ndisplines; /**< number of displayed information lines */
175  int maxdepth; /**< maximal depth of all processed nodes in current run */
176  int maxtotaldepth; /**< maximal depth of all processed nodes over all runs */
177  int plungedepth; /**< current plunging depth (successive times, a child was selected as next node) */
178  int nactiveconss; /**< total number of currently active constraints */
179  int nenabledconss; /**< total number of currently enabled constraints */
180  int nimplications; /**< total number of implications stored in the implication graph */
181  int npresolrounds; /**< number of presolving rounds in current run */
182  int npresolfixedvars; /**< number of presolving fixings in current run */
183  int npresolaggrvars; /**< number of presolving aggregations in current run */
184  int npresolchgvartypes; /**< number of presolving variable type changes in current run */
185  int npresolchgbds; /**< number of presolving bound changes in current run */
186  int npresoladdholes; /**< number of presolving hole additions in current run */
187  int npresoldelconss; /**< number of presolving constraint deletions in current run */
188  int npresoladdconss; /**< number of presolving constraint additions in current run */
189  int npresolupgdconss; /**< number of presolving constraint upgrades in current run */
190  int npresolchgcoefs; /**< number of presolving coefficient changes in current run */
191  int npresolchgsides; /**< number of presolving side changes in current run */
192  int lastnpresolfixedvars;/**< number of presolving fixings in current run */
193  int lastnpresolaggrvars;/**< number of presolving aggregations in current run */
194  int lastnpresolchgvartypes;/**< number of presolving variable type changes in current run */
195  int lastnpresolchgbds; /**< number of presolving bound changes in current run */
196  int lastnpresoladdholes;/**< number of presolving hole additions in current run */
197  int lastnpresoldelconss;/**< number of presolving constraint deletions in current run */
198  int lastnpresoladdconss;/**< number of presolving constraint additions in current run */
199  int lastnpresolupgdconss;/**< number of presolving constraint upgrades in current run */
200  int lastnpresolchgcoefs;/**< number of presolving coefficient changes in current run */
201  int lastnpresolchgsides;/**< number of presolving side changes in current run */
202  int solindex; /**< consecutively numbered solution index */
203  int nrunsbeforefirst; /**< number of runs until first primal solution */
204  int firstprimaldepth; /**< depth in which first primal solution was found */
205  int ncopies; /**< counter how often SCIPcopy() was performed */
206  SCIP_Bool memsavemode; /**< should algorithms be switched to memory saving mode? */
207  SCIP_Bool userinterrupt; /**< has the user asked to interrupt the solving process? */
208  SCIP_Bool userrestart; /**< has the user asked to restart the solving process? */
209  SCIP_Bool inrestart; /**< are we currently restarting the system? */
210  SCIP_Bool collectvarhistory; /**< should variable history statistics be collected */
211  SCIP_Bool performpresol; /**< indicates whether presolving is enabled */
212 };
213 
214 #ifdef __cplusplus
215 }
216 #endif
217 
218 #endif
219