cliqueadded:1;
129 unsigned intsorted:1;
133structSCIP_ConshdlrData
160 if( consdata->sorted )
164 SCIPsortRealPtr(consdata->vals, (
void**)consdata->binvars, consdata->nbinvars);
166consdata->sorted =
TRUE;
181 for(
b= 0;
b< nbinvars; ++
b)
198assert(conshdlrdata !=
NULL);
199assert(eventhdlr !=
NULL);
204(*conshdlrdata)->varmap =
NULL;
207(*conshdlrdata)->eventhdlr = eventhdlr;
219assert(conshdlrdata !=
NULL);
220assert(*conshdlrdata !=
NULL);
223 if( (*conshdlrdata)->varmap !=
NULL)
243assert(consdata !=
NULL);
245linkvar = consdata->linkvar;
246binvars = consdata->binvars;
247nbinvars = consdata->nbinvars;
249assert(linkvar !=
NULL);
250assert(binvars !=
NULL|| nbinvars == 0);
263assert(binvars !=
NULL);
282assert(consdata !=
NULL);
283assert(eventhdlr !=
NULL);
284assert(0 <= pos && pos < consdata->nbinvars);
285assert(consdata->binvars !=
NULL);
287var = consdata->binvars[pos];
288assert(var !=
NULL);
296consdata->nfixedzeros++;
298consdata->nfixedones++;
314assert(consdata !=
NULL);
315assert(eventhdlr !=
NULL);
316assert(0 <= pos && pos < consdata->nbinvars);
317assert(consdata->binvars !=
NULL);
319var = consdata->binvars[pos];
320assert(var !=
NULL);
327consdata->nfixedzeros--;
329consdata->nfixedones--;
344assert(consdata !=
NULL);
352 for( i = 0; i < consdata->nbinvars; ++i )
370assert(consdata !=
NULL);
378 for( i = 0; i < consdata->nbinvars; ++i )
414 for(
b= 0;
b< consdata->nbinvars; ++
b)
445assert(consdata !=
NULL);
446assert(consdata->nbinvars == 0);
447assert(consdata->binvars ==
NULL);
456linkvar = consdata->linkvar;
460nbinvars = ub - lb + 1;
461assert(nbinvars > 0);
467consdata->sizebinvars = nbinvars;
479consdata->binvars[0] = binvar;
480consdata->vals[0] = lb;
484 for(
b= 0;
b< nbinvars; ++
b)
494consdata->binvars[
b] = binvar;
495consdata->vals[
b] = lb +
b;
499consdata->nbinvars = nbinvars;
501assert(consdata->nfixedzeros == 0);
502assert(consdata->nfixedones == 0);
544assert(consdata !=
NULL);
545assert(linkvar !=
NULL);
546assert(binvars !=
NULL|| nbinvars == 0);
552(*consdata)->linkvar = linkvar;
553(*consdata)->nbinvars = nbinvars;
554(*consdata)->sizebinvars = nbinvars;
555(*consdata)->row1 =
NULL;
556(*consdata)->row2 =
NULL;
557(*consdata)->nlrow1 =
NULL;
558(*consdata)->nlrow2 =
NULL;
559(*consdata)->cliqueadded =
FALSE;
562(*consdata)->sorted =
FALSE;
563(*consdata)->firstnonfixed = 0;
564(*consdata)->lastnonfixed = nbinvars - 1;
565(*consdata)->nfixedzeros = 0;
566(*consdata)->nfixedones = 0;
570(*consdata)->binvars =
NULL;
571(*consdata)->vals =
NULL;
603 for( v = 0; v < nbinvars; ++v )
605assert((*consdata)->binvars[v] !=
NULL);
623assert(consdata !=
NULL);
624assert(*consdata !=
NULL);
625assert((*consdata)->nbinvars == 0 || (*consdata)->binvars !=
NULL);
628 if( (*consdata)->row1 !=
NULL)
630assert((*consdata)->row2 !=
NULL);
637 if( (*consdata)->nlrow1 !=
NULL)
639assert((*consdata)->nlrow2 !=
NULL);
646 for( v = 0; v < (*consdata)->nbinvars; ++v )
648assert((*consdata)->binvars[v] !=
NULL);
654 if( (*consdata)->sizebinvars > 0 )
662assert((*consdata)->nfixedzeros == 0);
663assert((*consdata)->nfixedones == 0);
696assert(linkvar !=
NULL);
702assert(linkvar !=
NULL);
706 if( binvar !=
NULL)
738assert(consdata !=
NULL);
740linkvar = consdata->linkvar;
741coef = consdata->vals[pos];
800assert(cons !=
NULL);
803assert(cutoff !=
NULL);
804assert(nchgbds !=
NULL);
805assert(mustcheck !=
NULL);
808assert(consdata !=
NULL);
813nbinvars = consdata->nbinvars;
816assert(nbinvars > 1);
819 if( consdata->nfixedones > 0 || consdata->nfixedzeros >= nbinvars-1 )
822linkvar = consdata->linkvar;
823assert(linkvar !=
NULL);
825binvars = consdata->binvars;
826vals = consdata->vals;
835 for(
b= 0;
b< consdata->firstnonfixed; ++
b)
839 for(
b= consdata->lastnonfixed + 1;
b< nbinvars; ++
b)
843 for(
b= consdata->firstnonfixed;
b< nbinvars; ++
b)
850assert(var !=
NULL);
852 SCIPdebugMsg(
scip,
"fix variable <%s> to zero due to the lower bound of the linking variable <%s> [%g,%g]\n",
868consdata->firstnonfixed++;
875 for(
b= consdata->lastnonfixed;
b>= 0; --
b)
882assert(var !=
NULL);
884 SCIPdebugMsg(
scip,
"fix variable <%s> to zero due to the upper bound of the linking variable <%s> [%g,%g]\n",
900consdata->lastnonfixed--;
906 if( consdata->firstnonfixed > consdata->lastnonfixed )
912*mustcheck = (*nchgbds) == 0;
919 if( consdata->firstnonfixed == consdata->lastnonfixed )
923var = binvars[consdata->firstnonfixed];
925 SCIPdebugMsg(
scip,
"fix variable <%s> to one due to the fixed linking variable <%s> [%g,%g]\n",
961vars = &consdata->binvars[consdata->firstnonfixed];
962nvars = consdata->lastnonfixed - consdata->firstnonfixed + 1;
992assert(eventhdlr !=
NULL);
995assert(consdata !=
NULL);
996assert(0 <= pos && pos < consdata->nbinvars);
998var = consdata->binvars[pos];
999assert(var !=
NULL);
1014assert(conshdlrdata !=
NULL);
1015assert(conshdlrdata->eventhdlr !=
NULL);
1022 if( pos != consdata->nbinvars - 1 )
1024consdata->binvars[pos] = consdata->binvars[consdata->nbinvars-1];
1025consdata->vals[pos] = consdata->vals[consdata->nbinvars-1];
1026consdata->sorted =
FALSE;
1029consdata->nbinvars--;
1050assert(consdata !=
NULL);
1051assert(consdata->sorted);
1057nbinvars = consdata->nbinvars;
1059 for(
b= nbinvars - 1;
b> consdata->lastnonfixed; --
b)
1064 for(
b= consdata->firstnonfixed - 1;
b>= 0; --
b)
1069 for(
b= consdata->nbinvars - 1;
b>= 0; --
b)
1078consdata->firstnonfixed = 0;
1079consdata->lastnonfixed = consdata->nbinvars - 1;
1104 if( consdata->nfixedones > 1 || consdata->nfixedzeros >= consdata->nbinvars-1 )
1110assert(consdata->sorted);
1112linkvar = consdata->linkvar;
1113binvars = consdata->binvars;
1114vals = consdata->vals;
1115nbinvars = consdata->nbinvars;
1119 for(
b= 0;
b< consdata->firstnonfixed; ++
b)
1123assert(consdata->firstnonfixed < nbinvars);
1124assert(consdata->lastnonfixed < nbinvars);
1127 for(
b= consdata->firstnonfixed;
b< nbinvars; ++
b)
1132consdata->firstnonfixed++;
1143 SCIPdebugMsg(
scip,
"conflict at <%s> due to bounds and fixed binvars: [lb,ub] = [%g,%g]; b= %d; coef = %g \n",
1153 for(
b= 0;
b< consdata->firstnonfixed; ++
b)
1171 for(
b= consdata->lastnonfixed + 1;
b< nbinvars; ++
b)
1176 for(
b= consdata->lastnonfixed;
b>= 0; --
b)
1181consdata->lastnonfixed--;
1192 SCIPdebugMsg(
scip,
"conflict at <%s> due to bounds and fixed binvars: [lb,ub] = [%g,%g]; b = %d; coef = %g,\n",
1202 for(
b= consdata->lastnonfixed + 1;
b< nbinvars; ++
b)
1236assert(cons !=
NULL);
1239assert(cutoff !=
NULL);
1240assert(nchgbds !=
NULL);
1241assert(addcut !=
NULL);
1242assert(mustcheck !=
NULL);
1245assert(consdata !=
NULL);
1246assert(consdata->nbinvars == 0 || consdata->binvars !=
NULL);
1247assert(0 <= consdata->nfixedzeros && consdata->nfixedzeros <= consdata->nbinvars);
1248assert(0 <= consdata->nfixedones && consdata->nfixedones <= consdata->nbinvars);
1254assert(consdata->nbinvars > 1);
1259 if( consdata->nfixedones == 1 )
1265 if( consdata->nfixedzeros < consdata->nbinvars - 1 ||
1276 SCIPdebugMsg(
scip,
" -> fixing all other variables to zero due to the set partitioning condition <%s>\n",
1283vars = consdata->binvars;
1284nvars = consdata->nbinvars;
1286fixedonefound =
FALSE;
1289 for( v = 0; v < nvars && consdata->nfixedones == 1 && !(*cutoff); ++v )
1305assert(!infeasible);
1311fixedonefound =
TRUE;
1321assert(consdata->nfixedones >= 1 || fixedonefound);
1337 else if( consdata->nfixedones >= 2 )
1354vars = consdata->binvars;
1355nvars = consdata->nbinvars;
1362 for( v = 0; v < nvars && n < 2; ++v )
1378 else if( consdata->nfixedzeros == consdata->nbinvars )
1385assert(consdata->nfixedones == 0);
1402vars = consdata->binvars;
1403nvars = consdata->nbinvars;
1408 for( v = 0; v < nvars; ++v )
1420 else if( consdata->nfixedzeros == consdata->nbinvars - 1 )
1427assert(consdata->nfixedones == 0);
1437vars = consdata->binvars;
1438nvars = consdata->nbinvars;
1439 for( v = 0; v < nvars && !(*cutoff); ++v )
1454assert(!infeasible);
1465assert(consdata->nfixedzeros == consdata->nbinvars - 1);
1466assert(consdata->nfixedones == 1);
1477*mustcheck = (*nchgbds) == 0;
1479assert(consdata->nfixedzeros + consdata->nfixedones <= consdata->nbinvars);
1506assert(cons !=
NULL);
1511assert(consdata !=
NULL);
1512assert(consdata->binvars !=
NULL|| consdata->nbinvars == 0);
1515assert(consdata->nbinvars > 1);
1518binvars = consdata->binvars;
1519vals = consdata->vals;
1520nbinvars = consdata->nbinvars;
1526 for(
b= 0;
b< nbinvars && setpartsum < setpartsumbound; ++
b)
1533linksum += vals[
b] * solval;
1534setpartsum += solval;
1539absviol =
REALABS(linksum - linkvarval);
1545absviol =
REALABS(setpartsum - 1.0);
1554#ifdef SCIP_DISABLED_CODE 1587assert(varmap !=
NULL);
1589 for( c = 0; c < nconss; ++c )
1592assert(consdata !=
NULL);
1594linkvar = consdata->linkvar;
1595assert(linkvar !=
NULL);
1603 if( aggrcons !=
NULL)
1606assert(aggrconsdata !=
NULL);
1620offset = consdata->offset;
1621binvars = consdata->binvars;
1622aggroffset = aggrconsdata->offset;
1623aggrbinvars = aggrconsdata->binvars;
1625nbinvars =
MIN(consdata->nbinvars + offset, aggrconsdata->nbinvars + shift + aggroffset);
1627 for(
b=
MAX(offset, aggroffset-shift);
b< nbinvars; ++
b)
1629assert(
b- offset >= 0);
1630assert(
b+ shift - aggroffset >= 0);
1631assert(b < consdata->nbinvars);
1632assert(b < aggrconsdata->nbinvars - shift);
1636&infeasible, &redundant, &aggregated) );
1670assert( cons !=
NULL);
1674assert(consdata !=
NULL);
1675assert(consdata->row1 ==
NULL);
1676assert(consdata->row2 ==
NULL);
1677assert(consdata->nbinvars > 1);
1686assert(consdata->linkvar !=
NULL);
1690assert(consdata->binvars !=
NULL);
1691 for(
b= 0;
b< consdata->nbinvars; ++
b)
1698assert( consdata->nbinvars > 0 );
1719assert( cutoff !=
NULL);
1723assert(consdata !=
NULL);
1726assert(consdata->nbinvars > 1);
1728 if( consdata->row1 ==
NULL)
1730assert(consdata->row2 ==
NULL);
1735assert(consdata->row1 !=
NULL);
1736assert(consdata->row2 !=
NULL);
1771assert(consdata !=
NULL);
1773 if( consdata->nlrow1 ==
NULL)
1779assert(consdata->nlrow2 ==
NULL);
1794 for( i = 0; i < consdata->nbinvars; ++i )
1828assert(cons !=
NULL);
1831assert(cutoff !=
NULL);
1832assert(separated !=
NULL);
1833assert(nchgbds !=
NULL);
1836assert(consdata !=
NULL);
1839assert(consdata->nbinvars > 1);
1853 if( mustcheck && !(*cutoff) )
1856 if( sol ==
NULL&& consdata->row1 !=
NULL)
1861assert(consdata->row2 !=
NULL);
1873feasibility =
MIN(feasibility, tmp);
1880feasibility =
MIN(feasibility, tmp);
1921assert(cons !=
NULL);
1924assert(cutoff !=
NULL);
1925assert(infeasible !=
NULL);
1926assert(nchgbds !=
NULL);
1927assert(solvelp !=
NULL);
1949*infeasible =
TRUE;
1981assert(conshdlr !=
NULL);
1983assert(nconss == 0 || conss !=
NULL);
1984assert(result !=
NULL);
1986 SCIPdebugMsg(
scip,
"Enforcing %d linking constraints for %s solution\n", nconss, sol ==
NULL?
"LP":
"relaxation");
1993 for( c = 0; c < nusefulconss && !cutoff && nchgbds == 0; ++c )
1999 for( c = nusefulconss; c < nconss && !cutoff && !separated && nchgbds == 0; ++c )
2007 else if( nchgbds > 0 )
2009 else if( separated )
2036assert(cons !=
NULL);
2037assert(graph !=
NULL);
2038assert(success !=
NULL);
2041assert(consdata !=
NULL);
2045nlocvars = consdata->nbinvars + 1;
2051 for( i = 0; i < consdata->nbinvars; ++i )
2053vars[i] = consdata->binvars[i];
2054vals[i] = consdata->vals[i];
2058vars[consdata->nbinvars] = consdata->linkvar;
2059vals[consdata->nbinvars] = -1.0;
2064cons, -constant, -constant, success) );
2081assert(conshdlr !=
NULL);
2098assert(conshdlr !=
NULL);
2104assert(conshdlrdata !=
NULL);
2121assert(conshdlrdata !=
NULL);
2124 for( c = 0; c < nconss; ++c )
2127assert(consdata !=
NULL);
2133 if( consdata->nbinvars <= 1 )
2138 else if( conshdlrdata->linearize )
2156 for( c = 0; c < nconss; ++c )
2172 for( c = 0; c < nconss; ++c )
2175assert(consdata !=
NULL);
2178 if( consdata->row1 !=
NULL)
2180assert(consdata->row2 !=
NULL);
2186 if( consdata->nlrow1 !=
NULL)
2188assert(consdata->nlrow2 !=
NULL);
2205assert(conshdlr !=
NULL);
2207assert(consdata !=
NULL);
2208assert(*consdata !=
NULL);
2211assert(conshdlrdata !=
NULL);
2212assert(conshdlrdata->eventhdlr !=
NULL);
2215assert(conshdlrdata->varmap !=
NULL);
2239assert(conshdlr !=
NULL);
2242assert(sourcecons !=
NULL);
2243assert(targetcons !=
NULL);
2247assert(conshdlrdata !=
NULL);
2248assert(conshdlrdata->eventhdlr !=
NULL);
2251assert(sourcedata !=
NULL);
2252assert(sourcedata->row1 ==
NULL);
2253assert(sourcedata->row2 ==
NULL);
2259sourcedata->linkvar, sourcedata->binvars, sourcedata->vals, sourcedata->nbinvars) );
2269assert(conshdlrdata->varmap !=
NULL);
2282*infeasible =
FALSE;
2284 for( c = 0; c < nconss && !(*infeasible); ++c )
2289assert(consdata !=
NULL);
2291 if( consdata->nbinvars <= 1 )
2310assert(conshdlr !=
NULL);
2312assert(nconss == 0 || conss !=
NULL);
2313assert(result !=
NULL);
2315 SCIPdebugMsg(
scip,
"separating %d/%d linking constraints\n", nusefulconss, nconss);
2322 for( c = 0; c < nusefulconss && !cutoff; ++c )
2330 else if( nchgbds > 0 )
2332 else if( separated )
2350assert(conshdlr !=
NULL);
2352assert(nconss == 0 || conss !=
NULL);
2353assert(result !=
NULL);
2362 for( c = 0; c < nusefulconss && !cutoff; ++c )
2370 else if( nchgbds > 0 )
2372 else if( separated )
2411assert(conshdlr !=
NULL);
2413assert(nconss == 0 || conss !=
NULL);
2414assert(result !=
NULL);
2418 if( objinfeasible )
2425infeasible =
FALSE;
2430 for( c = 0; c < nconss && !cutoff && !solvelp; ++c )
2437 else if( nchgbds > 0 )
2441 else if( infeasible )
2458assert(conshdlr !=
NULL);
2460assert(nconss == 0 || conss !=
NULL);
2461assert(result !=
NULL);
2466 for( c = 0; c < nconss && (*result ==
SCIP_FEASIBLE|| completely); ++c )
2470assert(consdata !=
NULL);
2472 if( consdata->nbinvars > 1 && (checklprows || consdata->row1 ==
NULL|| !
SCIProwIsInLP(consdata->row1)) )
2487 for(
b= 0;
b< consdata->nbinvars; ++
b)
2489assert(consdata->binvars[
b] !=
NULL);
2498 for(
b= 0;
b< consdata->nbinvars; ++
b)
2542assert(conshdlr !=
NULL);
2544assert(nconss == 0 || conss !=
NULL);
2545assert(result !=
NULL);
2550 for( c = 0; c < nusefulconss && !cutoff; ++c )
2562 else if( nchgbds > 0 )
2589assert(conshdlr !=
NULL);
2592assert(result !=
NULL);
2598oldnchgbds = *nchgbds;
2599oldnaggrvars = *naggrvars;
2600oldnfixedvars = *nfixedvars;
2601oldndelconss = *ndelconss;
2605assert(conshdlrdata !=
NULL);
2608firstchange = INT_MAX;
2609firstclique = INT_MAX;
2621assert(cons !=
NULL);
2627assert(consdata !=
NULL);
2633assert(consdata->nbinvars > 1);
2636 if( consdata->nfixedones >= 2 )
2646 if( consdata->nfixedones == 1 )
2658 for( v = 0; v < consdata->nbinvars; ++v )
2660var = consdata->binvars[v];
2661assert(var !=
NULL);
2711 if( consdata->nfixedzeros == consdata->nbinvars )
2716assert(consdata->nfixedones == 0);
2723 if( consdata->nfixedzeros == consdata->nbinvars - 1 )
2734assert(consdata->nfixedones == 0);
2742 for( v = 0; v < consdata->nbinvars &&
SCIPvarGetUbGlobal(consdata->binvars[v]) < 0.5; ++v );
2743assert(v < consdata->nbinvars);
2744var = consdata->binvars[v];
2784 if( consdata->nfixedzeros == consdata->nbinvars - 2 )
2800 for( v = 0; v < consdata->nbinvars && var2 ==
NULL; ++v )
2802var = consdata->binvars[v];
2811assert(var1 !=
NULL&& var2 !=
NULL);
2821 SCIPdebugMsg(
scip,
"linking constraint <%s>: infeasible aggregation <%s> + <%s> == 1\n",
2840 if( ! cutoff && consdata->nbinvars == 1 )
2846linkvar = consdata->linkvar;
2847binvar = consdata->binvars[0];
2848val = consdata->vals[0];
2850 SCIPdebugMsg(
scip,
"linking constraint <%s>: fix <%s> to %16.9g as only one binary variable remains",
2863cutoff = infeasible;
2876 if( firstchange == INT_MAX )
2880 if( !consdata->cliqueadded && consdata->nbinvars >= 2 )
2882 if( firstclique == INT_MAX )
2897assert(cons !=
NULL);
2904assert(consdata !=
NULL);
2906 if( !consdata->cliqueadded && consdata->nbinvars >= 3 )
2912*nchgbds += ncliquebdchgs;
2920consdata->cliqueadded =
TRUE;
2924#ifdef SCIP_DISABLED_CODE 2933 else if( oldndelconss < *ndelconss || oldnfixedvars < *nfixedvars || oldnchgbds < *nchgbds || oldnaggrvars < *naggrvars)
2951assert(consdata !=
NULL);
2953linkvar = consdata->linkvar;
2954assert(linkvar !=
NULL);
2958 if( inferinfo == -1 )
2972 for( v = 0; v < consdata->nbinvars; ++v )
2980assert(v < consdata->nbinvars);
2988 for( v = 0; v < consdata->nbinvars; ++v )
2990 if( consdata->binvars[v] != infervar )
2999 else if( inferinfo == -2 )
3011 else if( inferinfo == -3 )
3023 else if( inferinfo == -4 )
3032assert(infervar == linkvar);
3035binvars = consdata->binvars;
3036nbinvars = consdata->nbinvars;
3037vals = consdata->vals;
3042 for(
b= 0;
b< nbinvars; ++
b)
3044 if( vals[
b] >= lb )
3051 else if( inferinfo == -5 )
3061assert(infervar == linkvar);
3064binvars = consdata->binvars;
3065nbinvars = consdata->nbinvars;
3066vals = consdata->vals;
3072 for(
b= nbinvars - 1;
b>= 0; --
b)
3074 if( vals[
b] <= ub )
3080 else if( inferinfo == -6 )
3098assert(infervar == linkvar);
3099assert(inferinfo >= 0);
3100assert(inferinfo < consdata->nbinvars);
3123assert(consdata !=
NULL);
3129 for(
b= 0;
b< consdata->nbinvars; ++
b)
3141assert(cons !=
NULL);
3165assert(consdata !=
NULL);
3172assert(consdata->nlrow2 !=
NULL);
3184#ifdef SCIP_DISABLED_CODE 3190assert(conshdlrdata !=
NULL);
3193assert(consdata !=
NULL);
3195 if( consdata->nbinvars <= 1 )
3200 else if( conshdlrdata->linearize )
3214assert(conshdlr !=
NULL);
3215assert(cons !=
NULL);
3231 const char* consname;
3245assert(sourceconsdata !=
NULL);
3248nbinvars = sourceconsdata->nbinvars;
3249linkvar = sourceconsdata->linkvar;
3264 for( v = 0; v < nbinvars && *valid; ++v )
3266assert(binvars !=
NULL);
3268assert(!(*valid) || binvars[v] !=
NULL);
3275assert(!(*valid) || linkvar !=
NULL);
3287initial, separate, enforce, check, propagate, local, modifiable, dynamic, removable, stickingatnode) );
3312assert(success !=
NULL);
3313assert(str !=
NULL);
3314assert(name !=
NULL);
3315assert(cons !=
NULL);
3322 if( linkvar ==
NULL)
3330endptr = strchr(endptr,
'=');
3333 if( endptr ==
NULL)
3343str += *(str+1) ==
'='? 2 : 1;
3354 if( strncmp(str,
"no binary variables yet", 24) != 0 )
3362 if( *success && requsize > varssize )
3365varssize = requsize;
3370assert(!*success || requsize <= varssize);
3377 for( v = 0; v < nbinvars; ++v )
3388initial, separate, enforce, check, propagate, local, modifiable, dynamic, removable, stickingatnode) );
3404assert(consdata !=
NULL);
3406 if( varssize < consdata->nbinvars + 1)
3407(*success) =
FALSE;
3410assert(vars !=
NULL);
3413vars[consdata->nbinvars] = consdata->linkvar;
3427assert(consdata !=
NULL);
3429(*nvars) = consdata->nbinvars + 1;
3464assert(eventhdlr !=
NULL);
3465assert(eventdata !=
NULL);
3467assert(event !=
NULL);
3470assert(consdata !=
NULL);
3473 switch( eventtype )
3476consdata->nfixedones++;
3479consdata->nfixedones--;
3480consdata->firstnonfixed = 0;
3481consdata->lastnonfixed = consdata->nbinvars - 1;
3484consdata->nfixedzeros++;
3487consdata->firstnonfixed = 0;
3488consdata->lastnonfixed = consdata->nbinvars - 1;
3489consdata->nfixedzeros--;
3495assert(0 <= consdata->nfixedzeros && consdata->nfixedzeros <= consdata->nbinvars);
3496assert(0 <= consdata->nfixedones && consdata->nfixedones <= consdata->nbinvars);
3519eventExecBinvar,
NULL) );
3527consEnfolpLinking, consEnfopsLinking, consCheckLinking, consLockLinking,
3530assert(conshdlr !=
NULL);
3563 "constraints/" CONSHDLR_NAME "/linearize",
"this constraint will not propagate or separate, linear and setppc are used?",
3617 if( conshdlr ==
NULL)
3623 SCIPdebugMsg(
scip,
"create linking constraint for variable <%s> with %d binary variables (SCIP stage %d)\n",
3625 for( k = 0; k < nbinvars; k++ )
3632assert(conshdlrdata !=
NULL);
3634 if( conshdlrdata->varmap ==
NULL)
3638assert(conshdlrdata->varmap !=
NULL);
3647initial, separate, enforce, check, propagate, local, modifiable, dynamic, removable, stickingatnode) );
3650 if( nbinvars == 0 )
3698assert(conshdlr !=
NULL);
3701assert(conshdlrdata !=
NULL);
3716assert(conshdlr !=
NULL);
3719assert(conshdlrdata !=
NULL);
3721 if( conshdlrdata->varmap !=
NULL)
3745assert(consdata !=
NULL);
3747 returnconsdata->linkvar;
3770assert(consdata !=
NULL);
3772 if( consdata->binvars ==
NULL)
3778assert(conshdlr !=
NULL);
3781assert(conshdlrdata !=
NULL);
3786assert(consdata->binvars !=
NULL);
3788 if( binvars !=
NULL)
3789(*binvars) = consdata->binvars;
3790 if( nbinvars !=
NULL)
3791(*nbinvars) = consdata->nbinvars;
3814assert(consdata !=
NULL);
3816 returnconsdata->nbinvars;
3837assert(consdata !=
NULL);
3840 returnconsdata->vals;
3861assert(consdata !=
NULL);
3865 if( binvars !=
NULL)
3866*binvars = consdata->binvars;
3868*vals = consdata->vals;
3869 if( nbinvars !=
NULL)
3870*nbinvars = consdata->nbinvars;
static SCIP_RETCODE aggregateVariables(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *cutoff, int *nfixedvars, int *naggrvars)
Constraint handler for linear constraints in their most general form, .
static SCIP_DECL_CONSRESPROP(consRespropLinking)
static SCIP_RETCODE consdataLinearize(SCIP *scip, SCIP_CONS *cons, SCIP_CONSDATA *consdata)
static SCIP_RETCODE consdataPrint(SCIP *scip, SCIP_CONSDATA *consdata, FILE *file)
static SCIP_DECL_CONSENFORELAX(consEnforelaxLinking)
#define CONSHDLR_NEEDSCONS
#define CONSHDLR_SEPAFREQ
static SCIP_RETCODE analyzeConflict(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *linkvar, SCIP_VAR *binvar, SCIP_Bool lblinkvar, SCIP_Bool ublinkvar)
static SCIP_RETCODE enforcePseudo(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *cutoff, SCIP_Bool *infeasible, int *nchgbds, SCIP_Bool *solvelp)
static SCIP_DECL_CONSHDLRCOPY(conshdlrCopyLinking)
#define CONSHDLR_CHECKPRIORITY
static SCIP_DECL_CONSDEACTIVE(consDeactiveLinking)
static SCIP_RETCODE addCuts(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *cutoff)
static SCIP_RETCODE catchAllEvents(SCIP *scip, SCIP_CONSDATA *consdata, SCIP_EVENTHDLR *eventhdlr)
static SCIP_RETCODE consFixLinkvar(SCIP *scip, SCIP_CONS *cons, int pos, SCIP_Bool *cutoff)
static SCIP_RETCODE dropEvent(SCIP *scip, SCIP_CONSDATA *consdata, SCIP_EVENTHDLR *eventhdlr, int pos)
static SCIP_RETCODE dropAllEvents(SCIP *scip, SCIP_CONSDATA *consdata, SCIP_EVENTHDLR *eventhdlr)
static SCIP_RETCODE removeFixedBinvars(SCIP *scip, SCIP_EVENTHDLR *eventhdlr, SCIP_CONS *cons)
#define CONSHDLR_PROP_TIMING
static SCIP_DECL_CONSINITSOL(consInitsolLinking)
static SCIP_DECL_CONSTRANS(consTransLinking)
static SCIP_DECL_CONSENFOPS(consEnfopsLinking)
static void conshdlrdataFree(SCIP *scip, SCIP_CONSHDLRDATA **conshdlrdata)
static SCIP_RETCODE processBinvarFixings(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *cutoff, int *nchgbds, SCIP_Bool *addcut, SCIP_Bool *mustcheck)
static void * getHashmapKey(SCIP_VAR *var)
#define CONSHDLR_MAXPREROUNDS
static SCIP_RETCODE lockRounding(SCIP *scip, SCIP_CONS *cons, SCIP_VAR **binvars, int nbinvars)
static SCIP_Bool checkCons(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol)
#define CONSHDLR_SEPAPRIORITY
static SCIP_DECL_CONSPRINT(consPrintLinking)
static SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH(consGetSignedPermsymGraphLinking)
static SCIP_DECL_CONSENABLE(consEnableLinking)
#define DEFAULT_LINEARIZE
static SCIP_DECL_CONSACTIVE(consActiveLinking)
static SCIP_RETCODE addSymmetryInformation(SCIP *scip, SYM_SYMTYPE symtype, SCIP_CONS *cons, SYM_GRAPH *graph, SCIP_Bool *success)
static SCIP_DECL_CONSEXITSOL(consExitsolLinking)
static SCIP_RETCODE catchEvent(SCIP *scip, SCIP_CONSDATA *consdata, SCIP_EVENTHDLR *eventhdlr, int pos)
static SCIP_RETCODE processRealBoundChg(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *cutoff, int *nchgbds, SCIP_Bool *mustcheck)
static SCIP_RETCODE consdataCreate(SCIP *scip, SCIP_EVENTHDLR *eventhdlr, SCIP_CONSDATA **consdata, SCIP_VAR *linkvar, SCIP_VAR **binvars, SCIP_Real *vals, int nbinvars)
static SCIP_RETCODE consdataCreateBinvars(SCIP *scip, SCIP_CONS *cons, SCIP_CONSDATA *consdata, SCIP_EVENTHDLR *eventhdlr, SCIP_Bool linearize)
static SCIP_DECL_EVENTEXEC(eventExecBinvar)
static SCIP_DECL_CONSGETVARS(consGetVarsLinking)
static SCIP_DECL_CONSSEPALP(consSepalpLinking)
static SCIP_DECL_CONSCHECK(consCheckLinking)
static SCIP_DECL_CONSPARSE(consParseLinking)
static SCIP_DECL_CONSPRESOL(consPresolLinking)
static SCIP_RETCODE tightenedLinkvar(SCIP *scip, SCIP_CONS *cons, SCIP_CONSDATA *consdata, SCIP_Bool *cutoff, int *nchgbds)
static SCIP_DECL_CONSPROP(consPropLinking)
#define CONSHDLR_PROPFREQ
static SCIP_RETCODE createRows(SCIP *scip, SCIP_CONS *cons)
static SCIP_DECL_CONSINITLP(consInitlpLinking)
static SCIP_DECL_CONSCOPY(consCopyLinking)
#define CONSHDLR_PRESOLTIMING
static SCIP_RETCODE delCoefPos(SCIP *scip, SCIP_EVENTHDLR *eventhdlr, SCIP_CONS *cons, int pos)
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 void consdataSort(SCIP_CONSDATA *consdata)
static SCIP_RETCODE addNlrow(SCIP *scip, SCIP_CONS *cons)
static SCIP_RETCODE separateCons(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool *cutoff, SCIP_Bool *separated, int *nchgbds)
#define CONSHDLR_EAGERFREQ
static SCIP_RETCODE conshdlrdataCreate(SCIP *scip, SCIP_CONSHDLRDATA **conshdlrdata, SCIP_EVENTHDLR *eventhdlr)
#define CONSHDLR_ENFOPRIORITY
static SCIP_DECL_CONSGETPERMSYMGRAPH(consGetPermsymGraphLinking)
#define CONSHDLR_DELAYSEPA
static SCIP_DECL_CONSLOCK(consLockLinking)
static SCIP_DECL_CONSENFOLP(consEnfolpLinking)
#define HASHSIZE_BINVARSCONS
static SCIP_DECL_CONSDELETE(consDeleteLinking)
static SCIP_DECL_CONSINITPRE(consInitpreLinking)
static SCIP_DECL_CONSFREE(consFreeLinking)
static SCIP_DECL_CONSSEPASOL(consSepasolLinking)
static SCIP_DECL_CONSGETNVARS(consGetNVarsLinking)
#define CONSHDLR_DELAYPROP
constraint handler for linking binary variables to a linking (continuous or integer) variable
Constraint handler for the set partitioning / packing / covering constraints .
int SCIPgetNBinvarsLinking(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPgetBinvarsLinking(SCIP *scip, SCIP_CONS *cons, SCIP_VAR ***binvars, int *nbinvars)
SCIP_Bool SCIPexistsConsLinking(SCIP *scip, SCIP_VAR *linkvar)
SCIP_VAR * SCIPgetLinkvarLinking(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPaddCoefLinear(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real val)
SCIP_CONS * SCIPgetConsLinking(SCIP *scip, SCIP_VAR *linkvar)
SCIP_RETCODE SCIPcreateConsLinking(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *linkvar, SCIP_VAR **binvars, SCIP_Real *vals, int nbinvars, 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 SCIPcreateConsLinear(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPcreateConsSetpart(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPcreateConsBasicLinking(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *linkvar, SCIP_VAR **binvars, SCIP_Real *vals, int nbinvars)
SCIP_Real * SCIPgetValsLinking(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPgetBinvarsDataLinking(SCIP_CONS *cons, SCIP_VAR ***binvars, SCIP_Real **vals, int *nbinvars)
SCIP_RETCODE SCIPincludeConshdlrLinking(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_Bool SCIPisStopped(SCIP *scip)
SCIP_STAGE SCIPgetStage(SCIP *scip)
SCIP_RETCODE SCIPaddVar(SCIP *scip, SCIP_VAR *var)
int SCIPgetNVars(SCIP *scip)
SCIP_RETCODE SCIPaddCons(SCIP *scip, SCIP_CONS *cons)
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)
SCIP_RETCODE SCIPhashmapRemove(SCIP_HASHMAP *hashmap, void *origin)
SCIP_RETCODE SCIPdelConsLocal(SCIP *scip, SCIP_CONS *cons)
void SCIPinfoMessage(SCIP *scip, FILE *file, 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 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 SCIPsetConshdlrEnable(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSENABLE((*consenable)))
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 SCIPsetConshdlrCopy(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), SCIP_DECL_CONSCOPY((*conscopy)))
SCIP_CONSHDLR * SCIPfindConshdlr(SCIP *scip, const char *name)
SCIP_RETCODE SCIPsetConshdlrGetSignedPermsymGraph(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH((*consgetsignedpermsymgraph)))
SCIP_RETCODE SCIPsetConshdlrExitsol(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSEXITSOL((*consexitsol)))
SCIP_RETCODE SCIPsetConshdlrInitlp(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITLP((*consinitlp)))
SCIP_RETCODE SCIPsetConshdlrInitsol(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITSOL((*consinitsol)))
SCIP_CONSHDLRDATA * SCIPconshdlrGetData(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPsetConshdlrTrans(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSTRANS((*constrans)))
SCIP_RETCODE SCIPsetConshdlrResprop(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSRESPROP((*consresprop)))
SCIP_RETCODE SCIPsetConshdlrGetNVars(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETNVARS((*consgetnvars)))
SCIP_RETCODE SCIPsetConshdlrActive(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSACTIVE((*consactive)))
SCIP_RETCODE SCIPsetConshdlrPrint(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRINT((*consprint)))
SCIP_CONSDATA * SCIPconsGetData(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsDynamic(SCIP_CONS *cons)
SCIP_CONSHDLR * SCIPconsGetHdlr(SCIP_CONS *cons)
SCIP_RETCODE SCIPenableCons(SCIP *scip, SCIP_CONS *cons)
SCIP_Bool SCIPconsIsInitial(SCIP_CONS *cons)
SCIP_RETCODE SCIPprintCons(SCIP *scip, SCIP_CONS *cons, FILE *file)
SCIP_Bool SCIPconsIsChecked(SCIP_CONS *cons)
SCIP_Bool 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_Bool SCIPconsIsEnabled(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_Bool SCIPconsIsStickingAtNode(SCIP_CONS *cons)
SCIP_RETCODE SCIPreleaseCons(SCIP *scip, SCIP_CONS **cons)
SCIP_Bool SCIPconsIsSeparated(SCIP_CONS *cons)
SCIP_RETCODE SCIPincConsAge(SCIP *scip, SCIP_CONS *cons)
SCIP_Bool SCIPconsIsRemovable(SCIP_CONS *cons)
SCIP_RETCODE SCIPaddRow(SCIP *scip, SCIP_ROW *row, SCIP_Bool forcecut, SCIP_Bool *infeasible)
SCIP_RETCODE SCIPincludeEventhdlrBasic(SCIP *scip, SCIP_EVENTHDLR **eventhdlrptr, const char *name, const char *desc, SCIP_DECL_EVENTEXEC((*eventexec)), SCIP_EVENTHDLRDATA *eventhdlrdata)
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_Bool SCIPhasCurrentNodeLP(SCIP *scip)
#define SCIPfreeBlockMemoryArray(scip, ptr, num)
#define SCIPallocBufferArray(scip, ptr, num)
#define SCIPreallocBufferArray(scip, ptr, num)
#define SCIPfreeBufferArray(scip, ptr)
#define SCIPduplicateBufferArray(scip, ptr, source, num)
#define SCIPallocBlockMemoryArray(scip, ptr, num)
#define SCIPfreeBlockMemory(scip, ptr)
#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 SCIPaddLinearCoefToNlRow(SCIP *scip, SCIP_NLROW *nlrow, SCIP_VAR *var, SCIP_Real val)
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 SCIPgetRowLPFeasibility(SCIP *scip, SCIP_ROW *row)
SCIP_Bool SCIProwIsInLP(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)
SCIP_Bool SCIPisFeasGE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisIntegral(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisFeasEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisFeasZero(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisInfinity(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisFeasNegative(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisFeasLE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisFeasIntegral(SCIP *scip, SCIP_Real val)
SCIP_Real SCIPfeastol(SCIP *scip)
SCIP_Bool SCIPisGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
int SCIPconvertRealToInt(SCIP *scip, SCIP_Real real)
SCIP_Bool SCIPisLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPinRepropagation(SCIP *scip)
int SCIPgetDepth(SCIP *scip)
SCIP_RETCODE SCIPlockVarCons(SCIP *scip, SCIP_VAR *var, SCIP_CONS *cons, SCIP_Bool lockdown, SCIP_Bool lockup)
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)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
SCIP_Real SCIPvarGetAggrConstant(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)
SCIP_Bool SCIPvarIsTransformed(SCIP_VAR *var)
SCIP_RETCODE SCIPaggregateVars(SCIP *scip, SCIP_VAR *varx, SCIP_VAR *vary, SCIP_Real scalarx, SCIP_Real scalary, SCIP_Real rhs, SCIP_Bool *infeasible, SCIP_Bool *redundant, SCIP_Bool *aggregated)
SCIP_RETCODE SCIPinferVarUbCons(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_CONS *infercons, int inferinfo, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
SCIP_Real SCIPvarGetAggrScalar(SCIP_VAR *var)
SCIP_VAR * SCIPvarGetProbvar(SCIP_VAR *var)
SCIP_RETCODE SCIPparseVarName(SCIP *scip, const char *str, SCIP_VAR **var, char **endptr)
SCIP_VARTYPE SCIPvarGetType(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbGlobal(SCIP_VAR *var)
int SCIPvarGetIndex(SCIP_VAR *var)
SCIP_RETCODE SCIPaddVarLocksType(SCIP *scip, SCIP_VAR *var, SCIP_LOCKTYPE locktype, int nlocksdown, int nlocksup)
SCIP_RETCODE SCIPunlockVarCons(SCIP *scip, SCIP_VAR *var, SCIP_CONS *cons, SCIP_Bool lockdown, SCIP_Bool lockup)
SCIP_Real SCIPgetVarUbAtIndex(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_RETCODE SCIPreleaseVar(SCIP *scip, SCIP_VAR **var)
SCIP_RETCODE SCIPparseVarsLinearsum(SCIP *scip, const char *str, SCIP_VAR **vars, SCIP_Real *vals, int *nvars, int varssize, int *requiredsize, char **endptr, SCIP_Bool *success)
SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)
SCIP_RETCODE SCIPcreateVar(SCIP *scip, SCIP_VAR **var, const char *name, SCIP_Real lb, SCIP_Real ub, SCIP_Real obj, SCIP_VARTYPE vartype, SCIP_Bool initial, SCIP_Bool removable, SCIP_DECL_VARDELORIG((*vardelorig)), SCIP_DECL_VARTRANS((*vartrans)), SCIP_DECL_VARDELTRANS((*vardeltrans)), SCIP_DECL_VARCOPY((*varcopy)), SCIP_VARDATA *vardata)
SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)
SCIP_RETCODE SCIPfixVar(SCIP *scip, SCIP_VAR *var, SCIP_Real fixedval, SCIP_Bool *infeasible, SCIP_Bool *fixed)
SCIP_RETCODE SCIPinferVarLbCons(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_CONS *infercons, int inferinfo, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
SCIP_Real SCIPgetVarLbAtIndex(SCIP *scip, 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 SCIPwriteVarsLinearsum(SCIP *scip, FILE *file, SCIP_VAR **vars, SCIP_Real *vals, int nvars, SCIP_Bool type)
SCIP_RETCODE SCIPgetTransformedVar(SCIP *scip, SCIP_VAR *var, SCIP_VAR **transvar)
SCIP_RETCODE SCIPcaptureVar(SCIP *scip, SCIP_VAR *var)
SCIP_VAR * SCIPvarGetAggrVar(SCIP_VAR *var)
void SCIPsortRealPtr(SCIP_Real *realarray, void **ptrarray, int len)
int SCIPsnprintf(char *t, int len, const char *s,...)
SCIP_RETCODE SCIPskipSpace(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)
BMS_BLKMEM * SCIPblkmem(SCIP *scip)
public methods for managing constraints
public methods for managing events
public methods for LP management
public methods for message output
public data structures and miscellaneous methods
methods for sorting joint arrays of various types
public methods for problem variables
public methods for conflict handler plugins and conflict analysis
public methods for constraint handler plugins and constraints
public methods for problem copies
public methods for cuts and aggregation rows
public methods for event handler plugins and event handlers
public methods for the LP relaxation, rows and columns
public methods for memory management
public methods for message handling
public methods for nonlinear relaxation
public methods for numerical tolerances
public methods for SCIP parameter handling
public methods for global and local (sub)problems
public methods for the probing mode
public methods for solutions
public methods for the branch-and-bound tree
public methods for SCIP variables
structs for symmetry computations
methods for dealing with symmetry detection graphs
@ SCIP_CONFTYPE_PROPAGATION
struct SCIP_ConshdlrData SCIP_CONSHDLRDATA
struct SCIP_ConsData SCIP_CONSDATA
#define SCIP_EVENTTYPE_BOUNDCHANGED
struct SCIP_EventData SCIP_EVENTDATA
#define SCIP_EVENTTYPE_UBTIGHTENED
#define SCIP_EVENTTYPE_LBRELAXED
#define SCIP_EVENTTYPE_LBTIGHTENED
#define SCIP_EVENTTYPE_UBRELAXED
enum SCIP_Result SCIP_RESULT
enum SCIP_Retcode SCIP_RETCODE
@ SCIP_STAGE_TRANSFORMING
enum SYM_Symtype SYM_SYMTYPE
@ SCIP_VARTYPE_CONTINUOUS
@ SCIP_VARSTATUS_MULTAGGR
@ SCIP_VARSTATUS_AGGREGATED
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