Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

methods for storing priced variables

Author
Tobias Achterberg

Definition in file pricestore.c.

#include "scip/clock.h"
#include "scip/lp.h"
#include "scip/pricestore.h"
#include "scip/pub_lp.h"
#include "scip/pub_message.h"
#include "scip/pub_var.h"
#include "scip/set.h"
#include "scip/struct_lp.h"
#include "scip/struct_pricestore.h"
#include "scip/struct_prob.h"
#include "scip/struct_set.h"
#include "scip/struct_var.h"
#include "scip/tree.h"
#include "scip/var.h"

Go to the source code of this file.

Functions

static SCIP_RETCODE pricestoreEnsureVarsMem (SCIP_PRICESTORE *pricestore, SCIP_SET *set, int num)
 
static SCIP_RETCODE pricestoreEnsureBdviolvarsMem (SCIP_PRICESTORE *pricestore, SCIP_SET *set, int num)
 
SCIP_RETCODE SCIPpricestoreCreate (SCIP_PRICESTORE **pricestore)
 
SCIP_RETCODE SCIPpricestoreFree (SCIP_PRICESTORE **pricestore)
 
void SCIPpricestoreStartInitialLP (SCIP_PRICESTORE *pricestore)
 
void SCIPpricestoreEndInitialLP (SCIP_PRICESTORE *pricestore)
 
SCIP_RETCODE SCIPpricestoreAddVar (SCIP_PRICESTORE *pricestore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_VAR *var, SCIP_Real score, SCIP_Bool root)
 
SCIP_RETCODE SCIPpricestoreAddBdviolvar (SCIP_PRICESTORE *pricestore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_VAR *var)
 
static SCIP_RETCODE addBoundViolated (SCIP_PRICESTORE *pricestore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_VAR *var, SCIP_Bool *added)
 
SCIP_RETCODE SCIPpricestoreAddProbVars (SCIP_PRICESTORE *pricestore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue)
 
SCIP_RETCODE SCIPpricestoreApplyVars (SCIP_PRICESTORE *pricestore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_LP *lp)
 
SCIP_RETCODE SCIPpricestoreResetBounds (SCIP_PRICESTORE *pricestore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue)
 
int SCIPpricestoreGetNVars (SCIP_PRICESTORE *pricestore)
 
int SCIPpricestoreGetNBoundResets (SCIP_PRICESTORE *pricestore)
 
SCIP_Real SCIPpricestoreGetProbPricingTime (SCIP_PRICESTORE *pricestore)
 
int SCIPpricestoreGetNProbPricings (SCIP_PRICESTORE *pricestore)
 
int SCIPpricestoreGetNProbvarsFound (SCIP_PRICESTORE *pricestore)
 
int SCIPpricestoreGetNVarsFound (SCIP_PRICESTORE *pricestore)
 
int SCIPpricestoreGetNVarsApplied (SCIP_PRICESTORE *pricestore)
 

Function Documentation

◆ pricestoreEnsureVarsMem()

static SCIP_RETCODE pricestoreEnsureVarsMem ( SCIP_PRICESTORE pricestore,
SCIP_SET set,
int  num 
)
static

resizes vars and score arrays to be able to store at least num entries

Parameters
pricestorepricing storage
setglobal SCIP settings
numminimal number of slots in array

Definition at line 47 of file pricestore.c.

References BMSreallocMemoryArray, NULL, SCIP_ALLOC, SCIP_OKAY, SCIPsetCalcMemGrowSize(), SCIP_Pricestore::scores, SCIP_Pricestore::vars, and SCIP_Pricestore::varssize.

Referenced by SCIPpricestoreAddVar().

◆ pricestoreEnsureBdviolvarsMem()

static SCIP_RETCODE pricestoreEnsureBdviolvarsMem ( SCIP_PRICESTORE pricestore,
SCIP_SET set,
int  num 
)
static

resizes bdviolvars arrays to be able to store at least num entries

Parameters
pricestorepricing storage
setglobal SCIP settings
numminimal number of slots in array

Definition at line 72 of file pricestore.c.

References SCIP_Pricestore::bdviolvars, SCIP_Pricestore::bdviolvarslb, SCIP_Pricestore::bdviolvarssize, SCIP_Pricestore::bdviolvarsub, BMSreallocMemoryArray, NULL, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().

Referenced by SCIPpricestoreAddBdviolvar().

◆ SCIPpricestoreCreate()

SCIP_RETCODE SCIPpricestoreCreate ( SCIP_PRICESTORE **  pricestore)

creates pricing storage

Parameters
pricestorepointer to store pricing storage

Definition at line 98 of file pricestore.c.

References BMSallocMemory, FALSE, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_CLOCKTYPE_DEFAULT, SCIP_OKAY, and SCIPclockCreate().

Referenced by initSolve().

◆ SCIPpricestoreFree()

SCIP_RETCODE SCIPpricestoreFree ( SCIP_PRICESTORE **  pricestore)

frees pricing storage

Parameters
pricestorepointer to store pricing storage

Definition at line 127 of file pricestore.c.

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

Referenced by freeReoptSolve(), and freeSolve().

◆ SCIPpricestoreStartInitialLP()

void SCIPpricestoreStartInitialLP ( SCIP_PRICESTORE pricestore)

informs pricing storage, that the setup of the initial LP starts now

Parameters
pricestorepricing storage

Definition at line 148 of file pricestore.c.

References SCIP_Pricestore::initiallp, NULL, SCIP_Pricestore::nvars, and TRUE.

Referenced by initLP().

◆ SCIPpricestoreEndInitialLP()

void SCIPpricestoreEndInitialLP ( SCIP_PRICESTORE pricestore)

informs pricing storage, that the setup of the initial LP is now finished

Parameters
pricestorepricing storage

Definition at line 160 of file pricestore.c.

References FALSE, SCIP_Pricestore::initiallp, NULL, and SCIP_Pricestore::nvars.

Referenced by initLP().

◆ SCIPpricestoreAddVar()

SCIP_RETCODE SCIPpricestoreAddVar ( SCIP_PRICESTORE pricestore,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp,
SCIP_VAR var,
SCIP_Real  score,
SCIP_Bool  root 
)

adds variable to pricing storage and capture it

Parameters
pricestorepricing storage
blkmemblock memory
setglobal SCIP settings
eventqueueevent queue
lpLP data
varpriced variable
scorepricing score of variable (the larger, the better the variable)
rootare we at the root node?

Definition at line 172 of file pricestore.c.

References SCIP_Pricestore::initiallp, NULL, SCIP_Pricestore::nvars, SCIP_Pricestore::nvarsfound, pricestoreEnsureVarsMem(), SCIP_Var::scip, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPerrorMessage, SCIPsetDebugMsg, SCIPsetGetPriceMaxvars(), SCIPvarCapture(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbLocal(), SCIPvarRelease(), SCIP_Pricestore::scores, SCIP_Pricestore::vars, and SCIP_Pricestore::varssize.

Referenced by addBoundViolated(), initLP(), SCIPaddPricedVar(), and SCIPpricestoreAddProbVars().

◆ SCIPpricestoreAddBdviolvar()

SCIP_RETCODE SCIPpricestoreAddBdviolvar ( SCIP_PRICESTORE pricestore,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_LP lp,
SCIP_BRANCHCAND branchcand,
SCIP_EVENTQUEUE eventqueue,
SCIP_VAR var 
)

adds variable where zero violates the bounds to pricing storage, capture it

Parameters
pricestorepricing storage
blkmemblock memory
setglobal SCIP settings
statproblem statistics
lpLP data
branchcandbranching candidate storage
eventqueueevent queue
varvariable, where zero violates the bounds

Definition at line 245 of file pricestore.c.

References SCIP_Pricestore::bdviolvars, SCIP_Pricestore::bdviolvarslb, SCIP_Pricestore::bdviolvarssize, SCIP_Pricestore::bdviolvarsub, SCIP_Pricestore::initiallp, SCIP_Pricestore::naddedbdviolvars, SCIP_Pricestore::nbdviolvars, NULL, SCIP_Pricestore::nvarsfound, pricestoreEnsureBdviolvarsMem(), SCIP_CALL, SCIP_OKAY, SCIPsetDebugMsg, SCIPsetIsNegative(), SCIPsetIsPositive(), SCIPvarCapture(), SCIPvarChgLbLocal(), SCIPvarChgUbLocal(), SCIPvarGetLbLocal(), SCIPvarGetName(), and SCIPvarGetUbLocal().

Referenced by addBoundViolated().

◆ addBoundViolated()

static SCIP_RETCODE addBoundViolated ( SCIP_PRICESTORE pricestore,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_TREE tree,
SCIP_LP lp,
SCIP_BRANCHCAND branchcand,
SCIP_EVENTQUEUE eventqueue,
SCIP_VAR var,
SCIP_Bool added 
)
static

adds given problem variable to pricing storage, if zero is not best bound w.r.t. objective function

Parameters
pricestorepricing storage
blkmemblock memory buffers
setglobal SCIP settings
statdynamic problem statistics
treebranch and bound tree
lpLP data
branchcandbranching candidate storage
eventqueueevent queue
varproblem variable
addedpointer to store whether variable was added to pricing storage

Definition at line 300 of file pricestore.c.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPpricestoreAddBdviolvar(), SCIPpricestoreAddVar(), SCIPsetDebugMsg, SCIPsetIsNegative(), SCIPsetIsPositive(), SCIPsetIsZero(), SCIPtreeGetCurrentDepth(), SCIPvarGetBestBoundLocal(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetObj(), SCIPvarGetUbLocal(), and TRUE.

Referenced by SCIPpricestoreAddProbVars().

◆ SCIPpricestoreAddProbVars()

SCIP_RETCODE SCIPpricestoreAddProbVars ( SCIP_PRICESTORE pricestore,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB prob,
SCIP_TREE tree,
SCIP_LP lp,
SCIP_BRANCHCAND branchcand,
SCIP_EVENTQUEUE eventqueue 
)

◆ SCIPpricestoreApplyVars()

SCIP_RETCODE SCIPpricestoreApplyVars ( SCIP_PRICESTORE pricestore,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_PROB prob,
SCIP_TREE tree,
SCIP_LP lp 
)

◆ SCIPpricestoreResetBounds()

SCIP_RETCODE SCIPpricestoreResetBounds ( SCIP_PRICESTORE pricestore,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_LP lp,
SCIP_BRANCHCAND branchcand,
SCIP_EVENTQUEUE eventqueue 
)

reset variables' bounds violated by zero to its original value

Parameters
pricestorepricing storage
blkmemblock memory
setglobal SCIP settings
statproblem statistics
lpLP data
branchcandbranching candidate storage
eventqueueevent queue

Definition at line 560 of file pricestore.c.

References SCIP_Pricestore::bdviolvars, SCIP_Pricestore::bdviolvarslb, SCIP_Pricestore::bdviolvarsub, SCIP_Pricestore::naddedbdviolvars, SCIP_Var::name, SCIP_Pricestore::nbdviolvars, NULL, SCIP_Pricestore::nvars, SCIP_CALL, SCIP_OKAY, SCIPsetDebugMsg, SCIPvarChgLbLocal(), SCIPvarChgUbLocal(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), and SCIPvarRelease().

Referenced by SCIPpriceLoop().

◆ SCIPpricestoreGetNVars()

int SCIPpricestoreGetNVars ( SCIP_PRICESTORE pricestore)

gets number of variables in pricing storage

Parameters
pricestorepricing storage

Definition at line 600 of file pricestore.c.

References SCIP_Pricestore::naddedbdviolvars, SCIP_Pricestore::nbdviolvars, NULL, and SCIP_Pricestore::nvars.

Referenced by SCIPgetNPricevars(), SCIPpriceLoop(), SCIPpricerExec(), and SCIPpricestoreApplyVars().

◆ SCIPpricestoreGetNBoundResets()

int SCIPpricestoreGetNBoundResets ( SCIP_PRICESTORE pricestore)

gets number of variables in pricing storage whose bounds must be reset

Parameters
pricestorepricing storage

Definition at line 611 of file pricestore.c.

References SCIP_Pricestore::naddedbdviolvars, SCIP_Pricestore::nbdviolvars, and NULL.

Referenced by SCIPpriceLoop().

◆ SCIPpricestoreGetProbPricingTime()

SCIP_Real SCIPpricestoreGetProbPricingTime ( SCIP_PRICESTORE pricestore)

gets time needed to price existing problem variables

Parameters
pricestorepricing storage

Definition at line 622 of file pricestore.c.

References NULL, SCIP_Pricestore::probpricingtime, and SCIPclockGetTime().

Referenced by SCIPprintPricerStatistics().

◆ SCIPpricestoreGetNProbPricings()

int SCIPpricestoreGetNProbPricings ( SCIP_PRICESTORE pricestore)

gets total number of calls to problem variable pricing

Parameters
pricestorepricing storage

Definition at line 632 of file pricestore.c.

References SCIP_Pricestore::nprobpricings, and NULL.

Referenced by SCIPprintPricerStatistics().

◆ SCIPpricestoreGetNProbvarsFound()

int SCIPpricestoreGetNProbvarsFound ( SCIP_PRICESTORE pricestore)

gets total number of times, a problem variable was priced in

Parameters
pricestorepricing storage

Definition at line 642 of file pricestore.c.

References SCIP_Pricestore::nprobvarsfound, and NULL.

Referenced by SCIPprintPricerStatistics().

◆ SCIPpricestoreGetNVarsFound()

int SCIPpricestoreGetNVarsFound ( SCIP_PRICESTORE pricestore)

get total number of variables found so far in pricing

Parameters
pricestorepricing storage

Definition at line 652 of file pricestore.c.

References NULL, and SCIP_Pricestore::nvarsfound.

Referenced by SCIPgetNPricevarsFound().

◆ SCIPpricestoreGetNVarsApplied()

int SCIPpricestoreGetNVarsApplied ( SCIP_PRICESTORE pricestore)

get total number of variables priced into the LP so far

Parameters
pricestorepricing storage

Definition at line 662 of file pricestore.c.

References NULL, and SCIP_Pricestore::nvarsapplied.

Referenced by SCIPgetNPricevarsApplied().