77#define SCIP_HASHSIZE_CERTIFICATE 500
78#define SCIP_MB_TO_CHAR_RATE 1048576.0
188 const char* linename,
202 if( linename ==
NULL )
233 for(
i = 0;
i < len;
i++ )
353 nodedata->derindex_self = fileindex;
367 (*certificate)->messagehdlr = messagehdlr;
368 (*certificate)->lastinfo =
NULL;
369 (*certificate)->blkmem =
NULL;
370 (*certificate)->indexcounter = 0;
371 (*certificate)->indexcounter_ori = 0;
372 (*certificate)->conscounter = 0;
373 (*certificate)->origfile =
NULL;
374 (*certificate)->transfile =
NULL;
375 (*certificate)->origfilename =
NULL;
376 (*certificate)->derivationfile =
NULL;
377 (*certificate)->derivationfilename =
NULL;
378 (*certificate)->filesize = 0.0;
380 (*certificate)->rowdatahash =
NULL;
381 (*certificate)->naggrinfos = 0;
382 (*certificate)->nmirinfos = 0;
383 (*certificate)->aggrinfosize = 0;
384 (*certificate)->mirinfosize = 0;
385 (*certificate)->nodedatahash =
NULL;
386 (*certificate)->rootbound =
NULL;
387 (*certificate)->finalbound =
NULL;
388 (*certificate)->derindex_root = -1;
389 (*certificate)->rootinfeas =
FALSE;
390 (*certificate)->objintegral =
FALSE;
391 (*certificate)->workingmirinfo =
FALSE;
392 (*certificate)->workingaggrinfo =
FALSE;
393 (*certificate)->vals =
NULL;
394 (*certificate)->valssize = 0;
395 (*certificate)->aggrinfo =
NULL;
396 (*certificate)->mirinfo =
NULL;
397 (*certificate)->transfile_initialized =
FALSE;
411 assert((*certificate)->derivationfile ==
NULL);
449 if( !(
set->exact_enable) || (
set->certificate_filename[0] ==
'-' &&
set->certificate_filename[1] ==
'\0') )
452 filenamelen = (int) strlen(
set->certificate_filename);
455 name[filenamelen] =
'\0';
458 "storing certificate information in file <%s>\n",
set->certificate_filename);
463 bufferlen = (int) strlen(name);
483 SCIPerrorMessage(
"error creating file <%s> and auxiliary certificate files\n",
set->certificate_filename);
498 certificate->
blkmem = blkmem;
504 for( j = 0 ; j <
nvars ; j++ )
519 for( j = 0; j <
nvars; j++ )
525 if( strstr(varname,
" ") !=
NULL || strstr(varname,
"\t") !=
NULL || strstr(varname,
"\n") !=
NULL
526 || strstr(varname,
"\v") !=
NULL || strstr(varname,
"\f") !=
NULL || strstr(varname,
"\r") !=
NULL )
528 SCIPerrorMessage(
"Variable name <%s> cannot be printed to certificate file because it contains whitespace.\n",
538 for( j = 0; j <
nvars; j++ )
550 for( j = 0; j <
nvars; j++)
596 for( j = 0; j <
nvars; j++ )
655 SCIPerrorMessage(
"error creating file <%s> and auxiliary certificate files\n",
scip->set->certificate_filename);
663 for( j = 0 ; j <
nvars ; j++ )
678 for( j = 0; j <
nvars; j++ )
684 if( strstr(varname,
" ") !=
NULL || strstr(varname,
"\t") !=
NULL || strstr(varname,
"\n") !=
NULL
685 || strstr(varname,
"\v") !=
NULL || strstr(varname,
"\f") !=
NULL || strstr(varname,
"\r") !=
NULL )
687 SCIPerrorMessage(
"Variable name <%s> cannot be printed to certificate file because it contains whitespace.\n",
697 for( j = 0; j <
nvars; j++ )
709 for( j = 0; j <
nvars; j++)
763 for( j = 0; j <
nvars; j++ )
823 "closing certificate file (wrote approx. %.1f MB%s)\n", certificate->
filesize,
824 printingaborted ?
", aborted printing after reaching max. file size" :
"");
826 if( printingaborted )
828 (void)
SCIPfprintf(certificate->
origfile,
"\n# ... aborted printing: max. file size reached.\n");
829 (void)
SCIPfprintf(certificate->
transfile,
"\n# ... aborted printing: max. file size reached.\n");
842 (void) remove(
set->certificate_filename);
892 return scip->stat->certificate;
956 consistent = consistent && (!needsglobal || certificate->
lastinfo->
isglobal);
1150 const char* formatstr,
1161 va_start(ap, formatstr);
1177 const char* formatstr,
1188 va_start(ap, formatstr);
1206 char* buffer =
NULL;
1234 char* buffer =
NULL;
1255 const char* formatstr,
1268 va_start(ap, formatstr);
1284 const char* formatstr,
1297 va_start(ap, formatstr);
1402 const char* consname,
1419 if( consname ==
NULL )
1428 for(
i = 0;
i < len;
i++ )
1529 std::map<int, SCIP_Real> coefs;
1564 coefs[
varidx] += rowcoef * slackval;
1596 for(
const auto & coef : coefs )
1599 int varindex = coef.first;
1620 for(
const auto & coef : coefs )
1623 int varindex = coef.first;
1642#ifdef SCIP_DISABLED_CODE
1673 assert(index <= certificate->indexcounter);
1679 assert(index <= certificate->indexcounter);
1685 for(
i = 0;
i < nrows; ++
i )
1732 for(
i = 0;
i <
nvars && local;
i++ )
1884 SCIPdebugMessage(
"Correcting for negative continous slacks ( needed for v >= 0 part ) \n");
1904 SCIPdebugMessage(
"Correcting for integer slacks ( needed for v >= 0 part ) \n");
1942 SCIPdebugMessage(
"Verifying right part of split disjunction, multipliers -f/(1-f) and 1/1-f \n");
2058#ifdef SCIP_DISABLED_CODE
2099 const char* boundname,
2128 if( boundname ==
NULL )
2136 if( boundname ==
NULL )
2176 if( newbound ==
NULL )
2273 vals = certificate->
vals;
2280 for(
i = 0;
i < lpexact->
ncols; ++
i )
2313 for(
i = 0;
i < lpexact->
nrows; ++
i )
2316 row = lpexact->
rows[
i];
2344 SCIPrationalDebugMessage(
"Row (index %d, %s has index %l and farkas coef %q ", row->index, row->fprow->name, ind[len], val);
2399 int modifiedvarindex,
2416 assert((modifiedvarindex >= 0 && boundchangeindex >= 0) || (modifiedvarindex == -1 && boundchangeindex == -1) );
2460 dualind[nnonzeros] = boundchangeindex;
2466 dualind[nnonzeros] = boundchangeindex;
2472 assert(nnonzeros == duallen);
2590 if( branchvar !=
NULL )
2593 branchbound, boundtype);
2600 if( branchvar !=
NULL )
2638 nodedata->assumptionindex_left = -1;
2639 nodedata->assumptionindex_right = -1;
2643 nodedata->assumptionindex_self = -1;
2749 for(
i = 0;
i < naggrrows;
i++ )
2769 if( certificateline !=
NULL )
2878 arraypos = aggrinfo->
arpos;
2901 if( arraypos != certificate->
naggrinfos - 1 )
2928 arraypos = mirinfo->
arpos;
2951 if( arraypos != certificate->
nmirinfos - 1 )
3031 SCIPdebugMessage(
"adding aggrinfo, with %d rows to certficate \n", naggrrows);
3044 for(
i = 0;
i < naggrrows;
i++ )
3051 for(
i = 0;
i < nnegslackrows;
i++ )
3108 mirinfo->
scale = 1.0;
3322 switch(
var->varstatus )
3420 switch(
var->varstatus )
3478 int* varsindex =
NULL;
SCIP_RETCODE SCIPcertificatePrintInheritedBound(SCIP_SET *set, SCIP_CERTIFICATE *certificate, SCIP_NODE *node)
SCIP_RETCODE SCIPcertificatePrintAggrrow(SCIP_SET *set, SCIP_PROB *prob, SCIP_CERTIFICATE *certificate, SCIP_AGGRROW *aggrrow, SCIP_ROW **aggrrows, SCIP_Real *weights, int naggrrows, SCIP_Bool local, SCIP_Longint *certificateline)
#define SCIP_MB_TO_CHAR_RATE
SCIP_RETCODE SCIPcertificatePrintDualboundPseudo(SCIP_CERTIFICATE *certificate, SCIP_LPEXACT *lpexact, SCIP_NODE *node, SCIP_SET *set, SCIP_PROB *prob, SCIP_Bool lowerchanged, int modifiedvarindex, SCIP_Longint boundchangeindex, SCIP_Real psval)
SCIP_RETCODE SCIPcertificatePrintResult(SCIP *scip, SCIP_Bool isorigfile, SCIP_SET *set, SCIP_CERTIFICATE *certificate)
#define SCIP_HASHSIZE_CERTIFICATE
SCIP_RETCODE SCIPconsPrintCertificateExactLinear(SCIP *scip, SCIP_CONS *cons)
void SCIPcertificateFree(SCIP_CERTIFICATE **certificate)
static SCIP_RETCODE certificatePrintWeakDerStart(SCIP_CERTIFICATE *certificate, SCIP_PROB *prob, SCIP_Bool local)
SCIP_CERTIFICATE * SCIPgetCertificate(SCIP *scip)
static SCIP_RETCODE certificatePrintSol(SCIP *scip, SCIP_Bool isorigfile, SCIP_CERTIFICATE *certificate, SCIP_SOL *sol)
SCIP_RETCODE SCIPcertificateNewNodeData(SCIP_CERTIFICATE *certificate, SCIP_STAT *stat, SCIP_NODE *node)
SCIP_RETCODE SCIPcertificateClearMirinfo(SCIP *scip)
SCIP_Longint SCIPcertificateGetRowIndex(SCIP_CERTIFICATE *certificate, SCIP_ROWEXACT *row, SCIP_Bool rhs)
static SCIP_RETCODE certificateFreeNodeData(SCIP_CERTIFICATE *certificate, SCIP_NODE *node)
SCIP_RETCODE SCIPcertificatePrintMirCut(SCIP_SET *set, SCIP_LP *lp, SCIP_CERTIFICATE *certificate, SCIP_PROB *prob, SCIP_ROW *row, const char sense)
SCIP_RETCODE SCIPcertificateUpdateParentData(SCIP_CERTIFICATE *certificate, SCIP_NODE *node, SCIP_Longint fileindex, SCIP_RATIONAL *newbound)
SCIP_RETCODE SCIPcertificateInitTransFile(SCIP *scip)
SCIP_RETCODE SCIPcertificateSetLastBoundIndex(SCIP_CERTIFICATE *certificate, SCIP_Longint index)
static void concatenateCertificate(SCIP_CERTIFICATE *certificate)
static SCIP_RETCODE certificatePrintDualbound(SCIP_CERTIFICATE *certificate, const char *linename, SCIP_RATIONAL *lowerbound, int len, SCIP_Longint *ind, SCIP_RATIONAL **val)
SCIP_RETCODE SCIPcertificateFreeMirInfo(SCIP_SET *set, SCIP_CERTIFICATE *certificate, SCIP_LP *lp, SCIP_MIRINFO *mirinfo, SCIP_ROW *row)
void SCIPcertificatePrintRtpInfeas(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile)
void SCIPcertificatePrintVersionHeader(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile)
void SCIPcertificatePrintDerHeader(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile)
static SCIP_RETCODE certificatePrintMirSplit(SCIP_SET *set, SCIP_PROB *prob, SCIP_CERTIFICATE *certificate, SCIP_ROW *row)
SCIP_RETCODE SCIPcertificateUpdateBoundData(SCIP_CERTIFICATE *certificate, SCIP_NODE *node, SCIP_Longint fileindex, SCIP_RATIONAL *newbound)
SCIP_RETCODE SCIPcertificateSaveFinalbound(SCIP *scip, SCIP_CERTIFICATE *certificate)
SCIP_RETCODE SCIPcertificatePrintDualboundExactLP(SCIP_CERTIFICATE *certificate, SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_NODE *node, SCIP_PROB *prob, SCIP_Bool usefarkas)
SCIP_RETCODE SCIPcertificatePrintGlobalBound(SCIP *scip, SCIP_CERTIFICATE *certificate, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_RATIONAL *value, SCIP_Longint certificateindex)
static SCIP_Longint printBoundAssumption(SCIP_CERTIFICATE *certificate, SCIP_VAR *var, SCIP_RATIONAL *boundval, SCIP_BOUNDTYPE boundtype)
SCIP_Longint SCIPcertificateGetLastBoundIndex(SCIP_CERTIFICATE *certificate)
SCIP_RETCODE SCIPcertificatePrintProofRational(SCIP_CERTIFICATE *certificate, SCIP_RATIONAL *val)
SCIP_Bool SCIPcertificateIsEnabled(SCIP_CERTIFICATE *certificate)
static SCIP_Bool certificateIsLeftNode(SCIP_CERTIFICATE *certificate, SCIP_NODE *node)
SCIP_RETCODE SCIPcertificatePrintCutoffBound(SCIP *scip, SCIP_CERTIFICATE *certificate, SCIP_RATIONAL *bound, SCIP_Longint *certificateline)
SCIP_Longint SCIPcertificateGetConsIndex(SCIP_CERTIFICATE *certificate, SCIP_CONS *cons, SCIP_RATIONAL *lhs, SCIP_RATIONAL *rhs, SCIP_Bool useRhs)
void SCIPcertificatePrintConsHeader(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, int nconss, int nboundconss)
SCIP_RETCODE SCIPcertificateClearAggrinfo(SCIP *scip)
void SCIPcertificatePrintIntHeader(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, int nintvars)
SCIP_RETCODE SCIPcertificateExit(SCIP *scip)
SCIP_Longint SCIPcertificateGetCurrentIndex(SCIP_CERTIFICATE *certificate)
SCIP_RETCODE SCIPcertificatePrintUnsplitting(SCIP_SET *set, SCIP_CERTIFICATE *certificate, SCIP_NODE *node)
SCIP_RETCODE SCIPcertificateInit(SCIP *scip, SCIP_CERTIFICATE *certificate, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr)
SCIP_Bool SCIPcertificateEnsureLastBoundInfoConsistent(SCIP_CERTIFICATE *certificate, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_Real newbound, SCIP_Bool needsglobal)
SCIP_RETCODE SCIPcertificateFreeRowInfo(SCIP *scip, SCIP_ROW *row)
SCIP_RETCODE SCIPcertificateFreeAggrInfo(SCIP_SET *set, SCIP_CERTIFICATE *certificate, SCIP_LP *lp, SCIP_AGGREGATIONINFO *aggrinfo, SCIP_ROW *row)
SCIP_RETCODE SCIPcertificateSetAndPrintObjective(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, BMS_BLKMEM *blkmem, SCIP_RATIONAL **coefs, int nvars)
SCIP_RETCODE SCIPcertificatePrintCutoffConflictingBounds(SCIP *scip, SCIP_CERTIFICATE *certificate, SCIP_VAR *var, SCIP_RATIONAL *lb, SCIP_RATIONAL *ub, SCIP_Longint lbindex, SCIP_Longint ubindex)
SCIP_RETCODE SCIPcertificatePrintBoundCons(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, const char *boundname, SCIP_VAR *var, SCIP_RATIONAL *boundval, SCIP_Bool isupper)
SCIP_RETCODE SCIPcertificateCreate(SCIP_CERTIFICATE **certificate, SCIP_MESSAGEHDLR *messagehdlr)
SCIP_Real SCIPcertificateGetFilesize(SCIP_CERTIFICATE *certificate)
SCIP_RETCODE SCIPcertificatePrintCons(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, const char *consname, const char sense, SCIP_RATIONAL *side, int len, int *ind, SCIP_RATIONAL **val)
void SCIPcertificatePrintProofMessage(SCIP_CERTIFICATE *certificate, const char *formatstr,...)
static SCIP_RETCODE certificatePrintRow(SCIP_SET *set, SCIP_CERTIFICATE *certificate, SCIP_ROWEXACT *rowexact, SCIP_Real alternativerhs)
SCIP_RETCODE SCIPcertificatePrintRtpRange(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, SCIP_RATIONAL *lowerbound, SCIP_RATIONAL *upperbound)
void SCIPcertificatePrintProblemComment(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, const char *formatstr,...)
SCIP_RETCODE SCIPcertificateUpdateBranchingData(SCIP_SET *set, SCIP_CERTIFICATE *certificate, SCIP_STAT *stat, SCIP_LP *lp, SCIP_NODE *node, SCIP_VAR *branchvar, SCIP_BOUNDTYPE boundtype, SCIP_Real newbound)
SCIP_RETCODE SCIPcertificateNewAggrInfo(SCIP *scip, SCIP_AGGRROW *aggrrow, SCIP_ROW **aggrrows, SCIP_Real *weights, int naggrrows, SCIP_ROW **negslackrows, SCIP_Real *negslackweights, int nnegslackrows)
void SCIPcertificatePrintProofComment(SCIP_CERTIFICATE *certificate, const char *formatstr,...)
SCIP_RETCODE SCIPcertificateNewMirInfo(SCIP *scip)
void SCIPcertificatePrintProblemMessage(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, const char *formatstr,...)
SCIP_RETCODE SCIPcertificatePrintProblemRational(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, SCIP_RATIONAL *val)
void SCIPcertificatePrintVarHeader(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, int nvars)
static SCIP_Bool checkAndUpdateFilesize(SCIP_CERTIFICATE *certificate, SCIP_Real nchars)
methods for certificate output
Constraint handler for linear constraints in their most general form, .
methods for the aggregation rows
common defines and data types used in all packages of SCIP
SCIP_FILE * SCIPfopen(const char *path, const char *mode)
size_t SCIPfwrite(const void *ptr, size_t size, size_t nmemb, SCIP_FILE *stream)
int SCIPfprintf(SCIP_FILE *stream, const char *format,...)
size_t SCIPfread(void *ptr, size_t size, size_t nmemb, SCIP_FILE *stream)
int SCIPfclose(SCIP_FILE *fp)
int SCIPfputs(const char *s, SCIP_FILE *stream)
static const NodeData nodedata[]
SCIP_RATIONAL * SCIPgetLhsExactLinear(SCIP *scip, SCIP_CONS *cons)
SCIP_RATIONAL * SCIPgetRhsExactLinear(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPcertifyConsOrigExactLinear(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons)
SCIP_ROWEXACT * SCIPgetRowExactExactLinear(SCIP *scip, SCIP_CONS *cons)
SCIP_STATUS SCIPgetStatus(SCIP *scip)
SCIP_RETCODE SCIPgetOrigVarsData(SCIP *scip, SCIP_VAR ***vars, int *nvars, int *nbinvars, int *nintvars, int *nimplvars, int *ncontvars)
SCIP_RETCODE SCIPgetVarsData(SCIP *scip, SCIP_VAR ***vars, int *nvars, int *nbinvars, int *nintvars, int *nimplvars, int *ncontvars)
int SCIPgetNOrigConss(SCIP *scip)
SCIP_CONS ** SCIPgetConss(SCIP *scip)
int SCIPgetNVars(SCIP *scip)
int SCIPgetNConss(SCIP *scip)
SCIP_CONS ** SCIPgetOrigConss(SCIP *scip)
SCIP_Bool SCIPisObjIntegral(SCIP *scip)
void SCIPhashmapFree(SCIP_HASHMAP **hashmap)
void * SCIPhashmapGetImage(SCIP_HASHMAP *hashmap, void *origin)
SCIP_RETCODE SCIPhashmapSetImage(SCIP_HASHMAP *hashmap, void *origin, void *image)
SCIP_RETCODE SCIPhashmapCreate(SCIP_HASHMAP **hashmap, BMS_BLKMEM *blkmem, int mapsize)
SCIP_Bool SCIPhashmapExists(SCIP_HASHMAP *hashmap, void *origin)
SCIP_Bool SCIPhashmapIsEmpty(SCIP_HASHMAP *hashmap)
SCIP_RETCODE SCIPhashmapInsertLong(SCIP_HASHMAP *hashmap, void *origin, SCIP_Longint image)
SCIP_RETCODE SCIPhashmapRemoveAll(SCIP_HASHMAP *hashmap)
SCIP_RETCODE SCIPhashmapRemove(SCIP_HASHMAP *hashmap, void *origin)
SCIP_Longint SCIPhashmapGetImageLong(SCIP_HASHMAP *hashmap, void *origin)
SCIP_RETCODE SCIPlpiExactGetObjval(SCIP_LPIEXACT *lpi, SCIP_RATIONAL *objval)
SCIP_MESSAGEHDLR * SCIPgetMessagehdlr(SCIP *scip)
SCIP_Bool SCIPrealIsExactlyIntegral(SCIP_Real val)
SCIP_Bool SCIPisCertified(SCIP *scip)
SCIP_VAR * SCIPcolGetVar(SCIP_COL *col)
const char * SCIPconshdlrGetName(SCIP_CONSHDLR *conshdlr)
SCIP_CONSHDLR * SCIPconsGetHdlr(SCIP_CONS *cons)
SCIP_RETCODE SCIPprintCons(SCIP *scip, SCIP_CONS *cons, FILE *file)
SCIP_RETCODE SCIPaggrRowCopy(SCIP *scip, SCIP_AGGRROW **aggrrow, SCIP_AGGRROW *source)
SCIP_Real SCIPaggrRowGetRhs(SCIP_AGGRROW *aggrrow)
void SCIPaggrRowFree(SCIP *scip, SCIP_AGGRROW **aggrrow)
int * SCIPaggrRowGetInds(SCIP_AGGRROW *aggrrow)
void SCIPaggrRowPrint(SCIP *scip, SCIP_AGGRROW *aggrrow, FILE *file)
int SCIPaggrRowGetNNz(SCIP_AGGRROW *aggrrow)
static INLINE SCIP_Real SCIPaggrRowGetValueSafely(SCIP_AGGRROW *aggrrow, int i)
SCIP_Bool SCIPisExact(SCIP *scip)
SCIP_RETCODE SCIPconstructLP(SCIP *scip, SCIP_Bool *cutoff)
SCIP_Bool SCIPisLPConstructed(SCIP *scip)
BMS_BLKMEM * SCIPblkmem(SCIP *scip)
#define SCIPallocClearBlockMemoryArray(scip, ptr, num)
BMS_BUFMEM * SCIPbuffer(SCIP *scip)
#define SCIPallocBufferArray(scip, ptr, num)
#define SCIPfreeBufferArray(scip, ptr)
#define SCIPallocBlockMemoryArray(scip, ptr, num)
#define SCIPreallocBlockMemoryArray(scip, ptr, oldnum, newnum)
#define SCIPallocBlockMemory(scip, ptr)
SCIP_NODETYPE SCIPnodeGetType(SCIP_NODE *node)
SCIP_Real SCIPnodeGetLowerbound(SCIP_NODE *node)
SCIP_RATIONAL * SCIPnodeGetLowerboundExact(SCIP_NODE *node)
SCIP_Longint SCIPnodeGetNumber(SCIP_NODE *node)
SCIP_NODE * SCIPnodeGetParent(SCIP_NODE *node)
void SCIPrationalMin(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
SCIP_Bool SCIPrationalRoundLong(SCIP_Longint *res, SCIP_RATIONAL *src, SCIP_ROUNDMODE_RAT roundmode)
SCIP_RETCODE SCIPrationalCreateBlock(BMS_BLKMEM *blkmem, SCIP_RATIONAL **rational)
void SCIPrationalMult(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
void SCIPrationalSetInfinity(SCIP_RATIONAL *res)
SCIP_Real SCIPrationalGetReal(SCIP_RATIONAL *rational)
SCIP_RETCODE SCIPrationalCreateString(BMS_BLKMEM *mem, SCIP_RATIONAL **rational, const char *desc)
void SCIPrationalFreeBlock(BMS_BLKMEM *mem, SCIP_RATIONAL **rational)
int SCIPrationalToString(SCIP_RATIONAL *rational, char *str, int strlen)
SCIP_RETCODE SCIPrationalCreateBlockArray(BMS_BLKMEM *mem, SCIP_RATIONAL ***rational, int size)
#define SCIPrationalDebugMessage
void SCIPrationalRoundInteger(SCIP_RATIONAL *res, SCIP_RATIONAL *src, SCIP_ROUNDMODE_RAT roundmode)
void SCIPrationalDiv(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
SCIP_Bool SCIPrationalIsAbsInfinity(SCIP_RATIONAL *rational)
SCIP_Bool SCIPrationalIsLT(SCIP_RATIONAL *rat1, SCIP_RATIONAL *rat2)
void SCIPrationalSetReal(SCIP_RATIONAL *res, SCIP_Real real)
SCIP_Bool SCIPrationalIsGT(SCIP_RATIONAL *rat1, SCIP_RATIONAL *rat2)
void SCIPrationalFreeBuffer(BMS_BUFMEM *bufmem, SCIP_RATIONAL **rational)
void SCIPrationalDiff(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
SCIP_Bool SCIPrationalIsPositive(SCIP_RATIONAL *rational)
SCIP_RETCODE SCIPrationalCreateBuffer(BMS_BUFMEM *bufmem, SCIP_RATIONAL **rational)
void SCIPrationalAddProd(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
SCIP_Bool SCIPrationalIsZero(SCIP_RATIONAL *rational)
void SCIPrationalSetRational(SCIP_RATIONAL *res, SCIP_RATIONAL *src)
SCIP_Bool SCIPrationalIsGEReal(SCIP_RATIONAL *rat, SCIP_Real real)
SCIP_Bool SCIPrationalIsIntegral(SCIP_RATIONAL *rational)
SCIP_Bool SCIPrationalIsGE(SCIP_RATIONAL *rat1, SCIP_RATIONAL *rat2)
void SCIPrationalSetNegInfinity(SCIP_RATIONAL *res)
void SCIPrationalSetFraction(SCIP_RATIONAL *res, SCIP_Longint nom, SCIP_Longint denom)
void SCIPrationalNegate(SCIP_RATIONAL *res, SCIP_RATIONAL *op)
SCIP_Bool SCIPrationalIsNegative(SCIP_RATIONAL *rational)
void SCIPrationalDiffReal(SCIP_RATIONAL *res, SCIP_RATIONAL *rat, SCIP_Real real)
SCIP_Bool SCIPrationalIsInfinity(SCIP_RATIONAL *rational)
void SCIPrationalFreeBlockArray(BMS_BLKMEM *mem, SCIP_RATIONAL ***ratblockarray, int size)
SCIP_Real SCIPrationalRoundReal(SCIP_RATIONAL *rational, SCIP_ROUNDMODE_RAT roundmode)
SCIP_RETCODE SCIPrationalCreateBufferArray(BMS_BUFMEM *mem, SCIP_RATIONAL ***rational, int size)
SCIP_Bool SCIPrationalIsNegInfinity(SCIP_RATIONAL *rational)
void SCIPrationalDivReal(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_Real op2)
SCIP_RETCODE SCIPrationalReallocBlockArray(BMS_BLKMEM *mem, SCIP_RATIONAL ***result, int oldlen, int newlen)
SCIP_Bool SCIPrationalIsEQ(SCIP_RATIONAL *rat1, SCIP_RATIONAL *rat2)
void SCIPrationalDiffProd(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
void SCIPrationalMultReal(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_Real op2)
void SCIPrationalFreeBufferArray(BMS_BUFMEM *mem, SCIP_RATIONAL ***ratbufarray, int size)
void SCIPrationalAddReal(SCIP_RATIONAL *res, SCIP_RATIONAL *rat, SCIP_Real real)
int SCIPrationalStrLen(SCIP_RATIONAL *rational)
SCIP_Real SCIProwGetLhs(SCIP_ROW *row)
int SCIProwGetNNonz(SCIP_ROW *row)
SCIP_COL ** SCIProwGetCols(SCIP_ROW *row)
SCIP_Real SCIProwGetRhs(SCIP_ROW *row)
SCIP_Bool SCIProwIsLocal(SCIP_ROW *row)
const char * SCIProwGetName(SCIP_ROW *row)
SCIP_RETCODE SCIPreleaseRow(SCIP *scip, SCIP_ROW **row)
SCIP_Real SCIProwGetConstant(SCIP_ROW *row)
SCIP_ROWEXACT * SCIProwGetRowExact(SCIP_ROW *row)
SCIP_Real * SCIProwGetVals(SCIP_ROW *row)
SCIP_ROWORIGINTYPE SCIProwGetOrigintype(SCIP_ROW *row)
SCIP_SOL * SCIPgetBestSol(SCIP *scip)
SCIP_RETCODE SCIPmakeSolExact(SCIP *scip, SCIP_SOL *sol)
SCIP_RETCODE SCIPretransformSolExact(SCIP *scip, SCIP_SOL *sol)
SCIP_Bool SCIPsolIsExact(SCIP_SOL *sol)
SCIP_Bool SCIPisInRestart(SCIP *scip)
SCIP_Bool SCIPisPrimalboundSol(SCIP *scip)
void SCIPgetUpperboundExact(SCIP *scip, SCIP_RATIONAL *result)
void SCIPgetPrimalboundExact(SCIP *scip, SCIP_RATIONAL *result)
void SCIPgetLowerboundExact(SCIP *scip, SCIP_RATIONAL *result)
SCIP_Real SCIPinfinity(SCIP *scip)
SCIP_NODE * SCIPgetCurrentNode(SCIP *scip)
SCIP_Longint SCIPvarGetUbCertificateIndexLocal(SCIP_VAR *var)
void SCIPvarSetLbCertificateIndexGlobal(SCIP_VAR *var, SCIP_Longint certidx)
SCIP_Real SCIPvarGetNegationConstant(SCIP_VAR *var)
SCIP_Bool SCIPvarIsBinary(SCIP_VAR *var)
SCIP_Longint SCIPvarGetUbCertificateIndexGlobal(SCIP_VAR *var)
void SCIPvarSetCertificateIndex(SCIP_VAR *var, int certidx)
int SCIPvarGetCertificateIndex(SCIP_VAR *var)
SCIP_VARTYPE SCIPvarGetType(SCIP_VAR *var)
SCIP_Longint SCIPvarGetLbCertificateIndexGlobal(SCIP_VAR *var)
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_RATIONAL * SCIPvarGetUbLocalExact(SCIP_VAR *var)
void SCIPvarSetUbCertificateIndexGlobal(SCIP_VAR *var, SCIP_Longint certidx)
SCIP_Bool SCIPvarIsIntegral(SCIP_VAR *var)
SCIP_Longint SCIPvarGetLbCertificateIndexLocal(SCIP_VAR *var)
SCIP_RATIONAL * SCIPvarGetLbGlobalExact(SCIP_VAR *var)
SCIP_RATIONAL * SCIPvarGetLbLocalExact(SCIP_VAR *var)
SCIP_RATIONAL * SCIPvarGetObjExact(SCIP_VAR *var)
SCIP_RATIONAL * SCIPvarGetUbGlobalExact(SCIP_VAR *var)
int SCIPsnprintf(char *t, int len, const char *s,...)
void SCIPprintSysError(const char *message)
assert(minobj< SCIPgetCutoffbound(scip))
void SCIProwCapture(SCIP_ROW *row)
SCIP_ROW ** SCIPlpGetRows(SCIP_LP *lp)
int SCIPlpGetNRows(SCIP_LP *lp)
SCIP_RETCODE SCIProwRelease(SCIP_ROW **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)
internal methods for LP management
SCIP_COLEXACT ** SCIProwExactGetCols(SCIP_ROWEXACT *row)
SCIP_RATIONAL * SCIProwExactGetRhs(SCIP_ROWEXACT *row)
void SCIProwExactPrint(SCIP_ROWEXACT *row, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
SCIP_ROW * SCIProwExactGetRow(SCIP_ROWEXACT *row)
SCIP_RATIONAL * SCIProwExactGetConstant(SCIP_ROWEXACT *row)
SCIP_VAR * SCIPcolExactGetVar(SCIP_COLEXACT *col)
SCIP_RATIONAL * SCIProwExactGetLhs(SCIP_ROWEXACT *row)
void SCIPlpExactGetPseudoObjval(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_RATIONAL *res)
SCIP_RATIONAL ** SCIProwExactGetVals(SCIP_ROWEXACT *row)
void SCIPlpExactGetObjval(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_RATIONAL *res)
int SCIProwExactGetNNonz(SCIP_ROWEXACT *row)
internal methods for exact LP management
interface methods for specific exact LP solvers
memory allocation routines
#define BMSfreeMemory(ptr)
#define BMSfreeBlockMemory(mem, ptr)
#define BMSallocBlockMemory(mem, ptr)
#define BMSallocMemoryArray(ptr, num)
#define BMSfreeMemoryArray(ptr)
#define BMScopyMemoryArray(ptr, source, num)
#define BMSfreeBlockMemoryArray(mem, ptr, num)
struct BMS_BlkMem BMS_BLKMEM
#define BMSallocMemory(ptr)
void SCIPmessageFPrintWarning(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...)
void SCIPmessagePrintVerbInfo(SCIP_MESSAGEHDLR *messagehdlr, SCIP_VERBLEVEL verblevel, SCIP_VERBLEVEL msgverblevel, const char *formatstr,...)
internal miscellaneous methods
int SCIPprobGetNObjVars(SCIP_PROB *prob, SCIP_SET *set)
SCIP_Bool SCIPprobIsObjIntegral(SCIP_PROB *prob)
int SCIPprobGetNVars(SCIP_PROB *prob)
SCIP_VAR ** SCIPprobGetVars(SCIP_PROB *prob)
internal methods for storing and manipulating the main problem
public methods for managing constraints
struct SCIP_File SCIP_FILE
public methods for LP management
public methods for message output
public data structures and miscellaneous methods
public methods for branch and bound tree
public methods for problem variables
public methods for certified solving
public methods for exact solving
public methods for the LP relaxation, rows and columns
public methods for memory management
public methods for message handling
public methods for numerical tolerances
public methods for global and local (sub)problems
public methods for the probing mode
public methods for solutions
public methods for querying solving statistics
public methods for the branch-and-bound tree
SCIP_Real SCIPsetInfinity(SCIP_SET *set)
SCIP_Bool SCIPsetIsInfinity(SCIP_SET *set, SCIP_Real val)
internal methods for global SCIP settings
#define SCIPsetFreeBufferArray(set, ptr)
#define SCIPsetAllocBufferArray(set, ptr, num)
void SCIPsolGetValExact(SCIP_RATIONAL *res, SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var)
internal methods for storing primal CIP solutions
SCIP_Real * negslackweights
SCIP_Longint certificateindex
SCIP_Longint lastboundindex
SCIP_Longint indexcounter_ori
SCIP_FILE * derivationfile
SCIP_Longint indexcounter
SCIP_HASHMAP * nodedatahash
SCIP_RATIONAL * rootbound
SCIP_CERTIFICATEBOUND * lastinfo
SCIP_Bool workingaggrinfo
SCIP_HASHMAP * mirinfohash
SCIP_Longint aggrinfosize
SCIP_HASHMAP * rowdatahash
SCIP_Longint derindex_root
SCIP_AGGREGATIONINFO ** aggrinfo
SCIP_RATIONAL * finalbound
char * derivationfilename
SCIP_Bool transfile_initialized
SCIP_HASHMAP * aggrinfohash
SCIP_Longint assumptionindex_left
SCIP_Longint derindex_self
SCIP_RATIONAL * derbound_left
SCIP_RATIONAL * derbound_self
SCIP_RATIONAL * derbound_right
SCIP_Longint assumptionindex_right
SCIP_Longint derindex_left
SCIP_Longint derindex_right
SCIP_RATIONAL * farkascoef
SCIP_Real * slackcoefficients
SCIP_Real * splitcoefficients
SCIP_Real * slackusedcoef
SCIP_Bool * slackroundeddown
SCIP_RATIONAL * dualfarkas
data structures for certificate output
data structures for exact LP management
SCIP main data structure.
datastructures for problem statistics
datastructures for problem variables
struct SCIP_Certnodedata SCIP_CERTNODEDATA
struct SCIP_Certificate SCIP_CERTIFICATE
struct SCIP_MirInfo SCIP_MIRINFO
struct SCIP_AggregationInfo SCIP_AGGREGATIONINFO
struct SCIP_Cons SCIP_CONS
struct SCIP_Conshdlr SCIP_CONSHDLR
struct SCIP_AggrRow SCIP_AGGRROW
@ SCIP_ROWORIGINTYPE_SEPA
enum SCIP_BoundType SCIP_BOUNDTYPE
struct SCIP_LpExact SCIP_LPEXACT
struct SCIP_RowExact SCIP_ROWEXACT
struct SCIP_ColExact SCIP_COLEXACT
struct SCIP_Messagehdlr SCIP_MESSAGEHDLR
struct SCIP_Prob SCIP_PROB
struct SCIP_Rational SCIP_RATIONAL
enum SCIP_Retcode SCIP_RETCODE
struct SCIP_Stat SCIP_STAT
struct SCIP_Node SCIP_NODE
@ SCIP_NODETYPE_PROBINGNODE
@ SCIP_VARSTATUS_ORIGINAL
@ SCIP_VARSTATUS_AGGREGATED
internal methods for problem variables