Scippy

GCG

Branch-and-Price & Column Generation for Everyone

gcg::Pricingcontroller Class Reference

Detailed Description

Definition at line 48 of file class_pricingcontroller.h.

#include <class_pricingcontroller.h>

Public Member Functions

 Pricingcontroller ()
 
 Pricingcontroller (SCIP *scip)
 
virtual ~Pricingcontroller ()
 
SCIP_RETCODE addParameters ()
 
SCIP_RETCODE initSol ()
 
SCIP_RETCODE exitSol ()
 
SCIP_RETCODE initPricing (PricingType *pricingtype)
 
void exitPricing ()
 
SCIP_RETCODE setupPriorityQueue (SCIP_Real *dualsolconv)
 
GCG_PRICINGJOBgetNextPricingjob ()
 
SCIP_RETCODE pricingprobNextBranchcons (GCG_PRICINGPROB *pricingprob)
 
SCIP_RETCODE setPricingjobTimelimit (GCG_PRICINGJOB *pricingjob)
 
void updatePricingprob (GCG_PRICINGPROB *pricingprob, GCG_PRICINGSTATUS status, SCIP_Real lowerbound, int nimpcols)
 
void updatePricingjobSolvingStats (GCG_PRICINGJOB *pricingjob)
 
void evaluatePricingjob (GCG_PRICINGJOB *pricingjob, GCG_PRICINGSTATUS status)
 
void collectResults (GCG_COL **bestcols, SCIP_Bool *infeasible, SCIP_Bool *optimal, SCIP_Real *bestobjvals, SCIP_Real *beststabobj, SCIP_Real *bestredcost, SCIP_Bool *bestredcostvalid)
 
SCIP_Bool checkNextChunk ()
 
SCIP_Bool canPricingloopBeAborted (PricingType *pricingtype, int nfoundcols, int nsuccessfulprobs) const
 
void resetEagerage ()
 
void increaseEagerage ()
 
GCG_PRICINGPROBgetPricingprob (int probnr)
 
int getMaxNIters () const
 

Constructor & Destructor Documentation

◆ Pricingcontroller() [1/2]

gcg::Pricingcontroller::Pricingcontroller ( )

default constructor

◆ Pricingcontroller() [2/2]

gcg::Pricingcontroller::Pricingcontroller ( SCIP *  scip)

constructor

Definition at line 80 of file class_pricingcontroller.cpp.

References DEFAULT_CHUNKSIZE, DEFAULT_EAGERFREQ, DEFAULT_NROUNDSCOL, and DEFAULT_SORTING.

◆ ~Pricingcontroller()

gcg::Pricingcontroller::~Pricingcontroller ( )
virtual

destructor

Definition at line 106 of file class_pricingcontroller.cpp.

Member Function Documentation

◆ addParameters()

◆ initSol()

◆ exitSol()

SCIP_RETCODE gcg::Pricingcontroller::exitSol ( )

◆ initPricing()

SCIP_RETCODE gcg::Pricingcontroller::initPricing ( PricingType pricingtype)

pricing initialization, called right at the beginning of pricing

Parameters
pricingtypetype of pricing

Definition at line 333 of file class_pricingcontroller.cpp.

References GCGpricerGetNSolvers(), GCGpricingprobGetNGenericBranchconss(), and GCGpricingprobInitPricing().

◆ exitPricing()

void gcg::Pricingcontroller::exitPricing ( )

pricing deinitialization, called when pricing is finished

Definition at line 362 of file class_pricingcontroller.cpp.

References GCGpricingprobExitPricing().

◆ setupPriorityQueue()

SCIP_RETCODE gcg::Pricingcontroller::setupPriorityQueue ( SCIP_Real *  dualsolconv)

setup the priority queue (done once per stabilization round): add all pricing jobs to be performed

Parameters
dualsolconvdual solution values / Farkas coefficients of convexity constraints

Definition at line 371 of file class_pricingcontroller.cpp.

References GCGpqueueClear(), GCGpqueueInsert(), GCGpricerGetNPointsProb(), GCGpricerGetNRaysProb(), GCGpricingjobGetChunk(), GCGpricingjobGetPricingprob(), GCGpricingjobGetSolver(), GCGpricingjobSetup(), GCGpricingprobGetProbnr(), GCGpricingprobReset(), GCGsolverIsHeurEnabled(), and SCIP_CALL_EXC.

◆ getNextPricingjob()

GCG_PRICINGJOB * gcg::Pricingcontroller::getNextPricingjob ( )

get the next pricing job to be performed

Definition at line 405 of file class_pricingcontroller.cpp.

References GCGpqueueRemove(), and GCGpricingjobGetPricingprob().

◆ pricingprobNextBranchcons()

SCIP_RETCODE gcg::Pricingcontroller::pricingprobNextBranchcons ( GCG_PRICINGPROB pricingprob)

add the information that the next branching constraint must be added, and for the pricing job, reset heuristic pricing counter and flag

Parameters
pricingprobpricing problem structure

Definition at line 421 of file class_pricingcontroller.cpp.

References GCGpqueueResort(), GCGpricingjobGetPricingprob(), GCGpricingjobResetHeuristic(), and GCGpricingprobNextBranchcons().

Referenced by evaluatePricingjob().

◆ setPricingjobTimelimit()

SCIP_RETCODE gcg::Pricingcontroller::setPricingjobTimelimit ( GCG_PRICINGJOB pricingjob)

set an individual time limit for a pricing job

Parameters
pricingjobpricing job

Definition at line 442 of file class_pricingcontroller.cpp.

References GCGpricingjobGetPricingprob(), and GCGpricingprobGetPricingscip().

◆ updatePricingprob()

void gcg::Pricingcontroller::updatePricingprob ( GCG_PRICINGPROB pricingprob,
GCG_PRICINGSTATUS  status,
SCIP_Real  lowerbound,
int  nimpcols 
)

update solution information of a pricing problem

Parameters
pricingprobpricing problem structure
statusnew pricing status
lowerboundnew lower bound
nimpcolsnumber of new improving columns

Definition at line 461 of file class_pricingcontroller.cpp.

References GCGpricingprobUpdate().

◆ updatePricingjobSolvingStats()

void gcg::Pricingcontroller::updatePricingjobSolvingStats ( GCG_PRICINGJOB pricingjob)

update solution statistics of a pricing job

Parameters
pricingjobpricing job

◆ evaluatePricingjob()

◆ collectResults()

void gcg::Pricingcontroller::collectResults ( GCG_COL **  bestcols,
SCIP_Bool *  infeasible,
SCIP_Bool *  optimal,
SCIP_Real *  bestobjvals,
SCIP_Real *  beststabobj,
SCIP_Real *  bestredcost,
SCIP_Bool *  bestredcostvalid 
)

collect solution results from all pricing problems

Parameters
bestcolsbest found columns per pricing problem
infeasiblepointer to store whether pricing is infeasible
optimalpointer to store whether all pricing problems were solved to optimality
bestobjvalsarray to store best lower bounds
beststabobjpointer to store total lower bound
bestredcostpointer to store best total reduced cost
bestredcostvalidpointer to store whether best reduced cost is valid

Definition at line 537 of file class_pricingcontroller.cpp.

References GCG_PRICETYPE_FARKAS, GCG_PRICINGSTATUS_INFEASIBLE, GCG_PRICINGSTATUS_OPTIMAL, GCGcolGetRedcost(), GCGgetNIdenticalBlocks(), GCGgetNPricingprobs(), GCGmasterGetOrigprob(), GCGpricingprobGetLowerbound(), GCGpricingprobGetNImpCols(), GCGpricingprobGetProbnr(), GCGpricingprobGetStatus(), and PricingType::getType().

◆ checkNextChunk()

SCIP_Bool gcg::Pricingcontroller::checkNextChunk ( )

check if the next chunk of pricing problems is to be used

Definition at line 590 of file class_pricingcontroller.cpp.

◆ canPricingloopBeAborted()

SCIP_Bool gcg::Pricingcontroller::canPricingloopBeAborted ( PricingType pricingtype,
int  nfoundcols,
int  nsuccessfulprobs 
) const

decide whether the pricing loop can be aborted

Parameters
pricingtypetype of pricing (reduced cost or Farkas)
nfoundcolsnumber of negative reduced cost columns found so far
nsuccessfulprobsnumber of pricing problems solved successfully so far

Definition at line 608 of file class_pricingcontroller.cpp.

References GCGgetNRelPricingprobs(), GCGmasterGetOrigprob(), PricingType::getMaxcolsround(), PricingType::getRelmaxprobs(), and PricingType::getRelmaxsuccessfulprobs().

◆ resetEagerage()

void gcg::Pricingcontroller::resetEagerage ( )

Definition at line 628 of file class_pricingcontroller.cpp.

◆ increaseEagerage()

void gcg::Pricingcontroller::increaseEagerage ( )

Definition at line 633 of file class_pricingcontroller.cpp.

◆ getPricingprob()

GCG_PRICINGPROB * gcg::Pricingcontroller::getPricingprob ( int  probnr)

for a given problem index, get the corresponding pricing problem (or NULL, if it does not exist)

Parameters
probnrindex of the pricing problem

Definition at line 640 of file class_pricingcontroller.cpp.

References GCGpricingprobGetProbnr().

◆ getMaxNIters()

int gcg::Pricingcontroller::getMaxNIters ( ) const

get maximal possible number of pricing iterations

Definition at line 652 of file class_pricingcontroller.cpp.