propagated:1;
139 unsigned intnofixedzero:1;
140 unsigned intimpladded:1;
141 unsigned intopimpladded:1;
142 unsigned intsorted:1;
143 unsigned intchanged:1;
144 unsigned intmerged:1;
145 unsigned intcheckwhenupgr:1;
148 unsigned intnotremovablewhenupgr:1;
154structSCIP_ConshdlrData
223assert(conshdlrdata !=
NULL);
224assert(eventhdlr !=
NULL);
229(*conshdlrdata)->eventhdlr = eventhdlr;
241assert(conshdlrdata !=
NULL);
242assert(*conshdlrdata !=
NULL);
257assert(consdata !=
NULL);
258assert(consdata->vars !=
NULL);
259assert(eventhdlr !=
NULL);
260assert(0 <= pos && pos < consdata->nvars);
261assert(filterpos !=
NULL);
281assert(consdata !=
NULL);
282assert(consdata->vars !=
NULL);
283assert(eventhdlr !=
NULL);
284assert(0 <= pos && pos < consdata->nvars);
285assert(filterpos >= 0);
304assert(consdata !=
NULL);
311 for( i = 0; i < consdata->nvars; ++i )
330assert(consdata !=
NULL);
337 for( i = 0; i < consdata->nvars; ++i )
356assert(consdata !=
NULL);
357assert(watchedvar1 == -1 || watchedvar1 != watchedvar2);
358assert(watchedvar1 != -1 || watchedvar2 == -1);
359assert(watchedvar1 == -1 || (0 <= watchedvar1 && watchedvar1 < consdata->nvars));
360assert(watchedvar2 == -1 || (0 <= watchedvar2 && watchedvar2 < consdata->nvars));
363 if( watchedvar1 == consdata->watchedvar2 || watchedvar2 == consdata->watchedvar1 )
367tmp = consdata->watchedvar1;
368consdata->watchedvar1 = consdata->watchedvar2;
369consdata->watchedvar2 = tmp;
370tmp = consdata->filterpos1;
371consdata->filterpos1 = consdata->filterpos2;
372consdata->filterpos2 = tmp;
374assert(watchedvar1 == -1 || watchedvar1 != consdata->watchedvar2);
375assert(watchedvar2 == -1 || watchedvar2 != consdata->watchedvar1);
378 if( consdata->watchedvar1 != -1 && consdata->watchedvar1 != watchedvar1 )
380assert(consdata->filterpos1 != -1);
383 if( consdata->watchedvar2 != -1 && consdata->watchedvar2 != watchedvar2 )
385assert(consdata->filterpos2 != -1);
390 if( watchedvar1 != -1 && watchedvar1 != consdata->watchedvar1 )
394 if( watchedvar2 != -1 && watchedvar2 != consdata->watchedvar2 )
400consdata->watchedvar1 = watchedvar1;
401consdata->watchedvar2 = watchedvar2;
414assert(consdata !=
NULL);
415assert(consdata->nvars <= consdata->varssize);
417 if( num > consdata->varssize )
423consdata->varssize = newsize;
425assert(num <= consdata->varssize);
449assert(consdata !=
NULL);
450assert(nvars == 0 || vars !=
NULL);
451assert(resvar !=
NULL);
455(*consdata)->resvar = resvar;
456(*consdata)->rows =
NULL;
457(*consdata)->aggrrow =
NULL;
458(*consdata)->nlrow =
NULL;
459(*consdata)->nvars = nvars;
460(*consdata)->varssize = nvars;
461(*consdata)->nrows = 0;
462(*consdata)->watchedvar1 = -1;
463(*consdata)->watchedvar2 = -1;
464(*consdata)->filterpos1 = -1;
465(*consdata)->filterpos2 = -1;
466(*consdata)->propagated =
FALSE;
467(*consdata)->nofixedzero =
FALSE;
468(*consdata)->impladded =
FALSE;
469(*consdata)->opimpladded =
FALSE;
470(*consdata)->sorted =
FALSE;
471(*consdata)->changed =
TRUE;
472(*consdata)->merged =
FALSE;
473(*consdata)->checkwhenupgr = checkwhenupgr;
474(*consdata)->notremovablewhenupgr = notremovablewhenupgr;
493 for( v = 0; v < (*consdata)->nvars; ++v )
495assert((*consdata)->vars[v] !=
NULL);
503 for( v = 0; v < (*consdata)->nvars; v++ )
505assert((*consdata)->vars[v] !=
NULL);
522assert(consdata !=
NULL);
524 if( consdata->rows !=
NULL)
526 for(
r= 0;
r< consdata->nrows; ++
r)
535 if( consdata->aggrrow !=
NULL)
538consdata->aggrrow =
NULL;
554assert(consdata !=
NULL);
555assert(*consdata !=
NULL);
567assert((*consdata)->watchedvar1 == -1);
568assert((*consdata)->watchedvar2 == -1);
575 if( (*consdata)->nlrow !=
NULL)
581 for( v = 0; v < (*consdata)->nvars; v++ )
583assert((*consdata)->vars[v] !=
NULL);
602assert(consdata !=
NULL);
631assert(var !=
NULL);
634assert(consdata !=
NULL);
635assert(consdata->rows ==
NULL);
645assert(var !=
NULL);
649consdata->vars[consdata->nvars] = var;
651consdata->sorted = (consdata->nvars == 1);
652consdata->changed =
TRUE;
653consdata->merged =
FALSE;
670 if( consdata->rows !=
NULL)
672 SCIPerrorMessage(
"cannot add coefficients to AND-constraint after LP relaxation was created\n");
690assert(eventhdlr !=
NULL);
693assert(consdata !=
NULL);
694assert(0 <= pos && pos < consdata->nvars);
710 if( consdata->watchedvar1 == pos )
714 if( consdata->watchedvar2 == pos )
719assert(pos != consdata->watchedvar1);
720assert(pos != consdata->watchedvar2);
726consdata->vars[pos] = consdata->vars[consdata->nvars-1];
730 if( consdata->watchedvar1 == consdata->nvars )
731consdata->watchedvar1 = pos;
732 if( consdata->watchedvar2 == consdata->nvars )
733consdata->watchedvar2 = pos;
735consdata->propagated =
FALSE;
736consdata->sorted =
FALSE;
737consdata->changed =
TRUE;
748assert(consdata !=
NULL);
750 if( !consdata->sorted )
752 if( consdata->nvars <= 1 )
753consdata->sorted =
TRUE;
760 if( consdata->watchedvar1 != -1 )
762var1 = consdata->vars[consdata->watchedvar1];
763assert(var1 !=
NULL);
764consdata->watchedvar1 = -1;
765 if( consdata->watchedvar2 != -1 )
767var2 = consdata->vars[consdata->watchedvar2];
768assert(var2 !=
NULL);
769consdata->watchedvar2 = -1;
772assert(consdata->watchedvar1 == -1);
773assert(consdata->watchedvar2 == -1);
774assert(var1 !=
NULL|| var2 ==
NULL);
777 SCIPsortPtr((
void**)consdata->vars, SCIPvarComp, consdata->nvars);
778consdata->sorted =
TRUE;
787found =
SCIPsortedvecFindPtr((
void**)consdata->vars, SCIPvarComp, (
void*)var1, consdata->nvars, &pos);
790(void)
SCIPsortedvecFindPtr((
void**)consdata->vars, SCIPvarComp, (
void*)var1, consdata->nvars, &pos);
792assert(pos >= 0 && pos < consdata->nvars);
793consdata->watchedvar1 = pos;
798found =
SCIPsortedvecFindPtr((
void**)consdata->vars, SCIPvarComp, (
void*)var2, consdata->nvars, &pos);
801(void)
SCIPsortedvecFindPtr((
void**)consdata->vars, SCIPvarComp, (
void*)var2, consdata->nvars, &pos);
803assert(pos >= 0 && pos < consdata->nvars);
804consdata->watchedvar2 = pos;
815 for( v = 0; v < consdata->nvars; ++v )
817assert(v == consdata->nvars-1 ||
SCIPvarCompare(consdata->vars[v], consdata->vars[v+1]) <= 0);
837assert(cons !=
NULL);
838assert(eventhdlr !=
NULL);
839assert(nchgcoefs !=
NULL);
842assert(consdata !=
NULL);
843assert(consdata->nvars == 0 || consdata->vars !=
NULL);
846 while( v < consdata->nvars )
848var = consdata->vars[v];
879#ifdef SCIP_DISABLED_CODE 891 if( repvar != consdata->resvar )
910consdata->resvar = repvar;
911consdata->changed =
TRUE;
936assert(consdata !=
NULL);
937assert(consdata->rows ==
NULL);
939nvars = consdata->nvars;
942consdata->nrows = nvars + 1;
958 for( i = 0; i < nvars; ++i )
990assert(consdata !=
NULL);
993 if( consdata->aggrrow ==
NULL)
1010 if( !(*infeasible) )
1012 if( consdata->rows ==
NULL)
1018assert(consdata->rows !=
NULL);
1046assert(consdata !=
NULL);
1047assert(consdata->resvar !=
NULL);
1049 if( consdata->nlrow ==
NULL)
1057 for( i = 0; i < consdata->nvars; ++i )
1065assert(consdata->nlrow !=
NULL);
1068 for( i = 0; i < consdata->nvars; ++i )
1098assert(violated !=
NULL);
1101assert(consdata !=
NULL);
1106mustcheck = checklprows;
1107mustcheck = mustcheck || (consdata->rows ==
NULL);
1110assert(consdata->rows !=
NULL);
1112 for(
r= 0;
r< consdata->nrows; ++
r)
1139 for( i = 0; i < consdata->nvars; ++i )
1143 if( minsolval > solval )
1149sumsolval += solval;
1156viol =
MAX3(0.0, solval - minsolval, sumsolval - (consdata->nvars - 1.0 + solval));
1209assert(separated !=
NULL);
1210assert(cutoff !=
NULL);
1212*separated =
FALSE;
1216assert(consdata !=
NULL);
1219 if( consdata->rows ==
NULL)
1223assert(consdata->rows !=
NULL);
1226 for(
r= 0;
r< consdata->nrows; ++
r)
1259assert(consdata !=
NULL);
1261assert(0 <= falsepos && falsepos < consdata->nvars);
1293assert(consdata !=
NULL);
1300 for( v = 0; v < consdata->nvars; ++v )
1326 SCIPdebugMsg(
scip,
"constraint <%s>: operator %d fixed to 0.0 -> fix resultant <%s> to 0.0\n",
1366 for( v = 0; v < nvars && !(*cutoff); ++v )
1368 SCIPdebugMsg(
scip,
"constraint <%s>: resultant fixed to 1.0 -> fix operator var <%s> to 1.0\n",
1380 else if( tightened )
1422assert(consdata !=
NULL);
1427nvars = consdata->nvars;
1428conscreated =
FALSE;
1452 else if( tightened )
1461 else if( tightened )
1473conscreated =
TRUE;
1481 for( v = 0; v < nvars; ++v )
1493conscreated =
TRUE;
1530assert(consdata !=
NULL);
1533 if( watchedvar2 == -1 )
1538assert(watchedvar1 != -1);
1545 for( v = consdata->nvars - 1; v >= 0; --v )
1546 if( v != watchedvar1 )
1551 SCIPdebugMsg(
scip,
"constraint <%s>: resultant <%s> fixed to 0.0, only one unfixed operand -> fix operand <%s> to 0.0\n",
1583 unsigned char** entries,
1604assert(cons !=
NULL);
1605assert(eventhdlr !=
NULL);
1606assert(*entries !=
NULL);
1607assert(nentries !=
NULL);
1608assert(nfixedvars !=
NULL);
1609assert(nchgcoefs !=
NULL);
1610assert(ndelconss !=
NULL);
1613assert(consdata !=
NULL);
1615 if( consdata->merged )
1619 if( consdata->nvars <= 1 )
1621consdata->merged =
TRUE;
1625vars = consdata->vars;
1626nvars = consdata->nvars;
1628assert(vars !=
NULL);
1635assert(*nentries >= nbinvars + nintvars + nimplvars);
1639 for( v = nvars - 1; v >= 0; --v )
1642assert(var !=
NULL);
1646assert(probvar !=
NULL);
1649assert(0 <= probidx);
1655(probidx >= nbinvars + nintvars && probidx < nbinvars + nintvars + nimplvars &&
1659(*entries)[probidx] = 0;
1666 for( v = nvars - 1; v >= 0; --v )
1669assert(var !=
NULL);
1673assert(probvar !=
NULL);
1676assert(0 <= probidx && probidx < *nentries);
1679 if( (*entries)[probidx] == 0 )
1697 SCIPdebugMsg(
scip,
"AND-constraint <%s> is redundant: variable <%s> and its negation are present -> fix resultant <%s> = 0\n",
1711assert(!infeasible);
1720consdata->merged =
TRUE;
1755assert(cutoff !=
NULL);
1756assert(nfixedvars !=
NULL);
1759assert(consdata !=
NULL);
1761resvar = consdata->resvar;
1762vars = consdata->vars;
1763nvars = consdata->nvars;
1768 if( consdata->propagated )
1770assert(consdata->nofixedzero);
1782 if( !consdata->nofixedzero )
1792consdata->nofixedzero =
TRUE;
1833watchedvar1 = consdata->watchedvar1;
1834watchedvar2 = consdata->watchedvar2;
1837 if( watchedvar1 != -1 )
1843 if( watchedvar2 != -1 )
1851 if( watchedvar1 == -1 )
1853watchedvar1 = watchedvar2;
1856assert(watchedvar1 != -1 || watchedvar2 == -1);
1859 if( watchedvar2 == -1 )
1861 for( i = 0; i < nvars; ++i )
1866 if( watchedvar1 == -1 )
1868assert(watchedvar2 == -1);
1871 else if( watchedvar1 != i )
1879assert(watchedvar1 != -1 || watchedvar2 == -1);
1882 if( watchedvar1 == -1 )
1884assert(watchedvar2 == -1);
1886 SCIPdebugMsg(
scip,
"constraint <%s>: all operator vars fixed to 1.0 -> fix resultant <%s> to 1.0\n",
1915assert(watchedvar1 != -1);
1955assert(result !=
NULL);
1958assert(consdata !=
NULL);
1959vars = consdata->vars;
1960nvars = consdata->nvars;
1967assert(infervar == consdata->resvar);
1968 for( i = 0; i < nvars; ++i )
1991assert(infervar == consdata->resvar);
1992 for( i = 0; i < nvars; ++i )
2005 for( i = 0; i < nvars; ++i )
2007 if( vars[i] != infervar )
2032 unsigned char** entries,
2058assert(conss !=
NULL|| nconss == 0);
2059assert(eventhdlr !=
NULL);
2060assert(*entries !=
NULL);
2061assert(nentries !=
NULL);
2062assert(cutoff !=
NULL);
2063assert(nfixedvars !=
NULL);
2064assert(naggrvars !=
NULL);
2065assert(nchgcoefs !=
NULL);
2066assert(ndelconss !=
NULL);
2067assert(nupgdconss !=
NULL);
2068assert(naddconss !=
NULL);
2073assert(conss !=
NULL);
2079 for( c = nconss - 1; c >= 0 && !(*cutoff); --c )
2082assert(cons !=
NULL);
2105assert(consdata !=
NULL);
2107vars = consdata->vars;
2108nvars = consdata->nvars;
2109assert(vars !=
NULL|| nvars == 0);
2114assert(vars !=
NULL);
2116resvar = consdata->resvar;
2117assert(resvar !=
NULL);
2131 intoldnfixedvars = *nfixedvars;
2132 intoldnaggrvars = *naggrvars;
2137 for( v = nvars - 1; v >= 0; --v )
2140assert(var !=
NULL);
2147impoperands[nimpoperands] = var;
2160maxpos = nimpoperands - 1;
2165assert(nimpoperands >= 0 && nimpoperands <= nvars);
2168 if( nimpoperands == 0 )
2182 if( nimpoperands == nvars && poscontissmall )
2188*cutoff = *cutoff || infeasible;
2192 for( v = nvars - 1; v >= 0 && !(*cutoff); --v )
2196*cutoff = *cutoff || infeasible;
2211assert(nimpoperands > 0);
2213 SCIPdebugMsg(
scip,
"dual-fixing all variables in constraint <%s> with positive contribution (when together exceeding the negative contribution of the resultant) to 0 and with negative contribution to 1\n",
SCIPconsGetName(cons));
2215 for( v = nimpoperands - 1; v >= 0 && !(*cutoff); --v )
2224*cutoff = *cutoff || infeasible;
2228 else if( !poscontissmall )
2231assert(!infeasible);
2244&infeasible, &redundant, &aggregated) );
2245assert(!infeasible);
2252aggregationperformed =
TRUE;
2258assert(*nfixedvars - oldnfixedvars + *naggrvars - oldnaggrvars <= nimpoperands);
2263 if( aggregationperformed || zerofix )
2278 if( fixval < 0.5 || *nfixedvars - oldnfixedvars + *naggrvars - oldnaggrvars == nvars )
2283assert(!infeasible);
2303assert(nimpoperands > 0);
2304assert(maxpos >= 0 && maxpos <= consdata->nvars);
2313 if( nimpoperands == nvars &&
SCIPisLE(
scip, maxobj, 0.0) )
2317 SCIPdebugMsg(
scip,
"dual-fixing variable <%s> in constraint <%s> to %g, because the contribution is%s "\
2318 "enough to nullify/exceed the contribution of the resultant \n",
2322zerofix = (fixval < 0.5);
2324*cutoff = *cutoff || infeasible;
2329 SCIPdebugMsg(
scip,
"dual-fixing all variables, except the variable with the highest contribution to "\
2330 "the objective, in constraint <%s> with positive contribution to 0 and with negative contribution to 1\n",
2333 for( v = nimpoperands - 1; v >= 0 && !(*cutoff); --v )
2351*cutoff = *cutoff || infeasible;
2355assert(*nfixedvars - oldnfixedvars <= nimpoperands);
2357assert((*nfixedvars - oldnfixedvars == nvars) == (nimpoperands == nvars));
2359 if( *nfixedvars - oldnfixedvars == nvars )
2365*cutoff = *cutoff || infeasible;
2388 intoldnchgcoefs = *nchgcoefs;
2389 intoldnfixedvars = *nfixedvars;
2402 for( v = nvars - 1; v >= 0; --v )
2405assert(var !=
NULL);
2435 "dual aggregating operand <%s> with 1 up- and downlock to the resultant <%s> in constraint <%s>\n",
2439*cutoff = *cutoff || infeasible;
2442goodvarsfound =
TRUE;
2445assert(*nchgcoefs - oldnchgcoefs <= nvars);
2457 if( !*cutoff && goodvarsfound && linearize )
2460 for( v = consdata->nvars - 1; v >= 0; --v )
2463assert(var !=
NULL);
2474 "dual-fixing variable <%s> in constraint <%s> to 1, because the contribution is negative\n",
2479assert(!infeasible);
2484assert(*nfixedvars - oldnfixedvars <= consdata->nvars);
2486assert(*nchgcoefs - oldnchgcoefs + *nfixedvars - oldnfixedvars <= nvars);
2496 for( v = nvars - 1; v >= 0; --v )
2499assert(var !=
NULL);
2528*cutoff = *cutoff || infeasible;
2535assert(*nchgcoefs - oldnchgcoefs <= nvars);
2550*cutoff = *cutoff || infeasible;
2564*cutoff = *cutoff || infeasible;
2588consvars[0] = consdata->resvar;
2593 for( v = consdata->nvars - 1; v >= 0; --v )
2596consvars[1] = consdata->vars[v];
2608(*naddconss) += consdata->nvars;
2616 else if( consdata->nvars == 1 )
2622&infeasible, &redundant, &aggregated) );
2627*cutoff = *cutoff || infeasible;
2708assert(cons !=
NULL);
2709assert(eventhdlr !=
NULL);
2710assert(cutoff !=
NULL);
2711assert(nfixedvars !=
NULL);
2712assert(naggrvars !=
NULL);
2713assert(nchgcoefs !=
NULL);
2714assert(ndelconss !=
NULL);
2715assert(naddconss !=
NULL);
2718assert(consdata !=
NULL);
2723vars = consdata->vars;
2724nvars = consdata->nvars;
2725assert(vars !=
NULL|| nvars == 0);
2732 for( v = nvars - 1; v >= 0; --v )
2734assert(vars !=
NULL);
2738 SCIPdebugMsg(
scip,
"In constraint <%s> the operand <%s> is fixed to 1 so remove it from the constraint\n",
2745assert(consdata->vars == vars);
2751 SCIPdebugMsg(
scip,
"constraint <%s> redundant: because operand <%s> is fixed to zero so we can fix the resultant <%s> to 0\n",
2755*cutoff = *cutoff || infeasible;
2767 if( consdata->nvars < nvars )
2769assert(vars == consdata->vars);
2774 if( consdata->nvars == 0 )
2776 SCIPdebugMsg(
scip,
"All operand in constraint <%s> were deleted, so the resultant needs to be fixed to 1\n",
2780*cutoff = *cutoff || infeasible;
2790 else if( consdata->nvars == 1 )
2797&infeasible, &redundant, &aggregated) );
2805*cutoff = *cutoff || infeasible;
2810nvars = consdata->nvars;
2818 for( v = nvars - 1; v > 0; --v )
2820assert(vars !=
NULL);
2823assert(var1 !=
NULL);
2827assert(var1 !=
NULL);
2836 for( v2 = v - 1; v2 >= 0; --v2 )
2839assert(var2 !=
NULL);
2843assert(var2 !=
NULL);
2865 SCIPdebugMsg(
scip,
"constraint <%s> redundant: because variable <%s> and variable <%s> are in a clique, the resultant <%s> can be fixed to 0\n",
2869*cutoff = *cutoff || infeasible;
2909var1 = consdata->resvar;
2910assert(var1 !=
NULL);
2914assert(var1 !=
NULL);
2922 SCIPdebugMsg(
scip,
"In constraint <%s> the resultant <%s> is fixed to 1 so fix all operands to 1\n",
2926 for( v = nvars - 1; v >= 0 && !(*cutoff); --v )
2928assert(vars !=
NULL);
2933*cutoff = *cutoff || infeasible;
2956 for( v = nvars - 1; v >= 0; --v )
2958assert(vars !=
NULL);
2961assert(var2 !=
NULL);
2965assert(var2 !=
NULL);
2978 if( value1 != value2 )
2980 SCIPdebugMsg(
scip,
"In constraint <%s> the resultant <%s> can be fixed to 0 because the negation of it is an operand.\n",
2984*cutoff = *cutoff || infeasible;
2998assert(value1 == value2);
3000consvars[0] = consdata->resvar;
3002 for( v2 = nvars - 1; v2 >= 0; --v2 )
3020 if( value1 == negated )
3022 SCIPdebugMsg(
scip,
"In constraint <%s> the resultant <%s> can be fixed to 0 because the negation of it is an operand.\n",
3026*cutoff = *cutoff || infeasible;
3037assert(consvars[1] !=
NULL);
3065 if( var1 == var2 && value1 == value2 )
3073 SCIPdebugMsg(
scip,
"in constraint <%s> the resultant <%s> can be fixed to 0 because it is in a clique with operand <%s>\n",
3077*cutoff = *cutoff || infeasible;
3090 for( v = nvars - 1; v >= 0; --v )
3092assert(vars !=
NULL);
3095assert(var1 !=
NULL);
3099assert(var1 !=
NULL);
3109allnegoperandsexist =
FALSE;
3114allnegoperandsexist =
TRUE;
3119 else if( v2 >= 0 && v == -1 )
3133 for( v = vstart; v >= vend; --v )
3135assert(vars !=
NULL);
3138assert(var1 !=
NULL);
3142assert(var1 !=
NULL);
3149 for( v2 = nvars - 1; v2 >= 0; --v2 )
3155assert(var2 !=
NULL);
3159assert(var2 !=
NULL);
3174 if( var1 == var2 && value1 == value2 )
3176 SCIPdebugMsg(
scip,
"in constraint <%s> the resultant <%s> can be fixed to 0 because two operands are negated of each other\n",
3180*cutoff = *cutoff || infeasible;
3190 if( var1 == var2 && value1 != value2 )
3202 SCIPdebugMsg(
scip,
"In constraint <%s> the operand <%s> is in a negated clique with all other operands, so we can aggregated this operand to the resultant <%s>.\n",
3206&infeasible, &redundant, &aggregated) );
3207*cutoff = *cutoff || infeasible;
3230var1 = consdata->resvar;
3232assert(var1 !=
NULL);
3235newvars[nvars] = var1;
3238 for( v = nvars - 1; v >= 0; --v )
3240assert(vars !=
NULL);
3244assert(var1 !=
NULL);
3250assert(newvars[v] != newvars[nvars]);
3257 for( v = nvars - 1; v >= 0 && upgrade; --v )
3259 for( v2 = v - 1; v2 >= 0; --v2 )
3277 if( negations[nvars] )
3285assert(newvars[nvars] !=
NULL);
3287 for( v = nvars - 1; v >= 0; --v )
3289 if( !negations[v] )
3297assert(newvars[v] !=
NULL);
3307 SCIPdebugMsg(
scip,
" -> upgrading AND-constraint <%s> with use of clique information to a set-partitioning constraint: \n",
SCIPconsGetName(cons));
3352 if( consdata1->nvars != consdata2->nvars )
3358assert(consdata1->sorted);
3359assert(consdata2->sorted);
3363 for( i = 0; i < consdata1->nvars ; ++i )
3366 if( consdata1->vars[i] != consdata2->vars[i] )
3368assert(
SCIPvarCompare(consdata1->vars[i], consdata2->vars[i]) == 1 ||
3370coefsequal =
FALSE;
3373assert(
SCIPvarCompare(consdata1->vars[i], consdata2->vars[i]) == 0);
3389assert(consdata !=
NULL);
3390assert(consdata->sorted);
3391assert(consdata->nvars > 0);
3396assert(minidx >= 0 && minidx <= maxidx);
3398 return SCIPhashFour(consdata->nvars, minidx, mididx, maxidx);
3420assert(conss !=
NULL);
3421assert(ndelconss !=
NULL);
3424hashtablesize = nconss;
3427hashGetKeyAndcons, hashKeyEqAndcons, hashKeyValAndcons, (
void*)
scip) );
3432 for( c = 0; c < nconss; ++c )
3447assert(consdata0->sorted);
3452 if( cons1 !=
NULL)
3462assert(consdata1 !=
NULL);
3463assert(consdata0->nvars >= 1 && consdata0->nvars == consdata1->nvars);
3465assert(consdata0->sorted && consdata1->sorted);
3466assert(consdata0->vars[0] == consdata1->vars[0]);
3470 if( consdata0->resvar != consdata1->resvar )
3474assert(
SCIPvarCompare(consdata0->resvar, consdata1->resvar) != 0);
3478cutoff, &redundant, &aggregated) );
3497consdata1->checkwhenupgr = consdata1->checkwhenupgr || consdata0->checkwhenupgr;
3498consdata1->notremovablewhenupgr = consdata1->notremovablewhenupgr || consdata0->notremovablewhenupgr;
3505 if( consdata0->changed &&
SCIPconsGetPos(cons1) < *firstchange )
3541assert(conshdlrdata !=
NULL);
3546 for( i = 0; i < nconss; i++ )
3552 if( !conshdlrdata->enforcecuts )
3564 else if( separated )
3598assert(conss !=
NULL);
3599assert(firstchange <= chkind);
3600assert(cutoff !=
NULL);
3601assert(naggrvars !=
NULL);
3602assert(nbdchgs !=
NULL);
3603assert(ndelconss !=
NULL);
3606cons0 = conss[chkind];
3615assert(consdata0->nvars >= 1);
3616assert(consdata0->sorted);
3619cons0changed = consdata0->changed;
3623 for( c = (cons0changed ? 0 : firstchange); c < chkind && !(*cutoff); ++c )
3642assert(consdata1 !=
NULL);
3644#ifdef SCIP_DISABLED_CODE 3645 SCIPdebugMsg(
scip,
"preprocess AND-constraint pair <%s>[chg:%d] and <%s>[chg:%d]\n",
3650 if( !cons0changed && !consdata1->changed )
3653assert(consdata1->nvars >= 1);
3657assert(consdata1->sorted);
3665cons0superset =
TRUE;
3666cons1superset =
TRUE;
3667 while( (v0 < consdata0->nvars || v1 < consdata1->nvars) && (cons0superset || cons1superset) )
3672 if( v0 < consdata0->nvars && v1 < consdata1->nvars )
3673varcmp =
SCIPvarCompare(consdata0->vars[v0], consdata1->vars[v1]);
3674 else if( v0 < consdata0->nvars )
3683cons1superset =
FALSE;
3689cons0superset =
FALSE;
3707 if( cons0superset && cons1superset )
3714 SCIPdebugMsg(
scip,
"equivalent AND-constraints <%s> and <%s>: aggregate resultants <%s> == <%s>\n",
3720&infeasible, &redundant, &aggregated) );
3735consdata0->checkwhenupgr = consdata1->checkwhenupgr || consdata0->checkwhenupgr;
3736consdata0->notremovablewhenupgr = consdata1->notremovablewhenupgr || consdata0->notremovablewhenupgr;
3743*cutoff = *cutoff || infeasible;
3745 else if( cons0superset )
3751 SCIPdebugMsg(
scip,
"AND-constraint <%s> is superset of <%s>: add implication <%s> = 1 -> <%s> = 1\n",
3757&infeasible, &nboundchgs) );
3758*cutoff = *cutoff || infeasible;
3759(*nbdchgs) += nboundchgs;
3761 else if( cons1superset )
3767 SCIPdebugMsg(
scip,
"AND-constraint <%s> is superset of <%s>: add implication <%s> = 1 -> <%s> = 1\n",
3773&infeasible, &nboundchgs) );
3774*cutoff = *cutoff || infeasible;
3775(*nbdchgs) += nboundchgs;
3779consdata0->changed =
FALSE;
3805assert(cons !=
NULL);
3806assert(graph !=
NULL);
3807assert(success !=
NULL);
3810assert(consdata !=
NULL);
3821assert(consdata->resvar !=
NULL);
3822vars[0] = consdata->resvar;
3833andvars = consdata->vars;
3834 for( i = 0; i < consdata->nvars; ++i )
3836assert(andvars[i] !=
NULL);
3837vars[0] = andvars[i];
3862assert(conshdlr !=
NULL);
3881assert(conshdlrdata !=
NULL);
3898assert( conshdlr !=
NULL);
3899assert( nconss == 0 || conss !=
NULL);
3902assert(conshdlrdata !=
NULL);
3904 if( conshdlrdata->linearize )
3922 for( c = 0; c < nconss; ++c )
3925assert( cons !=
NULL);
3932assert( consdata !=
NULL);
3933assert( consdata->resvar !=
NULL);
3935nvars = consdata->nvars;
3937 if( !conshdlrdata->aggrlinearization )
3939vars[0] = consdata->resvar;
3944 for( v = 0; v < nvars; ++v )
3947vars[1] = consdata->vars[v];
3965 for( v = 0; v < nvars; ++v )
3967vars[v] = consdata->vars[v];
3971vars[nvars] = consdata->resvar;
3973 if( conshdlrdata->aggrlinearization )
4019#ifdef GMLGATEPRINTING 4061gmlfile = fopen(fname,
"w");
4063 if( gmlfile ==
NULL)
4077 for( c = nconss - 1; c >= 0; --c )
4086assert(consdata !=
NULL);
4089 if( consdata->nvars == 0 )
4092assert(consdata->vars !=
NULL);
4093assert(consdata->resvar !=
NULL);
4118 for( v = consdata->nvars - 1; v >= 0; --v )
4140#ifdef SCIP_DISABLED_CODE 4141 for( v = nvars - 1; v >= 0; --v )
4182 for( c = 0; c < nconss; ++c )
4199 for( c = 0; c < nconss; ++c )
4202assert(consdata !=
NULL);
4206 if( consdata->nlrow !=
NULL)
4223assert(conshdlrdata !=
NULL);
4240assert(conshdlrdata !=
NULL);
4243assert(sourcedata !=
NULL);
4247sourcedata->nvars, sourcedata->vars, sourcedata->resvar, sourcedata->checkwhenupgr,
4248sourcedata->notremovablewhenupgr) );
4267*infeasible =
FALSE;
4269 for( i = 0; i < nconss && !(*infeasible); i++ )
4290 for( c = 0; c < nusefulconss; ++c )
4295 else if( separated )
4317 for( c = 0; c < nusefulconss; ++c )
4322 else if( separated )
4359 for( i = 0; i < nconss; i++ )
4382 for( i = 0; i < nconss && ( *result ==
SCIP_FEASIBLE|| completely ); ++i )
4403assert(conshdlrdata !=
NULL);
4410 for( c = 0; c < nusefulconss && !cutoff; ++c )
4418 else if( nfixedvars > 0 || nupgdconss > 0 )
4434 unsigned char* entries;
4445assert(result !=
NULL);
4447oldnfixedvars = *nfixedvars;
4448oldnaggrvars = *naggrvars;
4449oldnchgbds = *nchgbds;
4450oldndelconss = *ndelconss;
4451oldnupgdconss = *nupgdconss;
4457assert(conshdlrdata !=
NULL);
4461firstchange = INT_MAX;
4462 for( c = 0; c < nconss && !cutoff && (c % 1000 != 0 || !
SCIPisStopped(
scip)); ++c )
4465assert(cons !=
NULL);
4467assert(consdata !=
NULL);
4471consdata->propagated =
FALSE;
4474 if( firstchange == INT_MAX && consdata->changed )
4493assert(consdata->nvars >= 1);
4496 if( consdata->nvars == 1 )
4503assert(consdata->vars !=
NULL);
4509&cutoff, &redundant, &aggregated) );
4525 else if( !consdata->impladded )
4530 for( i = 0; i < consdata->nvars && !cutoff; ++i )
4536(*nchgbds) += nimplbdchgs;
4538consdata->impladded =
TRUE;
4542 if( !cutoff &&
SCIPconsIsActive(cons) && consdata->nvars == 2 && !consdata->opimpladded
4549(*nchgbds) += nimplbdchgs;
4550consdata->opimpladded =
TRUE;
4558 SCIP_CALL(
dualPresolve(
scip, conss, nconss, conshdlrdata->eventhdlr, &entries, &nentries, &cutoff, nfixedvars, naggrvars, nchgcoefs, ndelconss, nupgdconss, naddconss) );
4567assert(cons !=
NULL);
4587 SCIP_CALL(
cliquePresolve(
scip, cons, conshdlrdata->eventhdlr, &cutoff, nfixedvars, naggrvars, nchgcoefs, ndelconss, naddconss) );
4598 if( *nfixedvars == oldnfixedvars && *naggrvars == oldnaggrvars )
4600 if( firstchange < nconss )
4604oldnaggrvars = *naggrvars;
4611 if( *nfixedvars == oldnfixedvars && *naggrvars == oldnaggrvars )
4614npaircomparisons = 0;
4615oldndelconss = *ndelconss;
4630oldndelconss = *ndelconss;
4631oldnaggrvars = *naggrvars;
4632oldnchgbds = *nchgbds;
4634npaircomparisons = 0;
4646 else if( *nfixedvars > oldnfixedvars || *naggrvars > oldnaggrvars || *nchgbds > oldnchgbds
4647|| *ndelconss > oldndelconss || *nupgdconss > oldnupgdconss )
4676assert(consdata !=
NULL);
4682 for( i = 0; i < consdata->nvars; ++i )
4708assert(cons !=
NULL);
4711assert(consdata !=
NULL);
4729assert( conshdlr !=
NULL);
4730assert( cons !=
NULL);
4745 const char* consname;
4749assert(valid !=
NULL);
4756assert(!(*valid) || resvar !=
NULL);
4772 for( v = 0; v < nvars; ++v )
4775assert(!(*valid) || vars[v] !=
NULL);
4789initial, separate, enforce, check, propagate, local, modifiable, dynamic, removable, stickingatnode) );
4816 if( resvar ==
NULL)
4822 char* strcopy =
NULL;
4828startptr = strchr((
char*)str,
'(');
4830 if( startptr ==
NULL)
4832 SCIPerrorMessage(
"missing starting character '(' parsing AND-constraint\n");
4840endptr = strrchr(startptr,
')');
4842 if( endptr ==
NULL)
4844 SCIPerrorMessage(
"missing ending character ')' parsing AND-constraint\n");
4847assert(endptr >= startptr);
4849 if( endptr > startptr )
4853strcopy[endptr-startptr] =
'\0';
4866 if( varssize < requiredsize )
4869varssize = requiredsize;
4877assert(varssize >= requiredsize);
4881initial, separate, enforce, check, propagate, local, modifiable, dynamic, removable, stickingatnode) );
4898initial, separate, enforce, check, propagate, local, modifiable, dynamic, removable, stickingatnode) );
4914assert(consdata !=
NULL);
4916 if( varssize < consdata->nvars + 1 )
4917(*success) =
FALSE;
4921vars[consdata->nvars] = consdata->resvar;
4934assert(cons !=
NULL);
4937assert(consdata !=
NULL);
4939(*nvars) = consdata->nvars + 1;
4972assert(eventhdlr !=
NULL);
4973assert(eventdata !=
NULL);
4974assert(event !=
NULL);
4977assert(consdata !=
NULL);
4981consdata->nofixedzero =
FALSE;
4983consdata->propagated =
FALSE;
5004eventExecAnd,
NULL) );
5012consEnfolpAnd, consEnfopsAnd, consCheckAnd, consLockAnd,
5015assert(conshdlr !=
NULL);
5022#ifdef GMLGATEPRINTING 5048 "should pairwise constraint comparison be performed in presolving?",
5051 "constraints/and/presolusehashing",
5052 "should hash table be used for detecting redundant constraints in advance",
5056 "should the AND-constraint get linearized and removed (in presolving)?",
5060 "should cuts be separated during LP enforcing?",
5064 "should an aggregated linearization be used?",
5068 "should all binary resultant variables be upgraded to implicit binary variables?",
5072 "should dual presolving be performed?",
5122 if( conshdlr ==
NULL)
5136assert(vars !=
NULL|| nvars == 0);
5137 for( i = 0; i < nvars; ++i )
5147assert(conshdlrdata !=
NULL);
5168activeresvar = resvar;
5173 for( v = nvars - 1; v >= 0; --v )
5178activevar = vars[v];
5188assert(!infeasible);
5197 SCIP_CALL(
SCIPcreateCons(
scip, cons, name, conshdlr, consdata, initial, separate, enforce, check, propagate,
5198local, modifiable, dynamic, removable, stickingatnode) );
5238assert(cons !=
NULL);
5248assert(consdata !=
NULL);
5250 returnconsdata->nvars;
5262assert(cons !=
NULL);
5272assert(consdata !=
NULL);
5274 returnconsdata->vars;
5286assert(cons !=
NULL);
5296assert(consdata !=
NULL);
5298 returnconsdata->resvar;
5310assert(cons !=
NULL);
5320assert(consdata !=
NULL);
5322 returnconsdata->sorted;
5334assert(cons !=
NULL);
5344assert(consdata !=
NULL);
5347assert(consdata->sorted);
5366assert(cons !=
NULL);
5376assert(consdata !=
NULL);
5378consdata->checkwhenupgr = flag;
5398assert(cons !=
NULL);
5408assert(consdata !=
NULL);
5410consdata->notremovablewhenupgr = flag;
static SCIP_RETCODE addRelaxation(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *infeasible)
static SCIP_DECL_CONSACTIVE(consActiveAnd)
static SCIP_RETCODE consdataFreeRows(SCIP *scip, SCIP_CONSDATA *consdata)
static SCIP_RETCODE consdataPrint(SCIP *scip, SCIP_CONSDATA *consdata, FILE *file)
static SCIP_RETCODE consdataCatchWatchedEvents(SCIP *scip, SCIP_CONSDATA *consdata, SCIP_EVENTHDLR *eventhdlr, int pos, int *filterpos)
static SCIP_RETCODE consdataDropEvents(SCIP *scip, SCIP_CONSDATA *consdata, SCIP_EVENTHDLR *eventhdlr)
#define DEFAULT_DUALPRESOLVING
static SCIP_RETCODE dualPresolve(SCIP *scip, SCIP_CONS **conss, int nconss, SCIP_EVENTHDLR *eventhdlr, unsigned char **entries, int *nentries, SCIP_Bool *cutoff, int *nfixedvars, int *naggrvars, int *nchgcoefs, int *ndelconss, int *nupgdconss, int *naddconss)
static SCIP_RETCODE consdataSwitchWatchedvars(SCIP *scip, SCIP_CONSDATA *consdata, SCIP_EVENTHDLR *eventhdlr, int watchedvar1, int watchedvar2)
#define CONSHDLR_NEEDSCONS
#define CONSHDLR_SEPAFREQ
static SCIP_DECL_CONSDELETE(consDeleteAnd)
static SCIP_DECL_HASHKEYEQ(hashKeyEqAndcons)
static SCIP_DECL_EVENTEXEC(eventExecAnd)
static SCIP_RETCODE delCoefPos(SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, int pos)
#define CONSHDLR_CHECKPRIORITY
static SCIP_DECL_CONSFREE(consFreeAnd)
static SCIP_RETCODE consdataFixOperandsOne(SCIP *scip, SCIP_CONS *cons, SCIP_VAR **vars, int nvars, SCIP_Bool *cutoff, int *nfixedvars)
static SCIP_RETCODE separateCons(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool *separated, SCIP_Bool *cutoff)
static SCIP_RETCODE addCoef(SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, SCIP_VAR *var)
static SCIP_DECL_CONSCOPY(consCopyAnd)
static SCIP_RETCODE createRelaxation(SCIP *scip, SCIP_CONS *cons)
#define CONSHDLR_PROP_TIMING
static void conshdlrdataFree(SCIP *scip, SCIP_CONSHDLRDATA **conshdlrdata)
static SCIP_RETCODE unlockRounding(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var)
static SCIP_DECL_CONSENFOPS(consEnfopsAnd)
static SCIP_RETCODE analyzeZeroResultant(SCIP *scip, SCIP_CONS *cons, int watchedvar1, int watchedvar2, SCIP_Bool *cutoff, int *nfixedvars)
static SCIP_DECL_CONSINITPRE(consInitpreAnd)
static SCIP_DECL_HASHGETKEY(hashGetKeyAndcons)
static SCIP_RETCODE consdataCreate(SCIP *scip, SCIP_CONSDATA **consdata, SCIP_EVENTHDLR *eventhdlr, int nvars, SCIP_VAR **vars, SCIP_VAR *resvar, SCIP_Bool checkwhenupgr, SCIP_Bool notremovablewhenupgr)
#define DEFAULT_UPGRRESULTANT
#define CONSHDLR_MAXPREROUNDS
static SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH(consGetSignedPermsymGraphAnd)
static SCIP_RETCODE consdataFixResultantZero(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *resvar, int pos, SCIP_Bool *cutoff, int *nfixedvars)
static SCIP_DECL_CONSENFORELAX(consEnforelaxAnd)
#define DEFAULT_PRESOLPAIRWISE
#define CONSHDLR_SEPAPRIORITY
static SCIP_RETCODE analyzeConflictOne(SCIP *scip, SCIP_CONS *cons, int falsepos)
static SCIP_RETCODE detectRedundantConstraints(SCIP *scip, BMS_BLKMEM *blkmem, SCIP_CONS **conss, int nconss, int *firstchange, SCIP_Bool *cutoff, int *naggrvars, int *ndelconss)
static SCIP_DECL_CONSRESPROP(consRespropAnd)
static SCIP_DECL_CONSSEPASOL(consSepasolAnd)
#define DEFAULT_LINEARIZE
static SCIP_RETCODE cliquePresolve(SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, SCIP_Bool *cutoff, int *nfixedvars, int *naggrvars, int *nchgcoefs, int *ndelconss, int *naddconss)
static SCIP_RETCODE preprocessConstraintPairs(SCIP *scip, SCIP_CONS **conss, int firstchange, int chkind, SCIP_Bool *cutoff, int *naggrvars, int *nbdchgs, int *ndelconss)
static SCIP_DECL_CONSTRANS(consTransAnd)
static SCIP_RETCODE consdataLinearize(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *cutoff, int *nfixedvars, int *nupgdconss)
static SCIP_DECL_CONSLOCK(consLockAnd)
static SCIP_DECL_CONSINITLP(consInitlpAnd)
static SCIP_RETCODE addSymmetryInformation(SCIP *scip, SYM_SYMTYPE symtype, SCIP_CONS *cons, SYM_GRAPH *graph, SCIP_Bool *success)
static SCIP_DECL_CONSSEPALP(consSepalpAnd)
static SCIP_RETCODE lockRounding(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var)
static SCIP_DECL_CONSEXITSOL(consExitsolAnd)
static SCIP_DECL_CONSGETPERMSYMGRAPH(consGetPermsymGraphAnd)
static SCIP_RETCODE consdataEnsureVarsSize(SCIP *scip, SCIP_CONSDATA *consdata, int num)
static SCIP_RETCODE checkCons(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool checklprows, SCIP_Bool printreason, SCIP_Bool *violated)
#define DEFAULT_PRESOLUSEHASHING
static SCIP_RETCODE consdataFree(SCIP *scip, SCIP_CONSDATA **consdata, SCIP_EVENTHDLR *eventhdlr)
static SCIP_DECL_CONSPARSE(consParseAnd)
static SCIP_RETCODE consdataDropWatchedEvents(SCIP *scip, SCIP_CONSDATA *consdata, SCIP_EVENTHDLR *eventhdlr, int pos, int filterpos)
#define MINGAINPERNMINCOMPARISONS
static SCIP_RETCODE analyzeConflictZero(SCIP *scip, SCIP_CONS *cons)
static SCIP_DECL_CONSHDLRCOPY(conshdlrCopyAnd)
static SCIP_DECL_CONSINITSOL(consInitsolAnd)
#define CONSHDLR_PROPFREQ
static SCIP_DECL_CONSDEACTIVE(consDeactiveAnd)
#define DEFAULT_ENFORCECUTS
#define CONSHDLR_PRESOLTIMING
static SCIP_DECL_CONSGETNVARS(consGetNVarsAnd)
static void consdataSort(SCIP_CONSDATA *consdata)
static SCIP_DECL_CONSPROP(consPropAnd)
static SCIP_RETCODE addNlrow(SCIP *scip, SCIP_CONS *cons)
static SCIP_DECL_CONSPRINT(consPrintAnd)
#define CONSHDLR_EAGERFREQ
static SCIP_RETCODE conshdlrdataCreate(SCIP *scip, SCIP_CONSHDLRDATA **conshdlrdata, SCIP_EVENTHDLR *eventhdlr)
static SCIP_DECL_HASHKEYVAL(hashKeyValAndcons)
static SCIP_DECL_CONSENFOLP(consEnfolpAnd)
static SCIP_DECL_CONSPRESOL(consPresolAnd)
#define CONSHDLR_ENFOPRIORITY
static SCIP_DECL_CONSCHECK(consCheckAnd)
static SCIP_RETCODE applyFixings(SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, int *nchgcoefs)
static SCIP_RETCODE resolvePropagation(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *infervar, PROPRULE proprule, SCIP_BDCHGIDX *bdchgidx, SCIP_RESULT *result)
#define CONSHDLR_DELAYSEPA
static SCIP_RETCODE mergeMultiples(SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, unsigned char **entries, int *nentries, int *nfixedvars, int *nchgcoefs, int *ndelconss)
static SCIP_RETCODE enforceConstraint(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss, SCIP_SOL *sol, SCIP_RESULT *result)
#define DEFAULT_AGGRLINEARIZATION
static SCIP_RETCODE propagateCons(SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, SCIP_Bool *cutoff, int *nfixedvars, int *nupgdconss)
#define CONSHDLR_DELAYPROP
static SCIP_RETCODE consdataCatchEvents(SCIP *scip, SCIP_CONSDATA *consdata, SCIP_EVENTHDLR *eventhdlr)
static SCIP_DECL_CONSGETVARS(consGetVarsAnd)
Constraint handler for AND constraints, .
Constraint handler for linear constraints in their most general form, .
Constraint handler for logicor constraints (equivalent to set covering, but algorithms are suited fo...
constraint handler for pseudoboolean constraints
#define ARTIFICIALVARNAMEPREFIX
Constraint handler for the set partitioning / packing / covering constraints .
#define SCIP_CALL_FINALLY(x, y)
product expression handler
variable expression handler
SCIP_RETCODE SCIPcreateConsAnd(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *resvar, int nvars, SCIP_VAR **vars, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPchgAndConsCheckFlagWhenUpgr(SCIP *scip, SCIP_CONS *cons, SCIP_Bool flag)
SCIP_VAR * SCIPgetResultantAnd(SCIP *scip, SCIP_CONS *cons)
int SCIPgetNVarsAnd(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPchgAndConsRemovableFlagWhenUpgr(SCIP *scip, SCIP_CONS *cons, SCIP_Bool flag)
SCIP_RETCODE SCIPcreateConsSetpack(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPsortAndCons(SCIP *scip, SCIP_CONS *cons)
SCIP_Bool SCIPisAndConsSorted(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPcreateConsLinear(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPcreateConsSetpart(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_VAR ** SCIPgetVarsAnd(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPcreateConsLogicor(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPcreateConsBasicAnd(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *resvar, int nvars, SCIP_VAR **vars)
SCIP_RETCODE SCIPincludeConshdlrAnd(SCIP *scip)
SCIP_RETCODE SCIPgetVarCopy(SCIP *sourcescip, SCIP *targetscip, SCIP_VAR *sourcevar, SCIP_VAR **targetvar, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, SCIP_Bool *success)
SCIP_RETCODE SCIPcreateExprVar(SCIP *scip, SCIP_EXPR **expr, SCIP_VAR *var, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPcreateExprProduct(SCIP *scip, SCIP_EXPR **expr, int nchildren, SCIP_EXPR **children, SCIP_Real coefficient, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
void SCIPgmlWriteNode(FILE *file, unsigned int id, const char *label, const char *nodetype, const char *fillcolor, const char *bordercolor)
void SCIPgmlWriteClosing(FILE *file)
void SCIPgmlWriteOpening(FILE *file, SCIP_Bool directed)
void SCIPgmlWriteArc(FILE *file, unsigned int source, unsigned int target, const char *label, const char *color)
SCIP_Bool SCIPisTransformed(SCIP *scip)
SCIP_Bool SCIPisStopped(SCIP *scip)
SCIP_STAGE SCIPgetStage(SCIP *scip)
int SCIPgetNIntVars(SCIP *scip)
int SCIPgetNImplVars(SCIP *scip)
int SCIPgetNContVars(SCIP *scip)
SCIP_RETCODE SCIPgetVarsData(SCIP *scip, SCIP_VAR ***vars, int *nvars, int *nbinvars, int *nintvars, int *nimplvars, int *ncontvars)
int SCIPgetNVars(SCIP *scip)
SCIP_RETCODE SCIPaddCons(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPdelCons(SCIP *scip, SCIP_CONS *cons)
int SCIPgetNBinVars(SCIP *scip)
void SCIPhashmapFree(SCIP_HASHMAP **hashmap)
int SCIPhashmapGetImageInt(SCIP_HASHMAP *hashmap, void *origin)
SCIP_RETCODE SCIPhashmapCreate(SCIP_HASHMAP **hashmap, BMS_BLKMEM *blkmem, int mapsize)
SCIP_RETCODE SCIPhashmapInsertInt(SCIP_HASHMAP *hashmap, void *origin, int image)
void SCIPhashtableFree(SCIP_HASHTABLE **hashtable)
#define SCIPhashFour(a, b, c, d)
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 SCIPhashtableInsert(SCIP_HASHTABLE *hashtable, void *element)
SCIP_RETCODE SCIPdelConsLocal(SCIP *scip, SCIP_CONS *cons)
void SCIPinfoMessage(SCIP *scip, FILE *file, const char *formatstr,...)
#define SCIPdebugMsgPrint
SCIP_RETCODE SCIPaddBoolParam(SCIP *scip, const char *name, const char *desc, SCIP_Bool *valueptr, SCIP_Bool isadvanced, SCIP_Bool defaultvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
SCIP_RETCODE SCIPinitConflictAnalysis(SCIP *scip, SCIP_CONFTYPE conftype, SCIP_Bool iscutoffinvolved)
SCIP_Bool SCIPisConflictAnalysisApplicable(SCIP *scip)
SCIP_RETCODE SCIPaddConflictBinvar(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPanalyzeConflictCons(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *success)
SCIP_RETCODE SCIPsetConshdlrParse(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPARSE((*consparse)))
void SCIPconshdlrSetData(SCIP_CONSHDLR *conshdlr, SCIP_CONSHDLRDATA *conshdlrdata)
SCIP_RETCODE SCIPsetConshdlrPresol(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRESOL((*conspresol)), int maxprerounds, SCIP_PRESOLTIMING presoltiming)
SCIP_RETCODE SCIPsetConshdlrGetVars(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETVARS((*consgetvars)))
SCIP_RETCODE SCIPsetConshdlrInitpre(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITPRE((*consinitpre)))
SCIP_RETCODE SCIPsetConshdlrSepa(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSSEPALP((*conssepalp)), SCIP_DECL_CONSSEPASOL((*conssepasol)), int sepafreq, int sepapriority, SCIP_Bool delaysepa)
SCIP_RETCODE SCIPsetConshdlrProp(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPROP((*consprop)), int propfreq, SCIP_Bool delayprop, SCIP_PROPTIMING proptiming)
SCIP_RETCODE SCIPincludeConshdlrBasic(SCIP *scip, SCIP_CONSHDLR **conshdlrptr, const char *name, const char *desc, int enfopriority, int chckpriority, int eagerfreq, SCIP_Bool needscons, SCIP_DECL_CONSENFOLP((*consenfolp)), SCIP_DECL_CONSENFOPS((*consenfops)), SCIP_DECL_CONSCHECK((*conscheck)), SCIP_DECL_CONSLOCK((*conslock)), SCIP_CONSHDLRDATA *conshdlrdata)
SCIP_RETCODE SCIPsetConshdlrDeactive(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDEACTIVE((*consdeactive)))
SCIP_RETCODE SCIPsetConshdlrGetPermsymGraph(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETPERMSYMGRAPH((*consgetpermsymgraph)))
SCIP_RETCODE SCIPsetConshdlrDelete(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDELETE((*consdelete)))
SCIP_RETCODE SCIPsetConshdlrFree(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSFREE((*consfree)))
SCIP_RETCODE SCIPsetConshdlrEnforelax(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSENFORELAX((*consenforelax)))
const char * SCIPconshdlrGetName(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPsetConshdlrExitpre(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSEXITPRE((*consexitpre)))
SCIP_RETCODE SCIPsetConshdlrCopy(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), SCIP_DECL_CONSCOPY((*conscopy)))
SCIP_CONSHDLR * SCIPfindConshdlr(SCIP *scip, const char *name)
SCIP_RETCODE SCIPsetConshdlrGetSignedPermsymGraph(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH((*consgetsignedpermsymgraph)))
SCIP_RETCODE SCIPsetConshdlrExitsol(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSEXITSOL((*consexitsol)))
SCIP_RETCODE SCIPsetConshdlrInitlp(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITLP((*consinitlp)))
SCIP_RETCODE SCIPsetConshdlrInitsol(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITSOL((*consinitsol)))
SCIP_CONSHDLRDATA * SCIPconshdlrGetData(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPsetConshdlrTrans(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSTRANS((*constrans)))
SCIP_RETCODE SCIPsetConshdlrResprop(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSRESPROP((*consresprop)))
SCIP_RETCODE SCIPsetConshdlrGetNVars(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETNVARS((*consgetnvars)))
SCIP_RETCODE SCIPsetConshdlrActive(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSACTIVE((*consactive)))
SCIP_RETCODE SCIPsetConshdlrPrint(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRINT((*consprint)))
SCIP_CONSDATA * SCIPconsGetData(SCIP_CONS *cons)
int SCIPconsGetPos(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsDynamic(SCIP_CONS *cons)
SCIP_CONSHDLR * SCIPconsGetHdlr(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsInitial(SCIP_CONS *cons)
SCIP_RETCODE SCIPprintCons(SCIP *scip, SCIP_CONS *cons, FILE *file)
SCIP_Bool SCIPconsIsChecked(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsDeleted(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsTransformed(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsEnforced(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsActive(SCIP_CONS *cons)
SCIP_RETCODE SCIPcreateCons(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_CONSHDLR *conshdlr, SCIP_CONSDATA *consdata, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_Bool SCIPconsIsPropagated(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsLocal(SCIP_CONS *cons)
const char * SCIPconsGetName(SCIP_CONS *cons)
SCIP_RETCODE SCIPresetConsAge(SCIP *scip, SCIP_CONS *cons)
SCIP_Bool SCIPconsIsModifiable(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsAdded(SCIP_CONS *cons)
SCIP_RETCODE SCIPupdateConsFlags(SCIP *scip, SCIP_CONS *cons0, SCIP_CONS *cons1)
SCIP_Bool SCIPconsIsStickingAtNode(SCIP_CONS *cons)
SCIP_RETCODE SCIPreleaseCons(SCIP *scip, SCIP_CONS **cons)
SCIP_Bool SCIPconsIsSeparated(SCIP_CONS *cons)
SCIP_RETCODE SCIPincConsAge(SCIP *scip, SCIP_CONS *cons)
SCIP_Bool SCIPconsIsRemovable(SCIP_CONS *cons)
SCIP_RETCODE SCIPaddRow(SCIP *scip, SCIP_ROW *row, SCIP_Bool forcecut, SCIP_Bool *infeasible)
SCIP_RETCODE SCIPincludeEventhdlrBasic(SCIP *scip, SCIP_EVENTHDLR **eventhdlrptr, const char *name, const char *desc, SCIP_DECL_EVENTEXEC((*eventexec)), SCIP_EVENTHDLRDATA *eventhdlrdata)
SCIP_EVENTTYPE SCIPeventGetType(SCIP_EVENT *event)
SCIP_RETCODE SCIPcatchVarEvent(SCIP *scip, SCIP_VAR *var, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)
SCIP_RETCODE SCIPdropVarEvent(SCIP *scip, SCIP_VAR *var, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)
SCIP_RETCODE SCIPreleaseExpr(SCIP *scip, SCIP_EXPR **expr)
#define SCIPfreeBlockMemoryArray(scip, ptr, num)
int SCIPcalcMemGrowSize(SCIP *scip, int num)
#define SCIPallocBufferArray(scip, ptr, num)
#define SCIPreallocBufferArray(scip, ptr, num)
#define SCIPfreeBufferArray(scip, ptr)
#define SCIPduplicateBufferArray(scip, ptr, source, num)
#define SCIPallocBlockMemoryArray(scip, ptr, num)
#define SCIPreallocBlockMemoryArray(scip, ptr, oldnum, newnum)
#define SCIPfreeBlockMemory(scip, ptr)
#define SCIPallocBlockMemory(scip, ptr)
#define SCIPduplicateBlockMemoryArray(scip, ptr, source, num)
SCIP_RETCODE SCIPdelNlRow(SCIP *scip, SCIP_NLROW *nlrow)
SCIP_RETCODE SCIPaddNlRow(SCIP *scip, SCIP_NLROW *nlrow)
SCIP_Bool SCIPisNLPConstructed(SCIP *scip)
SCIP_RETCODE SCIPreleaseNlRow(SCIP *scip, SCIP_NLROW **nlrow)
SCIP_Bool SCIPnlrowIsInNLP(SCIP_NLROW *nlrow)
SCIP_RETCODE SCIPcreateNlRow(SCIP *scip, SCIP_NLROW **nlrow, const char *name, SCIP_Real constant, int nlinvars, SCIP_VAR **linvars, SCIP_Real *lincoefs, SCIP_EXPR *expr, SCIP_Real lhs, SCIP_Real rhs, SCIP_EXPRCURV curvature)
SCIP_Bool SCIPinProbing(SCIP *scip)
SCIP_RETCODE SCIPaddVarsToRowSameCoef(SCIP *scip, SCIP_ROW *row, int nvars, SCIP_VAR **vars, SCIP_Real val)
SCIP_RETCODE SCIPcreateEmptyRowCons(SCIP *scip, SCIP_ROW **row, SCIP_CONS *cons, const char *name, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
SCIP_RETCODE SCIPaddVarToRow(SCIP *scip, SCIP_ROW *row, SCIP_VAR *var, SCIP_Real val)
SCIP_Real SCIPgetRowSolFeasibility(SCIP *scip, SCIP_ROW *row, SCIP_SOL *sol)
SCIP_RETCODE SCIPreleaseRow(SCIP *scip, SCIP_ROW **row)
SCIP_Bool SCIProwIsInLP(SCIP_ROW *row)
void SCIPupdateSolConsViolation(SCIP *scip, SCIP_SOL *sol, SCIP_Real absviol, SCIP_Real relviol)
SCIP_Real SCIPgetSolVal(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var)
SCIP_Real SCIPinfinity(SCIP *scip)
SCIP_Bool SCIPisGE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisFeasEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisPositive(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisLE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisInfinity(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisFeasNegative(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisNegative(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisFeasPositive(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPinRepropagation(SCIP *scip)
int SCIPgetDepth(SCIP *scip)
SCIP_RETCODE SCIPcutoffNode(SCIP *scip, SCIP_NODE *node)
SCIP_NODE * SCIPgetRootNode(SCIP *scip)
SCIP_RETCODE SCIPlockVarCons(SCIP *scip, SCIP_VAR *var, SCIP_CONS *cons, SCIP_Bool lockdown, SCIP_Bool lockup)
void SCIPvarsGetProbvar(SCIP_VAR **vars, int nvars)
SCIP_VAR * SCIPvarGetNegatedVar(SCIP_VAR *var)
SCIP_Bool SCIPvarIsActive(SCIP_VAR *var)
SCIP_Bool SCIPvarIsBinary(SCIP_VAR *var)
SCIP_RETCODE SCIPgetTransformedVars(SCIP *scip, int nvars, SCIP_VAR **vars, SCIP_VAR **transvars)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
int SCIPvarGetNLocksUpType(SCIP_VAR *var, SCIP_LOCKTYPE locktype)
SCIP_Bool SCIPdoNotAggr(SCIP *scip)
SCIP_RETCODE SCIPvarGetAggregatedObj(SCIP_VAR *var, SCIP_Real *aggrobj)
SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)
SCIP_RETCODE SCIPgetBinvarRepresentatives(SCIP *scip, int nvars, SCIP_VAR **vars, SCIP_VAR **repvars, SCIP_Bool *negated)
SCIP_Bool SCIPvarIsTransformed(SCIP_VAR *var)
SCIP_RETCODE SCIPparseVarsList(SCIP *scip, const char *str, SCIP_VAR **vars, int *nvars, int varssize, int *requiredsize, char **endptr, char delimiter, SCIP_Bool *success)
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_VAR * SCIPvarGetProbvar(SCIP_VAR *var)
SCIP_RETCODE SCIPparseVarName(SCIP *scip, const char *str, SCIP_VAR **var, char **endptr)
SCIP_VARTYPE SCIPvarGetType(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbGlobal(SCIP_VAR *var)
int SCIPvarGetIndex(SCIP_VAR *var)
SCIP_RETCODE SCIPaddVarLocksType(SCIP *scip, SCIP_VAR *var, SCIP_LOCKTYPE locktype, int nlocksdown, int nlocksup)
SCIP_RETCODE SCIPunlockVarCons(SCIP *scip, SCIP_VAR *var, SCIP_CONS *cons, SCIP_Bool lockdown, SCIP_Bool lockup)
SCIP_Real SCIPgetVarUbAtIndex(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
int SCIPvarGetProbindex(SCIP_VAR *var)
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_RETCODE SCIPreleaseVar(SCIP *scip, SCIP_VAR **var)
SCIP_RETCODE SCIPchgVarType(SCIP *scip, SCIP_VAR *var, SCIP_VARTYPE vartype, SCIP_Bool *infeasible)
SCIP_RETCODE SCIPgetNegatedVar(SCIP *scip, SCIP_VAR *var, SCIP_VAR **negvar)
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)
SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)
SCIP_Bool SCIPvarIsNegated(SCIP_VAR *var)
SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)
SCIP_RETCODE SCIPmarkDoNotMultaggrVar(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPfixVar(SCIP *scip, SCIP_VAR *var, SCIP_Real fixedval, SCIP_Bool *infeasible, SCIP_Bool *fixed)
SCIP_Real SCIPgetVarLbAtIndex(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
int SCIPvarCompare(SCIP_VAR *var1, SCIP_VAR *var2)
SCIP_RETCODE SCIPvarGetProbvarBinary(SCIP_VAR **var, SCIP_Bool *negated)
SCIP_RETCODE SCIPinferBinvarCons(SCIP *scip, SCIP_VAR *var, SCIP_Bool fixedval, SCIP_CONS *infercons, int inferinfo, SCIP_Bool *infeasible, SCIP_Bool *tightened)
SCIP_RETCODE SCIPwriteVarName(SCIP *scip, FILE *file, SCIP_VAR *var, SCIP_Bool type)
SCIP_RETCODE SCIPgetBinvarRepresentative(SCIP *scip, SCIP_VAR *var, SCIP_VAR **repvar, SCIP_Bool *negated)
SCIP_RETCODE SCIPwriteVarsList(SCIP *scip, FILE *file, SCIP_VAR **vars, int nvars, SCIP_Bool type, char delimiter)
SCIP_Bool SCIPvarsHaveCommonClique(SCIP_VAR *var1, SCIP_Bool value1, SCIP_VAR *var2, SCIP_Bool value2, SCIP_Bool regardimplics)
int SCIPvarGetNLocksDownType(SCIP_VAR *var, SCIP_LOCKTYPE locktype)
SCIP_RETCODE SCIPgetTransformedVar(SCIP *scip, SCIP_VAR *var, SCIP_VAR **transvar)
SCIP_RETCODE SCIPcaptureVar(SCIP *scip, SCIP_VAR *var)
SCIP_Bool SCIPallowStrongDualReds(SCIP *scip)
SCIP_Bool SCIPsortedvecFindPtr(void **ptrarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), void *val, int len, int *pos)
void SCIPsortPtr(void **ptrarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), int len)
int SCIPsnprintf(char *t, int len, const char *s,...)
SCIP_RETCODE SCIPaddSymgraphEdge(SCIP *scip, SYM_GRAPH *graph, int first, int second, SCIP_Bool hasval, SCIP_Real val)
SCIP_RETCODE SCIPaddSymgraphOpnode(SCIP *scip, SYM_GRAPH *graph, int op, int *nodeidx)
SCIP_RETCODE SCIPgetSymActiveVariables(SCIP *scip, SYM_SYMTYPE symtype, SCIP_VAR ***vars, SCIP_Real **scalars, int *nvars, SCIP_Real *constant, SCIP_Bool transformed)
SCIP_RETCODE SCIPaddSymgraphConsnode(SCIP *scip, SYM_GRAPH *graph, SCIP_CONS *cons, SCIP_Real lhs, SCIP_Real rhs, int *nodeidx)
SCIP_RETCODE SCIPaddSymgraphVarAggregation(SCIP *scip, SYM_GRAPH *graph, int rootidx, SCIP_VAR **vars, SCIP_Real *vals, int nvars, SCIP_Real constant)
memory allocation routines
#define BMScopyMemoryArray(ptr, source, num)
#define BMSclearMemoryArray(ptr, num)
struct BMS_BlkMem BMS_BLKMEM
BMS_BLKMEM * SCIPblkmem(SCIP *scip)
public methods for managing constraints
public methods for managing events
public methods for LP management
public methods for message output
#define SCIPdebugPrintCons(x, y, z)
public data structures and miscellaneous methods
methods for sorting joint arrays of various types
public methods for problem variables
public methods for conflict handler plugins and conflict analysis
public methods for constraint handler plugins and constraints
public methods for problem copies
public methods for cuts and aggregation rows
public methods for event handler plugins and event handlers
public functions to work with algebraic expressions
public methods for the LP relaxation, rows and columns
public methods for memory management
public methods for message handling
public methods for nonlinear relaxation
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 solutions
public methods for the branch-and-bound tree
public methods for SCIP variables
structs for symmetry computations
methods for dealing with symmetry detection graphs
@ SCIP_CONFTYPE_PROPAGATION
struct SCIP_ConshdlrData SCIP_CONSHDLRDATA
#define SCIP_DECL_CONSEXITPRE(x)
struct SCIP_ConsData SCIP_CONSDATA
#define SCIP_EVENTTYPE_BOUNDCHANGED
struct SCIP_EventData SCIP_EVENTDATA
#define SCIP_EVENTTYPE_UBTIGHTENED
#define SCIP_EVENTTYPE_LBRELAXED
#define SCIP_EVENTTYPE_LBTIGHTENED
#define SCIP_EVENTTYPE_UBRELAXED
enum SCIP_Result SCIP_RESULT
enum SCIP_Retcode SCIP_RETCODE
@ SCIP_STAGE_EXITPRESOLVE
enum SYM_Symtype SYM_SYMTYPE
#define SCIP_PRESOLTIMING_EXHAUSTIVE
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