63 assert(num <= primal->solssize);
83 newsize = MIN(newsize, set->limit_maxorigsol);
88 assert(num <= primal->partialsolssize);
111 assert(num <= primal->existingsolssize);
121 assert(primal != NULL);
124 (*primal)->sols = NULL;
125 (*primal)->partialsols = NULL;
126 (*primal)->existingsols = NULL;
127 (*primal)->currentsol = NULL;
128 (*primal)->primalray = NULL;
129 (*primal)->solssize = 0;
130 (*primal)->partialsolssize = 0;
131 (*primal)->nsols = 0;
132 (*primal)->npartialsols = 0;
133 (*primal)->existingsolssize = 0;
134 (*primal)->nexistingsols = 0;
135 (*primal)->nsolsfound = 0;
136 (*primal)->nlimsolsfound = 0;
137 (*primal)->nbestsolsfound = 0;
138 (*primal)->nlimbestsolsfound = 0;
141 (*primal)->updateviolations =
TRUE;
154 assert(primal != NULL);
155 assert(*primal != NULL);
158 if( (*primal)->currentsol != NULL )
164 if( (*primal)->primalray != NULL )
170 for( s = 0; s < (*primal)->nsols; ++s )
175 for( s = 0; s < (*primal)->npartialsols; ++s )
179 assert((*primal)->nexistingsols == 0);
197 assert(primal != NULL);
198 assert(*primal != NULL);
201 if( (*primal)->currentsol != NULL )
207 if( (*primal)->primalray != NULL )
213 for( s = 0; s < (*primal)->nsols; ++s )
218 (*primal)->currentsol = NULL;
219 (*primal)->primalray = NULL;
220 (*primal)->nsols = 0;
221 (*primal)->nsolsfound = 0;
222 (*primal)->nlimsolsfound = 0;
223 (*primal)->nbestsolsfound = 0;
224 (*primal)->nlimbestsolsfound = 0;
227 (*primal)->updateviolations =
TRUE;
247 assert(primal != NULL);
282 assert(primal != NULL);
284 assert(cutoffbound <= primal->upperbound);
285 assert(transprob != NULL);
286 assert(origprob != NULL);
288 if( cutoffbound < primal->cutoffbound )
298 SCIPsetDebugMsg(
set,
"changing cutoff bound from %g to %g changes objective limit from %g to %g\n",
334 assert(primal != NULL);
335 assert(stat != NULL);
337 assert(upperbound <= primal->upperbound || stat->
nnodes == 0);
351 cutoffbound = MIN(cutoffbound, upperbound);
355 cutoffbound = upperbound;
358 if( cutoffbound < primal->cutoffbound )
386 assert(primal != NULL);
389 if( upperbound < primal->upperbound )
420 assert(primal != NULL);
425 objlimit = MIN(objlimit, inf);
428 if( objlimit < primal->cutoffbound )
434 if( objlimit < primal->upperbound )
463 assert(primal != NULL);
469 upperbound = MIN(upperbound, inf);
472 for( i = 1; i < primal->
nsols; ++i )
474 sol = primal->
sols[i];
476 for( j = i; j > 0 && objval <
SCIPsolGetObj(primal->
sols[j-1],
set, transprob, origprob); --j )
477 primal->
sols[j] = primal->
sols[j-1];
478 primal->
sols[j] = sol;
482 if( primal->
nsols > 0 )
489 upperbound = MIN(upperbound, obj);
517 assert(primal != NULL);
525 for( i = 1; i < primal->
nsols; ++i )
550 assert(primal != NULL);
560 assert(primal != NULL);
574 assert(primal != NULL);
576 assert(stat != NULL);
577 assert(primalray != NULL);
578 assert(blkmem != NULL);
619 assert(primal != NULL);
621 assert(solptr != NULL);
622 assert(stat != NULL);
623 assert(transprob != NULL);
624 assert(origprob != NULL);
625 assert(0 <= insertpos && insertpos < set->limit_maxsol);
632 SCIPsetDebugMsg(
set,
"insert primal solution %p with obj %g at position %d (replace=%u):\n",
633 (
void*)sol, obj, insertpos, replace);
649 SCIP_CALL(
SCIPsolCheck(sol,
set, messagehdlr, blkmem, stat, transprob,
TRUE,
TRUE,
TRUE,
TRUE, &feasible) );
668 for( pos = set->limit_maxsol; pos < primal->nsols; ++pos )
672 primal->
nsols = MIN(primal->
nsols, set->limit_maxsol);
680 sol = primal->
sols[insertpos];
684 if( primal->
nsols == set->limit_maxsol )
691 assert(primal->
nsols <= set->limit_maxsol);
695 for( pos = primal->
nsols-1; pos > insertpos; --pos )
696 primal->
sols[pos] = primal->
sols[pos-1];
699 assert(0 <= insertpos && insertpos < primal->nsols);
700 primal->
sols[insertpos] = sol;
722 SCIPsetDebugMsg(
set,
"First Solution stored in problem specific statistics.\n");
727 SCIPsetDebugMsg(
set,
" -> stored at position %d of %d solutions, found %" SCIP_LONGINT_FORMAT
" solutions\n",
741 if( obj < primal->cutoffbound && insertpos == 0 )
770 SCIP_CALL(
SCIPprimalTransformSol(primal, sol, blkmem,
set, messagehdlr, stat, origprob, transprob, tree, reopt,
771 lp, eventqueue, eventfilter, NULL, NULL, 0, &added) );
773 SCIPsetDebugMsg(
set,
"original solution %p was successfully transferred to the transformed problem space\n",
794 assert(primal != NULL);
796 assert(prob != NULL);
798 assert(0 <= insertpos && insertpos < set->limit_maxorigsol);
799 assert(!set->reopt_enable);
809 for( pos = set->limit_maxorigsol-1; pos < primal->nsols; ++pos )
815 primal->
nsols = MIN(primal->
nsols+1, set->limit_maxorigsol);
816 for( pos = primal->
nsols-1; pos > insertpos; --pos )
817 primal->
sols[pos] = primal->
sols[pos-1];
819 assert(0 <= insertpos && insertpos < primal->nsols);
820 primal->
sols[insertpos] = sol;
827 SCIPsetDebugMsg(
set,
" -> stored at position %d of %d solutions, found %" SCIP_LONGINT_FORMAT
" solutions\n",
843 assert(primal != NULL);
845 assert(prob != NULL);
850 SCIPerrorMessage(
"Cannot add partial solution to storage: limit reached.\n");
854 SCIPsetDebugMsg(
set,
"insert partial solution candidate %p:\n", (
void*)sol);
882 assert(primal != NULL);
888 right = primal->
nsols;
889 while( left < right-1 )
891 middle = (left+right)/2;
892 assert(left < middle && middle < right);
893 assert(0 <= middle && middle < primal->nsols);
895 middleobj =
SCIPsolGetObj(sols[middle],
set, transprob, origprob);
897 if( obj < middleobj )
902 assert(left == right-1);
928 assert(primal != NULL);
933 right = primal->
nsols;
934 while( left < right-1 )
936 middle = (left+right)/2;
937 assert(left < middle && middle < right);
938 assert(0 <= middle && middle < primal->nsols);
940 if( obj < middleobj )
945 assert(left == right-1);
967 assert(primal != NULL);
968 assert(insertpos != NULL);
969 assert(replace != NULL);
970 assert(0 <= (*insertpos) && (*insertpos) <= primal->
nsols);
974 assert(primal->
sols != NULL || primal->
nsols == 0);
975 assert(primal->
sols != NULL || (*insertpos) == 0);
978 for( i = (*insertpos)-1; i >= 0; --i )
1004 for( i = (*insertpos); i < primal->
nsols; ++i )
1046 assert(primal != NULL);
1047 assert(0 <= insertpos && insertpos <= primal->nsols);
1052 for( i = insertpos-1; i >= 0; --i )
1067 for( i = insertpos; i < primal->
nsols; ++i )
1105 if( (!set->misc_improvingsols || obj < primal->cutoffbound) && !
SCIPsetIsInfinity(
set, obj) )
1114 if( (*insertpos) < set->limit_maxsol &&
1115 (!
primalExistsSol(primal,
set, stat, origprob, transprob, sol, insertpos, replace) || (*replace)) )
1138 if( !set->reopt_enable && (*insertpos) < set->limit_maxorigsol && !
primalExistsOrigSol(primal,
set, stat, origprob, sol, *insertpos) )
1165 assert(primal != NULL);
1166 assert(blkmem != NULL);
1167 assert(
set != NULL);
1168 assert(messagehdlr != NULL);
1169 assert(stat != NULL);
1170 assert(origprob != NULL);
1171 assert(transprob != NULL);
1172 assert(tree != NULL);
1174 assert(eventqueue != NULL);
1175 assert(eventfilter != NULL);
1176 assert(sol != NULL);
1177 assert(stored != NULL);
1183 if(
solOfInterest(primal,
set, stat, origprob, transprob, sol, &insertpos, &replace) )
1186 #ifdef SCIP_MORE_DEBUG 1190 assert(insertpos >= 0 && insertpos < set->limit_maxsol);
1197 tree, reopt, lp, eventqueue, eventfilter, &solcopy, insertpos, replace) );
1198 #ifdef SCIP_MORE_DEBUG 1199 for( i = 0; i < primal->
nsols - 1; ++i )
1233 assert(primal != NULL);
1234 assert(transprob != NULL);
1235 assert(origprob != NULL);
1236 assert(sol != NULL);
1237 assert(*sol != NULL);
1238 assert(stored != NULL);
1242 if(
solOfInterest(primal,
set, stat, origprob, transprob, *sol, &insertpos, &replace) )
1244 assert(insertpos >= 0 && insertpos < set->limit_maxsol);
1248 tree, reopt, lp, eventqueue, eventfilter, sol, insertpos, replace) );
1262 assert(*sol == NULL);
1280 assert(primal != NULL);
1281 assert(blkmem != NULL);
1282 assert(
set != NULL);
1283 assert(stat != NULL);
1284 assert(sol != NULL);
1286 assert(stored != NULL);
1305 assert(insertpos >= 0 && insertpos < set->limit_maxorigsol);
1306 assert(!set->reopt_enable);
1335 assert(primal != NULL);
1336 assert(sol != NULL);
1337 assert(*sol != NULL);
1339 assert(stored != NULL);
1355 assert(insertpos >= 0 && insertpos < set->limit_maxorigsol);
1356 assert(!set->reopt_enable);
1373 assert(*sol == NULL);
1391 assert(primal != NULL);
1424 assert(primal != NULL);
1431 tree, reopt, lp, eventqueue, eventfilter, primal->
currentsol, stored) );
1463 assert(primal != NULL);
1464 assert(
set != NULL);
1465 assert(transprob != NULL);
1466 assert(origprob != NULL);
1467 assert(tree != NULL);
1468 assert(sol != NULL);
1469 assert(stored != NULL);
1472 checklprows = checklprows ||
set->misc_exactsolve;
1476 if(
solOfInterest(primal,
set, stat, origprob, transprob, sol, &insertpos, &replace) )
1479 SCIP_CALL(
SCIPsolCheck(sol,
set, messagehdlr, blkmem, stat, transprob, printreason, completely, checkbounds,
1480 checkintegrality, checklprows, &feasible) );
1489 assert(insertpos >= 0 && insertpos < set->limit_maxsol);
1496 tree, reopt, lp, eventqueue, eventfilter, &solcopy, insertpos, replace) );
1533 assert(primal != NULL);
1534 assert(transprob != NULL);
1535 assert(origprob != NULL);
1536 assert(tree != NULL);
1537 assert(sol != NULL);
1538 assert(*sol != NULL);
1539 assert(stored != NULL);
1544 checklprows = checklprows ||
set->misc_exactsolve;
1548 if(
solOfInterest(primal,
set, stat, origprob, transprob, *sol, &insertpos, &replace) )
1551 SCIP_CALL(
SCIPsolCheck(*sol,
set, messagehdlr, blkmem, stat, transprob, printreason, completely, checkbounds,
1552 checkintegrality, checklprows, &feasible) );
1559 assert(insertpos >= 0 && insertpos < set->limit_maxsol);
1563 tree, reopt, lp, eventqueue, eventfilter, sol, insertpos, replace) );
1575 assert(*sol == NULL);
1602 assert(primal != NULL);
1609 tree, reopt, lp, eventqueue, eventfilter, primal->
currentsol,
1610 printreason, completely,
FALSE, checkintegrality, checklprows, stored) );
1622 assert(primal != NULL);
1623 assert(sol != NULL);
1645 assert(primal != NULL);
1646 assert(sol != NULL);
1657 assert(0 <= idx && idx < primal->nexistingsols);
1659 if( idx < primal->nexistingsols-1 )
1677 assert(primal != NULL);
1707 assert(primal != NULL);
1709 for( i = 0; i < primal->
nsols; ++i )
1721 if( primal->
nsols > 0 )
1726 if( obj < primal->cutoffbound )
1777 assert(origprob != NULL);
1778 assert(transprob != NULL);
1780 assert(solvalssize == 0 || solvals != NULL);
1781 assert(solvalssize == 0 || solvalset != NULL);
1783 origvars = origprob->
vars;
1784 norigvars = origprob->
nvars;
1785 transvars = transprob->
vars;
1786 ntransvars = transprob->
nvars;
1787 assert(solvalssize == 0 || solvalssize >= ntransvars);
1789 SCIPsetDebugMsg(
set,
"try to transfer original solution %p with objective %g into the transformed problem space\n",
1793 localarrays = (solvalssize == 0);
1801 localsolvals = solvals;
1802 localsolvalset = solvalset;
1816 for( v = 0; v < norigvars && feasible; ++v )
1837 SCIPsetDebugMsg(
set,
"original variable <%s> (solval=%g) resolves to fixed variable <%s> (original solval=%g)\n",
1851 SCIPsetDebugMsg(
set,
"original variable <%s> (solval=%g) resolves to active variable <%s> with assigned solval %g (original solval=%g)\n",
1860 assert(scalar != 0.0);
1884 for( v = 0; v < ntransvars; ++v )
1886 if( localsolvalset[v] )
1893 tree, reopt, lp, eventqueue, eventfilter, &transsol,
FALSE,
FALSE,
TRUE,
TRUE,
TRUE, added) );
1895 SCIPsetDebugMsg(
set,
"solution transferred, %d/%d active variables set (stored=%u)\n", nvarsset, ntransvars, *added);
1916 assert(primal != NULL);
1927 assert(primal != NULL);
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_Bool SCIPsolIsOriginal(SCIP_SOL *sol)
SCIP_RETCODE SCIPsolUnlink(SCIP_SOL *sol, SCIP_SET *set, SCIP_PROB *prob)
SCIP_Bool SCIPsetIsInfinity(SCIP_SET *set, SCIP_Real val)
SCIP_RETCODE SCIPprimalClear(SCIP_PRIMAL **primal, BMS_BLKMEM *blkmem)
internal methods for managing events
SCIP_Bool SCIPsetIsLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
internal methods for storing primal CIP solutions
void SCIPprimalSolFreed(SCIP_PRIMAL *primal, SCIP_SOL *sol)
#define BMSfreeMemoryArrayNull(ptr)
internal methods for branch and bound tree
static SCIP_RETCODE primalAddOrigSol(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_SOL *sol, int insertpos)
static SCIP_RETCODE primalSetUpperbound(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_Real upperbound)
SCIP_RETCODE SCIPdispPrintLine(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, FILE *file, SCIP_Bool forcedisplay, SCIP_Bool endline)
SCIP_RETCODE SCIPeventChgType(SCIP_EVENT *event, SCIP_EVENTTYPE eventtype)
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 SCIPprimalRetransformSolutions(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp)
SCIP_Real SCIPsetInfinity(SCIP_SET *set)
SCIP_RETCODE SCIPprimalAddOrigSol(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_SOL *sol, SCIP_Bool *stored)
SCIP_RETCODE SCIPsolLinkCurrentSol(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_LP *lp)
SCIP_RETCODE SCIPeventProcess(SCIP_EVENT *event, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTFILTER *eventfilter)
SCIP_RETCODE SCIPsolCopy(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *primal, SCIP_SOL *sourcesol)
enum SCIP_Retcode SCIP_RETCODE
static SCIP_RETCODE ensureSolsSize(SCIP_PRIMAL *primal, SCIP_SET *set, int num)
void SCIPsolSetPrimalIndex(SCIP_SOL *sol, int primalindex)
SCIP_Real SCIPprobInternObjval(SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_SET *set, SCIP_Real objval)
#define SCIPsetAllocBufferArray(set, ptr, num)
int SCIPtreeGetCurrentDepth(SCIP_TREE *tree)
int SCIPvarGetProbindex(SCIP_VAR *var)
SCIP_Bool SCIPsolsAreEqual(SCIP_SOL *sol1, SCIP_SOL *sol2, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob)
SCIP_Real SCIPsetCutoffbounddelta(SCIP_SET *set)
int SCIPsetCalcMemGrowSize(SCIP_SET *set, int num)
SCIP_Real SCIPsolGetTime(SCIP_SOL *sol)
methods for creating output for visualization tools (VBC, BAK)
#define SCIPsetFreeBufferArray(set, ptr)
#define BMSfreeMemory(ptr)
internal methods for LP management
SCIP_SOL * SCIPprimalGetRay(SCIP_PRIMAL *primal)
SCIP_Real SCIPsolGetOrigObj(SCIP_SOL *sol)
internal methods for collecting primal CIP solutions and primal informations
SCIP_Real SCIPsolGetVal(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var)
SCIP_Bool SCIPsetIsGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
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)
SCIP_RETCODE SCIPprimalUpdateObjlimit(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp)
SCIP_Real SCIPprobGetObjlim(SCIP_PROB *prob, SCIP_SET *set)
SCIP_Bool SCIPsetIsLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPeventChgSol(SCIP_EVENT *event, SCIP_SOL *sol)
SCIP_Bool updateviolations
SCIP_Real SCIPsolGetObj(SCIP_SOL *sol, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob)
void SCIPsolUpdateVarsum(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_Real weight)
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)
internal methods for storing and manipulating the main problem
SCIP_Longint nbestsolsfound
static int primalSearchOrigSolPos(SCIP_PRIMAL *primal, SCIP_SOL *sol)
SCIP_Bool SCIPtreeInRepropagation(SCIP_TREE *tree)
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_HEUR * firstprimalheur
SCIP_RETCODE SCIPsolSetVal(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_VAR *var, SCIP_Real val)
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_Real SCIPsetFeasCeil(SCIP_SET *set, SCIP_Real val)
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)
SCIP_HEUR * SCIPsolGetHeur(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)
SCIP_Bool SCIPprimalUpdateViolations(SCIP_PRIMAL *primal)
SCIP_Bool SCIPprobIsObjIntegral(SCIP_PROB *prob)
internal methods for global SCIP settings
SCIP_Bool SCIPsetIsFeasGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsFeasLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPsolTransform(SCIP_SOL *sol, SCIP_SOL **transsol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PRIMAL *primal)
SCIP_RETCODE SCIPprimalSetCutoffbound(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_Real cutoffbound, SCIP_Bool useforobjlimit)
data structures and methods for collecting reoptimization information
internal methods for problem variables
SCIP_RETCODE SCIPprimalSolCreated(SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_SOL *sol)
static SCIP_Bool origsolOfInterest(SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_SOL *sol, int *insertpos)
void SCIPprimalUpdateVarObj(SCIP_PRIMAL *primal, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real newobj)
SCIP_Longint SCIPsolGetNodenum(SCIP_SOL *sol)
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 SCIPsolSetHeur(SCIP_SOL *sol, SCIP_HEUR *heur)
SCIP_RETCODE SCIPsolRetransform(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_Bool *hasinfval)
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 SCIPsolOrigAddObjval(SCIP_SOL *sol, SCIP_Real addval)
static SCIP_RETCODE primalAddOrigPartialSol(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_SOL *sol)
static SCIP_RETCODE primalSetCutoffbound(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_EVENTQUEUE *eventqueue, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_Real cutoffbound)
void SCIPprobSetObjlim(SCIP_PROB *prob, SCIP_Real objlim)
SCIP_Longint nnodesbeforefirst
void SCIPprimalSetUpdateViolations(SCIP_PRIMAL *primal, SCIP_Bool updateviolations)
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 SCIPprimalAddOrigSolFree(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_SOL **sol, SCIP_Bool *stored)
SCIP_RETCODE SCIPprimalSetUpperbound(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_Real upperbound)
#define SCIP_EVENTTYPE_BESTSOLFOUND
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)
#define SCIP_EVENTTYPE_POORSOLFOUND
SCIP_RETCODE SCIPlpSetCutoffbound(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob, SCIP_Real cutoffbound)
SCIP_Bool SCIPprimalUpperboundIsSol(SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob)
SCIP_NODE * SCIPtreeGetCurrentNode(SCIP_TREE *tree)
public methods for message output
SCIP_SOLORIGIN SCIPsolGetOrigin(SCIP_SOL *sol)
SCIP_Bool SCIPsetIsGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
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)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
int SCIPsolGetPrimalIndex(SCIP_SOL *sol)
void SCIPsolUpdateVarObj(SCIP_SOL *sol, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real newobj)
internal methods for problem statistics
SCIP_Real firstprimaltime
SCIP_Real firstprimalbound
#define BMSallocMemory(ptr)
#define BMSreallocMemoryArray(ptr, num)
static SCIP_RETCODE ensurePartialsolsSize(SCIP_PRIMAL *primal, SCIP_SET *set, int num)
SCIP_RETCODE SCIPprimalUpdateObjoffset(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp)
int SCIPsolGetDepth(SCIP_SOL *sol)
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_Real SCIPsetEpsilon(SCIP_SET *set)
SCIP_STAGE SCIPsetGetStage(SCIP_SET *set)
SCIP_Real SCIPprobExternObjval(SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_SET *set, SCIP_Real objval)
static int primalSearchSolPos(SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_SOL *sol)
void SCIPprimalAddOrigObjoffset(SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_Real addval)
SCIP_RETCODE SCIPprimalCreate(SCIP_PRIMAL **primal)
SCIP_RETCODE SCIPtreeCutoff(SCIP_TREE *tree, SCIP_REOPT *reopt, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real cutoffbound)
#define BMSclearMemoryArray(ptr, num)
SCIP_Bool SCIPsolIsPartial(SCIP_SOL *sol)
common defines and data types used in all packages of SCIP
static SCIP_RETCODE ensureExistingsolsSize(SCIP_PRIMAL *primal, SCIP_SET *set, int num)
static SCIP_Bool primalExistsOrigSol(SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_SOL *sol, int insertpos)
int SCIPsolGetRunnum(SCIP_SOL *sol)
struct BMS_BlkMem BMS_BLKMEM
SCIP_RETCODE SCIPvarGetProbvarSum(SCIP_VAR **var, SCIP_SET *set, SCIP_Real *scalar, SCIP_Real *constant)
SCIP_RETCODE SCIPprimalFree(SCIP_PRIMAL **primal, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPprimalUpdateRay(SCIP_PRIMAL *primal, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *primalray, BMS_BLKMEM *blkmem)
void SCIPvisualUpperbound(SCIP_VISUAL *visual, SCIP_SET *set, SCIP_STAT *stat, SCIP_Real upperbound)
SCIP_Longint nlimsolsfound
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)
void SCIPvisualFoundSolution(SCIP_VISUAL *visual, SCIP_SET *set, SCIP_STAT *stat, SCIP_NODE *node, SCIP_Bool bettersol, SCIP_SOL *sol)
SCIP_Bool SCIPvarIsActive(SCIP_VAR *var)
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)
SCIP_RETCODE SCIPsolFree(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_PRIMAL *primal)
internal methods for displaying runtime statistics