Scippy

SCIP

Solving Constraint Integer Programs

disp_default.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-2017 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 disp_default.c
17  * @brief default display columns
18  * @author Tobias Achterberg
19  */
20 
21 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
22 
23 #include <assert.h>
24 #include <string.h>
25 
26 #include "scip/disp_default.h"
27 #include "scip/concurrent.h"
28 #include "scip/syncstore.h"
29 
30 
31 #define DISP_NAME_SOLFOUND "solfound"
32 #define DISP_DESC_SOLFOUND "letter that indicates the heuristic which found the solution"
33 #define DISP_HEAD_SOLFOUND " "
34 #define DISP_WIDT_SOLFOUND 1
35 #define DISP_PRIO_SOLFOUND 80000
36 #define DISP_POSI_SOLFOUND 0
37 #define DISP_STRI_SOLFOUND FALSE
38 
39 #define DISP_NAME_CONCSOLFOUND "concsolfound"
40 #define DISP_DESC_CONCSOLFOUND "indicator that a new solution was found in concurrent solve"
41 #define DISP_HEAD_CONCSOLFOUND " "
42 #define DISP_WIDT_CONCSOLFOUND 1
43 #define DISP_PRIO_CONCSOLFOUND 80000
44 #define DISP_POSI_CONCSOLFOUND 0
45 #define DISP_STRI_CONCSOLFOUND FALSE
46 
47 #define DISP_NAME_TIME "time"
48 #define DISP_DESC_TIME "total solution time"
49 #define DISP_HEAD_TIME "time"
50 #define DISP_WIDT_TIME 5
51 #define DISP_PRIO_TIME 4000
52 #define DISP_POSI_TIME 50
53 #define DISP_STRI_TIME TRUE
54 
55 #define DISP_NAME_NNODES "nnodes"
56 #define DISP_DESC_NNODES "number of processed nodes"
57 #define DISP_HEAD_NNODES "node"
58 #define DISP_WIDT_NNODES 7
59 #define DISP_PRIO_NNODES 100000
60 #define DISP_POSI_NNODES 100
61 #define DISP_STRI_NNODES TRUE
62 
63 #define DISP_NAME_NODESLEFT "nodesleft"
64 #define DISP_DESC_NODESLEFT "number of unprocessed nodes"
65 #define DISP_HEAD_NODESLEFT "left"
66 #define DISP_WIDT_NODESLEFT 7
67 #define DISP_PRIO_NODESLEFT 90000
68 #define DISP_POSI_NODESLEFT 200
69 #define DISP_STRI_NODESLEFT TRUE
70 
71 
72 #define DISP_NAME_LPITERATIONS "lpiterations"
73 #define DISP_DESC_LPITERATIONS "number of simplex iterations"
74 #define DISP_HEAD_LPITERATIONS "LP iter"
75 #define DISP_WIDT_LPITERATIONS 7
76 #define DISP_PRIO_LPITERATIONS 30000
77 #define DISP_POSI_LPITERATIONS 1000
78 #define DISP_STRI_LPITERATIONS TRUE
79 
80 #define DISP_NAME_LPAVGITERS "lpavgiterations"
81 #define DISP_DESC_LPAVGITERS "average number of LP iterations since the last output line"
82 #define DISP_HEAD_LPAVGITERS "LP it/n"
83 #define DISP_WIDT_LPAVGITERS 7
84 #define DISP_PRIO_LPAVGITERS 25000
85 #define DISP_POSI_LPAVGITERS 1400
86 #define DISP_STRI_LPAVGITERS TRUE
87 
88 #define DISP_NAME_LPCOND "lpcond"
89 #define DISP_DESC_LPCOND "estimate on condition number of LP solution"
90 #define DISP_HEAD_LPCOND "LP cond"
91 #define DISP_WIDT_LPCOND 7
92 #define DISP_PRIO_LPCOND 0
93 #define DISP_POSI_LPCOND 1450
94 #define DISP_STRI_LPCOND TRUE
95 
96 #define DISP_NAME_MEMUSED "memused"
97 #define DISP_DESC_MEMUSED "total number of bytes used in block memory"
98 #define DISP_HEAD_MEMUSED "umem"
99 #define DISP_WIDT_MEMUSED 5
100 #define DISP_PRIO_MEMUSED 0
101 #define DISP_POSI_MEMUSED 1500
102 #define DISP_STRI_MEMUSED TRUE
103 
104 #define DISP_NAME_CONCMEMUSED "concmemused"
105 #define DISP_DESC_CONCMEMUSED "total number of bytes used in block memory"
106 #define DISP_HEAD_CONCMEMUSED "mem"
107 #define DISP_WIDT_CONCMEMUSED 5
108 #define DISP_PRIO_CONCMEMUSED 20000
109 #define DISP_POSI_CONCMEMUSED 1500
110 #define DISP_STRI_CONCMEMUSED TRUE
111 
112 #define DISP_NAME_MEMTOTAL "memtotal"
113 #define DISP_DESC_MEMTOTAL "total number of bytes in block memory"
114 #define DISP_HEAD_MEMTOTAL "mem"
115 #define DISP_WIDT_MEMTOTAL 5
116 #define DISP_PRIO_MEMTOTAL 20000
117 #define DISP_POSI_MEMTOTAL 1500
118 #define DISP_STRI_MEMTOTAL TRUE
119 
120 #define DISP_NAME_DEPTH "depth"
121 #define DISP_DESC_DEPTH "depth of current node"
122 #define DISP_HEAD_DEPTH "depth"
123 #define DISP_WIDT_DEPTH 5
124 #define DISP_PRIO_DEPTH 500
125 #define DISP_POSI_DEPTH 2000
126 #define DISP_STRI_DEPTH TRUE
127 
128 #define DISP_NAME_MAXDEPTH "maxdepth"
129 #define DISP_DESC_MAXDEPTH "maximal depth of all processed nodes"
130 #define DISP_HEAD_MAXDEPTH "mdpt"
131 #define DISP_WIDT_MAXDEPTH 5
132 #define DISP_PRIO_MAXDEPTH 5000
133 #define DISP_POSI_MAXDEPTH 2100
134 #define DISP_STRI_MAXDEPTH TRUE
135 
136 #define DISP_NAME_PLUNGEDEPTH "plungedepth"
137 #define DISP_DESC_PLUNGEDEPTH "current plunging depth"
138 #define DISP_HEAD_PLUNGEDEPTH "pdpt"
139 #define DISP_WIDT_PLUNGEDEPTH 5
140 #define DISP_PRIO_PLUNGEDEPTH 10
141 #define DISP_POSI_PLUNGEDEPTH 2200
142 #define DISP_STRI_PLUNGEDEPTH TRUE
143 
144 #define DISP_NAME_NFRAC "nfrac"
145 #define DISP_DESC_NFRAC "number of fractional variables in the current solution"
146 #define DISP_HEAD_NFRAC "frac"
147 #define DISP_WIDT_NFRAC 5
148 #define DISP_PRIO_NFRAC 700
149 #define DISP_POSI_NFRAC 2500
150 #define DISP_STRI_NFRAC TRUE
151 
152 #define DISP_NAME_NEXTERNCANDS "nexternbranchcands"
153 #define DISP_DESC_NEXTERNCANDS "number of extern branching variables in the current node"
154 #define DISP_HEAD_NEXTERNCANDS "extbr"
155 #define DISP_WIDT_NEXTERNCANDS 5
156 #define DISP_PRIO_NEXTERNCANDS 650
157 #define DISP_POSI_NEXTERNCANDS 2600
158 #define DISP_STRI_NEXTERNCANDS TRUE
159 
160 #define DISP_NAME_VARS "vars"
161 #define DISP_DESC_VARS "number of variables in the problem"
162 #define DISP_HEAD_VARS "vars"
163 #define DISP_WIDT_VARS 5
164 #define DISP_PRIO_VARS 3000
165 #define DISP_POSI_VARS 3000
166 #define DISP_STRI_VARS TRUE
167 
168 #define DISP_NAME_CONSS "conss"
169 #define DISP_DESC_CONSS "number of globally valid constraints in the problem"
170 #define DISP_HEAD_CONSS "cons"
171 #define DISP_WIDT_CONSS 5
172 #define DISP_PRIO_CONSS 3100
173 #define DISP_POSI_CONSS 3100
174 #define DISP_STRI_CONSS TRUE
175 
176 #define DISP_NAME_CURCONSS "curconss"
177 #define DISP_DESC_CURCONSS "number of enabled constraints in current node"
178 #define DISP_HEAD_CURCONSS "ccons"
179 #define DISP_WIDT_CURCONSS 5
180 #define DISP_PRIO_CURCONSS 600
181 #define DISP_POSI_CURCONSS 3200
182 #define DISP_STRI_CURCONSS TRUE
183 
184 #define DISP_NAME_CURCOLS "curcols"
185 #define DISP_DESC_CURCOLS "number of LP columns in current node"
186 #define DISP_HEAD_CURCOLS "cols"
187 #define DISP_WIDT_CURCOLS 5
188 #define DISP_PRIO_CURCOLS 800
189 #define DISP_POSI_CURCOLS 3300
190 #define DISP_STRI_CURCOLS TRUE
191 
192 #define DISP_NAME_CURROWS "currows"
193 #define DISP_DESC_CURROWS "number of LP rows in current node"
194 #define DISP_HEAD_CURROWS "rows"
195 #define DISP_WIDT_CURROWS 5
196 #define DISP_PRIO_CURROWS 900
197 #define DISP_POSI_CURROWS 3400
198 #define DISP_STRI_CURROWS TRUE
199 
200 #define DISP_NAME_CUTS "cuts"
201 #define DISP_DESC_CUTS "total number of cuts applied to the LPs"
202 #define DISP_HEAD_CUTS "cuts"
203 #define DISP_WIDT_CUTS 5
204 #define DISP_PRIO_CUTS 2100
205 #define DISP_POSI_CUTS 3500
206 #define DISP_STRI_CUTS TRUE
207 
208 #define DISP_NAME_SEPAROUNDS "separounds"
209 #define DISP_DESC_SEPAROUNDS "number of separation rounds performed at the current node"
210 #define DISP_HEAD_SEPAROUNDS "sepa"
211 #define DISP_WIDT_SEPAROUNDS 4
212 #define DISP_PRIO_SEPAROUNDS 100
213 #define DISP_POSI_SEPAROUNDS 3600
214 #define DISP_STRI_SEPAROUNDS TRUE
215 
216 #define DISP_NAME_POOLSIZE "poolsize"
217 #define DISP_DESC_POOLSIZE "number of LP rows in the cut pool"
218 #define DISP_HEAD_POOLSIZE "pool"
219 #define DISP_WIDT_POOLSIZE 5
220 #define DISP_PRIO_POOLSIZE 50
221 #define DISP_POSI_POOLSIZE 3700
222 #define DISP_STRI_POOLSIZE TRUE
223 
224 #define DISP_NAME_CONFLICTS "conflicts"
225 #define DISP_DESC_CONFLICTS "total number of conflicts found in conflict analysis"
226 #define DISP_HEAD_CONFLICTS "confs"
227 #define DISP_WIDT_CONFLICTS 5
228 #define DISP_PRIO_CONFLICTS 2000
229 #define DISP_POSI_CONFLICTS 4000
230 #define DISP_STRI_CONFLICTS TRUE
231 
232 #define DISP_NAME_STRONGBRANCHS "strongbranchs"
233 #define DISP_DESC_STRONGBRANCHS "total number of strong branching calls"
234 #define DISP_HEAD_STRONGBRANCHS "strbr"
235 #define DISP_WIDT_STRONGBRANCHS 5
236 #define DISP_PRIO_STRONGBRANCHS 1000
237 #define DISP_POSI_STRONGBRANCHS 5000
238 #define DISP_STRI_STRONGBRANCHS TRUE
239 
240 #define DISP_NAME_PSEUDOOBJ "pseudoobj"
241 #define DISP_DESC_PSEUDOOBJ "current pseudo objective value"
242 #define DISP_HEAD_PSEUDOOBJ "pseudoobj"
243 #define DISP_WIDT_PSEUDOOBJ 14
244 #define DISP_PRIO_PSEUDOOBJ 300
245 #define DISP_POSI_PSEUDOOBJ 6000
246 #define DISP_STRI_PSEUDOOBJ TRUE
247 
248 #define DISP_NAME_LPOBJ "lpobj"
249 #define DISP_DESC_LPOBJ "current LP objective value"
250 #define DISP_HEAD_LPOBJ "lpobj"
251 #define DISP_WIDT_LPOBJ 14
252 #define DISP_PRIO_LPOBJ 300
253 #define DISP_POSI_LPOBJ 6500
254 #define DISP_STRI_LPOBJ TRUE
255 
256 #define DISP_NAME_CURDUALBOUND "curdualbound"
257 #define DISP_DESC_CURDUALBOUND "dual bound of current node"
258 #define DISP_HEAD_CURDUALBOUND "curdualbound"
259 #define DISP_WIDT_CURDUALBOUND 14
260 #define DISP_PRIO_CURDUALBOUND 400
261 #define DISP_POSI_CURDUALBOUND 7000
262 #define DISP_STRI_CURDUALBOUND TRUE
263 
264 #define DISP_NAME_ESTIMATE "estimate"
265 #define DISP_DESC_ESTIMATE "estimated value of feasible solution in current node"
266 #define DISP_HEAD_ESTIMATE "estimate"
267 #define DISP_WIDT_ESTIMATE 14
268 #define DISP_PRIO_ESTIMATE 200
269 #define DISP_POSI_ESTIMATE 7500
270 #define DISP_STRI_ESTIMATE TRUE
271 
272 #define DISP_NAME_AVGDUALBOUND "avgdualbound"
273 #define DISP_DESC_AVGDUALBOUND "average dual bound of all unprocessed nodes"
274 #define DISP_HEAD_AVGDUALBOUND "avgdualbound"
275 #define DISP_WIDT_AVGDUALBOUND 14
276 #define DISP_PRIO_AVGDUALBOUND 40
277 #define DISP_POSI_AVGDUALBOUND 8000
278 #define DISP_STRI_AVGDUALBOUND TRUE
279 
280 #define DISP_NAME_DUALBOUND "dualbound"
281 #define DISP_DESC_DUALBOUND "current global dual bound"
282 #define DISP_HEAD_DUALBOUND "dualbound"
283 #define DISP_WIDT_DUALBOUND 14
284 #define DISP_PRIO_DUALBOUND 70000
285 #define DISP_POSI_DUALBOUND 9000
286 #define DISP_STRI_DUALBOUND TRUE
287 
288 #define DISP_NAME_CONCDUALBOUND "concdualbound"
289 #define DISP_DESC_CONCDUALBOUND "current global dual bound in concurrent solve"
290 #define DISP_HEAD_CONCDUALBOUND "dualbound"
291 #define DISP_WIDT_CONCDUALBOUND 14
292 #define DISP_PRIO_CONCDUALBOUND 70000
293 #define DISP_POSI_CONCDUALBOUND 9000
294 #define DISP_STRI_CONCDUALBOUND TRUE
295 
296 #define DISP_NAME_PRIMALBOUND "primalbound"
297 #define DISP_DESC_PRIMALBOUND "current primal bound"
298 #define DISP_HEAD_PRIMALBOUND "primalbound"
299 #define DISP_WIDT_PRIMALBOUND 14
300 #define DISP_PRIO_PRIMALBOUND 80000
301 #define DISP_POSI_PRIMALBOUND 10000
302 #define DISP_STRI_PRIMALBOUND TRUE
303 
304 #define DISP_NAME_CONCPRIMALBOUND "concprimalbound"
305 #define DISP_DESC_CONCPRIMALBOUND "current primal bound in concurrent solve"
306 #define DISP_HEAD_CONCPRIMALBOUND "primalbound"
307 #define DISP_WIDT_CONCPRIMALBOUND 14
308 #define DISP_PRIO_CONCPRIMALBOUND 80000
309 #define DISP_POSI_CONCPRIMALBOUND 10000
310 #define DISP_STRI_CONCPRIMALBOUND TRUE
311 
312 #define DISP_NAME_CUTOFFBOUND "cutoffbound"
313 #define DISP_DESC_CUTOFFBOUND "current cutoff bound"
314 #define DISP_HEAD_CUTOFFBOUND "cutoffbound"
315 #define DISP_WIDT_CUTOFFBOUND 14
316 #define DISP_PRIO_CUTOFFBOUND 10
317 #define DISP_POSI_CUTOFFBOUND 10100
318 #define DISP_STRI_CUTOFFBOUND TRUE
319 
320 #define DISP_NAME_GAP "gap"
321 #define DISP_DESC_GAP "current (relative) gap using |primal-dual|/MIN(|dual|,|primal|)"
322 #define DISP_HEAD_GAP "gap"
323 #define DISP_WIDT_GAP 8
324 #define DISP_PRIO_GAP 60000
325 #define DISP_POSI_GAP 20000
326 #define DISP_STRI_GAP TRUE
327 
328 #define DISP_NAME_CONCGAP "concgap"
329 #define DISP_DESC_CONCGAP "current (relative) gap in concurrent solve using |primal-dual|/MIN(|dual|,|primal|)"
330 #define DISP_HEAD_CONCGAP "gap"
331 #define DISP_WIDT_CONCGAP 8
332 #define DISP_PRIO_CONCGAP 60000
333 #define DISP_POSI_CONCGAP 20000
334 #define DISP_STRI_CONCGAP TRUE
335 
336 #define DISP_NAME_PRIMALGAP "primalgap"
337 #define DISP_DESC_PRIMALGAP "current (relative) gap using |primal-dual|/|primal|"
338 #define DISP_HEAD_PRIMALGAP "primgap"
339 #define DISP_WIDT_PRIMALGAP 8
340 #define DISP_PRIO_PRIMALGAP 20000
341 #define DISP_POSI_PRIMALGAP 21000
342 #define DISP_STRI_PRIMALGAP TRUE
343 
344 #define DISP_NAME_NSOLS "nsols"
345 #define DISP_DESC_NSOLS "current number of solutions found"
346 #define DISP_HEAD_NSOLS "nsols"
347 #define DISP_WIDT_NSOLS 5
348 #define DISP_PRIO_NSOLS 0
349 #define DISP_POSI_NSOLS 30000
350 #define DISP_STRI_NSOLS TRUE
351 
352 /* display for the number of leaves passing the objective limit */
353 #define DISP_NAME_NOBJLEAVES "nobjleaves"
354 #define DISP_DESC_NOBJLEAVES "current number of encountered objective limit leaves"
355 #define DISP_HEAD_NOBJLEAVES "objleav"
356 #define DISP_WIDT_NOBJLEAVES 7
357 #define DISP_PRIO_NOBJLEAVES 0
358 #define DISP_POSI_NOBJLEAVES 31000
359 #define DISP_STRI_NOBJLEAVES TRUE
360 
361 
362 /* display for number of encountered infeasible leaf nodes */
363 #define DISP_NAME_NINFEASLEAVES "ninfeasleaves"
364 #define DISP_DESC_NINFEASLEAVES "number of encountered infeasible leaves"
365 #define DISP_HEAD_NINFEASLEAVES "infleav"
366 #define DISP_WIDT_NINFEASLEAVES 7
367 #define DISP_PRIO_NINFEASLEAVES 0
368 #define DISP_POSI_NINFEASLEAVES 32000
369 #define DISP_STRI_NINFEASLEAVES TRUE
370 
371 /*
372  * Callback methods
373  */
374 
375 /** copy method for display plugins (called when SCIP copies plugins) */
376 static
377 SCIP_DECL_DISPCOPY(dispCopyDefault)
378 { /*lint --e{715}*/
379  assert(scip != NULL);
380  assert(disp != NULL);
381 
382  /* call inclusion method of dialog */
384 
385  return SCIP_OKAY;
386 }
387 
388 /** solving process initialization method of display column (called when branch and bound process is about to begin) */
389 static
390 SCIP_DECL_DISPINITSOL(SCIPdispInitsolSolFound)
391 { /*lint --e{715}*/
392 
393  assert(disp != NULL);
394  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_SOLFOUND) == 0);
395  assert(scip != NULL);
396 
398 
399  return SCIP_OKAY;
400 }
401 
402 /** output method of display column to output file stream 'file' for character of best solution */
403 static
404 SCIP_DECL_DISPOUTPUT(SCIPdispOutputSolFound)
405 { /*lint --e{715}*/
406  SCIP_SOL* sol;
407  SCIP_DISPDATA* dispdata;
408 
409  assert(disp != NULL);
410  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_SOLFOUND) == 0);
411  assert(scip != NULL);
412 
413  sol = SCIPgetBestSol(scip);
414  if( sol == NULL )
415  SCIPdispSetData(disp, NULL);
416 
417  dispdata = SCIPdispGetData(disp);
418  if( sol != (SCIP_SOL*)dispdata && SCIPisFeasLE(scip, SCIPgetSolTransObj(scip, sol), SCIPgetUpperbound(scip)) )
419  {
420  SCIP_HEUR* heur;
421  char c;
422 
423  heur = SCIPgetSolHeur(scip, sol);
424 
425  if( heur == NULL )
426  {
427  if( SCIPsolIsOriginal(sol) )
428  c = '#';
429  else
430  c = '*';
431  }
432  else
433  c = SCIPheurGetDispchar(heur);
434 
435  SCIPinfoMessage(scip, file, "%c", c);
436 
437  SCIPdispSetData(disp, (SCIP_DISPDATA*)sol);
438  }
439  else
440  SCIPinfoMessage(scip, file, " ");
441 
442  return SCIP_OKAY;
443 }
444 
445 /** solving process initialization method of display column (called when branch and bound process is about to begin) */
446 static
447 SCIP_DECL_DISPINITSOL(SCIPdispInitsolConcSolFound)
448 { /*lint --e{715}*/
449  SCIP_Real* bestupper;
450 
451  assert(disp != NULL);
452  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_CONCSOLFOUND) == 0);
453  assert(scip != NULL);
454 
455  SCIP_CALL( SCIPallocBlockMemory(scip, &bestupper) );
456  *bestupper = SCIPinfinity(scip);
457 
458  SCIPdispSetData(disp, (SCIP_DISPDATA*) bestupper);
459 
460  return SCIP_OKAY;
461 }
462 
463 /** solving process initialization method of display column (called when branch and bound process is about to begin) */
464 static
465 SCIP_DECL_DISPINITSOL(SCIPdispExitsolConcSolFound)
466 { /*lint --e{715}*/
467  SCIP_Real* bestupper;
468 
469  assert(disp != NULL);
470  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_CONCSOLFOUND) == 0);
471  assert(scip != NULL);
472 
473  bestupper = (SCIP_Real*) SCIPdispGetData(disp);
474  SCIPfreeBlockMemory(scip, &bestupper);
475 
476  SCIPdispSetData(disp, NULL);
477 
478  return SCIP_OKAY;
479 }
480 
481 /** output method of display column to output file stream 'file' for character of best solution */
482 static
483 SCIP_DECL_DISPOUTPUT(SCIPdispOutputConcSolFound)
484 { /*lint --e{715}*/
485  SCIP_Real* bestupper;
486  SCIP_Real newbestupper;
487  SCIP_SYNCSTORE* syncstore;
488 
489  assert(disp != NULL);
490  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_CONCSOLFOUND) == 0);
491  assert(scip != NULL);
492 
493  bestupper = (SCIP_Real*) SCIPdispGetData(disp);
494 
495  syncstore = SCIPgetSyncstore(scip);
496  assert(syncstore != NULL);
497  newbestupper = SCIPsyncstoreGetLastUpperbound(syncstore);
498 
499  if( SCIPsyncstoreGetLastNSols(syncstore) > 0 && SCIPisFeasLT(scip, newbestupper, *bestupper) )
500  {
501  SCIPinfoMessage(scip, file, "$");
502  *bestupper = newbestupper;
503  }
504  else
505  SCIPinfoMessage(scip, file, " ");
506 
507  return SCIP_OKAY;
508 }
509 
510 /** output method of display column to output file stream 'file' for solving time */
511 static
512 SCIP_DECL_DISPOUTPUT(SCIPdispOutputSolvingTime)
513 { /*lint --e{715}*/
514  assert(disp != NULL);
515  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_TIME) == 0);
516  assert(scip != NULL);
517 
519 
520  return SCIP_OKAY;
521 }
522 
523 /** output method of display column to output file stream 'file' for number of nodes */
524 static
525 SCIP_DECL_DISPOUTPUT(SCIPdispOutputNNodes)
526 { /*lint --e{715}*/
527  assert(disp != NULL);
528  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_NNODES) == 0);
529  assert(scip != NULL);
530 
532 
533  return SCIP_OKAY;
534 }
535 
536 /** output method of display column to output file stream 'file' for number of open nodes */
537 static
538 SCIP_DECL_DISPOUTPUT(SCIPdispOutputNNodesLeft)
539 { /*lint --e{715}*/
540  assert(disp != NULL);
541  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_NODESLEFT) == 0);
542  assert(scip != NULL);
543 
545 
546  return SCIP_OKAY;
547 }
548 
549 /** output method of display column to output file stream 'file' */
550 static
551 SCIP_DECL_DISPOUTPUT(dispOutputNObjLeaves)
552 {
553  assert(disp != NULL);
554  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_NOBJLEAVES) == 0);
555  assert(scip != NULL);
556 
557  /* ouput number of leaves that hit the objective */
559 
560  return SCIP_OKAY;
561 }
562 
563 /** output method of display column to output file stream 'file' */
564 static
565 SCIP_DECL_DISPOUTPUT(dispOutputNInfeasLeaves)
566 {
567  assert(disp != NULL);
568  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_NINFEASLEAVES) == 0);
569  assert(scip != NULL);
570 
571  /* output number of encountered infeasible leaf nodes */
573 
574  return SCIP_OKAY;
575 }
576 
577 /** output method of display column to output file stream 'file' for number of LP iterations */
578 static
579 SCIP_DECL_DISPOUTPUT(SCIPdispOutputNLPIterations)
580 { /*lint --e{715}*/
581  assert(disp != NULL);
582  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_LPITERATIONS) == 0);
583  assert(scip != NULL);
584 
586 
587  return SCIP_OKAY;
588 }
589 
590 /** output method of display column to output file stream 'file' for number of average LP iterations */
591 static
592 SCIP_DECL_DISPOUTPUT(SCIPdispOutputNLPAvgIters)
593 { /*lint --e{715}*/
594  assert(disp != NULL);
595  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_LPAVGITERS) == 0);
596  assert(scip != NULL);
597 
598  /**@todo Currently we are using the total number of nodes to compute the average LP iterations number. The reason for
599  * that is, that for the LP iterations only the total number (over all runs) are stored in the statistics. It
600  * would be nicer if the statistic also stores the number of LP iterations for the current run similar to the
601  * nodes.
602  */
603 
604  if( SCIPgetNNodes(scip) < 2 )
605  SCIPinfoMessage(scip, file, " - ");
606  else
607  SCIPinfoMessage(scip, file, "%6.1f ",
609 
610  return SCIP_OKAY;
611 }
612 
613 
614 /** output method of display column to output file stream 'file' for estimate on LP condition */
615 static
616 SCIP_DECL_DISPOUTPUT(SCIPdispOutputLPCondition)
617 { /*lint --e{715}*/
618  SCIP_LPI* lpi;
619  SCIP_Real cond;
620 
621  assert(disp != NULL);
622  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_LPCOND) == 0);
623  assert(scip != NULL);
624 
625  /* note that after diving mode, the LPI may only have the basis information, but SCIPlpiWasSolved() can be false; in
626  * this case, we will (depending on the LP solver) probably not obtain the quality measure; one solution would be to
627  * store the results of SCIPlpiGetRealSolQuality() within the SCIP_LP after each LP solve; this would have the added
628  * advantage, that we reduce direct access to the LPI, but it sounds potentially expensive
629  */
630  SCIP_CALL( SCIPgetLPI(scip, &lpi) );
631  if( lpi == NULL )
632  {
633  SCIPinfoMessage(scip, file, " - ");
634  return SCIP_OKAY;
635  }
636 
638 
639  if( cond == SCIP_INVALID ) /*lint !e777*/
640  SCIPinfoMessage(scip, file, " n/a ", cond);
641  else
642  SCIPinfoMessage(scip, file, "%.1e", cond);
643 
644  return SCIP_OKAY;
645 }
646 
647 /** output method of display column to output file stream 'file' for depth */
648 static
649 SCIP_DECL_DISPOUTPUT(SCIPdispOutputDepth)
650 { /*lint --e{715}*/
651  assert(disp != NULL);
652  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_DEPTH) == 0);
653  assert(scip != NULL);
654 
656 
657  return SCIP_OKAY;
658 }
659 
660 /** output method of display column to output file stream 'file' for used memory */
661 static
662 SCIP_DECL_DISPOUTPUT(SCIPdispOutputMemUsed)
663 { /*lint --e{715}*/
664  assert(disp != NULL);
665  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_MEMUSED) == 0);
666  assert(scip != NULL);
667 
669 
670  return SCIP_OKAY;
671 }
672 
673 /** output method of display column to output file stream 'file' for used memory */
674 static
675 SCIP_DECL_DISPOUTPUT(SCIPdispOutputConcMemUsed)
676 { /*lint --e{715}*/
677  SCIP_SYNCSTORE* syncstore;
678  assert(disp != NULL);
679  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_CONCMEMUSED) == 0);
680  assert(scip != NULL);
681 
682  syncstore = SCIPgetSyncstore(scip);
683  assert(syncstore != NULL);
684 
686 
687  return SCIP_OKAY;
688 }
689 
690 /** output method of display column to output file stream 'file' for allocated and used memory */
691 static
692 SCIP_DECL_DISPOUTPUT(SCIPdispOutputMemUsedTotal)
693 { /*lint --e{715}*/
694  assert(disp != NULL);
695  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_MEMTOTAL) == 0);
696  assert(scip != NULL);
697 
699 
700  return SCIP_OKAY;
701 }
702 
703 /** output method of display column to output file stream 'file' for maximal depth */
704 static
705 SCIP_DECL_DISPOUTPUT(SCIPdispOutputMaxDepth)
706 { /*lint --e{715}*/
707  assert(disp != NULL);
708  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_MAXDEPTH) == 0);
709  assert(scip != NULL);
710 
712 
713  return SCIP_OKAY;
714 }
715 
716 /** output method of display column to output file stream 'file' for plunging depth */
717 static
718 SCIP_DECL_DISPOUTPUT(SCIPdispOutputPlungeDepth)
719 { /*lint --e{715}*/
720  assert(disp != NULL);
721  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_PLUNGEDEPTH) == 0);
722  assert(scip != NULL);
723 
725 
726  return SCIP_OKAY;
727 }
728 
729 /** output method of display column to output file stream 'file' for number of LP branch candidates */
730 static
731 SCIP_DECL_DISPOUTPUT(SCIPdispOutputNFrac)
732 { /*lint --e{715}*/
733  assert(disp != NULL);
734  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_NFRAC) == 0);
735  assert(scip != NULL);
736 
739  else
740  SCIPinfoMessage(scip, file, " - ");
741 
742  return SCIP_OKAY;
743 }
744 
745 /** output method of display column to output file stream 'file' for number of external branch candidates */
746 static
747 SCIP_DECL_DISPOUTPUT(SCIPdispOutputNExternCands)
748 { /*lint --e{715}*/
749  assert(disp != NULL);
750  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_NEXTERNCANDS) == 0);
751  assert(scip != NULL);
752 
754 
755  return SCIP_OKAY;
756 }
757 
758 /** output method of display column to output file stream 'file' for number of variables */
759 static
760 SCIP_DECL_DISPOUTPUT(SCIPdispOutputNVars)
761 { /*lint --e{715}*/
762  assert(disp != NULL);
763  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_VARS) == 0);
764  assert(scip != NULL);
765 
767 
768  return SCIP_OKAY;
769 }
770 
771 /** output method of display column to output file stream 'file' for number of constraints */
772 static
773 SCIP_DECL_DISPOUTPUT(SCIPdispOutputNConss)
774 { /*lint --e{715}*/
775  assert(disp != NULL);
776  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_CONSS) == 0);
777  assert(scip != NULL);
778 
780 
781  return SCIP_OKAY;
782 }
783 
784 /** output method of display column to output file stream 'file' for number of enabled constraints */
785 static
786 SCIP_DECL_DISPOUTPUT(SCIPdispOutputNCurConss)
787 { /*lint --e{715}*/
788  assert(disp != NULL);
789  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_CURCONSS) == 0);
790  assert(scip != NULL);
791 
793 
794  return SCIP_OKAY;
795 }
796 
797 /** output method of display column to output file stream 'file' for number of columns in the LP */
798 static
799 SCIP_DECL_DISPOUTPUT(SCIPdispOutputNCurCols)
800 { /*lint --e{715}*/
801  assert(disp != NULL);
802  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_CURCOLS) == 0);
803  assert(scip != NULL);
804 
806 
807  return SCIP_OKAY;
808 }
809 
810 /** output method of display column to output file stream 'file' for number of rows in the LP */
811 static
812 SCIP_DECL_DISPOUTPUT(SCIPdispOutputNCurRows)
813 { /*lint --e{715}*/
814  assert(disp != NULL);
815  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_CURROWS) == 0);
816  assert(scip != NULL);
817 
819 
820  return SCIP_OKAY;
821 }
822 
823 /** output method of display column to output file stream 'file' for number of applied cuts */
824 static
825 SCIP_DECL_DISPOUTPUT(SCIPdispOutputNAppliedCuts)
826 { /*lint --e{715}*/
827  assert(disp != NULL);
828  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_CUTS) == 0);
829  assert(scip != NULL);
830 
832 
833  return SCIP_OKAY;
834 }
835 
836 /** output method of display column to output file stream 'file' for number of separation rounds */
837 static
838 SCIP_DECL_DISPOUTPUT(SCIPdispOutputNSepaRounds)
839 { /*lint --e{715}*/
840  assert(disp != NULL);
841  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_SEPAROUNDS) == 0);
842  assert(scip != NULL);
843 
845 
846  return SCIP_OKAY;
847 }
848 
849 /** output method of display column to output file stream 'file' for number of current rows in the cut pool */
850 static
851 SCIP_DECL_DISPOUTPUT(SCIPdispOutputCutPoolSize)
852 { /*lint --e{715}*/
853  assert(disp != NULL);
854  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_POOLSIZE) == 0);
855  assert(scip != NULL);
856 
858 
859  return SCIP_OKAY;
860 }
861 
862 /** output method of display column to output file stream 'file' for number of conflicts */
863 static
864 SCIP_DECL_DISPOUTPUT(SCIPdispOutputNConflicts)
865 { /*lint --e{715}*/
866  assert(disp != NULL);
867  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_CONFLICTS) == 0);
868  assert(scip != NULL);
869 
871 
872  return SCIP_OKAY;
873 }
874 
875 /** output method of display column to output file stream 'file' for number of strong branchings */
876 static
877 SCIP_DECL_DISPOUTPUT(SCIPdispOutputNStrongbranchs)
878 { /*lint --e{715}*/
879  assert(disp != NULL);
880  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_STRONGBRANCHS) == 0);
881  assert(scip != NULL);
882 
884 
885  return SCIP_OKAY;
886 }
887 
888 /** output method of display column to output file stream 'file' for pseudo objective value */
889 static
890 SCIP_DECL_DISPOUTPUT(SCIPdispOutputPseudoObjval)
891 { /*lint --e{715}*/
892  SCIP_Real pseudoobj;
893 
894  assert(disp != NULL);
895  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_PSEUDOOBJ) == 0);
896  assert(scip != NULL);
897 
898  pseudoobj = SCIPgetPseudoObjval(scip);
899 
900  if( SCIPisInfinity(scip, -pseudoobj) )
901  SCIPinfoMessage(scip, file, " -- ");
902  else if( SCIPisInfinity(scip, pseudoobj) )
903  SCIPinfoMessage(scip, file, " cutoff ");
904  else
905  SCIPinfoMessage(scip, file, "%13.6e ", pseudoobj);
906 
907  return SCIP_OKAY;
908 }
909 
910 /** output method of display column to output file stream 'file' for LP objective value */
911 static
912 SCIP_DECL_DISPOUTPUT(SCIPdispOutputLPObjval)
913 { /*lint --e{715}*/
914  SCIP_Real lpobj;
915 
916  assert(disp != NULL);
917  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_LPOBJ) == 0);
918  assert(scip != NULL);
919 
921  SCIPinfoMessage(scip, file, " -- ");
922  else
923  {
924  lpobj = SCIPgetLPObjval(scip);
925 
926  if( SCIPisInfinity(scip, -lpobj) )
927  SCIPinfoMessage(scip, file, " -- ");
928  else if( SCIPisInfinity(scip, lpobj) )
929  SCIPinfoMessage(scip, file, " cutoff ");
930  else
931  SCIPinfoMessage(scip, file, "%13.6e ", lpobj);
932  }
933 
934  return SCIP_OKAY;
935 }
936 
937 /** output method of display column to output file stream 'file' for the current dualbound */
938 static
939 SCIP_DECL_DISPOUTPUT(SCIPdispOutputCurDualbound)
940 { /*lint --e{715}*/
941  SCIP_Real curdualbound;
942 
943  assert(disp != NULL);
944  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_CURDUALBOUND) == 0);
945  assert(scip != NULL);
946 
947  curdualbound = SCIPgetLocalDualbound(scip);
948 
949  if( SCIPisInfinity(scip, (SCIP_Real) SCIPgetObjsense(scip) * curdualbound ) )
950  SCIPinfoMessage(scip, file, " cutoff ");
951  else if( SCIPisInfinity(scip, -1.0 * (SCIP_Real) SCIPgetObjsense(scip) * curdualbound ) )
952  SCIPinfoMessage(scip, file, " -- ");
953  else
954  SCIPinfoMessage(scip, file, "%13.6e ", curdualbound);
955 
956  return SCIP_OKAY;
957 }
958 
959 /** output method of display column to output file stream 'file' for estimate of best primal solution w.r.t. original
960  * problem contained in current subtree */
961 static
962 SCIP_DECL_DISPOUTPUT(SCIPdispOutputLocalOrigEstimate)
963 { /*lint --e{715}*/
964  SCIP_Real estimate;
965 
966  assert(disp != NULL);
967  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_ESTIMATE) == 0);
968  assert(scip != NULL);
969 
970  estimate = SCIPgetLocalOrigEstimate(scip);
971  if( SCIPisInfinity(scip, REALABS(estimate)) )
972  SCIPinfoMessage(scip, file, " -- ");
973  else
974  SCIPinfoMessage(scip, file, "%13.6e ", estimate);
975 
976  return SCIP_OKAY;
977 }
978 
979 /** output method of display column to output file stream 'file' for average dualbound */
980 static
981 SCIP_DECL_DISPOUTPUT(SCIPdispOutputAvgDualbound)
982 { /*lint --e{715}*/
983  SCIP_Real avgdualbound;
984 
985  assert(disp != NULL);
986  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_AVGDUALBOUND) == 0);
987  assert(scip != NULL);
988 
989  avgdualbound = SCIPgetAvgDualbound(scip);
990  if( SCIPisInfinity(scip, REALABS(avgdualbound)) )
991  SCIPinfoMessage(scip, file, " -- ");
992  else
993  SCIPinfoMessage(scip, file, "%13.6e ", avgdualbound);
994 
995  return SCIP_OKAY;
996 }
997 
998 /** output method of display column to output file stream 'file' for dualbound */
999 static
1000 SCIP_DECL_DISPOUTPUT(SCIPdispOutputDualbound)
1001 { /*lint --e{715}*/
1002  SCIP_Real dualbound;
1003 
1004  assert(disp != NULL);
1005  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_DUALBOUND) == 0);
1006  assert(scip != NULL);
1007 
1008  dualbound = SCIPgetDualbound(scip);
1009 
1010  if( SCIPisInfinity(scip, (SCIP_Real) SCIPgetObjsense(scip) * dualbound ) )
1011  SCIPinfoMessage(scip, file, " cutoff ");
1012  else if( SCIPisInfinity(scip, -1.0 * (SCIP_Real) SCIPgetObjsense(scip) * dualbound ) )
1013  SCIPinfoMessage(scip, file, " -- ");
1014  else
1015  SCIPinfoMessage(scip, file, "%13.6e ", dualbound);
1016 
1017  return SCIP_OKAY;
1018 }
1019 
1020 /** output method of display column to output file stream 'file' for primalbound */
1021 static
1022 SCIP_DECL_DISPOUTPUT(SCIPdispOutputPrimalbound)
1023 { /*lint --e{715}*/
1024  SCIP_Real primalbound;
1025 
1026  assert(disp != NULL);
1027  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_PRIMALBOUND) == 0);
1028  assert(scip != NULL);
1029 
1030  primalbound = SCIPgetPrimalbound(scip);
1031  if( SCIPisInfinity(scip, REALABS(primalbound)) )
1032  SCIPinfoMessage(scip, file, " -- ");
1033  else
1034  SCIPinfoMessage(scip, file, "%13.6e%c", primalbound, SCIPisPrimalboundSol(scip) ? ' ' : '*');
1035 
1036  return SCIP_OKAY;
1037 }
1038 
1039 /** output method of display column to output file stream 'file' for dualbound */
1040 static
1041 SCIP_DECL_DISPOUTPUT(SCIPdispOutputConcDualbound)
1042 { /*lint --e{715}*/
1043  SCIP_Real dualbound;
1044 
1045  assert(disp != NULL);
1046  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_CONCDUALBOUND) == 0);
1047  assert(scip != NULL);
1048 
1049  dualbound = SCIPgetConcurrentDualbound(scip);
1050 
1051  if( SCIPisInfinity(scip, (SCIP_Real) SCIPgetObjsense(scip) * dualbound ) )
1052  SCIPinfoMessage(scip, file, " cutoff ");
1053  else if( SCIPisInfinity(scip, -1.0 * (SCIP_Real) SCIPgetObjsense(scip) * dualbound ) )
1054  SCIPinfoMessage(scip, file, " -- ");
1055  else
1056  SCIPinfoMessage(scip, file, "%13.6e ", dualbound);
1057 
1058  return SCIP_OKAY;
1059 }
1060 
1061 /** output method of display column to output file stream 'file' for primalbound */
1062 static
1063 SCIP_DECL_DISPOUTPUT(SCIPdispOutputConcPrimalbound)
1064 { /*lint --e{715}*/
1065  SCIP_Real primalbound;
1066 
1067  assert(disp != NULL);
1068  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_CONCPRIMALBOUND) == 0);
1069  assert(scip != NULL);
1070 
1071  primalbound = SCIPgetConcurrentPrimalbound(scip);
1072  if( SCIPisInfinity(scip, REALABS(primalbound)) )
1073  SCIPinfoMessage(scip, file, " -- ");
1074  else
1075  SCIPinfoMessage(scip, file, "%13.6e ", primalbound);
1076 
1077  return SCIP_OKAY;
1078 }
1079 
1080 /** output method of display column to output file stream 'file' for cutoffbound */
1081 static
1082 SCIP_DECL_DISPOUTPUT(SCIPdispOutputCutoffbound)
1083 { /*lint --e{715}*/
1084  SCIP_Real cutoffbound;
1085 
1086  assert(disp != NULL);
1087  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_CUTOFFBOUND) == 0);
1088  assert(scip != NULL);
1089 
1090  cutoffbound = SCIPgetCutoffbound(scip);
1091  if( SCIPisInfinity(scip, REALABS(cutoffbound)) )
1092  SCIPinfoMessage(scip, file, " -- ");
1093  else
1094  SCIPinfoMessage(scip, file, "%13.6e ", SCIPretransformObj(scip, cutoffbound));
1095 
1096  return SCIP_OKAY;
1097 }
1098 
1099 /** output method of display column to output file stream 'file' for gap */
1100 static
1101 SCIP_DECL_DISPOUTPUT(SCIPdispOutputGap)
1102 { /*lint --e{715}*/
1103  SCIP_Real gap;
1104 
1105  assert(disp != NULL);
1106  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_GAP) == 0);
1107  assert(scip != NULL);
1108 
1109  gap = SCIPgetGap(scip);
1110 
1111  if( SCIPisInfinity(scip, gap) )
1112  SCIPinfoMessage(scip, file, " Inf ");
1113  else if( gap >= 100.00 )
1114  SCIPinfoMessage(scip, file, " Large ");
1115  else
1116  SCIPinfoMessage(scip, file, "%7.2f%%", 100.0*gap);
1117 
1118  return SCIP_OKAY;
1119 }
1120 
1121 /** output method of display column to output file stream 'file' for gap */
1122 static
1123 SCIP_DECL_DISPOUTPUT(SCIPdispOutputConcGap)
1124 { /*lint --e{715}*/
1125  SCIP_Real gap;
1126 
1127  assert(disp != NULL);
1128  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_CONCGAP) == 0);
1129  assert(scip != NULL);
1130 
1131  gap = SCIPgetConcurrentGap(scip);
1132 
1133  if( SCIPisInfinity(scip, gap) )
1134  SCIPinfoMessage(scip, file, " Inf ");
1135  else if( gap >= 100.00 )
1136  SCIPinfoMessage(scip, file, " Large ");
1137  else
1138  SCIPinfoMessage(scip, file, "%7.2f%%", 100.0*gap);
1139 
1140  return SCIP_OKAY;
1141 }
1142 
1143 /** output method of display column to output file stream 'file' for primalgap */
1144 static
1145 SCIP_DECL_DISPOUTPUT(SCIPdispOutputPrimalgap)
1146 { /*lint --e{715}*/
1147  SCIP_Real primalbound;
1148  SCIP_Real dualbound;
1149  SCIP_Real gap;
1150 
1151  assert(disp != NULL);
1152  assert(strcmp(SCIPdispGetName(disp), DISP_NAME_PRIMALGAP) == 0);
1153  assert(scip != NULL);
1154 
1156  {
1157  /* in case we could not prove whether the problem is unbounded or infeasible, we want to terminate with
1158  * gap = +inf instead of gap = 0
1159  */
1161  gap = SCIPinfinity(scip);
1162  else
1163  gap = 0.0;
1164  }
1165  else
1166  {
1167  primalbound = SCIPgetPrimalbound(scip);
1168  dualbound = SCIPgetDualbound(scip);
1169 
1170  if( SCIPisEQ(scip, primalbound, dualbound) )
1171  gap = 0.0;
1172  else if( SCIPisZero(scip, primalbound)
1173  || SCIPisInfinity(scip, REALABS(primalbound))
1174  || primalbound * dualbound < 0.0 )
1175  gap = SCIPinfinity(scip);
1176  else
1177  gap = REALABS((primalbound - dualbound))/REALABS(primalbound + SCIPepsilon(scip));
1178  }
1179 
1180  if( SCIPisInfinity(scip, gap) )
1181  SCIPinfoMessage(scip, file, " Inf ");
1182  else if( gap >= 100.00 )
1183  SCIPinfoMessage(scip, file, " Large ");
1184  else
1185  SCIPinfoMessage(scip, file, "%7.2f%%", 100.0*gap);
1186 
1187  return SCIP_OKAY;
1188 }
1189 
1190 /** output method of display column to output file stream 'file' for number of found solutions */
1191 static
1192 SCIP_DECL_DISPOUTPUT(SCIPdispOutputNSols)
1193 { /*lint --e{715}*/
1194  SCIPinfoMessage(scip, file, "%5" SCIP_LONGINT_FORMAT, SCIPgetNSolsFound(scip));
1195 
1196  return SCIP_OKAY;
1197 }
1198 
1199 /*
1200  * default display columns specific interface methods
1201  */
1202 
1203 /** includes the default display columns in SCIP */
1205  SCIP* scip /**< SCIP data structure */
1206  )
1207 {
1208  SCIP_DISP* tmpdisp;
1209 
1210  tmpdisp = SCIPfindDisp(scip, DISP_NAME_SOLFOUND);
1211  if( tmpdisp == NULL )
1212  {
1215  dispCopyDefault,
1216  NULL, NULL, NULL, SCIPdispInitsolSolFound, NULL, SCIPdispOutputSolFound, NULL,
1218  }
1219  tmpdisp = SCIPfindDisp(scip, DISP_NAME_CONCSOLFOUND);
1220  if( tmpdisp == NULL )
1221  {
1224  dispCopyDefault,
1225  NULL, NULL, NULL, SCIPdispInitsolConcSolFound, SCIPdispExitsolConcSolFound, SCIPdispOutputConcSolFound, NULL,
1227  tmpdisp = SCIPfindDisp(scip, DISP_NAME_CONCSOLFOUND);
1229  }
1230  tmpdisp = SCIPfindDisp(scip, DISP_NAME_TIME);
1231  if( tmpdisp == NULL )
1232  {
1235  dispCopyDefault,
1236  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputSolvingTime, NULL,
1238  tmpdisp = SCIPfindDisp(scip, DISP_NAME_TIME);
1240  }
1241  tmpdisp = SCIPfindDisp(scip, DISP_NAME_NNODES);
1242  if( tmpdisp == NULL )
1243  {
1246  dispCopyDefault,
1247  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNNodes, NULL,
1249  }
1250  tmpdisp = SCIPfindDisp(scip, DISP_NAME_NODESLEFT);
1251  if( tmpdisp == NULL )
1252  {
1255  dispCopyDefault,
1256  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNNodesLeft, NULL,
1258  }
1259 
1260  /* add objective leaves display */
1261  tmpdisp = SCIPfindDisp(scip, DISP_NAME_NOBJLEAVES);
1262  if( tmpdisp == NULL )
1263  {
1267  }
1268 
1269  /* add infeasible leaves display */
1270  tmpdisp = SCIPfindDisp(scip, DISP_NAME_NINFEASLEAVES);
1271  if( tmpdisp == NULL )
1272  {
1276  }
1277  tmpdisp = SCIPfindDisp(scip, DISP_NAME_LPITERATIONS);
1278  if( tmpdisp == NULL )
1279  {
1282  dispCopyDefault,
1283  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNLPIterations, NULL,
1285  }
1286  tmpdisp = SCIPfindDisp(scip, DISP_NAME_LPAVGITERS);
1287  if( tmpdisp == NULL )
1288  {
1291  dispCopyDefault,
1292  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNLPAvgIters, NULL,
1294  }
1295  tmpdisp = SCIPfindDisp(scip, DISP_NAME_LPCOND);
1296  if( tmpdisp == NULL )
1297  {
1300  dispCopyDefault,
1301  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputLPCondition, NULL,
1303  }
1304  tmpdisp = SCIPfindDisp(scip, DISP_NAME_MEMUSED);
1305  if( tmpdisp == NULL )
1306  {
1309  dispCopyDefault,
1310  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputMemUsed, NULL,
1312  }
1313  tmpdisp = SCIPfindDisp(scip, DISP_NAME_CONCMEMUSED);
1314  if( tmpdisp == NULL )
1315  {
1318  dispCopyDefault,
1319  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputConcMemUsed, NULL,
1321  tmpdisp = SCIPfindDisp(scip, DISP_NAME_CONCMEMUSED);
1323  }
1324  tmpdisp = SCIPfindDisp(scip, DISP_NAME_MEMTOTAL);
1325  if( tmpdisp == NULL )
1326  {
1329  dispCopyDefault,
1330  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputMemUsedTotal, NULL,
1332  }
1333  tmpdisp = SCIPfindDisp(scip, DISP_NAME_DEPTH);
1334  if( tmpdisp == NULL )
1335  {
1338  dispCopyDefault,
1339  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputDepth, NULL,
1341  }
1342  tmpdisp = SCIPfindDisp(scip, DISP_NAME_MAXDEPTH);
1343  if( tmpdisp == NULL )
1344  {
1347  dispCopyDefault,
1348  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputMaxDepth, NULL,
1350  }
1351  tmpdisp = SCIPfindDisp(scip, DISP_NAME_PLUNGEDEPTH);
1352  if( tmpdisp == NULL )
1353  {
1356  dispCopyDefault,
1357  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputPlungeDepth, NULL,
1359  }
1360  tmpdisp = SCIPfindDisp(scip, DISP_NAME_NFRAC);
1361  if( tmpdisp == NULL )
1362  {
1365  dispCopyDefault,
1366  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNFrac, NULL,
1368  }
1369  tmpdisp = SCIPfindDisp(scip, DISP_NAME_NEXTERNCANDS);
1370  if( tmpdisp == NULL )
1371  {
1374  dispCopyDefault,
1375  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNExternCands, NULL,
1377  }
1378  tmpdisp = SCIPfindDisp(scip, DISP_NAME_VARS);
1379  if( tmpdisp == NULL )
1380  {
1383  dispCopyDefault,
1384  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNVars, NULL,
1386  }
1387  tmpdisp = SCIPfindDisp(scip, DISP_NAME_CONSS);
1388  if( tmpdisp == NULL )
1389  {
1392  dispCopyDefault,
1393  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNConss, NULL,
1395  }
1396  tmpdisp = SCIPfindDisp(scip, DISP_NAME_CURCONSS);
1397  if( tmpdisp == NULL )
1398  {
1401  dispCopyDefault,
1402  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNCurConss, NULL,
1404  }
1405  tmpdisp = SCIPfindDisp(scip, DISP_NAME_CURCOLS);
1406  if( tmpdisp == NULL )
1407  {
1410  dispCopyDefault,
1411  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNCurCols, NULL,
1413  }
1414  tmpdisp = SCIPfindDisp(scip, DISP_NAME_CURROWS);
1415  if( tmpdisp == NULL )
1416  {
1419  dispCopyDefault,
1420  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNCurRows, NULL,
1422  }
1423  tmpdisp = SCIPfindDisp(scip, DISP_NAME_CUTS);
1424  if( tmpdisp == NULL )
1425  {
1428  dispCopyDefault,
1429  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNAppliedCuts, NULL,
1431  }
1432  tmpdisp = SCIPfindDisp(scip, DISP_NAME_SEPAROUNDS);
1433  if( tmpdisp == NULL )
1434  {
1437  dispCopyDefault,
1438  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNSepaRounds, NULL,
1440  }
1441  tmpdisp = SCIPfindDisp(scip, DISP_NAME_POOLSIZE);
1442  if( tmpdisp == NULL )
1443  {
1446  dispCopyDefault,
1447  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputCutPoolSize, NULL,
1449  }
1450  tmpdisp = SCIPfindDisp(scip,DISP_NAME_CONFLICTS);
1451  if( tmpdisp == NULL )
1452  {
1455  dispCopyDefault,
1456  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNConflicts, NULL,
1458  }
1459  tmpdisp = SCIPfindDisp(scip, DISP_NAME_STRONGBRANCHS);
1460  if( tmpdisp == NULL )
1461  {
1464  dispCopyDefault,
1465  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNStrongbranchs, NULL,
1467  }
1468  tmpdisp = SCIPfindDisp(scip, DISP_NAME_PSEUDOOBJ);
1469  if( tmpdisp == NULL )
1470  {
1473  dispCopyDefault,
1474  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputPseudoObjval, NULL,
1476  }
1477  tmpdisp = SCIPfindDisp(scip, DISP_NAME_LPOBJ);
1478  if( tmpdisp == NULL )
1479  {
1482  dispCopyDefault,
1483  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputLPObjval, NULL,
1485  }
1486  tmpdisp = SCIPfindDisp(scip, DISP_NAME_CURDUALBOUND);
1487  if( tmpdisp == NULL )
1488  {
1491  dispCopyDefault,
1492  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputCurDualbound, NULL,
1494  }
1495  tmpdisp = SCIPfindDisp(scip, DISP_NAME_ESTIMATE);
1496  if( tmpdisp == NULL )
1497  {
1500  dispCopyDefault,
1501  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputLocalOrigEstimate, NULL,
1503  }
1504  tmpdisp = SCIPfindDisp(scip, DISP_NAME_AVGDUALBOUND);
1505  if( tmpdisp == NULL )
1506  {
1509  dispCopyDefault,
1510  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputAvgDualbound, NULL,
1512  }
1513  tmpdisp = SCIPfindDisp(scip, DISP_NAME_DUALBOUND);
1514  if( tmpdisp == NULL )
1515  {
1518  dispCopyDefault,
1519  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputDualbound, NULL,
1521  }
1522  tmpdisp = SCIPfindDisp(scip, DISP_NAME_PRIMALBOUND);
1523  if( tmpdisp == NULL )
1524  {
1527  dispCopyDefault,
1528  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputPrimalbound, NULL,
1530  }
1531  tmpdisp = SCIPfindDisp(scip, DISP_NAME_CONCDUALBOUND);
1532  if( tmpdisp == NULL )
1533  {
1536  dispCopyDefault,
1537  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputConcDualbound, NULL,
1539  tmpdisp = SCIPfindDisp(scip, DISP_NAME_CONCDUALBOUND);
1541  }
1542  tmpdisp = SCIPfindDisp(scip, DISP_NAME_CONCPRIMALBOUND);
1543  if( tmpdisp == NULL )
1544  {
1547  dispCopyDefault,
1548  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputConcPrimalbound, NULL,
1550  tmpdisp = SCIPfindDisp(scip, DISP_NAME_CONCPRIMALBOUND);
1552  }
1553  tmpdisp = SCIPfindDisp(scip, DISP_NAME_CUTOFFBOUND);
1554  if( tmpdisp == NULL )
1555  {
1558  dispCopyDefault,
1559  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputCutoffbound, NULL,
1561  }
1562  tmpdisp = SCIPfindDisp(scip, DISP_NAME_GAP);
1563  if( tmpdisp == NULL )
1564  {
1567  dispCopyDefault,
1568  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputGap, NULL,
1570  }
1571  tmpdisp = SCIPfindDisp(scip, DISP_NAME_CONCGAP);
1572  if( tmpdisp == NULL )
1573  {
1576  dispCopyDefault,
1577  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputConcGap, NULL,
1579  tmpdisp = SCIPfindDisp(scip, DISP_NAME_CONCGAP);
1581  }
1582  tmpdisp = SCIPfindDisp(scip, DISP_NAME_PRIMALGAP);
1583  if( tmpdisp == NULL )
1584  {
1587  dispCopyDefault,
1588  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputPrimalgap, NULL,
1590  }
1591  tmpdisp = SCIPfindDisp(scip, DISP_NAME_NSOLS);
1592  if( tmpdisp == NULL )
1593  {
1596  dispCopyDefault,
1597  NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNSols, NULL,
1599  }
1600 
1601  return SCIP_OKAY;
1602 }
1603 
#define DISP_WIDT_LPAVGITERS
Definition: disp_default.c:83
SCIP_Bool SCIPsolIsOriginal(SCIP_SOL *sol)
Definition: sol.c:2299
#define DISP_NAME_PLUNGEDEPTH
Definition: disp_default.c:136
#define DISP_WIDT_CURDUALBOUND
Definition: disp_default.c:259
#define DISP_NAME_CONCPRIMALBOUND
Definition: disp_default.c:304
#define DISP_DESC_DEPTH
Definition: disp_default.c:121
#define DISP_WIDT_CONCMEMUSED
Definition: disp_default.c:107
#define DISP_POSI_NFRAC
Definition: disp_default.c:149
#define DISP_PRIO_CONCSOLFOUND
Definition: disp_default.c:43
#define DISP_PRIO_MEMTOTAL
Definition: disp_default.c:116
SCIP_Real SCIPgetSolvingTime(SCIP *scip)
Definition: scip.c:45371
SCIP_Longint SCIPgetNRootLPIterations(SCIP *scip)
Definition: scip.c:41653
#define DISP_DESC_MEMTOTAL
Definition: disp_default.c:113
#define DISP_NAME_CUTS
Definition: disp_default.c:200
#define DISP_NAME_DUALBOUND
Definition: disp_default.c:280
#define DISP_NAME_GAP
Definition: disp_default.c:320
int SCIPgetPlungeDepth(SCIP *scip)
Definition: scip.c:42436
#define DISP_HEAD_NOBJLEAVES
Definition: disp_default.c:355
#define DISP_POSI_LPAVGITERS
Definition: disp_default.c:85
#define DISP_PRIO_NODESLEFT
Definition: disp_default.c:67
#define DISP_NAME_CONCDUALBOUND
Definition: disp_default.c:288
struct SCIP_DispData SCIP_DISPDATA
Definition: type_disp.h:62
#define DISP_WIDT_NSOLS
Definition: disp_default.c:347
#define DISP_HEAD_CURCONSS
Definition: disp_default.c:178
#define DISP_DESC_SEPAROUNDS
Definition: disp_default.c:209
SCIP_Longint SCIPgetNLPIterations(SCIP *scip)
Definition: scip.c:41609
#define DISP_POSI_NSOLS
Definition: disp_default.c:349
SCIP_Bool SCIPisFeasLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
Definition: scip.c:46333
#define DISP_STRI_NSOLS
Definition: disp_default.c:350
#define DISP_NAME_POOLSIZE
Definition: disp_default.c:216
#define DISP_PRIO_CURCONSS
Definition: disp_default.c:180
#define DISP_POSI_STRONGBRANCHS
Definition: disp_default.c:237
#define DISP_HEAD_VARS
Definition: disp_default.c:162
SCIP_Real SCIPgetCutoffbound(SCIP *scip)
Definition: scip.c:42726
SCIP_Real SCIPgetPrimalbound(SCIP *scip)
Definition: scip.c:42675
#define DISP_NAME_CONFLICTS
Definition: disp_default.c:224
#define DISP_POSI_TIME
Definition: disp_default.c:52
SCIP_RETCODE SCIPlpiGetRealSolQuality(SCIP_LPI *lpi, SCIP_LPSOLQUALITY qualityindicator, SCIP_Real *quality)
Definition: lpi_clp.cpp:2790
#define DISP_STRI_CONSS
Definition: disp_default.c:174
#define DISP_POSI_CUTS
Definition: disp_default.c:205
#define DISP_DESC_LPOBJ
Definition: disp_default.c:249
SCIP_Real SCIPgetConcurrentPrimalbound(SCIP *scip)
Definition: concurrent.c:311
SCIP_Longint SCIPgetNSolsFound(SCIP *scip)
Definition: scip.c:42891
#define DISP_STRI_MEMUSED
Definition: disp_default.c:102
#define DISP_HEAD_STRONGBRANCHS
Definition: disp_default.c:234
#define DISP_HEAD_CONCSOLFOUND
Definition: disp_default.c:41
#define DISP_WIDT_VARS
Definition: disp_default.c:163
#define DISP_POSI_SEPAROUNDS
Definition: disp_default.c:213
#define DISP_STRI_NOBJLEAVES
Definition: disp_default.c:359
#define DISP_PRIO_NSOLS
Definition: disp_default.c:348
#define DISP_HEAD_CUTOFFBOUND
Definition: disp_default.c:314
#define DISP_WIDT_AVGDUALBOUND
Definition: disp_default.c:275
#define DISP_PRIO_CONCPRIMALBOUND
Definition: disp_default.c:308
void SCIPdispLongint(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, SCIP_Longint val, int width)
Definition: disp.c:529
#define DISP_DESC_CONCDUALBOUND
Definition: disp_default.c:289
#define DISP_HEAD_CONCDUALBOUND
Definition: disp_default.c:290
static SCIP_DECL_DISPINITSOL(SCIPdispInitsolSolFound)
Definition: disp_default.c:390
#define DISP_PRIO_DEPTH
Definition: disp_default.c:124
#define DISP_PRIO_NOBJLEAVES
Definition: disp_default.c:357
#define DISP_STRI_PSEUDOOBJ
Definition: disp_default.c:246
#define DISP_NAME_NOBJLEAVES
Definition: disp_default.c:353
#define DISP_PRIO_CONCGAP
Definition: disp_default.c:332
#define DISP_WIDT_DEPTH
Definition: disp_default.c:123
SCIP_RETCODE SCIPgetLPI(SCIP *scip, SCIP_LPI **lpi)
Definition: scip.c:29783
#define DISP_DESC_ESTIMATE
Definition: disp_default.c:265
#define DISP_DESC_CONCMEMUSED
Definition: disp_default.c:105
#define DISP_DESC_DUALBOUND
Definition: disp_default.c:281
#define DISP_POSI_PRIMALGAP
Definition: disp_default.c:341
int SCIPgetMaxDepth(SCIP *scip)
Definition: scip.c:42371
#define DISP_WIDT_SEPAROUNDS
Definition: disp_default.c:211
#define DISP_POSI_PSEUDOOBJ
Definition: disp_default.c:245
#define DISP_NAME_NFRAC
Definition: disp_default.c:144
#define DISP_PRIO_CONCMEMUSED
Definition: disp_default.c:108
#define DISP_HEAD_CURDUALBOUND
Definition: disp_default.c:258
#define DISP_STRI_CURCONSS
Definition: disp_default.c:182
#define DISP_DESC_PLUNGEDEPTH
Definition: disp_default.c:137
SCIP_Longint SCIPgetNStrongbranchs(SCIP *scip)
Definition: scip.c:42020
#define DISP_HEAD_NEXTERNCANDS
Definition: disp_default.c:154
#define DISP_STRI_SOLFOUND
Definition: disp_default.c:37
SCIP_Real SCIPinfinity(SCIP *scip)
Definition: scip.c:46050
#define DISP_PRIO_CUTOFFBOUND
Definition: disp_default.c:316
static SCIP_DECL_DISPCOPY(dispCopyDefault)
Definition: disp_default.c:377
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:53
#define DISP_STRI_MEMTOTAL
Definition: disp_default.c:118
#define DISP_WIDT_MEMTOTAL
Definition: disp_default.c:115
#define DISP_HEAD_LPOBJ
Definition: disp_default.c:250
#define DISP_NAME_TIME
Definition: disp_default.c:47
#define DISP_WIDT_CUTS
Definition: disp_default.c:203
#define DISP_DESC_NNODES
Definition: disp_default.c:56
#define DISP_NAME_NODESLEFT
Definition: disp_default.c:63
#define DISP_HEAD_LPAVGITERS
Definition: disp_default.c:82
int SCIPgetNNodesLeft(SCIP *scip)
Definition: scip.c:41454
default display columns
#define DISP_STRI_PRIMALGAP
Definition: disp_default.c:342
#define DISP_POSI_CONCSOLFOUND
Definition: disp_default.c:44
#define DISP_NAME_STRONGBRANCHS
Definition: disp_default.c:232
#define DISP_NAME_SEPAROUNDS
Definition: disp_default.c:208
#define SCIPfreeBlockMemory(scip, ptr)
Definition: scip.h:21973
#define DISP_WIDT_CONFLICTS
Definition: disp_default.c:227
#define DISP_POSI_AVGDUALBOUND
Definition: disp_default.c:277
#define DISP_DESC_STRONGBRANCHS
Definition: disp_default.c:233
#define DISP_WIDT_MAXDEPTH
Definition: disp_default.c:131
#define DISP_POSI_CONCMEMUSED
Definition: disp_default.c:109
#define DISP_DESC_LPCOND
Definition: disp_default.c:89
SCIP_MESSAGEHDLR * SCIPgetMessagehdlr(SCIP *scip)
Definition: scip.c:1228
#define DISP_STRI_CONCGAP
Definition: disp_default.c:334
#define DISP_WIDT_LPITERATIONS
Definition: disp_default.c:75
#define DISP_STRI_DEPTH
Definition: disp_default.c:126
SCIP_Bool SCIPisEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
Definition: scip.c:45985
#define DISP_WIDT_NODESLEFT
Definition: disp_default.c:66
#define SCIPallocBlockMemory(scip, ptr)
Definition: scip.h:21956
int SCIPgetNLPBranchCands(SCIP *scip)
Definition: scip.c:36334
SCIP_Real SCIPsyncstoreGetLastUpperbound(SCIP_SYNCSTORE *syncstore)
Definition: syncstore.c:257
#define DISP_WIDT_CURCONSS
Definition: disp_default.c:179
#define DISP_STRI_MAXDEPTH
Definition: disp_default.c:134
void SCIPdispInt(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, int val, int width)
Definition: disp.c:575
#define DISP_NAME_NEXTERNCANDS
Definition: disp_default.c:152
#define DISP_PRIO_CUTS
Definition: disp_default.c:204
#define DISP_HEAD_DEPTH
Definition: disp_default.c:122
#define DISP_STRI_CURROWS
Definition: disp_default.c:198
#define DISP_POSI_VARS
Definition: disp_default.c:165
#define DISP_WIDT_CURCOLS
Definition: disp_default.c:187
#define DISP_HEAD_PSEUDOOBJ
Definition: disp_default.c:242
void SCIPinfoMessage(SCIP *scip, FILE *file, const char *formatstr,...)
Definition: scip.c:1336
#define DISP_DESC_VARS
Definition: disp_default.c:161
#define DISP_NAME_LPCOND
Definition: disp_default.c:88
SCIP_DISP * SCIPfindDisp(SCIP *scip, const char *name)
Definition: scip.c:9343
SCIP_Real SCIPepsilon(SCIP *scip)
Definition: scip.c:45480
#define DISP_WIDT_ESTIMATE
Definition: disp_default.c:267
#define DISP_POSI_CONSS
Definition: disp_default.c:173
#define DISP_PRIO_ESTIMATE
Definition: disp_default.c:268
#define DISP_STRI_SEPAROUNDS
Definition: disp_default.c:214
#define DISP_PRIO_TIME
Definition: disp_default.c:51
#define DISP_HEAD_CONCPRIMALBOUND
Definition: disp_default.c:306
#define DISP_POSI_LPITERATIONS
Definition: disp_default.c:77
#define DISP_STRI_NINFEASLEAVES
Definition: disp_default.c:369
#define DISP_PRIO_PRIMALBOUND
Definition: disp_default.c:300
#define DISP_WIDT_NEXTERNCANDS
Definition: disp_default.c:155
#define DISP_DESC_AVGDUALBOUND
Definition: disp_default.c:273
#define DISP_NAME_MEMTOTAL
Definition: disp_default.c:112
#define DISP_WIDT_GAP
Definition: disp_default.c:323
int SCIPgetNCutsApplied(SCIP *scip)
Definition: scip.c:42214
#define DISP_WIDT_CUTOFFBOUND
Definition: disp_default.c:315
#define DISP_NAME_AVGDUALBOUND
Definition: disp_default.c:272
#define DISP_WIDT_LPCOND
Definition: disp_default.c:91
#define DISP_NAME_PRIMALGAP
Definition: disp_default.c:336
#define DISP_STRI_CONFLICTS
Definition: disp_default.c:230
#define DISP_POSI_PRIMALBOUND
Definition: disp_default.c:301
#define DISP_STRI_GAP
Definition: disp_default.c:326
#define DISP_WIDT_SOLFOUND
Definition: disp_default.c:34
#define DISP_WIDT_PLUNGEDEPTH
Definition: disp_default.c:139
#define DISP_NAME_PRIMALBOUND
Definition: disp_default.c:296
#define DISP_POSI_NEXTERNCANDS
Definition: disp_default.c:157
#define DISP_WIDT_NOBJLEAVES
Definition: disp_default.c:356
#define DISP_PRIO_STRONGBRANCHS
Definition: disp_default.c:236
#define DISP_DESC_NODESLEFT
Definition: disp_default.c:64
#define DISP_NAME_LPAVGITERS
Definition: disp_default.c:80
#define DISP_POSI_MEMUSED
Definition: disp_default.c:101
#define DISP_PRIO_NEXTERNCANDS
Definition: disp_default.c:156
#define DISP_PRIO_CONSS
Definition: disp_default.c:172
SCIP_Real SCIPgetDualbound(SCIP *scip)
Definition: scip.c:42529
#define DISP_PRIO_NINFEASLEAVES
Definition: disp_default.c:367
SCIP_STATUS SCIPgetStatus(SCIP *scip)
Definition: scip.c:921
#define DISP_STRI_CURCOLS
Definition: disp_default.c:190
#define DISP_PRIO_SOLFOUND
Definition: disp_default.c:35
#define DISP_POSI_GAP
Definition: disp_default.c:325
#define DISP_DESC_CURCONSS
Definition: disp_default.c:177
#define DISP_PRIO_GAP
Definition: disp_default.c:324
#define DISP_HEAD_PRIMALGAP
Definition: disp_default.c:338
SCIP_RETCODE SCIPincludeDispDefault(SCIP *scip)
#define DISP_WIDT_DUALBOUND
Definition: disp_default.c:283
#define NULL
Definition: lpi_spx1.cpp:137
#define DISP_NAME_CONCSOLFOUND
Definition: disp_default.c:39
SCIP_Real SCIPgetSolTransObj(SCIP *scip, SCIP_SOL *sol)
Definition: scip.c:38317
#define DISP_NAME_MEMUSED
Definition: disp_default.c:96
#define REALABS(x)
Definition: def.h:169
SCIP_Real SCIPgetLocalDualbound(SCIP *scip)
Definition: scip.c:13252
#define DISP_NAME_CURROWS
Definition: disp_default.c:192
#define DISP_PRIO_CURCOLS
Definition: disp_default.c:188
#define DISP_POSI_CUTOFFBOUND
Definition: disp_default.c:317
#define DISP_STRI_CONCPRIMALBOUND
Definition: disp_default.c:310
int SCIPgetNLPRows(SCIP *scip)
Definition: scip.c:29351
#define DISP_NAME_CURDUALBOUND
Definition: disp_default.c:256
#define DISP_STRI_LPITERATIONS
Definition: disp_default.c:78
#define DISP_DESC_PRIMALGAP
Definition: disp_default.c:337
#define DISP_PRIO_DUALBOUND
Definition: disp_default.c:284
#define SCIP_CALL(x)
Definition: def.h:316
SCIP_Real SCIPgetLowerbound(SCIP *scip)
Definition: scip.c:42550
#define DISP_NAME_DEPTH
Definition: disp_default.c:120
SCIP_Bool SCIPisPrimalboundSol(SCIP *scip)
Definition: scip.c:42786
SCIP_Longint SCIPgetNTotalNodes(SCIP *scip)
Definition: scip.c:41436
void SCIPdispTime(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, SCIP_Real val, int width)
Definition: disp.c:592
SCIP_Bool SCIPisFeasLE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
Definition: scip.c:46346
#define DISP_PRIO_CONCDUALBOUND
Definition: disp_default.c:292
#define DISP_HEAD_PRIMALBOUND
Definition: disp_default.c:298
#define DISP_DESC_GAP
Definition: disp_default.c:321
#define DISP_WIDT_NNODES
Definition: disp_default.c:58
#define DISP_NAME_LPOBJ
Definition: disp_default.c:248
#define DISP_PRIO_LPAVGITERS
Definition: disp_default.c:84
#define DISP_STRI_CONCMEMUSED
Definition: disp_default.c:110
#define DISP_NAME_PSEUDOOBJ
Definition: disp_default.c:240
#define DISP_DESC_NFRAC
Definition: disp_default.c:145
#define DISP_DESC_CUTS
Definition: disp_default.c:201
#define DISP_HEAD_POOLSIZE
Definition: disp_default.c:218
#define DISP_DESC_NEXTERNCANDS
Definition: disp_default.c:153
#define DISP_WIDT_MEMUSED
Definition: disp_default.c:99
#define DISP_NAME_NSOLS
Definition: disp_default.c:344
#define DISP_POSI_CONCDUALBOUND
Definition: disp_default.c:293
#define DISP_DESC_CURCOLS
Definition: disp_default.c:185
SCIP_Bool SCIPhasCurrentNodeLP(SCIP *scip)
Definition: scip.c:28863
#define DISP_HEAD_MAXDEPTH
Definition: disp_default.c:130
#define DISP_POSI_NOBJLEAVES
Definition: disp_default.c:358
#define DISP_PRIO_CONFLICTS
Definition: disp_default.c:228
#define DISP_DESC_CURDUALBOUND
Definition: disp_default.c:257
the function declarations for the synchronization store
#define DISP_STRI_NODESLEFT
Definition: disp_default.c:69
#define DISP_PRIO_LPOBJ
Definition: disp_default.c:252
#define DISP_DESC_CURROWS
Definition: disp_default.c:193
#define DISP_STRI_AVGDUALBOUND
Definition: disp_default.c:278
#define DISP_POSI_MEMTOTAL
Definition: disp_default.c:117
#define DISP_HEAD_NINFEASLEAVES
Definition: disp_default.c:365
#define DISP_STRI_NEXTERNCANDS
Definition: disp_default.c:158
#define DISP_HEAD_MEMTOTAL
Definition: disp_default.c:114
SCIP_LPSOLSTAT SCIPgetLPSolstat(SCIP *scip)
Definition: scip.c:28948
#define DISP_STRI_NFRAC
Definition: disp_default.c:150
SCIP_RETCODE SCIPincludeDisp(SCIP *scip, const char *name, const char *desc, const char *header, SCIP_DISPSTATUS dispstatus, SCIP_DECL_DISPCOPY((*dispcopy)), SCIP_DECL_DISPFREE((*dispfree)), SCIP_DECL_DISPINIT((*dispinit)), SCIP_DECL_DISPEXIT((*dispexit)), SCIP_DECL_DISPINITSOL((*dispinitsol)), SCIP_DECL_DISPEXITSOL((*dispexitsol)), SCIP_DECL_DISPOUTPUT((*dispoutput)), SCIP_DISPDATA *dispdata, int width, int priority, int position, SCIP_Bool stripline)
Definition: scip.c:9301
#define DISP_STRI_ESTIMATE
Definition: disp_default.c:270
#define DISP_PRIO_MAXDEPTH
Definition: disp_default.c:132
#define DISP_NAME_CURCOLS
Definition: disp_default.c:184
#define DISP_POSI_NODESLEFT
Definition: disp_default.c:68
SCIP_SYNCSTORE * SCIPgetSyncstore(SCIP *scip)
Definition: scip.c:41293
int SCIPgetDepth(SCIP *scip)
Definition: scip.c:42321
#define DISP_NAME_MAXDEPTH
Definition: disp_default.c:128
SCIP_Real SCIPgetGap(SCIP *scip)
Definition: scip.c:42808
#define DISP_PRIO_NFRAC
Definition: disp_default.c:148
#define DISP_DESC_POOLSIZE
Definition: disp_default.c:217
#define DISP_STRI_POOLSIZE
Definition: disp_default.c:222
#define DISP_DESC_CONCSOLFOUND
Definition: disp_default.c:40
#define DISP_HEAD_CONSS
Definition: disp_default.c:170
#define DISP_WIDT_CONCSOLFOUND
Definition: disp_default.c:42
#define DISP_PRIO_POOLSIZE
Definition: disp_default.c:220
#define DISP_HEAD_PLUNGEDEPTH
Definition: disp_default.c:138
#define DISP_NAME_CURCONSS
Definition: disp_default.c:176
#define DISP_NAME_ESTIMATE
Definition: disp_default.c:264
#define DISP_HEAD_CONCMEMUSED
Definition: disp_default.c:106
#define DISP_POSI_CONCGAP
Definition: disp_default.c:333
#define DISP_WIDT_NFRAC
Definition: disp_default.c:147
#define DISP_NAME_CONSS
Definition: disp_default.c:168
#define DISP_PRIO_AVGDUALBOUND
Definition: disp_default.c:276
SCIP_Longint SCIPsyncstoreGetLastMemTotal(SCIP_SYNCSTORE *syncstore)
Definition: syncstore.c:301
#define DISP_WIDT_PRIMALGAP
Definition: disp_default.c:339
#define DISP_PRIO_VARS
Definition: disp_default.c:164
#define DISP_STRI_VARS
Definition: disp_default.c:166
#define DISP_WIDT_CURROWS
Definition: disp_default.c:195
#define DISP_HEAD_SOLFOUND
Definition: disp_default.c:33
#define DISP_WIDT_CONCPRIMALBOUND
Definition: disp_default.c:307
#define DISP_HEAD_TIME
Definition: disp_default.c:49
#define DISP_WIDT_CONCDUALBOUND
Definition: disp_default.c:291
#define DISP_POSI_CURCOLS
Definition: disp_default.c:189
static SCIP_DECL_DISPOUTPUT(SCIPdispOutputSolFound)
Definition: disp_default.c:404
#define DISP_DESC_SOLFOUND
Definition: disp_default.c:32
#define DISP_POSI_LPCOND
Definition: disp_default.c:93
SCIP_Longint SCIPgetNConflictConssApplied(SCIP *scip)
Definition: scip.c:42295
SCIP_Longint SCIPgetNObjlimLeaves(SCIP *scip)
Definition: scip.c:41535
#define DISP_POSI_MAXDEPTH
Definition: disp_default.c:133
SCIP_Bool SCIPisInfinity(SCIP *scip, SCIP_Real val)
Definition: scip.c:46061
#define DISP_DESC_NSOLS
Definition: disp_default.c:345
#define DISP_POSI_CONFLICTS
Definition: disp_default.c:229
void SCIPchgDispMode(SCIP_DISP *disp, SCIP_DISPMODE mode)
Definition: scip.c:9391
#define DISP_WIDT_LPOBJ
Definition: disp_default.c:251
helper functions for concurrent scip solvers
#define DISP_POSI_CURCONSS
Definition: disp_default.c:181
int SCIPgetNVars(SCIP *scip)
Definition: scip.c:11680
#define DISP_NAME_NNODES
Definition: disp_default.c:55
SCIP_Real SCIPgetAvgDualbound(SCIP *scip)
Definition: scip.c:42488
#define DISP_POSI_NINFEASLEAVES
Definition: disp_default.c:368
#define DISP_POSI_DUALBOUND
Definition: disp_default.c:285
int SCIPsyncstoreGetLastNSols(SCIP_SYNCSTORE *syncstore)
Definition: syncstore.c:279
#define DISP_WIDT_TIME
Definition: disp_default.c:50
#define DISP_NAME_CUTOFFBOUND
Definition: disp_default.c:312
#define DISP_STRI_PRIMALBOUND
Definition: disp_default.c:302
#define DISP_NAME_NINFEASLEAVES
Definition: disp_default.c:363
#define DISP_DESC_CONCPRIMALBOUND
Definition: disp_default.c:305
SCIP_Longint SCIPgetMemTotal(SCIP *scip)
Definition: scip.c:45809
SCIP_Real SCIPgetLPObjval(SCIP *scip)
Definition: scip.c:29027
SCIP_SOL * SCIPgetBestSol(SCIP *scip)
Definition: scip.c:39158
#define DISP_POSI_NNODES
Definition: disp_default.c:60
#define DISP_WIDT_CONCGAP
Definition: disp_default.c:331
#define DISP_POSI_LPOBJ
Definition: disp_default.c:253
SCIP_Real SCIPgetConcurrentGap(SCIP *scip)
Definition: concurrent.c:326
SCIP_Longint SCIPgetMemUsed(SCIP *scip)
Definition: scip.c:45796
#define DISP_DESC_CUTOFFBOUND
Definition: disp_default.c:313
SCIP_Real SCIPgetConcurrentDualbound(SCIP *scip)
Definition: concurrent.c:296
#define DISP_POSI_SOLFOUND
Definition: disp_default.c:36
#define DISP_WIDT_POOLSIZE
Definition: disp_default.c:219
int SCIPgetNConss(SCIP *scip)
Definition: scip.c:12728
#define DISP_PRIO_LPITERATIONS
Definition: disp_default.c:76
#define DISP_PRIO_LPCOND
Definition: disp_default.c:92
#define DISP_STRI_LPOBJ
Definition: disp_default.c:254
#define DISP_DESC_MEMUSED
Definition: disp_default.c:97
#define DISP_DESC_TIME
Definition: disp_default.c:48
void SCIPdispSetData(SCIP_DISP *disp, SCIP_DISPDATA *dispdata)
Definition: disp.c:272
#define DISP_POSI_ESTIMATE
Definition: disp_default.c:269
#define DISP_STRI_CURDUALBOUND
Definition: disp_default.c:262
#define DISP_POSI_CONCPRIMALBOUND
Definition: disp_default.c:309
#define DISP_STRI_CUTS
Definition: disp_default.c:206
#define DISP_WIDT_STRONGBRANCHS
Definition: disp_default.c:235
SCIP_Real SCIPretransformObj(SCIP *scip, SCIP_Real obj)
Definition: scip.c:38402
#define DISP_PRIO_NNODES
Definition: disp_default.c:59
#define DISP_STRI_NNODES
Definition: disp_default.c:61
SCIP_HEUR * SCIPgetSolHeur(SCIP *scip, SCIP_SOL *sol)
Definition: scip.c:38510
#define SCIP_Real
Definition: def.h:145
#define DISP_DESC_MAXDEPTH
Definition: disp_default.c:129
#define DISP_PRIO_PSEUDOOBJ
Definition: disp_default.c:244
char SCIPheurGetDispchar(SCIP_HEUR *heur)
Definition: heur.c:1201
#define DISP_STRI_CONCSOLFOUND
Definition: disp_default.c:45
#define DISP_PRIO_CURDUALBOUND
Definition: disp_default.c:260
#define DISP_STRI_PLUNGEDEPTH
Definition: disp_default.c:142
#define DISP_DESC_NINFEASLEAVES
Definition: disp_default.c:364
#define DISP_DESC_NOBJLEAVES
Definition: disp_default.c:354
int SCIPgetNPoolCuts(SCIP *scip)
Definition: scip.c:34153
#define SCIP_INVALID
Definition: def.h:165
SCIP_Real SCIPgetLocalOrigEstimate(SCIP *scip)
Definition: scip.c:13213
#define DISP_PRIO_MEMUSED
Definition: disp_default.c:100
#define DISP_HEAD_CONCGAP
Definition: disp_default.c:330
#define DISP_POSI_DEPTH
Definition: disp_default.c:125
#define DISP_DESC_CONSS
Definition: disp_default.c:169
#define DISP_HEAD_NNODES
Definition: disp_default.c:57
#define DISP_HEAD_AVGDUALBOUND
Definition: disp_default.c:274
#define DISP_HEAD_NODESLEFT
Definition: disp_default.c:65
#define DISP_NAME_LPITERATIONS
Definition: disp_default.c:72
#define DISP_WIDT_PRIMALBOUND
Definition: disp_default.c:299
SCIP_OBJSENSE SCIPgetObjsense(SCIP *scip)
Definition: scip.c:10917
#define DISP_POSI_POOLSIZE
Definition: disp_default.c:221
#define DISP_STRI_LPCOND
Definition: disp_default.c:94
#define DISP_PRIO_CURROWS
Definition: disp_default.c:196
#define DISP_PRIO_PLUNGEDEPTH
Definition: disp_default.c:140
SCIP_DISPDATA * SCIPdispGetData(SCIP_DISP *disp)
Definition: disp.c:262
SCIP_Bool SCIPisZero(SCIP *scip, SCIP_Real val)
Definition: scip.c:46098
#define DISP_HEAD_CURROWS
Definition: disp_default.c:194
#define DISP_HEAD_LPCOND
Definition: disp_default.c:90
#define DISP_POSI_CURDUALBOUND
Definition: disp_default.c:261
#define DISP_WIDT_PSEUDOOBJ
Definition: disp_default.c:243
int SCIPgetNLPCols(SCIP *scip)
Definition: scip.c:29273
#define DISP_DESC_CONFLICTS
Definition: disp_default.c:225
#define DISP_PRIO_SEPAROUNDS
Definition: disp_default.c:212
#define DISP_NAME_CONCMEMUSED
Definition: disp_default.c:104
SCIP_Real SCIPgetUpperbound(SCIP *scip)
Definition: scip.c:42699
#define DISP_NAME_CONCGAP
Definition: disp_default.c:328
int SCIPgetNExternBranchCands(SCIP *scip)
Definition: scip.c:36449
#define DISP_WIDT_NINFEASLEAVES
Definition: disp_default.c:366
SCIP_Real SCIPgetPseudoObjval(SCIP *scip)
Definition: scip.c:29113
#define DISP_NAME_SOLFOUND
Definition: disp_default.c:31
#define DISP_DESC_LPAVGITERS
Definition: disp_default.c:81
#define DISP_DESC_CONCGAP
Definition: disp_default.c:329
#define DISP_WIDT_CONSS
Definition: disp_default.c:171
int SCIPgetNEnabledConss(SCIP *scip)
Definition: scip.c:42470
#define DISP_STRI_LPAVGITERS
Definition: disp_default.c:86
SCIP_Longint SCIPgetNNodes(SCIP *scip)
Definition: scip.c:41409
const char * SCIPdispGetName(SCIP_DISP *disp)
Definition: disp.c:283
SCIP_Longint SCIPgetNInfeasibleLeaves(SCIP *scip)
Definition: scip.c:41508
#define DISP_STRI_STRONGBRANCHS
Definition: disp_default.c:238
#define DISP_POSI_PLUNGEDEPTH
Definition: disp_default.c:141
#define DISP_HEAD_NFRAC
Definition: disp_default.c:146
#define DISP_DESC_LPITERATIONS
Definition: disp_default.c:73
#define DISP_HEAD_GAP
Definition: disp_default.c:322
#define DISP_HEAD_LPITERATIONS
Definition: disp_default.c:74
#define DISP_STRI_CONCDUALBOUND
Definition: disp_default.c:294
#define DISP_NAME_VARS
Definition: disp_default.c:160
#define DISP_HEAD_MEMUSED
Definition: disp_default.c:98
#define DISP_STRI_TIME
Definition: disp_default.c:53
#define DISP_DESC_PSEUDOOBJ
Definition: disp_default.c:241
#define DISP_HEAD_NSOLS
Definition: disp_default.c:346
#define DISP_PRIO_PRIMALGAP
Definition: disp_default.c:340
#define DISP_HEAD_DUALBOUND
Definition: disp_default.c:282
#define DISP_DESC_PRIMALBOUND
Definition: disp_default.c:297
#define DISP_HEAD_SEPAROUNDS
Definition: disp_default.c:210
#define DISP_STRI_CUTOFFBOUND
Definition: disp_default.c:318
#define DISP_HEAD_CONFLICTS
Definition: disp_default.c:226
#define DISP_POSI_CURROWS
Definition: disp_default.c:197
int SCIPgetNSepaRounds(SCIP *scip)
Definition: scip.c:42160
#define DISP_HEAD_ESTIMATE
Definition: disp_default.c:266
#define DISP_HEAD_CUTS
Definition: disp_default.c:202
#define DISP_STRI_DUALBOUND
Definition: disp_default.c:286
#define DISP_HEAD_CURCOLS
Definition: disp_default.c:186