47 #define AGERESETAVG_INIT 1000.0 48 #define AGERESETAVG_MIN 100.0 49 #define AGERESETAVG_DECAY 0.0005 50 #define AGERESETAVG_AGELIMIT 2.0 52 #define AGERESETAVG_OBSOLETEAGE 1.8 72 assert(conshdlr != NULL);
83 assert(num <= conshdlr->consssize);
96 assert(conshdlr != NULL);
107 assert(num <= conshdlr->initconsssize);
120 assert(conshdlr != NULL);
131 assert(num <= conshdlr->sepaconsssize);
144 assert(conshdlr != NULL);
155 assert(num <= conshdlr->enfoconsssize);
168 assert(conshdlr != NULL);
179 assert(num <= conshdlr->checkconsssize);
192 assert(conshdlr != NULL);
203 assert(num <= conshdlr->propconsssize);
216 assert(conshdlr != NULL);
227 assert(num <= conshdlr->updateconsssize);
239 #define checkConssArrays(conshdlr) 241 #ifdef CHECKCONSARRAYS 242 #undef checkConssArrays 251 assert(conshdlr != NULL);
254 for( c = 0; c < conshdlr->
nconss; ++c )
256 assert(conshdlr->
conss[c] != NULL);
258 assert(conshdlr->
conss[c]->
active == (c < conshdlr->nactiveconss));
266 assert(c < conshdlr->ninitconsskept || conshdlr->
initconss[c]->
active);
328 assert(conshdlr != NULL);
340 assert(conshdlr != NULL);
353 assert(cons != NULL);
357 && ((set->cons_agelimit > 0 && cons->
age > set->cons_agelimit)
368 assert(cons != NULL);
372 && ((set->cons_obsoleteage > 0 && cons->
age > set->cons_obsoleteage)
387 assert(conshdlr != NULL);
392 assert(cons != NULL);
517 assert(conshdlr != NULL);
522 assert(cons != NULL);
622 assert(conshdlr != NULL);
625 assert(cons != NULL);
697 assert(conshdlr != NULL);
700 assert(cons != NULL);
768 assert(conshdlr != NULL);
769 assert(cons != NULL);
775 assert(cons->
scip == set->scip);
793 assert(conshdlr != NULL);
794 assert(cons != NULL);
817 assert(conshdlr != NULL);
818 assert(cons != NULL);
851 assert(conshdlr != NULL);
852 assert(cons != NULL);
858 if( delpos < conshdlr->ninitconsskept )
866 if( delpos < conshdlr->ninitconss-1 )
887 assert(conshdlr != NULL);
889 assert(cons != NULL);
897 assert(cons->
scip == set->scip);
930 assert(conshdlr != NULL);
932 assert(cons != NULL);
943 assert(0 <= delpos && delpos < conshdlr->nusefulsepaconss);
945 if( delpos < conshdlr->lastnusefulsepaconss )
955 assert(conshdlr->
nusefulsepaconss <= delpos && delpos < conshdlr->nsepaconss);
956 if( delpos < conshdlr->nsepaconss-1 )
977 assert(conshdlr != NULL);
979 assert(cons != NULL);
986 assert(cons->
scip == set->scip);
1033 assert(conshdlr != NULL);
1035 assert(cons != NULL);
1036 assert(cons->
conshdlr == conshdlr);
1044 assert(0 <= delpos && delpos < conshdlr->nusefulenfoconss);
1046 if( delpos < conshdlr->lastnusefulenfoconss )
1064 assert(conshdlr->
nusefulenfoconss <= delpos && delpos < conshdlr->nenfoconss);
1065 if( delpos < conshdlr->nenfoconss-1 )
1086 assert(conshdlr != NULL);
1088 assert(cons != NULL);
1089 assert(cons->
conshdlr == conshdlr);
1092 assert(cons->
check);
1094 assert(
set != NULL);
1095 assert(cons->
scip == set->scip);
1110 assert(0 <= insertpos && insertpos <= conshdlr->ncheckconss);
1129 assert(conshdlr != NULL);
1131 assert(cons != NULL);
1132 assert(cons->
conshdlr == conshdlr);
1135 assert(cons->
check);
1141 assert(0 <= delpos && delpos < conshdlr->nusefulcheckconss);
1147 assert(conshdlr->
nusefulcheckconss <= delpos && delpos < conshdlr->ncheckconss);
1148 if( delpos < conshdlr->ncheckconss-1 )
1169 assert(conshdlr != NULL);
1171 assert(cons != NULL);
1172 assert(cons->
conshdlr == conshdlr);
1179 assert(
set != NULL);
1180 assert(cons->
scip == set->scip);
1224 assert(conshdlr != NULL);
1226 assert(cons != NULL);
1227 assert(cons->
conshdlr == conshdlr);
1248 assert(0 <= delpos && delpos < conshdlr->nusefulpropconss);
1250 if( delpos < conshdlr->lastnusefulpropconss )
1260 assert(conshdlr->
nusefulpropconss <= delpos && delpos < conshdlr->npropconss);
1262 if( delpos < conshdlr->npropconss-1 )
1282 assert(conshdlr != NULL);
1284 assert(cons != NULL);
1285 assert(cons->
conshdlr == conshdlr);
1288 assert(
set != NULL);
1289 assert(cons->
scip == set->scip);
1291 SCIPsetDebugMsg(
set,
"enable separation of constraint <%s> in constraint handler <%s>\n", cons->
name, conshdlr->
name);
1312 assert(conshdlr != NULL);
1314 assert(cons != NULL);
1315 assert(cons->
conshdlr == conshdlr);
1319 SCIPdebugMessage(
"disable separation of constraint <%s> in constraint handler <%s>\n", cons->
name, conshdlr->
name);
1342 assert(conshdlr != NULL);
1344 assert(cons != NULL);
1345 assert(cons->
conshdlr == conshdlr);
1348 assert(
set != NULL);
1349 assert(cons->
scip == set->scip);
1351 SCIPsetDebugMsg(
set,
"enable propagation of constraint <%s> in constraint handler <%s>\n", cons->
name, conshdlr->
name);
1372 assert(conshdlr != NULL);
1374 assert(cons != NULL);
1375 assert(cons->
conshdlr == conshdlr);
1379 SCIPdebugMessage(
"disable propagation of constraint <%s> in constraint handler <%s>\n", cons->
name, conshdlr->
name);
1403 assert(conshdlr != NULL);
1408 assert(
set != NULL);
1409 assert(stat != NULL);
1410 assert(cons != NULL);
1411 assert(cons->
scip == set->scip);
1412 assert(cons->
conshdlr == conshdlr);
1446 if( conshdlr->consenable != NULL )
1448 SCIP_CALL( conshdlr->consenable(set->scip, conshdlr, cons) );
1465 assert(conshdlr != NULL);
1470 assert(
set != NULL);
1471 assert(stat != NULL);
1472 assert(cons != NULL);
1473 assert(cons->
scip == set->scip);
1474 assert(cons->
conshdlr == conshdlr);
1485 if( conshdlr->consdisable != NULL )
1487 SCIP_CALL( conshdlr->consdisable(set->scip, conshdlr, cons) );
1533 assert(conshdlr != NULL);
1538 assert(
set != NULL);
1539 assert(stat != NULL);
1540 assert(cons != NULL);
1541 assert(cons->
scip == set->scip);
1542 assert(cons->
conshdlr == conshdlr);
1553 assert(depth >= -1);
1555 SCIPsetDebugMsg(
set,
"activate constraint <%s> in constraint handler <%s> (depth %d, focus=%u)\n",
1556 cons->
name, conshdlr->
name, depth, focusnode);
1582 if( conshdlr->consactive != NULL )
1584 SCIP_CALL( conshdlr->consactive(set->scip, conshdlr, cons) );
1606 assert(conshdlr != NULL);
1611 assert(
set != NULL);
1612 assert(stat != NULL);
1613 assert(cons != NULL);
1614 assert(cons->
scip == set->scip);
1615 assert(cons->
conshdlr == conshdlr);
1632 if( conshdlr->consdeactive != NULL )
1634 SCIP_CALL( conshdlr->consdeactive(set->scip, conshdlr, cons) );
1691 assert(conshdlr != NULL);
1698 SCIPsetDebugMsg(
set,
"processing %d constraints that have to be updated in constraint handler <%s>\n",
1704 assert(cons != NULL);
1705 assert(cons->
conshdlr == conshdlr);
1714 SCIPsetDebugMsg(
set,
" -> constraint <%s>: insert=%u, activate=%u, deactivate=%u, enable=%u, disable=%u, sepaenable=%u, sepadisable=%u, propenable=%u, propdisable=%u, obsolete=%u, free=%u (consdata=%p)\n",
1814 assert(cons->
nuses == 1);
1879 assert(conshdlr != NULL);
1881 SCIPdebugMessage(
"constraint updates of constraint handler <%s> will be delayed (count:%d)\n",
1898 assert(conshdlr != NULL);
1901 SCIPsetDebugMsg(
set,
"constraint updates of constraint handler <%s> will be processed immediately (count:%d)\n",
1923 assert(conshdlr != NULL);
1924 assert(
set != NULL);
1925 assert(cons != NULL);
1926 assert(cons->
conshdlr == conshdlr);
1930 SCIPsetDebugMsg(
set,
"constraint <%s> of age %g has to be updated in constraint handler <%s> (consdata=%p)\n",
1972 assert(conshdlr != NULL);
1973 assert(
set != NULL);
1974 assert(valid != NULL);
1975 assert(set->scip != NULL);
1977 if( conshdlr->conshdlrcopy != NULL )
1980 SCIP_CALL( conshdlr->conshdlrcopy(set->scip, conshdlr, valid) );
2045 assert(conshdlr != NULL);
2046 assert(name != NULL);
2047 assert(desc != NULL);
2048 assert(conssepalp != NULL || conssepasol != NULL || sepafreq == -1);
2049 assert(consprop != NULL || propfreq == -1);
2050 assert(eagerfreq >= -1);
2051 assert(!needscons || ((conshdlrcopy == NULL) == (conscopy == NULL)));
2058 SCIPmessagePrintError(
"ERROR: 'PRESOLDELAY'-flag no longer available since SCIP 3.2, use an appropriate " 2059 "'SCIP_PRESOLTIMING' for <%s> constraint handler instead.\n", name);
2065 assert((consgetvars != NULL) == (consgetnvars != NULL));
2070 (*conshdlr)->sepapriority = sepapriority;
2071 (*conshdlr)->enfopriority = enfopriority;
2072 (*conshdlr)->checkpriority = checkpriority;
2073 (*conshdlr)->sepafreq = sepafreq;
2074 (*conshdlr)->propfreq = propfreq;
2075 (*conshdlr)->eagerfreq = eagerfreq;
2076 (*conshdlr)->maxprerounds = maxprerounds;
2077 (*conshdlr)->conshdlrcopy = conshdlrcopy;
2078 (*conshdlr)->consfree = consfree;
2079 (*conshdlr)->consinit = consinit;
2080 (*conshdlr)->consexit = consexit;
2081 (*conshdlr)->consinitpre = consinitpre;
2082 (*conshdlr)->consexitpre = consexitpre;
2083 (*conshdlr)->consinitsol = consinitsol;
2084 (*conshdlr)->consexitsol = consexitsol;
2085 (*conshdlr)->consdelete = consdelete;
2086 (*conshdlr)->constrans = constrans;
2087 (*conshdlr)->consinitlp = consinitlp;
2088 (*conshdlr)->conssepalp = conssepalp;
2089 (*conshdlr)->conssepasol = conssepasol;
2090 (*conshdlr)->consenfolp = consenfolp;
2091 (*conshdlr)->consenforelax = consenforelax;
2092 (*conshdlr)->consenfops = consenfops;
2093 (*conshdlr)->conscheck = conscheck;
2094 (*conshdlr)->consprop = consprop;
2095 (*conshdlr)->conspresol = conspresol;
2096 (*conshdlr)->consresprop = consresprop;
2097 (*conshdlr)->conslock = conslock;
2098 (*conshdlr)->consactive = consactive;
2099 (*conshdlr)->consdeactive = consdeactive;
2100 (*conshdlr)->consenable = consenable;
2101 (*conshdlr)->consdisable = consdisable;
2102 (*conshdlr)->consprint = consprint;
2103 (*conshdlr)->consdelvars = consdelvars;
2104 (*conshdlr)->conscopy = conscopy;
2105 (*conshdlr)->consparse = consparse;
2106 (*conshdlr)->consgetvars = consgetvars;
2107 (*conshdlr)->consgetnvars = consgetnvars;
2108 (*conshdlr)->conshdlrdata = conshdlrdata;
2109 (*conshdlr)->consgetdivebdchgs = NULL;
2110 (*conshdlr)->conss = NULL;
2111 (*conshdlr)->consssize = 0;
2112 (*conshdlr)->nconss = 0;
2113 (*conshdlr)->nactiveconss = 0;
2114 (*conshdlr)->maxnactiveconss = 0;
2115 (*conshdlr)->startnactiveconss = 0;
2116 (*conshdlr)->initconss = NULL;
2117 (*conshdlr)->initconsssize = 0;
2118 (*conshdlr)->ninitconss = 0;
2119 (*conshdlr)->ninitconsskept = 0;
2120 (*conshdlr)->sepaconss = NULL;
2121 (*conshdlr)->sepaconsssize = 0;
2122 (*conshdlr)->nsepaconss = 0;
2123 (*conshdlr)->nusefulsepaconss = 0;
2124 (*conshdlr)->enfoconss = NULL;
2125 (*conshdlr)->enfoconsssize = 0;
2126 (*conshdlr)->nenfoconss = 0;
2127 (*conshdlr)->nusefulenfoconss = 0;
2128 (*conshdlr)->checkconss = NULL;
2129 (*conshdlr)->checkconsssize = 0;
2130 (*conshdlr)->ncheckconss = 0;
2131 (*conshdlr)->nusefulcheckconss = 0;
2132 (*conshdlr)->propconss = NULL;
2133 (*conshdlr)->propconsssize = 0;
2134 (*conshdlr)->npropconss = 0;
2135 (*conshdlr)->nusefulpropconss = 0;
2136 (*conshdlr)->nmarkedpropconss = 0;
2137 (*conshdlr)->updateconss = NULL;
2138 (*conshdlr)->updateconsssize = 0;
2139 (*conshdlr)->nupdateconss = 0;
2140 (*conshdlr)->nenabledconss = 0;
2141 (*conshdlr)->lastnusefulpropconss = 0;
2142 (*conshdlr)->lastnusefulsepaconss = 0;
2143 (*conshdlr)->lastnusefulenfoconss = 0;
2145 (*conshdlr)->storedpropconss = NULL;
2146 (*conshdlr)->storedpropconsssize = 0;
2147 (*conshdlr)->storednmarkedpropconss = 0;
2148 (*conshdlr)->storedpropdomchgcount = 0;
2161 (*conshdlr)->nsepacalls = 0;
2162 (*conshdlr)->nenfolpcalls = 0;
2163 (*conshdlr)->nenfopscalls = 0;
2164 (*conshdlr)->nenforelaxcalls = 0;
2165 (*conshdlr)->npropcalls = 0;
2166 (*conshdlr)->ncheckcalls = 0;
2167 (*conshdlr)->nrespropcalls = 0;
2168 (*conshdlr)->ncutoffs = 0;
2169 (*conshdlr)->ncutsfound = 0;
2170 (*conshdlr)->ncutsapplied = 0;
2171 (*conshdlr)->nconssfound = 0;
2172 (*conshdlr)->ndomredsfound = 0;
2173 (*conshdlr)->nchildren = 0;
2174 (*conshdlr)->lastpropdomchgcount = -1;
2175 (*conshdlr)->lastsepalpcount = -1;
2176 (*conshdlr)->lastenfolplpcount = -1;
2177 (*conshdlr)->lastenfolpdomchgcount = -1;
2178 (*conshdlr)->lastenfopsdomchgcount = -1;
2179 (*conshdlr)->lastenforelaxdomchgcount = -1;
2180 (*conshdlr)->lastenforelaxrelaxcount = -1;
2181 (*conshdlr)->lastenfolpnode = -1;
2182 (*conshdlr)->lastenfopsnode = -1;
2186 (*conshdlr)->lastnfixedvars = 0;
2187 (*conshdlr)->lastnaggrvars = 0;
2188 (*conshdlr)->lastnchgvartypes = 0;
2189 (*conshdlr)->lastnchgbds = 0;
2190 (*conshdlr)->lastnaddholes = 0;
2191 (*conshdlr)->lastndelconss = 0;
2192 (*conshdlr)->lastnaddconss = 0;
2193 (*conshdlr)->lastnupgdconss = 0;
2194 (*conshdlr)->lastnchgcoefs = 0;
2195 (*conshdlr)->lastnchgsides = 0;
2196 (*conshdlr)->nfixedvars = 0;
2197 (*conshdlr)->naggrvars = 0;
2198 (*conshdlr)->nchgvartypes = 0;
2199 (*conshdlr)->nchgbds = 0;
2200 (*conshdlr)->naddholes = 0;
2201 (*conshdlr)->ndelconss = 0;
2202 (*conshdlr)->naddconss = 0;
2203 (*conshdlr)->nupgdconss = 0;
2204 (*conshdlr)->nchgcoefs = 0;
2205 (*conshdlr)->nchgsides = 0;
2206 (*conshdlr)->npresolcalls = 0;
2207 (*conshdlr)->delayupdatecount = 0;
2209 (*conshdlr)->needscons = needscons;
2210 (*conshdlr)->sepalpwasdelayed =
FALSE;
2211 (*conshdlr)->sepasolwasdelayed =
FALSE;
2212 (*conshdlr)->propwasdelayed =
FALSE;
2213 (*conshdlr)->duringsepa =
FALSE;
2214 (*conshdlr)->duringprop =
FALSE;
2215 (*conshdlr)->initialized =
FALSE;
2220 "frequency for separating cuts (-1: never, 0: only in root node)",
2225 "frequency for propagating domains (-1: never, 0: only in root node)",
2235 "frequency for using all instead of only the useful constraints in separation, propagation and enforcement (-1: never, 0: only in first evaluation)",
2240 "maximal number of presolving rounds the constraint handler participates in (-1: no limit)",
2241 &(*conshdlr)->maxprerounds,
TRUE, maxprerounds, -1, INT_MAX, NULL, NULL) );
2245 "should separation method be delayed, if other separators found cuts?",
2246 &(*conshdlr)->delaysepa,
TRUE, delaysepa, NULL, NULL) );
2250 "should propagation method be delayed, if other propagators found reductions?",
2251 &(*conshdlr)->delayprop,
TRUE, delayprop, NULL, NULL) );
2254 (void)
SCIPsnprintf(paramdesc,
SCIP_MAXSTRLEN,
"timing mask of the constraint handler's presolving method (%u:FAST, %u:MEDIUM, %u:EXHAUSTIVE, %u:FINAL)",
2257 (
int*)&(*conshdlr)->presoltiming,
TRUE, presoltiming, (
int)
SCIP_PRESOLTIMING_FAST, (
int) SCIP_PRESOLTIMING_MAX, NULL, NULL) );
2268 assert(conshdlr != NULL);
2269 assert(*conshdlr != NULL);
2270 assert(!(*conshdlr)->initialized);
2271 assert((*conshdlr)->nconss == 0);
2272 assert(
set != NULL);
2275 if( (*conshdlr)->consfree != NULL )
2277 SCIP_CALL( (*conshdlr)->consfree(set->scip, *conshdlr) );
2314 assert(conshdlr != NULL);
2315 assert(
set != NULL);
2323 if( set->misc_resetstat )
2393 if( conshdlr->consinit != NULL )
2427 assert(conshdlr != NULL);
2428 assert(
set != NULL);
2437 if( conshdlr->consexit != NULL )
2470 assert(conshdlr != NULL);
2471 assert(
set != NULL);
2504 if( conshdlr->consinitpre != NULL )
2528 if( stat->
nruns >= 2 )
2532 for( c = 0; c < conshdlr->
nconss; ++c )
2551 for( c = 0; c < conshdlr->
nconss; ++c )
2571 assert(conshdlr != NULL);
2572 assert(
set != NULL);
2575 if( conshdlr->consexitpre != NULL )
2611 assert(conshdlr != NULL);
2612 assert(
set != NULL);
2613 assert(stat != NULL);
2619 if( conshdlr->consinitsol != NULL )
2652 assert(conshdlr != NULL);
2653 assert(
set != NULL);
2656 if( conshdlr->consexitsol != NULL )
2668 SCIP_CALL( conshdlr->consexitsol(set->scip, conshdlr, conshdlr->
conss, conshdlr->
nconss, restart) );
2693 assert(conshdlr != NULL);
2694 assert(cutoff != NULL);
2701 if( conshdlr->consinitlp != NULL )
2707 SCIPsetDebugMsg(
set,
"initializing LP with %d initial constraints of handler <%s> (ninitconss=%d, kept=%d, initkept=%u)\n",
2752 assert(currentdepth >= 0);
2799 assert(conshdlr != NULL);
2804 assert(stat != NULL);
2807 assert(
set != NULL);
2808 assert(result != NULL);
2812 if( conshdlr->conssepalp != NULL
2813 && ((depth == 0 && conshdlr->
sepafreq == 0)
2818 if( !conshdlr->
delaysepa || execdelayed )
2831 nusefulconss = nconss;
2841 assert(firstcons >= 0);
2842 assert(firstcons + nconss <= conshdlr->nsepaconss);
2843 assert(nusefulconss <= nconss);
2853 int oldnactiveconss;
2854 int lastnusefulsepaconss;
2856 SCIPsetDebugMsg(
set,
"separating constraints %d to %d of %d constraints of handler <%s> (%s LP solution)\n",
2857 firstcons, firstcons + nconss - 1, conshdlr->
nsepaconss, conshdlr->
name,
2861 lastsepalpcount = stat->
lpcount;
2865 conss = &(conshdlr->
sepaconss[firstcons]);
2875 nusefulconss = nconss;
2888 SCIP_CALL( conshdlr->conssepalp(set->scip, conshdlr, conss, nconss, nusefulconss, result) );
2889 SCIPsetDebugMsg(
set,
" -> separating LP returned result <%d>\n", *result);
2925 SCIPerrorMessage(
"LP separation method of constraint handler <%s> returned invalid result <%d>\n",
2926 conshdlr->
name, *result);
2933 SCIPsetDebugMsg(
set,
"LP separation method of constraint handler <%s> was delayed\n", conshdlr->
name);
2957 assert(conshdlr != NULL);
2962 assert(
set != NULL);
2963 assert(stat != NULL);
2964 assert(result != NULL);
2968 if( conshdlr->conssepasol != NULL
2969 && ((depth == 0 && conshdlr->
sepafreq == 0)
2974 if( !conshdlr->
delaysepa || execdelayed )
2982 assert(nusefulconss <= nconss);
2984 if( nconss > 0 || !conshdlr->
needscons )
2990 int oldnactiveconss;
2992 SCIPsetDebugMsg(
set,
"separating %d constraints of handler <%s> (primal solution %p)\n",
2993 nconss, conshdlr->
name, (
void*)sol);
3006 nusefulconss = nconss;
3019 SCIP_CALL( conshdlr->conssepasol(set->scip, conshdlr, conss, nconss, nusefulconss, sol, result) );
3020 SCIPsetDebugMsg(
set,
" -> separating sol returned result <%d>\n", *result);
3052 SCIPerrorMessage(
"SOL separation method of constraint handler <%s> returned invalid result <%d>\n",
3053 conshdlr->
name, *result);
3060 SCIPsetDebugMsg(
set,
"SOL separation method of constraint handler <%s> was delayed\n", conshdlr->
name);
3092 assert(conshdlr != NULL);
3097 assert(stat != NULL);
3101 assert(
set != NULL);
3102 assert(tree != NULL);
3104 assert(relaxsol != NULL);
3105 assert(result != NULL);
3118 && ( strcmp(conshdlr->
name,
"integral") != 0 )
3133 lastinfeasible =
TRUE;
3136 lastinfeasible =
FALSE;
3142 nusefulconss = nconss;
3144 relaxchanged =
FALSE;
3152 relaxchanged =
TRUE;
3153 lastinfeasible =
FALSE;
3155 assert(firstcons >= 0);
3156 assert(firstcons + nconss <= conshdlr->nenfoconss);
3157 assert(nusefulconss <= nconss);
3160 if( nconss > 0 || (!conshdlr->
needscons && relaxchanged) )
3166 int oldnactiveconss;
3168 assert(conshdlr->consenforelax != NULL);
3170 SCIPdebugMessage(
"enforcing constraints %d to %d of %d constraints of handler <%s> (%s relaxation solution)\n",
3171 firstcons, firstcons + nconss - 1, conshdlr->
nenfoconss, conshdlr->
name, relaxchanged ?
"new" :
"old");
3180 conss = &(conshdlr->
enfoconss[firstcons]);
3190 nusefulconss = nconss;
3202 SCIP_CALL( conshdlr->consenforelax(set->scip, relaxsol, conshdlr, conss, nconss, nusefulconss, solinfeasible, result) );
3216 SCIPerrorMessage(
"enforcing method of constraint handler <%s> for relaxation returned an invalid result %d\n",
3217 conshdlr->
name, *result);
3254 SCIPerrorMessage(
"enforcing method of constraint handler <%s> for relaxation solutions returned invalid result <%d>\n",
3255 conshdlr->
name, *result);
3284 assert(conshdlr != NULL);
3289 assert(stat != NULL);
3294 assert(
set != NULL);
3295 assert(tree != NULL);
3297 assert(result != NULL);
3301 if( conshdlr->consenfolp != NULL )
3323 lastinfeasible =
FALSE;
3328 lastinfeasible =
TRUE;
3335 nusefulconss = nconss;
3346 lastinfeasible =
FALSE;
3348 assert(firstcons >= 0);
3349 assert(firstcons + nconss <= conshdlr->nenfoconss);
3350 assert(nusefulconss <= nconss);
3353 if( nconss > 0 || (!conshdlr->
needscons && lpchanged) )
3359 int oldnactiveconss;
3361 SCIPsetDebugMsg(
set,
"enforcing constraints %d to %d of %d constraints of handler <%s> (%s LP solution)\n",
3362 firstcons, firstcons + nconss - 1, conshdlr->
nenfoconss, conshdlr->
name, lpchanged ?
"new" :
"old");
3371 conss = &(conshdlr->
enfoconss[firstcons]);
3381 nusefulconss = nconss;
3393 SCIP_CALL( conshdlr->consenfolp(set->scip, conshdlr, conss, nconss, nusefulconss, solinfeasible, result) );
3394 SCIPsetDebugMsg(
set,
" -> enforcing returned result <%d>\n", *result);
3433 SCIPerrorMessage(
"enforcing method of constraint handler <%s> for LP solutions returned invalid result <%d>\n",
3434 conshdlr->
name, *result);
3460 assert(conshdlr != NULL);
3461 assert(
set != NULL);
3462 assert(diveset != NULL);
3463 assert(sol != NULL);
3464 assert(success != NULL);
3465 assert(infeasible != NULL);
3467 if( conshdlr->consgetdivebdchgs != NULL )
3469 SCIP_CALL( conshdlr->consgetdivebdchgs(set->scip, conshdlr, diveset, sol, success, infeasible) );
3491 assert(conshdlr != NULL);
3496 assert(stat != NULL);
3500 assert(
set != NULL);
3501 assert(tree != NULL);
3503 assert(result != NULL);
3513 if( conshdlr->consenfops != NULL )
3540 lastinfeasible =
TRUE;
3543 lastinfeasible =
FALSE;
3549 nusefulconss = nconss;
3560 lastinfeasible =
FALSE;
3562 assert(firstcons >= 0);
3563 assert(firstcons + nconss <= conshdlr->nenfoconss);
3564 assert(nusefulconss <= nconss);
3567 if( nconss > 0 || (!conshdlr->
needscons && pschanged) )
3573 SCIPsetDebugMsg(
set,
"enforcing constraints %d to %d of %d constraints of handler <%s> (%s pseudo solution, objinfeasible=%u)\n",
3574 firstcons, firstcons + nconss - 1, conshdlr->
nenfoconss, conshdlr->
name, pschanged ?
"new" :
"old", objinfeasible);
3582 conss = &(conshdlr->
enfoconss[firstcons]);
3590 nusefulconss = nconss;
3602 SCIP_CALL( conshdlr->consenfops(set->scip, conshdlr, conss, nconss, nusefulconss, solinfeasible, objinfeasible, result) );
3603 SCIPsetDebugMsg(
set,
" -> enforcing returned result <%d>\n", *result);
3614 else if( !objinfeasible )
3616 SCIPerrorMessage(
"enforcing method of constraint handler <%s> for pseudo solutions was skipped, even though the solution was not objective-infeasible\n",
3656 SCIPerrorMessage(
"enforcing method of constraint handler <%s> for pseudo solutions returned invalid result <%d>\n",
3657 conshdlr->
name, *result);
3687 assert(conshdlr != NULL);
3692 assert(
set != NULL);
3693 assert(result != NULL);
3712 sol, checkintegrality, checklprows, printreason, completely, result) );
3727 SCIPerrorMessage(
"feasibility check of constraint handler <%s> returned invalid result <%d>\n", conshdlr->
name, *result);
3749 assert(conshdlr != NULL);
3754 assert(stat != NULL);
3757 assert(
set != NULL);
3759 assert(result != NULL);
3763 if( conshdlr->consprop != NULL
3765 && ((depth == 0 && conshdlr->
propfreq == 0)
3770 if( !conshdlr->
delayprop || execdelayed )
3774 int nmarkedpropconss;
3784 nusefulconss = nconss;
3794 assert(firstcons >= 0);
3795 assert(firstcons + nconss <= conshdlr->npropconss);
3796 assert(nusefulconss <= nconss);
3801 if( nconss > 0 || fullpropagation
3808 int lastnusefulpropconss;
3810 SCIPsetDebugMsg(
set,
"propagating constraints %d to %d of %d constraints of handler <%s> (%s pseudo solution, %d useful)\n",
3811 firstcons, firstcons + nconss - 1, conshdlr->
npropconss, conshdlr->
name,
3819 conss = &(conshdlr->
propconss[firstcons]);
3827 nusefulconss = nconss;
3837 if( instrongbranching )
3842 assert(nusefulconss <= nconss);
3843 assert(nmarkedpropconss <= nconss);
3846 SCIP_CALL( conshdlr->consprop(set->scip, conshdlr, conss, nconss, nusefulconss, nmarkedpropconss, proptiming, result) );
3847 SCIPsetDebugMsg(
set,
" -> propagation returned result <%d>\n", *result);
3850 if( instrongbranching )
3887 SCIPerrorMessage(
"propagation method of constraint handler <%s> returned invalid result <%d>\n",
3888 conshdlr->
name, *result);
3895 SCIPsetDebugMsg(
set,
"propagation method of constraint handler <%s> was delayed\n", conshdlr->
name);
3927 assert(conshdlr != NULL);
3932 assert(
set != NULL);
3933 assert(nfixedvars != NULL);
3934 assert(naggrvars != NULL);
3935 assert(nchgvartypes != NULL);
3936 assert(nchgbds != NULL);
3937 assert(naddholes != NULL);
3938 assert(ndelconss != NULL);
3939 assert(naddconss != NULL);
3940 assert(nupgdconss != NULL);
3941 assert(nchgcoefs != NULL);
3942 assert(nchgsides != NULL);
3943 assert(result != NULL);
3947 if( conshdlr->conspresol != NULL
3949 && (conshdlr->
maxprerounds == -1 || nrounds < conshdlr->maxprerounds ) )
3958 int nnewchgvartypes;
4002 nnewfixedvars, nnewaggrvars, nnewchgvartypes, nnewchgbds, nnewholes,
4003 nnewdelconss, nnewaddconss, nnewupgdconss, nnewchgcoefs, nnewchgsides,
4004 nfixedvars, naggrvars, nchgvartypes, nchgbds, naddholes,
4005 ndelconss, naddconss, nupgdconss, nchgcoefs, nchgsides, result) );
4033 SCIPerrorMessage(
"presolving method of constraint handler <%s> returned invalid result <%d>\n",
4034 conshdlr->
name, *result);
4057 assert(conshdlr != NULL);
4058 assert(
set != NULL);
4060 if( conshdlr->consdelvars != NULL )
4062 SCIPsetDebugMsg(
set,
"deleting variables in constraints of handler <%s>\n", conshdlr->
name);
4086 assert(conshdlr != NULL);
4087 assert(conshdlr->conslock != NULL);
4090 SCIP_CALL( conshdlr->conslock(set->scip, conshdlr, NULL, +1, 0) );
4101 assert(conshdlr != NULL);
4102 assert(conshdlr->conslock != NULL);
4105 SCIP_CALL( conshdlr->conslock(set->scip, conshdlr, NULL, -1, 0) );
4115 assert(conshdlr != NULL);
4117 return conshdlr->
name;
4125 assert(conshdlr != NULL);
4127 return conshdlr->
desc;
4135 assert(conshdlr != NULL);
4146 assert(conshdlr != NULL);
4161 assert(conshdlr != NULL);
4163 assert(conssepalp != NULL || conssepasol != NULL || sepafreq == -1);
4165 conshdlr->conssepalp = conssepalp;
4166 conshdlr->conssepasol = conssepasol;
4181 assert(conshdlr != NULL);
4183 assert(consprop != NULL || propfreq == -1);
4185 conshdlr->consprop = consprop;
4197 assert(conshdlr != NULL);
4199 conshdlr->consenforelax = consenforelax;
4209 assert(conshdlr != NULL);
4211 assert(!conshdlr->
needscons || (conshdlrcopy == NULL) == (conscopy == NULL));
4213 conshdlr->conshdlrcopy = conshdlrcopy;
4214 conshdlr->conscopy = conscopy;
4223 assert(conshdlr != NULL);
4225 conshdlr->consfree = consfree;
4234 assert(conshdlr != NULL);
4236 conshdlr->consinit = consinit;
4245 assert(conshdlr != NULL);
4247 conshdlr->consexit = consexit;
4256 assert(conshdlr != NULL);
4258 conshdlr->consinitsol = consinitsol;
4267 assert(conshdlr != NULL);
4269 conshdlr->consexitsol = consexitsol;
4278 assert(conshdlr != NULL);
4280 conshdlr->consinitpre = consinitpre;
4289 assert(conshdlr != NULL);
4291 conshdlr->consexitpre = consexitpre;
4302 assert(conshdlr != NULL);
4304 conshdlr->conspresol = conspresol;
4312 SCIPmessagePrintError(
"ERROR: 'PRESOLDELAY'-flag no longer available since SCIP 3.2, use an appropriate " 4313 "'SCIP_PRESOLTIMING' for <%s> constraint handler instead.\n", conshdlr->
name);
4329 assert(conshdlr != NULL);
4331 conshdlr->consdelete = consdelete;
4340 assert(conshdlr != NULL);
4342 conshdlr->constrans = constrans;
4351 assert(conshdlr != NULL);
4353 conshdlr->consinitlp = consinitlp;
4362 assert(conshdlr != NULL);
4364 conshdlr->consresprop = consresprop;
4373 assert(conshdlr != NULL);
4375 conshdlr->consactive = consactive;
4384 assert(conshdlr != NULL);
4386 conshdlr->consdeactive = consdeactive;
4395 assert(conshdlr != NULL);
4397 conshdlr->consenable = consenable;
4406 assert(conshdlr != NULL);
4408 conshdlr->consdisable = consdisable;
4417 assert(conshdlr != NULL);
4419 conshdlr->consdelvars = consdelvars;
4428 assert(conshdlr != NULL);
4430 conshdlr->consprint = consprint;
4439 assert(conshdlr != NULL);
4441 conshdlr->consparse = consparse;
4450 assert(conshdlr != NULL);
4452 conshdlr->consgetvars = consgetvars;
4461 assert(conshdlr != NULL);
4463 conshdlr->consgetnvars = consgetnvars;
4472 assert(conshdlr != NULL);
4474 conshdlr->consgetdivebdchgs = consgetdivebdchgs;
4487 assert(conshdlr != NULL);
4489 return conshdlr->
conss;
4497 assert(conshdlr != NULL);
4507 assert(conshdlr != NULL);
4517 assert(conshdlr != NULL);
4527 assert(conshdlr != NULL);
4537 assert(conshdlr != NULL);
4551 assert(conshdlr != NULL);
4561 assert(conshdlr != NULL);
4572 assert(conshdlr != NULL);
4591 assert(conshdlr != NULL);
4601 assert(conshdlr != NULL);
4611 assert(conshdlr != NULL);
4621 assert(conshdlr != NULL);
4631 assert(conshdlr != NULL);
4641 assert(conshdlr != NULL);
4651 assert(conshdlr != NULL);
4661 assert(conshdlr != NULL);
4671 assert(conshdlr != NULL);
4681 assert(conshdlr != NULL);
4691 assert(conshdlr != NULL);
4701 assert(conshdlr != NULL);
4711 assert(conshdlr != NULL);
4721 assert(conshdlr != NULL);
4731 assert(conshdlr != NULL);
4741 assert(conshdlr != NULL);
4751 assert(conshdlr != NULL);
4761 assert(conshdlr != NULL);
4771 assert(conshdlr != NULL);
4781 assert(conshdlr != NULL);
4791 assert(conshdlr != NULL);
4801 assert(conshdlr != NULL);
4811 assert(conshdlr != NULL);
4821 assert(conshdlr != NULL);
4831 assert(conshdlr != NULL);
4841 assert(conshdlr != NULL);
4851 assert(conshdlr != NULL);
4861 assert(conshdlr != NULL);
4871 assert(conshdlr != NULL);
4881 assert(conshdlr != NULL);
4891 assert(conshdlr != NULL);
4901 assert(conshdlr != NULL);
4911 assert(conshdlr != NULL);
4921 assert(conshdlr != NULL);
4931 assert(conshdlr != NULL);
4941 assert(conshdlr != NULL);
4951 assert(conshdlr != NULL);
4961 assert(conshdlr != NULL);
4971 assert(conshdlr != NULL);
4981 assert(conshdlr != NULL);
4991 assert(conshdlr != NULL);
5001 assert(conshdlr != NULL);
5011 assert(conshdlr != NULL);
5021 assert(conshdlr != NULL);
5031 assert(conshdlr != NULL);
5041 assert(conshdlr != NULL);
5043 return (conshdlr->conspresol != NULL);
5051 assert(conshdlr != NULL);
5061 assert(conshdlr != NULL);
5071 assert(conshdlr != NULL);
5081 assert(conshdlr != NULL);
5091 assert(conshdlr != NULL);
5101 assert(conshdlr != NULL);
5111 assert(conshdlr != NULL);
5113 return (conshdlr->conshdlrcopy != NULL);
5121 assert(conshdlr != NULL);
5132 assert(conshdlr != NULL);
5143 assert(conshdlr != NULL);
5154 assert(conshdlr != NULL);
5171 assert(conssetchg != NULL);
5172 assert(blkmem != NULL);
5175 (*conssetchg)->addedconss = NULL;
5176 (*conssetchg)->disabledconss = NULL;
5177 (*conssetchg)->addedconsssize = 0;
5178 (*conssetchg)->naddedconss = 0;
5179 (*conssetchg)->disabledconsssize = 0;
5180 (*conssetchg)->ndisabledconss = 0;
5195 assert(conssetchg != NULL);
5223 assert(conssetchg != NULL);
5224 assert(blkmem != NULL);
5226 if( *conssetchg != NULL )
5249 assert(conssetchg != NULL);
5259 assert(num <= conssetchg->addedconsssize);
5273 assert(conssetchg != NULL);
5283 assert(num <= conssetchg->disabledconsssize);
5302 assert(conssetchg != NULL);
5303 assert(cons != NULL);
5306 if( *conssetchg == NULL )
5313 (*conssetchg)->addedconss[(*conssetchg)->naddedconss] = cons;
5314 (*conssetchg)->naddedconss++;
5344 assert(conssetchg != NULL);
5345 assert(cons != NULL);
5348 if( *conssetchg == NULL )
5355 (*conssetchg)->disabledconss[(*conssetchg)->ndisabledconss] = cons;
5356 (*conssetchg)->ndisabledconss++;
5375 assert(conssetchg != NULL);
5377 assert(0 <= arraypos && arraypos < conssetchg->naddedconss);
5380 assert(cons != NULL);
5382 SCIPsetDebugMsg(
set,
"delete added constraint <%s> at position %d from constraint set change data\n", cons->
name, arraypos);
5395 for( ; arraypos < conssetchg->
naddedconss-1; ++arraypos )
5398 assert(conssetchg->
addedconss[arraypos] != NULL);
5419 assert(conssetchg != NULL);
5420 assert(0 <= arraypos && arraypos < conssetchg->ndisabledconss);
5423 SCIPsetDebugMsg(
set,
"delete disabled constraint <%s> at position %d from constraint set change data\n",
5447 assert(conssetchg != NULL);
5450 if( nconss != NULL )
5467 if( conssetchg == NULL )
5470 SCIPsetDebugMsg(
set,
"applying constraint set changes at %p: %d constraint additions, %d constraint disablings\n",
5475 while( i < conssetchg->naddedconss )
5478 assert(cons != NULL);
5509 while( i < conssetchg->ndisabledconss )
5512 assert(cons != NULL);
5518 SCIPsetDebugMsg(
set,
"constraint <%s> of handler <%s> was deactivated -> remove it from disabledconss array\n",
5552 if( conssetchg == NULL )
5555 SCIPsetDebugMsg(
set,
"undoing constraint set changes at %p: %d constraint additions, %d constraint disablings\n",
5562 assert(cons != NULL);
5578 SCIPsetDebugMsg(
set,
"constraint <%s> of handler <%s> was deactivated -> remove it from disabledconss array\n",
5598 assert(cons != NULL);
5640 assert(conssetchg != NULL);
5643 if( *conssetchg == NULL )
5646 SCIPsetDebugMsg(
set,
"moving constraint set changes at %p to global problem: %d constraint additions, %d constraint disablings\n",
5647 (
void*)*conssetchg, (*conssetchg)->
naddedconss, (*conssetchg)->ndisabledconss);
5652 for( i = (*conssetchg)->naddedconss-1; i >= 0; --i )
5654 cons = (*conssetchg)->addedconss[i];
5655 assert(cons != NULL);
5681 for( i = (*conssetchg)->ndisabledconss-1; i >= 0; --i )
5683 cons = (*conssetchg)->disabledconss[i];
5684 assert(cons != NULL);
5701 if( (*conssetchg)->naddedconss == 0 && (*conssetchg)->ndisabledconss == 0 )
5758 assert(cons != NULL);
5759 assert(blkmem != NULL);
5760 assert(
set != NULL);
5761 assert(name != NULL);
5762 assert(conshdlr != NULL);
5763 assert(!original || deleteconsdata);
5769 (*cons)->scip =
set->scip;
5771 (*cons)->conshdlr = conshdlr;
5772 (*cons)->consdata = consdata;
5773 (*cons)->transorigcons = NULL;
5774 (*cons)->addconssetchg = NULL;
5775 (*cons)->addarraypos = -1;
5776 (*cons)->consspos = -1;
5777 (*cons)->initconsspos = -1;
5778 (*cons)->sepaconsspos = -1;
5779 (*cons)->enfoconsspos = -1;
5780 (*cons)->checkconsspos = -1;
5781 (*cons)->propconsspos = -1;
5782 (*cons)->activedepth = -2;
5783 (*cons)->validdepth = (local ? -1 : 0);
5785 (*cons)->nlockspos = 0;
5786 (*cons)->nlocksneg = 0;
5788 (*cons)->nupgradelocks = 0;
5789 (*cons)->initial = initial;
5790 (*cons)->separate = separate;
5791 (*cons)->enforce = enforce;
5792 (*cons)->check = check;
5793 (*cons)->propagate = propagate;
5794 (*cons)->sepaenabled = separate;
5795 (*cons)->propenabled = propagate;
5796 (*cons)->local = local;
5797 (*cons)->modifiable = modifiable;
5798 (*cons)->dynamic = dynamic;
5799 (*cons)->removable = removable;
5800 (*cons)->stickingatnode = stickingatnode;
5801 (*cons)->original = original;
5802 (*cons)->deleteconsdata = deleteconsdata;
5803 (*cons)->active =
FALSE;
5804 (*cons)->conflict =
FALSE;
5805 (*cons)->enabled =
FALSE;
5806 (*cons)->obsolete =
FALSE;
5807 (*cons)->markpropagate =
TRUE;
5808 (*cons)->deleted =
FALSE;
5809 (*cons)->update =
FALSE;
5810 (*cons)->updateinsert =
FALSE;
5811 (*cons)->updateactivate =
FALSE;
5812 (*cons)->updatedeactivate =
FALSE;
5813 (*cons)->updateenable =
FALSE;
5814 (*cons)->updatedisable =
FALSE;
5815 (*cons)->updatesepaenable =
FALSE;
5816 (*cons)->updatesepadisable =
FALSE;
5817 (*cons)->updatepropenable =
FALSE;
5818 (*cons)->updatepropdisable =
FALSE;
5819 (*cons)->updateobsolete =
FALSE;
5820 (*cons)->updatemarkpropagate =
FALSE;
5821 (*cons)->updateunmarkpropagate =
FALSE;
5822 (*cons)->updatefree =
FALSE;
5823 (*cons)->updateactfocus =
FALSE;
5834 SCIPsetDebugMsg(
set,
" -> delaying insertion of constraint <%s>\n", (*cons)->name);
5835 (*cons)->updateinsert =
TRUE;
5837 assert((*cons)->update);
5838 assert((*cons)->nuses == 2);
5886 assert(cons != NULL);
5887 assert(
set != NULL);
5888 assert(sourcescip != NULL);
5889 assert(sourceconshdlr != NULL);
5890 assert(sourcecons != NULL);
5891 assert(varmap != NULL);
5892 assert(consmap != NULL);
5893 assert(valid != NULL);
5898 if( sourceconshdlr->conscopy != NULL )
5900 SCIP_CALL( sourceconshdlr->conscopy(set->scip, cons, name, sourcescip, sourceconshdlr, sourcecons, varmap, consmap,
5901 initial, separate, enforce, check, propagate, local, modifiable, dynamic, removable, stickingatnode, global, valid) );
5952 assert(cons != NULL);
5953 assert(
set != NULL);
5958 assert(str != NULL);
5960 if ( endptr == NULL || endptr == str )
5965 assert(endptr != NULL);
5970 if ( endptr == NULL || endptr == str )
5975 assert(endptr != NULL);
5981 while ( isspace((
unsigned char)* str) )
5995 while ( isspace((
unsigned char)* str) )
6001 if( conshdlr == NULL )
6003 SCIPmessagePrintWarning(messagehdlr,
"constraint handler <%s> doesn't exist in SCIP data structure\n", conshdlrname);
6007 assert( conshdlr != NULL );
6008 if ( conshdlr->consparse == NULL )
6010 SCIPmessagePrintWarning(messagehdlr,
"constraint handler <%s> does not support parsing constraints\n", conshdlrname);
6014 SCIP_CALL( conshdlr->consparse(set->scip, conshdlr, cons, consname, str,
6015 initial, separate, enforce, check, propagate, local, modifiable, dynamic, removable, stickingatnode, success) );
6029 assert(cons != NULL);
6030 assert(cons->
name != NULL);
6049 assert(cons != NULL);
6050 assert(*cons != NULL);
6051 assert((*cons)->conshdlr != NULL);
6052 assert((*cons)->nuses == 0);
6053 assert(!(*cons)->active);
6054 assert(!(*cons)->update);
6055 assert(!(*cons)->original || (*cons)->transorigcons == NULL);
6056 assert(blkmem != NULL);
6057 assert(
set != NULL);
6058 assert((*cons)->scip == set->scip);
6060 SCIPsetDebugMsg(
set,
"freeing constraint <%s> at conss pos %d of handler <%s>\n",
6061 (*cons)->name, (*cons)->consspos, (*cons)->conshdlr->name);
6064 if( (*cons)->conshdlr->consdelete != NULL && (*cons)->consdata != NULL && (*cons)->deleteconsdata )
6066 SCIP_CALL( (*cons)->conshdlr->consdelete(set->scip, (*cons)->conshdlr, *cons, &(*cons)->
consdata) );
6068 else if( !(*cons)->deleteconsdata )
6069 (*cons)->consdata = NULL;
6070 assert((*cons)->consdata == NULL);
6073 if( (*cons)->transorigcons != NULL )
6075 assert(!(*cons)->original);
6076 assert((*cons)->transorigcons->original);
6077 assert((*cons)->transorigcons->transorigcons == *cons);
6079 (*cons)->transorigcons->transorigcons = NULL;
6083 if( !(*cons)->original )
6088 assert((*cons)->consspos == -1);
6102 assert(cons != NULL);
6103 assert(cons->
nuses >= 0);
6116 assert(blkmem != NULL);
6117 assert(cons != NULL);
6118 assert(*cons != NULL);
6119 assert((*cons)->conshdlr != NULL);
6120 assert((*cons)->nuses >= 1);
6121 assert(
set != NULL);
6122 assert((*cons)->scip == set->scip);
6124 SCIPsetDebugMsg(
set,
"release constraint <%s> with nuses=%d, cons pointer %p\n", (*cons)->name, (*cons)->nuses, (
void*)(*cons));
6126 if( (*cons)->nuses == 0 )
6128 assert(!(*cons)->active || (*cons)->updatedeactivate);
6133 SCIPsetDebugMsg(
set,
" -> delaying freeing constraint <%s>\n", (*cons)->name);
6134 (*cons)->updatefree =
TRUE;
6136 assert((*cons)->update);
6137 assert((*cons)->nuses == 1);
6159 assert(cons != NULL);
6160 assert(
set != NULL);
6161 assert(cons->
scip == set->scip);
6164 assert(conshdlr != NULL);
6168 if( conshdlr->consprint != NULL )
6170 SCIP_CALL( conshdlr->consprint(set->scip, conshdlr, cons, file) );
6173 SCIPmessageFPrintInfo(messagehdlr, file,
"constraint handler <%s> doesn't support printing constraint", conshdlr->
name);
6199 assert(cons != NULL);
6200 assert(
set != NULL);
6201 assert(cons->
scip == set->scip);
6204 assert(conshdlr != NULL);
6206 if( conshdlr->consgetvars != NULL )
6208 SCIP_CALL( conshdlr->consgetvars(set->scip, conshdlr, cons, vars, varssize, success) );
6234 assert(cons != NULL);
6235 assert(
set != NULL);
6236 assert(cons->
scip == set->scip);
6239 assert(conshdlr != NULL);
6241 if( conshdlr->consgetnvars != NULL )
6243 SCIP_CALL( conshdlr->consgetnvars(set->scip, conshdlr, cons, nvars, success) );
6266 assert(cons != NULL);
6269 assert(
set != NULL);
6270 assert(cons->
scip == set->scip);
6272 SCIPsetDebugMsg(
set,
"globally deleting constraint <%s> (delay updates: %d)\n",
6324 assert(origcons != NULL);
6325 assert(
set != NULL);
6326 assert(origcons->
scip == set->scip);
6327 assert(origcons->
conshdlr != NULL);
6329 assert(transcons != NULL);
6340 if( origcons->
conshdlr->constrans != NULL )
6361 assert(*transcons != NULL);
6374 assert(cons != NULL);
6375 assert(
set != NULL);
6376 assert(cons->
scip == set->scip);
6378 if( cons->
initial != initial )
6407 assert(cons != NULL);
6408 assert(
set != NULL);
6409 assert(cons->
scip == set->scip);
6442 assert(cons != NULL);
6443 assert(
set != NULL);
6444 assert(cons->
scip == set->scip);
6446 if( cons->
enforce != enforce )
6477 assert(cons != NULL);
6478 assert(
set != NULL);
6479 assert(cons->
scip == set->scip);
6481 if( cons->
check != check )
6483 cons->
check = check;
6525 assert(cons != NULL);
6526 assert(
set != NULL);
6527 assert(cons->
scip == set->scip);
6559 assert(cons != NULL);
6561 cons->
local = local;
6572 assert(cons != NULL);
6583 assert(cons != NULL);
6594 assert(cons != NULL);
6605 assert(cons != NULL);
6617 assert( cons != NULL );
6618 assert( name != NULL );
6620 cons->
name = (
char*)name;
6644 assert(cons != NULL);
6655 assert(
set != NULL);
6656 assert(cons->
scip == set->scip);
6660 SCIPsetDebugMsg(
set,
"delayed activation of constraint <%s> in constraint handler <%s> (depth %d)\n",
6684 assert(cons != NULL);
6691 assert(
set != NULL);
6692 assert(cons->
scip == set->scip);
6696 SCIPsetDebugMsg(
set,
"delayed deactivation of constraint <%s> in constraint handler <%s>\n",
6719 assert(cons != NULL);
6722 assert(
set != NULL);
6723 assert(cons->
scip == set->scip);
6752 assert(cons != NULL);
6755 assert(
set != NULL);
6756 assert(cons->
scip == set->scip);
6785 assert(cons != NULL);
6787 assert(
set != NULL);
6788 assert(cons->
scip == set->scip);
6815 assert(cons != NULL);
6843 assert(cons != NULL);
6845 assert(
set != NULL);
6846 assert(cons->
scip == set->scip);
6873 assert(cons != NULL);
6875 assert(
set != NULL);
6876 assert(cons->
scip == set->scip);
6902 assert(cons != NULL);
6913 assert(cons != NULL);
6915 assert(
set != NULL);
6916 assert(cons->
scip == set->scip);
6943 assert(cons != NULL);
6945 assert(
set != NULL);
6946 assert(cons->
scip == set->scip);
6986 assert(cons != NULL);
6989 assert(
set != NULL);
6990 assert(cons->
scip == set->scip);
6996 SCIPsetDebugMsg(
set,
"adding %g to age (%g) of constraint <%s> of handler <%s>\n",
6999 cons->
age += deltaage;
7061 assert(cons != NULL);
7064 assert(
set != NULL);
7065 assert(cons->
scip == set->scip);
7110 assert(
set != NULL);
7111 assert(cons != NULL);
7116 assert(result != NULL);
7117 assert(cons->
scip == set->scip);
7122 assert(conshdlr != NULL);
7124 if( conshdlr->consresprop != NULL )
7129 SCIP_CALL( conshdlr->consresprop(set->scip, conshdlr, cons, infervar, inferinfo, inferboundtype, bdchgidx,
7130 relaxedbd, result) );
7141 SCIPerrorMessage(
"propagation conflict resolving method of constraint handler <%s> returned invalid result <%d>\n",
7142 conshdlr->
name, *result);
7148 SCIPerrorMessage(
"propagation conflict resolving method of constraint handler <%s> is not implemented\n",
7169 assert(cons != NULL);
7171 assert(cons->
conshdlr->conslock != NULL);
7174 assert(-2 <= nlockspos && nlockspos <= 2);
7175 assert(-2 <= nlocksneg && nlocksneg <= 2);
7176 assert(
set != NULL);
7177 assert(cons->
scip == set->scip);
7188 updlockpos = (int)(cons->
nlockspos > 0) - (int)(oldnlockspos > 0);
7189 updlockneg = (int)(cons->
nlocksneg > 0) - (int)(oldnlocksneg > 0);
7192 if( updlockpos != 0 || updlockneg != 0 )
7213 assert(cons != NULL);
7214 assert(
set != NULL);
7215 assert(cons->
scip == set->scip);
7216 assert(result != NULL);
7219 assert(conshdlr != NULL);
7222 assert(conshdlr->conscheck != NULL);
7224 SCIP_CALL( conshdlr->conscheck(set->scip, conshdlr, &cons, 1, sol, checkintegrality, checklprows, printreason,
7230 SCIPerrorMessage(
"feasibility check of constraint handler <%s> on constraint <%s> returned invalid result <%d>\n",
7231 conshdlr->
name, cons->
name, *result);
7249 assert(cons != NULL);
7250 assert(
set != NULL);
7251 assert(cons->
scip == set->scip);
7252 assert(result != NULL);
7255 assert(conshdlr != NULL);
7258 assert(conshdlr->consenfops != NULL);
7260 SCIP_CALL( conshdlr->consenfops(set->scip, conshdlr, &cons, 1, 1, solinfeasible, objinfeasible, result) );
7272 SCIPerrorMessage(
"enforcing method of constraint handler <%s> for pseudo solutions returned invalid result <%d>\n",
7273 conshdlr->
name, *result);
7292 assert(cons != NULL);
7293 assert(
set != NULL);
7294 assert(cons->
scip == set->scip);
7295 assert(result != NULL);
7298 assert(conshdlr != NULL);
7301 assert(conshdlr->consenfolp != NULL);
7303 SCIP_CALL( conshdlr->consenfolp(set->scip, conshdlr, &cons, 1, 1, solinfeasible, result) );
7314 SCIPerrorMessage(
"enforcing method of constraint handler <%s> for LP returned invalid result <%d>\n",
7315 conshdlr->
name, *result);
7335 assert(cons != NULL);
7336 assert(
set != NULL);
7337 assert(cons->
scip == set->scip);
7338 assert(sol != NULL);
7339 assert(result != NULL);
7342 assert(conshdlr != NULL);
7345 assert(conshdlr->consenfolp != NULL);
7347 SCIP_CALL( conshdlr->consenforelax(set->scip, sol, conshdlr, &cons, 1, 1, solinfeasible, result) );
7358 SCIPerrorMessage(
"enforcing method of constraint handler <%s> for relaxation returned invalid result <%d>\n",
7359 conshdlr->
name, *result);
7377 assert(cons != NULL);
7378 assert(
set != NULL);
7379 assert(infeasible != NULL);
7380 assert(cons->
scip == set->scip);
7383 assert(conshdlr != NULL);
7386 if( conshdlr->consinitlp != NULL )
7388 SCIP_CALL( conshdlr->consinitlp(set->scip, conshdlr, &cons, 1, infeasible) );
7403 assert(cons != NULL);
7404 assert(
set != NULL);
7405 assert(cons->
scip == set->scip);
7406 assert(result != NULL);
7409 assert(conshdlr != NULL);
7412 if( conshdlr->conssepalp != NULL )
7414 SCIP_CALL( conshdlr->conssepalp(set->scip, conshdlr, &cons, 1, 1, result) );
7426 SCIPerrorMessage(
"separation method of constraint handler <%s> returned invalid result <%d>\n", conshdlr->
name,
7445 assert(cons != NULL);
7446 assert(
set != NULL);
7447 assert(cons->
scip == set->scip);
7448 assert(sol != NULL);
7449 assert(result != NULL);
7452 assert(conshdlr != NULL);
7455 if( conshdlr->conssepasol != NULL )
7457 SCIP_CALL( conshdlr->conssepasol(set->scip, conshdlr, &cons, 1, 1, sol, result) );
7469 SCIPerrorMessage(
"separation method of constraint handler for arbitrary primal solution <%s> returned invalid result <%d>\n",
7470 conshdlr->
name, *result);
7488 assert(cons != NULL);
7489 assert(
set != NULL);
7490 assert(cons->
scip == set->scip);
7491 assert(result != NULL);
7494 assert(conshdlr != NULL);
7497 if( conshdlr->consprop != NULL )
7499 SCIP_CALL( conshdlr->consprop(set->scip, conshdlr, &cons, 1, 1, 1, proptiming, result) );
7509 SCIPerrorMessage(
"propagation method of constraint handler <%s> returned invalid result <%d>\n",
7510 conshdlr->
name, *result);
7532 assert(cons != NULL);
7533 assert(
set != NULL);
7534 assert(cons->
scip == set->scip);
7535 assert(result != NULL);
7536 assert(infervar != NULL);
7537 assert(bdchgidx != NULL);
7540 assert(conshdlr != NULL);
7543 if( conshdlr->consresprop != NULL )
7545 SCIP_CALL( conshdlr->consresprop(set->scip, conshdlr, cons, infervar, inferinfo, boundtype, bdchgidx, relaxedbd, result) );
7551 SCIPerrorMessage(
"propagation conflict resolving method of constraint handler <%s> returned invalid result <%d>\n",
7552 conshdlr->
name, *result);
7568 int nnewchgvartypes,
7591 assert(cons != NULL);
7592 assert(
set != NULL);
7593 assert(cons->
scip == set->scip);
7594 assert(nfixedvars != NULL);
7595 assert(naggrvars != NULL);
7596 assert(nchgvartypes != NULL);
7597 assert(nchgbds != NULL);
7598 assert(naddholes != NULL);
7599 assert(ndelconss != NULL);
7600 assert(naddconss != NULL);
7601 assert(nupgdconss != NULL);
7602 assert(nchgcoefs != NULL);
7603 assert(nchgsides != NULL);
7604 assert(result != NULL);
7607 assert(conshdlr != NULL);
7610 if( conshdlr->conspresol != NULL )
7612 SCIP_CALL( conshdlr->conspresol(set->scip, conshdlr, &cons, 1, nrounds, timing,
7613 nnewfixedvars, nnewaggrvars, nnewchgvartypes, nnewchgbds, nnewholes, nnewdelconss, nnewaddconss,
7614 nnewupgdconss, nnewchgcoefs, nnewchgsides, nfixedvars, naggrvars, nchgvartypes,
7615 nchgbds, naddholes, ndelconss, naddconss, nupgdconss, nchgcoefs, nchgsides, result) );
7625 SCIPerrorMessage(
"presolving method of constraint handler <%s> returned invalid result <%d>\n",
7626 conshdlr->
name, *result);
7642 assert(cons != NULL);
7643 assert(
set != NULL);
7644 assert(cons->
scip == set->scip);
7647 assert(conshdlr != NULL);
7650 if( conshdlr->consactive != NULL )
7652 SCIP_CALL( conshdlr->consactive(set->scip, conshdlr, cons) );
7666 assert(cons != NULL);
7667 assert(
set != NULL);
7668 assert(cons->
scip == set->scip);
7671 assert(conshdlr != NULL);
7674 if( conshdlr->consdeactive != NULL )
7676 SCIP_CALL( conshdlr->consdeactive(set->scip, conshdlr, cons) );
7693 assert(cons != NULL);
7710 assert(
set != NULL);
7711 assert(conshdlr != NULL);
7722 assert(num <= conshdlr->storedpropconsssize);
7737 assert(
set != NULL);
7738 assert(conshdlrs != NULL || nconshdlrs == 0);
7740 for( c = nconshdlrs - 1; c >= 0; --c )
7742 conshdlr = conshdlrs[c];
7743 assert(conshdlr != NULL);
7778 assert(
set != NULL);
7779 assert(blkmem != NULL);
7780 assert(conshdlrs != NULL || nconshdlrs == 0);
7782 for( c = nconshdlrs - 1; c >= 0; --c )
7784 conshdlr = conshdlrs[c];
7785 assert(conshdlr != NULL);
7803 assert(cons != NULL);
7833 assert(linconsstats != NULL);
7846 assert(linconsstats != NULL);
7847 assert(*linconsstats != NULL);
7858 linconsstats->
sum = 0;
7867 assert(linconsstats != NULL);
7870 return linconsstats->
counter[(int)linconstype];
7878 assert(linconsstats != NULL);
7880 return linconsstats->
sum;
7890 assert(linconsstats != NULL);
7891 assert(increment >= 1);
7894 linconsstats->
counter[(int)linconstype] += increment;
7895 linconsstats->
sum += increment;
7905 assert(scip != NULL);
7906 assert(linconsstats != NULL);
7910 SCIPinfoMessage(scip, file,
"%-19s : %10s\n",
"Linear cons types",
"count");
7942 #undef SCIPconsGetName 7943 #undef SCIPconsGetPos 7944 #undef SCIPconsGetHdlr 7945 #undef SCIPconsGetData 7946 #undef SCIPconsGetNUses 7947 #undef SCIPconsGetActiveDepth 7948 #undef SCIPconsGetValidDepth 7949 #undef SCIPconsIsActive 7950 #undef SCIPconsIsEnabled 7951 #undef SCIPconsIsSeparationEnabled 7952 #undef SCIPconsIsPropagationEnabled 7953 #undef SCIPconsIsDeleted 7954 #undef SCIPconsIsObsolete 7955 #undef SCIPconsIsConflict 7956 #undef SCIPconsGetAge 7957 #undef SCIPconsIsInitial 7958 #undef SCIPconsIsSeparated 7959 #undef SCIPconsIsEnforced 7960 #undef SCIPconsIsChecked 7961 #undef SCIPconsIsMarkedPropagate 7962 #undef SCIPconsIsPropagated 7963 #undef SCIPconsIsGlobal 7964 #undef SCIPconsIsLocal 7965 #undef SCIPconsIsModifiable 7966 #undef SCIPconsIsDynamic 7967 #undef SCIPconsIsRemovable 7968 #undef SCIPconsIsStickingAtNode 7969 #undef SCIPconsIsInProb 7970 #undef SCIPconsIsOriginal 7971 #undef SCIPconsIsTransformed 7972 #undef SCIPconsIsLockedPos 7973 #undef SCIPconsIsLockedNeg 7974 #undef SCIPconsIsLocked 7975 #undef SCIPconsGetNLocksPos 7976 #undef SCIPconsGetNLocksNeg 7977 #undef SCIPconsIsAdded 7978 #undef SCIPconsGetNUpgradeLocks 7988 assert(cons != NULL);
7998 assert(cons != NULL);
8008 assert(cons != NULL);
8018 assert(cons != NULL);
8028 assert(cons != NULL);
8038 assert(cons != NULL);
8049 assert(cons != NULL);
8059 assert(cons != NULL);
8071 assert(cons != NULL);
8074 return (!cons->
local ? 0
8085 assert(cons != NULL);
8095 assert(cons != NULL);
8106 assert(cons != NULL);
8117 assert(cons != NULL);
8127 assert(cons != NULL);
8137 assert(cons != NULL);
8147 assert(cons != NULL);
8157 assert(cons != NULL);
8167 assert(cons != NULL);
8177 assert(cons != NULL);
8187 assert(cons != NULL);
8197 assert(cons != NULL);
8207 assert(cons != NULL);
8217 assert(cons != NULL);
8219 return !cons->
local;
8227 assert(cons != NULL);
8237 assert(cons != NULL);
8247 assert(cons != NULL);
8257 assert(cons != NULL);
8267 assert(cons != NULL);
8277 assert(cons != NULL);
8287 assert(cons != NULL);
8297 assert(cons != NULL);
8307 assert(cons != NULL);
8317 assert(cons != NULL);
8327 assert(cons != NULL);
8337 assert(cons != NULL);
8347 assert(cons != NULL);
8357 assert(cons != NULL);
8368 assert(cons != NULL);
8379 assert(cons != NULL);
enum SCIP_Result SCIP_RESULT
void SCIPconshdlrSetPropTiming(SCIP_CONSHDLR *conshdlr, SCIP_PROPTIMING proptiming)
SCIP_RETCODE SCIPconsSetChecked(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool check)
SCIP_RETCODE SCIPconsDelete(SCIP_CONS *cons, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_REOPT *reopt)
enum SCIP_BoundType SCIP_BOUNDTYPE
void SCIPconshdlrSetData(SCIP_CONSHDLR *conshdlr, SCIP_CONSHDLRDATA *conshdlrdata)
SCIP_PROPTIMING proptiming
SCIP_CONS ** SCIPconshdlrGetEnfoConss(SCIP_CONSHDLR *conshdlr)
enum SCIP_LinConstype SCIP_LINCONSTYPE
SCIP_RETCODE SCIPconsUnmarkPropagate(SCIP_CONS *cons, SCIP_SET *set)
SCIP_RETCODE SCIPconshdlrEnforcePseudoSol(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_BRANCHCAND *branchcand, SCIP_Bool solinfeasible, SCIP_Bool objinfeasible, SCIP_Bool forced, SCIP_RESULT *result)
SCIP_Longint nenfolpcalls
SCIP_Bool SCIPconshdlrIsSeparationDelayed(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPconsIncAge(SCIP_CONS *cons, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_REOPT *reopt)
void SCIPconssetchgGetAddedConsData(SCIP_CONSSETCHG *conssetchg, SCIP_CONS ***conss, int *nconss)
#define BMSfreeBlockMemoryArrayNull(mem, ptr, num)
SCIP_Bool SCIPconsIsEnabled(SCIP_CONS *cons)
SCIP_Longint lastsepalpcount
unsigned int updatemarkpropagate
static void conshdlrDelEnfocons(SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons)
SCIP_RETCODE SCIPconshdlrEnforceLPSol(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_SEPASTORE *sepastore, SCIP_Bool solinfeasible, SCIP_RESULT *result)
static SCIP_RETCODE conshdlrEnsureInitconssMem(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, int num)
SCIP_Real SCIPgetVarUbAtIndex(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
static SCIP_RETCODE ensurePropagationStorage(SCIP_SET *set, SCIP_CONSHDLR *conshdlr, int num)
unsigned int updatepropdisable
SCIP_RETCODE SCIPconssetchgFree(SCIP_CONSSETCHG **conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set)
SCIP_RETCODE SCIPconsActivate(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat, int depth, SCIP_Bool focusnode)
#define BMSfreeMemoryArrayNull(ptr)
SCIP_Bool SCIPconsIsDynamic(SCIP_CONS *cons)
static SCIP_RETCODE conshdlrEnsureCheckconssMem(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, int num)
SCIP_Bool sepasolwasdelayed
internal methods for branch and bound tree
SCIP_RETCODE SCIPconshdlrExit(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
static SCIP_RETCODE conssetchgDelAddedCons(SCIP_CONSSETCHG *conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set, int arraypos)
static SCIP_RETCODE conshdlrDisableConsSeparation(SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons)
SCIP_Real SCIPgetVarLbAtIndex(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
void SCIPconshdlrSetPrint(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRINT((*consprint)))
int SCIPconsGetValidDepth(SCIP_CONS *cons)
int SCIPlinConsStatsGetTypeCount(SCIP_LINCONSSTATS *linconsstats, SCIP_LINCONSTYPE linconstype)
void SCIPconsSetDynamic(SCIP_CONS *cons, SCIP_Bool dynamic)
void SCIPconsSetStickingAtNode(SCIP_CONS *cons, SCIP_Bool stickingatnode)
SCIP_DECL_SORTPTRCOMP(SCIPconshdlrCompSepa)
SCIP_Longint lastenfopsdomchgcount
static void conshdlrDelCons(SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons)
SCIP_DECL_CONSSEPALP(ConshdlrSubtour::scip_sepalp)
SCIP_RETCODE SCIPconsSepasol(SCIP_CONS *cons, SCIP_SET *set, SCIP_SOL *sol, SCIP_RESULT *result)
static SCIP_Bool consExceedsAgelimit(SCIP_CONS *cons, SCIP_SET *set)
SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)
SCIP_Longint SCIPconshdlrGetNDomredsFound(SCIP_CONSHDLR *conshdlr)
unsigned int updatesepaenable
SCIP_Longint ninitconssadded
SCIP_Longint SCIPconshdlrGetNCutoffs(SCIP_CONSHDLR *conshdlr)
#define SCIP_DECL_CONSINITPRE(x)
internal methods for clocks and timing issues
int SCIPbranchcandGetNPseudoCands(SCIP_BRANCHCAND *branchcand)
#define SCIP_DECL_CONSGETDIVEBDCHGS(x)
SCIP_Bool SCIPconshdlrIsPropagationDelayed(SCIP_CONSHDLR *conshdlr)
void SCIPlinConsStatsIncTypeCount(SCIP_LINCONSSTATS *linconsstats, SCIP_LINCONSTYPE linconstype, int increment)
#define SCIP_DECL_CONSPRESOL(x)
void SCIPconshdlrSetDeactive(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDEACTIVE((*consdeactive)))
static SCIP_RETCODE conshdlrEnsureEnfoconssMem(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, int num)
void SCIPconshdlrSetInitpre(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITPRE((*consinitpre)))
SCIP_RETCODE SCIPconsParse(SCIP_CONS **cons, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *str, 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 *success)
static SCIP_RETCODE conshdlrDeactivateCons(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, SCIP_STAT *stat, SCIP_CONS *cons)
void SCIPconshdlrSetInitsol(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITSOL((*consinitsol)))
SCIP_Longint ndomredsfound
SCIP_Bool SCIPconsIsAdded(SCIP_CONS *cons)
int SCIPconshdlrGetNEnabledConss(SCIP_CONSHDLR *conshdlr)
static SCIP_RETCODE conshdlrAddSepacons(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, SCIP_CONS *cons)
SCIP_Longint lastenfopsnode
SCIP_Longint nenforelaxcalls
SCIP_DECL_CONSENFOPS(ConshdlrSubtour::scip_enfops)
void SCIPconsMarkConflict(SCIP_CONS *cons)
static SCIP_RETCODE conshdlrActivateCons(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, SCIP_STAT *stat, SCIP_CONS *cons, int depth, SCIP_Bool focusnode)
SCIP_Longint lastpropdomchgcount
#define SCIP_PROPTIMING_DURINGLPLOOP
#define SCIP_DECL_CONSRESPROP(x)
void SCIPclockStop(SCIP_CLOCK *clck, SCIP_SET *set)
SCIP_RETCODE SCIPconsGetVars(SCIP_CONS *cons, SCIP_SET *set, SCIP_VAR **vars, int varssize, SCIP_Bool *success)
datastructures for constraints and constraint handlers
SCIP_CONS ** SCIPconshdlrGetConss(SCIP_CONSHDLR *conshdlr)
static void conshdlrDelCheckcons(SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons)
SCIP_RETCODE SCIPconsSetSeparated(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool separate)
SCIP_Bool SCIPconshdlrDoesPresolve(SCIP_CONSHDLR *conshdlr)
int SCIPconsGetPos(SCIP_CONS *cons)
void SCIPconshdlrSetPresolTiming(SCIP_CONSHDLR *conshdlr, SCIP_PRESOLTIMING presoltiming)
SCIP_PRESOLTIMING SCIPconshdlrGetPresolTiming(SCIP_CONSHDLR *conshdlr)
void SCIPclockStart(SCIP_CLOCK *clck, SCIP_SET *set)
static SCIP_RETCODE conssetchgRelease(SCIP_CONSSETCHG *conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set)
SCIP_RETCODE SCIPconshdlrInitsol(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
SCIP_RETCODE SCIPconshdlrInitLP(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_Bool initkeptconss, SCIP_Bool *cutoff)
int SCIPsnprintf(char *t, int len, const char *s,...)
SCIP_RESULT lastenfolpresult
enum SCIP_Retcode SCIP_RETCODE
#define AGERESETAVG_OBSOLETEAGE
SCIP_RESULT lastenforelaxresult
#define SCIP_DECL_CONSGETNVARS(x)
SCIP_Bool SCIPconsIsStickingAtNode(SCIP_CONS *cons)
void SCIPconshdlrSetFree(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSFREE((*consfree)))
#define SCIP_PRESOLTIMING_EXHAUSTIVE
SCIP_Real SCIPconshdlrGetEnfoLPTime(SCIP_CONSHDLR *conshdlr)
int SCIPtreeGetCurrentDepth(SCIP_TREE *tree)
int SCIPconshdlrGetNUpgdConss(SCIP_CONSHDLR *conshdlr)
SCIP_Longint SCIPconshdlrGetNCutsApplied(SCIP_CONSHDLR *conshdlr)
static SCIP_RETCODE conshdlrEnsurePropconssMem(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, int num)
internal methods for branching rules and branching candidate storage
int SCIPsetCalcMemGrowSize(SCIP_SET *set, int num)
void SCIPprintLinConsStats(SCIP *scip, FILE *file, SCIP_LINCONSSTATS *linconsstats)
SCIP_Longint SCIPconshdlrGetNCutsFound(SCIP_CONSHDLR *conshdlr)
void SCIPlinConsStatsReset(SCIP_LINCONSSTATS *linconsstats)
SCIP_RETCODE SCIPconsEnableSeparation(SCIP_CONS *cons, SCIP_SET *set)
SCIP_Bool SCIPconsIsTransformed(SCIP_CONS *cons)
#define SCIP_DECL_CONSEXITSOL(x)
void SCIPconshdlrSetCopy(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), SCIP_DECL_CONSCOPY((*conscopy)))
static GRAPHNODE ** active
SCIP_Bool SCIPconsIsInProb(SCIP_CONS *cons)
SCIP_Real SCIPconshdlrGetEnfoPSTime(SCIP_CONSHDLR *conshdlr)
#define SCIPfreeBlockMemory(scip, ptr)
SCIP_RETCODE SCIPconsSetPropagated(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool propagate)
SCIP_RETCODE SCIPconshdlrInit(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
static void conshdlrUnmarkConsPropagate(SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons)
int SCIPconsGetNLocksNeg(SCIP_CONS *cons)
SCIP_RETCODE SCIPconshdlrSeparateLP(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_SEPASTORE *sepastore, int depth, SCIP_Bool execdelayed, SCIP_RESULT *result)
SCIP_DECL_CONSSEPASOL(ConshdlrSubtour::scip_sepasol)
void SCIPconsSetNamePointer(SCIP_CONS *cons, const char *name)
SCIP_Real SCIPconshdlrGetStrongBranchPropTime(SCIP_CONSHDLR *conshdlr)
SCIP_Longint lastenforelaxrelaxcount
unsigned int updateunmarkpropagate
SCIP_Bool SCIPreoptConsCanBeDeleted(SCIP_REOPT *reopt, SCIP_CONS *cons)
int SCIPconshdlrGetSepaFreq(SCIP_CONSHDLR *conshdlr)
void SCIPclockEnableOrDisable(SCIP_CLOCK *clck, SCIP_Bool enable)
SCIP_DECL_CONSDELETE(ConshdlrSubtour::scip_delete)
void SCIPconshdlrSetProp(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPROP((*consprop)), int propfreq, SCIP_Bool delayprop, SCIP_PROPTIMING timingmask)
#define BMSfreeMemory(ptr)
#define SCIPallocBlockMemory(scip, ptr)
SCIP_Bool SCIPconsIsLockedNeg(SCIP_CONS *cons)
SCIP_Bool sepalpwasdelayed
SCIP_CONS * SCIPconsGetTransformed(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsRemovable(SCIP_CONS *cons)
SCIP_Longint SCIPconshdlrGetNCheckCalls(SCIP_CONSHDLR *conshdlr)
SCIP_CONS ** disabledconss
static void conshdlrDelSepacons(SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons)
const char * SCIPconshdlrGetDesc(SCIP_CONSHDLR *conshdlr)
#define SCIP_DECL_CONSINITLP(x)
SCIP_Bool SCIPconsIsActive(SCIP_CONS *cons)
void SCIPinfoMessage(SCIP *scip, FILE *file, const char *formatstr,...)
int SCIPconshdlrGetStartNActiveConss(SCIP_CONSHDLR *conshdlr)
static SCIP_Bool conshdlrAreUpdatesDelayed(SCIP_CONSHDLR *conshdlr)
int SCIPconshdlrGetSepaPriority(SCIP_CONSHDLR *conshdlr)
#define SCIP_PRESOLTIMING_FAST
SCIP_CONS * transorigcons
SCIP_DECL_CONSENFOLP(ConshdlrSubtour::scip_enfolp)
SCIP_RETCODE SCIPconsResetAge(SCIP_CONS *cons, SCIP_SET *set)
SCIP_RETCODE SCIPconsActive(SCIP_CONS *cons, SCIP_SET *set)
SCIP_PROPTIMING SCIPconshdlrGetPropTiming(SCIP_CONSHDLR *conshdlr)
SCIP_Longint lastenfolpnode
int counter[SCIP_NLINCONSTYPES]
SCIP_CONSSETCHG * addconssetchg
int SCIPconshdlrGetNFixedVars(SCIP_CONSHDLR *conshdlr)
SCIP_Bool SCIPconsIsGlobal(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsOriginal(SCIP_CONS *cons)
SCIP_Bool SCIPconshdlrIsClonable(SCIP_CONSHDLR *conshdlr)
int SCIPconshdlrGetNChgSides(SCIP_CONSHDLR *conshdlr)
SCIP_DECL_CONSCHECK(ConshdlrSubtour::scip_check)
static SCIP_RETCODE conshdlrEnsureUpdateconssMem(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, int num)
static void conshdlrDelayUpdates(SCIP_CONSHDLR *conshdlr)
unsigned int stickingatnode
static SCIP_RETCODE conshdlrForceUpdates(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
#define SCIP_DECL_CONSINITSOL(x)
int SCIPconshdlrGetNChgBds(SCIP_CONSHDLR *conshdlr)
int SCIPconshdlrGetCheckPriority(SCIP_CONSHDLR *conshdlr)
SCIP_CLOCK * enforelaxtime
unsigned int updateinsert
SCIP_RETCODE SCIPconsDisableSeparation(SCIP_CONS *cons, SCIP_SET *set)
SCIP_Real SCIPvarGetUbGlobal(SCIP_VAR *var)
static SCIP_RETCODE conssetchgDelDisabledCons(SCIP_CONSSETCHG *conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set, int arraypos)
SCIP_RETCODE SCIPconshdlrCopyInclude(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, SCIP_Bool *valid)
int SCIPconshdlrGetEagerFreq(SCIP_CONSHDLR *conshdlr)
SCIP_CONSHDLR * SCIPsetFindConshdlr(SCIP_SET *set, const char *name)
SCIP_Bool SCIPtreeProbing(SCIP_TREE *tree)
int storednmarkedpropconss
void SCIPconshdlrSetExitsol(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSEXITSOL((*consexitsol)))
void SCIPconshdlrSetEnforelax(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSENFORELAX((*consenforelax)))
SCIP_Bool SCIPconsIsLocked(SCIP_CONS *cons)
SCIP_RETCODE SCIPconshdlrGetDiveBoundChanges(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, SCIP_DIVESET *diveset, SCIP_SOL *sol, SCIP_Bool *success, SCIP_Bool *infeasible)
SCIP_RETCODE SCIPconsEnablePropagation(SCIP_CONS *cons, SCIP_SET *set)
#define BMSduplicateBlockMemoryArray(mem, ptr, source, num)
#define SCIP_PRESOLTIMING_MEDIUM
SCIP_RETCODE SCIPconssetchgApply(SCIP_CONSSETCHG *conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, int depth, SCIP_Bool focusnode)
int SCIPconshdlrGetNEnfoConss(SCIP_CONSHDLR *conshdlr)
void SCIPconshdlrEnableOrDisableClocks(SCIP_CONSHDLR *conshdlr, SCIP_Bool enable)
SCIP_Real SCIPconsGetAge(SCIP_CONS *cons)
#define BMSfreeMemoryArray(ptr)
unsigned int updatepropenable
static SCIP_RETCODE conshdlrAddCons(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, SCIP_CONS *cons)
internal methods for storing and manipulating the main problem
void SCIPmessagePrintError(const char *formatstr,...)
SCIP_RETCODE SCIPconsResprop(SCIP_CONS *cons, SCIP_SET *set, SCIP_VAR *infervar, int inferinfo, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Real relaxedbd, SCIP_RESULT *result)
const char * SCIPconshdlrGetName(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPconsTransform(SCIP_CONS *origcons, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_CONS **transcons)
SCIP_Real SCIPconshdlrGetCheckTime(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPconshdlrCreate(SCIP_CONSHDLR **conshdlr, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int sepapriority, int enfopriority, int checkpriority, int sepafreq, int propfreq, int eagerfreq, int maxprerounds, SCIP_Bool delaysepa, SCIP_Bool delayprop, SCIP_Bool needscons, SCIP_PROPTIMING proptiming, SCIP_PRESOLTIMING presoltiming, SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), SCIP_DECL_CONSFREE((*consfree)), SCIP_DECL_CONSINIT((*consinit)), SCIP_DECL_CONSEXIT((*consexit)), SCIP_DECL_CONSINITPRE((*consinitpre)), SCIP_DECL_CONSEXITPRE((*consexitpre)), SCIP_DECL_CONSINITSOL((*consinitsol)), SCIP_DECL_CONSEXITSOL((*consexitsol)), SCIP_DECL_CONSDELETE((*consdelete)), SCIP_DECL_CONSTRANS((*constrans)), SCIP_DECL_CONSINITLP((*consinitlp)), SCIP_DECL_CONSSEPALP((*conssepalp)), SCIP_DECL_CONSSEPASOL((*conssepasol)), SCIP_DECL_CONSENFOLP((*consenfolp)), SCIP_DECL_CONSENFORELAX((*consenforelax)), SCIP_DECL_CONSENFOPS((*consenfops)), SCIP_DECL_CONSCHECK((*conscheck)), SCIP_DECL_CONSPROP((*consprop)), SCIP_DECL_CONSPRESOL((*conspresol)), SCIP_DECL_CONSRESPROP((*consresprop)), SCIP_DECL_CONSLOCK((*conslock)), SCIP_DECL_CONSACTIVE((*consactive)), SCIP_DECL_CONSDEACTIVE((*consdeactive)), SCIP_DECL_CONSENABLE((*consenable)), SCIP_DECL_CONSDISABLE((*consdisable)), SCIP_DECL_CONSDELVARS((*consdelvars)), SCIP_DECL_CONSPRINT((*consprint)), SCIP_DECL_CONSCOPY((*conscopy)), SCIP_DECL_CONSPARSE((*consparse)), SCIP_DECL_CONSGETVARS((*consgetvars)), SCIP_DECL_CONSGETNVARS((*consgetnvars)), SCIP_DECL_CONSGETDIVEBDCHGS((*consgetdivebdchgs)), SCIP_CONSHDLRDATA *conshdlrdata)
SCIP_Longint SCIPconshdlrGetNRespropCalls(SCIP_CONSHDLR *conshdlr)
#define SCIP_DECL_CONSPARSE(x)
static SCIP_RETCODE conshdlrEnableConsPropagation(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, SCIP_CONS *cons)
static SCIP_Real conshdlrGetAgeresetavg(SCIP_CONSHDLR *conshdlr)
void SCIPclockReset(SCIP_CLOCK *clck)
static void conshdlrMarkConsPropagate(SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons)
#define SCIP_DECL_CONSDEACTIVE(x)
static SCIP_RETCODE conshdlrAddUpdateCons(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, SCIP_CONS *cons)
SCIP_RETCODE SCIPconsProp(SCIP_CONS *cons, SCIP_SET *set, SCIP_PROPTIMING proptiming, SCIP_RESULT *result)
SCIP_RETCODE SCIPconsDeactive(SCIP_CONS *cons, SCIP_SET *set)
SCIP_CONS ** storedpropconss
SCIP_RETCODE SCIPconshdlrDelVars(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
SCIP_Real SCIPconshdlrGetSepaTime(SCIP_CONSHDLR *conshdlr)
static SCIP_Bool consExceedsObsoleteage(SCIP_CONS *cons, SCIP_SET *set)
void SCIPstrCopySection(const char *str, char startchar, char endchar, char *token, int size, char **endptr)
int SCIPsepastoreGetNCuts(SCIP_SEPASTORE *sepastore)
const char * SCIPconsGetName(SCIP_CONS *cons)
int SCIPconshdlrGetNDelConss(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPconshdlrInitpre(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
SCIP_Bool SCIPconsIsPropagated(SCIP_CONS *cons)
SCIP_Real SCIPclockGetTime(SCIP_CLOCK *clck)
SCIP_DECL_CONSTRANS(ConshdlrSubtour::scip_trans)
SCIP_CONSHDLRDATA * SCIPconshdlrGetData(SCIP_CONSHDLR *conshdlr)
void SCIPmessagePrintWarning(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...)
void SCIPconshdlrSetEnable(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSENABLE((*consenable)))
SCIP_RETCODE SCIPconsChgName(SCIP_CONS *cons, BMS_BLKMEM *blkmem, const char *name)
int SCIPconshdlrGetNChgCoefs(SCIP_CONSHDLR *conshdlr)
SCIP_Longint SCIPconshdlrGetNPropCalls(SCIP_CONSHDLR *conshdlr)
#define SCIP_DECL_CONSDISABLE(x)
void SCIPconshdlrSetExit(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSEXIT((*consexit)))
#define SCIP_PROPTIMING_ALWAYS
int SCIPconsGetNLocksPos(SCIP_CONS *cons)
int SCIPconshdlrGetPropFreq(SCIP_CONSHDLR *conshdlr)
static SCIP_RETCODE conshdlrProcessUpdates(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
#define SCIP_PROPTIMING_AFTERLPLOOP
internal methods for global SCIP settings
SCIP_DECL_CONSDELVARS(ConshdlrSubtour::scip_delvars)
unsigned int SCIP_PRESOLTIMING
SCIP_RETCODE SCIPconshdlrEnforceRelaxSol(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_SEPASTORE *sepastore, SCIP_SOL *relaxsol, SCIP_Bool solinfeasible, SCIP_RESULT *result)
SCIP_Longint SCIPconshdlrGetNConssFound(SCIP_CONSHDLR *conshdlr)
#define SCIP_DECL_CONSENABLE(x)
unsigned int updatesepadisable
void SCIPlinConsStatsFree(SCIP *scip, SCIP_LINCONSSTATS **linconsstats)
SCIP_RETCODE SCIPconsAddLocks(SCIP_CONS *cons, SCIP_SET *set, int nlockspos, int nlocksneg)
SCIP_RETCODE SCIPconsDisable(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat)
#define AGERESETAVG_AGELIMIT
SCIP_Bool SCIPconsIsLocal(SCIP_CONS *cons)
static SCIP_RETCODE conssetchgCreate(SCIP_CONSSETCHG **conssetchg, BMS_BLKMEM *blkmem)
static void conshdlrDelPropcons(SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons)
SCIP_RETCODE SCIPsetAddIntParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int *valueptr, SCIP_Bool isadvanced, int defaultvalue, int minvalue, int maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
#define AGERESETAVG_DECAY
void SCIPconshdlrSetSepa(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSSEPALP((*conssepalp)), SCIP_DECL_CONSSEPASOL((*conssepasol)), int sepafreq, int sepapriority, SCIP_Bool delaysepa)
SCIP_RESULT lastenfopsresult
void SCIPconshdlrSetActive(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSACTIVE((*consactive)))
SCIP_Bool SCIPconsIsLockedPos(SCIP_CONS *cons)
struct SCIP_ConsData SCIP_CONSDATA
internal methods for storing separated cuts
static SCIP_RETCODE conshdlrEnableCons(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, SCIP_STAT *stat, SCIP_CONS *cons)
SCIP_Bool SCIPconshdlrNeedsCons(SCIP_CONSHDLR *conshdlr)
#define BMSduplicateMemoryArray(ptr, source, num)
SCIP_Longint nprobboundchgs
SCIP_RETCODE SCIPconshdlrUnlockVars(SCIP_CONSHDLR *conshdlr, SCIP_SET *set)
int SCIPconshdlrGetNConss(SCIP_CONSHDLR *conshdlr)
#define checkConssArrays(conshdlr)
SCIP_RETCODE SCIPclockCreate(SCIP_CLOCK **clck, SCIP_CLOCKTYPE clocktype)
SCIP_Real SCIPconshdlrGetRespropTime(SCIP_CONSHDLR *conshdlr)
void SCIPconshdlrIncNCutsFound(SCIP_CONSHDLR *conshdlr)
#define BMSfreeBlockMemory(mem, ptr)
data structures and methods for collecting reoptimization information
internal methods for problem variables
#define SCIP_DECL_CONSGETVARS(x)
#define SCIP_DECL_CONSEXIT(x)
SCIP_PRESOLTIMING presoltiming
SCIP_Longint SCIPconshdlrGetNEnfoLPCalls(SCIP_CONSHDLR *conshdlr)
public data structures and miscellaneous methods
static void conshdlrDelInitcons(SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons)
SCIP_RETCODE SCIPconsGetNVars(SCIP_CONS *cons, SCIP_SET *set, int *nvars, SCIP_Bool *success)
static SCIP_RETCODE conshdlrMarkConsUseful(SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons)
SCIP_RETCODE SCIPconshdlrPresolve(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRESOLTIMING timing, int nrounds, int *nfixedvars, int *naggrvars, int *nchgvartypes, int *nchgbds, int *naddholes, int *ndelconss, int *naddconss, int *nupgdconss, int *nchgcoefs, int *nchgsides, SCIP_RESULT *result)
SCIP_DECL_CONSPROP(ConshdlrSubtour::scip_prop)
SCIP_Bool SCIPconsIsUpdatedeactivate(SCIP_CONS *cons)
SCIP_Longint SCIPconshdlrGetNEnfoRelaxCalls(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPconsAddAge(SCIP_CONS *cons, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_Real deltaage, SCIP_REOPT *reopt)
SCIP_Bool SCIPconshdlrWasPropagationDelayed(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPconsEnfops(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool solinfeasible, SCIP_Bool objinfeasible, SCIP_RESULT *result)
void SCIPconsSetModifiable(SCIP_CONS *cons, SCIP_Bool modifiable)
SCIP_Real SCIPconshdlrGetPresolTime(SCIP_CONSHDLR *conshdlr)
SCIP_Bool SCIPconsIsPropagationEnabled(SCIP_CONS *cons)
SCIP_DECL_HASHGETKEY(SCIPhashGetKeyCons)
SCIP_RETCODE SCIPconsRelease(SCIP_CONS **cons, BMS_BLKMEM *blkmem, SCIP_SET *set)
void SCIPconshdlrSetDelete(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDELETE((*consdelete)))
void SCIPconshdlrSetInit(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINIT((*consinit)))
void SCIPclockFree(SCIP_CLOCK **clck)
#define BMSfreeBlockMemoryArray(mem, ptr, num)
SCIP_Longint lastenforelaxdomchgcount
#define SCIP_DECL_CONSEXITPRE(x)
void SCIPconshdlrIncNAppliedCuts(SCIP_CONSHDLR *conshdlr)
#define SCIP_NLINCONSTYPES
SCIP_CONSHDLR * SCIPconsGetHdlr(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsDeleted(SCIP_CONS *cons)
SCIP_Longint SCIPconshdlrGetNEnfoPSCalls(SCIP_CONSHDLR *conshdlr)
void SCIPconsSetRemovable(SCIP_CONS *cons, SCIP_Bool removable)
SCIP_Bool SCIPconshdlrWasLPSeparationDelayed(SCIP_CONSHDLR *conshdlr)
SCIP_Bool SCIPconsIsChecked(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsInitial(SCIP_CONS *cons)
SCIP_RETCODE SCIPconshdlrSetPresol(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRESOL((*conspresol)), int maxprerounds, SCIP_PRESOLTIMING presoltiming)
SCIP_Real SCIPconshdlrGetPropTime(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPconshdlrsResetPropagationStatus(SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_CONSHDLR **conshdlrs, int nconshdlrs)
SCIP_RETCODE SCIPconshdlrPropagate(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, int depth, SCIP_Bool fullpropagation, SCIP_Bool execdelayed, SCIP_Bool instrongbranching, SCIP_PROPTIMING proptiming, SCIP_RESULT *result)
#define SCIP_PRESOLTIMING_MAX
SCIP_Real SCIPconshdlrGetEnfoRelaxTime(SCIP_CONSHDLR *conshdlr)
unsigned int updateactivate
#define BMScopyMemoryArray(ptr, source, num)
unsigned int updateenable
static SCIP_RETCODE conshdlrEnableConsSeparation(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, SCIP_CONS *cons)
static SCIP_RETCODE conshdlrEnsureSepaconssMem(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, int num)
#define SCIP_PROPTIMING_BEFORELP
int SCIPconshdlrGetEnfoPriority(SCIP_CONSHDLR *conshdlr)
SCIP_Bool SCIPconshdlrIsInitialized(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPprobDelCons(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_CONS *cons)
void SCIPconshdlrSetGetNVars(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETNVARS((*consgetnvars)))
#define SCIP_MAXTREEDEPTH
int SCIPconshdlrGetNActiveConss(SCIP_CONSHDLR *conshdlr)
void SCIPconshdlrSetParse(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPARSE((*consparse)))
int SCIPconsGetNUpgradeLocks(SCIP_CONS *cons)
int SCIPconshdlrGetNPresolCalls(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPconshdlrExitpre(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
static SCIP_RETCODE conshdlrAddEnfocons(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, SCIP_CONS *cons)
SCIP_Bool SCIPconsIsSeparationEnabled(SCIP_CONS *cons)
int SCIPconshdlrGetNChgVarTypes(SCIP_CONSHDLR *conshdlr)
unsigned int updateactfocus
int SCIPconshdlrGetMaxNActiveConss(SCIP_CONSHDLR *conshdlr)
void SCIPconsCapture(SCIP_CONS *cons)
unsigned int SCIP_PROPTIMING
static SCIP_RETCODE conshdlrAddCheckcons(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, SCIP_CONS *cons)
SCIP_Longint nenfopscalls
SCIP_CONSDATA * SCIPconsGetData(SCIP_CONS *cons)
SCIP_RETCODE SCIPconssetchgUndo(SCIP_CONSSETCHG *conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
SCIP_CONS ** SCIPconshdlrGetCheckConss(SCIP_CONSHDLR *conshdlr)
SCIP_Longint lastenfolplpcount
#define SCIP_PRESOLTIMING_FINAL
SCIP_Longint ncutsapplied
SCIP_RETCODE SCIPconssetchgAddAddedCons(SCIP_CONSSETCHG **conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_CONS *cons, int depth, SCIP_Bool focusnode, SCIP_Bool active)
#define SCIP_DECL_CONSFREE(x)
void SCIPconshdlrSetDisable(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDISABLE((*consdisable)))
unsigned int updatedisable
static SCIP_RETCODE conshdlrEnsureConssMem(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, int num)
int SCIPlinConsStatsGetSum(SCIP_LINCONSSTATS *linconsstats)
#define SCIP_DECL_CONSINIT(x)
SCIP_DECL_CONSLOCK(ConshdlrSubtour::scip_lock)
static SCIP_RETCODE conshdlrDisableConsPropagation(SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons)
void SCIPmessageFPrintInfo(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, const char *formatstr,...)
unsigned int updateobsolete
SCIP_Longint nrespropcalls
#define SCIP_DECL_CONSENFORELAX(x)
SCIP_Longint SCIPconshdlrGetNChildren(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPconsSetInitial(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool initial)
void SCIPconshdlrSetResprop(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSRESPROP((*consresprop)))
SCIP_Bool SCIPconsIsModifiable(SCIP_CONS *cons)
internal methods for problem statistics
static void conshdlrUpdateAgeresetavg(SCIP_CONSHDLR *conshdlr, SCIP_Real age)
SCIP_RETCODE SCIPconshdlrExitsol(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool restart)
SCIP_DECL_CONSPRINT(ConshdlrSubtour::scip_print)
SCIP_RETCODE SCIPconsPresol(SCIP_CONS *cons, SCIP_SET *set, int nrounds, SCIP_PRESOLTIMING timing, int nnewfixedvars, int nnewaggrvars, int nnewchgvartypes, int nnewchgbds, int nnewholes, int nnewdelconss, int nnewaddconss, int nnewupgdconss, int nnewchgcoefs, int nnewchgsides, int *nfixedvars, int *naggrvars, int *nchgvartypes, int *nchgbds, int *naddholes, int *ndelconss, int *naddconss, int *nupgdconss, int *nchgcoefs, int *nchgsides, SCIP_RESULT *result)
int SCIPconshdlrGetNCheckConss(SCIP_CONSHDLR *conshdlr)
void SCIPconshdlrSetDelvars(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDELVARS((*consdelvars)))
SCIP_Bool SCIPconsIsEnforced(SCIP_CONS *cons)
SCIP_Longint SCIPconshdlrGetNSepaCalls(SCIP_CONSHDLR *conshdlr)
#define BMSallocMemory(ptr)
SCIP_RETCODE SCIPconsPrint(SCIP_CONS *cons, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
#define BMSreallocMemoryArray(ptr, num)
internal methods for constraints and constraint handlers
SCIP_Bool SCIPconsIsSeparated(SCIP_CONS *cons)
SCIP_RETCODE SCIPconsCopy(SCIP_CONS **cons, SCIP_SET *set, const char *name, SCIP *sourcescip, SCIP_CONSHDLR *sourceconshdlr, SCIP_CONS *sourcecons, 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_Longint storedpropdomchgcount
#define SCIP_DECL_CONSACTIVE(x)
static SCIP_RETCODE conssetchgEnsureDisabledconssSize(SCIP_CONSSETCHG *conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
void SCIPconshdlrSetGetVars(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETVARS((*consgetvars)))
SCIP_Longint lastenforelaxnode
SCIP_Bool SCIPconsIsObsolete(SCIP_CONS *cons)
int SCIPconshdlrGetNAggrVars(SCIP_CONSHDLR *conshdlr)
static SCIP_RETCODE conshdlrAddInitcons(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, SCIP_STAT *stat, SCIP_CONS *cons)
int SCIPconsGetNUses(SCIP_CONS *cons)
unsigned int markpropagate
int SCIPconshdlrGetNAddConss(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPconsFree(SCIP_CONS **cons, BMS_BLKMEM *blkmem, SCIP_SET *set)
void SCIPconshdlrSetTrans(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSTRANS((*constrans)))
SCIP_RETCODE SCIPconssetchgMakeGlobal(SCIP_CONSSETCHG **conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_REOPT *reopt)
SCIP_RETCODE SCIPconsMarkPropagate(SCIP_CONS *cons, SCIP_SET *set)
SCIP_RETCODE SCIPconsEnforelax(SCIP_CONS *cons, SCIP_SET *set, SCIP_SOL *sol, SCIP_Bool solinfeasible, SCIP_RESULT *result)
SCIP_RETCODE SCIPconssetchgAddDisabledCons(SCIP_CONSSETCHG **conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_CONS *cons)
SCIP_STAGE SCIPsetGetStage(SCIP_SET *set)
SCIP_RETCODE SCIPconsEnable(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat)
unsigned int updatedeactivate
#define SCIP_DECL_CONSHDLRCOPY(x)
static SCIP_RETCODE conshdlrDisableCons(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, SCIP_STAT *stat, SCIP_CONS *cons)
struct SCIP_ConshdlrData SCIP_CONSHDLRDATA
SCIP_DECL_CONSCOPY(ConshdlrSubtour::scip_copy)
int SCIPconsGetActiveDepth(SCIP_CONS *cons)
SCIP_RETCODE SCIPconshdlrSeparateSol(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_SEPASTORE *sepastore, SCIP_SOL *sol, int depth, SCIP_Bool execdelayed, SCIP_RESULT *result)
SCIP_Bool SCIPconsIsConflict(SCIP_CONS *cons)
SCIP_RETCODE SCIPprobAddCons(SCIP_PROB *prob, SCIP_SET *set, SCIP_STAT *stat, SCIP_CONS *cons)
void SCIPconshdlrSetExitpre(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSEXITPRE((*consexitpre)))
SCIP_RETCODE SCIPconsEnfolp(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool solinfeasible, SCIP_RESULT *result)
void SCIPconsAddUpgradeLocks(SCIP_CONS *cons, int nlocks)
#define BMSallocBlockMemory(mem, ptr)
SCIP_Bool SCIPconsIsMarkedPropagate(SCIP_CONS *cons)
SCIP_RETCODE SCIPconsDeactivate(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat)
SCIP_RETCODE SCIPconsDisablePropagation(SCIP_CONS *cons, SCIP_SET *set)
void SCIPconsSetLocal(SCIP_CONS *cons, SCIP_Bool local)
#define BMSclearMemoryArray(ptr, num)
common defines and data types used in all packages of SCIP
SCIP_RETCODE SCIPlinConsStatsCreate(SCIP *scip, SCIP_LINCONSSTATS **linconsstats)
struct BMS_BlkMem BMS_BLKMEM
SCIP_RETCODE SCIPconshdlrFree(SCIP_CONSHDLR **conshdlr, SCIP_SET *set)
SCIP_RETCODE SCIPconshdlrCheck(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool printreason, SCIP_Bool completely, SCIP_RESULT *result)
SCIP_RETCODE SCIPconshdlrsStorePropagationStatus(SCIP_SET *set, SCIP_CONSHDLR **conshdlrs, int nconshdlrs)
SCIP_Bool SCIPconshdlrWasSolSeparationDelayed(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPsetAddBoolParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, SCIP_Bool *valueptr, SCIP_Bool isadvanced, SCIP_Bool defaultvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
SCIP_Longint nprobholechgs
SCIP_RETCODE SCIPconshdlrLockVars(SCIP_CONSHDLR *conshdlr, SCIP_SET *set)
static SCIP_RETCODE conshdlrMarkConsObsolete(SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons)
unsigned int nupgradelocks
static SCIP_RETCODE conshdlrAddPropcons(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, SCIP_CONS *cons)
int SCIPconshdlrGetNAddHoles(SCIP_CONSHDLR *conshdlr)
void SCIPconshdlrSetInitlp(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITLP((*consinitlp)))
#define BMSreallocBlockMemoryArray(mem, ptr, oldnum, newnum)
SCIP_RETCODE SCIPconsInitlp(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool *infeasible)
SCIP_RETCODE SCIPconsCreate(SCIP_CONS **cons, BMS_BLKMEM *blkmem, SCIP_SET *set, 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 original, SCIP_Bool deleteconsdata)
SCIP_Real SCIPconshdlrGetSetupTime(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPconsCheck(SCIP_CONS *cons, SCIP_SET *set, SCIP_SOL *sol, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool printreason, SCIP_RESULT *result)
SCIP_RETCODE SCIPconsSepalp(SCIP_CONS *cons, SCIP_SET *set, SCIP_RESULT *result)
static SCIP_RETCODE conssetchgEnsureAddedconssSize(SCIP_CONSSETCHG *conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
SCIP_CONSHDLRDATA * conshdlrdata
void SCIPconshdlrSetGetDiveBdChgs(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETDIVEBDCHGS((*consgetdivebdchgs)))
SCIP_Longint lastenfolpdomchgcount
SCIP_RETCODE SCIPconsSetEnforced(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool enforce)
SCIP_RETCODE SCIPconsResolvePropagation(SCIP_CONS *cons, SCIP_SET *set, SCIP_VAR *infervar, int inferinfo, SCIP_BOUNDTYPE inferboundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Real relaxedbd, SCIP_RESULT *result)