60#define OBJSCALE_MAXDNOM 1000000LL
61#define OBJSCALE_MAXSCALE 1000000.0
62#define OBJSCALE_MAXFINALSCALE 1000.0
89 assert(num <= prob->varssize);
113 assert(num <= prob->fixedvarssize);
137 assert(num <= prob->deletedvarssize);
166 assert(num <= prob->consssize);
181 return (name !=
NULL && name[0] !=
'\0');
194 return (name !=
NULL && name[0] !=
'\0');
235 SCIP_CALL(
SCIPprobCreate(prob, blkmem,
set, name,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
FALSE) );
240 SCIP_CALL( sourceprob->probcopy(
set->scip, sourcescip, sourceprob->
probdata, varmap, consmap, &targetdata, original, global, &
result) );
255 (*prob)->probdelorig = sourceprob->probdelorig;
256 (*prob)->probtrans = sourceprob->probtrans;
257 (*prob)->probdeltrans = sourceprob->probdeltrans;
258 (*prob)->probinitsol = sourceprob->probinitsol;
259 (*prob)->probexitsol = sourceprob->probexitsol;
260 (*prob)->probcopy = sourceprob->probcopy;
292 (*prob)->probdata = probdata;
293 (*prob)->probcopy = probcopy;
294 (*prob)->probdelorig = probdelorig;
295 (*prob)->probtrans = probtrans;
296 (*prob)->probdeltrans = probdeltrans;
297 (*prob)->probinitsol = probinitsol;
298 (*prob)->probexitsol = probexitsol;
299 if(
set->misc_usevartable )
303 SCIPhashGetKeyVar, SCIPhashKeyEqString, SCIPhashKeyValString,
NULL) );
306 (*prob)->varnames =
NULL;
307 (*prob)->vars =
NULL;
308 (*prob)->varssize = 0;
310 (*prob)->nbinvars = 0;
311 (*prob)->nintvars = 0;
312 (*prob)->nbinimplvars = 0;
313 (*prob)->nintimplvars = 0;
314 (*prob)->ncontimplvars = 0;
315 (*prob)->ncontvars = 0;
316 (*prob)->ncolvars = 0;
317 (*prob)->fixedvars =
NULL;
318 (*prob)->fixedvarssize = 0;
319 (*prob)->nfixedvars = 0;
320 (*prob)->deletedvars =
NULL;
321 (*prob)->deletedvarssize = 0;
322 (*prob)->ndeletedvars = 0;
323 (*prob)->nobjvars = 0;
324 if(
set->misc_useconstable )
328 SCIPhashGetKeyCons, SCIPhashKeyEqString, SCIPhashKeyValString,
NULL) );
331 (*prob)->consnames =
NULL;
332 (*prob)->conss =
NULL;
333 (*prob)->origcheckconss =
NULL;
334 (*prob)->consssize = 0;
336 (*prob)->maxnconss = 0;
337 (*prob)->startnvars = 0;
338 (*prob)->startnconss = 0;
341 (*prob)->objisintegral =
FALSE;
342 (*prob)->transformed = transformed;
343 (*prob)->nlpenabled =
FALSE;
344 (*prob)->permuted =
FALSE;
345 (*prob)->consschecksorted =
FALSE;
346 (*prob)->conscompression =
FALSE;
348 (*prob)->objoffset = 0.0;
349 (*prob)->objscale = 1.0;
350 if(
set->exact_enable )
360 (*prob)->objoffsetexact =
NULL;
361 (*prob)->objscaleexact =
NULL;
375 prob->probdelorig = probdelorig;
386 prob->probtrans = probtrans;
397 prob->probdeltrans = probdeltrans;
408 prob->probinitsol= probinitsol;
419 prob->probexitsol= probexitsol;
430 prob->probcopy= probcopy;
454 while( (*prob)->nconss > 0 )
461 if( (*prob)->transformed )
466 for(
h = 0;
h <
set->nconshdlrs; ++
h )
480 if( (*prob)->transformed )
482 if( (*prob)->probdeltrans !=
NULL )
484 SCIP_CALL( (*prob)->probdeltrans(
set->scip, &(*prob)->probdata) );
489 if( (*prob)->probdelorig !=
NULL )
491 SCIP_CALL( (*prob)->probdelorig(
set->scip, &(*prob)->probdata) );
496 for( v = (*prob)->nvars - 1; v >= 0; --v )
505 unreleasedvar =
TRUE;
515 for( v = (*prob)->nfixedvars - 1; v >= 0; --v )
524 unreleasedvar =
TRUE;
538 if( (*prob)->consnames !=
NULL )
540 if( (*prob)->varnames !=
NULL )
542 if( (*prob)->objscaleexact !=
NULL )
544 if( (*prob)->objoffsetexact !=
NULL )
586 source->probinitsol, source->probexitsol, source->probcopy,
NULL,
TRUE) );
599 for( v = 0; v < source->
nvars; ++v )
613 if( source->probtrans !=
NULL )
618 (*target)->probdata = source->
probdata;
629 for(
h = 0;
h <
set->nconshdlrs; ++
h )
643 SCIP_CALL(
SCIPprobCheckObjIntegral(*target, source, blkmem,
set, stat, primal, tree, reopt, lp, eventqueue, eventfilter) );
649 (*target)->permuted = source->
permuted;
670 for( v = 0; v < prob->
nvars; ++v )
711 assert(nbinvars + nintvars + nbinimplvars + nintimplvars + ncontimplvars + ncontvars ==
nvars);
713 SCIPdebugMessage(
"entering sorting with respect to original block structure! \n");
724 if( nbinimplvars > 0 )
725 SCIPsortPtr((
void**)&
vars[nbinvars + nintvars], SCIPvarComp, nbinimplvars);
728 if( nintimplvars > 0 )
729 SCIPsortPtr((
void**)&
vars[nbinvars + nintvars + nbinimplvars], SCIPvarComp, nintimplvars);
732 if( ncontimplvars > 0 )
733 SCIPsortPtr((
void**)&
vars[nbinvars + nintvars + nbinimplvars + nintimplvars], SCIPvarComp, ncontimplvars);
737 SCIPsortPtr((
void**)&
vars[nbinvars + nintvars + nbinimplvars + nintimplvars + ncontimplvars], SCIPvarComp, ncontvars);
740 for( v = 0; v <
nvars; ++v )
742 vars[v]->probindex = v;
798 int insertpos = prob->
nvars;
800 int binimplstart = intstart + prob->
nintvars;
811 if( insertpos > contstart )
813 prob->
vars[insertpos] = prob->
vars[contstart];
815 insertpos = contstart;
817 assert(insertpos == contstart);
826 if( insertpos > contimplstart )
828 prob->
vars[insertpos] = prob->
vars[contimplstart];
830 insertpos = contimplstart;
832 assert(insertpos == contimplstart);
840 if( insertpos > intimplstart )
842 prob->
vars[insertpos] = prob->
vars[intimplstart];
844 insertpos = intimplstart;
846 assert(insertpos == intimplstart);
854 if( insertpos > binimplstart )
856 prob->
vars[insertpos] = prob->
vars[binimplstart];
858 insertpos = binimplstart;
860 assert(insertpos == binimplstart);
869 if( insertpos > intstart )
871 prob->
vars[insertpos] = prob->
vars[intstart];
873 insertpos = intstart;
875 assert(insertpos == intstart);
954 binimplstart = intstart + prob->
nintvars;
1006 if( freepos < intstart-1 )
1009 prob->
vars[freepos] = prob->
vars[intstart-1];
1011 freepos = intstart-1;
1013 if( freepos < binimplstart-1 )
1016 prob->
vars[freepos] = prob->
vars[binimplstart-1];
1018 freepos = binimplstart-1;
1020 if( freepos < intimplstart-1 )
1023 prob->
vars[freepos] = prob->
vars[intimplstart-1];
1025 freepos = intimplstart-1;
1027 if( freepos < contimplstart-1 )
1030 prob->
vars[freepos] = prob->
vars[contimplstart-1];
1032 freepos = contimplstart-1;
1034 if( freepos < contstart-1 )
1037 prob->
vars[freepos] = prob->
vars[contstart-1];
1039 freepos = contstart-1;
1041 if( freepos < prob->
nvars-1 )
1046 freepos = prob->
nvars-1;
1119 if(
var->scip !=
set->scip )
1146 SCIPsetDebugMsg(
set,
"added variable <%s> to problem (%d variables: %d binary, %d integer, %d continuous; %d implied)\n",
1201 SCIPsetDebugMsg(
set,
"deleting variable <%s> from problem (%d variables: %d binary, %d integer, %d continuous; %d implied)\n",
1251 for(
i = 0;
i <
set->nconshdlrs; ++
i )
1328 if( branchcand !=
NULL )
1346 if( branchcand !=
NULL )
1382 if( branchcand !=
NULL )
1400 if( branchcand !=
NULL )
1492 if( currentcons == cons )
1760 if(
set->nactivepricers != 0 ||
set->nactivebenders != 0 )
1768 for( v = 0; v < transprob->
nvars; ++v )
1787 if( v == transprob->
nvars )
1792 SCIP_CALL(
SCIPprimalUpdateObjoffset(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
1821 if(
set->exact_enable )
1822 return probCheckObjIntegralExact(transprob, origprob, blkmem,
set, stat, primal, tree, reopt, lp, eventqueue,
1830 if(
set->nactivepricers != 0 ||
set->nactivebenders != 0 )
1838 for( v = 0; v < transprob->
nvars; ++v )
1857 if( v == transprob->
nvars )
1862 SCIP_CALL(
SCIPprimalUpdateObjoffset(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
1947 if(
set->nactivepricers != 0 ||
set->nactivebenders != 0 || !
set->misc_scaleobj )
1953 for( v = nints; v < transprob->
nvars; ++v )
1964 if( v == transprob->
nvars )
1975 for( v = 0; v < nints; ++v )
1980 intscalar, &success) );
1988 for( v = 0; v < nints; ++v )
1997 for( v = 0; v < nints; ++v )
2010 SCIP_CALL(
SCIPprimalUpdateObjoffsetExact(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
2044 if(
set->nactivepricers != 0 ||
set->nactivebenders != 0 || !
set->misc_scaleobj )
2047 if(
set->exact_enable )
2049 SCIP_CALL(
probScaleObjExact(transprob, origprob, blkmem,
set, stat, primal, tree, reopt, lp, eventqueue,
2057 for( v = nints; v < transprob->
nvars; ++v )
2068 if( v == transprob->
nvars )
2078 for( v = 0; v < nints; ++v )
2083 &intscalar, &success) );
2085 SCIPsetDebugMsg(
set,
"integral objective scalar: success=%u, intscalar=%g\n", success, intscalar);
2095 for( v = 0; v < nints && gcd != 1; ++v )
2109 else if( absobj > 0 )
2123 for( v = 0; v < nints; ++v )
2137 for( v = 0; v < nints; ++v )
2148 SCIP_CALL(
SCIPprimalUpdateObjoffset(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
2177 for( v = 0; v < prob->
nvars; ++v )
2217 for( v = 0; v < prob->
nvars; ++v )
2268 if( -lbrootredcost > ubrootredcost )
2270 rootredcost = lbrootredcost;
2275 rootredcost = ubrootredcost;
2315 for( v = 0; v < prob->
nvars; ++v )
2319 if( prob->probinitsol !=
NULL )
2348 if( prob->probexitsol !=
NULL )
2358 if( prob->
ncolvars > 0 || restart )
2360 for( v = 0; v < prob->
nvars; ++v )
2428#ifdef SCIP_MORE_DEBUG
2434 for( v = prob->
nvars - 1; v >= 0; --v )
2452 for( v = prob->
nvars - 1; v >= 0; --v )
2477 for( v = 0; v < prob->
nvars; v++ )
2504 for( v = 0; v < prob->
nvars; v++ )
2633 SCIPerrorMessage(
"Cannot find variable if variable-names hashtable was disabled (due to parameter <misc/usevartable>)\n");
2652 SCIPerrorMessage(
"Cannot find constraint if constraint-names hashtable was disabled (due to parameter <misc/useconstable>)\n");
2671 for( v = 0; v < prob->
nvars; ++v )
2693 SCIPmessageFPrintInfo(messagehdlr, file,
" Variables : %d (%d binary, %d integer, %d continuous)\n",
2695 SCIPmessageFPrintInfo(messagehdlr, file,
" Implied int vars : %d (%d binary, %d integer, %d continuous)\n",
2698 SCIPmessageFPrintInfo(messagehdlr, file,
" Objective : %s, %d non-zeros (abs.min = %g, abs.max = %g)\n",
2750#undef SCIPprobIsPermuted
2751#undef SCIPprobMarkPermuted
2752#undef SCIPprobIsTransformed
2753#undef SCIPprobIsObjIntegral
2754#undef SCIPprobAllColsInLP
2755#undef SCIPprobGetObjlim
2756#undef SCIPprobGetData
2757#undef SCIPprobGetName
2758#undef SCIPprobGetNVars
2759#undef SCIPprobGetNBinVars
2760#undef SCIPprobGetNIntVars
2761#undef SCIPprobGetNImplVars
2762#undef SCIPprobGetNContVars
2763#undef SCIPprobGetVars
2764#undef SCIPprobGetNFixedVars
2765#undef SCIPprobGetFixedVars
2766#undef SCIPprobGetStartNVars
2767#undef SCIPprobGetNConss
2768#undef SCIPprobGetConss
2769#undef SCIPprobGetMaxNConss
2770#undef SCIPprobGetStartNConss
2771#undef SCIPprobGetObjsense
2772#undef SCIPprobGetObjoffset
2773#undef SCIPprobGetObjscale
2774#undef SCIPprobGetObjoffsetExact
2775#undef SCIPprobGetObjscaleExact
2776#undef SCIPisConsCompressedEnabled
2777#undef SCIPprobEnableConsCompression
SCIP_RETCODE SCIPbranchcandRemoveVar(SCIP_BRANCHCAND *branchcand, SCIP_VAR *var)
SCIP_RETCODE SCIPbranchcandUpdateVar(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_VAR *var)
internal methods for branching rules and branching candidate storage
SCIP_RETCODE SCIPconflictstoreTransform(SCIP_CONFLICTSTORE *conflictstore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_PROB *transprob, SCIP_REOPT *reopt)
internal methods for storing conflicts
SCIP_RETCODE SCIPconsAddLocks(SCIP_CONS *cons, SCIP_SET *set, SCIP_LOCKTYPE locktype, int nlockspos, int nlocksneg)
void SCIPconsCapture(SCIP_CONS *cons)
void SCIPconsSetLocal(SCIP_CONS *cons, SCIP_Bool local)
SCIP_RETCODE SCIPconsDeactivate(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat)
SCIP_RETCODE SCIPconshdlrLockVars(SCIP_CONSHDLR *conshdlr, SCIP_SET *set)
SCIP_RETCODE SCIPconsResetAge(SCIP_CONS *cons, SCIP_SET *set)
SCIP_RETCODE SCIPconsTransform(SCIP_CONS *origcons, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_CONS **transcons)
SCIP_RETCODE SCIPconsRelease(SCIP_CONS **cons, BMS_BLKMEM *blkmem, SCIP_SET *set)
SCIP_RETCODE SCIPconshdlrUnlockVars(SCIP_CONSHDLR *conshdlr, SCIP_SET *set)
SCIP_RETCODE SCIPconsActivate(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat, int depth, SCIP_Bool focusnode)
SCIP_RETCODE SCIPconshdlrDelVars(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
internal methods for constraints and constraint handlers
SCIP_RETCODE SCIPdatatreeInsertLong(SCIP_DATATREE *datatree, SCIP_SET *set, BMS_BLKMEM *blkmem, const char *name, SCIP_Longint value)
SCIP_RETCODE SCIPdatatreeInsertString(SCIP_DATATREE *datatree, SCIP_SET *set, BMS_BLKMEM *blkmem, const char *name, const char *value)
SCIP_RETCODE SCIPdatatreeInsertReal(SCIP_DATATREE *datatree, SCIP_SET *set, BMS_BLKMEM *blkmem, const char *name, SCIP_Real value)
internal methods for handling data trees
#define SCIP_HASHSIZE_NAMES_SMALL
#define SCIP_HASHSIZE_NAMES
#define SCIP_LONGINT_FORMAT
SCIP_RETCODE SCIPeventCreateVarAdded(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var)
SCIP_RETCODE SCIPeventqueueAdd(SCIP_EVENTQUEUE *eventqueue, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTFILTER *eventfilter, SCIP_EVENT **event)
SCIP_RETCODE SCIPeventCreateVarDeleted(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var)
internal methods for managing events
void SCIPhashtableFree(SCIP_HASHTABLE **hashtable)
SCIP_Bool SCIPhashtableExists(SCIP_HASHTABLE *hashtable, void *element)
SCIP_RETCODE SCIPhashtableCreate(SCIP_HASHTABLE **hashtable, BMS_BLKMEM *blkmem, int tablesize, SCIP_DECL_HASHGETKEY((*hashgetkey)), SCIP_DECL_HASHKEYEQ((*hashkeyeq)), SCIP_DECL_HASHKEYVAL((*hashkeyval)), void *userptr)
void * SCIPhashtableRetrieve(SCIP_HASHTABLE *hashtable, void *key)
SCIP_RETCODE SCIPhashtableRemove(SCIP_HASHTABLE *hashtable, void *element)
SCIP_RETCODE SCIPhashtableInsert(SCIP_HASHTABLE *hashtable, void *element)
SCIP_Longint SCIPcalcGreComDiv(SCIP_Longint val1, SCIP_Longint val2)
SCIP_RETCODE SCIPcalcIntegralScalarExact(BMS_BUFMEM *buffer, SCIP_RATIONAL **vals, int nvals, SCIP_Real maxscale, SCIP_RATIONAL *intscalar, SCIP_Bool *success)
SCIP_RETCODE SCIPcalcIntegralScalar(SCIP_Real *vals, int nvals, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Real maxscale, SCIP_Real *intscalar, SCIP_Bool *success)
SCIP_Real SCIPcolGetPrimsol(SCIP_COL *col)
SCIP_BASESTAT SCIPcolGetBasisStatus(SCIP_COL *col)
SCIP_Bool SCIPconshdlrNeedsCons(SCIP_CONSHDLR *conshdlr)
SCIP_Bool SCIPconsIsChecked(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsActive(SCIP_CONS *cons)
const char * SCIPconsGetName(SCIP_CONS *cons)
SCIP_RETCODE SCIPrationalCreateBlock(BMS_BLKMEM *blkmem, SCIP_RATIONAL **rational)
void SCIPrationalMult(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
void SCIPrationalAdd(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
SCIP_Real SCIPrationalGetReal(SCIP_RATIONAL *rational)
void SCIPrationalFreeBlock(BMS_BLKMEM *mem, SCIP_RATIONAL **rational)
#define SCIPrationalDebugMessage
void SCIPrationalDiv(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
SCIP_Bool SCIPrationalIsAbsInfinity(SCIP_RATIONAL *rational)
void SCIPrationalSetReal(SCIP_RATIONAL *res, SCIP_Real real)
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)
SCIP_Bool SCIPrationalIsZero(SCIP_RATIONAL *rational)
void SCIPrationalSetRational(SCIP_RATIONAL *res, SCIP_RATIONAL *src)
SCIP_Bool SCIPrationalIsIntegral(SCIP_RATIONAL *rational)
SCIP_Bool SCIPrationalIsEQReal(SCIP_RATIONAL *rat, SCIP_Real real)
SCIP_RETCODE SCIPrationalCreateBufferArray(BMS_BUFMEM *mem, SCIP_RATIONAL ***rational, int size)
void SCIPrationalMultReal(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_Real op2)
void SCIPrationalFreeBufferArray(BMS_BUFMEM *mem, SCIP_RATIONAL ***ratbufarray, int size)
SCIP_COL * SCIPvarGetCol(SCIP_VAR *var)
SCIP_Real SCIPvarGetSol(SCIP_VAR *var, SCIP_Bool getlpval)
SCIP_Bool SCIPvarIsBinary(SCIP_VAR *var)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)
int SCIPvarGetNLocksDown(SCIP_VAR *var)
SCIP_Real SCIPvarGetObj(SCIP_VAR *var)
SCIP_VARTYPE SCIPvarGetType(SCIP_VAR *var)
void SCIPvarSetBestRootSol(SCIP_VAR *var, SCIP_Real rootsol, SCIP_Real rootredcost, SCIP_Real rootlpobjval)
int SCIPvarGetNUses(SCIP_VAR *var)
int SCIPvarGetProbindex(SCIP_VAR *var)
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_Bool SCIPvarIsDeletable(SCIP_VAR *var)
SCIP_Bool SCIPvarIsIntegral(SCIP_VAR *var)
SCIP_Bool SCIPvarIsTransformedOrigvar(SCIP_VAR *var)
SCIP_Real SCIPvarGetPseudoSol(SCIP_VAR *var)
SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)
SCIP_Bool SCIPvarIsRelaxationOnly(SCIP_VAR *var)
SCIP_IMPLINTTYPE SCIPvarGetImplType(SCIP_VAR *var)
int SCIPvarGetNLocksUp(SCIP_VAR *var)
SCIP_RATIONAL * SCIPvarGetObjExact(SCIP_VAR *var)
void SCIPsortPtr(void **ptrarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), int len)
int SCIPsnprintf(char *t, int len, const char *s,...)
assert(minobj< SCIPgetCutoffbound(scip))
SCIP_Bool SCIPlpIsSolBasic(SCIP_LP *lp)
SCIP_LPSOLSTAT SCIPlpGetSolstat(SCIP_LP *lp)
void SCIPlpStoreRootObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
SCIP_Real SCIPlpGetColumnObjval(SCIP_LP *lp)
SCIP_RETCODE SCIPlpUpdateAddVar(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
SCIP_Bool SCIPlpIsRelax(SCIP_LP *lp)
SCIP_Real SCIPlpGetObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
SCIP_RETCODE SCIPlpUpdateDelVar(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
SCIP_Real SCIPcolGetRedcost(SCIP_COL *col, SCIP_STAT *stat, SCIP_LP *lp)
SCIP_Bool SCIPlpIsDualReliable(SCIP_LP *lp)
int SCIPlpGetNCols(SCIP_LP *lp)
void SCIPlpSetRootLPIsRelax(SCIP_LP *lp, SCIP_Bool isrelax)
internal methods for LP management
SCIP_RETCODE SCIPlpExactUpdateAddVar(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var)
internal methods for exact LP management
#define BMSfreeMemory(ptr)
#define BMSreallocMemoryArray(ptr, num)
#define BMSduplicateMemoryArray(ptr, source, num)
#define BMSfreeMemoryArray(ptr)
struct BMS_BlkMem BMS_BLKMEM
#define BMSfreeMemoryArrayNull(ptr)
#define BMSallocMemory(ptr)
void SCIPmessageFPrintWarning(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...)
void SCIPmessageFPrintInfo(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, const char *formatstr,...)
void SCIPmessagePrintInfo(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...)
SCIP_RETCODE SCIPprimalUpdateObjoffsetExact(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp)
SCIP_RETCODE SCIPprimalUpdateObjoffset(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp)
internal methods for collecting primal CIP solutions and primal informations
void SCIPprobSetDelorig(SCIP_PROB *prob,)
void SCIPprobSetExitsol(SCIP_PROB *prob,)
static SCIP_RETCODE probScaleObjExact(SCIP_PROB *transprob, SCIP_PROB *origprob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
void SCIPprobPrintStatistics(SCIP_PROB *prob, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
void SCIPprobSetCopy(SCIP_PROB *prob,)
SCIP_RETCODE SCIPprobCollectStatistics(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_DATATREE *datatree)
static SCIP_RETCODE probRemoveVar(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_CLIQUETABLE *cliquetable, SCIP_SET *set, SCIP_VAR *var, SCIP_Bool isupgraded)
static SCIP_RETCODE probEnsureVarsMem(SCIP_PROB *prob, SCIP_SET *set, int num)
SCIP_Bool SCIPprobIsPermuted(SCIP_PROB *prob)
SCIP_RETCODE SCIPprobExitPresolve(SCIP_PROB *prob, SCIP_SET *set)
void SCIPprobUpdateNObjVars(SCIP_PROB *prob, SCIP_SET *set, SCIP_Real oldobj, SCIP_Real newobj)
int SCIPprobGetNContVars(SCIP_PROB *prob)
SCIP_RETCODE SCIPprobAddConsName(SCIP_PROB *prob, SCIP_CONS *cons)
SCIP_RETCODE SCIPprobTransform(SCIP_PROB *source, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CONFLICTSTORE *conflictstore, SCIP_PROB **target)
SCIP_CONS ** SCIPprobGetConss(SCIP_PROB *prob)
int SCIPprobGetNFixedVars(SCIP_PROB *prob)
static SCIP_RETCODE probCheckObjIntegralExact(SCIP_PROB *transprob, SCIP_PROB *origprob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
void SCIPprobInvalidateDualbound(SCIP_PROB *prob)
SCIP_RETCODE SCIPprobAddVarName(SCIP_PROB *prob, SCIP_VAR *var)
void SCIPprobInternObjvalExact(SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_SET *set, SCIP_RATIONAL *objval, SCIP_RATIONAL *objvalint)
void SCIPprobSetObjIntegral(SCIP_PROB *prob)
SCIP_RETCODE SCIPprobVarChangedStatus(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_BRANCHCAND *branchcand, SCIP_CLIQUETABLE *cliquetable, SCIP_VAR *var)
const char * SCIPprobGetName(SCIP_PROB *prob)
static int probProvidePos(SCIP_PROB *prob, SCIP_VARTYPE vartype, SCIP_IMPLINTTYPE impltype)
SCIP_Real SCIPprobGetObjoffset(SCIP_PROB *prob)
int SCIPprobGetNConss(SCIP_PROB *prob)
int SCIPprobGetNObjVars(SCIP_PROB *prob, SCIP_SET *set)
SCIP_Real SCIPprobGetAbsMinObjCoef(SCIP_PROB *prob, SCIP_SET *set)
static SCIP_RETCODE probEnsureConssMem(SCIP_PROB *prob, SCIP_SET *set, int num)
static void probInsertVar(SCIP_PROB *prob, SCIP_VAR *var)
SCIP_RETCODE SCIPprobPerformVarDeletions(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand)
void SCIPprobSetTrans(SCIP_PROB *prob,)
SCIP_Real SCIPprobGetAbsMaxObjCoef(SCIP_PROB *prob, SCIP_SET *set)
SCIP_RETCODE SCIPprobRemoveVarName(SCIP_PROB *prob, SCIP_VAR *var)
static SCIP_RETCODE probEnsureFixedvarsMem(SCIP_PROB *prob, SCIP_SET *set, int num)
int SCIPprobGetStartNConss(SCIP_PROB *prob)
SCIP_Real SCIPprobGetObjlim(SCIP_PROB *prob, SCIP_SET *set)
void SCIPprobUpdateDualbound(SCIP_PROB *prob, SCIP_Real newbound)
SCIP_RETCODE SCIPprobInitSolve(SCIP_PROB *prob, SCIP_SET *set)
void SCIPprobMarkNConss(SCIP_PROB *prob)
SCIP_RATIONAL * SCIPprobGetObjoffsetExact(SCIP_PROB *prob)
SCIP_OBJSENSE SCIPprobGetObjsense(SCIP_PROB *prob)
void SCIPprobPrintPseudoSol(SCIP_PROB *prob, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr)
int SCIPprobGetStartNVars(SCIP_PROB *prob)
#define OBJSCALE_MAXSCALE
SCIP_RETCODE SCIPprobSetName(SCIP_PROB *prob, const char *name)
void SCIPprobSetData(SCIP_PROB *prob, SCIP_PROBDATA *probdata)
#define OBJSCALE_MAXFINALSCALE
SCIP_Real SCIPprobGetObjscale(SCIP_PROB *prob)
void SCIPprobAddObjoffset(SCIP_PROB *prob, SCIP_Real addval)
SCIP_RETCODE SCIPprobChgVarImplType(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_VAR *var, SCIP_IMPLINTTYPE impltype)
SCIP_VAR * SCIPprobFindVar(SCIP_PROB *prob, const char *name)
int SCIPprobGetNImplVars(SCIP_PROB *prob)
static SCIP_Bool varHasName(SCIP_VAR *var)
SCIP_RETCODE SCIPprobExitSolve(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Bool restart)
SCIP_RETCODE SCIPprobCreate(SCIP_PROB **prob, BMS_BLKMEM *blkmem, SCIP_SET *set, const char *name, SCIP_DECL_PROBDELORIG((*probdelorig)), SCIP_DECL_PROBTRANS((*probtrans)), SCIP_DECL_PROBDELTRANS((*probdeltrans)), SCIP_DECL_PROBINITSOL((*probinitsol)), SCIP_DECL_PROBEXITSOL((*probexitsol)), SCIP_DECL_PROBCOPY((*probcopy)), SCIP_PROBDATA *probdata, SCIP_Bool transformed)
void SCIPprobSetObjlim(SCIP_PROB *prob, SCIP_Real objlim)
SCIP_VAR ** SCIPprobGetFixedVars(SCIP_PROB *prob)
SCIP_RETCODE SCIPprobDelVar(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_VAR *var, SCIP_Bool *deleted)
SCIP_Bool SCIPprobIsObjIntegral(SCIP_PROB *prob)
SCIP_RETCODE SCIPprobAddVar(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_VAR *var)
void SCIPprobEnableConsCompression(SCIP_PROB *prob)
SCIP_CONS * SCIPprobFindCons(SCIP_PROB *prob, const char *name)
void SCIPprobMarkPermuted(SCIP_PROB *prob)
SCIP_RETCODE SCIPprobRemoveConsName(SCIP_PROB *prob, SCIP_CONS *cons)
int SCIPprobGetNIntVars(SCIP_PROB *prob)
SCIP_RETCODE SCIPprobDelCons(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_CONS *cons)
int SCIPprobGetNVars(SCIP_PROB *prob)
SCIP_PROBDATA * SCIPprobGetData(SCIP_PROB *prob)
void SCIPprobSetInitsol(SCIP_PROB *prob,)
SCIP_RETCODE SCIPprobChgVarType(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_VAR *var, SCIP_VARTYPE vartype)
static SCIP_RETCODE probEnsureDeletedvarsMem(SCIP_PROB *prob, SCIP_SET *set, int num)
SCIP_Real SCIPprobExternObjval(SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_SET *set, SCIP_Real objval)
void SCIPprobResortVars(SCIP_PROB *prob)
SCIP_RETCODE SCIPprobFree(SCIP_PROB **prob, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
SCIP_RETCODE SCIPprobCopy(SCIP_PROB **prob, BMS_BLKMEM *blkmem, SCIP_SET *set, const char *name, SCIP *sourcescip, SCIP_PROB *sourceprob, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool original, SCIP_Bool global)
SCIP_RETCODE SCIPprobScaleObj(SCIP_PROB *transprob, SCIP_PROB *origprob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
SCIP_RETCODE SCIPprobAddCons(SCIP_PROB *prob, SCIP_SET *set, SCIP_STAT *stat, SCIP_CONS *cons)
SCIP_RETCODE SCIPprobCheckObjIntegral(SCIP_PROB *transprob, SCIP_PROB *origprob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
int SCIPprobGetMaxNConss(SCIP_PROB *prob)
SCIP_RETCODE SCIPprobResetBounds(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
void SCIPprobSetDualbound(SCIP_PROB *prob, SCIP_Real dualbound)
void SCIPprobStoreRootSol(SCIP_PROB *prob, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_Bool roothaslp)
int SCIPprobGetNBinVars(SCIP_PROB *prob)
SCIP_RATIONAL * SCIPprobGetObjscaleExact(SCIP_PROB *prob)
SCIP_VAR ** SCIPprobGetVars(SCIP_PROB *prob)
void SCIPprobSetDeltrans(SCIP_PROB *prob,)
SCIP_Bool SCIPprobAllColsInLP(SCIP_PROB *prob, SCIP_SET *set, SCIP_LP *lp)
void SCIPprobUpdateBestRootSol(SCIP_PROB *prob, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
static SCIP_Bool consHasName(SCIP_CONS *cons)
SCIP_Bool SCIPprobIsTransformed(SCIP_PROB *prob)
void SCIPprobExternObjvalExact(SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_SET *set, SCIP_RATIONAL *objval, SCIP_RATIONAL *objvalext)
SCIP_Bool SCIPprobIsConsCompressionEnabled(SCIP_PROB *prob)
void SCIPprobAddObjoffsetExact(SCIP_PROB *prob, SCIP_RATIONAL *addval)
void SCIPprobSetObjsense(SCIP_PROB *prob, SCIP_OBJSENSE objsense)
SCIP_Real SCIPprobInternObjval(SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_SET *set, SCIP_Real objval)
SCIP_RETCODE SCIPprobSortConssCheck(SCIP_PROB *prob)
internal methods for storing and manipulating the main problem
public methods for managing constraints
public methods for LP management
public methods for message output
public data structures and miscellaneous methods
methods for sorting joint arrays of various types
public methods for problem variables
wrapper for rational number arithmetic
SCIP_Bool SCIPsetIsFeasEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIPsetFeasFloor(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPsetIsDualfeasNegative(SCIP_SET *set, SCIP_Real val)
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 SCIPsetIsDualfeasPositive(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPsetIsGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsIntegral(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPsetIsZero(SCIP_SET *set, SCIP_Real val)
int SCIPsetCalcMemGrowSize(SCIP_SET *set, int num)
SCIP_Bool SCIPsetIsFeasIntegral(SCIP_SET *set, SCIP_Real val)
internal methods for global SCIP settings
#define SCIPsetFreeBufferArray(set, ptr)
#define SCIPsetAllocBufferArray(set, ptr, num)
void SCIPstatComputeRootLPBestEstimate(SCIP_STAT *stat, SCIP_SET *set, SCIP_Real rootlpobjval, SCIP_VAR **vars, int nvars)
internal methods for problem statistics
SCIP_CONSSETCHG * addconssetchg
unsigned int updatedeactivate
SCIP_Bool consschecksorted
SCIP_RATIONAL * objoffsetexact
SCIP_CONS ** origcheckconss
SCIP_RATIONAL * objscaleexact
SCIP_HASHTABLE * consnames
SCIP_Bool conscompression
SCIP_HASHTABLE * varnames
SCIP_Longint nactiveconssadded
datastructures for constraints and constraint handlers
data structures for LP management
datastructures for storing and manipulating the main problem
datastructures for global SCIP settings
datastructures for problem statistics
datastructures for problem variables
struct SCIP_BranchCand SCIP_BRANCHCAND
struct SCIP_ConflictStore SCIP_CONFLICTSTORE
struct SCIP_Cons SCIP_CONS
struct SCIP_Datatree SCIP_DATATREE
struct SCIP_EventFilter SCIP_EVENTFILTER
struct SCIP_EventQueue SCIP_EVENTQUEUE
struct SCIP_Event SCIP_EVENT
struct SCIP_CliqueTable SCIP_CLIQUETABLE
enum SCIP_BaseStat SCIP_BASESTAT
struct SCIP_Messagehdlr SCIP_MESSAGEHDLR
struct SCIP_HashMap SCIP_HASHMAP
struct SCIP_Primal SCIP_PRIMAL
#define SCIP_DECL_PROBCOPY(x)
#define SCIP_DECL_PROBDELTRANS(x)
#define SCIP_DECL_PROBEXITSOL(x)
struct SCIP_ProbData SCIP_PROBDATA
struct SCIP_Prob SCIP_PROB
#define SCIP_DECL_PROBDELORIG(x)
#define SCIP_DECL_PROBTRANS(x)
#define SCIP_DECL_PROBINITSOL(x)
enum SCIP_Objsense SCIP_OBJSENSE
struct SCIP_Rational SCIP_RATIONAL
struct SCIP_Reopt SCIP_REOPT
enum SCIP_Result SCIP_RESULT
enum SCIP_Retcode SCIP_RETCODE
@ SCIP_STAGE_TRANSFORMING
struct SCIP_Stat SCIP_STAT
struct SCIP_Tree SCIP_TREE
enum SCIP_ImplintType SCIP_IMPLINTTYPE
@ SCIP_VARTYPE_CONTINUOUS
@ SCIP_VARSTATUS_ORIGINAL
@ SCIP_VARSTATUS_MULTAGGR
@ SCIP_VARSTATUS_AGGREGATED
enum SCIP_Vartype SCIP_VARTYPE
SCIP_RETCODE SCIPvarResetBounds(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
SCIP_RETCODE SCIPvarChgObj(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_Real newobj)
SCIP_Real SCIPvarGetImplRedcost(SCIP_VAR *var, SCIP_SET *set, SCIP_Bool varfixing, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_LP *lp)
void SCIPvarInitSolve(SCIP_VAR *var)
SCIP_RETCODE SCIPvarTransform(SCIP_VAR *origvar, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_OBJSENSE objsense, SCIP_VAR **transvar)
SCIP_RETCODE SCIPvarRelease(SCIP_VAR **var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
SCIP_RETCODE SCIPvarRemove(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_CLIQUETABLE *cliquetable, SCIP_SET *set, SCIP_Bool final, SCIP_Bool keepimplics)
void SCIPvarCapture(SCIP_VAR *var)
void SCIPvarStoreRootSol(SCIP_VAR *var, SCIP_Bool roothaslp)
SCIP_RETCODE SCIPvarChgType(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_VARTYPE vartype)
void SCIPvarUpdateBestRootSol(SCIP_VAR *var, SCIP_SET *set, SCIP_Real rootsol, SCIP_Real rootredcost, SCIP_Real rootlpobjval)
SCIP_RETCODE SCIPvarChgImplType(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_IMPLINTTYPE impltype)
void SCIPvarMarkDeleted(SCIP_VAR *var)
SCIP_RETCODE SCIPvarLoose(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_LP *lp)
SCIP_RETCODE SCIPvarCopyExactData(BMS_BLKMEM *blkmem, SCIP_VAR *targetvar, SCIP_VAR *sourcevar, SCIP_Bool negateobj)
void SCIPvarSetProbindex(SCIP_VAR *var, int probindex)
SCIP_RETCODE SCIPvarChgObjExact(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_PRIMAL *primal, SCIP_LPEXACT *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_RATIONAL *newobj)
internal methods for problem variables