SCIP_ConshdlrData
204assert( consdata !=
NULL);
205assert( *consdata !=
NULL);
207 if( (*consdata)->usedynamicprop && (*consdata)->rowindexmap !=
NULL)
212p = (*consdata)->nspcons;
213q = (*consdata)->nblocks;
214 for(i = 0; i < p; ++i)
217 for(j = 0; j < q; ++j)
219assert( (*consdata)->vars[i] !=
NULL);
229 if( (*consdata)->usedynamicprop )
267assert(consdata !=
NULL);
269 if( usedynamicprop )
271assert( ! mayinteract );
284 if( usedynamicprop )
290 for(i = 0; i < nspcons; ++i)
296(*consdata)->roworder[i] = i;
298 if( usedynamicprop )
300(*consdata)->rowused[i] =
FALSE;
303(*consdata)->nrowsused = 0;
305(*consdata)->tmpvals =
NULL;
306(*consdata)->tmpvars =
NULL;
307(*consdata)->nspcons = nspcons;
308(*consdata)->nblocks = nblocks;
309(*consdata)->orbitopetype = orbitopetype;
310(*consdata)->resolveprop = resolveprop;
311(*consdata)->istrianglefixed =
FALSE;
312(*consdata)->ismodelcons = ismodelcons;
313(*consdata)->mayinteract = mayinteract;
314(*consdata)->usedynamicprop = usedynamicprop;
322 for(i = 0; i < nspcons; ++i)
327 for(j = 0; j < nblocks; ++j)
331 if( usedynamicprop )
340 for(i = 0; i < nspcons; ++i)
342 for(j = 0; j < nblocks; ++j)
344assert( (*consdata)->vars[i][j] !=
NULL);
370assert( vars !=
NULL);
371assert( vars !=
NULL);
372assert( *nrows > 0 );
374assert( type !=
NULL);
386 if( npprows >= 3 && ! mayinteract )
391assert( pprows !=
NULL);
397 for(i =
r; i < *nrows - 1; ++i)
412 if( pprows !=
NULL)
431assert( consdata !=
NULL);
432assert( consdata->nspcons > 0 );
433assert( consdata->nblocks > 0 );
434assert( consdata->vars !=
NULL);
436 for(j = 0; j < consdata->nblocks; ++j)
440 for(i = 0; i < consdata->nspcons; ++i)
442 for(j = 0; j < consdata->nblocks; ++j)
451 for(j = 0; j < consdata->nblocks; ++j)
477 for(k = 0; k < p; ++k)
480 for(l = 0; l < q; ++l)
485 for(l = j; l < q; ++l)
487assert( M[i][l] == 0 );
496assert( cases[p1][p2] != -1 );
497assert( p1 >= 0 && p1 < i );
498assert( p2 >= 0 && p2 < j );
501 if( cases[p1][p2] == 1 )
506assert( cases[p1][p2] == 2 || cases[p1][p2] == 3 );
507assert( M[p1][p2] == 0 );
509 if( cases[p1][p2] == 3 )
515assert( cases[p1][p2] == 3 );
518 for(l = 0; l < q; ++l)
522 for(k = 0; k < p; ++k)
524 for(l = 0; l < q; ++l)
542 SCIPerrorMessage(
"unexpected matrix entry <%d>: should be -1, 0 or +1\n", M[k][l]);
550 for(l = 0; l < q; ++l)
554 for(k = 0; k < p; ++k)
575assert( consdata !=
NULL);
576assert( consdata->nspcons > 0 );
577assert( consdata->nblocks > 0 );
578assert( consdata->vars !=
NULL);
579assert( consdata->vals !=
NULL);
581 for(i = 0; i < consdata->nspcons; ++i)
583 for(j = 0; j < consdata->nblocks; ++j)
615assert( weights !=
NULL);
616assert( cases !=
NULL);
617assert( vals !=
NULL);
621 for(i = 0; i < nspcons; ++i)
623 for(j = 0; j < nblocks; ++j)
627weights[i][j] = -1.0;
635minvalue = vals[0][0];
636weights[0][0] = minvalue;
641 if( nspcons < nblocks )
644 for(j = 1; j < diagsize; ++j)
649minvalue = vals[j][j];
654weights[j][j] = minvalue;
658 for(i = 1; i < nspcons; ++i)
660weights[i][0] = weights[i-1][0] + vals[i][0];
665 for(i = 2; i < nspcons; ++i)
667 for(j = 1; j < nblocks && j < i; ++j)
672assert( cases[i-1][j] != -1 );
673assert( cases[i-1][j-1] != -1 );
675weightleft = weights[i-1][j-1];
676weightright = vals[i][j] + weights[i-1][j];
681weights[i][j] = weightleft;
686weights[i][j] = weightright;
714assert( cons !=
NULL);
715assert( infeasible !=
NULL);
716assert( nfixedvars !=
NULL);
719assert( consdata !=
NULL);
720assert( consdata->nspcons > 0 );
721assert( consdata->nblocks > 0 );
722assert( consdata->vars !=
NULL);
724*infeasible =
FALSE;
727 if( consdata->istrianglefixed )
730nspcons = consdata->nspcons;
731nblocks = consdata->nblocks;
732vars = consdata->vars;
737 if( nspcons < nblocks )
741 for(i = 0; i < diagsize; ++i)
743 for(j = i+1; j < nblocks; ++j)
750 SCIPdebugMsg(
scip,
"The problem is infeasible: some variable in the upper right triangle is fixed to 1.\n");
758fixedglobal =
FALSE;
761 if( *nfixedvars > 0 )
763 SCIPdebugMsg(
scip,
"<%s>: %s fixed upper right triangle to 0 (fixed vars: %d).\n",
SCIPconsGetName(cons), fixedglobal ?
"globally":
"locally", *nfixedvars);
771consdata->istrianglefixed =
TRUE;
802assert( conshdlr !=
NULL);
803assert( cons !=
NULL);
804assert( infeasible !=
NULL);
805assert( nfixedvars !=
NULL);
806assert( ncuts !=
NULL);
808assert( consdata !=
NULL);
809assert( consdata->nspcons > 0 );
810assert( consdata->nblocks > 0 );
811assert( consdata->vars !=
NULL);
812assert( consdata->vals !=
NULL);
813assert( consdata->tmpvars !=
NULL);
814assert( consdata->tmpvals !=
NULL);
815assert( consdata->weights !=
NULL);
816assert( consdata->cases !=
NULL);
818*infeasible =
FALSE;
822nspcons = consdata->nspcons;
823nblocks = consdata->nblocks;
824vars = consdata->vars;
825vals = consdata->vals;
826tmpvars = consdata->tmpvars;
827tmpvals = consdata->tmpvals;
828weights = consdata->weights;
829cases = consdata->cases;
832 if( ! consdata->istrianglefixed )
837 if( *nfixedvars > 0 )
845 for(i = 1; i < nspcons && ! (*infeasible); ++i)
851lastcolumn = nblocks - 1;
852 if( lastcolumn > i )
857 for(j = lastcolumn; j > 0; --j)
880 for(l = j; l <= lastcolumn; ++l)
882tmpvars[nvars] = vars[i][l];
883tmpvals[nvars] = 1.0;
890assert( cases[p1][p2] != -1 );
891assert( p1 >= 0 && p1 < i );
892assert( p2 >= 0 && p2 < j );
895 if(cases[p1][p2] == 1)
900assert( cases[p1][p2] == 2 || cases[p1][p2] == 3 );
901tmpvars[nvars] = vars[p1][p2];
902tmpvals[nvars] = -1.0;
905weight += vals[p1][p2];
907 if( cases[p1][p2] == 3 )
913assert( cases[p1][p2] == 3 );
929 SCIP_CALL( printSCI(
scip, nspcons, nblocks, cases, i, j) );
963assert( cons !=
NULL);
964assert( infeasible !=
NULL);
965assert( nfixedvars !=
NULL);
973assert( consdata !=
NULL);
974assert( consdata->nspcons > 0 );
975assert( consdata->nblocks > 0 );
976assert( consdata->vars !=
NULL);
978nspcons = consdata->nspcons;
979nblocks = consdata->nblocks;
980vars = consdata->vars;
981orbitopetype = consdata->orbitopetype;
986 if( ! consdata->istrianglefixed )
990*nfixedvars += nfixed;
1000printMatrix(
scip, consdata);
1012lastoneprevrow = -1;
1018 for(i = 1; i < nspcons; ++i)
1021 intfirstnonzeroinrow;
1026lastcolumn = nblocks - 1;
1027 if( lastcolumn > i )
1031firstnonzeroinrow = -1;
1032 for(j = 0; j <= lastcolumn; ++j)
1039firstnonzeroinrow = j;
1048firstnonzeroinrow = j;
1056 SCIPdebugMsg(
scip,
" -> Infeasible node: all variables in row %d are fixed to 0.\n", i);
1057*infeasible =
TRUE;
1061firstnonzeros[i] = firstnonzeroinrow;
1063assert( -1 <= firstnonzeroinrow && firstnonzeroinrow <= lastcolumn );
1067assert( lastoneprevrow <= lastcolumn );
1070infrontier =
FALSE;
1071assert( lastoneprevrow + 1 >= 0 );
1072 if( lastoneprevrow == nblocks-1 ||
SCIPvarGetUbLocal(vars[i][lastoneprevrow+1]) < 0.5 )
1073lastoneinrow = lastoneprevrow;
1076lastoneinrow = lastoneprevrow + 1;
1077frontiersteps[nsteps++] = i;
1083assert( lastoneinrow <= lastcolumn );
1084lastones[i] = lastoneinrow;
1087 if( firstnonzeroinrow > lastoneinrow )
1094 SCIPdebugMsg(
scip,
" -> Infeasible node: row %d, leftmost nonzero at %d, rightmost 1 at %d\n",
1095i, firstnonzeroinrow, lastoneinrow);
1099 SCIPdebugMsg(
scip,
" -> Infeasible node: row %d, 1 at %d, rightmost position for 1 at %d\n",
1100i, firstnonzeroinrow, lastoneinrow);
1115 for(j = 0; j <= lastcolumn; ++j)
1128 if( lastones[0] == -1 )
1140 for(k = 1; k < i; ++k)
1143l = lastones[k] + 1;
1146 if( l <= nblocks-1 && l <= k && lastones[k-1] == lastones[k] )
1155*infeasible =
TRUE;
1160 for(j = lastoneinrow+1; j <= lastcolumn; ++j)
1173inferInfo = i * nblocks + lastoneinrow + 1;
1182 SCIPdebugMsg(
scip,
" -> Infeasible node: row %d, 1 in column %d beyond rightmost position %d\n", i, j, lastoneinrow);
1205 for(k = 1; k < i; ++k)
1208l = lastones[k] + 1;
1211 if( l <= nblocks-1 && l <= k && lastones[k-1] == lastones[k] )
1227lastoneprevrow = lastoneinrow;
1231 for(j = 0; j < nsteps; ++j)
1236s = frontiersteps[j];
1237lastoneinrow = lastones[s];
1239assert( 0 <= lastoneinrow && lastoneinrow < nblocks );
1245betaprev = lastoneinrow - 1;
1248 for(i = s+1; i < nspcons; ++i)
1252assert( betaprev + 1 >= 0 );
1256beta = betaprev + 1;
1257assert( -1 <= beta && beta < nblocks );
1259 if( firstnonzeros[i] > beta )
1269 SCIPdebugMsg(
scip,
" -> Fixing entry (%d,%d) to 1.\n", s, lastoneinrow);
1274inferInfo = nblocks * nspcons + i * nblocks + firstnonzeros[i];
1277assert( !(*infeasible) );
1316 int* branchdecisions;
1317 intnbranchdecision;
1320assert( rowindexmap !=
NULL);
1321assert( roworder !=
NULL);
1322assert( nrows > 0 );
1323assert( maxrowlabel !=
NULL);
1326nbranchdecision = 0;
1341assert( domchg !=
NULL);
1345 for(i = 0; i < nboundchgs; ++i)
1349assert( boundchg !=
NULL);
1368branchdecisions[nbranchdecision++] = rowidx;
1379 for(i = nbranchdecision - 1; i >= 0; --i)
1381 if( ! rowused[branchdecisions[i]] )
1383roworder[*maxrowlabel] = branchdecisions[i];
1384rowused[branchdecisions[i]] =
TRUE;
1400 int* minfixedrowlexmin,
1412*infeasible =
FALSE;
1414assert( vars !=
NULL);
1415assert( lexminfixes !=
NULL);
1416assert( !resprop || minfixedrowlexmin !=
NULL);
1419assert( nrowsused > 0 );
1420assert( nrowsused <= m );
1421assert( infeasible !=
NULL);
1426 for(j = n - 2; j >= 0; --j)
1428 intmaxdiscriminating = m;
1432 for(i = 0; i < nrowsused; ++i)
1435 if( minfixed == -1 && lexminfixes[i][j] != 0 && lexminfixes[i][j + 1] != 1 )
1437assert( lexminfixes[i][j + 1] == 0 );
1439maxdiscriminating = i;
1443 if( minfixed == -1 && lexminfixes[i][j] != lexminfixes[i][j + 1] && lexminfixes[i][j] != 2 )
1445assert( lexminfixes[i][j + 1] != 2 );
1450 if( maxdiscriminating > minfixed )
1452*infeasible =
TRUE;
1460 for(i = 0; i < nrowsused; ++i)
1462 if( lexminfixes[i][j] == 2 )
1464 if( i < maxdiscriminating || minfixed == -1 )
1465lexminfixes[i][j] = lexminfixes[i][j + 1];
1466 else if( i == maxdiscriminating )
1467lexminfixes[i][j] = 1;
1469lexminfixes[i][j] = 0;
1475assert( minfixedrowlexmin !=
NULL);
1478 if( minfixed == -1 )
1479minfixedrowlexmin[j] = nrowsused - 1;
1481minfixedrowlexmin[j] = minfixed;
1485 if( minfixedrowlexmin[j + 1] < minfixedrowlexmin[j] )
1486minfixedrowlexmin[j + 1] = minfixedrowlexmin[j];
1499 int* minfixedrowlexmax,
1511*infeasible =
FALSE;
1513assert( vars !=
NULL);
1514assert( lexmaxfixes !=
NULL);
1515assert( !resprop || minfixedrowlexmax !=
NULL);
1518assert( nrowsused > 0 );
1519assert( nrowsused <= m );
1520assert( infeasible !=
NULL);
1522 for(j = 1; j < n; ++j)
1524 intmaxdiscriminating = m;
1528 for(i = 0; i < nrowsused; ++i)
1531 if( minfixed == -1 && lexmaxfixes[i][j - 1] != 0 && lexmaxfixes[i][j] != 1 )
1533assert( lexmaxfixes[i][j - 1] == 1 );
1535maxdiscriminating = i;
1539 if( minfixed == -1 && lexmaxfixes[i][j - 1] != lexmaxfixes[i][j] && lexmaxfixes[i][j] != 2 )
1541assert( lexmaxfixes[i][j - 1] != 2 );
1546 if( maxdiscriminating > minfixed )
1548*infeasible =
TRUE;
1556 for(i = 0; i < nrowsused; ++i)
1558 if( lexmaxfixes[i][j] == 2 )
1560 if( i < maxdiscriminating || minfixed == -1 )
1561lexmaxfixes[i][j] = lexmaxfixes[i][j - 1];
1562 else if( i == maxdiscriminating )
1563lexmaxfixes[i][j] = 0;
1565lexmaxfixes[i][j] = 1;
1571assert( minfixedrowlexmax !=
NULL);
1574 if( minfixed == -1 )
1575minfixedrowlexmax[j] = nrowsused - 1;
1577minfixedrowlexmax[j] = minfixed;
1581 if( minfixedrowlexmax[j - 1] < minfixedrowlexmax[j] )
1582minfixedrowlexmax[j - 1] = minfixedrowlexmax[j];
1612assert( cons !=
NULL);
1613assert( infeasible !=
NULL);
1614assert( nfixedvars !=
NULL);
1617*infeasible =
FALSE;
1628assert( consdata !=
NULL);
1629assert( consdata->nspcons > 0 );
1630assert( consdata->nblocks > 0 );
1631assert( consdata->vars !=
NULL);
1634m = consdata->nspcons;
1635n = consdata->nblocks;
1636vars = consdata->vars;
1642consdata->roworder, m, n, &(consdata->nrowsused)) );
1645 if( consdata->nrowsused == 0 )
1648nrowsused = consdata->nrowsused;
1652roworder = consdata->roworder;
1658 for(i = 0; i < nrowsused; ++i)
1663 for(i = 0; i < nrowsused; ++i)
1667origrow = roworder[i];
1669 for(j = 0; j < n; ++j)
1672lexminfixes[i][j] = 1;
1674lexminfixes[i][j] = 0;
1676lexminfixes[i][j] = 2;
1683 if( *infeasible ==
TRUE)
1690 for(i = 0; i < nrowsused; ++i)
1695 for(i = 0; i < nrowsused; ++i)
1699origrow = roworder[i];
1701 for(j = 0; j < n; ++j)
1704lexmaxfixes[i][j] = 0;
1706lexmaxfixes[i][j] = 1;
1708lexmaxfixes[i][j] = 2;
1721 for(j = 0; j < n; ++j)
1723 for(i = 0; i < nrowsused; ++i)
1727origrow = roworder[i];
1729 if( lexminfixes[i][j] != lexmaxfixes[i][j] )
1737cons, 0, infeasible, &success) );
1746 for(i = 0; i < nrowsused; ++i)
1751 for(i = 0; i < nrowsused; ++i)
1772assert( cons !=
NULL);
1773assert( infeasible !=
NULL);
1774assert( nfixedvars !=
NULL);
1777assert( consdata !=
NULL);
1779orbitopetype = consdata->orbitopetype;
1784consdata->usedynamicprop && !consdata->ismodelcons) );
1821 int* minfixedrowlexmin;
1822 int* minfixedrowlexmax;
1834assert( conshdlr !=
NULL);
1835assert( cons !=
NULL);
1836assert( result !=
NULL);
1839assert( consdata !=
NULL);
1840assert( consdata->nspcons > 0 );
1841assert( consdata->nblocks > 0 );
1842assert( consdata->vars !=
NULL);
1845dynamic = consdata->usedynamicprop && !consdata->ismodelcons;
1846m = consdata->nspcons;
1847n = consdata->nblocks;
1848vars = consdata->vars;
1852assert( consdata->roworder !=
NULL);
1853assert( consdata->nrowsused > 0 );
1855nrowsused = consdata->nrowsused;
1859roworder = consdata->roworder;
1861assert( inferinfo <= consdata->nspcons );
1867 for(i = 0; i < nrowsused; ++i)
1874minfixedrowlexmin[n - 1] = -1;
1876 for(i = 0; i < nrowsused; ++i)
1880origrow = roworder[i];
1882 for(j = 0; j < n; ++j)
1885lexminfixes[i][j] = 1;
1887lexminfixes[i][j] = 0;
1889lexminfixes[i][j] = 2;
1903 for(i = 0; i < nrowsused; ++i)
1910minfixedrowlexmax[0] = -1;
1912 for(i = 0; i < nrowsused; ++i)
1916origrow = roworder[i];
1918 for(j = 0; j < n; ++j)
1921lexmaxfixes[i][j] = 0;
1923lexmaxfixes[i][j] = 1;
1925lexmaxfixes[i][j] = 2;
1938 for(j = 0; j < n; ++j)
1940 intub =
MAX(minfixedrowlexmin[j], minfixedrowlexmax[j]);
1942 for(i = 0; i <= ub; ++i)
1946origrow = roworder[i];
1959 for(i = 0; i < nrowsused; ++i)
1965 for(i = 0; i < nrowsused; ++i)
2014assert( cons !=
NULL);
2015assert( result !=
NULL);
2018assert( consdata !=
NULL);
2019assert( consdata->nspcons > 0 );
2020assert( consdata->nblocks > 0 );
2021assert( consdata->vars !=
NULL);
2022assert( consdata->vals !=
NULL);
2023assert( consdata->weights !=
NULL);
2024assert( consdata->cases !=
NULL);
2025assert( consdata->istrianglefixed );
2028 if( ! consdata->resolveprop )
2031nspcons = consdata->nspcons;
2032nblocks = consdata->nblocks;
2033vars = consdata->vars;
2034vals = consdata->vals;
2035weights = consdata->weights;
2036orbitopetype = consdata->orbitopetype;
2037cases = consdata->cases;
2039 SCIPdebugMsg(
scip,
"Propagation resolution method of orbitope constraint using orbitopal fixing\n");
2042 for(i = 0; i < nspcons; ++i)
2047lastcolumn = nblocks - 1;
2048 if( lastcolumn > i )
2050 for(j = 0; j <= lastcolumn; ++j)
2068printMatrix(
scip, consdata);
2072assert( consdata->istrianglefixed );
2076assert( inferinfo >= 0 && inferinfo < 2 * nspcons * nblocks );
2077 if( inferinfo < nspcons * nblocks )
2086i = (int) (inferinfo / nblocks);
2087j = inferinfo % nblocks;
2088assert( 0 <= i && i < nspcons );
2089assert( 0 <= j && j < nblocks );
2092assert( weights[i-1][j-1] < 0.5 );
2094 SCIPdebugMsg(
scip,
" -> reason for x[%d][%d] = ... = x[%d][%d] = 0 was the following SC:\n", i, j, i,
MIN(i,nblocks));
2103assert( cases[p1][p2] != -1 );
2104assert( p1 >= 0 && p1 < i );
2105assert( p2 >= 0 && p2 < j );
2108 if( cases[p1][p2] == 1 )
2113assert( cases[p1][p2] == 2 || cases[p1][p2] == 3 );
2123 if( cases[p1][p2] == 3 )
2129assert( cases[p1][p2] == 3 );
2150inferinfo -= nspcons * nblocks;
2151i = (int) inferinfo / nblocks;
2152j = inferinfo % nblocks;
2153assert( 0 <= i && i < nspcons );
2154assert( 0 <= j && j < nblocks );
2159 if( weights[i-1][j-1] > 0.5 && weights[i-1][j-1] < 1.5 )
2161 SCIPdebugMsg(
scip,
" -> reason for x[%d][%d] = 1 was the following SC:\n", i, j);
2174assert( cases[p1][p2] != -1 );
2175assert( p1 >= 0 && p1 < i );
2176assert( p2 >= 0 && p2 < j );
2179 if( cases[p1][p2] == 1 )
2184assert( cases[p1][p2] == 2 || cases[p1][p2] == 3 );
2199assert( pos1 == -1 && pos2 == -1 );
2204 if( cases[p1][p2] == 3 )
2210assert( cases[p1][p2] == 3 );
2211assert( pos1 >= 0 && pos2 >= 0 );
2222 for(k = 0; k < j; ++k)
2243lastcolumn = nblocks - 1;
2244 if( lastcolumn > i )
2248 for(k = j; k <= lastcolumn; ++k)
2283assert( cons !=
NULL);
2288assert( consdata !=
NULL);
2289assert( consdata->nspcons > 0 );
2290assert( consdata->nblocks > 0 );
2291assert( consdata->vals !=
NULL);
2292assert( consdata->weights !=
NULL);
2293assert( consdata->cases !=
NULL);
2296 if( ! consdata->istrianglefixed )
2307 if( nfixedvars > 0 )
2314nspcons = consdata->nspcons;
2315nblocks = consdata->nblocks;
2316vals = consdata->vals;
2317weights = consdata->weights;
2318cases = consdata->cases;
2325assert( consdata->istrianglefixed );
2329 for(i = 1; i < nspcons; ++i)
2334lastcolumn = nblocks - 1;
2337 if( lastcolumn > i )
2341 for(j = lastcolumn; j > 0; --j)
2381assert( cons != 0 );
2384assert( consdata !=
NULL);
2385assert( consdata->nspcons > 0 );
2386assert( consdata->nblocks > 0 );
2387assert( consdata->vars !=
NULL);
2388assert( consdata->vals !=
NULL);
2389assert( consdata->weights !=
NULL);
2390assert( consdata->cases !=
NULL);
2392nspcons = consdata->nspcons;
2393nblocks = consdata->nblocks;
2394vars = consdata->vars;
2395vals = consdata->vals;
2396weights = consdata->weights;
2397cases = consdata->cases;
2405 if( ! consdata->istrianglefixed )
2412 if( nspcons < nblocks )
2416 for(i = 0; i < diagsize; ++i)
2418 for(j = i+1; j < nblocks; ++j)
2434 for(i = 1; i < nspcons; ++i)
2439lastcolumn = nblocks - 1;
2442 if( lastcolumn > i )
2446 for(j = lastcolumn; j > 0; --j)
2466 for(l = j; l < nblocks; ++l)
2476assert( cases[p1][p2] != -1 );
2477assert( p1 >= 0 && p1 < i );
2478assert( p2 >= 0 && p2 < j );
2481 if(cases[p1][p2] == 1)
2486assert( cases[p1][p2] == 2 || cases[p1][p2] == 3 );
2488 if( cases[p1][p2] == 3 )
2494assert( cases[p1][p2] == 3 );
2526assert( cons !=
NULL);
2527assert( feasible !=
NULL);
2531assert( consdata !=
NULL);
2532assert( consdata->vars !=
NULL);
2533assert( consdata->nspcons > 0 );
2534assert( consdata->nblocks > 0 );
2535assert( ! consdata->ismodelcons );
2537vars = consdata->vars;
2538nrows = consdata->nspcons;
2539ncols = consdata->nblocks;
2547 for(j = 1; j < ncols && *feasible; ++j)
2549 for(i = 0; i < nrows; ++i)
2551vars1[i] = vars[i][j - 1];
2552vars2[i] = vars[i][j];
2591assert( cons !=
NULL);
2592assert( ngen !=
NULL);
2593assert( infeasible !=
NULL);
2596*infeasible =
FALSE;
2600assert( consdata !=
NULL);
2602vars = consdata->vars;
2603nrows = consdata->nspcons;
2604ncols = consdata->nblocks;
2605nrowsused = dynamic ? consdata->nrowsused : nrows;
2606roworder = consdata->roworder;
2616 for(j = 0; j < ncols - 1 && ! *infeasible; ++j)
2620 for(i = 0; i < nrowsused; ++i)
2622origrow = roworder[i];
2624assert( origrow >= 0 );
2625assert( origrow < nrows );
2643 for(k = 0; k <= i; ++k)
2647origrow2 = roworder[k];
2729assert( conshdlr !=
NULL);
2731assert( result !=
NULL);
2734 for(c = 0; c < nconss && ! infeasible; c++)
2738 intnconsfixedvars = 0;
2742assert( conss[c] !=
NULL);
2746assert( consdata !=
NULL);
2749 if( enforce && !consdata->ismodelcons )
2756orbitopetype = consdata->orbitopetype;
2762nfixedvars += nconsfixedvars;
2764 else if( conshdlrdata->sepafullorbitope )
2771 if( c >= nusefulconss && (ncuts > 0 || nfixedvars > 0) )
2780 else if( nfixedvars > 0 )
2785 else if( ncuts > 0 )
2792 SCIPdebugMsg(
scip,
"No violated inequality found during separation.\n");
2815assert( cons !=
NULL);
2816assert( redundant !=
NULL);
2818*redundant =
FALSE;
2821assert( consdata !=
NULL);
2822assert( consdata->vars !=
NULL);
2823assert( consdata->nspcons > 0 );
2824assert( consdata->nblocks > 0 );
2826vars = consdata->vars;
2827nrows = consdata->nspcons;
2828ncols = consdata->nblocks;
2831 for(i = 0; i < nrows; ++i)
2833 for(j = 0; j < ncols; ++j)
2855assert(conshdlr !=
NULL);
2872assert(
scip!= 0 );
2873assert( conshdlr != 0 );
2877assert( conshdlrdata !=
NULL);
2888assert(conshdlr !=
NULL);
2903assert(conshdlr !=
NULL);
2906assert(sourcecons !=
NULL);
2907assert(targetcons !=
NULL);
2910assert(sourcedata !=
NULL);
2914sourcedata->orbitopetype, sourcedata->resolveprop, sourcedata->usedynamicprop, sourcedata->ismodelcons,
2915sourcedata->mayinteract) );
2932assert( result !=
NULL);
2955assert( result !=
NULL);
2973assert( result !=
NULL);
2993assert( result !=
NULL);
3014assert( conshdlr !=
NULL);
3016assert( result !=
NULL);
3019 if( objinfeasible || solinfeasible )
3023 for(c = 0; c < nconss; ++c)
3032assert( cons != 0 );
3035assert( consdata !=
NULL);
3038 if( !consdata->ismodelcons )
3041orbitopetype = consdata->orbitopetype;
3073assert( conshdlr !=
NULL);
3075assert( result !=
NULL);
3080 for( c = 0; c < nconss && (*result ==
SCIP_FEASIBLE|| completely); ++c )
3082assert( conss[c] != 0 );
3085assert( consdata !=
NULL);
3088 if( !consdata->ismodelcons )
3091orbitopetype = consdata->orbitopetype;
3120assert( conshdlr !=
NULL);
3122assert( result !=
NULL);
3127 for(c = 0; c < nusefulconss && !infeasible; ++c)
3129assert( conss[c] != 0 );
3140 SCIPdebugMsg(
scip,
"Propagation via orbitopal fixing proved node to be infeasible.\n");
3142 else if( nfixedvars > 0 )
3145 SCIPdebugMsg(
scip,
"Propagated %d variables via orbitopal fixing.\n", nfixedvars);
3147 else if( nusefulconss > 0 )
3150 SCIPdebugMsg(
scip,
"Propagation via orbitopal fixing did not find anything.\n");
3167assert( conshdlr !=
NULL);
3169assert( result !=
NULL);
3172noldfixedvars = *nfixedvars;
3178 for(c = 0; c < nconss && !infeasible; ++c)
3182assert( conss[c] != 0 );
3188*nfixedvars += nfixed;
3196 SCIPdebugMsg(
scip,
"Orbitope constraint <%s> is redundant: it does not contain active variables\n",
3211 else if( *nfixedvars > noldfixedvars )
3215 else if( nconss > 0 )
3218 SCIPdebugMsg(
scip,
"Presolving via orbitopal fixing did not find anything.\n");
3233assert( cons !=
NULL);
3234assert( infervar !=
NULL);
3235assert( bdchgidx !=
NULL);
3236assert( result !=
NULL);
3239assert( consdata !=
NULL);
3241orbitopetype = consdata->orbitopetype;
3269assert( conshdlr !=
NULL);
3271assert( cons !=
NULL);
3275assert( consdata !=
NULL);
3276assert( consdata->nspcons > 0 );
3277assert( consdata->nblocks > 0 );
3278assert( consdata->vars !=
NULL);
3280 SCIPdebugMsg(
scip,
"Locking method for orbitope constraint handler\n");
3282nspcons = consdata->nspcons;
3283nblocks = consdata->nblocks;
3284vars = consdata->vars;
3287 for(i = 0; i < nspcons; ++i)
3289 for(j = 0; j < nblocks; ++j)
3310assert( conshdlr !=
NULL);
3312assert( cons !=
NULL);
3315assert( consdata !=
NULL);
3316assert( consdata->nspcons > 0 );
3317assert( consdata->nblocks > 0 );
3318assert( consdata->vars !=
NULL);
3320nspcons = consdata->nspcons;
3321nblocks = consdata->nblocks;
3322vars = consdata->vars;
3323orbitopetype = consdata->orbitopetype;
3325 SCIPdebugMsg(
scip,
"Printing method for orbitope constraint handler\n");
3327 switch( orbitopetype )
3342 for(i = 0; i < nspcons; ++i)
3344 for(j = 0; j < nblocks; ++j)
3350 if( i < nspcons-1 )
3374assert( cons !=
NULL);
3375assert( sourcescip !=
NULL);
3376assert( sourceconshdlr !=
NULL);
3378assert( sourcecons !=
NULL);
3379assert( varmap !=
NULL);
3380assert( valid !=
NULL);
3384 SCIPdebugMsg(
scip,
"Copying method for orbitope constraint handler.\n");
3387assert( sourcedata !=
NULL);
3388assert( sourcedata->nspcons > 0 );
3389assert( sourcedata->nblocks > 0 );
3390assert( sourcedata->vars !=
NULL);
3393assert( conshdlrdata !=
NULL);
3396 if( !sourcedata->ismodelcons && !conshdlrdata->forceconscopy )
3403nspcons = sourcedata->nspcons;
3404nblocks = sourcedata->nblocks;
3405sourcevars = sourcedata->vars;
3408 for(i = 0; i < nspcons && *valid; ++i)
3412 for(j = 0; j < nblocks && *valid; ++j)
3415assert( !(*valid) || vars[i][j] !=
NULL);
3427vars, sourcedata->orbitopetype, nspcons, nblocks, sourcedata->usedynamicprop,
3428sourcedata->resolveprop, sourcedata->ismodelcons, sourcedata->mayinteract,
3429initial, separate, enforce, check, propagate,
3430local, modifiable, dynamic, removable, stickingatnode) );
3434assert( 0 <= i && i <= nspcons );
3435 for(k = i - 1; k >= 0; --k)
3459assert( success !=
NULL);
3467 if( strncmp(s,
"partOrbitope(", 13) == 0 )
3469 else if( strncmp(s,
"packOrbitope(", 13) == 0 )
3473 if( strncmp(s,
"fullOrbitope(", 13) != 0 )
3475 SCIPerrorMessage(
"Syntax error - expected \"fullOrbitope(\", \"partOrbitope\" or \"packOrbitope\": %s\n", s);
3499endptr = strchr(endptr,
')');
3501 if( endptr ==
NULL|| j > 0 )
3511assert( s !=
NULL);
3521 if( nspcons > maxnspcons )
3525assert( nspcons <= maxnspcons );
3536 if( *s ==
'.'|| *s ==
')')
3538 else if( nblocks > maxnblocks )
3542assert( nblocks <= maxnblocks );
3545 else if( ( j < nblocks-1 ) == ( *s ==
'.'|| *s ==
')') )
3552vars[nspcons-1][j] = var;
3560 if( *s ==
','|| *s ==
'.')
3563 while( *s !=
')');
3569 SCIP_CALL(
SCIPcreateConsOrbitope(
scip, cons, name, vars, orbitopetype, nspcons, nblocks,
FALSE,
TRUE,
TRUE,
TRUE,
3570initial, separate, enforce, check, propagate, local, modifiable, dynamic, removable, stickingatnode) );
3572 for( k = nspcons - 1; k >= 0; --k )
3586assert( cons !=
NULL);
3587assert( success !=
NULL);
3588assert( vars !=
NULL);
3591assert( consdata !=
NULL);
3593 if( varssize < consdata->nblocks * consdata->nspcons )
3594(*success) =
FALSE;
3601 for(i = 0; i < consdata->nspcons; ++i)
3603 for(j = 0; j < consdata->nblocks; ++j)
3604vars[cnt++] = consdata->vars[i][j];
3619assert( cons !=
NULL);
3622assert( consdata !=
NULL);
3624(*nvars) = consdata->nblocks * consdata->nspcons;
3650consEnfolpOrbitope, consEnfopsOrbitope, consCheckOrbitope, consLockOrbitope,
3652assert(conshdlr !=
NULL);
3672 "Strengthen orbitope constraints to packing/partioning orbitopes?",
3676 "Whether we separate inequalities for full orbitopes?",
3680 "Whether orbitope constraints should be forced to be copied to sub SCIPs.",
3740 if( conshdlr ==
NULL)
3747 if( usedynamicprop && mayinteract )
3750 other symmetry handling constraints. Ignore value of <usedynamicprop>.\n");
3753assert( nspcons > 0 );
3754assert( nblocks > 0 );
3762 for(i = 0; i < nspcons; ++i)
3766 for(j = 0; j < nblocks; ++j)
3772assert(var !=
NULL);
3810resolveprop, usedynamicprop && ! mayinteract, ismodelcons, mayinteract) );
3813 SCIP_CALL(
SCIPcreateCons(
scip, cons, name, conshdlr, consdata, initial, separate, enforce, check, propagate,
3814local, modifiable, dynamic, removable, stickingatnode) );
3840resolveprop, ismodelcons, mayinteract,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE) );
constraint handler for orbisack constraints
static SCIP_RETCODE checkRedundantCons(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *redundant)
static SCIP_DECL_CONSHDLRCOPY(conshdlrCopyOrbitope)
#define CONSHDLR_NEEDSCONS
#define CONSHDLR_SEPAFREQ
static SCIP_DECL_CONSPARSE(consParseOrbitope)
static SCIP_RETCODE propagatePackingPartitioningCons(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *infeasible, int *nfixedvars)
static SCIP_RETCODE checkFullOrbitopeSolution(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool printreason, SCIP_Bool *feasible)
#define CONSHDLR_CHECKPRIORITY
static SCIP_DECL_CONSGETNVARS(consGetNVarsOrbitope)
static SCIP_RETCODE enfopsPackingPartitioningOrbitopeSolution(SCIP *scip, SCIP_CONS *cons, SCIP_RESULT *result)
static SCIP_DECL_CONSCOPY(consCopyOrbitope)
static SCIP_RETCODE resolvePropagation(SCIP *scip, SCIP_CONS *cons, int inferinfo, SCIP_BDCHGIDX *bdchgidx, SCIP_RESULT *result)
static SCIP_RETCODE separateConstraints(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss, int nusefulconss, SCIP_SOL *sol, SCIP_RESULT *result, SCIP_Bool enforce)
static SCIP_RETCODE checkPackingPartitioningOrbitopeSolution(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_RESULT *result, SCIP_Bool printreason)
#define CONSHDLR_PROP_TIMING
static SCIP_RETCODE separateSCIs(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons, SCIP_CONSDATA *consdata, SCIP_Bool *infeasible, int *nfixedvars, int *ncuts)
#define DEFAULT_FORCECONSCOPY
#define CONSHDLR_MAXPREROUNDS
static SCIP_DECL_CONSPRINT(consPrintOrbitope)
static SCIP_DECL_CONSFREE(consFreeOrbitope)
static SCIP_DECL_CONSPROP(consPropOrbitope)
#define CONSHDLR_SEPAPRIORITY
static SCIP_DECL_CONSSEPALP(consSepalpOrbitope)
static SCIP_DECL_CONSRESPROP(consRespropOrbitope)
static SCIP_DECL_CONSPRESOL(consPresolOrbitope)
static SCIP_RETCODE propagateCons(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *infeasible, int *nfixedvars)
static SCIP_DECL_CONSSEPASOL(consSepasolOrbitope)
static SCIP_RETCODE resolvePropagationFullOrbitope(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons, int inferinfo, SCIP_BDCHGIDX *bdchgidx, SCIP_RESULT *result)
static SCIP_DECL_CONSTRANS(consTransOrbitope)
static SCIP_RETCODE findLexMaxFace(SCIP_VAR ***vars, int **lexmaxfixes, int *minfixedrowlexmax, SCIP_Bool *infeasible, int m, int n, int nrowsused, SCIP_Bool resprop)
static SCIP_RETCODE strengthenOrbitopeConstraint(SCIP *scip, SCIP_VAR ***vars, int *nrows, int ncols, SCIP_ORBITOPETYPE *type, SCIP_Bool mayinteract)
static SCIP_DECL_CONSDELETE(consDeleteOrbitope)
static SCIP_DECL_CONSCHECK(consCheckOrbitope)
static SCIP_RETCODE consdataCreate(SCIP *scip, SCIP_CONSDATA **consdata, SCIP_VAR ***vars, int nspcons, int nblocks, SCIP_ORBITOPETYPE orbitopetype, SCIP_Bool resolveprop, SCIP_Bool usedynamicprop, SCIP_Bool ismodelcons, SCIP_Bool mayinteract)
static SCIP_RETCODE findLexMinFace(SCIP_VAR ***vars, int **lexminfixes, int *minfixedrowlexmin, SCIP_Bool *infeasible, int m, int n, int nrowsused, SCIP_Bool resprop)
#define CONSHDLR_PROPFREQ
static SCIP_RETCODE separateCoversOrbisack(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool dynamic, int *ngen, SCIP_Bool *infeasible)
#define DEFAULT_PPORBITOPE
static SCIP_DECL_CONSGETVARS(consGetVarsOrbitope)
#define CONSHDLR_PRESOLTIMING
static SCIP_RETCODE propagateFullOrbitopeCons(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *infeasible, int *nfixedvars, SCIP_Bool dynamic)
#define DEFAULT_SEPAFULLORBITOPE
static SCIP_RETCODE consdataFree(SCIP *scip, SCIP_CONSDATA **consdata)
static SCIP_DECL_CONSENFORELAX(consEnforelaxOrbitope)
#define CONSHDLR_EAGERFREQ
static SCIP_DECL_CONSENFOLP(consEnfolpOrbitope)
#define CONSHDLR_ENFOPRIORITY
static SCIP_RETCODE fixTriangle(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *infeasible, int *nfixedvars)
static SCIP_RETCODE computeDynamicRowOrder(SCIP *scip, SCIP_HASHMAP *rowindexmap, SCIP_Bool *rowused, int *roworder, int nrows, int ncols, int *maxrowlabel)
static void computeSCTable(SCIP *scip, int nspcons, int nblocks, SCIP_Real **weights, int **cases, SCIP_Real **vals)
#define CONSHDLR_DELAYSEPA
static void copyValues(SCIP *scip, SCIP_CONSDATA *consdata, SCIP_SOL *sol)
static SCIP_DECL_CONSLOCK(consLockOrbitope)
static SCIP_DECL_CONSENFOPS(consEnfopsOrbitope)
#define CONSHDLR_DELAYPROP
constraint handler for (partitioning/packing/full) orbitope constraints w.r.t. the full symmetric gro...
Constraint handler for the set partitioning / packing / covering constraints .
SCIP_RETCODE SCIPcheckSolutionOrbisack(SCIP *scip, SCIP_SOL *sol, SCIP_VAR **vars1, SCIP_VAR **vars2, int nrows, SCIP_Bool printreason, SCIP_Bool *feasible)
SCIP_RETCODE SCIPcreateConsBasicOrbitope(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR ***vars, SCIP_ORBITOPETYPE orbitopetype, int nspcons, int nblocks, SCIP_Bool usedynamicprop, SCIP_Bool resolveprop, SCIP_Bool ismodelcons, SCIP_Bool mayinteract)
SCIP_RETCODE SCIPcreateConsOrbitope(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR ***vars, SCIP_ORBITOPETYPE orbitopetype, int nspcons, int nblocks, SCIP_Bool usedynamicprop, SCIP_Bool mayinteract, SCIP_Bool resolveprop, SCIP_Bool ismodelcons, 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 SCIPincludeConshdlrOrbitope(SCIP *scip)
int SCIPgetSubscipDepth(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_Bool SCIPisTransformed(SCIP *scip)
SCIP_STAGE SCIPgetStage(SCIP *scip)
SCIP_RETCODE SCIPdelCons(SCIP *scip, SCIP_CONS *cons)
void SCIPhashmapFree(SCIP_HASHMAP **hashmap)
void * SCIPhashmapGetImage(SCIP_HASHMAP *hashmap, void *origin)
SCIP_RETCODE SCIPhashmapInsert(SCIP_HASHMAP *hashmap, void *origin, void *image)
SCIP_RETCODE SCIPhashmapCreate(SCIP_HASHMAP **hashmap, BMS_BLKMEM *blkmem, int mapsize)
SCIP_Bool SCIPhashmapExists(SCIP_HASHMAP *hashmap, void *origin)
void SCIPinfoMessage(SCIP *scip, FILE *file, const char *formatstr,...)
void SCIPwarningMessage(SCIP *scip, const char *formatstr,...)
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)
int SCIPgetNLPBranchCands(SCIP *scip)
SCIP_RETCODE SCIPaddConflictLb(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx)
SCIP_RETCODE SCIPinitConflictAnalysis(SCIP *scip, SCIP_CONFTYPE conftype, SCIP_Bool iscutoffinvolved)
SCIP_RETCODE SCIPaddConflictUb(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx)
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)))
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 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 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 SCIPsetConshdlrCopy(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), SCIP_DECL_CONSCOPY((*conscopy)))
SCIP_CONSHDLR * SCIPfindConshdlr(SCIP *scip, const char *name)
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 SCIPsetConshdlrPrint(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRINT((*consprint)))
SCIP_CONSDATA * SCIPconsGetData(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsDynamic(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsInitial(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsChecked(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_Bool SCIPconsIsModifiable(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsStickingAtNode(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsSeparated(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsRemovable(SCIP_CONS *cons)
SCIP_Bool SCIPisEfficacious(SCIP *scip, SCIP_Real efficacy)
SCIP_RETCODE SCIPaddRow(SCIP *scip, SCIP_ROW *row, SCIP_Bool forcecut, SCIP_Bool *infeasible)
#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 SCIPallocBlockMemoryArray(scip, ptr, num)
#define SCIPfreeBlockMemory(scip, ptr)
#define SCIPfreeBlockMemoryArrayNull(scip, ptr, num)
#define SCIPallocBlockMemory(scip, ptr)
#define SCIPduplicateBlockMemoryArray(scip, ptr, source, num)
SCIP_DOMCHG * SCIPnodeGetDomchg(SCIP_NODE *node)
SCIP_NODE * SCIPnodeGetParent(SCIP_NODE *node)
int SCIPnodeGetDepth(SCIP_NODE *node)
SCIP_Bool SCIPinProbing(SCIP *scip)
SCIP_RETCODE SCIPcacheRowExtensions(SCIP *scip, SCIP_ROW *row)
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 SCIPflushRowExtensions(SCIP *scip, SCIP_ROW *row)
SCIP_RETCODE SCIPcreateEmptyRowConshdlr(SCIP *scip, SCIP_ROW **row, SCIP_CONSHDLR *conshdlr, 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 SCIPprintRow(SCIP *scip, SCIP_ROW *row, FILE *file)
SCIP_RETCODE SCIPreleaseRow(SCIP *scip, SCIP_ROW **row)
SCIP_RETCODE SCIPaddVarsToRow(SCIP *scip, SCIP_ROW *row, int nvars, SCIP_VAR **vars, SCIP_Real *vals)
SCIP_Real SCIPgetSolVal(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var)
SCIP_RETCODE SCIPisPackingPartitioningOrbitope(SCIP *scip, SCIP_VAR ***vars, int nrows, int ncols, SCIP_Bool **pprows, int *npprows, SCIP_ORBITOPETYPE *type)
SCIP_Real SCIPinfinity(SCIP *scip)
SCIP_Bool SCIPisIntegral(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisFeasZero(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisInfinity(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisSumEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisFeasIntegral(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
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)
SCIP_NODE * SCIPgetCurrentNode(SCIP *scip)
SCIP_VAR * SCIPvarGetNegatedVar(SCIP_VAR *var)
SCIP_Bool SCIPvarIsActive(SCIP_VAR *var)
SCIP_Bool SCIPvarIsBinary(SCIP_VAR *var)
SCIP_VAR * SCIPboundchgGetVar(SCIP_BOUNDCHG *boundchg)
SCIP_BOUNDCHG * SCIPdomchgGetBoundchg(SCIP_DOMCHG *domchg, int pos)
SCIP_BOUNDCHGTYPE SCIPboundchgGetBoundchgtype(SCIP_BOUNDCHG *boundchg)
SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)
SCIP_Real SCIPvarGetObj(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)
SCIP_RETCODE SCIPaddVarLocksType(SCIP *scip, SCIP_VAR *var, SCIP_LOCKTYPE locktype, int nlocksdown, int nlocksup)
SCIP_Real SCIPgetVarUbAtIndex(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
int SCIPdomchgGetNBoundchgs(SCIP_DOMCHG *domchg)
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_RETCODE SCIPreleaseVar(SCIP *scip, SCIP_VAR **var)
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)
SCIP_Real SCIPvarGetLbAtIndex(SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
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 SCIPgetTransformedVar(SCIP *scip, SCIP_VAR *var, SCIP_VAR **transvar)
SCIP_Real SCIPvarGetUbAtIndex(SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
SCIP_RETCODE SCIPcaptureVar(SCIP *scip, SCIP_VAR *var)
SCIP_Bool SCIPallowStrongDualReds(SCIP *scip)
int SCIPsnprintf(char *t, int len, const char *s,...)
SCIP_RETCODE SCIPskipSpace(char **s)
memory allocation routines
BMS_BLKMEM * SCIPblkmem(SCIP *scip)
public methods for managing constraints
public methods for message output
public methods for problem variables
public methods for branching rule plugins and branching
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 the LP relaxation, rows and columns
public methods for memory management
public methods for message handling
public methods for numerical tolerances
public methods for SCIP parameter handling
public methods for global and local (sub)problems
public methods for the probing mode
public methods for solutions
public methods for SCIP variables
methods for handling symmetries
@ SCIP_CONFTYPE_PROPAGATION
struct SCIP_ConshdlrData SCIP_CONSHDLRDATA
struct SCIP_ConsData SCIP_CONSDATA
enum SCIP_Result SCIP_RESULT
enum SCIP_Retcode SCIP_RETCODE
@ SCIP_STAGE_TRANSFORMING
type definitions for symmetry computations
@ SCIP_ORBITOPETYPE_PACKING
@ SCIP_ORBITOPETYPE_PARTITIONING
enum SCIP_OrbitopeType SCIP_ORBITOPETYPE
@ SCIP_BOUNDCHGTYPE_BRANCHING
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