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 )
643 assert(0 <= insertpos && insertpos < set->limit_maxsol);
662 SCIPsetDebugMsg(
set,
"insert primal solution %p with obj %g at position %d (replace=%u):\n",
663 (
void*)
sol,
obj, insertpos, replace);
670 SCIPmessagePrintWarning(messagehdlr,
"Dual bound %g is larger than the objective of the primal solution %g. The solution might not be optimal.\n",
675 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
685#ifdef SCIP_DISABLED_CODE
698 SCIP_CALL(
SCIPsolCheck(
sol,
set, messagehdlr, blkmem, stat, transprob,
TRUE,
TRUE,
TRUE,
TRUE, &feasible) );
717 for( pos =
set->limit_maxsol; pos < primal->nsols; ++pos )
733 if( primal->
nsols ==
set->limit_maxsol )
744 for( pos = primal->
nsols-1; pos > insertpos; --pos )
745 primal->
sols[pos] = primal->
sols[pos-1];
748 assert(0 <= insertpos && insertpos < primal->nsols);
798 SCIP_CALL(
SCIPprimalSetUpperbound(primal, blkmem,
set, stat, eventfilter, eventqueue, transprob, tree, reopt, lp,
obj) );
823 SCIP_CALL(
SCIPprimalTransformSol(primal,
sol, blkmem,
set, messagehdlr, stat, origprob, transprob, tree, reopt,
824 lp, eventqueue, eventfilter,
NULL,
NULL, 0, &added) );
826 SCIPsetDebugMsg(
set,
"original solution %p was successfully transferred to the transformed problem space\n",
850 assert(0 <= insertpos && insertpos < set->limit_maxorigsol);
861 for( pos =
set->limit_maxorigsol-1; pos < primal->nsols; ++pos )
868 for( pos = primal->
nsols-1; pos > insertpos; --pos )
869 primal->
sols[pos] = primal->
sols[pos-1];
871 assert(0 <= insertpos && insertpos < primal->nsols);
901 SCIPerrorMessage(
"Cannot add partial solution to storage: limit reached.\n");
939 right = primal->
nsols;
940 while( left < right-1 )
942 middle = (left+right)/2;
943 assert(left < middle && middle < right);
944 assert(0 <= middle && middle < primal->nsols);
948 if(
obj < middleobj )
984 right = primal->
nsols;
985 while( left < right-1 )
987 middle = (left+right)/2;
988 assert(left < middle && middle < right);
989 assert(0 <= middle && middle < primal->nsols);
991 if(
obj < middleobj )
1021 assert(0 <= (*insertpos) && (*insertpos) <= primal->
nsols);
1029 for(
i = (*insertpos)-1;
i >= 0; --
i )
1055 for(
i = (*insertpos);
i < primal->
nsols; ++
i )
1098 assert(0 <= insertpos && insertpos <= primal->nsols);
1103 for(
i = insertpos-1;
i >= 0; --
i )
1118 for(
i = insertpos;
i < primal->
nsols; ++
i )
1165 if( (*insertpos) <
set->limit_maxsol &&
1237#ifdef SCIP_MORE_DEBUG
1241 assert(insertpos >= 0 && insertpos < set->limit_maxsol);
1248 tree, reopt, lp, eventqueue, eventfilter, &solcopy, insertpos, replace) );
1249#ifdef SCIP_MORE_DEBUG
1250 for(
i = 0;
i < primal->
nsols - 1; ++
i )
1295 assert(insertpos >= 0 && insertpos < set->limit_maxsol);
1299 tree, reopt, lp, eventqueue, eventfilter,
sol, insertpos, replace) );
1356 assert(insertpos >= 0 && insertpos < set->limit_maxorigsol);
1406 assert(insertpos >= 0 && insertpos < set->limit_maxorigsol);
1482 tree, reopt, lp, eventqueue, eventfilter, primal->
currentsol, stored) );
1523 checklprows = checklprows ||
set->misc_exactsolve;
1531 checkintegrality, checklprows, &feasible) );
1540 assert(insertpos >= 0 && insertpos < set->limit_maxsol);
1547 tree, reopt, lp, eventqueue, eventfilter, &solcopy, insertpos, replace) );
1595 checklprows = checklprows ||
set->misc_exactsolve;
1603 checkintegrality, checklprows, &feasible) );
1610 assert(insertpos >= 0 && insertpos < set->limit_maxsol);
1614 tree, reopt, lp, eventqueue, eventfilter,
sol, insertpos, replace) );
1660 tree, reopt, lp, eventqueue, eventfilter, primal->
currentsol,
1661 printreason, completely,
FALSE, checkintegrality, checklprows, stored) );
1708 assert(0 <= idx && idx < primal->nexistingsols);
1710 if( idx < primal->nexistingsols-1 )
1761 for(
i = 0;
i < primal->
nsols; ++
i )
1775 if( primal->
nsols > 0 )
1783 SCIP_CALL(
SCIPprimalSetUpperbound(primal, blkmem,
set, stat, eventfilter, eventqueue, transprob, tree, reopt, lp,
obj) );
1835 assert(solvalssize == 0 || solvalset !=
NULL);
1841 assert(solvalssize == 0 || solvalssize >= ntransvars);
1843 SCIPsetDebugMsg(
set,
"try to transfer original solution %p with objective %g into the transformed problem space\n",
1847 localarrays = (solvalssize == 0);
1855 localsolvals = solvals;
1856 localsolvalset = solvalset;
1870 for( v = 0; v < norigvars && feasible; ++v )
1891 SCIPsetDebugMsg(
set,
"original variable <%s> (solval=%g) resolves to fixed variable <%s> (original solval=%g)\n",
1905 SCIPsetDebugMsg(
set,
"original variable <%s> (solval=%g) resolves to active variable <%s> with assigned solval %g (original solval=%g)\n",
1938 for( v = 0; v < ntransvars; ++v )
1940 if( localsolvalset[v] )
1947 tree, reopt, lp, eventqueue, eventfilter, &transsol,
FALSE,
FALSE,
TRUE,
TRUE,
TRUE, added) );
1949 SCIPsetDebugMsg(
set,
"solution transferred, %d/%d active variables set (stored=%u)\n", nvarsset, ntransvars, *added);
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 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)