Scippy

    SCIP

    Solving Constraint Integer Programs

    Detailed Description

    methods for creating output for visualization tools (VBC, BAK)

    Author
    Tobias Achterberg
    Marc Pfetsch

    Output can be generated for the following visualization tools:

    • VBCTOOL - a graphical interface for Visualization of Branch Cut algorithms
      See VBCTOOL.
    • BAK: Branch-and-bound Analysis Kit
      BAK is available through COIN-OR, see BAK. A description is available as well.

    Definition in file visual.c.

    #include <stdio.h>
    #include <assert.h>
    #include "blockmemshell/memory.h"
    #include "scip/scip.h"
    #include "scip/set.h"
    #include "scip/stat.h"
    #include "scip/clock.h"
    #include "scip/var.h"
    #include "scip/tree.h"
    #include "scip/visual.h"
    #include "scip/struct_visual.h"

    Go to the source code of this file.

    Functions

    static void getBranchInfo (SCIP_NODE *node, SCIP_VAR **var, SCIP_BOUNDTYPE *boundtype, SCIP_Real *bound)
     
    SCIP_RETCODE SCIPvisualCreate (SCIP_VISUAL **visual, SCIP_MESSAGEHDLR *messagehdlr)
     
    void SCIPvisualFree (SCIP_VISUAL **visual)
     
    SCIP_RETCODE SCIPvisualInit (SCIP_VISUAL *visual, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr)
     
    void SCIPvisualExit (SCIP_VISUAL *visual, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr)
     
    static void printTime (SCIP_VISUAL *visual, SCIP_STAT *stat, SCIP_Bool vbc)
     
    SCIP_RETCODE SCIPvisualNewChild (SCIP_VISUAL *visual, SCIP_SET *set, SCIP_STAT *stat, SCIP_NODE *node)
     
    SCIP_RETCODE SCIPvisualUpdateChild (SCIP_VISUAL *visual, SCIP_SET *set, SCIP_STAT *stat, SCIP_NODE *node)
     
    static void vbcSetColor (SCIP_VISUAL *visual, SCIP_STAT *stat, SCIP_NODE *node, SCIP_VBCCOLOR color)
     
    void SCIPvisualSolvedNode (SCIP_VISUAL *visual, SCIP_SET *set, SCIP_STAT *stat, SCIP_NODE *node)
     
    void SCIPvisualCutoffNode (SCIP_VISUAL *visual, SCIP_SET *set, SCIP_STAT *stat, SCIP_NODE *node, SCIP_Bool infeasible)
     
    void SCIPvisualFoundConflict (SCIP_VISUAL *visual, SCIP_STAT *stat, SCIP_NODE *node)
     
    void SCIPvisualMarkedRepropagateNode (SCIP_VISUAL *visual, SCIP_STAT *stat, SCIP_NODE *node)
     
    void SCIPvisualRepropagatedNode (SCIP_VISUAL *visual, SCIP_STAT *stat, SCIP_NODE *node)
     
    void SCIPvisualFoundSolution (SCIP_VISUAL *visual, SCIP_SET *set, SCIP_STAT *stat, SCIP_NODE *node, SCIP_Bool bettersol, SCIP_SOL *sol)
     
    void SCIPvisualLowerbound (SCIP_VISUAL *visual, SCIP_SET *set, SCIP_STAT *stat, SCIP_Real lowerbound)
     
    void SCIPvisualUpperbound (SCIP_VISUAL *visual, SCIP_SET *set, SCIP_STAT *stat, SCIP_Real upperbound)
     

    Function Documentation

    ◆ getBranchInfo()

    static void getBranchInfo ( SCIP_NODE node,
    SCIP_VAR **  var,
    SCIP_BOUNDTYPE boundtype,
    SCIP_Real bound 
    )
    static

    returns the branching variable of the node, or NULL

    Parameters
    nodenode
    varpointer to store the branching variable
    boundtypepointer to store the branching type: lower or upper bound
    boundpointer to store the new bound of the branching variable

    Definition at line 58 of file visual.c.

    References SCIP_DomChgBound::boundchgs, SCIP_BoundChg::boundtype, SCIP_Node::domchg, SCIP_DomChg::domchgbound, SCIP_DomChgBound::nboundchgs, SCIP_BoundChg::newbound, NULL, SCIP_BOUNDTYPE_LOWER, and SCIP_BoundChg::var.

    Referenced by SCIPvisualCutoffNode(), SCIPvisualFoundSolution(), SCIPvisualNewChild(), SCIPvisualSolvedNode(), and SCIPvisualUpdateChild().

    ◆ SCIPvisualCreate()

    SCIP_RETCODE SCIPvisualCreate ( SCIP_VISUAL **  visual,
    SCIP_MESSAGEHDLR messagehdlr 
    )

    creates visualization data structure

    Parameters
    visualpointer to store visualization information
    messagehdlrmessage handler

    Definition at line 85 of file visual.c.

    References BMSallocMemory, FALSE, NULL, SCIP_ALLOC, SCIP_INVALID, SCIP_OKAY, and SCIP_VBCCOLOR_NONE.

    Referenced by SCIPstatCreate().

    ◆ SCIPvisualFree()

    void SCIPvisualFree ( SCIP_VISUAL **  visual)

    frees visualization data structure

    Parameters
    visualpointer to store visualization information

    Definition at line 106 of file visual.c.

    References BMSfreeMemory, and NULL.

    Referenced by SCIPstatFree().

    ◆ SCIPvisualInit()

    SCIP_RETCODE SCIPvisualInit ( SCIP_VISUAL visual,
    BMS_BLKMEM blkmem,
    SCIP_SET set,
    SCIP_MESSAGEHDLR messagehdlr 
    )

    initializes visualization information and creates a file for visualization output

    Parameters
    visualvisualization information
    blkmemblock memory
    setglobal SCIP settings
    messagehdlrmessage handler

    Definition at line 120 of file visual.c.

    References SCIP_Visual::bakfile, SCIP_Visual::lastcolor, SCIP_Visual::lastlowerbound, SCIP_Visual::lastnode, SCIP_Visual::messagehdlr, SCIP_Visual::nodenum, NULL, SCIP_CALL, SCIP_FILECREATEERROR, SCIP_HASHSIZE_VBC, SCIP_OKAY, SCIP_VBCCOLOR_NONE, SCIP_VERBLEVEL_NORMAL, SCIPerrorMessage, SCIPhashmapCreate(), SCIPmessageFPrintInfo(), SCIPmessagePrintVerbInfo(), SCIPprintSysError(), SCIPsetInfinity(), SCIP_Visual::timestep, SCIP_Visual::userealtime, and SCIP_Visual::vbcfile.

    Referenced by initSolve().

    ◆ SCIPvisualExit()

    void SCIPvisualExit ( SCIP_VISUAL visual,
    SCIP_SET set,
    SCIP_MESSAGEHDLR messagehdlr 
    )

    closes the visualization output file

    Parameters
    visualvisualization information
    setglobal SCIP settings
    messagehdlrmessage handler

    Definition at line 189 of file visual.c.

    References SCIP_Visual::bakfile, SCIP_Visual::nodenum, NULL, SCIP_VERBLEVEL_FULL, SCIPhashmapFree(), SCIPmessagePrintVerbInfo(), and SCIP_Visual::vbcfile.

    Referenced by freeReoptSolve(), and freeSolve().

    ◆ printTime()

    static void printTime ( SCIP_VISUAL visual,
    SCIP_STAT stat,
    SCIP_Bool  vbc 
    )
    static

    prints current solution time to visualization output file

    Parameters
    visualvisualization information
    statproblem statistics
    vbcwhether we use vbc output (bak otherwise)

    Definition at line 220 of file visual.c.

    References SCIP_Visual::bakfile, SCIP_Visual::messagehdlr, NULL, SCIP_Longint, SCIP_Real, SCIPclockGetTime(), SCIPmessageFPrintInfo(), SCIP_Stat::solvingtime, SCIP_Visual::timestep, SCIP_Visual::userealtime, and SCIP_Visual::vbcfile.

    Referenced by SCIPvisualCutoffNode(), SCIPvisualFoundSolution(), SCIPvisualLowerbound(), SCIPvisualNewChild(), SCIPvisualSolvedNode(), SCIPvisualUpdateChild(), SCIPvisualUpperbound(), and vbcSetColor().

    ◆ SCIPvisualNewChild()

    ◆ SCIPvisualUpdateChild()

    ◆ vbcSetColor()

    static void vbcSetColor ( SCIP_VISUAL visual,
    SCIP_STAT stat,
    SCIP_NODE node,
    SCIP_VBCCOLOR  color 
    )
    static

    changes the color of the node to the given color

    Parameters
    visualvisualization information
    statproblem statistics
    nodenode to change color for
    colornew color of node, or SCIP_VBCCOLOR_NONE

    Definition at line 449 of file visual.c.

    References SCIP_Visual::lastcolor, SCIP_Visual::lastnode, SCIP_Visual::messagehdlr, SCIP_Visual::nodenum, NULL, printTime(), SCIP_VBCCOLOR_NONE, SCIPhashmapGetImageInt(), SCIPmessageFPrintInfo(), TRUE, and SCIP_Visual::vbcfile.

    Referenced by SCIPvisualCutoffNode(), SCIPvisualFoundConflict(), SCIPvisualFoundSolution(), SCIPvisualMarkedRepropagateNode(), SCIPvisualRepropagatedNode(), and SCIPvisualSolvedNode().

    ◆ SCIPvisualSolvedNode()

    void SCIPvisualSolvedNode ( SCIP_VISUAL visual,
    SCIP_SET set,
    SCIP_STAT stat,
    SCIP_NODE node 
    )

    ◆ SCIPvisualCutoffNode()

    void SCIPvisualCutoffNode ( SCIP_VISUAL visual,
    SCIP_SET set,
    SCIP_STAT stat,
    SCIP_NODE node,
    SCIP_Bool  infeasible 
    )

    changes the color of the node to the color of cutoff nodes

    Parameters
    visualvisualization information
    setglobal SCIP settings
    statproblem statistics
    nodenode, that was cut off
    infeasiblewhether the node is infeasible (otherwise exceeded the cutoff bound)

    Definition at line 533 of file visual.c.

    References SCIP_Visual::bakfile, FALSE, getBranchInfo(), SCIP_Visual::messagehdlr, SCIP_Stat::nnodes, SCIP_Visual::nodenum, NULL, SCIP_Node::parent, printTime(), SCIP_BOUNDTYPE_LOWER, SCIP_LONGINT_FORMAT, SCIP_NODETYPE_PROBINGNODE, SCIP_Real, SCIP_VBCCOLOR_CUTOFF, SCIPhashmapGetImageInt(), SCIPmessageFPrintInfo(), SCIPnodeGetDepth(), SCIPnodeGetLowerbound(), SCIPnodeGetType(), SCIPretransformObj(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbLocal(), TRUE, SCIP_Visual::vbcfile, and vbcSetColor().

    Referenced by SCIPnodeCutoff(), SCIPnodeFocus(), SCIPnodepqBound(), and SCIPsolveCIP().

    ◆ SCIPvisualFoundConflict()

    void SCIPvisualFoundConflict ( SCIP_VISUAL visual,
    SCIP_STAT stat,
    SCIP_NODE node 
    )

    changes the color of the node to the color of nodes where a conflict constraint was found

    Parameters
    visualvisualization information
    statproblem statistics
    nodenode, where the conflict was found

    Definition at line 612 of file visual.c.

    References NULL, SCIP_NODETYPE_PROBINGNODE, SCIP_VBCCOLOR_CONFLICT, SCIPnodeGetType(), and vbcSetColor().

    Referenced by SCIPconflictFlushConss().

    ◆ SCIPvisualMarkedRepropagateNode()

    void SCIPvisualMarkedRepropagateNode ( SCIP_VISUAL visual,
    SCIP_STAT stat,
    SCIP_NODE node 
    )

    changes the color of the node to the color of nodes that were marked to be repropagated

    Parameters
    visualvisualization information
    statproblem statistics
    nodenode, that was marked to be repropagated

    Definition at line 630 of file visual.c.

    References NULL, SCIP_NODETYPE_PROBINGNODE, SCIP_VBCCOLOR_MARKREPROP, SCIPnodeGetNumber(), SCIPnodeGetType(), and vbcSetColor().

    Referenced by SCIPnodePropagateAgain().

    ◆ SCIPvisualRepropagatedNode()

    void SCIPvisualRepropagatedNode ( SCIP_VISUAL visual,
    SCIP_STAT stat,
    SCIP_NODE node 
    )

    changes the color of the node to the color of repropagated nodes

    Parameters
    visualvisualization information
    statproblem statistics
    nodenode, that was repropagated

    Definition at line 651 of file visual.c.

    References NULL, SCIP_NODETYPE_PROBINGNODE, SCIP_VBCCOLOR_REPROP, SCIPnodeGetType(), and vbcSetColor().

    Referenced by nodeRepropagate().

    ◆ SCIPvisualFoundSolution()

    void SCIPvisualFoundSolution ( SCIP_VISUAL visual,
    SCIP_SET set,
    SCIP_STAT stat,
    SCIP_NODE node,
    SCIP_Bool  bettersol,
    SCIP_SOL sol 
    )

    changes the color of the node to the color of nodes with a primal solution

    Parameters
    visualvisualization information
    setglobal SCIP settings
    statproblem statistics
    nodenode where the solution was found, or NULL
    bettersolthe solution was better than the previous ones
    solsolution that has been found

    Definition at line 669 of file visual.c.

    References SCIP_Visual::bakfile, FALSE, getBranchInfo(), SCIP_Visual::messagehdlr, SCIP_Visual::nodenum, NULL, SCIP_Node::parent, printTime(), SCIP_BOUNDTYPE_LOWER, SCIP_NODETYPE_PROBINGNODE, SCIP_Real, SCIP_VBCCOLOR_SOLUTION, SCIPgetSolOrigObj(), SCIPgetSolTransObj(), SCIPhashmapGetImageInt(), SCIPmessageFPrintInfo(), SCIPnodeGetParent(), SCIPnodeGetType(), SCIPsolGetHeur(), TRUE, SCIP_Visual::vbcfile, and vbcSetColor().

    Referenced by primalAddSol().

    ◆ SCIPvisualLowerbound()

    void SCIPvisualLowerbound ( SCIP_VISUAL visual,
    SCIP_SET set,
    SCIP_STAT stat,
    SCIP_Real  lowerbound 
    )

    outputs a new global lower bound to the visualization output file

    Parameters
    visualvisualization information
    setglobal SCIP settings
    statproblem statistics
    lowerboundnew lower bound

    Definition at line 768 of file visual.c.

    References SCIP_Visual::lastlowerbound, SCIP_Visual::messagehdlr, NULL, printTime(), SCIP_OBJSENSE_MINIMIZE, SCIPgetObjsense(), SCIPmessageFPrintInfo(), SCIPretransformObj(), SCIPsetIsGT(), SCIPsetIsInfinity(), TRUE, and SCIP_Visual::vbcfile.

    Referenced by SCIPnodeUpdateLowerbound().

    ◆ SCIPvisualUpperbound()

    void SCIPvisualUpperbound ( SCIP_VISUAL visual,
    SCIP_SET set,
    SCIP_STAT stat,
    SCIP_Real  upperbound 
    )

    outputs a new global upper bound to the visualization output file

    Parameters
    visualvisualization information
    setglobal SCIP settings
    statproblem statistics
    upperboundnew upper bound

    Definition at line 805 of file visual.c.

    References SCIP_Visual::messagehdlr, NULL, printTime(), SCIP_OBJSENSE_MINIMIZE, SCIPgetObjsense(), SCIPmessageFPrintInfo(), SCIPretransformObj(), TRUE, and SCIP_Visual::vbcfile.

    Referenced by primalSetUpperbound(), and primalSetUpperboundExact().