lastsortstartidx;
143assert(propdata !=
NULL);
145propdata->sortedvars =
NULL;
146propdata->nprobed =
NULL;
147propdata->noldtotalvars = 0;
148propdata->nsortedvars = 0;
149propdata->nsortedbinvars = 0;
150propdata->startidx = 0;
151propdata->lastsortstartidx = -1;
152propdata->nfixings = 0;
153propdata->naggregations = 0;
154propdata->nimplications = 0;
155propdata->nbdchgs = 0;
156propdata->nuseless = 0;
157propdata->ntotaluseless = 0;
158propdata->nsumuseless = 0;
159propdata->lastnode = -2;
160propdata->randnumgen =
NULL;
172assert(propdata !=
NULL);
174 if( propdata->sortedvars !=
NULL)
179 for( i = 0; i < propdata->nsortedvars; ++i )
184propdata->nsortedvars = 0;
185propdata->nsortedbinvars = 0;
189propdata->noldtotalvars = 0;
217assert(propdata !=
NULL);
218assert(propdata->nprobed !=
NULL);
220assert(vars !=
NULL|| nvars == 0);
222nsortedvars = nvars - firstidx;
223 if( nsortedvars <= 0 )
226assert(vars !=
NULL);
228sortedvars = &(vars[firstidx]);
230 SCIPdebugMsg(
scip,
"resorting probing variables %d to %d\n", firstidx, nvars-1);
236minnprobings = INT_MAX;
239 for( i = 0; i < nvars; ++i )
260tmp = -
MAX(nlocksdown, nlocksup)
261+ 10.0 *
MIN(nimplzero, nimplone)
262+ 100.0 *
MIN(nclqzero, nclqone);
264tmp = -
ABS(nlocksdown - nlocksup)
265+
MIN(nlocksdown, nlocksup)
266+ 500.0 * nimplzero + 50.0 * nimplone
267+ 50000.0 * nclqzero + 5000.0 * nclqone;
270 if( tmp > maxscore )
278 if( minnprobings > 0 )
280 for( i = 0; i < nvars; ++i )
291 for( i = 0; i < nsortedvars; ++i )
317-
MAX(nlocksdown, nlocksup)
318+ 10.0 *
MIN(nimplzero, nimplone)
319+ 100.0 *
MIN(nclqzero, nclqone)
323-
ABS(nlocksdown - nlocksup)
324+
MIN(nlocksdown, nlocksup)
325+ 500.0 * nimplzero + 50.0 * nimplone
326+ 50000.0 * nclqzero + 5000.0 * nclqone
370 intlocalnimplications;
380assert(vars !=
NULL);
381assert(nbinvars > 0);
383maxfixings = (propdata->maxfixings > 0 ? propdata->maxfixings : INT_MAX);
384maxuseless = (propdata->maxuseless > 0 ? propdata->maxuseless : INT_MAX);
385maxtotaluseless = (propdata->maxtotaluseless > 0 ? propdata->maxtotaluseless : INT_MAX);
386maxsumuseless = (propdata->maxsumuseless > 0 ? propdata->maxsumuseless : INT_MAX);
389oldstartidx = *startidx;
407 for( ; i < nbinvars && !(*cutoff); ++i )
414 if( propdata->nuseless >= maxuseless || propdata->ntotaluseless >= maxtotaluseless || propdata->nsumuseless >= maxsumuseless ||
SCIPisStopped(
scip) )
417 " (%.1fs) probing: %d/%d (%.1f%%) - %d fixings, %d aggregations, %d implications, %d bound changes\n",
419propdata->nfixings, propdata->naggregations, propdata->nimplications, propdata->nbdchgs);
423 if( propdata->nuseless >= maxuseless )
427propdata->nuseless, maxuseless);
429 else if( propdata->ntotaluseless >= maxtotaluseless )
433propdata->ntotaluseless, maxtotaluseless);
435 else if( propdata->nsumuseless >= maxsumuseless )
439propdata->nsumuseless, maxsumuseless);
451 if( *nfixedvars - oldnfixedvars + *naggrvars - oldnaggrvars >= maxfixings || (looped && oldstartidx == i) )
453 if( *nfixedvars - oldnfixedvars + *naggrvars - oldnaggrvars > 0 )
467 " (%.1fs) probing: %d/%d (%.1f%%) - %d fixings, %d aggregations, %d implications, %d bound changes\n",
469propdata->nfixings, propdata->naggregations, propdata->nimplications, propdata->nbdchgs);
477 if( propdata->nuseless > 0 )
478propdata->nsumuseless++;
480propdata->nsumuseless =
MAX(propdata->nsumuseless-1, 0);
481propdata->nuseless++;
482propdata->ntotaluseless++;
493oneimpllbs, oneimplubs, oneproplbs, onepropubs, &localcutoff) );
512 SCIPdebugMsg(
scip,
"fixed probing variable <%s> to 0.0, nlocks=(%d/%d)\n",
516propdata->nfixings++;
517propdata->nuseless = 0;
518propdata->ntotaluseless = 0;
522 SCIPdebugMsg(
scip,
"tightening upper bound of probing variable <%s> to 0.0 led to a cutoff\n",
539probingzero =
FALSE;
545zeroimpllbs, zeroimplubs, zeroproplbs, zeropropubs, &localcutoff) );
563 SCIPdebugMsg(
scip,
"fixed probing variable <%s> to 1.0, nlocks=(%d/%d)\n",
567propdata->nfixings++;
568propdata->nuseless = 0;
569propdata->ntotaluseless = 0;
573 SCIPdebugMsg(
scip,
"tightening lower bound of probing variable <%s> to 1.0 led to a cutoff\n",
581 if( !probingzero || !probingone )
592localnimplications = 0;
595nvars, vars, zeroimpllbs, zeroimplubs, zeroproplbs, zeropropubs, oneimpllbs, oneimplubs, oneproplbs, onepropubs,
596&localnfixedvars, &localnaggrvars, &localnimplications, &localnchgbds, cutoff) );
598*nfixedvars += localnfixedvars;
599*naggrvars += localnaggrvars;
600*nchgbds += localnchgbds;
601propdata->nfixings += localnfixedvars;
602propdata->naggregations += localnaggrvars;
603propdata->nbdchgs += localnchgbds;
604propdata->nimplications += localnimplications;
606 if( localnfixedvars > 0 || localnaggrvars > 0 )
609localnfixedvars, localnaggrvars);
610propdata->nuseless = 0;
611propdata->ntotaluseless = 0;
613 if( localnimplications > 0 || localnchgbds > 0 )
614propdata->ntotaluseless = 0;
620 if( i == nbinvars && !(*cutoff) && !(*delay) && !aborted )
636assert(vars == propdata->sortedvars);
637assert(nbinvars == propdata->nsortedbinvars);
640 for( v = propdata->nsortedvars - 1; v >= 0; --v )
645propdata->nsortedvars = 0;
646propdata->nsortedbinvars = 0;
652propdata->nsortedvars = nnewvars;
659lastidx = nnewbinvars + nnewintvars + nnewimplvars;
660 for( v = nnewbinvars; v < lastidx; ++v )
664 SCIPswapPointers((
void**) &(propdata->sortedvars[nnewbinvars]), (
void**) &(propdata->sortedvars[v]));
668propdata->nsortedbinvars = nnewbinvars;
670nbinvars = nnewbinvars;
671vars = propdata->sortedvars;
672nvars = propdata->nsortedvars;
684 if( oldstartidx >= nbinvars )
685oldstartidx = nbinvars - 1;
688 for( v = propdata->nsortedvars - 1; v >= 0; --v )
693 if( nnewbinvars == 0 )
696propdata->lastsortstartidx = -1;
697propdata->nuseless = 0;
698propdata->ntotaluseless = 0;
705propdata->lastsortstartidx = 0;
709 while( i == 0 && !(*cutoff) && !(*delay) && !aborted );
737assert(prop !=
NULL);
755assert(propdata !=
NULL);
756assert(propdata->sortedvars ==
NULL);
757assert(propdata->nsortedvars == 0);
758assert(propdata->nsortedbinvars == 0);
774assert(propdata !=
NULL);
793assert(propdata !=
NULL);
796assert(propdata->sortedvars ==
NULL);
797assert(propdata->nsortedvars == 0);
798assert(propdata->nsortedbinvars == 0);
813assert(propdata !=
NULL);
815propdata->lastnode = -2;
828assert(propdata !=
NULL);
834assert(propdata->sortedvars ==
NULL);
835assert(propdata->nsortedvars == 0);
836assert(propdata->nsortedbinvars == 0);
851assert(propdata !=
NULL);
854propdata->nuseless = 0;
855propdata->ntotaluseless = 0;
856propdata->nsumuseless = 0;
874 intoldnimplications;
879assert(result !=
NULL);
888 if( nbinvars + nintvars + nimplvars == 0 )
893assert(propdata !=
NULL);
900 if( propdata->lastnode == -1 && nnewfixedvars == 0 && nnewaggrvars == 0 && nnewchgbds == 0 && nnewholes == 0 )
908propdata->nuseless -= propdata->nuseless/10;
909propdata->ntotaluseless -= propdata->ntotaluseless/10;
912 if( propdata->sortedvars ==
NULL)
918assert(propdata->startidx == 0);
923propdata->nsortedvars = nvars;
926lastidx = nbinvars + nintvars + nimplvars;
927 for( v = nbinvars; v < lastidx; ++v )
931 SCIPswapPointers((
void**) &(propdata->sortedvars[nbinvars]), (
void**) &(propdata->sortedvars[v]));
935propdata->nsortedbinvars = nbinvars;
938 for( v = propdata->nsortedvars - 1; v >= 0 ; --v )
944 if( propdata->nsortedbinvars == 0 )
951 if( propdata->noldtotalvars < ntotalvars )
954 BMSclearMemoryArray(&(propdata->nprobed[propdata->noldtotalvars]), ntotalvars - propdata->noldtotalvars);
955propdata->noldtotalvars = ntotalvars;
958propdata->lastnode = -1;
961 if( propdata->lastsortstartidx < 0 || propdata->startidx - propdata->lastsortstartidx >= 100 )
964propdata->lastsortstartidx = propdata->startidx;
967oldnfixedvars = *nfixedvars;
968oldnaggrvars = *naggrvars;
969oldnchgbds = *nchgbds;
970oldnimplications = propdata->nimplications;
974&(propdata->startidx), nfixedvars, naggrvars, nchgbds, oldnfixedvars, oldnaggrvars, &delay, &cutoff) );
984propdata->lastnode = -2;
987 if( *nfixedvars > oldnfixedvars || *naggrvars > oldnaggrvars || *nchgbds > oldnchgbds
988|| propdata->nimplications > oldnimplications )
1018assert(result !=
NULL);
1032assert(propdata !=
NULL);
1039 if( propdata->maxdepth >= 0 && propdata->maxdepth <
SCIPgetDepth(
scip) )
1053 for( i = 0; i < nvars; ++i )
1058assert(var !=
NULL);
1064binvars[nbinvars] = var;
1070 if( nbinvars == 0 )
1080 if( propdata->noldtotalvars < ntotalvars )
1083 BMSclearMemoryArray(&(propdata->nprobed[propdata->noldtotalvars]), ntotalvars - propdata->noldtotalvars);
1084propdata->noldtotalvars = ntotalvars;
1097 SCIPdebug( oldnimplications = propdata->nimplications; )
1100 SCIP_CALL(
applyProbing(
scip, propdata, binvars, nbinvars, nbinvars, &startidx, &nfixedvars, &naggrvars, &nchgbds, oldnfixedvars, oldnaggrvars, &delay, &cutoff) );
1101 SCIPdebug(
SCIPdebugMsg(
scip,
"probing propagation found %d fixings, %d aggregation, %d nchgbds, and %d implications\n",
1102nfixedvars, naggrvars, nchgbds, (propdata->nimplications) - oldnimplications); )
1107propdata->lastnode = -2;
1113 else if( nfixedvars > oldnfixedvars || naggrvars > oldnaggrvars || nchgbds > oldnchgbds )
1151propExecProbing, propdata) );
1153assert(prop !=
NULL);
1170 "maximal number of runs, probing participates in (-1: no limit)",
1173 "propagating/" PROP_NAME "/proprounds",
1174 "maximal number of propagation rounds in probing subproblems (-1: no limit, 0: auto)",
1177 "propagating/" PROP_NAME "/maxfixings",
1178 "maximal number of fixings found, until probing is interrupted (0: don't iterrupt)",
1181 "propagating/" PROP_NAME "/maxuseless",
1182 "maximal number of successive probings without fixings, until probing is aborted (0: don't abort)",
1185 "propagating/" PROP_NAME "/maxtotaluseless",
1186 "maximal number of successive probings without fixings, bound changes, and implications, until probing is aborted (0: don't abort)",
1189 "propagating/" PROP_NAME "/maxsumuseless",
1190 "maximal number of probings without fixings, until probing is aborted (0: don't abort)",
1194 "maximal depth until propagation is executed(-1: no limit)",
1217assert(impllbs !=
NULL);
1218assert(implubs !=
NULL);
1219assert(proplbs !=
NULL);
1220assert(propubs !=
NULL);
1221assert(cutoff !=
NULL);
1222assert(0 <= probingpos && probingpos < nvars);
1226 SCIPdebugMsg(
scip,
"applying probing on variable <%s> %s %g (nlocks=%d/%d, impls=%d/%d, clqs=%d/%d)\n",
1271 for( i = 0; i < nvars; ++i )
1282 SCIPdebugMsg(
scip,
"propagating probing implications after <%s> to %g led to a cutoff\n",
1291 for( i = 0; i < nvars; ++i )
1330 int* nimplications,
1342assert(probingvar !=
NULL);
1345assert(vars !=
NULL|| nvars == 0);
1346assert(leftproplbs !=
NULL);
1347assert(leftpropubs !=
NULL);
1348assert(rightproplbs !=
NULL);
1349assert(rightpropubs !=
NULL);
1350assert(nfixedvars !=
NULL);
1351assert(naggrvars !=
NULL);
1352assert(nimplications !=
NULL);
1353assert(nchgbds !=
NULL);
1354assert(cutoff !=
NULL);
1363probingvarisinteger =
TRUE;
1370probingvarisbinary =
FALSE;
1371probingvarisinteger =
FALSE;
1380 for( j = 0; j < nvars && !*cutoff; ++j )
1387assert(vars !=
NULL);
1390assert(var !=
NULL);
1399 if( var == probingvar && probingvarisbinary )
1403newlb =
MIN(leftproplbs[j], rightproplbs[j]);
1404newub =
MAX(leftpropubs[j], rightpropubs[j]);
1413 if( !varisinteger )
1441 SCIPdebugMsg(
scip,
"fixed variable <%s> to %g due to probing on <%s> with nlocks=(%d/%d)\n",
1449 SCIPdebugMsg(
scip,
"analyzing probing deduction of <%s> led to an infeasible fixing of variable <%s> to %g\n",
1471tightenlb = (newlb > oldlb + 0.5);
1472tightenub = (newub < oldub - 0.5);
1487 SCIPdebugMsg(
scip,
"tightened lower bound of variable <%s>[%g,%g] to %g due to probing on <%s> with nlocks=(%d/%d)\n",
1495 SCIPdebugMsg(
scip,
"analyzing probing deduction of <%s> led to an infeasible new lower bound of variable <%s> to %g\n",
1500 if( tightenub && !*cutoff )
1506 SCIPdebugMsg(
scip,
"tightened upper bound of variable <%s>[%g,%g] to %g due to probing on <%s> with nlocks=(%d/%d)\n",
1514 SCIPdebugMsg(
scip,
"analyzing probing deduction of <%s> led to an infeasible new lower bound of variable <%s> to %g\n",
1525 if( var == probingvar )
1529 if( fixedleft && fixedright &&
1550rightlb - leftub, -(rightproplbs[j] - leftproplbs[j]), leftproplbs[j] * rightlb - rightproplbs[j] * leftub,
1551cutoff, &redundant, &aggregated) );
1555 SCIPdebugMsg(
scip,
"aggregated variables %g<%s> - %g<%s> == %g, nlocks=(%d/%d)\n",
1558leftproplbs[j] * rightlb - rightproplbs[j] * leftub,
1565 SCIPdebugMsg(
scip,
"analyzing probing deduction of <%s> led to an infeasible aggregation: %g<%s> - %g<%s> == %g\n",
1568leftproplbs[j] * rightlb - rightproplbs[j] * leftub);
1581 SCIP_CALL(
SCIPaddVarVlb(
scip, var, probingvar, (rightproplbs[j] - leftproplbs[j]) / (rightlb - leftub), (leftproplbs[j] * rightlb - rightproplbs[j] * leftub) / (rightlb - leftub), cutoff, &nboundchanges) );
1582(*nchgbds) += nboundchanges;
1586 SCIPdebugMsg(
scip,
"analyzing probing deduction of <%s> led to an infeasible vlb: %g<%s> - %g<%s> == %g\n",
1589leftproplbs[j] * rightlb - rightproplbs[j] * leftub);
1593 SCIP_CALL(
SCIPaddVarVub(
scip, var, probingvar, (rightproplbs[j] - leftproplbs[j]) / (rightlb - leftub), (leftproplbs[j] * rightlb - rightproplbs[j] * leftub) / (rightlb - leftub), cutoff, &nboundchanges) );
1594(*nchgbds) += nboundchanges;
1598 SCIPdebugMsg(
scip,
"analyzing probing deduction of <%s> led to an infeasible vub: %g<%s> - %g<%s> == %g\n",
1601leftproplbs[j] * rightlb - rightproplbs[j] * leftub);
1624 if(
SCIPisEQ(
scip, newlb, leftpropubs[j]) && (leftimplubs ==
NULL|| leftimplubs[j] > leftpropubs[j]) )
1633cutoff, &nboundchanges) );
1635(*nchgbds) += nboundchanges;
1639 SCIPdebugMsg(
scip,
"analyzing probing deduction of <%s> led to an infeasible implication <%s> == 0 => <%s> == %g\n",
1643 else if(
SCIPisEQ(
scip, newub, leftproplbs[j]) && (leftimpllbs ==
NULL|| leftimpllbs[j] < leftproplbs[j]) )
1652cutoff, &nboundchanges) );
1654(*nchgbds) += nboundchanges;
1658 SCIPdebugMsg(
scip,
"analyzing probing deduction of <%s> led to an infeasible implication <%s> == 0 => <%s> == %g\n",
1663 else if(
SCIPisEQ(
scip, newlb, rightpropubs[j]) && (rightimplubs ==
NULL|| rightimplubs[j] > rightpropubs[j]) )
1672cutoff, &nboundchanges) );
1674(*nchgbds) += nboundchanges;
1678 SCIPdebugMsg(
scip,
"analyzing probing deduction of <%s> led to an infeasible implication <%s> == 1 => <%s> == %g\n",
1682 else if(
SCIPisEQ(
scip, newub, rightproplbs[j]) && (rightimpllbs ==
NULL|| rightimpllbs[j] < rightproplbs[j]) )
1691cutoff, &nboundchanges) );
1693(*nchgbds) += nboundchanges;
1697 SCIPdebugMsg(
scip,
"analyzing probing deduction of <%s> led to an infeasible implication <%s> == 1 => <%s> == %g\n",
1706 if( leftpropubs[j] < newub - 0.5 && (leftimplubs ==
NULL|| leftpropubs[j] < leftimplubs[j]) )
1712cutoff, &nboundchanges) );
1714(*nchgbds) += nboundchanges;
1718 SCIPdebugMsg(
scip,
"analyzing probing deduction of <%s> led to an infeasible implication <%s> == 0 => <%s> <= %g\n",
1722 if( leftproplbs[j] > newlb + 0.5 && (leftimpllbs ==
NULL|| leftproplbs[j] > leftimpllbs[j]) && !*cutoff )
1728cutoff, &nboundchanges) );
1730(*nchgbds) += nboundchanges;
1734 SCIPdebugMsg(
scip,
"analyzing probing deduction of <%s> led to an infeasible implication <%s> == 0 => <%s> >= %g\n",
1738 if( rightpropubs[j] < newub - 0.5 && (rightimplubs ==
NULL|| rightpropubs[j] < rightimplubs[j]) && !*cutoff )
1744cutoff, &nboundchanges) );
1746(*nchgbds) += nboundchanges;
1750 SCIPdebugMsg(
scip,
"analyzing probing deduction of <%s> led to an infeasible implication <%s> == 1 => <%s> <= %g\n",
1754 if( rightproplbs[j] > newlb + 0.5 && (rightimpllbs ==
NULL|| rightproplbs[j] > rightimpllbs[j]) && !*cutoff )
1760cutoff, &nboundchanges) );
1762(*nchgbds) += nboundchanges;
1766 SCIPdebugMsg(
scip,
"analyzing probing deduction of <%s> led to an infeasible implication <%s> == 1 => <%s> <= %g\n",
#define SCIP_LONGINT_FORMAT
SCIP_Bool SCIPisStopped(SCIP *scip)
SCIP_STAGE SCIPgetStage(SCIP *scip)
int SCIPgetNIntVars(SCIP *scip)
int SCIPgetNImplVars(SCIP *scip)
const char * SCIPgetProbName(SCIP *scip)
int SCIPgetNVars(SCIP *scip)
SCIP_VAR ** SCIPgetVars(SCIP *scip)
int SCIPgetNBinVars(SCIP *scip)
int SCIPgetNTotalVars(SCIP *scip)
void SCIPverbMessage(SCIP *scip, SCIP_VERBLEVEL msgverblevel, FILE *file, const char *formatstr,...)
SCIP_Real SCIPselectSimpleValue(SCIP_Real lb, SCIP_Real ub, SCIP_Longint maxdnom)
SCIP_RETCODE SCIPapplyProbingVar(SCIP *scip, SCIP_VAR **vars, int nvars, int probingpos, SCIP_BOUNDTYPE boundtype, SCIP_Real bound, int maxproprounds, SCIP_Real *impllbs, SCIP_Real *implubs, SCIP_Real *proplbs, SCIP_Real *propubs, SCIP_Bool *cutoff)
SCIP_RETCODE SCIPanalyzeDeductionsProbing(SCIP *scip, SCIP_VAR *probingvar, SCIP_Real leftub, SCIP_Real rightlb, int nvars, SCIP_VAR **vars, SCIP_Real *leftimpllbs, SCIP_Real *leftimplubs, SCIP_Real *leftproplbs, SCIP_Real *leftpropubs, SCIP_Real *rightimpllbs, SCIP_Real *rightimplubs, SCIP_Real *rightproplbs, SCIP_Real *rightpropubs, int *nfixedvars, int *naggrvars, int *nimplications, int *nchgbds, SCIP_Bool *cutoff)
SCIP_RETCODE SCIPaddIntParam(SCIP *scip, const char *name, const char *desc, int *valueptr, SCIP_Bool isadvanced, int defaultvalue, int minvalue, int maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
void SCIPswapPointers(void **pointer1, void **pointer2)
SCIP_RETCODE SCIPincludePropProbing(SCIP *scip)
SCIP_RETCODE SCIPgetLPBranchCands(SCIP *scip, SCIP_VAR ***lpcands, SCIP_Real **lpcandssol, SCIP_Real **lpcandsfrac, int *nlpcands, int *npriolpcands, int *nfracimplvars)
SCIP_LPSOLSTAT SCIPgetLPSolstat(SCIP *scip)
#define SCIPfreeMemoryArrayNull(scip, ptr)
#define SCIPreallocMemoryArray(scip, ptr, newnum)
#define SCIPallocBufferArray(scip, ptr, num)
#define SCIPreallocBufferArray(scip, ptr, num)
#define SCIPfreeBufferArray(scip, ptr)
#define SCIPduplicateMemoryArray(scip, ptr, source, num)
#define SCIPfreeMemoryArray(scip, ptr)
#define SCIPfreeBlockMemory(scip, ptr)
#define SCIPallocBlockMemory(scip, ptr)
SCIP_Longint SCIPnodeGetNumber(SCIP_NODE *node)
int SCIPnodeGetDepth(SCIP_NODE *node)
SCIP_RETCODE SCIPchgVarUbProbing(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
SCIP_RETCODE SCIPchgVarLbProbing(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
SCIP_RETCODE SCIPpropagateProbing(SCIP *scip, int maxproprounds, SCIP_Bool *cutoff, SCIP_Longint *ndomredsfound)
SCIP_Bool SCIPinProbing(SCIP *scip)
SCIP_RETCODE SCIPstartProbing(SCIP *scip)
SCIP_RETCODE SCIPpropagateProbingImplications(SCIP *scip, SCIP_Bool *cutoff)
SCIP_RETCODE SCIPendProbing(SCIP *scip)
void SCIPpropSetData(SCIP_PROP *prop, SCIP_PROPDATA *propdata)
SCIP_RETCODE SCIPsetPropInitsol(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPINITSOL((*propinitsol)))
SCIP_RETCODE SCIPsetPropResprop(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPRESPROP((*propresprop)))
SCIP_PROPDATA * SCIPpropGetData(SCIP_PROP *prop)
SCIP_RETCODE SCIPsetPropPresol(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPPRESOL((*proppresol)), int presolpriority, int presolmaxrounds, SCIP_PRESOLTIMING presoltiming)
SCIP_RETCODE SCIPsetPropExitpre(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPEXITPRE((*propexitpre)))
const char * SCIPpropGetName(SCIP_PROP *prop)
SCIP_RETCODE SCIPsetPropExit(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPEXIT((*propexit)))
SCIP_RETCODE SCIPsetPropInit(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPINIT((*propinit)))
SCIP_RETCODE SCIPsetPropInitpre(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPINITPRE((*propinitpre)))
SCIP_Real SCIPpropGetTime(SCIP_PROP *prop)
SCIP_RETCODE SCIPsetPropFree(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPFREE((*propfree)))
SCIP_RETCODE SCIPsetPropCopy(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPCOPY((*propcopy)))
SCIP_RETCODE SCIPincludePropBasic(SCIP *scip, SCIP_PROP **propptr, const char *name, const char *desc, int priority, int freq, SCIP_Bool delay, SCIP_PROPTIMING timingmask, SCIP_DECL_PROPEXEC((*propexec)), SCIP_PROPDATA *propdata)
int SCIPgetNRuns(SCIP *scip)
SCIP_Real SCIPgetSolvingTime(SCIP *scip)
SCIP_Bool SCIPisUbBetter(SCIP *scip, SCIP_Real newub, SCIP_Real oldlb, SCIP_Real oldub)
SCIP_Real SCIPinfinity(SCIP *scip)
SCIP_Bool SCIPisGE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisLbBetter(SCIP *scip, SCIP_Real newlb, SCIP_Real oldlb, SCIP_Real oldub)
SCIP_Bool SCIPisLE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIPfloor(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIPceil(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisZero(SCIP *scip, SCIP_Real val)
SCIP_Real SCIPepsilon(SCIP *scip)
SCIP_Bool SCIPisLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
int SCIPgetDepth(SCIP *scip)
SCIP_NODE * SCIPgetCurrentNode(SCIP *scip)
SCIP_RETCODE SCIPtightenVarLb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
SCIP_Bool SCIPvarIsDeleted(SCIP_VAR *var)
SCIP_Bool SCIPvarIsActive(SCIP_VAR *var)
SCIP_Bool SCIPvarIsBinary(SCIP_VAR *var)
int SCIPvarGetNImpls(SCIP_VAR *var, SCIP_Bool varfixing)
int SCIPvarGetNLocksUpType(SCIP_VAR *var, SCIP_LOCKTYPE locktype)
SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)
SCIP_RETCODE SCIPaggregateVars(SCIP *scip, SCIP_VAR *varx, SCIP_VAR *vary, SCIP_Real scalarx, SCIP_Real scalary, SCIP_Real rhs, SCIP_Bool *infeasible, SCIP_Bool *redundant, SCIP_Bool *aggregated)
SCIP_RETCODE SCIPtightenVarUb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
SCIP_VARTYPE SCIPvarGetType(SCIP_VAR *var)
SCIP_RETCODE SCIPaddVarVub(SCIP *scip, SCIP_VAR *var, SCIP_VAR *vubvar, SCIP_Real vubcoef, SCIP_Real vubconstant, SCIP_Bool *infeasible, int *nbdchgs)
int SCIPvarGetIndex(SCIP_VAR *var)
SCIP_RETCODE SCIPaddVarVlb(SCIP *scip, SCIP_VAR *var, SCIP_VAR *vlbvar, SCIP_Real vlbcoef, SCIP_Real vlbconstant, SCIP_Bool *infeasible, int *nbdchgs)
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_RETCODE SCIPreleaseVar(SCIP *scip, SCIP_VAR **var)
SCIP_RETCODE SCIPaddVarImplication(SCIP *scip, SCIP_VAR *var, SCIP_Bool varfixing, SCIP_VAR *implvar, SCIP_BOUNDTYPE impltype, SCIP_Real implbound, SCIP_Bool *infeasible, int *nbdchgs)
int SCIPvarGetNCliques(SCIP_VAR *var, SCIP_Bool varfixing)
SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)
SCIP_RETCODE SCIPfixVar(SCIP *scip, SCIP_VAR *var, SCIP_Real fixedval, SCIP_Bool *infeasible, SCIP_Bool *fixed)
int SCIPvarGetNLocksDownType(SCIP_VAR *var, SCIP_LOCKTYPE locktype)
void SCIPenableVarHistory(SCIP *scip)
SCIP_RETCODE SCIPcaptureVar(SCIP *scip, SCIP_VAR *var)
void SCIPfreeRandom(SCIP *scip, SCIP_RANDNUMGEN **randnumgen)
SCIP_Real SCIPrandomGetReal(SCIP_RANDNUMGEN *randnumgen, SCIP_Real minrandval, SCIP_Real maxrandval)
SCIP_RETCODE SCIPcreateRandom(SCIP *scip, SCIP_RANDNUMGEN **randnumgen, unsigned int initialseed, SCIP_Bool useglobalseed)
void SCIPsortDownRealPtr(SCIP_Real *realarray, void **ptrarray, int len)
memory allocation routines
#define BMSclearMemoryArray(ptr, num)
#define PROP_PRESOL_MAXROUNDS
#define PROP_PRESOLTIMING
static SCIP_DECL_PROPINIT(propInitProbing)
static SCIP_DECL_PROPCOPY(propCopyProbing)
static SCIP_DECL_PROPEXIT(propExitProbing)
static SCIP_DECL_PROPEXITPRE(propExitpreProbing)
#define DEFAULT_MAXUSELESS
static SCIP_DECL_PROPINITSOL(propInitsolProbing)
static SCIP_DECL_PROPFREE(propFreeProbing)
static SCIP_DECL_PROPPRESOL(propPresolProbing)
#define DEFAULT_MAXTOTALUSELESS
static SCIP_RETCODE applyProbing(SCIP *scip, SCIP_PROPDATA *propdata, SCIP_VAR **vars, int nvars, int nbinvars, int *startidx, int *nfixedvars, int *naggrvars, int *nchgbds, int oldnfixedvars, int oldnaggrvars, SCIP_Bool *delay, SCIP_Bool *cutoff)
#define DEFAULT_PROPROUNDS
static SCIP_RETCODE initPropdata(SCIP_PROPDATA *propdata)
static SCIP_RETCODE freeSortedvars(SCIP *scip, SCIP_PROPDATA *propdata)
static SCIP_DECL_PROPEXEC(propExecProbing)
#define DEFAULT_MAXSUMUSELESS
static SCIP_RETCODE sortVariables(SCIP *scip, SCIP_PROPDATA *propdata, SCIP_VAR **vars, int nvars, int firstidx)
static SCIP_DECL_PROPINITPRE(propInitpreProbing)
static SCIP_DECL_PROPRESPROP(propRespropProbing)
#define PROP_PRESOL_PRIORITY
#define DEFAULT_MAXFIXINGS
public methods for message output
public data structures and miscellaneous methods
methods for sorting joint arrays of various types
public methods for propagators
public methods for branch and bound tree
public methods for problem variables
public methods for branching rule plugins and branching
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 SCIP parameter handling
public methods for global and local (sub)problems
public methods for the probing mode
public methods for propagator plugins
public methods for random numbers
public methods for querying solving statistics
public methods for timing
public methods for the branch-and-bound tree
public methods for SCIP variables
enum SCIP_BoundType SCIP_BOUNDTYPE
enum SCIP_VerbLevel SCIP_VERBLEVEL
struct SCIP_PropData SCIP_PROPDATA
enum SCIP_Retcode SCIP_RETCODE
@ SCIP_VARTYPE_CONTINUOUS
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4