51 assert(pricestore !=
NULL);
63 assert(num <= pricestore->varssize);
76 assert(pricestore !=
NULL);
89 assert(num <= pricestore->bdviolvarssize);
100 assert(pricestore !=
NULL);
105 (*pricestore)->vars =
NULL;
106 (*pricestore)->scores =
NULL;
107 (*pricestore)->bdviolvars =
NULL;
108 (*pricestore)->bdviolvarslb =
NULL;
109 (*pricestore)->bdviolvarsub =
NULL;
110 (*pricestore)->varssize = 0;
111 (*pricestore)->nvars = 0;
112 (*pricestore)->bdviolvarssize = 0;
113 (*pricestore)->nbdviolvars = 0;
114 (*pricestore)->naddedbdviolvars = 0;
115 (*pricestore)->nprobpricings = 0;
116 (*pricestore)->nprobvarsfound = 0;
117 (*pricestore)->nvarsfound = 0;
118 (*pricestore)->nvarsapplied = 0;
119 (*pricestore)->initiallp =
FALSE;
129 assert(pricestore !=
NULL);
130 assert(*pricestore !=
NULL);
131 assert((*pricestore)->nvars == 0);
132 assert((*pricestore)->nbdviolvars == 0);
150 assert(pricestore !=
NULL);
152 assert(pricestore->
nvars == 0);
162 assert(pricestore !=
NULL);
164 assert(pricestore->
nvars == 0);
184 assert(pricestore !=
NULL);
190 if( var->
scip != set->scip )
197 SCIPsetDebugMsg(
set,
"adding variable <%s> (lb=%g, ub=%g) to pricing storage (initiallp=%u)\n",
201 maxpricevars = INT_MAX;
207 assert(maxpricevars >= 1);
208 assert(pricestore->
nvars <= maxpricevars);
211 if( pricestore->
nvars < maxpricevars || score > pricestore->
scores[maxpricevars-1] )
217 if( pricestore->
nvars == maxpricevars )
222 assert(pricestore->
nvars < maxpricevars);
229 for( v = pricestore->
nvars; v > 0 && score > pricestore->
scores[v-1]; --v )
231 pricestore->
vars[v] = pricestore->
vars[v-1];
234 pricestore->
vars[v] = var;
235 pricestore->
scores[v] = score;
254 assert(pricestore !=
NULL);
311 assert(tree !=
NULL);
312 assert(added !=
NULL);
331 SCIPsetDebugMsg(
set,
" -> best bound of <%s> [%g,%g] is not zero but %g\n",
364 assert(pricestore !=
NULL);
366 assert(stat !=
NULL);
367 assert(prob !=
NULL);
370 assert(tree !=
NULL);
380 assert(maxpricevars >= 1);
381 abortpricevars = (int)(set->price_abortfac * maxpricevars);
382 assert(abortpricevars >= maxpricevars);
393 for( v = 0; v < prob->
nvars && nfoundvars < abortpricevars; ++v )
400 assert(col->
var == var);
401 assert(col->
len >= 0);
402 assert(col->
lppos >= -1);
403 assert(col->
lpipos >= -1);
487 assert(pricestore !=
NULL);
490 assert(prob !=
NULL);
492 assert(tree !=
NULL);
495 SCIPsetDebugMsg(
set,
"adding %d variables (%d bound violated and %d priced vars) to %d LP columns\n",
505 assert(var->
nuses >= 2);
516 assert(col->
lppos == -1);
527 for( v = 0; v < pricestore->
nvars; ++v )
529 var = pricestore->
vars[v];
532 assert(var->
nuses >= 2);
543 assert(col->
lppos == -1);
555 pricestore->
nvars = 0;
574 assert(pricestore !=
NULL);
577 assert(pricestore->
nvars == 0);
605 assert(pricestore !=
NULL);
616 assert(pricestore !=
NULL);
627 assert(pricestore !=
NULL);
637 assert(pricestore !=
NULL);
647 assert(pricestore !=
NULL);
657 assert(pricestore !=
NULL);
667 assert(pricestore !=
NULL);
void SCIPpricestoreEndInitialLP(SCIP_PRICESTORE *pricestore)
data structures for storing priced variables
#define BMSfreeMemoryArrayNull(ptr)
internal methods for branch and bound tree
int SCIPpricestoreGetNVars(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)
int SCIPpricestoreGetNProbvarsFound(SCIP_PRICESTORE *pricestore)
SCIP_Real SCIPpricestoreGetProbPricingTime(SCIP_PRICESTORE *pricestore)
internal methods for clocks and timing issues
SCIP_Bool SCIPsetIsPositive(SCIP_SET *set, SCIP_Real val)
SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)
SCIP_Real SCIPvarGetBestBoundLocal(SCIP_VAR *var)
void SCIPclockStop(SCIP_CLOCK *clck, SCIP_SET *set)
void SCIPclockStart(SCIP_CLOCK *clck, SCIP_SET *set)
SCIP_Bool SCIPsetIsZero(SCIP_SET *set, SCIP_Real val)
enum SCIP_Retcode SCIP_RETCODE
int SCIPtreeGetCurrentDepth(SCIP_TREE *tree)
int SCIPvarGetProbindex(SCIP_VAR *var)
SCIP_RETCODE SCIPpricestoreCreate(SCIP_PRICESTORE **pricestore)
int SCIPsetCalcMemGrowSize(SCIP_SET *set, int num)
SCIP_Bool SCIPsetIsNegative(SCIP_SET *set, SCIP_Real val)
#define BMSfreeMemory(ptr)
SCIP_LPSOLSTAT SCIPlpGetSolstat(SCIP_LP *lp)
internal methods for LP management
SCIP_Bool SCIPtreeIsFocusNodeLPConstructed(SCIP_TREE *tree)
void SCIPpricestoreStartInitialLP(SCIP_PRICESTORE *pricestore)
int SCIPpricestoreGetNBoundResets(SCIP_PRICESTORE *pricestore)
int SCIPlpGetNCols(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)
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)
internal methods for storing and manipulating the main problem
SCIP_RETCODE SCIPlpAddCol(SCIP_LP *lp, SCIP_SET *set, SCIP_COL *col, int depth)
SCIP_RETCODE SCIPvarRelease(SCIP_VAR **var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
SCIP_CLOCK * probpricingtime
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_Real SCIPclockGetTime(SCIP_CLOCK *clck)
internal methods for global SCIP settings
internal methods for storing priced variables
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)
SCIP_RETCODE SCIPpricestoreFree(SCIP_PRICESTORE **pricestore)
SCIP_RETCODE SCIPclockCreate(SCIP_CLOCK **clck, SCIP_CLOCKTYPE clocktype)
internal methods for problem variables
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)
void SCIPvarCapture(SCIP_VAR *var)
void SCIPclockFree(SCIP_CLOCK **clck)
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_Real SCIPvarGetObj(SCIP_VAR *var)
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_Bool SCIPtreeHasCurrentNodeLP(SCIP_TREE *tree)
SCIP_COL * SCIPvarGetCol(SCIP_VAR *var)
static SCIP_RETCODE pricestoreEnsureVarsMem(SCIP_PRICESTORE *pricestore, SCIP_SET *set, int num)
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 SCIPcolGetNNonz(SCIP_COL *col)
int SCIPpricestoreGetNVarsFound(SCIP_PRICESTORE *pricestore)
SCIP_RETCODE SCIPvarColumn(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_LP *lp)
public methods for message output
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
static SCIP_RETCODE pricestoreEnsureBdviolvarsMem(SCIP_PRICESTORE *pricestore, SCIP_SET *set, int num)
SCIP_Real SCIPcolGetFarkasValue(SCIP_COL *col, SCIP_STAT *stat, SCIP_LP *lp)
#define BMSallocMemory(ptr)
#define BMSreallocMemoryArray(ptr, num)
SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)
SCIP_Real SCIPcolGetFeasibility(SCIP_COL *col, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
common defines and data types used in all packages of SCIP
struct BMS_BlkMem BMS_BLKMEM
SCIP_Bool SCIPcolIsInLP(SCIP_COL *col)
int SCIPsetGetPriceMaxvars(SCIP_SET *set, SCIP_Bool root)
int SCIPpricestoreGetNProbPricings(SCIP_PRICESTORE *pricestore)