Scippy

    SCIP

    Solving Constraint Integer Programs

    Detailed Description

    methods for variable pricers

    Author
    Tobias Achterberg
    Timo Berthold

    Definition in file pricer.c.

    #include <assert.h>
    #include <string.h>
    #include "scip/def.h"
    #include "scip/set.h"
    #include "scip/clock.h"
    #include "scip/paramset.h"
    #include "scip/lp.h"
    #include "scip/prob.h"
    #include "scip/pricestore.h"
    #include "scip/scip.h"
    #include "scip/pricer.h"
    #include "scip/pub_message.h"
    #include "scip/pub_misc.h"
    #include "scip/struct_pricer.h"

    Go to the source code of this file.

    Functions

     SCIP_DECL_SORTPTRCOMP (SCIPpricerComp)
     
     SCIP_DECL_SORTPTRCOMP (SCIPpricerCompName)
     
    static SCIP_DECL_PARAMCHGD (paramChgdPricerPriority)
     
    SCIP_RETCODE SCIPpricerCopyInclude (SCIP_PRICER *pricer, SCIP_SET *set, SCIP_Bool *valid)
     
    static SCIP_RETCODE doPricerCreate (SCIP_PRICER **pricer, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int priority, SCIP_Bool delay, SCIP_DECL_PRICERCOPY((*pricercopy)), SCIP_DECL_PRICERFREE((*pricerfree)), SCIP_DECL_PRICERINIT((*pricerinit)), SCIP_DECL_PRICEREXIT((*pricerexit)), SCIP_DECL_PRICERINITSOL((*pricerinitsol)), SCIP_DECL_PRICEREXITSOL((*pricerexitsol)), SCIP_DECL_PRICERREDCOST((*pricerredcost)), SCIP_DECL_PRICERFARKAS((*pricerfarkas)), SCIP_PRICERDATA *pricerdata)
     
    SCIP_RETCODE SCIPpricerCreate (SCIP_PRICER **pricer, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int priority, SCIP_Bool delay, SCIP_DECL_PRICERCOPY((*pricercopy)), SCIP_DECL_PRICERFREE((*pricerfree)), SCIP_DECL_PRICERINIT((*pricerinit)), SCIP_DECL_PRICEREXIT((*pricerexit)), SCIP_DECL_PRICERINITSOL((*pricerinitsol)), SCIP_DECL_PRICEREXITSOL((*pricerexitsol)), SCIP_DECL_PRICERREDCOST((*pricerredcost)), SCIP_DECL_PRICERFARKAS((*pricerfarkas)), SCIP_PRICERDATA *pricerdata)
     
    SCIP_RETCODE SCIPpricerFree (SCIP_PRICER **pricer, SCIP_SET *set)
     
    SCIP_RETCODE SCIPpricerInit (SCIP_PRICER *pricer, SCIP_SET *set)
     
    SCIP_RETCODE SCIPpricerExit (SCIP_PRICER *pricer, SCIP_SET *set)
     
    SCIP_RETCODE SCIPpricerInitsol (SCIP_PRICER *pricer, SCIP_SET *set)
     
    SCIP_RETCODE SCIPpricerExitsol (SCIP_PRICER *pricer, SCIP_SET *set)
     
    SCIP_RETCODE SCIPpricerActivate (SCIP_PRICER *pricer, SCIP_SET *set)
     
    SCIP_RETCODE SCIPpricerDeactivate (SCIP_PRICER *pricer, SCIP_SET *set)
     
    SCIP_RETCODE SCIPpricerRedcost (SCIP_PRICER *pricer, SCIP_SET *set, SCIP_PROB *prob, SCIP_Real *lowerbound, SCIP_Bool *stopearly, SCIP_RESULT *result)
     
    SCIP_RETCODE SCIPpricerFarkas (SCIP_PRICER *pricer, SCIP_SET *set, SCIP_PROB *prob, SCIP_RESULT *result)
     
    SCIP_RETCODE SCIPpricerExec (SCIP_PRICER *pricer, SCIP_SET *set, SCIP_PROB *prob, SCIP_LP *lp, SCIP_PRICESTORE *pricestore, SCIP_Real *lowerbound, SCIP_Bool *stopearly, SCIP_RESULT *result)
     
    SCIP_PRICERDATASCIPpricerGetData (SCIP_PRICER *pricer)
     
    void SCIPpricerSetData (SCIP_PRICER *pricer, SCIP_PRICERDATA *pricerdata)
     
    void SCIPpricerSetCopy (SCIP_PRICER *pricer, SCIP_DECL_PRICERCOPY((*pricercopy)))
     
    void SCIPpricerSetFree (SCIP_PRICER *pricer, SCIP_DECL_PRICERFREE((*pricerfree)))
     
    void SCIPpricerSetInit (SCIP_PRICER *pricer, SCIP_DECL_PRICERINIT((*pricerinit)))
     
    void SCIPpricerSetExit (SCIP_PRICER *pricer, SCIP_DECL_PRICEREXIT((*pricerexit)))
     
    void SCIPpricerSetInitsol (SCIP_PRICER *pricer, SCIP_DECL_PRICERINITSOL((*pricerinitsol)))
     
    void SCIPpricerSetExitsol (SCIP_PRICER *pricer, SCIP_DECL_PRICEREXITSOL((*pricerexitsol)))
     
    void SCIPpricerMarkExact (SCIP_PRICER *pricer)
     
    const char * SCIPpricerGetName (SCIP_PRICER *pricer)
     
    const char * SCIPpricerGetDesc (SCIP_PRICER *pricer)
     
    int SCIPpricerGetPriority (SCIP_PRICER *pricer)
     
    void SCIPpricerSetPriority (SCIP_PRICER *pricer, SCIP_SET *set, int priority)
     
    int SCIPpricerGetNCalls (SCIP_PRICER *pricer)
     
    int SCIPpricerGetNVarsFound (SCIP_PRICER *pricer)
     
    SCIP_Real SCIPpricerGetSetupTime (SCIP_PRICER *pricer)
     
    SCIP_Real SCIPpricerGetTime (SCIP_PRICER *pricer)
     
    void SCIPpricerEnableOrDisableClocks (SCIP_PRICER *pricer, SCIP_Bool enable)
     
    SCIP_Bool SCIPpricerIsActive (SCIP_PRICER *pricer)
     
    SCIP_Bool SCIPpricerIsDelayed (SCIP_PRICER *pricer)
     
    SCIP_Bool SCIPpricerIsInitialized (SCIP_PRICER *pricer)
     

    Function Documentation

    ◆ SCIP_DECL_PARAMCHGD()

    static SCIP_DECL_PARAMCHGD ( paramChgdPricerPriority  )
    static

    method to call, when the priority of a pricer was changed

    Definition at line 73 of file pricer.c.

    References NULL, SCIP_CALL, SCIP_OKAY, SCIPparamGetData(), SCIPparamGetInt(), and SCIPsetPricerPriority().

    ◆ SCIPpricerCopyInclude()

    SCIP_RETCODE SCIPpricerCopyInclude ( SCIP_PRICER pricer,
    SCIP_SET set,
    SCIP_Bool valid 
    )

    copies the given pricer to a new scip

    Parameters
    pricerpricer
    setSCIP_SET of SCIP to copy to
    validwas the copying process valid?

    Definition at line 87 of file pricer.c.

    References NULL, SCIP_CALL, SCIP_OKAY, SCIPpricerGetName(), and SCIPsetDebugMsg.

    Referenced by SCIPsetCopyPlugins().

    ◆ doPricerCreate()

    static SCIP_RETCODE doPricerCreate ( SCIP_PRICER **  pricer,
    SCIP_SET set,
    SCIP_MESSAGEHDLR messagehdlr,
    BMS_BLKMEM blkmem,
    const char *  name,
    const char *  desc,
    int  priority,
    SCIP_Bool  delay,
    SCIP_DECL_PRICERCOPY((*pricercopy))  ,
    SCIP_DECL_PRICERFREE((*pricerfree))  ,
    SCIP_DECL_PRICERINIT((*pricerinit))  ,
    SCIP_DECL_PRICEREXIT((*pricerexit))  ,
    SCIP_DECL_PRICERINITSOL((*pricerinitsol))  ,
    SCIP_DECL_PRICEREXITSOL((*pricerexitsol))  ,
    SCIP_DECL_PRICERREDCOST((*pricerredcost))  ,
    SCIP_DECL_PRICERFARKAS((*pricerfarkas))  ,
    SCIP_PRICERDATA pricerdata 
    )
    static

    internal method creating a variable pricer

    Parameters
    pricerpointer to variable pricer data structure
    setglobal SCIP settings
    messagehdlrmessage handler
    blkmemblock memory for parameter settings
    namename of variable pricer
    descdescription of variable pricer
    prioritypriority of the variable pricer
    delayshould the pricer be delayed until no other pricers or already existing problem variables with negative reduced costs are found
    pricerdatavariable pricer data

    Definition at line 108 of file pricer.c.

    References BMSallocMemory, BMSclearMemory, BMSduplicateMemoryArray, FALSE, NULL, paramname, SCIP_ALLOC, SCIP_CALL, SCIP_CLOCKTYPE_DEFAULT, SCIP_MAXSTRLEN, SCIP_OKAY, SCIPclockCreate(), SCIPsetAddIntParam(), and SCIPsnprintf().

    Referenced by SCIPpricerCreate().

    ◆ SCIPpricerCreate()

    SCIP_RETCODE SCIPpricerCreate ( SCIP_PRICER **  pricer,
    SCIP_SET set,
    SCIP_MESSAGEHDLR messagehdlr,
    BMS_BLKMEM blkmem,
    const char *  name,
    const char *  desc,
    int  priority,
    SCIP_Bool  delay,
    SCIP_DECL_PRICERCOPY((*pricercopy))  ,
    SCIP_DECL_PRICERFREE((*pricerfree))  ,
    SCIP_DECL_PRICERINIT((*pricerinit))  ,
    SCIP_DECL_PRICEREXIT((*pricerexit))  ,
    SCIP_DECL_PRICERINITSOL((*pricerinitsol))  ,
    SCIP_DECL_PRICEREXITSOL((*pricerexitsol))  ,
    SCIP_DECL_PRICERREDCOST((*pricerredcost))  ,
    SCIP_DECL_PRICERFARKAS((*pricerfarkas))  ,
    SCIP_PRICERDATA pricerdata 
    )

    creates a variable pricer To use the variable pricer for solving a problem, it first has to be activated with a call to SCIPactivatePricer().

    Parameters
    pricerpointer to variable pricer data structure
    setglobal SCIP settings
    messagehdlrmessage handler
    blkmemblock memory for parameter settings
    namename of variable pricer
    descdescription of variable pricer
    prioritypriority of the variable pricer
    delayshould the pricer be delayed until no other pricers or already existing problem variables with negative reduced costs are found
    pricerdatavariable pricer data

    Definition at line 174 of file pricer.c.

    References doPricerCreate(), NULL, SCIP_CALL_FINALLY, SCIP_OKAY, and SCIPpricerFree().

    Referenced by SCIPincludePricer(), and SCIPincludePricerBasic().

    ◆ SCIPpricerFree()

    SCIP_RETCODE SCIPpricerFree ( SCIP_PRICER **  pricer,
    SCIP_SET set 
    )

    calls destructor and frees memory of variable pricer

    Parameters
    pricerpointer to variable pricer data structure
    setglobal SCIP settings

    Definition at line 208 of file pricer.c.

    References BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, SCIP_CALL, SCIP_OKAY, and SCIPclockFree().

    Referenced by SCIPpricerCreate().

    ◆ SCIPpricerInit()

    SCIP_RETCODE SCIPpricerInit ( SCIP_PRICER pricer,
    SCIP_SET set 
    )

    ◆ SCIPpricerExit()

    SCIP_RETCODE SCIPpricerExit ( SCIP_PRICER pricer,
    SCIP_SET set 
    )

    calls exit method of variable pricer

    Parameters
    pricervariable pricer
    setglobal SCIP settings

    Definition at line 275 of file pricer.c.

    References SCIP_Pricer::active, FALSE, SCIP_Pricer::initialized, SCIP_Pricer::name, NULL, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, and SCIP_Pricer::setuptime.

    ◆ SCIPpricerInitsol()

    SCIP_RETCODE SCIPpricerInitsol ( SCIP_PRICER pricer,
    SCIP_SET set 
    )

    informs variable pricer that the branch and bound process is being started

    Parameters
    pricervariable pricer
    setglobal SCIP settings

    Definition at line 306 of file pricer.c.

    References NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Pricer::setuptime.

    ◆ SCIPpricerExitsol()

    SCIP_RETCODE SCIPpricerExitsol ( SCIP_PRICER pricer,
    SCIP_SET set 
    )

    informs variable pricer that the branch and bound process data is being freed

    Parameters
    pricervariable pricer
    setglobal SCIP settings

    Definition at line 330 of file pricer.c.

    References NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Pricer::setuptime.

    ◆ SCIPpricerActivate()

    SCIP_RETCODE SCIPpricerActivate ( SCIP_PRICER pricer,
    SCIP_SET set 
    )

    activates pricer such that it is called in LP solving loop

    Parameters
    pricervariable pricer
    setglobal SCIP settings

    Definition at line 354 of file pricer.c.

    References SCIP_Pricer::active, FALSE, NULL, SCIP_OKAY, SCIP_STAGE_INIT, SCIP_STAGE_PROBLEM, and TRUE.

    Referenced by SCIPactivatePricer(), and SCIPsetCopyPlugins().

    ◆ SCIPpricerDeactivate()

    SCIP_RETCODE SCIPpricerDeactivate ( SCIP_PRICER pricer,
    SCIP_SET set 
    )

    deactivates pricer such that it is no longer called in LP solving loop

    Parameters
    pricervariable pricer
    setglobal SCIP settings

    Definition at line 377 of file pricer.c.

    References SCIP_Pricer::active, FALSE, NULL, and SCIP_OKAY.

    Referenced by SCIPdeactivatePricer(), and SCIPfreeProb().

    ◆ SCIPpricerRedcost()

    SCIP_RETCODE SCIPpricerRedcost ( SCIP_PRICER pricer,
    SCIP_SET set,
    SCIP_PROB prob,
    SCIP_Real lowerbound,
    SCIP_Bool stopearly,
    SCIP_RESULT result 
    )

    calls reduced cost pricing method of variable pricer

    Parameters
    pricervariable pricer
    setglobal SCIP settings
    probtransformed problem
    lowerboundlocal lower bound computed by the pricer
    stopearlyshould pricing be stopped, although new variables were added?
    resultresult of the pricing process

    Definition at line 396 of file pricer.c.

    References SCIP_Pricer::active, SCIP_Pricer::exact, SCIP_Pricer::name, SCIP_Pricer::ncalls, NULL, SCIP_Pricer::nvarsfound, SCIP_Pricer::pricerclock, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), SCIPprobGetNVars(), and SCIPsetDebugMsg.

    Referenced by SCIPpricerExec().

    ◆ SCIPpricerFarkas()

    SCIP_RETCODE SCIPpricerFarkas ( SCIP_PRICER pricer,
    SCIP_SET set,
    SCIP_PROB prob,
    SCIP_RESULT result 
    )

    calls Farkas pricing method of variable pricer

    Parameters
    pricervariable pricer
    setglobal SCIP settings
    probtransformed problem
    resultresult of the pricing process

    Definition at line 440 of file pricer.c.

    References SCIP_Pricer::active, SCIP_Pricer::exact, SCIP_Pricer::name, SCIP_Pricer::ncalls, NULL, SCIP_Pricer::nvarsfound, SCIP_Pricer::pricerclock, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), SCIPprobGetNVars(), and SCIPsetDebugMsg.

    Referenced by SCIPpricerExec().

    ◆ SCIPpricerExec()

    SCIP_RETCODE SCIPpricerExec ( SCIP_PRICER pricer,
    SCIP_SET set,
    SCIP_PROB prob,
    SCIP_LP lp,
    SCIP_PRICESTORE pricestore,
    SCIP_Real lowerbound,
    SCIP_Bool stopearly,
    SCIP_RESULT result 
    )

    depending on the LP's solution status, calls reduced cost or Farkas pricing method of variable pricer

    Parameters
    pricervariable pricer
    setglobal SCIP settings
    probtransformed problem
    lpLP data
    pricestorepricing storage
    lowerboundlocal lower bound computed by the pricer
    stopearlyshould pricing be stopped, although new variables were added?
    resultresult of the pricing process

    Definition at line 483 of file pricer.c.

    References SCIP_Pricer::delay, FALSE, NULL, SCIP_CALL, SCIP_DIDNOTRUN, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_OKAY, SCIP_SUCCESS, SCIPlpGetSolstat(), SCIPpricerFarkas(), SCIPpricerRedcost(), SCIPpricestoreGetNVars(), and SCIPsetInfinity().

    Referenced by SCIPpriceLoop().

    ◆ SCIPpricerSetCopy()

    void SCIPpricerSetCopy ( SCIP_PRICER pricer,
    SCIP_DECL_PRICERCOPY((*pricercopy))   
    )

    sets copy callback of pricer

    Parameters
    pricervariable pricer

    Definition at line 543 of file pricer.c.

    References NULL.

    Referenced by SCIPsetPricerCopy().

    ◆ SCIPpricerSetFree()

    void SCIPpricerSetFree ( SCIP_PRICER pricer,
    SCIP_DECL_PRICERFREE((*pricerfree))   
    )

    sets destructor callback of pricer

    Parameters
    pricerpricer

    Definition at line 554 of file pricer.c.

    References NULL.

    Referenced by SCIPsetPricerFree().

    ◆ SCIPpricerSetInit()

    void SCIPpricerSetInit ( SCIP_PRICER pricer,
    SCIP_DECL_PRICERINIT((*pricerinit))   
    )

    sets initialization callback of pricer

    Parameters
    pricerpricer

    Definition at line 565 of file pricer.c.

    References NULL.

    Referenced by SCIPsetPricerInit().

    ◆ SCIPpricerSetExit()

    void SCIPpricerSetExit ( SCIP_PRICER pricer,
    SCIP_DECL_PRICEREXIT((*pricerexit))   
    )

    sets deinitialization callback of pricer

    Parameters
    pricerpricer

    Definition at line 576 of file pricer.c.

    References NULL.

    Referenced by SCIPsetPricerExit().

    ◆ SCIPpricerSetInitsol()

    void SCIPpricerSetInitsol ( SCIP_PRICER pricer,
    SCIP_DECL_PRICERINITSOL((*pricerinitsol))   
    )

    sets solving process initialization callback of pricer

    Parameters
    pricerpricer

    Definition at line 587 of file pricer.c.

    References NULL.

    Referenced by SCIPsetPricerInitsol().

    ◆ SCIPpricerSetExitsol()

    void SCIPpricerSetExitsol ( SCIP_PRICER pricer,
    SCIP_DECL_PRICEREXITSOL((*pricerexitsol))   
    )

    sets solving process deinitialization callback of pricer

    Parameters
    pricerpricer

    Definition at line 598 of file pricer.c.

    References NULL.

    Referenced by SCIPsetPricerExitsol().

    ◆ SCIPpricerSetPriority()

    void SCIPpricerSetPriority ( SCIP_PRICER pricer,
    SCIP_SET set,
    int  priority 
    )

    sets priority of variable pricer

    Parameters
    pricervariable pricer
    setglobal SCIP settings
    prioritynew priority of the variable pricer

    Definition at line 649 of file pricer.c.

    References FALSE, NULL, and SCIP_Pricer::priority.

    Referenced by SCIPsetPricerPriority().

    ◆ SCIPpricerEnableOrDisableClocks()

    void SCIPpricerEnableOrDisableClocks ( SCIP_PRICER pricer,
    SCIP_Bool  enable 
    )

    enables or disables all clocks of pricer, depending on the value of the flag

    Parameters
    pricerthe pricer for which all clocks should be enabled or disabled
    enableshould the clocks of the pricer be enabled?

    Definition at line 703 of file pricer.c.

    References NULL, SCIP_Pricer::pricerclock, SCIPclockEnableOrDisable(), and SCIP_Pricer::setuptime.