74 assert(num <= pricestore->varssize);
100 assert(num <= pricestore->bdviolvarssize);
116 (*pricestore)->vars =
NULL;
117 (*pricestore)->scores =
NULL;
118 (*pricestore)->bdviolvars =
NULL;
119 (*pricestore)->bdviolvarslb =
NULL;
120 (*pricestore)->bdviolvarsub =
NULL;
121 (*pricestore)->varssize = 0;
122 (*pricestore)->nvars = 0;
123 (*pricestore)->bdviolvarssize = 0;
124 (*pricestore)->nbdviolvars = 0;
125 (*pricestore)->naddedbdviolvars = 0;
126 (*pricestore)->nprobpricings = 0;
127 (*pricestore)->nprobvarsfound = 0;
128 (*pricestore)->nvarsfound = 0;
129 (*pricestore)->nvarsapplied = 0;
130 (*pricestore)->initiallp =
FALSE;
142 assert((*pricestore)->nvars == 0);
143 assert((*pricestore)->nbdviolvars == 0);
201 if(
var->scip !=
set->scip )
208 SCIPsetDebugMsg(
set,
"adding variable <%s> (lb=%g, ub=%g) to pricing storage (initiallp=%u)\n",
212 maxpricevars = INT_MAX;
218 assert(maxpricevars >= 1);
222 if( pricestore->
nvars < maxpricevars || score > pricestore->
scores[maxpricevars-1] )
228 if( pricestore->
nvars == maxpricevars )
240 for( v = pricestore->
nvars; v > 0 && score > pricestore->
scores[v-1]; --v )
242 pricestore->
vars[v] = pricestore->
vars[v-1];
246 pricestore->
scores[v] = score;
391 assert(maxpricevars >= 1);
392 abortpricevars = (int)(
set->price_abortfac * maxpricevars);
393 assert(abortpricevars >= maxpricevars);
404 for( v = 0; v < prob->
nvars && nfoundvars < abortpricevars; ++v )
503 SCIPsetDebugMsg(
set,
"adding %d variables (%d bound violated and %d priced vars) to %d LP columns\n",
535 for( v = 0; v < pricestore->
nvars; ++v )
563 pricestore->
nvars = 0;
void SCIPclockStop(SCIP_CLOCK *clck, SCIP_SET *set)
void SCIPclockStart(SCIP_CLOCK *clck, SCIP_SET *set)
SCIP_Real SCIPclockGetTime(SCIP_CLOCK *clck)
void SCIPclockFree(SCIP_CLOCK **clck)
SCIP_RETCODE SCIPclockCreate(SCIP_CLOCK **clck, SCIP_CLOCKTYPE clocktype)
internal methods for clocks and timing issues
int SCIPcolGetNNonz(SCIP_COL *col)
SCIP_Bool SCIPcolIsInLP(SCIP_COL *col)
SCIP_COL * SCIPvarGetCol(SCIP_VAR *var)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)
SCIP_Real SCIPvarGetObj(SCIP_VAR *var)
int SCIPvarGetProbindex(SCIP_VAR *var)
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_Real SCIPvarGetBestBoundLocal(SCIP_VAR *var)
SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)
assert(minobj< SCIPgetCutoffbound(scip))
SCIP_RETCODE SCIPlpAddCol(SCIP_LP *lp, SCIP_SET *set, SCIP_COL *col, int depth)
SCIP_LPSOLSTAT SCIPlpGetSolstat(SCIP_LP *lp)
SCIP_Real SCIPcolGetFeasibility(SCIP_COL *col, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
SCIP_Real SCIPcolGetFarkasValue(SCIP_COL *col, SCIP_STAT *stat, SCIP_LP *lp)
int SCIPlpGetNCols(SCIP_LP *lp)
internal methods for LP management
#define BMSfreeMemory(ptr)
#define BMSreallocMemoryArray(ptr, num)
struct BMS_BlkMem BMS_BLKMEM
#define BMSfreeMemoryArrayNull(ptr)
#define BMSallocMemory(ptr)
void SCIPpricestoreStartInitialLP(SCIP_PRICESTORE *pricestore)
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)
int SCIPpricestoreGetNVars(SCIP_PRICESTORE *pricestore)
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 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)
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)
int SCIPpricestoreGetNVarsApplied(SCIP_PRICESTORE *pricestore)
SCIP_RETCODE SCIPpricestoreCreate(SCIP_PRICESTORE **pricestore)
int SCIPpricestoreGetNBoundResets(SCIP_PRICESTORE *pricestore)
SCIP_Real SCIPpricestoreGetProbPricingTime(SCIP_PRICESTORE *pricestore)
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)
SCIP_RETCODE SCIPpricestoreFree(SCIP_PRICESTORE **pricestore)
static SCIP_RETCODE pricestoreEnsureVarsMem(SCIP_PRICESTORE *pricestore, SCIP_SET *set, int num)
static SCIP_RETCODE pricestoreEnsureBdviolvarsMem(SCIP_PRICESTORE *pricestore, SCIP_SET *set, int num)
int SCIPpricestoreGetNVarsFound(SCIP_PRICESTORE *pricestore)
int SCIPpricestoreGetNProbvarsFound(SCIP_PRICESTORE *pricestore)
void SCIPpricestoreEndInitialLP(SCIP_PRICESTORE *pricestore)
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 SCIPpricestoreGetNProbPricings(SCIP_PRICESTORE *pricestore)
internal methods for storing priced variables
public methods for LP management
public methods for message output
public methods for problem variables
SCIP_Bool SCIPsetIsPositive(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPsetIsZero(SCIP_SET *set, SCIP_Real val)
int SCIPsetGetPriceMaxvars(SCIP_SET *set, SCIP_Bool root)
int SCIPsetCalcMemGrowSize(SCIP_SET *set, int num)
SCIP_Bool SCIPsetIsNegative(SCIP_SET *set, SCIP_Real val)
internal methods for global SCIP settings
SCIP_CLOCK * probpricingtime
data structures for LP management
data structures for storing priced variables
datastructures for storing and manipulating the main problem
datastructures for global SCIP settings
datastructures for problem variables
SCIP_Bool SCIPtreeIsFocusNodeLPConstructed(SCIP_TREE *tree)
SCIP_Bool SCIPtreeHasCurrentNodeLP(SCIP_TREE *tree)
int SCIPtreeGetCurrentDepth(SCIP_TREE *tree)
internal methods for branch and bound tree
struct SCIP_BranchCand SCIP_BRANCHCAND
struct SCIP_EventQueue SCIP_EVENTQUEUE
@ SCIP_LPSOLSTAT_INFEASIBLE
struct SCIP_Pricestore SCIP_PRICESTORE
struct SCIP_Prob SCIP_PROB
enum SCIP_Retcode SCIP_RETCODE
struct SCIP_Stat SCIP_STAT
struct SCIP_Tree SCIP_TREE
SCIP_RETCODE SCIPvarRelease(SCIP_VAR **var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
void SCIPvarCapture(SCIP_VAR *var)
SCIP_RETCODE SCIPvarColumn(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_LP *lp)
SCIP_RETCODE SCIPvarChgLbLocal(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Real newbound)
SCIP_RETCODE SCIPvarChgUbLocal(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Real newbound)
internal methods for problem variables