76 assert(num <= primal->solssize);
96 newsize =
MIN(newsize,
set->limit_maxorigsol);
101 assert(num <= primal->partialsolssize);
124 assert(num <= primal->existingsolssize);
137 (*primal)->sols =
NULL;
138 (*primal)->partialsols =
NULL;
139 (*primal)->existingsols =
NULL;
140 (*primal)->currentsol =
NULL;
141 (*primal)->primalray =
NULL;
142 (*primal)->solssize = 0;
143 (*primal)->partialsolssize = 0;
144 (*primal)->nsols = 0;
145 (*primal)->npartialsols = 0;
146 (*primal)->existingsolssize = 0;
147 (*primal)->nexistingsols = 0;
148 (*primal)->nsolsfound = 0;
149 (*primal)->nlimsolsfound = 0;
150 (*primal)->nbestsolsfound = 0;
151 (*primal)->nlimbestsolsfound = 0;
154 (*primal)->updateviolations =
TRUE;
201 for( s = 0; s < primal->
nsols; ++s )
239 for(
i = 1;
i < primal->
nsols; ++
i )
248 primal->
sols[j] = primal->
sols[j-1];
309 assert(cutoffbound <= primal->upperbound);
313 if( cutoffbound < primal->cutoffbound )
323 SCIPsetDebugMsg(
set,
"changing cutoff bound from %g to %g changes objective limit from %g to %g\n",
331 SCIP_CALL(
primalSetCutoffbound(primal, blkmem,
set, stat, transprob, eventfilter, eventqueue, tree, reopt, lp, cutoffbound) );
363 assert(upperbound <= primal->upperbound || stat->
nnodes == 0);
377 cutoffbound =
MIN(cutoffbound, upperbound);
381 cutoffbound = upperbound;
384 if( cutoffbound < primal->cutoffbound )
386 SCIP_CALL(
primalSetCutoffbound(primal, blkmem,
set, stat, prob, eventfilter, eventqueue, tree, reopt, lp, cutoffbound) );
416 if( upperbound < primal->upperbound )
419 SCIP_CALL(
primalSetUpperbound(primal, blkmem,
set, stat, eventfilter, eventqueue, prob, tree, reopt, lp, upperbound) );
453 objlimit =
MIN(objlimit, inf);
456 if( objlimit < primal->cutoffbound )
458 SCIP_CALL(
primalSetCutoffbound(primal, blkmem,
set, stat, transprob, eventfilter, eventqueue, tree, reopt, lp, objlimit) );
462 if( objlimit < primal->upperbound )
464 SCIP_CALL(
primalSetUpperbound(primal, blkmem,
set, stat, eventfilter, eventqueue, transprob, tree, reopt, lp, objlimit) );
494 upperbound =
MIN(upperbound, inf);
500 if( primal->
nsols > 0 )
507 upperbound =
MIN(upperbound,
obj);
511 SCIP_CALL(
primalSetUpperbound(primal, blkmem,
set, stat, eventfilter, eventqueue, transprob, tree, reopt, lp,
SCIPsetInfinity(
set)) );
518 SCIP_CALL(
primalSetCutoffbound(primal, blkmem,
set, stat, transprob, eventfilter, eventqueue, tree, reopt, lp, upperbound) );
521 SCIP_CALL(
primalSetUpperbound(primal, blkmem,
set, stat, eventfilter, eventqueue, transprob, tree, reopt, lp, upperbound) );
543 for(
i = 1;
i < primal->
nsols; ++
i )
642 assert(0 <= insertpos && insertpos < set->limit_maxsol);
661 SCIPsetDebugMsg(
set,
"insert primal solution %p with obj %g at position %d (replace=%u):\n",
662 (
void*)
sol,
obj, insertpos, replace);
669 SCIPmessagePrintWarning(messagehdlr,
"Dual bound %g is larger than the objective of the primal solution %g. The solution might not be optimal.\n",
674 SCIPmessagePrintWarning(messagehdlr,
"Dual bound %g is smaller than the objective of the primal solution %g. The solution might not be optimal.\n",
678#ifdef WITH_DEBUG_SOLUTION
684 SCIPdebugGetSol(
set->scip, &debugsol);
696#ifdef SCIP_DISABLED_CODE
709 SCIP_CALL(
SCIPsolCheck(
sol,
set, messagehdlr, blkmem, stat, transprob,
TRUE,
TRUE,
TRUE,
TRUE, &feasible) );
728 for( pos =
set->limit_maxsol; pos < primal->nsols; ++pos )
744 if( primal->
nsols ==
set->limit_maxsol )
755 for( pos = primal->
nsols-1; pos > insertpos; --pos )
756 primal->
sols[pos] = primal->
sols[pos-1];
759 assert(0 <= insertpos && insertpos < primal->nsols);
809 SCIP_CALL(
SCIPprimalSetUpperbound(primal, blkmem,
set, stat, eventfilter, eventqueue, transprob, tree, reopt, lp,
obj) );
834 SCIP_CALL(
SCIPprimalTransformSol(primal,
sol, blkmem,
set, messagehdlr, stat, origprob, transprob, tree, reopt,
835 lp, eventqueue, eventfilter,
NULL,
NULL, 0, &added) );
837 SCIPsetDebugMsg(
set,
"original solution %p was successfully transferred to the transformed problem space\n",
861 assert(0 <= insertpos && insertpos < set->limit_maxorigsol);
872 for( pos =
set->limit_maxorigsol-1; pos < primal->nsols; ++pos )
879 for( pos = primal->
nsols-1; pos > insertpos; --pos )
880 primal->
sols[pos] = primal->
sols[pos-1];
882 assert(0 <= insertpos && insertpos < primal->nsols);
912 SCIPerrorMessage(
"Cannot add partial solution to storage: limit reached.\n");
950 right = primal->
nsols;
951 while( left < right-1 )
953 middle = (left+right)/2;
954 assert(left < middle && middle < right);
955 assert(0 <= middle && middle < primal->nsols);
959 if(
obj < middleobj )
995 right = primal->
nsols;
996 while( left < right-1 )
998 middle = (left+right)/2;
999 assert(left < middle && middle < right);
1000 assert(0 <= middle && middle < primal->nsols);
1002 if(
obj < middleobj )
1032 assert(0 <= (*insertpos) && (*insertpos) <= primal->
nsols);
1040 for(
i = (*insertpos)-1;
i >= 0; --
i )
1066 for(
i = (*insertpos);
i < primal->
nsols; ++
i )
1109 assert(0 <= insertpos && insertpos <= primal->nsols);
1114 for(
i = insertpos-1;
i >= 0; --
i )
1129 for(
i = insertpos;
i < primal->
nsols; ++
i )
1176 if( (*insertpos) <
set->limit_maxsol &&
1248#ifdef SCIP_MORE_DEBUG
1252 assert(insertpos >= 0 && insertpos < set->limit_maxsol);
1259 tree, reopt, lp, eventqueue, eventfilter, &solcopy, insertpos, replace) );
1260#ifdef SCIP_MORE_DEBUG
1261 for(
i = 0;
i < primal->
nsols - 1; ++
i )
1306 assert(insertpos >= 0 && insertpos < set->limit_maxsol);
1310 tree, reopt, lp, eventqueue, eventfilter,
sol, insertpos, replace) );
1367 assert(insertpos >= 0 && insertpos < set->limit_maxorigsol);
1417 assert(insertpos >= 0 && insertpos < set->limit_maxorigsol);
1493 tree, reopt, lp, eventqueue, eventfilter, primal->
currentsol, stored) );
1534 checklprows = checklprows ||
set->misc_exactsolve;
1542 checkintegrality, checklprows, &feasible) );
1551 assert(insertpos >= 0 && insertpos < set->limit_maxsol);
1558 tree, reopt, lp, eventqueue, eventfilter, &solcopy, insertpos, replace) );
1606 checklprows = checklprows ||
set->misc_exactsolve;
1614 checkintegrality, checklprows, &feasible) );
1621 assert(insertpos >= 0 && insertpos < set->limit_maxsol);
1625 tree, reopt, lp, eventqueue, eventfilter,
sol, insertpos, replace) );
1671 tree, reopt, lp, eventqueue, eventfilter, primal->
currentsol,
1672 printreason, completely,
FALSE, checkintegrality, checklprows, stored) );
1719 assert(0 <= idx && idx < primal->nexistingsols);
1721 if( idx < primal->nexistingsols-1 )
1772 for(
i = 0;
i < primal->
nsols; ++
i )
1786 if( primal->
nsols > 0 )
1794 SCIP_CALL(
SCIPprimalSetUpperbound(primal, blkmem,
set, stat, eventfilter, eventqueue, transprob, tree, reopt, lp,
obj) );
1846 assert(solvalssize == 0 || solvalset !=
NULL);
1852 assert(solvalssize == 0 || solvalssize >= ntransvars);
1854 SCIPsetDebugMsg(
set,
"try to transfer original solution %p with objective %g into the transformed problem space\n",
1858 localarrays = (solvalssize == 0);
1866 localsolvals = solvals;
1867 localsolvalset = solvalset;
1881 for( v = 0; v < norigvars && feasible; ++v )
1902 SCIPsetDebugMsg(
set,
"original variable <%s> (solval=%g) resolves to fixed variable <%s> (original solval=%g)\n",
1916 SCIPsetDebugMsg(
set,
"original variable <%s> (solval=%g) resolves to active variable <%s> with assigned solval %g (original solval=%g)\n",
1949 for( v = 0; v < ntransvars; ++v )
1951 if( localsolvalset[v] )
1958 tree, reopt, lp, eventqueue, eventfilter, &transsol,
FALSE,
FALSE,
TRUE,
TRUE,
TRUE, added) );
1960 SCIPsetDebugMsg(
set,
"solution transferred, %d/%d active variables set (stored=%u)\n", nvarsset, ntransvars, *added);
#define SCIPdebugSolIsEnabled(scip)
common defines and data types used in all packages of SCIP
#define SCIP_LONGINT_FORMAT
SCIP_RETCODE SCIPdispPrintLine(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, FILE *file, SCIP_Bool forcedisplay, SCIP_Bool endline)
internal methods for displaying runtime statistics
SCIP_RETCODE SCIPeventChgSol(SCIP_EVENT *event, SCIP_SOL *sol)
SCIP_RETCODE SCIPeventProcess(SCIP_EVENT *event, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTFILTER *eventfilter)
SCIP_RETCODE SCIPeventChgType(SCIP_EVENT *event, SCIP_EVENTTYPE eventtype)
internal methods for managing events
SCIP_SOLORIGIN SCIPsolGetOrigin(SCIP_SOL *sol)
SCIP_Real SCIPsolGetOrigObj(SCIP_SOL *sol)
SCIP_Real SCIPsolGetTime(SCIP_SOL *sol)
SCIP_Longint SCIPsolGetNodenum(SCIP_SOL *sol)
SCIP_HEUR * SCIPsolGetHeur(SCIP_SOL *sol)
SCIP_Bool SCIPsolIsOriginal(SCIP_SOL *sol)
int SCIPsolGetDepth(SCIP_SOL *sol)
SCIP_Bool SCIPsolIsPartial(SCIP_SOL *sol)
int SCIPsolGetRunnum(SCIP_SOL *sol)
void SCIPsolSetHeur(SCIP_SOL *sol, SCIP_HEUR *heur)
SCIP_Real SCIPgetDualbound(SCIP *scip)
SCIP_Real SCIPgetLowerbound(SCIP *scip)
SCIP_Bool SCIPvarIsActive(SCIP_VAR *var)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
int SCIPvarGetProbindex(SCIP_VAR *var)
const char * SCIPvarGetName(SCIP_VAR *var)
assert(minobj< SCIPgetCutoffbound(scip))
SCIP_RETCODE SCIPlpSetCutoffbound(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob, SCIP_Real cutoffbound)
internal methods for LP management
#define BMSfreeMemory(ptr)
#define BMSreallocMemoryArray(ptr, num)
#define BMSclearMemoryArray(ptr, num)
struct BMS_BlkMem BMS_BLKMEM
#define BMSfreeMemoryArrayNull(ptr)
#define BMSallocMemory(ptr)
void SCIPmessagePrintWarning(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...)
SCIP_RETCODE SCIPprimalAddCurrentSol(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_HEUR *heur, SCIP_Bool *stored)
void SCIPprimalSetUpdateViolations(SCIP_PRIMAL *primal, SCIP_Bool updateviolations)
SCIP_RETCODE SCIPprimalUpdateRay(SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *primalray, BMS_BLKMEM *blkmem)
void SCIPprimalSolFreed(SCIP_PRIMAL *primal, SCIP_SOL *sol)
static SCIP_RETCODE primalAddSol(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_SOL **solptr, int insertpos, SCIP_Bool replace)
static SCIP_Bool origsolOfInterest(SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_SOL *sol, int *insertpos)
SCIP_RETCODE SCIPprimalSetUpperbound(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_Real upperbound)
static int primalSearchSolPos(SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_SOL *sol)
SCIP_RETCODE SCIPprimalAddOrigSolFree(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_SOL **sol, SCIP_Bool *stored)
SCIP_RETCODE SCIPprimalTryCurrentSol(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_HEUR *heur, SCIP_Bool printreason, SCIP_Bool completely, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *stored)
static SCIP_RETCODE ensureExistingsolsSize(SCIP_PRIMAL *primal, SCIP_SET *set, int num)
void SCIPprimalAddOrigObjoffset(SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_Real addval)
SCIP_RETCODE SCIPprimalFree(SCIP_PRIMAL **primal, BMS_BLKMEM *blkmem)
static SCIP_Bool primalExistsOrigSol(SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_SOL *sol, int insertpos)
static SCIP_RETCODE primalAddOrigSol(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_SOL *sol, int insertpos)
SCIP_SOL * SCIPprimalGetRay(SCIP_PRIMAL *primal)
SCIP_RETCODE SCIPprimalTrySolFree(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_SOL **sol, SCIP_Bool printreason, SCIP_Bool completely, SCIP_Bool checkbounds, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *stored)
SCIP_Bool SCIPprimalUpdateViolations(SCIP_PRIMAL *primal)
SCIP_Bool SCIPprimalUpperboundIsSol(SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob)
static SCIP_RETCODE ensureSolsSize(SCIP_PRIMAL *primal, SCIP_SET *set, int num)
static void sortPrimalSols(SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_PROB *origprob, SCIP_PROB *transprob)
SCIP_RETCODE SCIPprimalAddOrigSol(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_SOL *sol, SCIP_Bool *stored)
static SCIP_RETCODE primalSetCutoffbound(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_Real cutoffbound)
void SCIPprimalUpdateVarObj(SCIP_PRIMAL *primal, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real newobj)
SCIP_RETCODE SCIPprimalCreate(SCIP_PRIMAL **primal)
SCIP_RETCODE SCIPprimalUpdateObjoffset(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp)
static SCIP_RETCODE primalLinkCurrentSol(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_HEUR *heur)
SCIP_RETCODE SCIPprimalTrySol(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_SOL *sol, SCIP_Bool printreason, SCIP_Bool completely, SCIP_Bool checkbounds, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *stored)
SCIP_RETCODE SCIPprimalTransformSol(SCIP_PRIMAL *primal, SCIP_SOL *sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_Real *solvals, SCIP_Bool *solvalset, int solvalssize, SCIP_Bool *added)
SCIP_RETCODE SCIPprimalUpdateObjlimit(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp)
SCIP_RETCODE SCIPprimalAddSolFree(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_SOL **sol, SCIP_Bool *stored)
static SCIP_RETCODE primalSetUpperbound(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_Real upperbound)
SCIP_RETCODE SCIPprimalAddSol(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_SOL *sol, SCIP_Bool *stored)
static int primalSearchOrigSolPos(SCIP_PRIMAL *primal, SCIP_SOL *sol)
SCIP_RETCODE SCIPprimalSetCutoffbound(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_Real cutoffbound, SCIP_Bool useforobjlimit)
static SCIP_Bool solOfInterest(SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_SOL *sol, int *insertpos, SCIP_Bool *replace)
SCIP_RETCODE SCIPprimalSolCreated(SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_SOL *sol)
SCIP_RETCODE SCIPprimalRetransformSolutions(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp)
SCIP_RETCODE SCIPprimalClear(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem)
static SCIP_Bool primalExistsSol(SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_SOL *sol, int *insertpos, SCIP_Bool *replace)
static SCIP_RETCODE ensurePartialsolsSize(SCIP_PRIMAL *primal, SCIP_SET *set, int num)
static SCIP_RETCODE primalAddOrigPartialSol(SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_PROB *prob, SCIP_SOL *sol)
internal methods for collecting primal CIP solutions and primal informations
SCIP_Real SCIPprobGetObjlim(SCIP_PROB *prob, SCIP_SET *set)
SCIP_OBJSENSE SCIPprobGetObjsense(SCIP_PROB *prob)
void SCIPprobSetObjlim(SCIP_PROB *prob, SCIP_Real objlim)
SCIP_Bool SCIPprobIsObjIntegral(SCIP_PROB *prob)
int SCIPprobGetNVars(SCIP_PROB *prob)
SCIP_Real SCIPprobExternObjval(SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_SET *set, SCIP_Real objval)
SCIP_VAR ** SCIPprobGetVars(SCIP_PROB *prob)
SCIP_Real SCIPprobInternObjval(SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_SET *set, SCIP_Real objval)
internal methods for storing and manipulating the main problem
public methods for message output
public methods for problem variables
data structures and methods for collecting reoptimization information
public methods for querying solving statistics
SCIP_Bool SCIPsetIsGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIPsetFeasCeil(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPsetIsFeasGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsFeasLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIPsetEpsilon(SCIP_SET *set)
SCIP_Bool SCIPsetIsEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_STAGE SCIPsetGetStage(SCIP_SET *set)
SCIP_Real SCIPsetInfinity(SCIP_SET *set)
SCIP_Bool SCIPsetIsLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsInfinity(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPsetIsGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIPsetCutoffbounddelta(SCIP_SET *set)
SCIP_Bool SCIPsetIsFeasGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
int SCIPsetCalcMemGrowSize(SCIP_SET *set, int num)
internal methods for global SCIP settings
#define SCIPsetFreeBufferArray(set, ptr)
#define SCIPsetAllocBufferArray(set, ptr, num)
void SCIPsolUpdateVarObj(SCIP_SOL *sol, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real newobj)
void SCIPsolSetPrimalIndex(SCIP_SOL *sol, int primalindex)
int SCIPsolGetPrimalIndex(SCIP_SOL *sol)
SCIP_RETCODE SCIPsolLinkCurrentSol(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_LP *lp)
SCIP_RETCODE SCIPsolCheck(SCIP_SOL *sol, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_Bool printreason, SCIP_Bool completely, SCIP_Bool checkbounds, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *feasible)
SCIP_RETCODE SCIPsolFree(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_PRIMAL *primal)
SCIP_RETCODE SCIPsolRetransform(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_Bool *hasinfval)
SCIP_RETCODE SCIPsolCreateCurrentSol(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_LP *lp, SCIP_HEUR *heur)
SCIP_RETCODE SCIPsolTransform(SCIP_SOL *sol, SCIP_SOL **transsol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PRIMAL *primal)
SCIP_RETCODE SCIPsolSetVal(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_VAR *var, SCIP_Real val)
SCIP_Real SCIPsolGetVal(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var)
SCIP_RETCODE SCIPsolUnlink(SCIP_SOL *sol, SCIP_SET *set, SCIP_PROB *prob)
SCIP_Bool SCIPsolsAreEqual(SCIP_SOL *sol1, SCIP_SOL *sol2, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob)
SCIP_Real SCIPsolGetObj(SCIP_SOL *sol, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob)
SCIP_RETCODE SCIPsolPrint(SCIP_SOL *sol, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_PROB *transprob, FILE *file, SCIP_Bool mipstart, SCIP_Bool printzeros)
void SCIPsolUpdateVarsum(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_Real weight)
SCIP_RETCODE SCIPsolCopy(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *primal, SCIP_SOL *sourcesol)
SCIP_RETCODE SCIPsolCreate(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_HEUR *heur)
void SCIPsolOrigAddObjval(SCIP_SOL *sol, SCIP_Real addval)
internal methods for storing primal CIP solutions
internal methods for problem statistics
SCIP_Longint nlimbestsolsfound
SCIP_Longint nbestsolsfound
SCIP_Bool updateviolations
SCIP_Longint nlimsolsfound
SCIP_Real firstprimaltime
SCIP_HEUR * firstprimalheur
SCIP_Longint nnodesbeforefirst
SCIP_Real firstprimalbound
datastructures for managing events
SCIP_NODE * SCIPtreeGetCurrentNode(SCIP_TREE *tree)
int SCIPtreeGetCurrentDepth(SCIP_TREE *tree)
SCIP_RETCODE SCIPtreeCutoff(SCIP_TREE *tree, SCIP_REOPT *reopt, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real cutoffbound)
SCIP_Bool SCIPtreeInRepropagation(SCIP_TREE *tree)
internal methods for branch and bound tree
#define SCIP_EVENTTYPE_POORSOLFOUND
struct SCIP_EventFilter SCIP_EVENTFILTER
struct SCIP_EventQueue SCIP_EVENTQUEUE
#define SCIP_EVENTTYPE_BESTSOLFOUND
struct SCIP_Event SCIP_EVENT
struct SCIP_Heur SCIP_HEUR
struct SCIP_Messagehdlr SCIP_MESSAGEHDLR
struct SCIP_Primal SCIP_PRIMAL
struct SCIP_Prob SCIP_PROB
struct SCIP_Reopt SCIP_REOPT
enum SCIP_Retcode SCIP_RETCODE
@ SCIP_SOLORIGIN_ORIGINAL
struct SCIP_Stat SCIP_STAT
struct SCIP_Tree SCIP_TREE
@ SCIP_VARSTATUS_MULTAGGR
SCIP_RETCODE SCIPvarGetProbvarSum(SCIP_VAR **var, SCIP_SET *set, SCIP_Real *scalar, SCIP_Real *constant)
internal methods for problem variables
void SCIPvisualUpperbound(SCIP_VISUAL *visual, SCIP_SET *set, SCIP_STAT *stat, SCIP_Real upperbound)
void SCIPvisualFoundSolution(SCIP_VISUAL *visual, SCIP_SET *set, SCIP_STAT *stat, SCIP_NODE *node, SCIP_Bool bettersol, SCIP_SOL *sol)
methods for creating output for visualization tools (VBC, BAK)