SCIP Doxygen Documentation
Loading...
Searching...
No Matches
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-2026 Zuse Institute Berlin (ZIB) */
7/* */
8/* Licensed under the Apache License, Version 2.0 (the "License"); */
9/* you may not use this file except in compliance with the License. */
10/* You may obtain a copy of the License at */
11/* */
12/* http://www.apache.org/licenses/LICENSE-2.0 */
13/* */
14/* Unless required by applicable law or agreed to in writing, software */
15/* distributed under the License is distributed on an "AS IS" BASIS, */
16/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
17/* See the License for the specific language governing permissions and */
18/* limitations under the License. */
19/* */
20/* You should have received a copy of the Apache-2.0 license */
21/* along with SCIP; see the file LICENSE. If not visit scipopt.org. */
22/* */
23/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
24
25/**@file disp_default.c
26 * @ingroup DEFPLUGINS_DISP
27 * @brief default display columns
28 * @author Tobias Achterberg
29 */
30
31/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
32
33#include "lpi/lpi.h"
34#include "lpi/type_lpi.h"
35#include "scip/concurrent.h"
36#include "scip/disp_default.h"
37#include "scip/pub_disp.h"
38#include "scip/pub_heur.h"
39#include "scip/pub_message.h"
40#include "scip/pub_relax.h"
41#include "scip/pub_sol.h"
42#include "scip/scip_branch.h"
44#include "scip/scip_cut.h"
45#include "scip/scip_disp.h"
46#include "scip/scip_general.h"
47#include "scip/scip_lp.h"
48#include "scip/scip_mem.h"
49#include "scip/scip_message.h"
50#include "scip/scip_numerics.h"
51#include "scip/scip_prob.h"
52#include "scip/scip_sol.h"
54#include "scip/scip_timing.h"
55#include "scip/scip_tree.h"
56#include "scip/syncstore.h"
57
58
59#define DISP_NAME_SOLFOUND "solfound"
60#define DISP_DESC_SOLFOUND "letter that indicates the heuristic which found the solution"
61#define DISP_HEAD_SOLFOUND " "
62#define DISP_WIDT_SOLFOUND 1
63#define DISP_PRIO_SOLFOUND 80000
64#define DISP_POSI_SOLFOUND 0
65#define DISP_STRI_SOLFOUND FALSE
66
67#define DISP_NAME_CONCSOLFOUND "concsolfound"
68#define DISP_DESC_CONCSOLFOUND "indicator that a new solution was found in concurrent solve"
69#define DISP_HEAD_CONCSOLFOUND " "
70#define DISP_WIDT_CONCSOLFOUND 1
71#define DISP_PRIO_CONCSOLFOUND 80000
72#define DISP_POSI_CONCSOLFOUND 0
73#define DISP_STRI_CONCSOLFOUND FALSE
74
75#define DISP_NAME_TIME "time"
76#define DISP_DESC_TIME "total solution time"
77#define DISP_HEAD_TIME "time"
78#define DISP_WIDT_TIME 5
79#define DISP_PRIO_TIME 4000
80#define DISP_POSI_TIME 50
81#define DISP_STRI_TIME TRUE
82
83#define DISP_NAME_NNODES "nnodes"
84#define DISP_DESC_NNODES "number of processed nodes"
85#define DISP_HEAD_NNODES "node"
86#define DISP_WIDT_NNODES 7
87#define DISP_PRIO_NNODES 100000
88#define DISP_POSI_NNODES 100
89#define DISP_STRI_NNODES TRUE
90
91#define DISP_NAME_NODESLEFT "nodesleft"
92#define DISP_DESC_NODESLEFT "number of unprocessed nodes"
93#define DISP_HEAD_NODESLEFT "left"
94#define DISP_WIDT_NODESLEFT 7
95#define DISP_PRIO_NODESLEFT 90000
96#define DISP_POSI_NODESLEFT 200
97#define DISP_STRI_NODESLEFT TRUE
98
99
100#define DISP_NAME_LPITERATIONS "lpiterations"
101#define DISP_DESC_LPITERATIONS "number of simplex iterations"
102#define DISP_HEAD_LPITERATIONS "LP iter"
103#define DISP_WIDT_LPITERATIONS 7
104#define DISP_PRIO_LPITERATIONS 30000
105#define DISP_POSI_LPITERATIONS 1000
106#define DISP_STRI_LPITERATIONS TRUE
107
108#define DISP_NAME_LPAVGITERS "lpavgiterations"
109#define DISP_DESC_LPAVGITERS "average number of LP iterations since the last output line"
110#define DISP_HEAD_LPAVGITERS "LP it/n"
111#define DISP_WIDT_LPAVGITERS 7
112#define DISP_PRIO_LPAVGITERS 25000
113#define DISP_POSI_LPAVGITERS 1400
114#define DISP_STRI_LPAVGITERS TRUE
115
116#define DISP_NAME_LPCOND "lpcond"
117#define DISP_DESC_LPCOND "estimate on condition number of LP solution"
118#define DISP_HEAD_LPCOND "LP cond"
119#define DISP_WIDT_LPCOND 7
120#define DISP_PRIO_LPCOND 0
121#define DISP_POSI_LPCOND 1450
122#define DISP_STRI_LPCOND TRUE
123
124#define DISP_NAME_MEMUSED "memused"
125#define DISP_DESC_MEMUSED "total number of bytes used in block memory"
126#define DISP_HEAD_MEMUSED "umem"
127#define DISP_WIDT_MEMUSED 5
128#define DISP_PRIO_MEMUSED 0
129#define DISP_POSI_MEMUSED 1500
130#define DISP_STRI_MEMUSED TRUE
131
132#define DISP_NAME_CONCMEMUSED "concmemused"
133#define DISP_DESC_CONCMEMUSED "total number of bytes used in block memory"
134#define DISP_HEAD_CONCMEMUSED "mem"
135#define DISP_WIDT_CONCMEMUSED 5
136#define DISP_PRIO_CONCMEMUSED 20000
137#define DISP_POSI_CONCMEMUSED 1500
138#define DISP_STRI_CONCMEMUSED TRUE
139
140#define DISP_NAME_MEMTOTAL "memtotal"
141#define DISP_DESC_MEMTOTAL "total number of bytes in block memory or the creator name when a new incumbent solution was found"
142#define DISP_HEAD_MEMTOTAL "mem/heur"
143#define DISP_WIDT_MEMTOTAL 8 /* the width of the column is 8, since we print 8 characters for new incumbents */
144#define DISP_WIDT_MEMONLY 5 /* for memory output, we only use 5 characters because this is easier to decipher */
145#define DISP_PRIO_MEMTOTAL 20000
146#define DISP_POSI_MEMTOTAL 1500
147#define DISP_STRI_MEMTOTAL TRUE
148
149#define DISP_NAME_DEPTH "depth"
150#define DISP_DESC_DEPTH "depth of current node"
151#define DISP_HEAD_DEPTH "depth"
152#define DISP_WIDT_DEPTH 5
153#define DISP_PRIO_DEPTH 500
154#define DISP_POSI_DEPTH 2000
155#define DISP_STRI_DEPTH TRUE
156
157#define DISP_NAME_MAXDEPTH "maxdepth"
158#define DISP_DESC_MAXDEPTH "maximal depth of all processed nodes"
159#define DISP_HEAD_MAXDEPTH "mdpt"
160#define DISP_WIDT_MAXDEPTH 5
161#define DISP_PRIO_MAXDEPTH 5000
162#define DISP_POSI_MAXDEPTH 2100
163#define DISP_STRI_MAXDEPTH TRUE
164
165#define DISP_NAME_PLUNGEDEPTH "plungedepth"
166#define DISP_DESC_PLUNGEDEPTH "current plunging depth"
167#define DISP_HEAD_PLUNGEDEPTH "pdpt"
168#define DISP_WIDT_PLUNGEDEPTH 5
169#define DISP_PRIO_PLUNGEDEPTH 10
170#define DISP_POSI_PLUNGEDEPTH 2200
171#define DISP_STRI_PLUNGEDEPTH TRUE
172
173#define DISP_NAME_NFRAC "nfrac"
174#define DISP_DESC_NFRAC "number of fractional variables in the current solution"
175#define DISP_HEAD_NFRAC "frac"
176#define DISP_WIDT_NFRAC 5
177#define DISP_PRIO_NFRAC 700
178#define DISP_POSI_NFRAC 2500
179#define DISP_STRI_NFRAC TRUE
180
181#define DISP_NAME_NEXTERNCANDS "nexternbranchcands"
182#define DISP_DESC_NEXTERNCANDS "number of extern branching variables in the current node"
183#define DISP_HEAD_NEXTERNCANDS "extbr"
184#define DISP_WIDT_NEXTERNCANDS 5
185#define DISP_PRIO_NEXTERNCANDS 650
186#define DISP_POSI_NEXTERNCANDS 2600
187#define DISP_STRI_NEXTERNCANDS TRUE
188
189#define DISP_NAME_VARS "vars"
190#define DISP_DESC_VARS "number of variables in the problem"
191#define DISP_HEAD_VARS "vars"
192#define DISP_WIDT_VARS 5
193#define DISP_PRIO_VARS 3000
194#define DISP_POSI_VARS 3000
195#define DISP_STRI_VARS TRUE
196
197#define DISP_NAME_CONSS "conss"
198#define DISP_DESC_CONSS "number of globally valid constraints in the problem"
199#define DISP_HEAD_CONSS "cons"
200#define DISP_WIDT_CONSS 5
201#define DISP_PRIO_CONSS 3100
202#define DISP_POSI_CONSS 3100
203#define DISP_STRI_CONSS TRUE
204
205#define DISP_NAME_CURCONSS "curconss"
206#define DISP_DESC_CURCONSS "number of enabled constraints in current node"
207#define DISP_HEAD_CURCONSS "ccons"
208#define DISP_WIDT_CURCONSS 5
209#define DISP_PRIO_CURCONSS 600
210#define DISP_POSI_CURCONSS 3200
211#define DISP_STRI_CURCONSS TRUE
212
213#define DISP_NAME_CURCOLS "curcols"
214#define DISP_DESC_CURCOLS "number of LP columns in current node"
215#define DISP_HEAD_CURCOLS "cols"
216#define DISP_WIDT_CURCOLS 5
217#define DISP_PRIO_CURCOLS 800
218#define DISP_POSI_CURCOLS 3300
219#define DISP_STRI_CURCOLS TRUE
220
221#define DISP_NAME_CURROWS "currows"
222#define DISP_DESC_CURROWS "number of LP rows in current node"
223#define DISP_HEAD_CURROWS "rows"
224#define DISP_WIDT_CURROWS 5
225#define DISP_PRIO_CURROWS 900
226#define DISP_POSI_CURROWS 3400
227#define DISP_STRI_CURROWS TRUE
228
229#define DISP_NAME_CUTS "cuts"
230#define DISP_DESC_CUTS "total number of cuts applied to the LPs"
231#define DISP_HEAD_CUTS "cuts"
232#define DISP_WIDT_CUTS 5
233#define DISP_PRIO_CUTS 2100
234#define DISP_POSI_CUTS 3500
235#define DISP_STRI_CUTS TRUE
236
237#define DISP_NAME_SEPAROUNDS "separounds"
238#define DISP_DESC_SEPAROUNDS "number of separation rounds performed at the current node"
239#define DISP_HEAD_SEPAROUNDS "sepa"
240#define DISP_WIDT_SEPAROUNDS 4
241#define DISP_PRIO_SEPAROUNDS 100
242#define DISP_POSI_SEPAROUNDS 3600
243#define DISP_STRI_SEPAROUNDS TRUE
244
245#define DISP_NAME_POOLSIZE "poolsize"
246#define DISP_DESC_POOLSIZE "number of LP rows in the cut pool"
247#define DISP_HEAD_POOLSIZE "pool"
248#define DISP_WIDT_POOLSIZE 5
249#define DISP_PRIO_POOLSIZE 50
250#define DISP_POSI_POOLSIZE 3700
251#define DISP_STRI_POOLSIZE TRUE
252
253#define DISP_NAME_CONFLICTS "conflicts"
254#define DISP_DESC_CONFLICTS "total number of conflicts found in conflict analysis"
255#define DISP_HEAD_CONFLICTS "confs"
256#define DISP_WIDT_CONFLICTS 5
257#define DISP_PRIO_CONFLICTS 2000
258#define DISP_POSI_CONFLICTS 4000
259#define DISP_STRI_CONFLICTS TRUE
260
261#define DISP_NAME_STRONGBRANCHS "strongbranchs"
262#define DISP_DESC_STRONGBRANCHS "total number of strong branching calls"
263#define DISP_HEAD_STRONGBRANCHS "strbr"
264#define DISP_WIDT_STRONGBRANCHS 5
265#define DISP_PRIO_STRONGBRANCHS 1000
266#define DISP_POSI_STRONGBRANCHS 5000
267#define DISP_STRI_STRONGBRANCHS TRUE
268
269#define DISP_NAME_PSEUDOOBJ "pseudoobj"
270#define DISP_DESC_PSEUDOOBJ "current pseudo objective value"
271#define DISP_HEAD_PSEUDOOBJ "pseudoobj"
272#define DISP_WIDT_PSEUDOOBJ 14
273#define DISP_PRIO_PSEUDOOBJ 300
274#define DISP_POSI_PSEUDOOBJ 6000
275#define DISP_STRI_PSEUDOOBJ TRUE
276
277#define DISP_NAME_LPOBJ "lpobj"
278#define DISP_DESC_LPOBJ "current LP objective value"
279#define DISP_HEAD_LPOBJ "lpobj"
280#define DISP_WIDT_LPOBJ 14
281#define DISP_PRIO_LPOBJ 300
282#define DISP_POSI_LPOBJ 6500
283#define DISP_STRI_LPOBJ TRUE
284
285#define DISP_NAME_CURDUALBOUND "curdualbound"
286#define DISP_DESC_CURDUALBOUND "dual bound of current node"
287#define DISP_HEAD_CURDUALBOUND "curdualbound"
288#define DISP_WIDT_CURDUALBOUND 14
289#define DISP_PRIO_CURDUALBOUND 400
290#define DISP_POSI_CURDUALBOUND 7000
291#define DISP_STRI_CURDUALBOUND TRUE
292
293#define DISP_NAME_ESTIMATE "estimate"
294#define DISP_DESC_ESTIMATE "estimated value of feasible solution in current node"
295#define DISP_HEAD_ESTIMATE "estimate"
296#define DISP_WIDT_ESTIMATE 14
297#define DISP_PRIO_ESTIMATE 200
298#define DISP_POSI_ESTIMATE 7500
299#define DISP_STRI_ESTIMATE TRUE
300
301#define DISP_NAME_AVGDUALBOUND "avgdualbound"
302#define DISP_DESC_AVGDUALBOUND "average dual bound of all unprocessed nodes"
303#define DISP_HEAD_AVGDUALBOUND "avgdualbound"
304#define DISP_WIDT_AVGDUALBOUND 14
305#define DISP_PRIO_AVGDUALBOUND 40
306#define DISP_POSI_AVGDUALBOUND 8000
307#define DISP_STRI_AVGDUALBOUND TRUE
308
309#define DISP_NAME_DUALBOUND "dualbound"
310#define DISP_DESC_DUALBOUND "current global dual bound"
311#define DISP_HEAD_DUALBOUND "dualbound"
312#define DISP_WIDT_DUALBOUND 14
313#define DISP_PRIO_DUALBOUND 70000
314#define DISP_POSI_DUALBOUND 9000
315#define DISP_STRI_DUALBOUND TRUE
316
317#define DISP_NAME_CONCDUALBOUND "concdualbound"
318#define DISP_DESC_CONCDUALBOUND "current global dual bound in concurrent solve"
319#define DISP_HEAD_CONCDUALBOUND "dualbound"
320#define DISP_WIDT_CONCDUALBOUND 14
321#define DISP_PRIO_CONCDUALBOUND 70000
322#define DISP_POSI_CONCDUALBOUND 9000
323#define DISP_STRI_CONCDUALBOUND TRUE
324
325#define DISP_NAME_PRIMALBOUND "primalbound"
326#define DISP_DESC_PRIMALBOUND "current primal bound"
327#define DISP_HEAD_PRIMALBOUND "primalbound"
328#define DISP_WIDT_PRIMALBOUND 14
329#define DISP_PRIO_PRIMALBOUND 80000
330#define DISP_POSI_PRIMALBOUND 10000
331#define DISP_STRI_PRIMALBOUND TRUE
332
333#define DISP_NAME_CONCPRIMALBOUND "concprimalbound"
334#define DISP_DESC_CONCPRIMALBOUND "current primal bound in concurrent solve"
335#define DISP_HEAD_CONCPRIMALBOUND "primalbound"
336#define DISP_WIDT_CONCPRIMALBOUND 14
337#define DISP_PRIO_CONCPRIMALBOUND 80000
338#define DISP_POSI_CONCPRIMALBOUND 10000
339#define DISP_STRI_CONCPRIMALBOUND TRUE
340
341#define DISP_NAME_CUTOFFBOUND "cutoffbound"
342#define DISP_DESC_CUTOFFBOUND "current cutoff bound"
343#define DISP_HEAD_CUTOFFBOUND "cutoffbound"
344#define DISP_WIDT_CUTOFFBOUND 14
345#define DISP_PRIO_CUTOFFBOUND 10
346#define DISP_POSI_CUTOFFBOUND 10100
347#define DISP_STRI_CUTOFFBOUND TRUE
348
349#define DISP_NAME_GAP "gap"
350#define DISP_DESC_GAP "current (relative) gap using |primal-dual|/MIN(|dual|,|primal|)"
351#define DISP_HEAD_GAP "gap"
352#define DISP_WIDT_GAP 8
353#define DISP_PRIO_GAP 60000
354#define DISP_POSI_GAP 20000
355#define DISP_STRI_GAP TRUE
356
357#define DISP_NAME_CONCGAP "concgap"
358#define DISP_DESC_CONCGAP "current (relative) gap in concurrent solve using |primal-dual|/MIN(|dual|,|primal|)"
359#define DISP_HEAD_CONCGAP "gap"
360#define DISP_WIDT_CONCGAP 8
361#define DISP_PRIO_CONCGAP 60000
362#define DISP_POSI_CONCGAP 20000
363#define DISP_STRI_CONCGAP TRUE
364
365#define DISP_NAME_PRIMALGAP "primalgap"
366#define DISP_DESC_PRIMALGAP "current (relative) gap using |primal-dual|/|primal|"
367#define DISP_HEAD_PRIMALGAP "primgap"
368#define DISP_WIDT_PRIMALGAP 8
369#define DISP_PRIO_PRIMALGAP 20000
370#define DISP_POSI_PRIMALGAP 21000
371#define DISP_STRI_PRIMALGAP TRUE
372
373#define DISP_NAME_NSOLS "nsols"
374#define DISP_DESC_NSOLS "current number of solutions found"
375#define DISP_HEAD_NSOLS "nsols"
376#define DISP_WIDT_NSOLS 5
377#define DISP_PRIO_NSOLS 0
378#define DISP_POSI_NSOLS 30000
379#define DISP_STRI_NSOLS TRUE
380
381/* display for the number of leaves passing the objective limit */
382#define DISP_NAME_NOBJLEAVES "nobjleaves"
383#define DISP_DESC_NOBJLEAVES "current number of encountered objective limit leaves"
384#define DISP_HEAD_NOBJLEAVES "objleav"
385#define DISP_WIDT_NOBJLEAVES 7
386#define DISP_PRIO_NOBJLEAVES 0
387#define DISP_POSI_NOBJLEAVES 31000
388#define DISP_STRI_NOBJLEAVES TRUE
389
390
391/* display for number of encountered infeasible leaf nodes */
392#define DISP_NAME_NINFEASLEAVES "ninfeasleaves"
393#define DISP_DESC_NINFEASLEAVES "number of encountered infeasible leaves"
394#define DISP_HEAD_NINFEASLEAVES "infleav"
395#define DISP_WIDT_NINFEASLEAVES 7
396#define DISP_PRIO_NINFEASLEAVES 0
397#define DISP_POSI_NINFEASLEAVES 32000
398#define DISP_STRI_NINFEASLEAVES TRUE
399
400/*
401 * Callback methods
402 */
403
404/** copy method for display plugins (called when SCIP copies plugins) */
405static
406SCIP_DECL_DISPCOPY(dispCopyDefault)
407{ /*lint --e{715}*/
408 assert(scip != NULL);
409 assert(disp != NULL);
410
411 /* call inclusion method of dialog (unless it has already been included by the copy call of the first default column) */
412 if( SCIPfindDisp(scip, SCIPdispGetName(disp)) == NULL )
413 {
415 }
416
417 return SCIP_OKAY;
418}
419
420/** solving process initialization method of display column (called when branch and bound process is about to begin) */
421static
422SCIP_DECL_DISPINITSOL(SCIPdispInitsolSolFound)
423{ /*lint --e{715}*/
424 assert(disp != NULL);
425 assert(strcmp(SCIPdispGetName(disp), DISP_NAME_SOLFOUND) == 0
426 || strcmp(SCIPdispGetName(disp), DISP_NAME_MEMTOTAL) == 0);
427 assert(scip != NULL);
428
430
431 return SCIP_OKAY;
432}
433
434/** returns TRUE if this solution should be displayed in the output */
435static
437 SCIP* scip, /**< SCIP data structure */
438 SCIP_SOL* sol /**< solution data structure, e.g., current incumbent solution */
439 )
440{
442}
443
444/** output method of display column to output file stream 'file' for character of best solution */
445static
446SCIP_DECL_DISPOUTPUT(SCIPdispOutputSolFound)
447{ /*lint --e{715}*/
448 SCIP_SOL* sol;
449 SCIP_DISPDATA* dispdata;
450
451 assert(disp != NULL);
452 assert(scip != NULL);
453
455
457 if( sol == NULL )
458 SCIPdispSetData(disp, NULL);
459
460 dispdata = SCIPdispGetData(disp);
461 if( sol != (SCIP_SOL*)dispdata && isDisplaySol(scip, sol) )
462 {
463 SCIP_HEUR* heur;
464 char c;
465
466 heur = SCIPgetSolHeur(scip, sol);
467
468 if( heur == NULL )
469 {
471 c = '#';
472 else
473 c = '*';
474 }
475 else
476 c = SCIPheurGetDispchar(heur);
477
478 SCIPinfoMessage(scip, file, "%c", c);
479
481 }
482 else
483 SCIPinfoMessage(scip, file, " ");
484
485 return SCIP_OKAY;
486}
487
488/** solving process initialization method of display column (called when branch and bound process is about to begin) */
489static
490SCIP_DECL_DISPINITSOL(SCIPdispInitsolConcSolFound)
491{ /*lint --e{715}*/
492 SCIP_Real* bestupper;
493
494 assert(disp != NULL);
495 assert(scip != NULL);
496
498
499 SCIP_CALL( SCIPallocBlockMemory(scip, &bestupper) );
500 *bestupper = SCIPinfinity(scip);
501
502 SCIPdispSetData(disp, (SCIP_DISPDATA*) bestupper);
503
504 return SCIP_OKAY;
505}
506
507/** solving process initialization method of display column (called when branch and bound process is about to begin) */
508static
509SCIP_DECL_DISPINITSOL(SCIPdispExitsolConcSolFound)
510{ /*lint --e{715}*/
511 SCIP_Real* bestupper;
512
513 assert(disp != NULL);
514 assert(scip != NULL);
515
517
518 bestupper = (SCIP_Real*) SCIPdispGetData(disp);
519 SCIPfreeBlockMemory(scip, &bestupper);
520
521 SCIPdispSetData(disp, NULL);
522
523 return SCIP_OKAY;
524}
525
526/** output method of display column to output file stream 'file' for character of best solution */
527static
528SCIP_DECL_DISPOUTPUT(SCIPdispOutputConcSolFound)
529{ /*lint --e{715}*/
530 SCIP_Real* bestupper;
531 SCIP_Real newbestupper;
532 SCIP_SYNCSTORE* syncstore;
533
534 assert(disp != NULL);
535 assert(scip != NULL);
536
538
539 bestupper = (SCIP_Real*) SCIPdispGetData(disp);
540
541 syncstore = SCIPgetSyncstore(scip);
542 assert(syncstore != NULL);
543 newbestupper = SCIPsyncstoreGetLastUpperbound(syncstore);
544
545 if( SCIPsyncstoreGetLastNSols(syncstore) > 0 && SCIPisFeasLT(scip, newbestupper, *bestupper) )
546 {
547 SCIPinfoMessage(scip, file, "$");
548 *bestupper = newbestupper;
549 }
550 else
551 SCIPinfoMessage(scip, file, " ");
552
553 return SCIP_OKAY;
554}
555
556/** output method of display column to output file stream 'file' for solving time */
557static
558SCIP_DECL_DISPOUTPUT(SCIPdispOutputSolvingTime)
559{ /*lint --e{715}*/
560 assert(disp != NULL);
561 assert(scip != NULL);
562
564
566
567 return SCIP_OKAY;
568}
569
570/** output method of display column to output file stream 'file' for number of nodes */
571static
572SCIP_DECL_DISPOUTPUT(SCIPdispOutputNNodes)
573{ /*lint --e{715}*/
574 assert(disp != NULL);
575 assert(scip != NULL);
576
578
580
581 return SCIP_OKAY;
582}
583
584/** output method of display column to output file stream 'file' for number of open nodes */
585static
586SCIP_DECL_DISPOUTPUT(SCIPdispOutputNNodesLeft)
587{ /*lint --e{715}*/
588 assert(disp != NULL);
589 assert(scip != NULL);
590
592
594
595 return SCIP_OKAY;
596}
597
598/** output method of display column to output file stream 'file' */
599static
600SCIP_DECL_DISPOUTPUT(dispOutputNObjLeaves)
601{
602 assert(disp != NULL);
603 assert(scip != NULL);
604
606
607 /* ouput number of leaves that hit the objective */
609
610 return SCIP_OKAY;
611}
612
613/** output method of display column to output file stream 'file' */
614static
615SCIP_DECL_DISPOUTPUT(dispOutputNInfeasLeaves)
616{
617 assert(disp != NULL);
618 assert(scip != NULL);
619
621
622 /* output number of encountered infeasible leaf nodes */
624
625 return SCIP_OKAY;
626}
627
628/** output method of display column to output file stream 'file' for number of LP iterations */
629static
630SCIP_DECL_DISPOUTPUT(SCIPdispOutputNLPIterations)
631{ /*lint --e{715}*/
632 assert(disp != NULL);
633 assert(scip != NULL);
634
636
638
639 return SCIP_OKAY;
640}
641
642/** output method of display column to output file stream 'file' for number of average LP iterations */
643static
644SCIP_DECL_DISPOUTPUT(SCIPdispOutputNLPAvgIters)
645{ /*lint --e{715}*/
646 assert(disp != NULL);
647 assert(scip != NULL);
648
650
651 /**@todo Currently we are using the total number of nodes to compute the average LP iterations number. The reason for
652 * that is, that for the LP iterations only the total number (over all runs) are stored in the statistics. It
653 * would be nicer if the statistic also stores the number of LP iterations for the current run similar to the
654 * nodes.
655 */
656
657 if( SCIPgetNNodes(scip) < 2 )
658 SCIPinfoMessage(scip, file, " - ");
659 else
660 SCIPinfoMessage(scip, file, "%6.1f ",
662
663 return SCIP_OKAY;
664}
665
666
667/** output method of display column to output file stream 'file' for estimate on LP condition */
668static
669SCIP_DECL_DISPOUTPUT(SCIPdispOutputLPCondition)
670{ /*lint --e{715}*/
671 SCIP_LPI* lpi;
672 SCIP_Real cond;
673
674 assert(disp != NULL);
675 assert(scip != NULL);
676
678
679 /* note that after diving mode, the LPI may only have the basis information, but SCIPlpiWasSolved() can be false; in
680 * this case, we will (depending on the LP solver) probably not obtain the quality measure; one solution would be to
681 * store the results of SCIPlpiGetRealSolQuality() within the SCIP_LP after each LP solve; this would have the added
682 * advantage, that we reduce direct access to the LPI, but it sounds potentially expensive
683 */
684 SCIP_CALL( SCIPgetLPI(scip, &lpi) );
685 if( lpi == NULL )
686 {
687 SCIPinfoMessage(scip, file, " - ");
688 return SCIP_OKAY;
689 }
690
692
693 if( cond == SCIP_INVALID ) /*lint !e777*/
694 SCIPinfoMessage(scip, file, " n/a ");
695 else
696 SCIPinfoMessage(scip, file, "%.1e", cond);
697
698 return SCIP_OKAY;
699}
700
701/** output method of display column to output file stream 'file' for depth */
702static
703SCIP_DECL_DISPOUTPUT(SCIPdispOutputDepth)
704{ /*lint --e{715}*/
705 assert(disp != NULL);
706 assert(scip != NULL);
707
709
711
712 return SCIP_OKAY;
713}
714
715/** output method of display column to output file stream 'file' for used memory */
716static
717SCIP_DECL_DISPOUTPUT(SCIPdispOutputMemUsed)
718{ /*lint --e{715}*/
719 assert(disp != NULL);
720 assert(scip != NULL);
721
723
725
726 return SCIP_OKAY;
727}
728
729/** output method of display column to output file stream 'file' for used memory */
730static
731SCIP_DECL_DISPOUTPUT(SCIPdispOutputConcMemUsed)
732{ /*lint --e{715}*/
733 SCIP_SYNCSTORE* syncstore;
734 assert(disp != NULL);
735 assert(scip != NULL);
736
738
739 syncstore = SCIPgetSyncstore(scip);
740 assert(syncstore != NULL);
741
743
744 return SCIP_OKAY;
745}
746
747/** output method of display column to output file stream 'file' for allocated and used memory, or creator name after a
748 * new incumbent solution has been found
749 */
750static
751SCIP_DECL_DISPOUTPUT(SCIPdispOutputMemUsedTotal)
752{ /*lint --e{715}*/
753 SCIP_SOL* sol;
754 SCIP_DISPDATA* dispdata;
755
756 assert(disp != NULL);
757 assert(scip != NULL);
758
760
762 if( sol == NULL )
763 SCIPdispSetData(disp, NULL);
764
765 dispdata = SCIPdispGetData(disp);
766 /* display */
767 if( sol != (SCIP_SOL*)dispdata && isDisplaySol(scip, sol) )
768 {
769 SCIP_HEUR* heur;
770 SCIP_RELAX* relax;
771 char const* infostr;
772
773 switch( SCIPsolGetType(sol) )
774 {
776 infostr = "LP ";
777 break;
779 infostr = "strongbranch";
780 break;
782 infostr = "pseudosol";
783 break;
785 relax = SCIPsolGetRelax(sol);
786 infostr = relax != NULL ? SCIPrelaxGetName(relax) : "relaxation";
787 break;
789 heur = SCIPsolGetHeur(sol);
790 infostr = heur != NULL ? SCIPheurGetName(heur) : "heuristic";
791 break;
793 default:
794 infostr = "unknown";
795 break;
796 }
798
800 }
801 else
802 {
803 /* for memory output, we only use 5 characters because this is easier to decipher */
807 SCIPinfoMessage(scip, file, " ");
808 }
809
810 return SCIP_OKAY;
811}
812
813/** output method of display column to output file stream 'file' for maximal depth */
814static
815SCIP_DECL_DISPOUTPUT(SCIPdispOutputMaxDepth)
816{ /*lint --e{715}*/
817 assert(disp != NULL);
818 assert(scip != NULL);
819
821
823
824 return SCIP_OKAY;
825}
826
827/** output method of display column to output file stream 'file' for plunging depth */
828static
829SCIP_DECL_DISPOUTPUT(SCIPdispOutputPlungeDepth)
830{ /*lint --e{715}*/
831 assert(disp != NULL);
832 assert(scip != NULL);
833
835
837
838 return SCIP_OKAY;
839}
840
841/** output method of display column to output file stream 'file' for number of LP branch candidates */
842static
843SCIP_DECL_DISPOUTPUT(SCIPdispOutputNFrac)
844{ /*lint --e{715}*/
845 assert(disp != NULL);
846 assert(scip != NULL);
847
849
852 else
853 SCIPinfoMessage(scip, file, " - ");
854
855 return SCIP_OKAY;
856}
857
858/** output method of display column to output file stream 'file' for number of external branch candidates */
859static
860SCIP_DECL_DISPOUTPUT(SCIPdispOutputNExternCands)
861{ /*lint --e{715}*/
862 assert(disp != NULL);
863 assert(scip != NULL);
864
866
868
869 return SCIP_OKAY;
870}
871
872/** output method of display column to output file stream 'file' for number of variables */
873static
874SCIP_DECL_DISPOUTPUT(SCIPdispOutputNVars)
875{ /*lint --e{715}*/
876 assert(disp != NULL);
877 assert(scip != NULL);
878
880
882
883 return SCIP_OKAY;
884}
885
886/** output method of display column to output file stream 'file' for number of constraints */
887static
888SCIP_DECL_DISPOUTPUT(SCIPdispOutputNConss)
889{ /*lint --e{715}*/
890 assert(disp != NULL);
891 assert(scip != NULL);
892
894
896
897 return SCIP_OKAY;
898}
899
900/** output method of display column to output file stream 'file' for number of enabled constraints */
901static
902SCIP_DECL_DISPOUTPUT(SCIPdispOutputNCurConss)
903{ /*lint --e{715}*/
904 assert(disp != NULL);
905 assert(scip != NULL);
906
908
910
911 return SCIP_OKAY;
912}
913
914/** output method of display column to output file stream 'file' for number of columns in the LP */
915static
916SCIP_DECL_DISPOUTPUT(SCIPdispOutputNCurCols)
917{ /*lint --e{715}*/
918 assert(disp != NULL);
919 assert(scip != NULL);
920
922
924
925 return SCIP_OKAY;
926}
927
928/** output method of display column to output file stream 'file' for number of rows in the LP */
929static
930SCIP_DECL_DISPOUTPUT(SCIPdispOutputNCurRows)
931{ /*lint --e{715}*/
932 assert(disp != NULL);
933 assert(scip != NULL);
934
936
938
939 return SCIP_OKAY;
940}
941
942/** output method of display column to output file stream 'file' for number of applied cuts */
943static
944SCIP_DECL_DISPOUTPUT(SCIPdispOutputNAppliedCuts)
945{ /*lint --e{715}*/
946 assert(disp != NULL);
947 assert(scip != NULL);
948
950
952
953 return SCIP_OKAY;
954}
955
956/** output method of display column to output file stream 'file' for number of separation rounds */
957static
958SCIP_DECL_DISPOUTPUT(SCIPdispOutputNSepaRounds)
959{ /*lint --e{715}*/
960 assert(disp != NULL);
961 assert(scip != NULL);
962
964
966
967 return SCIP_OKAY;
968}
969
970/** output method of display column to output file stream 'file' for number of current rows in the cut pool */
971static
972SCIP_DECL_DISPOUTPUT(SCIPdispOutputCutPoolSize)
973{ /*lint --e{715}*/
974 assert(disp != NULL);
975 assert(scip != NULL);
976
978
980
981 return SCIP_OKAY;
982}
983
984/** output method of display column to output file stream 'file' for number of conflicts */
985static
986SCIP_DECL_DISPOUTPUT(SCIPdispOutputNConflicts)
987{ /*lint --e{715}*/
988 SCIP_Longint applied;
989
990 assert(disp != NULL);
991 assert(scip != NULL);
992
994
997
998 return SCIP_OKAY;
999}
1000
1001/** output method of display column to output file stream 'file' for number of strong branchings */
1002static
1003SCIP_DECL_DISPOUTPUT(SCIPdispOutputNStrongbranchs)
1004{ /*lint --e{715}*/
1005 assert(disp != NULL);
1006 assert(scip != NULL);
1007
1009
1011
1012 return SCIP_OKAY;
1013}
1014
1015/** output method of display column to output file stream 'file' for pseudo objective value */
1016static
1017SCIP_DECL_DISPOUTPUT(SCIPdispOutputPseudoObjval)
1018{ /*lint --e{715}*/
1019 SCIP_Real pseudoobj;
1020
1021 assert(disp != NULL);
1022 assert(scip != NULL);
1023
1025
1026 pseudoobj = SCIPgetPseudoObjval(scip);
1027
1028 if( SCIPisInfinity(scip, -pseudoobj) )
1029 SCIPinfoMessage(scip, file, " -- ");
1030 else if( SCIPisInfinity(scip, pseudoobj) )
1031 SCIPinfoMessage(scip, file, " cutoff ");
1032 else
1033 SCIPinfoMessage(scip, file, "%13.6e ", pseudoobj);
1034
1035 return SCIP_OKAY;
1036}
1037
1038/** output method of display column to output file stream 'file' for LP objective value */
1039static
1040SCIP_DECL_DISPOUTPUT(SCIPdispOutputLPObjval)
1041{ /*lint --e{715}*/
1042 SCIP_Real lpobj;
1043
1044 assert(disp != NULL);
1045 assert(scip != NULL);
1046
1048
1050 SCIPinfoMessage(scip, file, " -- ");
1051 else
1052 {
1053 lpobj = SCIPgetLPObjval(scip);
1054
1055 if( SCIPisInfinity(scip, -lpobj) )
1056 SCIPinfoMessage(scip, file, " -- ");
1057 else if( SCIPisInfinity(scip, lpobj) )
1058 SCIPinfoMessage(scip, file, " cutoff ");
1059 else
1060 SCIPinfoMessage(scip, file, "%13.6e ", lpobj);
1061 }
1062
1063 return SCIP_OKAY;
1064}
1065
1066/** output method of display column to output file stream 'file' for the current dualbound */
1067static
1068SCIP_DECL_DISPOUTPUT(SCIPdispOutputCurDualbound)
1069{ /*lint --e{715}*/
1070 SCIP_Real curdualbound;
1071
1072 assert(disp != NULL);
1073 assert(scip != NULL);
1074
1076
1077 curdualbound = SCIPgetLocalDualbound(scip);
1078
1079 if( SCIPisInfinity(scip, (SCIP_Real) SCIPgetObjsense(scip) * curdualbound ) )
1080 SCIPinfoMessage(scip, file, " cutoff ");
1081 else if( SCIPisInfinity(scip, -1.0 * (SCIP_Real) SCIPgetObjsense(scip) * curdualbound ) )
1082 SCIPinfoMessage(scip, file, " -- ");
1083 else
1084 SCIPinfoMessage(scip, file, "%13.6e ", curdualbound);
1085
1086 return SCIP_OKAY;
1087}
1088
1089/** output method of display column to output file stream 'file' for estimate of best primal solution w.r.t. original
1090 * problem contained in current subtree */
1091static
1092SCIP_DECL_DISPOUTPUT(SCIPdispOutputLocalOrigEstimate)
1093{ /*lint --e{715}*/
1094 SCIP_Real estimate;
1095
1096 assert(disp != NULL);
1097 assert(scip != NULL);
1098
1100
1101 estimate = SCIPgetLocalOrigEstimate(scip);
1102 if( SCIPisInfinity(scip, REALABS(estimate)) )
1103 SCIPinfoMessage(scip, file, " -- ");
1104 else
1105 SCIPinfoMessage(scip, file, "%13.6e ", estimate);
1106
1107 return SCIP_OKAY;
1108}
1109
1110/** output method of display column to output file stream 'file' for average dualbound */
1111static
1112SCIP_DECL_DISPOUTPUT(SCIPdispOutputAvgDualbound)
1113{ /*lint --e{715}*/
1114 SCIP_Real avgdualbound;
1115
1116 assert(disp != NULL);
1117 assert(scip != NULL);
1118
1120
1121 avgdualbound = SCIPgetAvgDualbound(scip);
1122 if( SCIPisInfinity(scip, REALABS(avgdualbound)) )
1123 SCIPinfoMessage(scip, file, " -- ");
1124 else
1125 SCIPinfoMessage(scip, file, "%13.6e ", avgdualbound);
1126
1127 return SCIP_OKAY;
1128}
1129
1130/** output method of display column to output file stream 'file' for dualbound */
1131static
1132SCIP_DECL_DISPOUTPUT(SCIPdispOutputDualbound)
1133{ /*lint --e{715}*/
1134 SCIP_Real dualbound;
1135
1136 assert(disp != NULL);
1137 assert(scip != NULL);
1138
1140
1141 dualbound = SCIPgetDualbound(scip);
1142
1143 if( SCIPisInfinity(scip, (SCIP_Real) SCIPgetObjsense(scip) * dualbound ) )
1144 SCIPinfoMessage(scip, file, " cutoff ");
1145 else if( SCIPisInfinity(scip, -1.0 * (SCIP_Real) SCIPgetObjsense(scip) * dualbound ) )
1146 SCIPinfoMessage(scip, file, " -- ");
1147 else
1148 SCIPinfoMessage(scip, file, "%13.6e ", dualbound);
1149
1150 return SCIP_OKAY;
1151}
1152
1153/** output method of display column to output file stream 'file' for primalbound */
1154static
1155SCIP_DECL_DISPOUTPUT(SCIPdispOutputPrimalbound)
1156{ /*lint --e{715}*/
1157 SCIP_Real primalbound;
1158
1159 assert(disp != NULL);
1160 assert(scip != NULL);
1161
1163
1164 primalbound = SCIPgetPrimalbound(scip);
1165 if( SCIPisInfinity(scip, REALABS(primalbound)) )
1166 SCIPinfoMessage(scip, file, " -- ");
1167 else
1168 SCIPinfoMessage(scip, file, "%13.6e%c", primalbound, SCIPisPrimalboundSol(scip) ? ' ' : '*');
1169
1170 return SCIP_OKAY;
1171}
1172
1173/** output method of display column to output file stream 'file' for dualbound */
1174static
1175SCIP_DECL_DISPOUTPUT(SCIPdispOutputConcDualbound)
1176{ /*lint --e{715}*/
1177 SCIP_Real dualbound;
1178
1179 assert(disp != NULL);
1180 assert(scip != NULL);
1181
1183
1184 dualbound = SCIPgetConcurrentDualbound(scip);
1185
1186 if( SCIPisInfinity(scip, (SCIP_Real) SCIPgetObjsense(scip) * dualbound ) )
1187 SCIPinfoMessage(scip, file, " cutoff ");
1188 else if( SCIPisInfinity(scip, -1.0 * (SCIP_Real) SCIPgetObjsense(scip) * dualbound ) )
1189 SCIPinfoMessage(scip, file, " -- ");
1190 else
1191 SCIPinfoMessage(scip, file, "%13.6e ", dualbound);
1192
1193 return SCIP_OKAY;
1194}
1195
1196/** output method of display column to output file stream 'file' for primalbound */
1197static
1198SCIP_DECL_DISPOUTPUT(SCIPdispOutputConcPrimalbound)
1199{ /*lint --e{715}*/
1200 SCIP_Real primalbound;
1201
1202 assert(disp != NULL);
1203 assert(scip != NULL);
1204
1206
1207 primalbound = SCIPgetConcurrentPrimalbound(scip);
1208 if( SCIPisInfinity(scip, REALABS(primalbound)) )
1209 SCIPinfoMessage(scip, file, " -- ");
1210 else
1211 SCIPinfoMessage(scip, file, "%13.6e ", primalbound);
1212
1213 return SCIP_OKAY;
1214}
1215
1216/** output method of display column to output file stream 'file' for cutoffbound */
1217static
1218SCIP_DECL_DISPOUTPUT(SCIPdispOutputCutoffbound)
1219{ /*lint --e{715}*/
1220 SCIP_Real cutoffbound;
1221
1222 assert(disp != NULL);
1223 assert(scip != NULL);
1224
1226
1227 cutoffbound = SCIPgetCutoffbound(scip);
1228 if( SCIPisInfinity(scip, REALABS(cutoffbound)) )
1229 SCIPinfoMessage(scip, file, " -- ");
1230 else
1231 SCIPinfoMessage(scip, file, "%13.6e ", SCIPretransformObj(scip, cutoffbound));
1232
1233 return SCIP_OKAY;
1234}
1235
1236/** output method of display column to output file stream 'file' for gap */
1237static
1238SCIP_DECL_DISPOUTPUT(SCIPdispOutputGap)
1239{ /*lint --e{715}*/
1240 SCIP_Real gap;
1241
1242 assert(disp != NULL);
1243 assert(scip != NULL);
1244
1246
1247 gap = SCIPgetGap(scip);
1248
1249 if( SCIPisInfinity(scip, gap) )
1250 SCIPinfoMessage(scip, file, " Inf ");
1251 else if( gap >= 100.00 )
1252 SCIPinfoMessage(scip, file, " Large ");
1253 else
1254 SCIPinfoMessage(scip, file, "%7.2f%%", 100.0*gap);
1255
1256 return SCIP_OKAY;
1257}
1258
1259/** output method of display column to output file stream 'file' for gap */
1260static
1261SCIP_DECL_DISPOUTPUT(SCIPdispOutputConcGap)
1262{ /*lint --e{715}*/
1263 SCIP_Real gap;
1264
1265 assert(disp != NULL);
1266 assert(scip != NULL);
1267
1269
1271
1272 if( SCIPisInfinity(scip, gap) )
1273 SCIPinfoMessage(scip, file, " Inf ");
1274 else if( gap >= 100.00 )
1275 SCIPinfoMessage(scip, file, " Large ");
1276 else
1277 SCIPinfoMessage(scip, file, "%7.2f%%", 100.0*gap);
1278
1279 return SCIP_OKAY;
1280}
1281
1282/** output method of display column to output file stream 'file' for primalgap */
1283static
1284SCIP_DECL_DISPOUTPUT(SCIPdispOutputPrimalgap)
1285{ /*lint --e{715}*/
1286 SCIP_Real primalbound;
1287 SCIP_Real dualbound;
1288 SCIP_Real gap;
1289
1290 assert(disp != NULL);
1291 assert(scip != NULL);
1292
1294
1296 {
1297 /* in case we could not prove whether the problem is unbounded or infeasible, we want to terminate with
1298 * gap = +inf instead of gap = 0
1299 */
1301 gap = SCIPinfinity(scip);
1302 else
1303 gap = 0.0;
1304 }
1305 else
1306 {
1307 primalbound = SCIPgetPrimalbound(scip);
1308 dualbound = SCIPgetDualbound(scip);
1309
1310 if( SCIPisEQ(scip, primalbound, dualbound) )
1311 gap = 0.0;
1312 else if( SCIPisZero(scip, primalbound)
1313 || SCIPisInfinity(scip, REALABS(primalbound))
1314 || primalbound * dualbound < 0.0 )
1315 gap = SCIPinfinity(scip);
1316 else
1317 gap = REALABS((primalbound - dualbound))/REALABS(primalbound + SCIPepsilon(scip));
1318 }
1319
1320 if( SCIPisInfinity(scip, gap) )
1321 SCIPinfoMessage(scip, file, " Inf ");
1322 else if( gap >= 100.00 )
1323 SCIPinfoMessage(scip, file, " Large ");
1324 else
1325 SCIPinfoMessage(scip, file, "%7.2f%%", 100.0*gap);
1326
1327 return SCIP_OKAY;
1328}
1329
1330/** output method of display column to output file stream 'file' for number of found solutions */
1331static
1332SCIP_DECL_DISPOUTPUT(SCIPdispOutputNSols)
1333{ /*lint --e{715}*/
1335
1336 return SCIP_OKAY;
1337}
1338
1339/*
1340 * default display columns specific interface methods
1341 */
1342
1343/** includes the default display columns in SCIP */
1345 SCIP* scip /**< SCIP data structure */
1346 )
1347{
1348 SCIP_DISP* tmpdisp;
1349
1351
1352 /* since the default display columns are always included all at once in this method,
1353 * they should all be included already if the first one is */
1354 if( tmpdisp != NULL )
1355 {
1397
1398 return SCIP_OKAY;
1399 }
1400
1403 dispCopyDefault,
1404 NULL, NULL, NULL, SCIPdispInitsolSolFound, NULL, SCIPdispOutputSolFound, NULL,
1406
1410 dispCopyDefault,
1411 NULL, NULL, NULL, SCIPdispInitsolConcSolFound, SCIPdispExitsolConcSolFound, SCIPdispOutputConcSolFound, NULL,
1415
1419 dispCopyDefault,
1420 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputSolvingTime, NULL,
1422 tmpdisp = SCIPfindDisp(scip, DISP_NAME_TIME);
1424
1428 dispCopyDefault,
1429 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNNodes, NULL,
1431
1435 dispCopyDefault,
1436 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNNodesLeft, NULL,
1438
1439 /* add objective leaves display */
1444
1445 /* add infeasible leaves display */
1450
1454 dispCopyDefault,
1455 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNLPIterations, NULL,
1457
1461 dispCopyDefault,
1462 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNLPAvgIters, NULL,
1464
1468 dispCopyDefault,
1469 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputLPCondition, NULL,
1471
1475 dispCopyDefault,
1476 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputMemUsed, NULL,
1478
1482 dispCopyDefault,
1483 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputConcMemUsed, NULL,
1487
1491 dispCopyDefault,
1492 NULL, NULL, NULL, SCIPdispInitsolSolFound, NULL, SCIPdispOutputMemUsedTotal, NULL,
1494
1498 dispCopyDefault,
1499 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputDepth, NULL,
1501
1505 dispCopyDefault,
1506 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputMaxDepth, NULL,
1508
1512 dispCopyDefault,
1513 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputPlungeDepth, NULL,
1515
1519 dispCopyDefault,
1520 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNFrac, NULL,
1522
1526 dispCopyDefault,
1527 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNExternCands, NULL,
1529
1533 dispCopyDefault,
1534 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNVars, NULL,
1536
1540 dispCopyDefault,
1541 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNConss, NULL,
1543
1547 dispCopyDefault,
1548 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNCurConss, NULL,
1550
1554 dispCopyDefault,
1555 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNCurCols, NULL,
1557
1561 dispCopyDefault,
1562 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNCurRows, NULL,
1564
1568 dispCopyDefault,
1569 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNAppliedCuts, NULL,
1571
1575 dispCopyDefault,
1576 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNSepaRounds, NULL,
1578
1582 dispCopyDefault,
1583 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputCutPoolSize, NULL,
1585
1589 dispCopyDefault,
1590 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNConflicts, NULL,
1592
1596 dispCopyDefault,
1597 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNStrongbranchs, NULL,
1599
1603 dispCopyDefault,
1604 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputPseudoObjval, NULL,
1606
1610 dispCopyDefault,
1611 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputLPObjval, NULL,
1613
1617 dispCopyDefault,
1618 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputCurDualbound, NULL,
1620
1624 dispCopyDefault,
1625 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputLocalOrigEstimate, NULL,
1627
1631 dispCopyDefault,
1632 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputAvgDualbound, NULL,
1634
1638 dispCopyDefault,
1639 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputDualbound, NULL,
1641
1645 dispCopyDefault,
1646 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputPrimalbound, NULL,
1648
1652 dispCopyDefault,
1653 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputConcDualbound, NULL,
1657
1661 dispCopyDefault,
1662 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputConcPrimalbound, NULL,
1666
1670 dispCopyDefault,
1671 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputCutoffbound, NULL,
1673
1677 dispCopyDefault,
1678 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputGap, NULL,
1680
1684 dispCopyDefault,
1685 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputConcGap, NULL,
1689
1693 dispCopyDefault,
1694 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputPrimalgap, NULL,
1696
1700 dispCopyDefault,
1701 NULL, NULL, NULL, NULL, NULL, SCIPdispOutputNSols, NULL,
1703
1704 return SCIP_OKAY;
1705}
1706
SCIP_Real SCIPgetConcurrentDualbound(SCIP *scip)
Definition concurrent.c:318
SCIP_Real SCIPgetConcurrentPrimalbound(SCIP *scip)
Definition concurrent.c:333
SCIP_Real SCIPgetConcurrentGap(SCIP *scip)
Definition concurrent.c:348
helper functions for concurrent scip solvers
#define NULL
Definition def.h:257
#define SCIP_Longint
Definition def.h:150
#define SCIP_INVALID
Definition def.h:187
#define SCIP_Bool
Definition def.h:100
#define SCIP_STRINGEQ(name, reference, retcode)
Definition def.h:454
#define SCIP_Real
Definition def.h:165
#define SCIP_LONGINT_FORMAT
Definition def.h:157
#define REALABS(x)
Definition def.h:191
#define SCIP_CALL(x)
Definition def.h:364
#define DISP_WIDT_LPITERATIONS
#define DISP_WIDT_GAP
#define DISP_WIDT_NINFEASLEAVES
#define DISP_HEAD_MEMTOTAL
#define DISP_WIDT_CURROWS
#define DISP_PRIO_PRIMALGAP
#define DISP_STRI_CONFLICTS
#define DISP_WIDT_LPCOND
#define DISP_WIDT_POOLSIZE
#define DISP_WIDT_CURCONSS
#define DISP_WIDT_SEPAROUNDS
#define DISP_NAME_SOLFOUND
#define DISP_HEAD_DEPTH
#define DISP_NAME_NODESLEFT
#define DISP_PRIO_POOLSIZE
#define DISP_NAME_PRIMALGAP
#define DISP_PRIO_CONCSOLFOUND
#define DISP_DESC_ESTIMATE
#define DISP_POSI_DUALBOUND
#define DISP_POSI_AVGDUALBOUND
#define DISP_PRIO_NNODES
#define DISP_DESC_CURCOLS
#define DISP_POSI_LPAVGITERS
#define DISP_WIDT_CONFLICTS
#define DISP_NAME_CURCONSS
#define DISP_DESC_NNODES
#define DISP_POSI_STRONGBRANCHS
#define DISP_DESC_MEMUSED
#define DISP_WIDT_MAXDEPTH
#define DISP_STRI_NINFEASLEAVES
#define DISP_PRIO_GAP
#define DISP_NAME_TIME
#define DISP_POSI_MEMTOTAL
#define DISP_POSI_CURDUALBOUND
#define DISP_NAME_NOBJLEAVES
#define DISP_DESC_CONCDUALBOUND
#define DISP_HEAD_ESTIMATE
#define DISP_PRIO_ESTIMATE
#define DISP_HEAD_NINFEASLEAVES
#define DISP_PRIO_CUTS
#define DISP_PRIO_LPCOND
#define DISP_PRIO_NOBJLEAVES
#define DISP_NAME_CUTOFFBOUND
#define DISP_POSI_PRIMALGAP
#define DISP_DESC_CURCONSS
#define DISP_NAME_CONCGAP
#define DISP_STRI_STRONGBRANCHS
#define DISP_PRIO_CURCONSS
#define DISP_NAME_CONCPRIMALBOUND
#define DISP_WIDT_PLUNGEDEPTH
#define DISP_PRIO_PRIMALBOUND
#define DISP_WIDT_CONCPRIMALBOUND
#define DISP_POSI_TIME
#define DISP_STRI_POOLSIZE
#define DISP_STRI_MEMTOTAL
#define DISP_POSI_CONCMEMUSED
#define DISP_POSI_NNODES
#define DISP_PRIO_PLUNGEDEPTH
#define DISP_HEAD_NODESLEFT
#define DISP_PRIO_CURDUALBOUND
#define DISP_HEAD_CUTOFFBOUND
#define DISP_WIDT_NSOLS
#define DISP_STRI_TIME
#define DISP_POSI_GAP
#define DISP_DESC_NOBJLEAVES
#define DISP_POSI_CONCSOLFOUND
#define DISP_NAME_CURROWS
#define DISP_STRI_CURCONSS
#define DISP_DESC_LPOBJ
#define DISP_WIDT_PRIMALBOUND
#define DISP_HEAD_CONSS
#define DISP_POSI_CURCOLS
#define DISP_NAME_CONCMEMUSED
#define DISP_NAME_NSOLS
#define DISP_PRIO_MAXDEPTH
#define DISP_HEAD_CURCOLS
#define DISP_PRIO_NODESLEFT
#define DISP_DESC_AVGDUALBOUND
static SCIP_Bool isDisplaySol(SCIP *scip, SCIP_SOL *sol)
#define DISP_STRI_DEPTH
#define DISP_HEAD_CONCPRIMALBOUND
#define DISP_NAME_CONCDUALBOUND
#define DISP_WIDT_MEMTOTAL
#define DISP_NAME_MEMUSED
#define DISP_STRI_NNODES
#define DISP_POSI_CONCPRIMALBOUND
#define DISP_PRIO_CONCDUALBOUND
#define DISP_DESC_CURDUALBOUND
#define DISP_DESC_DUALBOUND
#define DISP_PRIO_SEPAROUNDS
#define DISP_PRIO_TIME
#define DISP_NAME_CUTS
#define DISP_STRI_CURCOLS
#define DISP_WIDT_CONSS
#define DISP_DESC_LPCOND
#define DISP_STRI_NSOLS
#define DISP_HEAD_CONCSOLFOUND
#define DISP_WIDT_NODESLEFT
#define DISP_HEAD_PSEUDOOBJ
#define DISP_HEAD_CONCMEMUSED
#define DISP_NAME_LPAVGITERS
#define DISP_PRIO_LPOBJ
#define DISP_POSI_CONSS
#define DISP_HEAD_NFRAC
#define DISP_DESC_MAXDEPTH
#define DISP_WIDT_NFRAC
#define DISP_POSI_PRIMALBOUND
#define DISP_POSI_NODESLEFT
#define DISP_PRIO_MEMUSED
#define DISP_POSI_NOBJLEAVES
#define DISP_HEAD_NEXTERNCANDS
#define DISP_WIDT_PRIMALGAP
#define DISP_PRIO_CONCPRIMALBOUND
#define DISP_POSI_PLUNGEDEPTH
#define DISP_STRI_LPITERATIONS
#define DISP_STRI_CUTS
#define DISP_POSI_LPOBJ
#define DISP_STRI_LPOBJ
#define DISP_STRI_DUALBOUND
#define DISP_STRI_CONCSOLFOUND
#define DISP_STRI_AVGDUALBOUND
#define DISP_POSI_LPITERATIONS
#define DISP_HEAD_TIME
#define DISP_POSI_NEXTERNCANDS
#define DISP_HEAD_SOLFOUND
#define DISP_WIDT_PSEUDOOBJ
#define DISP_DESC_PRIMALBOUND
#define DISP_POSI_ESTIMATE
#define DISP_HEAD_DUALBOUND
#define DISP_DESC_LPITERATIONS
#define DISP_NAME_NFRAC
#define DISP_STRI_PRIMALGAP
#define DISP_DESC_PSEUDOOBJ
#define DISP_DESC_PRIMALGAP
#define DISP_STRI_CURROWS
#define DISP_WIDT_LPAVGITERS
#define DISP_WIDT_CURDUALBOUND
#define DISP_DESC_CUTOFFBOUND
#define DISP_NAME_DEPTH
#define DISP_NAME_LPOBJ
#define DISP_STRI_LPAVGITERS
#define DISP_HEAD_NNODES
#define DISP_DESC_SOLFOUND
#define DISP_HEAD_LPOBJ
#define DISP_DESC_CONSS
#define DISP_STRI_NOBJLEAVES
#define DISP_NAME_SEPAROUNDS
#define DISP_WIDT_VARS
#define DISP_STRI_PSEUDOOBJ
#define DISP_STRI_CONCPRIMALBOUND
#define DISP_STRI_PRIMALBOUND
#define DISP_DESC_VARS
#define DISP_POSI_POOLSIZE
#define DISP_POSI_CUTOFFBOUND
#define DISP_WIDT_CONCSOLFOUND
#define DISP_DESC_STRONGBRANCHS
#define DISP_HEAD_PRIMALGAP
#define DISP_HEAD_MAXDEPTH
#define DISP_POSI_VARS
#define DISP_WIDT_ESTIMATE
#define DISP_HEAD_CONFLICTS
#define DISP_PRIO_CURROWS
#define DISP_NAME_PRIMALBOUND
#define DISP_WIDT_MEMUSED
#define DISP_STRI_NFRAC
#define DISP_HEAD_CUTS
#define DISP_PRIO_DUALBOUND
#define DISP_DESC_NFRAC
#define DISP_WIDT_CURCOLS
#define DISP_POSI_CONCDUALBOUND
#define DISP_WIDT_CUTOFFBOUND
#define DISP_POSI_SEPAROUNDS
#define DISP_WIDT_LPOBJ
#define DISP_WIDT_CUTS
#define DISP_POSI_NFRAC
#define DISP_POSI_DEPTH
#define DISP_WIDT_TIME
#define DISP_DESC_CONCMEMUSED
#define DISP_HEAD_CURCONSS
#define DISP_PRIO_NINFEASLEAVES
#define DISP_PRIO_NSOLS
#define DISP_HEAD_CURDUALBOUND
#define DISP_NAME_CONSS
#define DISP_STRI_CONCDUALBOUND
#define DISP_PRIO_NFRAC
#define DISP_NAME_CONFLICTS
#define DISP_POSI_NSOLS
#define DISP_HEAD_STRONGBRANCHS
#define DISP_HEAD_CONCGAP
#define DISP_WIDT_CONCDUALBOUND
#define DISP_STRI_PLUNGEDEPTH
#define DISP_DESC_NINFEASLEAVES
#define DISP_WIDT_DUALBOUND
#define DISP_STRI_CONCGAP
#define DISP_NAME_CONCSOLFOUND
#define DISP_NAME_DUALBOUND
#define DISP_DESC_POOLSIZE
#define DISP_POSI_CONFLICTS
#define DISP_HEAD_AVGDUALBOUND
#define DISP_HEAD_MEMUSED
#define DISP_DESC_CONCGAP
#define DISP_HEAD_POOLSIZE
#define DISP_WIDT_CONCGAP
#define DISP_STRI_VARS
#define DISP_PRIO_CONCMEMUSED
#define DISP_STRI_SOLFOUND
#define DISP_NAME_POOLSIZE
#define DISP_WIDT_AVGDUALBOUND
#define DISP_PRIO_CUTOFFBOUND
#define DISP_WIDT_SOLFOUND
#define DISP_NAME_NINFEASLEAVES
#define DISP_POSI_CURCONSS
#define DISP_STRI_MEMUSED
#define DISP_PRIO_NEXTERNCANDS
#define DISP_WIDT_NOBJLEAVES
#define DISP_POSI_NINFEASLEAVES
#define DISP_POSI_LPCOND
#define DISP_HEAD_VARS
#define DISP_DESC_PLUNGEDEPTH
#define DISP_HEAD_LPITERATIONS
#define DISP_HEAD_LPCOND
#define DISP_NAME_MEMTOTAL
#define DISP_DESC_SEPAROUNDS
#define DISP_NAME_MAXDEPTH
#define DISP_DESC_NODESLEFT
#define DISP_PRIO_SOLFOUND
#define DISP_WIDT_DEPTH
#define DISP_DESC_GAP
#define DISP_WIDT_STRONGBRANCHS
#define DISP_NAME_LPCOND
#define DISP_STRI_CURDUALBOUND
#define DISP_WIDT_NNODES
#define DISP_NAME_AVGDUALBOUND
#define DISP_NAME_NEXTERNCANDS
#define DISP_DESC_CUTS
#define DISP_PRIO_DEPTH
#define DISP_DESC_NSOLS
#define DISP_PRIO_PSEUDOOBJ
#define DISP_DESC_CONFLICTS
#define DISP_WIDT_MEMONLY
#define DISP_PRIO_CONSS
#define DISP_DESC_NEXTERNCANDS
#define DISP_PRIO_MEMTOTAL
#define DISP_HEAD_GAP
#define DISP_DESC_CONCSOLFOUND
#define DISP_HEAD_SEPAROUNDS
#define DISP_POSI_SOLFOUND
#define DISP_NAME_NNODES
#define DISP_PRIO_CONFLICTS
#define DISP_POSI_MAXDEPTH
#define DISP_WIDT_CONCMEMUSED
#define DISP_POSI_MEMUSED
#define DISP_NAME_VARS
#define DISP_HEAD_NSOLS
#define DISP_STRI_CONCMEMUSED
#define DISP_STRI_NODESLEFT
#define DISP_DESC_MEMTOTAL
#define DISP_POSI_CUTS
#define DISP_STRI_MAXDEPTH
#define DISP_PRIO_LPITERATIONS
#define DISP_HEAD_PRIMALBOUND
#define DISP_DESC_DEPTH
#define DISP_STRI_SEPAROUNDS
#define DISP_STRI_CONSS
#define DISP_STRI_NEXTERNCANDS
#define DISP_PRIO_STRONGBRANCHS
#define DISP_POSI_CONCGAP
#define DISP_NAME_LPITERATIONS
#define DISP_DESC_CONCPRIMALBOUND
#define DISP_PRIO_AVGDUALBOUND
#define DISP_NAME_STRONGBRANCHS
#define DISP_PRIO_VARS
#define DISP_STRI_CUTOFFBOUND
#define DISP_HEAD_CONCDUALBOUND
#define DISP_STRI_LPCOND
#define DISP_STRI_ESTIMATE
#define DISP_DESC_LPAVGITERS
#define DISP_DESC_TIME
#define DISP_NAME_CURDUALBOUND
#define DISP_NAME_GAP
#define DISP_HEAD_NOBJLEAVES
#define DISP_NAME_PSEUDOOBJ
#define DISP_PRIO_CONCGAP
#define DISP_HEAD_PLUNGEDEPTH
#define DISP_STRI_GAP
#define DISP_WIDT_NEXTERNCANDS
#define DISP_NAME_ESTIMATE
#define DISP_NAME_PLUNGEDEPTH
#define DISP_POSI_PSEUDOOBJ
#define DISP_DESC_CURROWS
#define DISP_HEAD_LPAVGITERS
#define DISP_PRIO_LPAVGITERS
#define DISP_PRIO_CURCOLS
#define DISP_HEAD_CURROWS
#define DISP_POSI_CURROWS
#define DISP_NAME_CURCOLS
default display columns
SCIP_RETCODE SCIPincludeDispDefault(SCIP *scip)
SCIP_STATUS SCIPgetStatus(SCIP *scip)
int SCIPgetNVars(SCIP *scip)
Definition scip_prob.c:2246
int SCIPgetNConss(SCIP *scip)
Definition scip_prob.c:3620
SCIP_OBJSENSE SCIPgetObjsense(SCIP *scip)
Definition scip_prob.c:1400
SCIP_RETCODE SCIPlpiGetRealSolQuality(SCIP_LPI *lpi, SCIP_LPSOLQUALITY qualityindicator, SCIP_Real *quality)
Definition lpi_clp.cpp:2968
SCIP_Real SCIPgetLocalOrigEstimate(SCIP *scip)
Definition scip_prob.c:4120
SCIP_Real SCIPgetLocalDualbound(SCIP *scip)
Definition scip_prob.c:4159
void SCIPinfoMessage(SCIP *scip, FILE *file, const char *formatstr,...)
SCIP_MESSAGEHDLR * SCIPgetMessagehdlr(SCIP *scip)
int SCIPgetNExternBranchCands(SCIP *scip)
int SCIPgetNLPBranchCands(SCIP *scip)
int SCIPgetNPoolCuts(SCIP *scip)
Definition scip_cut.c:395
void SCIPdispLongint(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, SCIP_Longint val, int width)
Definition disp.c:581
void SCIPdispSetData(SCIP_DISP *disp, SCIP_DISPDATA *dispdata)
Definition disp.c:324
const char * SCIPdispGetName(SCIP_DISP *disp)
Definition disp.c:335
SCIP_DISP * SCIPfindDisp(SCIP *scip, const char *name)
Definition scip_disp.c:97
void SCIPdispTime(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, SCIP_Real val, int width)
Definition disp.c:643
void SCIPdispInt(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, int val, int width)
Definition disp.c:627
void SCIPchgDispMode(SCIP_DISP *disp, SCIP_DISPMODE mode)
Definition scip_disp.c:145
SCIP_DISPDATA * SCIPdispGetData(SCIP_DISP *disp)
Definition disp.c:314
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_disp.c:55
char SCIPheurGetDispchar(SCIP_HEUR *heur)
Definition heur.c:1487
const char * SCIPheurGetName(SCIP_HEUR *heur)
Definition heur.c:1467
SCIP_Bool SCIPhasCurrentNodeLP(SCIP *scip)
Definition scip_lp.c:87
SCIP_Real SCIPgetPseudoObjval(SCIP *scip)
Definition scip_lp.c:339
int SCIPgetNLPRows(SCIP *scip)
Definition scip_lp.c:632
SCIP_RETCODE SCIPgetLPI(SCIP *scip, SCIP_LPI **lpi)
Definition scip_lp.c:994
SCIP_LPSOLSTAT SCIPgetLPSolstat(SCIP *scip)
Definition scip_lp.c:174
SCIP_Real SCIPgetLPObjval(SCIP *scip)
Definition scip_lp.c:253
int SCIPgetNLPCols(SCIP *scip)
Definition scip_lp.c:533
SCIP_Longint SCIPgetMemUsed(SCIP *scip)
Definition scip_mem.c:100
#define SCIPfreeBlockMemory(scip, ptr)
Definition scip_mem.h:108
SCIP_Longint SCIPgetMemTotal(SCIP *scip)
Definition scip_mem.c:113
#define SCIPallocBlockMemory(scip, ptr)
Definition scip_mem.h:89
SCIP_SYNCSTORE * SCIPgetSyncstore(SCIP *scip)
const char * SCIPrelaxGetName(SCIP_RELAX *relax)
Definition relax.c:557
SCIP_SOL * SCIPgetBestSol(SCIP *scip)
Definition scip_sol.c:2986
SCIP_HEUR * SCIPgetSolHeur(SCIP *scip, SCIP_SOL *sol)
Definition scip_sol.c:2251
SCIP_RELAX * SCIPsolGetRelax(SCIP_SOL *sol)
Definition sol.c:4346
SCIP_HEUR * SCIPsolGetHeur(SCIP_SOL *sol)
Definition sol.c:4274
SCIP_Bool SCIPsolIsOriginal(SCIP_SOL *sol)
Definition sol.c:4155
SCIP_SOLTYPE SCIPsolGetType(SCIP_SOL *sol)
Definition sol.c:4336
SCIP_Real SCIPgetSolTransObj(SCIP *scip, SCIP_SOL *sol)
Definition scip_sol.c:2003
SCIP_Real SCIPretransformObj(SCIP *scip, SCIP_Real obj)
Definition scip_sol.c:2134
SCIP_Bool SCIPisPrimalboundSol(SCIP *scip)
SCIP_Longint SCIPgetNConflictDualproofsApplied(SCIP *scip)
SCIP_Longint SCIPgetNSolsFound(SCIP *scip)
SCIP_Real SCIPgetPrimalbound(SCIP *scip)
int SCIPgetMaxDepth(SCIP *scip)
SCIP_Real SCIPgetUpperbound(SCIP *scip)
SCIP_Longint SCIPgetNInfeasibleLeaves(SCIP *scip)
SCIP_Real SCIPgetGap(SCIP *scip)
SCIP_Longint SCIPgetNNodes(SCIP *scip)
SCIP_Real SCIPgetDualbound(SCIP *scip)
int SCIPgetNEnabledConss(SCIP *scip)
int SCIPgetNSepaRounds(SCIP *scip)
int SCIPgetNCutsApplied(SCIP *scip)
SCIP_Real SCIPgetLowerbound(SCIP *scip)
SCIP_Longint SCIPgetNTotalNodes(SCIP *scip)
SCIP_Real SCIPgetAvgDualbound(SCIP *scip)
SCIP_Longint SCIPgetNRootLPIterations(SCIP *scip)
SCIP_Real SCIPgetCutoffbound(SCIP *scip)
SCIP_Longint SCIPgetNConflictConssApplied(SCIP *scip)
SCIP_Longint SCIPgetNObjlimLeaves(SCIP *scip)
SCIP_Longint SCIPgetNStrongbranchs(SCIP *scip)
SCIP_Longint SCIPgetNLPIterations(SCIP *scip)
SCIP_Real SCIPgetSolvingTime(SCIP *scip)
SCIP_Real SCIPinfinity(SCIP *scip)
SCIP_Bool SCIPisInfinity(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisFeasLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisFeasLE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisZero(SCIP *scip, SCIP_Real val)
SCIP_Real SCIPepsilon(SCIP *scip)
int SCIPgetNNodesLeft(SCIP *scip)
Definition scip_tree.c:646
int SCIPgetDepth(SCIP *scip)
Definition scip_tree.c:672
int SCIPgetPlungeDepth(SCIP *scip)
Definition scip_tree.c:715
return SCIP_OKAY
int c
static SCIP_SOL * sol
assert(minobj< SCIPgetCutoffbound(scip))
interface methods for specific LP solvers
public methods for displaying runtime statistics
public methods for primal heuristics
public methods for message output
public methods for relaxation handlers
public methods for primal CIP solutions
public methods for branching rule plugins and branching
public methods for concurrent solving mode
public methods for cuts and aggregation rows
public methods for display handler plugins
general public methods
public methods for the LP relaxation, rows and columns
public methods for memory management
public methods for message handling
public methods for numerical tolerances
public methods for global and local (sub)problems
public methods for solutions
public methods for querying solving statistics
public methods for timing
public methods for the branch-and-bound tree
SCIP_Real SCIPsyncstoreGetLastUpperbound(SCIP_SYNCSTORE *syncstore)
Definition syncstore.c:272
SCIP_Longint SCIPsyncstoreGetLastMemTotal(SCIP_SYNCSTORE *syncstore)
Definition syncstore.c:316
int SCIPsyncstoreGetLastNSols(SCIP_SYNCSTORE *syncstore)
Definition syncstore.c:294
the function declarations for the synchronization store
#define SCIP_DECL_DISPOUTPUT(x)
Definition type_disp.h:140
@ SCIP_DISPSTATUS_OFF
Definition type_disp.h:60
@ SCIP_DISPSTATUS_AUTO
Definition type_disp.h:61
#define SCIP_DECL_DISPINITSOL(x)
Definition type_disp.h:120
#define SCIP_DECL_DISPCOPY(x)
Definition type_disp.h:85
struct SCIP_Disp SCIP_DISP
Definition type_disp.h:75
struct SCIP_DispData SCIP_DISPDATA
Definition type_disp.h:76
@ SCIP_DISPMODE_CONCURRENT
Definition type_disp.h:70
@ SCIP_DISPMODE_ALL
Definition type_disp.h:71
struct SCIP_Heur SCIP_HEUR
Definition type_heur.h:76
@ SCIP_LPSOLSTAT_NOTSOLVED
Definition type_lp.h:43
@ SCIP_LPSOLSTAT_OPTIMAL
Definition type_lp.h:44
type definitions for specific LP solvers interface
@ SCIP_LPSOLQUALITY_ESTIMCONDITION
Definition type_lpi.h:101
struct SCIP_LPi SCIP_LPI
Definition type_lpi.h:106
struct SCIP_Relax SCIP_RELAX
Definition type_relax.h:50
@ SCIP_INVALIDCALL
enum SCIP_Retcode SCIP_RETCODE
struct Scip SCIP
Definition type_scip.h:39
@ SCIP_SOLTYPE_HEUR
Definition type_sol.h:65
@ SCIP_SOLTYPE_STRONGBRANCH
Definition type_sol.h:68
@ SCIP_SOLTYPE_RELAX
Definition type_sol.h:66
@ SCIP_SOLTYPE_PSEUDO
Definition type_sol.h:69
@ SCIP_SOLTYPE_LPRELAX
Definition type_sol.h:67
@ SCIP_SOLTYPE_UNKNOWN
Definition type_sol.h:64
struct SCIP_Sol SCIP_SOL
Definition type_sol.h:57
@ SCIP_STATUS_INFORUNBD
Definition type_stat.h:46
struct SCIP_SyncStore SCIP_SYNCSTORE