26 #if defined(_WIN32) || defined(_WIN64) 44 #ifdef WITH_DEBUG_SOLUTION 46 #define SCIP_HASHSIZE_DEBUG 500 48 struct SCIP_DebugSolData
71 assert(debugsoldata != NULL);
75 (*debugsoldata)->solnames = NULL;
76 (*debugsoldata)->solvals = NULL;
77 (*debugsoldata)->nsolvals = 0;
78 (*debugsoldata)->solsize = 0;
79 (*debugsoldata)->debugsol = NULL;
81 (*debugsoldata)->solinnode = NULL;
82 (*debugsoldata)->falseptr =
FALSE;
83 (*debugsoldata)->trueptr =
TRUE;
84 (*debugsoldata)->solisachieved =
FALSE;
85 (*debugsoldata)->debugsolval = 0.0;
86 (*debugsoldata)->debugsoldisabled =
TRUE;
87 (*debugsoldata)->warningprinted =
FALSE;
92 #ifdef SCIP_MORE_DEBUG 114 if( strcmp(set->misc_debugsol,
"-") == 0 )
116 if( !debugsoldata->warningprinted )
120 debugsoldata->warningprinted =
TRUE;
126 debugsoldata->warningprinted =
FALSE;
135 const char* solfilename,
156 assert(solfilename != NULL);
157 assert(names != NULL);
158 assert(*names == NULL);
159 assert(vals != NULL);
160 assert(*vals == NULL);
161 assert(nvals != NULL);
162 assert(valssize != NULL);
164 printf(
"***** debug: reading solution file <%s>\n", solfilename);
170 SCIPerrorMessage(
"cannot open solution file <%s> specified in scip/debug.h\n", solfilename);
178 unknownvariablemessage =
FALSE;
199 if( strncasecmp(buf,
"solution status:", 16) == 0 || strncasecmp(buf,
"objective value:", 16) == 0 ||
200 strncasecmp(buf,
"Log started", 11) == 0 || strncasecmp(buf,
"Variable Name", 13) == 0 ||
201 strncasecmp(buf,
"All other variables", 19) == 0 || strncasecmp(buf,
"\n", 1) == 0 ||
202 strncasecmp(buf,
"NAME", 4) == 0 || strncasecmp(buf,
"ENDATA", 6) == 0 )
209 nread = sscanf(buf,
"%s %s %s\n", name, valuestring, objstring);
212 printf(
"invalid input line %d in solution file <%s>: <%s>\n", *nvals + nonvalues, solfilename, name);
221 if( !unknownvariablemessage )
224 name, *nvals + nonvalues, solfilename);
226 unknownvariablemessage =
TRUE;
232 if( strncasecmp(valuestring,
"inv", 3) == 0 )
234 else if( strncasecmp(valuestring,
"+inf", 4) == 0 || strncasecmp(valuestring,
"inf", 3) == 0 )
236 else if( strncasecmp(valuestring,
"-inf", 4) == 0 )
241 nread = sscanf(valuestring,
"%lf", &val);
244 SCIPerrorMessage(
"Invalid solution value <%s> for variable <%s> in line %d of solution file <%s>.\n",
245 valuestring, name, *nvals + nonvalues, solfilename);
252 if( *nvals >= *valssize )
254 *valssize =
MAX(2 * *valssize, (*nvals)+1);
258 assert(*nvals < *valssize);
261 for( i = *nvals; i > 0 && strcmp(name, (*names)[i-1]) < 0; --i )
263 (*names)[i] = (*names)[i-1];
264 (*vals)[i] = (*vals)[i-1];
267 SCIPdebugMsg(set->scip,
"found variable <%s>: value <%g>\n", (*names)[i], val);
280 for( i = 0; i < *nvals; ++i)
287 solvalues[nfound] = (*vals)[i];
292 SCIPdebugMsg(set->scip,
"Debug Solution value is %g.\n", debugsolval);
294 #ifdef SCIP_MORE_DEBUG 297 for( i = 0; i < nfound - 1; ++i)
303 if( debugsolptr != NULL )
316 if( debugsolptr != NULL )
317 *debugsolptr = debugsol;
319 if( debugsolvalptr != NULL )
320 *debugsolvalptr = debugsolval;
325 printf(
"***** debug: read %d non-zero entries (%d variables found)\n", *nvals, nfound);
343 if( !debugSolutionAvailable(
set) )
346 if( debugsoldata == NULL || debugsoldata->nsolvals > 0 )
349 SCIP_CALL( readSolfile(
set, set->misc_debugsol, &debugsoldata->debugsol, &debugsoldata->debugsolval,
350 &debugsoldata->debugsolstage, &(debugsoldata->solnames), &(debugsoldata->solvals), &(debugsoldata->nsolvals),
351 &(debugsoldata->solsize)) );
379 if( !debugSolutionAvailable(
set) )
383 assert(debugsoldata != NULL);
393 SCIPsetDebugMsg(
set,
"Now handling variable <%s>, which has status %d, is of type %d, and was deleted: %d, negated: %d, transformed: %d\n",
437 right = debugsoldata->nsolvals-1;
438 while( left <= right )
440 middle = (left+right)/2;
441 cmp = strcmp(name, debugsoldata->solnames[middle]);
448 *val = scalar * debugsoldata->solvals[middle] + constant;
479 assert(scip != NULL);
485 if( !debugSolutionAvailable(scip->
set) )
490 if( debugsoldata->debugsol == NULL )
493 *sol = debugsoldata->debugsol;
524 if( !debugSolutionAvailable(
set) )
530 assert(debugsoldata != NULL);
532 if( debugsoldata->solisachieved )
538 assert(scip != NULL);
542 if( bestsol != NULL )
557 debugsoldata->solisachieved =
TRUE;
560 return debugsoldata->solisachieved;
576 assert(blkmem != NULL);
577 assert(node != NULL);
578 assert(solcontained != NULL);
581 if( !debugSolutionAvailable(
set) )
585 assert(debugsoldata != NULL);
587 if( debugsoldata ->debugsoldisabled )
589 *solcontained =
FALSE;
594 if( debugsoldata->solinnode == NULL )
601 if( boolptr != NULL )
603 if( boolptr != &debugsoldata->falseptr && boolptr != &debugsoldata->trueptr )
609 *solcontained = *boolptr;
614 *solcontained =
TRUE;
615 if( node->
parent != NULL )
617 SCIP_CALL( isSolutionInNode(blkmem,
set, node->
parent, solcontained) );
623 if( node->
domchg != NULL )
631 for( i = 0; i < (int)domchgbound->
nboundchgs && *solcontained; ++i )
636 SCIP_CALL( getSolutionValue(
set, boundchgs[i].var, &varsol) );
648 SCIPerrorMessage(
"debugging solution was cut off in local node %p at depth %d by inference <%s>[%.15g] %s %.15g\n",
657 *solcontained =
FALSE;
664 SCIP_CALL(
SCIPhashmapSetImage(debugsoldata->solinnode, (
void*)node, *solcontained ? (
void*)(&debugsoldata->trueptr) : (
void*)(&debugsoldata->falseptr)) );
677 assert(debugsoldata != NULL);
698 assert(debugsoldata != NULL);
700 if( debugsoldata->solinnode != NULL )
719 assert(debugsoldata != NULL);
721 for( s = debugsoldata->nsolvals - 1; s >= 0; --s )
727 debugsoldata->nsolvals = 0;
728 debugsoldata->debugsolval= 0.0;
729 debugsoldata->solisachieved =
FALSE;
731 if( debugsoldata->solinnode != NULL)
739 set->debugsoldata = NULL;
755 assert(scip->
set != NULL);
762 if( !debugSolutionAvailable(scip->
set) )
767 assert(conss != NULL || nconss == 0);
768 assert(debugsoldata->debugsol != NULL);
773 if( debugSolIsAchieved(scip->
set) )
779 for( c = nconss - 1; c >= 0; --c )
781 assert(conss[c] != NULL);
836 if( !debugSolutionAvailable(
set) )
840 if( debugSolIsAchieved(
set) )
861 maxactivity = minactivity;
862 for( i = 0; i < nnonz; ++i )
868 SCIP_CALL( getSolutionValue(
set, var, &solval) );
872 minactivity += vals[i] * solval;
873 maxactivity += vals[i] * solval;
875 else if( vals[i] > 0.0 )
880 else if( vals[i] < 0.0 )
886 SCIPsetDebugMsg(
set,
"debugging solution on row <%s>: %g <= [%g,%g] <= %g\n",
892 printf(
"***** debug: row <%s> violates debugging solution (lhs=%.15g, rhs=%.15g, activity=[%.15g,%.15g], local=%u, lpfeastol=%g)\n",
900 for( i = 0; i < nnonz; ++i )
906 printf(
" <= %.15g\n", rhs);
923 assert(scip != NULL);
931 if( !debugSolutionAvailable(scip->
set) )
935 if( debugSolIsAchieved(scip->
set) )
961 assert(scip != NULL);
969 if( !debugSolutionAvailable(scip->
set) )
973 if( debugSolIsAchieved(scip->
set) )
1003 assert(
set != NULL);
1004 assert(blkmem != NULL);
1005 assert(node != NULL);
1006 assert(var != NULL);
1017 if( !debugSolutionAvailable(
set) )
1021 if( debugSolIsAchieved(
set) )
1025 SCIP_CALL( isSolutionInNode(blkmem,
set, node, &solcontained) );
1030 SCIP_CALL( getSolutionValue(
set, var, &varsol) );
1059 assert(
set != NULL);
1060 assert(blkmem != NULL);
1061 assert(node != NULL);
1064 assert(debugsoldata != NULL);
1071 if( !debugSolutionAvailable(
set) )
1075 if( debugSolIsAchieved(
set) )
1084 solisinnode =
FALSE;
1086 SCIP_CALL( isSolutionInNode(blkmem,
set, node, &solisinnode) );
1090 SCIPerrorMessage(
"debugging solution was cut off in local node #%" SCIP_LONGINT_FORMAT
" (%p) at depth %d\n",
1097 if( debugsoldata->solinnode != NULL )
1119 assert(
set != NULL);
1120 assert(var != NULL);
1127 if( !debugSolutionAvailable(
set) )
1131 if( debugSolIsAchieved(
set) )
1135 SCIP_CALL( getSolutionValue(
set, var, &varsol) );
1136 SCIP_CALL( getSolutionValue(
set, vbvar, &vbvarsol) );
1141 vb = vbcoef * vbvarsol + vbconstant;
1145 SCIPerrorMessage(
"invalid variable bound: <%s>[%.15g] %s %.15g<%s>[%.15g] %+.15g\n",
1167 assert(
set != NULL);
1168 assert(var != NULL);
1176 if( !debugSolutionAvailable(
set) )
1180 if( debugSolIsAchieved(
set) )
1184 SCIP_CALL( getSolutionValue(
set, var, &solval) );
1190 if( (solval > 0.5) != varfixing )
1194 SCIP_CALL( getSolutionValue(
set, implvar, &solval) );
1202 SCIPerrorMessage(
"invalid implication <%s> == %d -> <%s> >= %.15g (variable has value %.15g in solution)\n",
1211 SCIPerrorMessage(
"invalid implication <%s> == %d -> <%s> <= %.15g (variable has value %.15g in solution)\n",
1233 assert(
set != NULL);
1234 assert(vars != NULL);
1241 if( !debugSolutionAvailable(
set) )
1245 if( debugSolIsAchieved(
set) )
1251 for( v = 0; v < nvars; ++v )
1253 assert(vars[v] != NULL);
1257 SCIP_CALL( getSolutionValue(
set, vars[v], &solval) );
1265 if( values != NULL && values[v] == 0 )
1266 solval = 1.0 - solval;
1285 SCIPerrorMessage(
"clique violates debugging solution, (at least) variable <%s%s> and variable <%s%s> are both one in the debugging solution\n",
1286 (values == NULL || values[pos1]) ?
"" :
"~",
SCIPvarGetName(vars[pos1]), (values == NULL || values[pos2]) ?
"" :
"~",
SCIPvarGetName(vars[pos2]));
1306 if( !debugSolutionAvailable(
set) )
1313 for( i = 0; i < nbdchginfos; ++i )
1319 bdchginfo = bdchginfos[i];
1320 assert(bdchginfo != NULL);
1323 assert(var != NULL);
1325 if( relaxedbds != NULL )
1326 newbound = relaxedbds[i];
1330 SCIP_CALL( getSolutionValue(
set, var, &solval) );
1381 if( !debugSolutionAvailable(
set) )
1407 if( !debugSolutionAvailable(
set) )
1410 for( i = 0; i < nbdchginfos; ++i )
1414 bdchginfo = bdchginfos[i];
1415 assert(bdchginfo != NULL);
1435 assert(
set != NULL);
1436 assert(blkmem != NULL);
1437 assert(node != NULL);
1438 assert(nbdchginfos == 0 || bdchginfos != NULL);
1445 if( !debugSolutionAvailable(
set) )
1449 if( debugSolIsAchieved(
set) )
1453 SCIP_CALL( isSolutionInNode(blkmem,
set, node, &solcontained) );
1458 if( debugCheckBdchginfos(
set, bdchginfos, relaxedbds, nbdchginfos) )
1464 SCIP_CALL( printBdchginfos(
set, bdchginfos, relaxedbds, nbdchginfos) );
1489 int nforcedbdchgqueued;
1491 assert(
set != NULL);
1492 assert(blkmem != NULL);
1493 assert(node != NULL);
1494 assert(nbdchginfos == 0 || bdchginfos != NULL);
1501 if( !debugSolutionAvailable(
set) )
1505 if( debugSolIsAchieved(
set) )
1509 SCIP_CALL( isSolutionInNode(blkmem,
set, node, &solcontained) );
1514 if( debugCheckBdchginfos(
set, bdchginfos, relaxedbds, nbdchginfos) )
1522 if( debugCheckBdchginfos(
set, bdchgqueued, NULL, nbdchgqueued) )
1530 if( debugCheckBdchginfos(
set, forcedbdchgqueued, NULL, nforcedbdchgqueued) )
1535 if( bdchginfo != NULL )
1537 printf(
" (after resolving bound change ");
1544 SCIP_CALL( printBdchginfos(
set, bdchginfos, relaxedbds, nbdchginfos) );
1547 SCIP_CALL( printBdchginfos(
set, bdchgqueued, NULL, nbdchgqueued) );
1550 SCIP_CALL( printBdchginfos(
set, forcedbdchgqueued, NULL, nforcedbdchgqueued) );
1567 *isvalidinsubtree =
FALSE;
1569 assert(scip->
set != NULL);
1576 if( !debugSolutionAvailable(scip->
set) )
1580 if( debugSolIsAchieved(scip->
set) )
1587 *isvalidinsubtree =
TRUE;
1597 assert(scip != NULL);
1608 assert(scip != NULL);
1609 assert(scip->
set != NULL);
1612 assert(debugsoldata != NULL);
1614 debugsoldata->debugsoldisabled =
FALSE;
1623 assert(scip != NULL);
1624 assert(scip->
set != NULL);
1627 assert(debugsoldata != NULL);
1629 debugsoldata->debugsoldisabled =
TRUE;
1638 assert(scip != NULL);
1639 assert(scip->
set != NULL);
1642 assert(debugsoldata != NULL);
1644 return (!debugsoldata->debugsoldisabled);
1655 assert(scip != NULL);
1656 assert(result != NULL);
1661 if( !SCIPdebugIsMainscip(scip) )
1668 if( !debugSolutionAvailable(scip->
set) )
1672 if( debugSolIsAchieved(scip->
set) )
1683 for( i = 0; i < nvars; ++i )
1691 SCIP_CALL( getSolutionValue(scip->
set, vars[i], &solval) );
1702 SCIPerrorMessage(
"solution value %.15g of <%s> outside bounds loc=[%.15g,%.15g], glb=[%.15g,%.15g]\n",
1722 assert(scip != NULL);
1726 SCIP_PROPTIMING_ALWAYS, 99999999, 0,
SCIP_PRESOLTIMING_FAST, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1727 NULL, propExecDebug, NULL, NULL) );
1743 const char* varname;
1746 assert(scip != NULL);
1747 assert(var != NULL);
1748 assert(scip->
set != NULL);
1751 assert(debugsoldata != NULL);
1760 if( !debugSolutionAvailable(scip->
set) )
1763 if( debugsoldata->debugsol == NULL )
1770 if( debugsoldata->nsolvals >= debugsoldata->solsize )
1772 debugsoldata->solsize =
MAX(2*debugsoldata->solsize, debugsoldata->nsolvals+1);
1776 assert(debugsoldata->nsolvals < debugsoldata->solsize);
1780 for( i = debugsoldata->nsolvals; i > 0 && strcmp(varname, debugsoldata->solnames[i-1]) < 0; --i )
1782 debugsoldata->solnames[i] = debugsoldata->solnames[i-1];
1783 debugsoldata->solvals[i] = debugsoldata->solvals[i-1];
1785 if( i > 0 && strcmp(varname, debugsoldata->solnames[i-1]) == 0 )
1787 if(
REALABS(debugsoldata->solvals[i-1] - val) > 1e-9 )
1789 SCIPerrorMessage(
"already have stored different debugging solution value (%g) for variable <%s>, cannot store %g\n", debugsoldata->solvals[i-1], varname, val);
1794 SCIPdebugMsg(scip,
"already have stored debugging solution value %g for variable <%s>, do not store same value again\n", val, varname);
1795 for( ; i < debugsoldata->nsolvals; ++i )
1797 debugsoldata->solnames[i] = debugsoldata->solnames[i+1];
1798 debugsoldata->solvals[i] = debugsoldata->solvals[i+1];
1806 SCIPdebugMsg(scip,
"add variable <%s>: value <%g>\n", debugsoldata->solnames[i], val);
1807 debugsoldata->solvals[i] = val;
1808 debugsoldata->nsolvals++;
1811 debugsoldata->debugsolval += debugsoldata->solvals[i] *
SCIPvarGetObj(var);
1812 SCIPdebugMsg(scip,
"Debug Solution value is now %g.\n", debugsoldata->debugsolval);
1841 #ifdef SCIP_DEBUG_LP_INTERFACE 1859 assert(scip != NULL);
1869 for( k = 0; k < nrows; ++k )
1883 for( i = 0; i < nrows; ++i )
1886 vecval += coef[i] * matrixval;
1898 assert( idx >= 0 && idx < nrows );
enum SCIP_Result SCIP_RESULT
enum SCIP_BoundType SCIP_BOUNDTYPE
SCIP_Bool SCIPisFeasZero(SCIP *scip, SCIP_Real val)
int SCIPpqueueNElems(SCIP_PQUEUE *pqueue)
SCIP_Bool SCIPsetIsLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsFeasZero(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPisFeasEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPlpDiving(SCIP_LP *lp)
SCIP_NODE * SCIPgetCurrentNode(SCIP *scip)
SCIP_STAGE SCIPgetStage(SCIP *scip)
#define SCIPdebugRemoveNode(blkmem, set, node)
#define BMSfreeMemoryArrayNull(ptr)
internal methods for branch and bound tree
SCIP_Longint SCIPgetNLPIterations(SCIP *scip)
SCIP_Bool SCIPisFeasLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
#define SCIPdebugFreeDebugData(set)
SCIP_Bool SCIPsetIsFeasEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_VAR * SCIPbdchginfoGetVar(SCIP_BDCHGINFO *bdchginfo)
SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)
SCIP_BOUNDCHG * boundchgs
int SCIProwGetNNonz(SCIP_ROW *row)
#define SCIPdebugCheckImplic(set, var, varfixing, implvar, impltype, implbound)
int SCIPgetNOrigVars(SCIP *scip)
#define SCIPdebugSolDataCreate(debugsoldata)
const char * SCIProwGetName(SCIP_ROW *row)
SCIP_Bool SCIPvarIsBinary(SCIP_VAR *var)
SCIP_Real SCIPsetInfinity(SCIP_SET *set)
SCIP_BOUNDTYPE SCIPboundchgGetBoundtype(SCIP_BOUNDCHG *boundchg)
#define SCIPdebugCheckClique(set, vars, values, nvars)
SCIP_Real SCIProwGetLhs(SCIP_ROW *row)
SCIP_RETCODE SCIPhashmapCreate(SCIP_HASHMAP **hashmap, BMS_BLKMEM *blkmem, int mapsize)
#define SCIPdebugCheckRow(set, row)
enum SCIP_Retcode SCIP_RETCODE
SCIP_Real SCIPvarGetNegationConstant(SCIP_VAR *var)
SCIP_VAR ** SCIPgetOrigVars(SCIP *scip)
#define BMSallocMemoryArray(ptr, num)
SCIP_MESSAGEHDLR * SCIPgetMessagehdlr(SCIP *scip)
void * SCIPhashmapGetImage(SCIP_HASHMAP *hashmap, void *origin)
int SCIPnodeGetDepth(SCIP_NODE *node)
#define SCIPfreeBufferArray(scip, ptr)
#define SCIP_DECL_PROPEXEC(x)
#define SCIPdebugCheckVbound(set, var, vbtype, vbvar, vbcoef, vbconstant)
SCIP_VAR * SCIPvarGetNegationVar(SCIP_VAR *var)
internal methods for LP management
SCIP_Bool SCIPconsIsActive(SCIP_CONS *cons)
SCIP_RETCODE SCIPcreateOrigSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
#define SCIP_PRESOLTIMING_FAST
SCIP_Bool SCIPsetIsGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
#define SCIPdebugCheckConflict(blkmem, set, node, bdchginfos, relaxedbds, nliterals)
SCIP_VAR * SCIPfindVar(SCIP *scip, const char *name)
SCIP_FILE * SCIPfopen(const char *path, const char *mode)
struct SCIP_DebugSolData SCIP_DEBUGSOLDATA
SCIP_Real SCIPvarGetUbGlobal(SCIP_VAR *var)
SCIP_Bool SCIPsetIsLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPtreeProbing(SCIP_TREE *tree)
#define SCIPdebugIncludeProp(scip)
#define BMSfreeMemoryArray(ptr)
internal methods for storing and manipulating the main problem
SCIP_Real SCIPsetLpfeastol(SCIP_SET *set)
SCIP_Bool SCIPisLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
#define SCIPdebugCheckInference(blkmem, set, node, var, newbound, boundtype)
SCIP_Bool SCIProwIsLocal(SCIP_ROW *row)
SCIP_Bool SCIPvarIsTransformedOrigvar(SCIP_VAR *var)
int SCIPfeof(SCIP_FILE *stream)
BMS_BLKMEM * SCIPblkmem(SCIP *scip)
SCIP_RETCODE SCIPcheckCons(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool printreason, SCIP_RESULT *result)
struct SCIP_File SCIP_FILE
char * SCIPfgets(char *s, int size, SCIP_FILE *stream)
const char * SCIPconsGetName(SCIP_CONS *cons)
const char * SCIPvarGetName(SCIP_VAR *var)
void SCIPhashmapFree(SCIP_HASHMAP **hashmap)
void SCIPmessagePrintWarning(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...)
#define SCIP_PROPTIMING_ALWAYS
int SCIPgetNLPRows(SCIP *scip)
internal methods for global SCIP settings
SCIP main data structure.
SCIP_Bool SCIPsetIsFeasGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisFeasGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIProwGetRhs(SCIP_ROW *row)
void SCIPverbMessage(SCIP *scip, SCIP_VERBLEVEL msgverblevel, FILE *file, const char *formatstr,...)
void SCIPdummyDebugMethodForSun(void)
SCIP_Bool SCIPconsIsLocal(SCIP_CONS *cons)
#define SCIPdebugCheckBInvRow(scip, r, coef)
#define SCIPdebugCheckLbGlobal(scip, var, lb)
#define SCIPdebugGetSolVal(scip, var, val)
void SCIProwPrint(SCIP_ROW *row, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
SCIP_Bool SCIPsetIsFeasLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_COL ** SCIProwGetCols(SCIP_ROW *row)
#define SCIPdebugCheckUbGlobal(scip, var, ub)
#define BMSduplicateMemoryArray(ptr, source, num)
#define SCIPdebugCheckConss(scip, conss, nconss)
internal methods for problem variables
#define SCIPallocBufferArray(scip, ptr, num)
SCIP_RETCODE SCIPsetSolVal(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var, SCIP_Real val)
SCIP_Real * SCIProwGetVals(SCIP_ROW *row)
public data structures and miscellaneous methods
SCIP_BOUNDCHGTYPE SCIPboundchgGetBoundchgtype(SCIP_BOUNDCHG *boundchg)
void SCIPprintSysError(const char *message)
SCIP_RETCODE SCIPhashmapRemoveAll(SCIP_HASHMAP *hashmap)
int SCIPgetDepth(SCIP *scip)
#define SCIPdebugSolIsValidInSubtree(scip, isvalidinsubtree)
#define SCIPdebugCheckConflictFrontier(blkmem, set, node, bdchginfo, bdchginfos, relaxedbds, nliterals, bdchgqueue, forcedbdchgqueue)
SCIP_RETCODE SCIPfreeSol(SCIP *scip, SCIP_SOL **sol)
SCIP_Real SCIPvarGetObj(SCIP_VAR *var)
SCIP_Real SCIPbdchginfoGetNewbound(SCIP_BDCHGINFO *bdchginfo)
void ** SCIPpqueueElems(SCIP_PQUEUE *pqueue)
SCIP_RETCODE SCIPfixVar(SCIP *scip, SCIP_VAR *var, SCIP_Real fixedval, SCIP_Bool *infeasible, SCIP_Bool *fixed)
SCIP_RETCODE SCIPgetLPBasisInd(SCIP *scip, int *basisind)
SCIP_Real SCIPgetSolOrigObj(SCIP *scip, SCIP_SOL *sol)
SCIP_RETCODE SCIPvarGetOrigvarSum(SCIP_VAR **var, SCIP_Real *scalar, SCIP_Real *constant)
SCIP_Bool SCIPsetIsFeasLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIProwGetConstant(SCIP_ROW *row)
#define SCIPdebugReset(set)
SCIP_DOMCHGBOUND domchgbound
SCIP_RETCODE SCIPhashmapRemove(SCIP_HASHMAP *hashmap, void *origin)
SCIP_SOL * SCIPgetBestSol(SCIP *scip)
SCIP_Bool SCIPisGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_VAR * SCIPcolGetVar(SCIP_COL *col)
#define SCIP_DECL_SORTPTRCOMP(x)
#define BMSfreeMemoryNull(ptr)
public methods for message output
SCIP_Bool SCIPsetIsGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPhashmapSetImage(SCIP_HASHMAP *hashmap, void *origin, void *image)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
#define SCIPdebugSolDisable(scip)
SCIP_NODETYPE SCIPnodeGetType(SCIP_NODE *node)
enum SCIP_Stage SCIP_STAGE
SCIP_RETCODE SCIPincludeProp(SCIP *scip, const char *name, const char *desc, int priority, int freq, SCIP_Bool delay, SCIP_PROPTIMING timingmask, int presolpriority, int presolmaxrounds, SCIP_PRESOLTIMING presoltiming, SCIP_DECL_PROPCOPY((*propcopy)), SCIP_DECL_PROPFREE((*propfree)), SCIP_DECL_PROPINIT((*propinit)), SCIP_DECL_PROPEXIT((*propexit)), SCIP_DECL_PROPINITPRE((*propinitpre)), SCIP_DECL_PROPEXITPRE((*propexitpre)), SCIP_DECL_PROPINITSOL((*propinitsol)), SCIP_DECL_PROPEXITSOL((*propexitsol)), SCIP_DECL_PROPPRESOL((*proppresol)), SCIP_DECL_PROPEXEC((*propexec)), SCIP_DECL_PROPRESPROP((*propresprop)), SCIP_PROPDATA *propdata)
SCIP_DEBUGSOLDATA * SCIPsetGetDebugSolData(SCIP_SET *set)
#define BMSallocMemory(ptr)
#define BMSreallocMemoryArray(ptr, num)
void SCIPsortPtrReal(void **ptrarray, SCIP_Real *realarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), int len)
#define SCIPdebugAddSolVal(scip, var, val)
SCIP_Bool SCIPsetIsFeasGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_VARTYPE SCIPvarGetType(SCIP_VAR *var)
SCIP_OBJSENSE SCIPgetObjsense(SCIP *scip)
SCIP_RETCODE SCIPsetSolVals(SCIP *scip, SCIP_SOL *sol, int nvars, SCIP_VAR **vars, SCIP_Real *vals)
#define SCIPdebugSolIsEnabled(scip)
SCIP_STAGE SCIPsetGetStage(SCIP_SET *set)
int SCIPconsGetActiveDepth(SCIP_CONS *cons)
SCIP_Bool SCIPvarIsTransformed(SCIP_VAR *var)
SCIP_RETCODE SCIPlpiGetCoef(SCIP_LPI *lpi, int row, int col, SCIP_Real *val)
SCIP_BOUNDTYPE SCIPbdchginfoGetBoundtype(SCIP_BDCHGINFO *bdchginfo)
common defines and data types used in all packages of SCIP
struct BMS_BlkMem BMS_BLKMEM
int SCIPfclose(SCIP_FILE *fp)
#define SCIPdebugSolEnable(scip)
SCIP_Bool SCIPvarIsDeleted(SCIP_VAR *var)
SCIP_Bool SCIPisInRestart(SCIP *scip)
#define SCIPdebugFreeSol(set)
SCIP_Bool SCIPvarIsNegated(SCIP_VAR *var)
memory allocation routines