SCIP_ConshdlrData
137 intnlastcliquesshorten;
138 intnlastimplsshorten;
158 unsigned intsignature;
159 unsigned intpresolved:1;
162 unsigned intimpladded:1;
163 unsigned intsorted:1;
164 unsigned intchanged:1;
165 unsigned intmerged:1;
166 unsigned intexistmultaggr:1;
167 unsigned intvalidsignature:1;
210assert(conshdlrdata !=
NULL);
211assert(eventhdlr !=
NULL);
215(*conshdlrdata)->nlastcliquesneg = 0;
216(*conshdlrdata)->nlastimplsneg = 0;
217(*conshdlrdata)->nlastcliquesshorten = 0;
218(*conshdlrdata)->nlastimplsshorten = 0;
221(*conshdlrdata)->eventhdlr = eventhdlr;
233assert(conshdlrdata !=
NULL);
234assert(*conshdlrdata !=
NULL);
247assert(consdata !=
NULL);
248assert(consdata->nvars <= consdata->varssize);
250 if( num > consdata->varssize )
256consdata->varssize = newsize;
258assert(num <= consdata->varssize);
274assert(consdata !=
NULL);
275assert(nvars == 0 || vars !=
NULL);
279(*consdata)->row =
NULL;
280(*consdata)->nlrow =
NULL;
284(*consdata)->varssize = nvars;
285(*consdata)->nvars = nvars;
289(*consdata)->vars =
NULL;
290(*consdata)->varssize = 0;
291(*consdata)->nvars = 0;
293(*consdata)->watchedvar1 = -1;
294(*consdata)->watchedvar2 = -1;
295(*consdata)->filterpos1 = -1;
296(*consdata)->filterpos2 = -1;
297(*consdata)->presolved =
FALSE;
298(*consdata)->impladded =
FALSE;
299(*consdata)->changed =
TRUE;
300(*consdata)->sorted = (nvars <= 1);
301(*consdata)->merged = (nvars <= 1);
302(*consdata)->existmultaggr =
FALSE;
303(*consdata)->validsignature =
FALSE;
311 for( v = 0; v < (*consdata)->nvars; v++ )
314assert(var !=
NULL);
322 for( v = 0; v < (*consdata)->nvars; v++ )
324assert((*consdata)->vars[v] !=
NULL);
341assert(consdata !=
NULL);
342assert(*consdata !=
NULL);
345 if( (*consdata)->row !=
NULL)
351 if( (*consdata)->nlrow !=
NULL)
357 for( v = 0; v < (*consdata)->nvars; v++ )
359assert((*consdata)->vars[v] !=
NULL);
378assert(consdata !=
NULL);
408assert(consdata !=
NULL);
409assert(watchedvar1 == -1 || watchedvar1 != watchedvar2);
410assert(watchedvar1 != -1 || watchedvar2 == -1);
411assert(watchedvar1 == -1 || (0 <= watchedvar1 && watchedvar1 < consdata->nvars));
412assert(watchedvar2 == -1 || (0 <= watchedvar2 && watchedvar2 < consdata->nvars));
415 if( watchedvar1 == consdata->watchedvar2 || watchedvar2 == consdata->watchedvar1 )
419tmp = consdata->watchedvar1;
420consdata->watchedvar1 = consdata->watchedvar2;
421consdata->watchedvar2 = tmp;
422tmp = consdata->filterpos1;
423consdata->filterpos1 = consdata->filterpos2;
424consdata->filterpos2 = tmp;
426assert(watchedvar1 == -1 || watchedvar1 != consdata->watchedvar2);
427assert(watchedvar2 == -1 || watchedvar2 != consdata->watchedvar1);
430 if( consdata->watchedvar1 != -1 && consdata->watchedvar1 != watchedvar1 )
432assert(consdata->filterpos1 != -1);
435consdata->filterpos1) );
437 if( consdata->watchedvar2 != -1 && consdata->watchedvar2 != watchedvar2 )
439assert(consdata->filterpos2 != -1);
442consdata->filterpos2) );
446 if( watchedvar1 != -1 && watchedvar1 != consdata->watchedvar1 )
450&consdata->filterpos1) );
452 if( watchedvar2 != -1 && watchedvar2 != consdata->watchedvar2 )
456&consdata->filterpos2) );
460consdata->watchedvar1 = watchedvar1;
461consdata->watchedvar2 = watchedvar2;
477assert(var !=
NULL);
480assert(consdata !=
NULL);
491consdata->existmultaggr =
TRUE;
493consdata->presolved =
FALSE;
495assert(var !=
NULL);
499consdata->vars[consdata->nvars] = var;
510assert(conshdlr !=
NULL);
512assert(conshdlrdata !=
NULL);
518consdata->sorted = (consdata->nvars == 1);
519consdata->changed =
TRUE;
520consdata->validsignature =
FALSE;
526 if( consdata->row !=
NULL)
531consdata->merged =
FALSE;
547assert(eventhdlr !=
NULL);
550assert(consdata !=
NULL);
551assert(0 <= pos && pos < consdata->nvars);
567 if( consdata->watchedvar1 == pos )
571 if( consdata->watchedvar2 == pos )
576assert(pos != consdata->watchedvar1);
577assert(pos != consdata->watchedvar2);
583 if( pos != consdata->nvars - 1 )
585consdata->vars[pos] = consdata->vars[consdata->nvars-1];
586consdata->sorted =
FALSE;
591 if( consdata->watchedvar1 == consdata->nvars )
592consdata->watchedvar1 = pos;
593 if( consdata->watchedvar2 == consdata->nvars )
594consdata->watchedvar2 = pos;
596consdata->changed =
TRUE;
597consdata->validsignature =
FALSE;
652assert(cons !=
NULL);
653assert(eventhdlr !=
NULL);
654assert(nfixedvars !=
NULL);
655assert(ndelconss !=
NULL);
656assert(nchgcoefs !=
NULL);
657assert(result !=
NULL);
669assert(consdata !=
NULL);
671nvars = consdata->nvars;
679vars = consdata->vars;
690 for( v = nvars - 1; v >= 0; --v )
693assert(var !=
NULL);
701 if( idx == consdata->nvars - 1 )
704bestvar = consdata->vars[idx];
709 if( idxnouplocks == consdata->nvars - 1 )
712 if( indepidx == consdata->nvars - 1 )
718assert(bestvar ==
NULL|| bestvar == consdata->vars[v]);
741bestobjvalnouplocks = objval;
775nvars = consdata->nvars;
779 if( nvars == 2 && indepidx >= 0 )
786assert(0 <= idx2 && idx2 < 2);
804 if( nfixables == 1 && idxnouplocks >= 0 )
808 for( v = nvars - 1; v >= 0; --v )
811assert(var !=
NULL);
817assert(idxnouplocks != v);
839nvars = consdata->nvars;
841assert(idx >= 0 && idx < nvars);
849 for( v = 0; v < nvars; ++v )
852assert(var !=
NULL);
935assert(eventhdlr !=
NULL);
936assert(redundant !=
NULL);
939assert(consdata !=
NULL);
940assert(consdata->nvars == 0 || consdata->vars !=
NULL);
946consdata->existmultaggr =
FALSE;
947consdata->presolved =
TRUE;
950 while( v < consdata->nvars )
952var = consdata->vars[v];
972 if( consdata->nvars == 0 )
975nvars = consdata->nvars;
985 for( v = nvars - 1; v >= 0; --v )
1009 if( requiredsize > nconsvars )
1015assert(requiredsize <= nconsvars);
1023 for( v2 = nconsvars - 1; v2 >= 0; --v2 )
1044 for( v2 = nconsvars - 1; v2 >= 0; --v2 )
1065size =
MAX(nconsvars, 1) + nvars - 1;
1074 for( k = nvars - 1; k >= 0; --k )
1076consvars[k] = vars[k];
1086 if( requiredsize > nconsvars )
1092assert(requiredsize <= nconsvars);
1095lhs = 1.0 - constant;
1116 if( ndelconss !=
NULL&& naddconss !=
NULL)
1118assert( naddconss !=
NULL);
1128 if( var != consdata->vars[v] )
1140 else if( var != consdata->vars[v] )
1178consdata->presolved =
TRUE;
1198assert(consdata !=
NULL);
1203 for( v = 0; v < consdata->nvars; ++v )
1244 unsigned char** entries,
1264assert(cons !=
NULL);
1265assert(eventhdlr !=
NULL);
1266assert(*entries !=
NULL);
1267assert(nentries !=
NULL);
1268assert(redundant !=
NULL);
1269assert(nchgcoefs !=
NULL);
1272assert(consdata !=
NULL);
1274nvars = consdata->nvars;
1276*redundant =
FALSE;
1278 if( consdata->merged )
1281 if( consdata->nvars <= 1 )
1283consdata->merged =
TRUE;
1287assert(consdata->vars !=
NULL&& nvars > 0);
1293assert(*nentries >= nbinvars + nintvars + nimplvars);
1298assert(consdata->presolved);
1304vars = consdata->vars;
1307 for( v = nvars - 1; v >= 0; --v )
1324(pos >= nbinvars + nintvars && pos < nbinvars + nintvars + nimplvars &&
1328(*entries)[pos] = 0;
1332 for( v = nvars - 1; v >= 0; --v )
1340 if( (*entries)[pos] == 0 )
1341(*entries)[pos] = negarray[v] ? 2 : 1;
1343 else if( (*entries)[pos] == 1 )
1347 SCIPdebugMsg(
scip,
"logicor constraint <%s> redundant: variable <%s> and its negation are present\n",
1364 SCIPdebugMsg(
scip,
"logicor constraint <%s> redundant: variable <%s> and its negation are present\n",
1382consdata->merged =
TRUE;
1407assert(cons !=
NULL);
1410assert(cutoff !=
NULL);
1411assert(reduceddom !=
NULL);
1412assert(addcut !=
NULL);
1413assert(mustcheck !=
NULL);
1416assert(consdata !=
NULL);
1417assert(consdata->watchedvar1 == -1 || consdata->watchedvar1 != consdata->watchedvar2);
1420*mustcheck =
FALSE;
1424vars = consdata->vars;
1425nvars = consdata->nvars;
1426assert(nvars == 0 || vars !=
NULL);
1429 if( consdata->watchedvar1 >= 0 &&
SCIPvarGetLbLocal(vars[consdata->watchedvar1]) > 0.5 )
1436 if( consdata->watchedvar2 >= 0 &&
SCIPvarGetLbLocal(vars[consdata->watchedvar2]) > 0.5 )
1449 if( consdata->watchedvar1 >= 0 &&
SCIPvarGetUbLocal(vars[consdata->watchedvar1]) > 0.5 )
1451watchedvar1 = consdata->watchedvar1;
1454 if( consdata->watchedvar2 >= 0 &&
SCIPvarGetUbLocal(vars[consdata->watchedvar2]) > 0.5 )
1456 if( watchedvar1 == -1 )
1458watchedvar1 = consdata->watchedvar2;
1463watchedvar2 = consdata->watchedvar2;
1467assert(watchedvar1 >= 0 || watchedvar2 == -1);
1468assert(nbranchings1 <= nbranchings2);
1471 if( watchedvar2 == -1 )
1475 for( v = 0; v < nvars; ++v )
1480 if( v == consdata->watchedvar1 || v == consdata->watchedvar2 )
1490assert(v != consdata->watchedvar1);
1491assert(v != consdata->watchedvar2);
1496 SCIPdebugMsg(
scip,
" -> disabling constraint <%s> (variable <%s> fixed to 1.0)\n",
1498 if( consdata->watchedvar1 != -1 )
1512assert(nbranchings >= 0);
1513 if( nbranchings < nbranchings2 )
1515 if( nbranchings < nbranchings1 )
1517watchedvar2 = watchedvar1;
1518nbranchings2 = nbranchings1;
1520nbranchings1 = nbranchings;
1525nbranchings2 = nbranchings;
1530assert(nbranchings1 <= nbranchings2);
1531assert(watchedvar1 >= 0 || watchedvar2 == -1);
1533 if( watchedvar1 == -1 )
1539assert(watchedvar2 == -1);
1555 else if( watchedvar2 == -1 )
1561assert(0 <= watchedvar1 && watchedvar1 < nvars);
1571 SCIPdebugMsg(
scip,
" -> single-literal constraint <%s> (fix <%s> to 1.0) at depth %d\n",
1576 if( watchedvar1 != consdata->watchedvar1 )
1581*reduceddom =
TRUE;
1586 SCIPdebugMsg(
scip,
" -> new watched variables <%s> and <%s> of constraint <%s> are still unfixed\n",
1621assert(consdata !=
NULL);
1623vars = consdata->vars;
1624nvars = consdata->nvars;
1628 for( v = 0; v < nvars && sum < 1.0; ++v )
1658assert(consdata !=
NULL);
1659assert(consdata->row ==
NULL);
1685assert(consdata !=
NULL);
1687 if( consdata->nlrow ==
NULL)
1693 for( i = 0; i < consdata->nvars; ++i )
1698assert(consdata->nlrow !=
NULL);
1721assert( cutoff !=
NULL);
1725assert(consdata !=
NULL);
1727 if( consdata->row ==
NULL)
1732assert(consdata->row !=
NULL);
1759assert(cons !=
NULL);
1762assert(cutoff !=
NULL);
1763assert(separated !=
NULL);
1764assert(reduceddom !=
NULL);
1787assert(consdata !=
NULL);
1790 if( sol ==
NULL&& consdata->row !=
NULL)
1837assert(cons !=
NULL);
1840assert(cutoff !=
NULL);
1841assert(infeasible !=
NULL);
1842assert(reduceddom !=
NULL);
1843assert(solvelp !=
NULL);
1864*infeasible =
TRUE;
1883assert(consdata !=
NULL);
1885 if( !consdata->sorted )
1887 if( consdata->nvars <= 1 )
1888consdata->sorted =
TRUE;
1895 if( consdata->watchedvar1 != -1 )
1897var1 = consdata->vars[consdata->watchedvar1];
1898assert(var1 !=
NULL);
1899consdata->watchedvar1 = -1;
1900 if( consdata->watchedvar2 != -1 )
1902var2 = consdata->vars[consdata->watchedvar2];
1903assert(var2 !=
NULL);
1904consdata->watchedvar2 = -1;
1907assert(consdata->watchedvar1 == -1);
1908assert(consdata->watchedvar2 == -1);
1909assert(var1 !=
NULL|| var2 ==
NULL);
1912 SCIPsortPtr((
void**)consdata->vars, SCIPvarComp, consdata->nvars);
1913consdata->sorted =
TRUE;
1922found =
SCIPsortedvecFindPtr((
void**)consdata->vars, SCIPvarComp, (
void*)var1, consdata->nvars, &pos);
1925(void)
SCIPsortedvecFindPtr((
void**)consdata->vars, SCIPvarComp, (
void*)var1, consdata->nvars, &pos);
1927assert(pos >= 0 && pos < consdata->nvars);
1928consdata->watchedvar1 = pos;
1933found =
SCIPsortedvecFindPtr((
void**)consdata->vars, SCIPvarComp, (
void*)var2, consdata->nvars, &pos);
1936(void)
SCIPsortedvecFindPtr((
void**)consdata->vars, SCIPvarComp, (
void*)var2, consdata->nvars, &pos);
1938assert(pos >= 0 && pos < consdata->nvars);
1939consdata->watchedvar2 = pos;
1950 for( v = consdata->nvars - 1; v > 0; --v )
1952assert(
SCIPvarCompare(consdata->vars[v], consdata->vars[v - 1]) >= 0);
1985 if( consdata1->nvars != consdata2->nvars )
1991assert(consdata1->sorted);
1992assert(consdata2->sorted);
1996 for( i = 0; i < consdata1->nvars ; ++i )
1999 if( consdata1->vars[i] != consdata2->vars[i] )
2001assert(
SCIPvarCompare(consdata1->vars[i], consdata2->vars[i]) == 1 ||
2003coefsequal =
FALSE;
2006assert(
SCIPvarCompare(consdata1->vars[i], consdata2->vars[i]) == 0);
2022assert(consdata !=
NULL);
2023assert(consdata->sorted);
2024assert(consdata->nvars > 0);
2029assert(minidx >= 0 && minidx <= maxidx);
2031 return SCIPhashFour(consdata->nvars, minidx, mididx, maxidx);
2051assert(conss !=
NULL);
2052assert(ndelconss !=
NULL);
2055hashtablesize = nconss;
2058hashGetKeyLogicorcons, hashKeyEqLogicorcons, hashKeyValLogicorcons, (
void*)
scip) );
2061 for( c = 0; c < nconss; ++c )
2075assert(consdata0->sorted);
2080 if( cons1 !=
NULL)
2092assert(consdata1 !=
NULL);
2093assert(consdata0->nvars >= 1 && consdata0->nvars == consdata1->nvars);
2095assert(consdata0->sorted && consdata1->sorted);
2096assert(consdata0->vars[0] == consdata1->vars[0]);
2107 if( consdata0->changed &&
SCIPconsGetPos(cons1) < *firstchange )
2134assert(ndelconss !=
NULL);
2136 SCIPdebugMsg(
scip,
" -> removing logicor constraint <%s> which is redundant to <%s>\n",
2159 unsigned intsignature = 0;
2162assert(vars !=
NULL);
2165 for( v = nvars - 1; v >= 0; --v )
2167signature |= ((
unsignedint)1 << ((
unsigned int)
SCIPvarGetIndex(vars[v]) % (
sizeof(
unsignedint) * 8)));
2181 if( consdata->validsignature )
2184consdata->signature =
calcSignature(consdata->vars, consdata->nvars);
2185consdata->validsignature =
TRUE;
2194 int* noccurlistentries,
2206assert(cons !=
NULL);
2208assert(varstopos !=
NULL);
2209assert(occurlist !=
NULL);
2210assert(noccurlistentries !=
NULL);
2213assert(consdata !=
NULL);
2215nvars = consdata->nvars;
2217vars = consdata->vars;
2218assert(vars !=
NULL);
2221 for( v = nvars - 1; v >= 0; --v )
2228assert(0 < pos && pos <= occurlistlength);
2233 for( l = noccurlistentries[pos] - 1; l >= 0; --l )
2235 if( occurlist[pos][l] == cons )
2237--noccurlistentries[pos];
2238assert(noccurlistentries[pos] >= 0);
2240occurlist[pos][l] = occurlist[pos][noccurlistentries[pos]];
2255 int* noccurlistentries,
2256 intoccurlistlength,
2267assert(varstopos !=
NULL);
2268assert(occurlist !=
NULL);
2269assert(noccurlistentries !=
NULL);
2270assert(nentries !=
NULL);
2271assert(shortestlist !=
NULL);
2273*nentries = INT_MAX;
2274*shortestlist =
NULL;
2277 for( v = nvars - 1; v >= 0; --v )
2280assert(var !=
NULL);
2290assert(0 < pos && pos <= occurlistlength);
2295 if( noccurlistentries[pos] < *nentries )
2297*nentries = noccurlistentries[pos];
2298*shortestlist = occurlist[pos];
2310 int* noccurlistentries,
2311 intoccurlistlength,
2325assert(cons !=
NULL);
2328assert(varstopos !=
NULL);
2329assert(occurlist !=
NULL);
2330assert(noccurlistentries !=
NULL);
2331assert(ndelconss !=
NULL);
2334assert(consdata !=
NULL);
2335assert(consdata->nvars > 1);
2336assert(consdata->validsignature);
2337assert(consdata->sorted);
2339vars = consdata->vars;
2340assert(vars !=
NULL);
2343 findShortestOccurlist(vars, consdata->nvars, varstopos, occurlist, noccurlistentries, occurlistlength, &nentries, &shortestlist);
2346 if( nentries == 0 )
2349assert(shortestlist !=
NULL);
2350assert(0 < nentries);
2353 for( c = nentries - 1; c >= 0; --c )
2355cons1 = shortestlist[c];
2356assert(cons1 !=
NULL);
2360 if( cons != cons1 )
2363assert(consdata1 !=
NULL);
2364assert(consdata1->nvars >= consdata->nvars);
2369 if( consdata1->nvars == consdata->nvars )
2372assert(consdata->validsignature);
2373assert(consdata->sorted);
2374assert(consdata1->validsignature);
2375assert(consdata1->sorted);
2377 if( (consdata->signature & (~consdata1->signature)) == 0 )
2385 while( v < consdata->nvars && v1 < consdata1->nvars )
2390var1 = consdata1->vars[v1];
2399 else if( comp > 0 )
2406 if( v == consdata->nvars )
2428assert(elem1 !=
NULL);
2429assert(elem2 !=
NULL);
2434assert(consdata1 !=
NULL);
2435assert(consdata2 !=
NULL);
2437 returnconsdata1->nvars - consdata2->nvars;
2447 int* noccurlistentries,
2448 int* occurlistsizes,
2449 int* occurlistlength,
2460assert(cons !=
NULL);
2462assert(varstopos !=
NULL);
2463assert(occurlist !=
NULL);
2464assert(noccurlistentries !=
NULL);
2465assert(occurlistsizes !=
NULL);
2466assert(occurlistlength !=
NULL);
2467assert(*occurlistlength <= occurlistsize);
2470assert(consdata !=
NULL);
2471assert(consdata->nvars > 1);
2473vars = consdata->vars;
2474assert(vars !=
NULL);
2476 for( v = consdata->nvars - 1; v >= 0; --v )
2479assert(var !=
NULL);
2485pos = *occurlistlength;
2486assert(pos <= occurlistsize);
2489assert(occurlist[pos] ==
NULL);
2490assert(noccurlistentries[pos] == 0);
2491assert(occurlistsizes[pos] == 0);
2499occurlist[pos][noccurlistentries[pos]] = cons;
2500++(noccurlistentries[pos]);
2505++(*occurlistlength);
2510assert(0 < pos && pos <= *occurlistlength);
2514assert(occurlist[pos] !=
NULL);
2515assert(occurlistsizes[pos] > 0);
2518 if( noccurlistentries[pos] == occurlistsizes[pos] )
2521assert(occurlistsizes[pos] > noccurlistentries[pos] && occurlistsizes[pos] < INT_MAX);
2526assert(noccurlistentries[pos] < occurlistsizes[pos]);
2529occurlist[pos][noccurlistentries[pos]] = cons;
2530++(noccurlistentries[pos]);
2548 int* noccurlistentries,
2549 intoccurlistlength,
2561 unsigned intsignature;
2569assert(cons !=
NULL);
2570assert(artvar !=
NULL);
2573assert(varstopos !=
NULL);
2575assert(occurlist !=
NULL);
2576assert(noccurlistentries !=
NULL);
2577assert(nchgcoefs !=
NULL);
2578assert(deleted !=
NULL);
2581assert(consdata !=
NULL);
2582assert(consdata->sorted);
2584nvars = consdata->nvars;
2586assert(0 <= artpos && artpos < nvars);
2588vars = consdata->vars;
2589assert(vars !=
NULL);
2594oldvar = vars[artpos];
2596vars[artpos] = artvar;
2599 findShortestOccurlist(vars, nvars, varstopos, occurlist, noccurlistentries, occurlistlength, &nentries, &shortestlist);
2602vars[artpos] = oldvar;
2605 if( nentries == 0 )
2608assert(shortestlist !=
NULL);
2609assert(0 < nentries);
2612oldvar = vars[artpos];
2613vars[artpos] = artvar;
2617vars[artpos] = oldvar;
2620 for( c = nentries - 1; c >= 0; --c )
2622cons1 = shortestlist[c];
2623assert(cons1 !=
NULL);
2629 if( cons != cons1 )
2632assert(consdata1 !=
NULL);
2635 if( consdata1->nvars < nvars )
2640assert(consdata->sorted);
2641assert(consdata->merged);
2642assert(consdata1->validsignature);
2643assert(consdata1->sorted);
2644assert(consdata1->merged);
2646 if( (signature & (~consdata1->signature)) == 0 )
2654 while( v < nvars && v1 < consdata1->nvars )
2665var1 = consdata1->vars[v1];
2668 if( artvar == var1 )
2687 else if( comp > 0 )
2703 while( v1 < consdata1->nvars )
2705 if( artvar == consdata1->vars[v1] )
2719assert(pos < consdata1->nvars);
2720assert(artvar == consdata1->vars[pos]);
2723 SCIPdebugMsg(
scip,
"variable %s in logicor constraint <%s> is redundant and will be removed (used constraint %s)\n",
2728 if( consdata1->nvars > nvars )
2731assert(0 < pos && pos <= occurlistlength);
2736 for( l = noccurlistentries[pos] - 1; l >= 0; --l )
2738 if( occurlist[pos][l] == cons1 )
2740--noccurlistentries[pos];
2741assert(noccurlistentries[pos] >= 0);
2743occurlist[pos][l] = occurlist[pos][noccurlistentries[pos]];
2751assert(consdata1->nvars == nvars);
2754 SCIPdebugMsg(
scip,
"logicor constraint <%s> is redundant due to constraint <%s> after removing variable <%s>\n",
2792 int* noccurlistentries,
2793 intoccurlistlength,
2808assert(conss !=
NULL|| nconss == 0);
2809assert(varstopos !=
NULL);
2810assert(occurlist !=
NULL);
2811assert(noccurlistentries !=
NULL);
2812assert(eventhdlr !=
NULL);
2813assert(ndelconss !=
NULL);
2814assert(nchgcoefs !=
NULL);
2819assert(conss !=
NULL);
2821 for( c = 0; c < nconss; ++c )
2824assert(cons !=
NULL);
2831assert(consdata !=
NULL);
2833nvars = consdata->nvars;
2839vars = consdata->vars;
2840assert(vars !=
NULL);
2842 for( v = nvars - 1; v >= 0; --v )
2857occurlistlength, eventhdlr, nchgcoefs, &deleted) );
2881 unsigned char** entries,
2893assert(cons !=
NULL);
2895assert(eventhdlr !=
NULL);
2896assert(*entries !=
NULL);
2897assert(nentries !=
NULL);
2898assert(redundant !=
NULL);
2899assert(nfixedvars !=
NULL);
2900assert(nchgcoefs !=
NULL);
2901assert(ndelconss !=
NULL);
2902assert(redundant !=
NULL);
2905assert(consdata !=
NULL);
2906assert(consdata->nvars > 0);
2908*redundant =
FALSE;
2911 if( !consdata->presolved )
2931 if( consdata->nvars == 0 )
2935 else if( consdata->nvars == 1 )
2940 SCIPdebugMsg(
scip,
" -> fix last remaining variable and delete constraint\n");
2943assert(!infeasible);
2952consdata->presolved =
TRUE;
2977 unsigned char** entries,
2995 int* noccurlistentries;
2996 int* occurlistsizes;
3001 intoccurlistlength;
3008assert(conss !=
NULL|| nconss == 0);
3009assert(entries !=
NULL);
3010assert(*entries !=
NULL);
3011assert(nentries !=
NULL);
3012assert(eventhdlr !=
NULL);
3013assert(firstchange !=
NULL);
3014assert(0 <= *firstchange);
3015assert(nfixedvars !=
NULL);
3016assert(ndelconss !=
NULL);
3017assert(nchgcoefs !=
NULL);
3019 if( *firstchange > nconss || nconss < 2 )
3022 SCIPdebugMsg(
scip,
"starting removeRedundantConssAndNonzeros(), pairwise comparison to detect covered logicor constraints\n");
3028lastnfixedvars = -1;
3029 while( *nfixedvars != lastnfixedvars )
3031lastnfixedvars = *nfixedvars;
3032 for( c = nconss - 1; c >= 0; --c )
3035assert(cons !=
NULL);
3039myconss[c] = myconss[nmyconss - 1];
3046 SCIP_CALL(
prepareCons(
scip, cons, eventhdlr, entries, nentries, &redundant, nfixedvars, nchgcoefs, ndelconss, cutoff) );
3053myconss[c] = myconss[nmyconss - 1];
3071assert(consdata->nvars >= 2);
3075 SCIPsortPtr((
void**)myconss, conssLogicorComp, nmyconss);
3076assert(myconss[0] !=
NULL&& myconss[nmyconss - 1] !=
NULL);
3095occurlistsize = 2 * nbinvars;
3111assert(cons !=
NULL);
3114assert(consdata !=
NULL);
3115nmaxvars = consdata->nvars;
3117occurlistlength = 0;
3118conschanged =
FALSE;
3125assert(consdata->validsignature);
3126conschanged = conschanged || consdata->changed;
3127consdata->changed =
FALSE;
3137assert(cons !=
NULL);
3140assert(consdata !=
NULL);
3142 while( consdata->nvars == nmaxvars );
3148assert(cons !=
NULL);
3151assert(consdata !=
NULL);
3155assert(consdata->validsignature);
3158 if( conschanged || consdata->changed )
3170consdata->changed =
FALSE;
3171conschanged =
TRUE;
3195 SCIP_CALL(
strengthenConss(
scip, myconss, nmyconss, varstopos, occurlist, noccurlistentries, occurlistlength, eventhdlr, ndelconss, nchgcoefs) );
3198 for( --occurlistsize ; occurlistsize >= 0; --occurlistsize )
3200assert((occurlistsizes[occurlistsize] == 0) == (occurlist[occurlistsize] ==
NULL));
3214#define MAX_CONSLENGTH 200 3226 unsigned char** entries,
3246assert(eventhdlr !=
NULL);
3247assert(conss !=
NULL|| nconss == 0);
3248assert(entries !=
NULL);
3249assert(*entries !=
NULL);
3250assert(nentries !=
NULL);
3251assert(nfixedvars !=
NULL);
3252assert(ndelconss !=
NULL);
3253assert(nchgcoefs !=
NULL);
3258assert(conss !=
NULL);
3275 for( c = nconss - 1; c >= 0; --c )
3281assert(cons !=
NULL);
3287assert(consdata !=
NULL);
3291consdata->presolved =
FALSE;
3292 SCIP_CALL(
prepareCons(
scip, cons, eventhdlr, entries, nentries, &redundant, nfixedvars, nchgcoefs, ndelconss, cutoff) );
3303assert(consdata->nvars >= 2);
3310 for( v = consdata->nvars - 1; v >= 0; --v)
3312var = consdata->vars[v];
3313assert(var !=
NULL);
3320boundtypes[v] =
FALSE;
3326boundtypes[v] =
TRUE;
3337nfixedvars, &redundant, cutoff,
TRUE) );
3360 for( v = consdata->nvars - 1; v >= 0; --v )
3362 if( redundants[v] )
3367redundants[v] =
FALSE;
3370*nchgcoefs += nredvars;
3373 if( consdata->nvars == 1 )
3378 SCIPdebugMsg(
scip,
" -> fix last remaining variable and delete constraint\n");
3381assert(!infeasible);
3394 for( c = nconss - 1; c >= 0; --c )
3399assert(cons !=
NULL);
3402assert(consdata !=
NULL);
3404consdata->presolved =
FALSE;
3417#define MAXCOMPARISONS 1000000 3430 unsigned char** entries,
3453assert(conshdlr !=
NULL);
3454assert(eventhdlr !=
NULL);
3455assert(conss !=
NULL|| nconss == 0);
3456assert(entries !=
NULL);
3457assert(*entries !=
NULL);
3458assert(nentries !=
NULL);
3459assert(nfixedvars !=
NULL);
3460assert(ndelconss !=
NULL);
3461assert(nupgdconss !=
NULL);
3462assert(nchgcoefs !=
NULL);
3463assert(cutoff !=
NULL);
3466assert(conshdlrdata !=
NULL);
3487 for( c = nconss - 1; c >= 0; --c )
3491assert(conss !=
NULL);
3494assert(cons !=
NULL);
3500 SCIP_CALL(
prepareCons(
scip, cons, eventhdlr, entries, nentries, &redundant, nfixedvars, nchgcoefs, ndelconss, cutoff) );
3512assert(consdata !=
NULL);
3513assert(consdata->nvars >= 2);
3514assert(consdata->nvars <= size);
3515assert(consdata->presolved);
3531 for( v = consdata->nvars - 1; v >= 0; --v )
3537 for( v = consdata->nvars - 1; v > 0; --v )
3565comppercons += (v - 1);
3569 for(
w= v - 1;
w>= 0; --
w)
3574var2 = repvars[
w];
3600 SCIPdebugMsg(
scip,
"logicor constraint <%s> is redundant, because variable <%s> and its negation <%s> exist\n",
3610 SCIP_VAR* lastvar = consdata->vars[consdata->nvars - 1];
3612 SCIPdebugMsg(
scip,
"in logicor constraint <%s>, active variable of <%s> and active variable of <%s> are the same, removing the first\n",
3617 if( v < consdata->nvars )
3622assert(consdata->vars[v] == lastvar);
3623negated[v] = negated[consdata->nvars];
3662 SCIPdebugMsg(
scip,
"logicor constraint <%s> is redundant due to negated clique information and will be replaced by a setppc constraint \n",
3677 if( comppercons > maxcomppercons )
3717assert(cons !=
NULL);
3718assert(eventhdlr !=
NULL);
3719assert(nfixedvars !=
NULL);
3720assert(nchgbds !=
NULL);
3721assert(nchgcoefs !=
NULL);
3722assert(ndelconss !=
NULL);
3723assert(naddconss !=
NULL);
3724assert(nupgdconss !=
NULL);
3725assert(cutoff !=
NULL);
3733assert(consdata !=
NULL);
3738 if( consdata->nvars == 2 )
3741 if( !consdata->impladded )
3753*nchgbds += nimplbdchgs;
3754 if( implinfeasible )
3761 if( nimplbdchgs > 0 )
3779consdata->impladded =
TRUE;
3783 if( consdata->nvars == 2 && conshdlrsetppc !=
NULL)
3813 if( consdata->nvars == 0 )
3819 else if( consdata->nvars == 1 )
3821 SCIPdebugMsg(
scip,
"logic or constraint <%s> has only one variable not fixed to 0.0\n",
3824assert(consdata->vars !=
NULL);
3825assert(consdata->vars[0] !=
NULL);
3845 else if( conshdlrlinear !=
NULL)
3851 SCIPdebugMsg(
scip,
" -> variable is multi-aggregated, upgrade to linear constraint <%s> == 1 \n",
3918assert(nvars == 0 || vars !=
NULL);
3919assert(nvars == 0 || vals !=
NULL);
3920assert(mult == +1 || mult == -1);
3926 for( v = 0; v < nvars; ++v )
3928 if( mult * vals[v] > 0.0 )
3929transvars[v] = vars[v];
3934assert(transvars[v] !=
NULL);
3939initial, separate, enforce, check, propagate, local, modifiable, dynamic, removable, stickingatnode) );
3950assert(upgdcons !=
NULL);
3963 if( nvars > 2 && nposbin + nnegbin + nposimplbin + nnegimplbin == nvars && ncoeffspone + ncoeffsnone == nvars
4004assert(conshdlr !=
NULL);
4006assert(nconss == 0 || conss !=
NULL);
4007assert(result !=
NULL);
4009 SCIPdebugMsg(
scip,
"Enforcing %d logic or constraints for %s solution\n", nconss, sol ==
NULL?
"LP":
"relaxation");
4014assert(conshdlrdata !=
NULL);
4018reduceddom =
FALSE;
4021 for( c = 0; c < nusefulconss && !cutoff && !reduceddom; ++c )
4027 for( c = nusefulconss; c < nconss && !cutoff && !separated && !reduceddom; ++c )
4035 else if( separated )
4037 else if( reduceddom )
4063assert(cons !=
NULL);
4064assert(graph !=
NULL);
4065assert(success !=
NULL);
4068assert(consdata !=
NULL);
4078 for( i = 0; i < consdata->nvars; ++i )
4080vars[i] = logicorvars[i];
4104assert(conshdlr !=
NULL);
4121assert(conshdlr !=
NULL);
4126assert(conshdlrdata !=
NULL);
4146assert(conshdlr !=
NULL);
4148assert(conshdlrdata !=
NULL);
4150conshdlrdata->nlastcliquesneg = 0;
4151conshdlrdata->nlastimplsneg = 0;
4152conshdlrdata->nlastcliquesshorten = 0;
4153conshdlrdata->nlastimplsshorten = 0;
4156 for( c = nconss - 1; c >= 0; --c )
4159assert(consdata !=
NULL);
4161 for( v = consdata->nvars - 1; v >= 0; --v )
4180assert(conshdlr !=
NULL);
4182assert(conshdlrdata !=
NULL);
4185 for( c = 0; c < nconss; ++c )
4188assert(consdata !=
NULL);
4190 for( v = 0; v < consdata->nvars; ++v )
4217consdata->presolved =
FALSE;
4234 for( c = 0; c < nconss; ++c )
4251 for( c = 0; c < nconss; ++c )
4254assert(consdata !=
NULL);
4256 if( consdata->row !=
NULL)
4261 if( consdata->nlrow !=
NULL)
4275assert(conshdlr !=
NULL);
4277assert(consdata !=
NULL);
4278assert(*consdata !=
NULL);
4286assert(conshdlrdata !=
NULL);
4288 for( v = (*consdata)->nvars - 1; v >= 0; --v )
4311assert(conshdlr !=
NULL);
4314assert(sourcecons !=
NULL);
4315assert(targetcons !=
NULL);
4318assert(sourcedata !=
NULL);
4319assert(sourcedata->row ==
NULL);
4341*infeasible =
FALSE;
4343 for( c = 0; c < nconss && !(*infeasible); ++c )
4363assert(conshdlr !=
NULL);
4365assert(nconss == 0 || conss !=
NULL);
4366assert(result !=
NULL);
4368 SCIPdebugMsg(
scip,
"separating %d/%d logic or constraints\n", nusefulconss, nconss);
4371assert(conshdlrdata !=
NULL);
4375reduceddom =
FALSE;
4378 for( c = 0; c < nusefulconss && !cutoff; ++c )
4389 else if( reduceddom )
4391 else if( separated )
4410assert(conshdlr !=
NULL);
4412assert(nconss == 0 || conss !=
NULL);
4413assert(result !=
NULL);
4415 SCIPdebugMsg(
scip,
"separating %d/%d logic or constraints\n", nusefulconss, nconss);
4418assert(conshdlrdata !=
NULL);
4422reduceddom =
FALSE;
4425 for( c = 0; c < nusefulconss && !cutoff; ++c )
4436 else if( reduceddom )
4438 else if( separated )
4478assert(conshdlr !=
NULL);
4480assert(nconss == 0 || conss !=
NULL);
4481assert(result !=
NULL);
4483 SCIPdebugMsg(
scip,
"pseudo enforcing %d logic or constraints\n", nconss);
4488assert(conshdlrdata !=
NULL);
4491infeasible =
FALSE;
4492reduceddom =
FALSE;
4496 for( c = 0; c < nconss && !cutoff && !reduceddom && !solvelp; ++c )
4503 else if( reduceddom )
4507 else if( infeasible )
4522assert(conshdlr !=
NULL);
4524assert(nconss == 0 || conss !=
NULL);
4525assert(result !=
NULL);
4530 for( c = 0; c < nconss && (*result ==
SCIP_FEASIBLE|| completely); ++c )
4534assert(consdata !=
NULL);
4546 for( v = 0; v < consdata->nvars; ++v )
4548assert( consdata->vars[v] !=
NULL);
4579assert(conshdlr !=
NULL);
4581assert(nconss == 0 || conss !=
NULL);
4582assert(result !=
NULL);
4585assert(conshdlrdata !=
NULL);
4588reduceddom =
FALSE;
4591 for( c = 0; c < nusefulconss && !cutoff; ++c )
4602 else if( reduceddom )
4617 unsigned char* entries;
4628assert(conshdlr !=
NULL);
4631assert(result !=
NULL);
4636assert(conshdlrdata !=
NULL);
4640oldnfixedvars = *nfixedvars;
4641oldnchgbds = *nchgbds;
4642oldndelconss = *ndelconss;
4643oldnupgdconss = *nupgdconss;
4644oldnchgcoefs = *nchgcoefs;
4646firstchange = INT_MAX;
4654assert(cons !=
NULL);
4656assert(consdata !=
NULL);
4667 if( !consdata->presolved )
4693 if( consdata->nvars <= 2 )
4699conshdlrdata->conshdlrsetppc, nfixedvars, nchgbds, nchgcoefs, ndelconss, naddconss, nupgdconss, &cutoff) );
4706 else if( *nfixedvars > oldnfixedvars || *nchgbds > oldnchgbds || *nchgcoefs > oldnchgcoefs
4707|| *ndelconss > oldndelconss || *nupgdconss > oldnupgdconss )
4725 if( consdata->nvars <= 2 )
4731conshdlrdata->conshdlrsetppc, nfixedvars, nchgbds, nchgcoefs, ndelconss, naddconss, nupgdconss, &cutoff) );
4738 else if( *nfixedvars > oldnfixedvars || *nchgbds > oldnchgbds || *nchgcoefs > oldnchgcoefs
4739|| *ndelconss > oldndelconss || *nupgdconss > oldnupgdconss )
4748 if( firstchange == INT_MAX && consdata->changed )
4757 if( firstchange < nconss && conshdlrdata->presolusehashing )
4772conshdlrdata->usestrengthening, &firstchange, nfixedvars, ndelconss, nchgcoefs, &cutoff) );
4789&entries, &nentries, nfixedvars, ndelconss, nchgcoefs, &cutoff) );
4802conshdlrdata->eventhdlr, conss, nconss, &entries, &nentries, nfixedvars, ndelconss,
4803nupgdconss, nchgcoefs, &cutoff) );
4832assert(conshdlr !=
NULL);
4834assert(cons !=
NULL);
4835assert(infervar !=
NULL);
4836assert(result !=
NULL);
4839assert(consdata !=
NULL);
4841 SCIPdebugMsg(
scip,
"conflict resolving method of logic or constraint handler\n");
4849infervarfound =
FALSE;
4851 for( v = 0; v < consdata->nvars; ++v )
4853 if( consdata->vars[v] != infervar )
4862assert(!infervarfound);
4863infervarfound =
TRUE;
4867assert(infervarfound);
4883assert(consdata !=
NULL);
4886 for( i = 0; i < consdata->nvars; ++i )
4902assert(conshdlr !=
NULL);
4904assert(cons !=
NULL);
4908assert(conshdlrdata !=
NULL);
4910assert(consdata !=
NULL);
4911assert(consdata->watchedvar1 == -1 || consdata->watchedvar1 != consdata->watchedvar2);
4917 if( consdata->watchedvar1 != -1 )
4921&consdata->filterpos1) );
4923 if( consdata->watchedvar2 != -1 )
4927&consdata->filterpos2) );
4946assert(conshdlr !=
NULL);
4948assert(cons !=
NULL);
4952assert(conshdlrdata !=
NULL);
4954assert(consdata !=
NULL);
4955assert(consdata->watchedvar1 == -1 || consdata->watchedvar1 != consdata->watchedvar2);
4961 if( consdata->watchedvar1 != -1 )
4963assert(consdata->filterpos1 != -1);
4966consdata->filterpos1) );
4967consdata->watchedvar1 = -1;
4968consdata->filterpos1 = -1;
4970 if( consdata->watchedvar2 != -1 )
4972assert(consdata->filterpos2 != -1);
4975consdata->filterpos2) );
4976consdata->watchedvar2 = -1;
4977consdata->filterpos2 = -1;
4997assert( conshdlr !=
NULL);
4998assert( cons !=
NULL);
5010 const char* consname;
5025initial, separate, enforce, check, propagate, local, modifiable, dynamic, removable, stickingatnode, global, valid) );
5026assert(cons !=
NULL);
5048startptr = strchr((
char*)str,
'(');
5050 if( startptr ==
NULL)
5060endptr = strrchr(startptr,
')');
5062 if( endptr ==
NULL)
5067assert(endptr >= startptr);
5069 if( endptr > startptr )
5073strcopy[endptr-startptr] =
'\0';
5086 if( varssize < requiredsize )
5089varssize = requiredsize;
5097assert(varssize >= requiredsize);
5101initial, separate, enforce, check, propagate, local, modifiable, dynamic, removable, stickingatnode) );
5118initial, separate, enforce, check, propagate, local, modifiable, dynamic, removable, stickingatnode) );
5133assert(consdata !=
NULL);
5135 if( varssize < consdata->nvars )
5136(*success) =
FALSE;
5139assert(vars !=
NULL);
5155assert(consdata !=
NULL);
5157(*nvars) = consdata->nvars;
5188assert(eventhdlr !=
NULL);
5189assert(eventdata !=
NULL);
5191assert(event !=
NULL);
5193 SCIPdebugMsg(
scip,
"exec method of event handler for logic or constraints\n");
5213assert(cons !=
NULL);
5215assert(consdata !=
NULL);
5219assert(var !=
NULL);
5221consdata->presolved =
FALSE;
5228consdata->merged =
FALSE;
5230 if( !consdata->existmultaggr )
5233consdata->existmultaggr =
TRUE;
5254assert(conflicthdlr !=
NULL);
5256assert(bdchginfos !=
NULL|| nbdchginfos == 0);
5257assert(result !=
NULL);
5266 if( nbdchginfos == 2 )
5273 for( i = 0; i < nbdchginfos; ++i )
5275assert(bdchginfos !=
NULL);
5276assert(bdchginfos[i] !=
NULL);
5291 if( i == nbdchginfos )
5330eventExecLogicor,
NULL) );
5334conflictExecLogicor,
NULL) );
5342consEnfolpLogicor, consEnfopsLogicor, consCheckLogicor, consLockLogicor,
5344assert(conshdlr !=
NULL);
5375 if( conshdlrdata->conshdlrlinear !=
NULL)
5383 "constraints/logicor/presolpairwise",
5384 "should pairwise constraint comparison be performed in presolving?",
5387 "constraints/logicor/presolusehashing",
5388 "should hash table be used for detecting redundant constraints in advance",
5391 "constraints/logicor/dualpresolving",
5392 "should dual presolving steps be performed?",
5395 "constraints/logicor/negatedclique",
5396 "should negated clique information be used in presolving",
5399 "constraints/logicor/implications",
5400 "should implications/cliques be used in presolving",
5403 "constraints/logicor/strengthen",
5404 "should pairwise constraint comparison try to strengthen constraints by removing superflous non-zeros?",
5454 if( conshdlr ==
NULL)
5461assert(vars !=
NULL|| nvars == 0);
5462 for( i = 0; i < nvars; ++i )
5475 SCIP_CALL(
SCIPcreateCons(
scip, cons, name, conshdlr, consdata, initial, separate, enforce, check, propagate,
5476local, modifiable, dynamic, removable, stickingatnode) );
5484assert(conshdlrdata !=
NULL);
5486 for( v = consdata->nvars - 1; v >= 0; --v )
5527assert(var !=
NULL);
5561assert(consdata !=
NULL);
5563 returnconsdata->nvars;
5584assert(consdata !=
NULL);
5586 returnconsdata->vars;
5607assert(consdata !=
NULL);
5609 if( consdata->row !=
NULL)
5633assert(consdata !=
NULL);
5635 if( consdata->row !=
NULL)
5661assert(consdata !=
NULL);
5663 returnconsdata->row;
5678 unsigned char* entries;
5684 if( conshdlr ==
NULL)
5687assert(naddconss !=
NULL);
5688assert(ndelconss !=
NULL);
5689assert(nchgcoefs !=
NULL);
5699 for( i = nconss - 1; i >= 0; --i )
Constraint handler for linear constraints in their most general form, .
static SCIP_DECL_CONSHDLRCOPY(conshdlrCopyLogicor)
static SCIP_Bool isConsViolated(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol)
static SCIP_RETCODE addCoef(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var)
static SCIP_DECL_HASHKEYVAL(hashKeyValLogicorcons)
#define DEFAULT_DUALPRESOLVING
static SCIP_DECL_CONSENFOLP(consEnfolpLogicor)
#define DEFAULT_IMPLICATIONS
#define CONSHDLR_NEEDSCONS
#define CONSHDLR_SEPAFREQ
#define CONFLICTHDLR_PRIORITY
static void consdataCalcSignature(SCIP_CONSDATA *consdata)
#define CONFLICTHDLR_NAME
static SCIP_DECL_CONSEXITSOL(consExitsolLogicor)
static SCIP_RETCODE addCut(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *cutoff)
static SCIP_RETCODE delCoefPos(SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, int pos)
#define CONSHDLR_CHECKPRIORITY
static SCIP_RETCODE createRow(SCIP *scip, SCIP_CONS *cons)
static SCIP_RETCODE processWatchedVars(SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, SCIP_Bool *cutoff, SCIP_Bool *reduceddom, SCIP_Bool *addcut, SCIP_Bool *mustcheck)
static SCIP_RETCODE analyzeConflict(SCIP *scip, SCIP_CONS *cons)
static SCIP_DECL_CONSRESPROP(consRespropLogicor)
static SCIP_DECL_CONSLOCK(consLockLogicor)
#define CONSHDLR_PROP_TIMING
static SCIP_RETCODE addConsToOccurList(SCIP *scip, SCIP_CONS *cons, SCIP_HASHMAP *varstopos, SCIP_CONS ***occurlist, int *noccurlistentries, int *occurlistsizes, int *occurlistlength, int occurlistsize)
#define CONFLICTHDLR_DESC
static void conshdlrdataFree(SCIP *scip, SCIP_CONSHDLRDATA **conshdlrdata)
static SCIP_RETCODE removeConstraintsDueToNegCliques(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONSHDLR *conshdlrsetppc, SCIP_EVENTHDLR *eventhdlr, SCIP_CONS **conss, int nconss, unsigned char **entries, int *nentries, int *nfixedvars, int *ndelconss, int *nupgdconss, int *nchgcoefs, SCIP_Bool *cutoff)
static SCIP_RETCODE unlockRounding(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var)
#define DEFAULT_STRENGTHEN
static SCIP_DECL_CONSPRESOL(consPresolLogicor)
static SCIP_DECL_CONSENFOPS(consEnfopsLogicor)
static SCIP_DECL_CONSCHECK(consCheckLogicor)
static SCIP_RETCODE removeRedundantConss(SCIP *scip, SCIP_CONS *cons, SCIP_HASHMAP *varstopos, SCIP_CONS ***occurlist, int *noccurlistentries, int occurlistlength, int *ndelconss)
#define CONSHDLR_MAXPREROUNDS
static void findShortestOccurlist(SCIP_VAR **vars, int nvars, SCIP_HASHMAP *varstopos, SCIP_CONS ***occurlist, int *noccurlistentries, int occurlistlength, int *nentries, SCIP_CONS ***shortestlist)
static SCIP_RETCODE removeRedundantConssAndNonzeros(SCIP *scip, SCIP_CONS **conss, int nconss, unsigned char **entries, int *nentries, SCIP_EVENTHDLR *eventhdlr, SCIP_Bool usestrengthening, int *firstchange, int *nfixedvars, int *ndelconss, int *nchgcoefs, SCIP_Bool *cutoff)
static SCIP_RETCODE prepareCons(SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, unsigned char **entries, int *nentries, SCIP_Bool *redundant, int *nfixedvars, int *nchgcoefs, int *ndelconss, SCIP_Bool *cutoff)
#define DEFAULT_PRESOLPAIRWISE
#define CONSHDLR_SEPAPRIORITY
static SCIP_DECL_CONSPARSE(consParseLogicor)
static SCIP_RETCODE enforcePseudo(SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, SCIP_Bool *cutoff, SCIP_Bool *infeasible, SCIP_Bool *reduceddom, SCIP_Bool *solvelp)
#define DEFAULT_NEGATEDCLIQUE
static SCIP_DECL_CONSSEPALP(consSepalpLogicor)
static SCIP_RETCODE createNormalizedLogicor(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *vals, int mult, 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)
static SCIP_DECL_CONSGETVARS(consGetVarsLogicor)
static SCIP_RETCODE dualPresolving(SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, int *nfixedvars, int *ndelconss, int *nchgcoefs, int *naggrvars, SCIP_RESULT *result)
static SCIP_RETCODE addSymmetryInformation(SCIP *scip, SYM_SYMTYPE symtype, SCIP_CONS *cons, SYM_GRAPH *graph, SCIP_Bool *success)
static SCIP_RETCODE lockRounding(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var)
static SCIP_RETCODE shortenConss(SCIP *scip, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_EVENTHDLR *eventhdlr, SCIP_CONS **conss, int nconss, unsigned char **entries, int *nentries, int *nfixedvars, int *ndelconss, int *nchgcoefs, SCIP_Bool *cutoff)
static SCIP_DECL_CONSEXITPRE(consExitpreLogicor)
static SCIP_RETCODE consdataEnsureVarsSize(SCIP *scip, SCIP_CONSDATA *consdata, int num)
static SCIP_DECL_CONSDEACTIVE(consDeactiveLogicor)
static SCIP_DECL_CONSCOPY(consCopyLogicor)
static SCIP_DECL_CONSDELETE(consDeleteLogicor)
#define DEFAULT_PRESOLUSEHASHING
static SCIP_DECL_CONSINITLP(consInitlpLogicor)
static SCIP_RETCODE switchWatchedvars(SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, int watchedvar1, int watchedvar2)
static SCIP_DECL_EVENTEXEC(eventExecLogicor)
static SCIP_RETCODE fixDeleteOrUpgradeCons(SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, SCIP_CONSHDLR *conshdlrlinear, SCIP_CONSHDLR *conshdlrsetppc, int *nfixedvars, int *nchgbds, int *nchgcoefs, int *ndelconss, int *naddconss, int *nupgdconss, SCIP_Bool *cutoff)
static SCIP_DECL_CONSINITPRE(consInitpreLogicor)
#define HASHSIZE_LOGICORCONS
static unsigned int calcSignature(SCIP_VAR **vars, int nvars)
static SCIP_DECL_CONSSEPASOL(consSepasolLogicor)
static SCIP_DECL_HASHKEYEQ(hashKeyEqLogicorcons)
#define CONSHDLR_PROPFREQ
static SCIP_DECL_CONSPRINT(consPrintLogicor)
static SCIP_RETCODE detectRedundantConstraints(SCIP *scip, BMS_BLKMEM *blkmem, SCIP_CONS **conss, int nconss, int *firstchange, int *ndelconss)
static SCIP_DECL_CONSPROP(consPropLogicor)
static SCIP_RETCODE separateCons(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_EVENTHDLR *eventhdlr, SCIP_Bool *cutoff, SCIP_Bool *separated, SCIP_Bool *reduceddom)
#define CONSHDLR_PRESOLTIMING
static SCIP_RETCODE enforceConstraint(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss, int nusefulconss, SCIP_SOL *sol, SCIP_RESULT *result)
static SCIP_RETCODE consdataFree(SCIP *scip, SCIP_CONSDATA **consdata)
static SCIP_DECL_CONSGETPERMSYMGRAPH(consGetPermsymGraphLogicor)
static SCIP_DECL_CONSGETNVARS(consGetNVarsLogicor)
static SCIP_DECL_CONSENFORELAX(consEnforelaxLogicor)
static void consdataSort(SCIP_CONSDATA *consdata)
static SCIP_DECL_CONFLICTEXEC(conflictExecLogicor)
static SCIP_RETCODE addNlrow(SCIP *scip, SCIP_CONS *cons)
static SCIP_RETCODE strengthenConss(SCIP *scip, SCIP_CONS **conss, int nconss, SCIP_HASHMAP *varstopos, SCIP_CONS ***occurlist, int *noccurlistentries, int occurlistlength, SCIP_EVENTHDLR *eventhdlr, int *ndelconss, int *nchgcoefs)
#define CONSHDLR_EAGERFREQ
static SCIP_DECL_LINCONSUPGD(linconsUpgdLogicor)
static SCIP_RETCODE conshdlrdataCreate(SCIP *scip, SCIP_CONSHDLRDATA **conshdlrdata, SCIP_EVENTHDLR *eventhdlr)
static SCIP_RETCODE mergeMultiples(SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, unsigned char **entries, int *nentries, SCIP_Bool *redundant, int *nchgcoefs)
#define CONSHDLR_ENFOPRIORITY
#define LINCONSUPGD_PRIORITY
#define CONSHDLR_DELAYSEPA
static void removeConsFromOccurList(SCIP_CONS *cons, SCIP_HASHMAP *varstopos, SCIP_CONS ***occurlist, int *noccurlistentries, int occurlistlength)
static SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH(consGetSignedPermsymGraphLogicor)
static SCIP_RETCODE consdataCreate(SCIP *scip, SCIP_CONSDATA **consdata, int nvars, SCIP_VAR **vars)
static SCIP_RETCODE applyFixings(SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, SCIP_Bool *redundant, int *nchgcoefs, int *naddconss, int *ndelconss)
static SCIP_RETCODE disableCons(SCIP *scip, SCIP_CONS *cons)
static SCIP_DECL_SORTPTRCOMP(conssLogicorComp)
static SCIP_DECL_CONSACTIVE(consActiveLogicor)
static SCIP_RETCODE removeRedundantCons(SCIP *scip, SCIP_CONS *cons0, SCIP_CONS *cons1, int *ndelconss)
static SCIP_DECL_CONSINITSOL(consInitsolLogicor)
static SCIP_DECL_CONSTRANS(consTransLogicor)
#define CONSHDLR_DELAYPROP
static SCIP_DECL_CONSFREE(consFreeLogicor)
static SCIP_RETCODE removeRedundantNonZeros(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *artvar, int artpos, SCIP_HASHMAP *varstopos, SCIP_CONS ***occurlist, int *noccurlistentries, int occurlistlength, SCIP_EVENTHDLR *eventhdlr, int *nchgcoefs, SCIP_Bool *deleted)
static SCIP_DECL_HASHGETKEY(hashGetKeyLogicorcons)
static SCIP_RETCODE consdataPrint(SCIP *scip, SCIP_CONSDATA *consdata, FILE *file, SCIP_Bool endline)
Constraint handler for logicor constraints (equivalent to set covering, but algorithms are suited fo...
Constraint handler for the set partitioning / packing / covering constraints .
#define SCIP_LONGINT_FORMAT
SCIP_RETCODE SCIPincludeLinconsUpgrade(SCIP *scip, SCIP_DECL_LINCONSUPGD((*linconsupgd)), int priority, const char *conshdlrname)
int SCIPgetNVarsLogicor(SCIP *scip, SCIP_CONS *cons)
SCIP_Real SCIPgetDualsolLogicor(SCIP *scip, SCIP_CONS *cons)
SCIP_ROW * SCIPgetRowLogicor(SCIP *scip, SCIP_CONS *cons)
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 SCIPcleanupConssLogicor(SCIP *scip, SCIP_Bool onlychecked, int *naddconss, int *ndelconss, int *nchgcoefs)
SCIP_RETCODE SCIPcopyConsLinear(SCIP *scip, SCIP_CONS **cons, SCIP *sourcescip, const char *name, int nvars, SCIP_VAR **sourcevars, SCIP_Real *sourcecoefs, SCIP_Real lhs, SCIP_Real rhs, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, 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 global, SCIP_Bool *valid)
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_VAR ** SCIPgetVarsLogicor(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPcreateConsBasicLogicor(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars)
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_Real SCIPgetDualfarkasLogicor(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPaddCoefLogicor(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var)
SCIP_RETCODE SCIPincludeConshdlrLogicor(SCIP *scip)
SCIP_Bool SCIPisTransformed(SCIP *scip)
SCIP_Bool SCIPisPresolveFinished(SCIP *scip)
SCIP_Bool SCIPisStopped(SCIP *scip)
SCIP_STAGE SCIPgetStage(SCIP *scip)
int SCIPgetNIntVars(SCIP *scip)
int SCIPgetNImplVars(SCIP *scip)
int SCIPgetNContVars(SCIP *scip)
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_Bool SCIPhashmapExists(SCIP_HASHMAP *hashmap, void *origin)
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 SCIPaddConflict(SCIP *scip, SCIP_NODE *node, SCIP_CONS *cons, SCIP_NODE *validnode, SCIP_CONFTYPE conftype, SCIP_Bool iscutoffinvolved)
void SCIPinfoMessage(SCIP *scip, FILE *file, const char *formatstr,...)
void SCIPwarningMessage(SCIP *scip, const char *formatstr,...)
SCIP_Real SCIPrelDiff(SCIP_Real val1, SCIP_Real val2)
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)
const char * SCIPconflicthdlrGetName(SCIP_CONFLICTHDLR *conflicthdlr)
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 SCIPincludeConflicthdlrBasic(SCIP *scip, SCIP_CONFLICTHDLR **conflicthdlrptr, const char *name, const char *desc, int priority, SCIP_DECL_CONFLICTEXEC((*conflictexec)), SCIP_CONFLICTHDLRDATA *conflicthdlrdata)
int SCIPconshdlrGetNCheckConss(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPsetConshdlrParse(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPARSE((*consparse)))
void SCIPconshdlrSetData(SCIP_CONSHDLR *conshdlr, SCIP_CONSHDLRDATA *conshdlrdata)
SCIP_CONS ** SCIPconshdlrGetCheckConss(SCIP_CONSHDLR *conshdlr)
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)))
int SCIPconshdlrGetNActiveConss(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPsetConshdlrGetNVars(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETNVARS((*consgetnvars)))
SCIP_CONS ** SCIPconshdlrGetConss(SCIP_CONSHDLR *conshdlr)
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_RETCODE SCIPenableCons(SCIP *scip, SCIP_CONS *cons)
SCIP_Bool SCIPconsIsPropagationEnabled(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsInitial(SCIP_CONS *cons)
SCIP_RETCODE SCIPprintCons(SCIP *scip, SCIP_CONS *cons, FILE *file)
SCIP_RETCODE SCIPenableConsPropagation(SCIP *scip, SCIP_CONS *cons)
int SCIPconsGetValidDepth(SCIP_CONS *cons)
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)
SCIP_RETCODE SCIPdisableCons(SCIP *scip, 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 SCIPdisableConsPropagation(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPaddConsAge(SCIP *scip, SCIP_CONS *cons, SCIP_Real deltaage)
SCIP_RETCODE SCIPreleaseCons(SCIP *scip, SCIP_CONS **cons)
SCIP_Bool SCIPconsIsSeparated(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)
const char * SCIPeventhdlrGetName(SCIP_EVENTHDLR *eventhdlr)
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_VAR * SCIPeventGetVar(SCIP_EVENT *event)
SCIP_Bool SCIPhasCurrentNodeLP(SCIP *scip)
#define SCIPfreeCleanBufferArray(scip, ptr)
#define SCIPallocCleanBufferArray(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 SCIPreallocBlockMemoryArray(scip, ptr, oldnum, newnum)
#define SCIPfreeBlockMemory(scip, ptr)
#define SCIPfreeBlockMemoryArrayNull(scip, ptr, num)
#define SCIPfreeBufferArrayNull(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_RETCODE SCIPreleaseRow(SCIP *scip, SCIP_ROW **row)
SCIP_Real SCIProwGetDualfarkas(SCIP_ROW *row)
SCIP_Real SCIPgetRowLPFeasibility(SCIP *scip, SCIP_ROW *row)
SCIP_Bool SCIProwIsInLP(SCIP_ROW *row)
SCIP_Real SCIProwGetDualsol(SCIP_ROW *row)
SCIP_Real SCIPgetSolVal(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var)
void SCIPupdateSolLPConsViolation(SCIP *scip, SCIP_SOL *sol, SCIP_Real absviol, SCIP_Real relviol)
int SCIPgetNImplications(SCIP *scip)
int SCIPgetNRuns(SCIP *scip)
SCIP_Longint SCIPgetNConflictConssApplied(SCIP *scip)
SCIP_RETCODE SCIPshrinkDisjunctiveVarSet(SCIP *scip, SCIP_VAR **vars, SCIP_Real *bounds, SCIP_Bool *boundtypes, SCIP_Bool *redundants, int nvars, int *nredvars, int *nglobalred, SCIP_Bool *setredundant, SCIP_Bool *glbinfeas, SCIP_Bool fullshortening)
SCIP_Bool SCIPisFeasGE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
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 SCIPisInfinity(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisFeasLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisFeasNegative(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisFeasLE(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 SCIPisZero(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
int SCIPgetDepth(SCIP *scip)
SCIP_RETCODE SCIPgetProbvarLinearSum(SCIP *scip, SCIP_VAR **vars, SCIP_Real *scalars, int *nvars, int varssize, SCIP_Real *constant, int *requiredsize, SCIP_Bool mergemultiples)
SCIP_RETCODE SCIPlockVarCons(SCIP *scip, SCIP_VAR *var, SCIP_CONS *cons, SCIP_Bool lockdown, SCIP_Bool lockup)
SCIP_VAR * SCIPvarGetNegatedVar(SCIP_VAR *var)
SCIP_Bool SCIPvarIsActive(SCIP_VAR *var)
SCIP_Bool SCIPvarIsBinary(SCIP_VAR *var)
SCIP_RETCODE SCIPaddClique(SCIP *scip, SCIP_VAR **vars, SCIP_Bool *values, int nvars, SCIP_Bool isequation, SCIP_Bool *infeasible, int *nbdchgs)
SCIP_RETCODE SCIPgetTransformedVars(SCIP *scip, int nvars, SCIP_VAR **vars, SCIP_VAR **transvars)
int SCIPvarGetNImpls(SCIP_VAR *var, SCIP_Bool varfixing)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
int SCIPvarGetNLocksUpType(SCIP_VAR *var, SCIP_LOCKTYPE locktype)
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_Real SCIPvarGetObj(SCIP_VAR *var)
SCIP_VAR * SCIPvarGetProbvar(SCIP_VAR *var)
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_VAR * SCIPbdchginfoGetVar(SCIP_BDCHGINFO *bdchginfo)
SCIP_RETCODE SCIPcleanupCliques(SCIP *scip, SCIP_Bool *infeasible)
SCIP_RETCODE SCIPreleaseVar(SCIP *scip, SCIP_VAR **var)
SCIP_RETCODE SCIPgetNegatedVar(SCIP *scip, SCIP_VAR *var, SCIP_VAR **negvar)
int SCIPvarGetNCliques(SCIP_VAR *var, SCIP_Bool varfixing)
SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)
SCIP_Bool SCIPvarIsNegated(SCIP_VAR *var)
SCIP_VAR * SCIPvarGetNegationVar(SCIP_VAR *var)
int SCIPgetNCliques(SCIP *scip)
SCIP_Real SCIPvarGetLbGlobal(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_Longint SCIPvarGetNBranchingsCurrentRun(SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPinferBinvarCons(SCIP *scip, SCIP_VAR *var, SCIP_Bool fixedval, SCIP_CONS *infercons, int inferinfo, SCIP_Bool *infeasible, SCIP_Bool *tightened)
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)
SCIP_Real SCIPbdchginfoGetNewbound(SCIP_BDCHGINFO *bdchginfo)
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 SCIPgetSymActiveVariables(SCIP *scip, SYM_SYMTYPE symtype, SCIP_VAR ***vars, SCIP_Real **scalars, int *nvars, SCIP_Real *constant, SCIP_Bool transformed)
SCIP_RETCODE SCIPextendPermsymDetectionGraphLinear(SCIP *scip, SYM_GRAPH *graph, SCIP_VAR **vars, SCIP_Real *vals, int nvars, SCIP_CONS *cons, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool *success)
memory allocation routines
#define BMScopyMemoryArray(ptr, source, num)
#define BMSclearMemoryArray(ptr, num)
struct BMS_BlkMem BMS_BLKMEM
BMS_BLKMEM * SCIPblkmem(SCIP *scip)
methods commonly used for presolving
public methods for conflict analysis handlers
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 cuts and aggregation rows
public methods for event handler plugins and event handlers
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 querying solving statistics
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
struct SCIP_ConsData SCIP_CONSDATA
struct SCIP_EventData SCIP_EVENTDATA
#define SCIP_EVENTTYPE_UBTIGHTENED
#define SCIP_EVENTTYPE_VARFIXED
#define SCIP_EVENTTYPE_LBRELAXED
@ SCIP_BRANCHDIR_DOWNWARDS
enum SCIP_Result SCIP_RESULT
enum SCIP_Retcode SCIP_RETCODE
@ SCIP_STAGE_INITPRESOLVE
@ SCIP_STAGE_TRANSFORMING
enum SYM_Symtype SYM_SYMTYPE
#define SCIP_PRESOLTIMING_MEDIUM
#define SCIP_PRESOLTIMING_EXHAUSTIVE
@ SCIP_VARSTATUS_MULTAGGR
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