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-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
    456 sol = SCIPgetBestSol(scip);
    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 {
    470 if( SCIPsolIsOriginal(sol) )
    471 c = '#';
    472 else
    473 c = '*';
    474 }
    475 else
    476 c = SCIPheurGetDispchar(heur);
    477
    478 SCIPinfoMessage(scip, file, "%c", c);
    479
    480 SCIPdispSetData(disp, (SCIP_DISPDATA*)sol);
    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
    761 sol = SCIPgetBestSol(scip);
    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
    799 SCIPdispSetData(disp, (SCIP_DISPDATA*)sol);
    800 }
    801 else
    802 {
    803 /* for memory output, we only use 5 characters because this is easier to decipher */
    804 assert(DISP_WIDT_MEMTOTAL-DISP_WIDT_MEMONLY>0); /*lint !e506*/
    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 {
    1357 assert(SCIPfindDisp(scip, DISP_NAME_TIME) != NULL );
    1358 assert(SCIPfindDisp(scip, DISP_NAME_NNODES) != NULL );
    1362 assert(SCIPfindDisp(scip, DISP_NAME_LPCOND) != NULL );
    1366 assert(SCIPfindDisp(scip, DISP_NAME_DEPTH) != NULL );
    1369 assert(SCIPfindDisp(scip, DISP_NAME_NFRAC) != NULL );
    1371 assert(SCIPfindDisp(scip, DISP_NAME_VARS) != NULL );
    1372 assert(SCIPfindDisp(scip, DISP_NAME_CONSS) != NULL );
    1376 assert(SCIPfindDisp(scip, DISP_NAME_CUTS) != NULL );
    1382 assert(SCIPfindDisp(scip, DISP_NAME_LPOBJ) != NULL );
    1391 assert(SCIPfindDisp(scip, DISP_NAME_GAP) != NULL );
    1394 assert(SCIPfindDisp(scip, DISP_NAME_NSOLS) != NULL );
    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
    1416 assert(SCIPfindDisp(scip, DISP_NAME_TIME) == NULL);
    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
    1530 assert(SCIPfindDisp(scip, DISP_NAME_VARS) == NULL);
    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
    1565 assert(SCIPfindDisp(scip, DISP_NAME_CUTS) == NULL);
    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
    1674 assert(SCIPfindDisp(scip, DISP_NAME_GAP) == NULL);
    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
    Definition: disp_default.c:103
    #define DISP_WIDT_GAP
    Definition: disp_default.c:352
    #define DISP_WIDT_NINFEASLEAVES
    Definition: disp_default.c:395
    #define DISP_HEAD_MEMTOTAL
    Definition: disp_default.c:142
    #define DISP_WIDT_CURROWS
    Definition: disp_default.c:224
    #define DISP_PRIO_PRIMALGAP
    Definition: disp_default.c:369
    #define DISP_STRI_CONFLICTS
    Definition: disp_default.c:259
    #define DISP_WIDT_LPCOND
    Definition: disp_default.c:119
    #define DISP_WIDT_POOLSIZE
    Definition: disp_default.c:248
    #define DISP_WIDT_CURCONSS
    Definition: disp_default.c:208
    #define DISP_WIDT_SEPAROUNDS
    Definition: disp_default.c:240
    #define DISP_NAME_SOLFOUND
    Definition: disp_default.c:59
    #define DISP_HEAD_DEPTH
    Definition: disp_default.c:151
    #define DISP_NAME_NODESLEFT
    Definition: disp_default.c:91
    #define DISP_PRIO_POOLSIZE
    Definition: disp_default.c:249
    #define DISP_NAME_PRIMALGAP
    Definition: disp_default.c:365
    #define DISP_PRIO_CONCSOLFOUND
    Definition: disp_default.c:71
    #define DISP_DESC_ESTIMATE
    Definition: disp_default.c:294
    #define DISP_POSI_DUALBOUND
    Definition: disp_default.c:314
    #define DISP_POSI_AVGDUALBOUND
    Definition: disp_default.c:306
    #define DISP_PRIO_NNODES
    Definition: disp_default.c:87
    #define DISP_DESC_CURCOLS
    Definition: disp_default.c:214
    #define DISP_POSI_LPAVGITERS
    Definition: disp_default.c:113
    #define DISP_WIDT_CONFLICTS
    Definition: disp_default.c:256
    #define DISP_NAME_CURCONSS
    Definition: disp_default.c:205
    #define DISP_DESC_NNODES
    Definition: disp_default.c:84
    #define DISP_POSI_STRONGBRANCHS
    Definition: disp_default.c:266
    #define DISP_DESC_MEMUSED
    Definition: disp_default.c:125
    #define DISP_WIDT_MAXDEPTH
    Definition: disp_default.c:160
    #define DISP_STRI_NINFEASLEAVES
    Definition: disp_default.c:398
    #define DISP_PRIO_GAP
    Definition: disp_default.c:353
    #define DISP_NAME_TIME
    Definition: disp_default.c:75
    #define DISP_POSI_MEMTOTAL
    Definition: disp_default.c:146
    #define DISP_POSI_CURDUALBOUND
    Definition: disp_default.c:290
    #define DISP_NAME_NOBJLEAVES
    Definition: disp_default.c:382
    #define DISP_DESC_CONCDUALBOUND
    Definition: disp_default.c:318
    #define DISP_HEAD_ESTIMATE
    Definition: disp_default.c:295
    #define DISP_PRIO_ESTIMATE
    Definition: disp_default.c:297
    #define DISP_HEAD_NINFEASLEAVES
    Definition: disp_default.c:394
    #define DISP_PRIO_CUTS
    Definition: disp_default.c:233
    #define DISP_PRIO_LPCOND
    Definition: disp_default.c:120
    #define DISP_PRIO_NOBJLEAVES
    Definition: disp_default.c:386
    #define DISP_NAME_CUTOFFBOUND
    Definition: disp_default.c:341
    #define DISP_POSI_PRIMALGAP
    Definition: disp_default.c:370
    #define DISP_DESC_CURCONSS
    Definition: disp_default.c:206
    #define DISP_NAME_CONCGAP
    Definition: disp_default.c:357
    #define DISP_STRI_STRONGBRANCHS
    Definition: disp_default.c:267
    #define DISP_PRIO_CURCONSS
    Definition: disp_default.c:209
    #define DISP_NAME_CONCPRIMALBOUND
    Definition: disp_default.c:333
    #define DISP_WIDT_PLUNGEDEPTH
    Definition: disp_default.c:168
    #define DISP_PRIO_PRIMALBOUND
    Definition: disp_default.c:329
    #define DISP_WIDT_CONCPRIMALBOUND
    Definition: disp_default.c:336
    #define DISP_POSI_TIME
    Definition: disp_default.c:80
    #define DISP_STRI_POOLSIZE
    Definition: disp_default.c:251
    #define DISP_STRI_MEMTOTAL
    Definition: disp_default.c:147
    #define DISP_POSI_CONCMEMUSED
    Definition: disp_default.c:137
    #define DISP_POSI_NNODES
    Definition: disp_default.c:88
    #define DISP_PRIO_PLUNGEDEPTH
    Definition: disp_default.c:169
    #define DISP_HEAD_NODESLEFT
    Definition: disp_default.c:93
    #define DISP_PRIO_CURDUALBOUND
    Definition: disp_default.c:289
    #define DISP_HEAD_CUTOFFBOUND
    Definition: disp_default.c:343
    #define DISP_WIDT_NSOLS
    Definition: disp_default.c:376
    #define DISP_STRI_TIME
    Definition: disp_default.c:81
    #define DISP_POSI_GAP
    Definition: disp_default.c:354
    #define DISP_DESC_NOBJLEAVES
    Definition: disp_default.c:383
    #define DISP_POSI_CONCSOLFOUND
    Definition: disp_default.c:72
    #define DISP_NAME_CURROWS
    Definition: disp_default.c:221
    #define DISP_STRI_CURCONSS
    Definition: disp_default.c:211
    #define DISP_DESC_LPOBJ
    Definition: disp_default.c:278
    #define DISP_WIDT_PRIMALBOUND
    Definition: disp_default.c:328
    #define DISP_HEAD_CONSS
    Definition: disp_default.c:199
    #define DISP_POSI_CURCOLS
    Definition: disp_default.c:218
    #define DISP_NAME_CONCMEMUSED
    Definition: disp_default.c:132
    #define DISP_NAME_NSOLS
    Definition: disp_default.c:373
    #define DISP_PRIO_MAXDEPTH
    Definition: disp_default.c:161
    #define DISP_HEAD_CURCOLS
    Definition: disp_default.c:215
    #define DISP_PRIO_NODESLEFT
    Definition: disp_default.c:95
    #define DISP_DESC_AVGDUALBOUND
    Definition: disp_default.c:302
    static SCIP_Bool isDisplaySol(SCIP *scip, SCIP_SOL *sol)
    Definition: disp_default.c:436
    #define DISP_STRI_DEPTH
    Definition: disp_default.c:155
    #define DISP_HEAD_CONCPRIMALBOUND
    Definition: disp_default.c:335
    #define DISP_NAME_CONCDUALBOUND
    Definition: disp_default.c:317
    #define DISP_WIDT_MEMTOTAL
    Definition: disp_default.c:143
    #define DISP_NAME_MEMUSED
    Definition: disp_default.c:124
    #define DISP_STRI_NNODES
    Definition: disp_default.c:89
    #define DISP_POSI_CONCPRIMALBOUND
    Definition: disp_default.c:338
    #define DISP_PRIO_CONCDUALBOUND
    Definition: disp_default.c:321
    #define DISP_DESC_CURDUALBOUND
    Definition: disp_default.c:286
    #define DISP_DESC_DUALBOUND
    Definition: disp_default.c:310
    #define DISP_PRIO_SEPAROUNDS
    Definition: disp_default.c:241
    #define DISP_PRIO_TIME
    Definition: disp_default.c:79
    #define DISP_NAME_CUTS
    Definition: disp_default.c:229
    #define DISP_STRI_CURCOLS
    Definition: disp_default.c:219
    #define DISP_WIDT_CONSS
    Definition: disp_default.c:200
    #define DISP_DESC_LPCOND
    Definition: disp_default.c:117
    #define DISP_STRI_NSOLS
    Definition: disp_default.c:379
    #define DISP_HEAD_CONCSOLFOUND
    Definition: disp_default.c:69
    #define DISP_WIDT_NODESLEFT
    Definition: disp_default.c:94
    #define DISP_HEAD_PSEUDOOBJ
    Definition: disp_default.c:271
    #define DISP_HEAD_CONCMEMUSED
    Definition: disp_default.c:134
    #define DISP_NAME_LPAVGITERS
    Definition: disp_default.c:108
    #define DISP_PRIO_LPOBJ
    Definition: disp_default.c:281
    #define DISP_POSI_CONSS
    Definition: disp_default.c:202
    #define DISP_HEAD_NFRAC
    Definition: disp_default.c:175
    #define DISP_DESC_MAXDEPTH
    Definition: disp_default.c:158
    #define DISP_WIDT_NFRAC
    Definition: disp_default.c:176
    #define DISP_POSI_PRIMALBOUND
    Definition: disp_default.c:330
    #define DISP_POSI_NODESLEFT
    Definition: disp_default.c:96
    #define DISP_PRIO_MEMUSED
    Definition: disp_default.c:128
    #define DISP_POSI_NOBJLEAVES
    Definition: disp_default.c:387
    #define DISP_HEAD_NEXTERNCANDS
    Definition: disp_default.c:183
    #define DISP_WIDT_PRIMALGAP
    Definition: disp_default.c:368
    #define DISP_PRIO_CONCPRIMALBOUND
    Definition: disp_default.c:337
    #define DISP_POSI_PLUNGEDEPTH
    Definition: disp_default.c:170
    #define DISP_STRI_LPITERATIONS
    Definition: disp_default.c:106
    #define DISP_STRI_CUTS
    Definition: disp_default.c:235
    #define DISP_POSI_LPOBJ
    Definition: disp_default.c:282
    #define DISP_STRI_LPOBJ
    Definition: disp_default.c:283
    #define DISP_STRI_DUALBOUND
    Definition: disp_default.c:315
    #define DISP_STRI_CONCSOLFOUND
    Definition: disp_default.c:73
    #define DISP_STRI_AVGDUALBOUND
    Definition: disp_default.c:307
    #define DISP_POSI_LPITERATIONS
    Definition: disp_default.c:105
    #define DISP_HEAD_TIME
    Definition: disp_default.c:77
    #define DISP_POSI_NEXTERNCANDS
    Definition: disp_default.c:186
    #define DISP_HEAD_SOLFOUND
    Definition: disp_default.c:61
    #define DISP_WIDT_PSEUDOOBJ
    Definition: disp_default.c:272
    #define DISP_DESC_PRIMALBOUND
    Definition: disp_default.c:326
    #define DISP_POSI_ESTIMATE
    Definition: disp_default.c:298
    #define DISP_HEAD_DUALBOUND
    Definition: disp_default.c:311
    #define DISP_DESC_LPITERATIONS
    Definition: disp_default.c:101
    #define DISP_NAME_NFRAC
    Definition: disp_default.c:173
    #define DISP_STRI_PRIMALGAP
    Definition: disp_default.c:371
    #define DISP_DESC_PSEUDOOBJ
    Definition: disp_default.c:270
    #define DISP_DESC_PRIMALGAP
    Definition: disp_default.c:366
    #define DISP_STRI_CURROWS
    Definition: disp_default.c:227
    #define DISP_WIDT_LPAVGITERS
    Definition: disp_default.c:111
    #define DISP_WIDT_CURDUALBOUND
    Definition: disp_default.c:288
    #define DISP_DESC_CUTOFFBOUND
    Definition: disp_default.c:342
    #define DISP_NAME_DEPTH
    Definition: disp_default.c:149
    #define DISP_NAME_LPOBJ
    Definition: disp_default.c:277
    #define DISP_STRI_LPAVGITERS
    Definition: disp_default.c:114
    #define DISP_HEAD_NNODES
    Definition: disp_default.c:85
    #define DISP_DESC_SOLFOUND
    Definition: disp_default.c:60
    #define DISP_HEAD_LPOBJ
    Definition: disp_default.c:279
    #define DISP_DESC_CONSS
    Definition: disp_default.c:198
    #define DISP_STRI_NOBJLEAVES
    Definition: disp_default.c:388
    #define DISP_NAME_SEPAROUNDS
    Definition: disp_default.c:237
    #define DISP_WIDT_VARS
    Definition: disp_default.c:192
    #define DISP_STRI_PSEUDOOBJ
    Definition: disp_default.c:275
    #define DISP_STRI_CONCPRIMALBOUND
    Definition: disp_default.c:339
    #define DISP_STRI_PRIMALBOUND
    Definition: disp_default.c:331
    #define DISP_DESC_VARS
    Definition: disp_default.c:190
    static SCIP_DECL_DISPCOPY(dispCopyDefault)
    Definition: disp_default.c:406
    #define DISP_POSI_POOLSIZE
    Definition: disp_default.c:250
    static SCIP_DECL_DISPOUTPUT(SCIPdispOutputSolFound)
    Definition: disp_default.c:446
    #define DISP_POSI_CUTOFFBOUND
    Definition: disp_default.c:346
    #define DISP_WIDT_CONCSOLFOUND
    Definition: disp_default.c:70
    #define DISP_DESC_STRONGBRANCHS
    Definition: disp_default.c:262
    #define DISP_HEAD_PRIMALGAP
    Definition: disp_default.c:367
    #define DISP_HEAD_MAXDEPTH
    Definition: disp_default.c:159
    #define DISP_POSI_VARS
    Definition: disp_default.c:194
    #define DISP_WIDT_ESTIMATE
    Definition: disp_default.c:296
    #define DISP_HEAD_CONFLICTS
    Definition: disp_default.c:255
    #define DISP_PRIO_CURROWS
    Definition: disp_default.c:225
    #define DISP_NAME_PRIMALBOUND
    Definition: disp_default.c:325
    #define DISP_WIDT_MEMUSED
    Definition: disp_default.c:127
    #define DISP_STRI_NFRAC
    Definition: disp_default.c:179
    #define DISP_HEAD_CUTS
    Definition: disp_default.c:231
    #define DISP_PRIO_DUALBOUND
    Definition: disp_default.c:313
    #define DISP_DESC_NFRAC
    Definition: disp_default.c:174
    #define DISP_WIDT_CURCOLS
    Definition: disp_default.c:216
    static SCIP_DECL_DISPINITSOL(SCIPdispInitsolSolFound)
    Definition: disp_default.c:422
    #define DISP_POSI_CONCDUALBOUND
    Definition: disp_default.c:322
    #define DISP_WIDT_CUTOFFBOUND
    Definition: disp_default.c:344
    #define DISP_POSI_SEPAROUNDS
    Definition: disp_default.c:242
    #define DISP_WIDT_LPOBJ
    Definition: disp_default.c:280
    #define DISP_WIDT_CUTS
    Definition: disp_default.c:232
    #define DISP_POSI_NFRAC
    Definition: disp_default.c:178
    #define DISP_POSI_DEPTH
    Definition: disp_default.c:154
    #define DISP_WIDT_TIME
    Definition: disp_default.c:78
    #define DISP_DESC_CONCMEMUSED
    Definition: disp_default.c:133
    #define DISP_HEAD_CURCONSS
    Definition: disp_default.c:207
    #define DISP_PRIO_NINFEASLEAVES
    Definition: disp_default.c:396
    #define DISP_PRIO_NSOLS
    Definition: disp_default.c:377
    #define DISP_HEAD_CURDUALBOUND
    Definition: disp_default.c:287
    #define DISP_NAME_CONSS
    Definition: disp_default.c:197
    #define DISP_STRI_CONCDUALBOUND
    Definition: disp_default.c:323
    #define DISP_PRIO_NFRAC
    Definition: disp_default.c:177
    #define DISP_NAME_CONFLICTS
    Definition: disp_default.c:253
    #define DISP_POSI_NSOLS
    Definition: disp_default.c:378
    #define DISP_HEAD_STRONGBRANCHS
    Definition: disp_default.c:263
    #define DISP_HEAD_CONCGAP
    Definition: disp_default.c:359
    #define DISP_WIDT_CONCDUALBOUND
    Definition: disp_default.c:320
    #define DISP_STRI_PLUNGEDEPTH
    Definition: disp_default.c:171
    #define DISP_DESC_NINFEASLEAVES
    Definition: disp_default.c:393
    #define DISP_WIDT_DUALBOUND
    Definition: disp_default.c:312
    #define DISP_STRI_CONCGAP
    Definition: disp_default.c:363
    #define DISP_NAME_CONCSOLFOUND
    Definition: disp_default.c:67
    #define DISP_NAME_DUALBOUND
    Definition: disp_default.c:309
    #define DISP_DESC_POOLSIZE
    Definition: disp_default.c:246
    #define DISP_POSI_CONFLICTS
    Definition: disp_default.c:258
    #define DISP_HEAD_AVGDUALBOUND
    Definition: disp_default.c:303
    #define DISP_HEAD_MEMUSED
    Definition: disp_default.c:126
    #define DISP_DESC_CONCGAP
    Definition: disp_default.c:358
    #define DISP_HEAD_POOLSIZE
    Definition: disp_default.c:247
    #define DISP_WIDT_CONCGAP
    Definition: disp_default.c:360
    #define DISP_STRI_VARS
    Definition: disp_default.c:195
    #define DISP_PRIO_CONCMEMUSED
    Definition: disp_default.c:136
    #define DISP_STRI_SOLFOUND
    Definition: disp_default.c:65
    #define DISP_NAME_POOLSIZE
    Definition: disp_default.c:245
    #define DISP_WIDT_AVGDUALBOUND
    Definition: disp_default.c:304
    #define DISP_PRIO_CUTOFFBOUND
    Definition: disp_default.c:345
    #define DISP_WIDT_SOLFOUND
    Definition: disp_default.c:62
    #define DISP_NAME_NINFEASLEAVES
    Definition: disp_default.c:392
    #define DISP_POSI_CURCONSS
    Definition: disp_default.c:210
    #define DISP_STRI_MEMUSED
    Definition: disp_default.c:130
    #define DISP_PRIO_NEXTERNCANDS
    Definition: disp_default.c:185
    #define DISP_WIDT_NOBJLEAVES
    Definition: disp_default.c:385
    #define DISP_POSI_NINFEASLEAVES
    Definition: disp_default.c:397
    #define DISP_POSI_LPCOND
    Definition: disp_default.c:121
    #define DISP_HEAD_VARS
    Definition: disp_default.c:191
    #define DISP_DESC_PLUNGEDEPTH
    Definition: disp_default.c:166
    #define DISP_HEAD_LPITERATIONS
    Definition: disp_default.c:102
    #define DISP_HEAD_LPCOND
    Definition: disp_default.c:118
    #define DISP_NAME_MEMTOTAL
    Definition: disp_default.c:140
    #define DISP_DESC_SEPAROUNDS
    Definition: disp_default.c:238
    #define DISP_NAME_MAXDEPTH
    Definition: disp_default.c:157
    #define DISP_DESC_NODESLEFT
    Definition: disp_default.c:92
    #define DISP_PRIO_SOLFOUND
    Definition: disp_default.c:63
    #define DISP_WIDT_DEPTH
    Definition: disp_default.c:152
    #define DISP_DESC_GAP
    Definition: disp_default.c:350
    #define DISP_WIDT_STRONGBRANCHS
    Definition: disp_default.c:264
    #define DISP_NAME_LPCOND
    Definition: disp_default.c:116
    #define DISP_STRI_CURDUALBOUND
    Definition: disp_default.c:291
    #define DISP_WIDT_NNODES
    Definition: disp_default.c:86
    #define DISP_NAME_AVGDUALBOUND
    Definition: disp_default.c:301
    #define DISP_NAME_NEXTERNCANDS
    Definition: disp_default.c:181
    #define DISP_DESC_CUTS
    Definition: disp_default.c:230
    #define DISP_PRIO_DEPTH
    Definition: disp_default.c:153
    #define DISP_DESC_NSOLS
    Definition: disp_default.c:374
    #define DISP_PRIO_PSEUDOOBJ
    Definition: disp_default.c:273
    #define DISP_DESC_CONFLICTS
    Definition: disp_default.c:254
    #define DISP_WIDT_MEMONLY
    Definition: disp_default.c:144
    #define DISP_PRIO_CONSS
    Definition: disp_default.c:201
    #define DISP_DESC_NEXTERNCANDS
    Definition: disp_default.c:182
    #define DISP_PRIO_MEMTOTAL
    Definition: disp_default.c:145
    #define DISP_HEAD_GAP
    Definition: disp_default.c:351
    #define DISP_DESC_CONCSOLFOUND
    Definition: disp_default.c:68
    #define DISP_HEAD_SEPAROUNDS
    Definition: disp_default.c:239
    #define DISP_POSI_SOLFOUND
    Definition: disp_default.c:64
    #define DISP_NAME_NNODES
    Definition: disp_default.c:83
    #define DISP_PRIO_CONFLICTS
    Definition: disp_default.c:257
    #define DISP_POSI_MAXDEPTH
    Definition: disp_default.c:162
    #define DISP_WIDT_CONCMEMUSED
    Definition: disp_default.c:135
    #define DISP_POSI_MEMUSED
    Definition: disp_default.c:129
    #define DISP_NAME_VARS
    Definition: disp_default.c:189
    #define DISP_HEAD_NSOLS
    Definition: disp_default.c:375
    #define DISP_STRI_CONCMEMUSED
    Definition: disp_default.c:138
    #define DISP_STRI_NODESLEFT
    Definition: disp_default.c:97
    #define DISP_DESC_MEMTOTAL
    Definition: disp_default.c:141
    #define DISP_POSI_CUTS
    Definition: disp_default.c:234
    #define DISP_STRI_MAXDEPTH
    Definition: disp_default.c:163
    #define DISP_PRIO_LPITERATIONS
    Definition: disp_default.c:104
    #define DISP_HEAD_PRIMALBOUND
    Definition: disp_default.c:327
    #define DISP_DESC_DEPTH
    Definition: disp_default.c:150
    #define DISP_STRI_SEPAROUNDS
    Definition: disp_default.c:243
    #define DISP_STRI_CONSS
    Definition: disp_default.c:203
    #define DISP_STRI_NEXTERNCANDS
    Definition: disp_default.c:187
    #define DISP_PRIO_STRONGBRANCHS
    Definition: disp_default.c:265
    #define DISP_POSI_CONCGAP
    Definition: disp_default.c:362
    #define DISP_NAME_LPITERATIONS
    Definition: disp_default.c:100
    #define DISP_DESC_CONCPRIMALBOUND
    Definition: disp_default.c:334
    #define DISP_PRIO_AVGDUALBOUND
    Definition: disp_default.c:305
    #define DISP_NAME_STRONGBRANCHS
    Definition: disp_default.c:261
    #define DISP_PRIO_VARS
    Definition: disp_default.c:193
    #define DISP_STRI_CUTOFFBOUND
    Definition: disp_default.c:347
    #define DISP_HEAD_CONCDUALBOUND
    Definition: disp_default.c:319
    #define DISP_STRI_LPCOND
    Definition: disp_default.c:122
    #define DISP_STRI_ESTIMATE
    Definition: disp_default.c:299
    #define DISP_DESC_LPAVGITERS
    Definition: disp_default.c:109
    #define DISP_DESC_TIME
    Definition: disp_default.c:76
    #define DISP_NAME_CURDUALBOUND
    Definition: disp_default.c:285
    #define DISP_NAME_GAP
    Definition: disp_default.c:349
    #define DISP_HEAD_NOBJLEAVES
    Definition: disp_default.c:384
    #define DISP_NAME_PSEUDOOBJ
    Definition: disp_default.c:269
    #define DISP_PRIO_CONCGAP
    Definition: disp_default.c:361
    #define DISP_HEAD_PLUNGEDEPTH
    Definition: disp_default.c:167
    #define DISP_STRI_GAP
    Definition: disp_default.c:355
    #define DISP_WIDT_NEXTERNCANDS
    Definition: disp_default.c:184
    #define DISP_NAME_ESTIMATE
    Definition: disp_default.c:293
    #define DISP_NAME_PLUNGEDEPTH
    Definition: disp_default.c:165
    #define DISP_POSI_PSEUDOOBJ
    Definition: disp_default.c:274
    #define DISP_DESC_CURROWS
    Definition: disp_default.c:222
    #define DISP_HEAD_LPAVGITERS
    Definition: disp_default.c:110
    #define DISP_PRIO_LPAVGITERS
    Definition: disp_default.c:112
    #define DISP_PRIO_CURCOLS
    Definition: disp_default.c:217
    #define DISP_HEAD_CURROWS
    Definition: disp_default.c:223
    #define DISP_POSI_CURROWS
    Definition: disp_default.c:226
    #define DISP_NAME_CURCOLS
    Definition: disp_default.c:213
    default display columns
    SCIP_RETCODE SCIPincludeDispDefault(SCIP *scip)
    SCIP_STATUS SCIPgetStatus(SCIP *scip)
    Definition: scip_general.c:562
    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,...)
    Definition: scip_message.c:208
    SCIP_MESSAGEHDLR * SCIPgetMessagehdlr(SCIP *scip)
    Definition: scip_message.c:88
    int SCIPgetNExternBranchCands(SCIP *scip)
    Definition: scip_branch.c:551
    int SCIPgetNLPBranchCands(SCIP *scip)
    Definition: scip_branch.c:436
    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)
    Definition: scip_timing.c:378
    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
    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
    @ SCIP_DISPSTATUS_OFF
    Definition: type_disp.h:60
    @ SCIP_DISPSTATUS_AUTO
    Definition: type_disp.h:61
    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
    @ 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
    @ SCIP_OKAY
    Definition: type_retcode.h:42
    @ SCIP_INVALIDCALL
    Definition: type_retcode.h:51
    enum SCIP_Retcode SCIP_RETCODE
    Definition: type_retcode.h:63
    @ 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
    @ SCIP_STATUS_INFORUNBD
    Definition: type_stat.h:46