87#define CONSHDLR_NAME "orbitope_full"
88#define CONSHDLR_DESC "symmetry breaking constraint handler relying on full orbitopes"
89#define CONSHDLR_SEPAPRIORITY +40100
90#define CONSHDLR_ENFOPRIORITY -1005200
91#define CONSHDLR_CHECKPRIORITY -1005200
92#define CONSHDLR_SEPAFREQ -1
93#define CONSHDLR_PROPFREQ 1
94#define CONSHDLR_EAGERFREQ -1
96#define CONSHDLR_MAXPREROUNDS -1
97#define CONSHDLR_DELAYSEPA FALSE
98#define CONSHDLR_DELAYPROP FALSE
99#define CONSHDLR_NEEDSCONS TRUE
101#define CONSHDLR_PROP_TIMING SCIP_PROPTIMING_BEFORELP
102#define CONSHDLR_PRESOLTIMING SCIP_PRESOLTIMING_MEDIUM
104#define DEFAULT_FORCECONSCOPY FALSE
111struct SCIP_ConshdlrData
146 nrows = (*consdata)->nrows;
147 ncols = (*consdata)->ncols;
148 for (
i = 0;
i < nrows; ++
i)
151 for (j = 0; j < ncols; ++j)
189 for (
i = 0;
i < nrows; ++
i)
194 (*consdata)->nrows = nrows;
195 (*consdata)->ncols = ncols;
196 (*consdata)->resolveprop = resolveprop;
197 (*consdata)->ismodelcons = ismodelcons;
202 for (
i = 0;
i < nrows; ++
i)
207 for (j = 0; j < ncols; ++j)
216 for (
i = 0;
i < nrows; ++
i)
218 for (j = 0; j < ncols; ++j)
234 int* minfixedrowlexmin,
248 assert( !resprop || minfixedrowlexmin !=
NULL );
256 for (j = ncols - 2; j >= 0; --j)
258 int maxdiscriminating;
261 maxdiscriminating = nrows;
264 for (
i = 0;
i < nrows; ++
i)
267 if ( minfixed == -1 && lexminfixes[
i][j] != 0 && lexminfixes[
i][j + 1] != 1 )
269 assert( lexminfixes[
i][j + 1] == 0 );
271 maxdiscriminating =
i;
275 if ( minfixed == -1 && lexminfixes[
i][j] != lexminfixes[
i][j + 1] && lexminfixes[
i][j] != 2 )
277 assert( lexminfixes[
i][j + 1] != 2 );
282 if ( maxdiscriminating > minfixed )
292 for (
i = 0;
i < nrows; ++
i)
294 if ( lexminfixes[
i][j] == 2 )
296 if (
i < maxdiscriminating || minfixed == -1 )
297 lexminfixes[
i][j] = lexminfixes[
i][j + 1];
298 else if (
i == maxdiscriminating )
299 lexminfixes[
i][j] = 1;
301 lexminfixes[
i][j] = 0;
310 if ( minfixed == -1 )
311 minfixedrowlexmin[j] = nrows - 1;
313 minfixedrowlexmin[j] = minfixed;
317 if ( minfixedrowlexmin[j + 1] < minfixedrowlexmin[j] )
318 minfixedrowlexmin[j + 1] = minfixedrowlexmin[j];
331 int* minfixedrowlexmax,
345 assert( !resprop || minfixedrowlexmax !=
NULL );
350 for (j = 1; j < ncols; ++j)
352 int maxdiscriminating;
355 maxdiscriminating = nrows;
358 for (
i = 0;
i < nrows; ++
i)
361 if ( minfixed == -1 && lexmaxfixes[
i][j - 1] != 0 && lexmaxfixes[
i][j] != 1 )
363 assert( lexmaxfixes[
i][j - 1] == 1 );
365 maxdiscriminating =
i;
369 if ( minfixed == -1 && lexmaxfixes[
i][j - 1] != lexmaxfixes[
i][j] && lexmaxfixes[
i][j] != 2 )
371 assert( lexmaxfixes[
i][j - 1] != 2 );
376 if ( maxdiscriminating > minfixed )
386 for (
i = 0;
i < nrows; ++
i)
388 if ( lexmaxfixes[
i][j] == 2 )
390 if (
i < maxdiscriminating || minfixed == -1 )
391 lexmaxfixes[
i][j] = lexmaxfixes[
i][j - 1];
392 else if (
i == maxdiscriminating )
393 lexmaxfixes[
i][j] = 0;
395 lexmaxfixes[
i][j] = 1;
404 if ( minfixed == -1 )
405 minfixedrowlexmax[j] = nrows - 1;
407 minfixedrowlexmax[j] = minfixed;
411 if ( minfixedrowlexmax[j - 1] < minfixedrowlexmax[j] )
412 minfixedrowlexmax[j - 1] = minfixedrowlexmax[j];
453 assert( consdata->nrows > 0 );
454 assert( consdata->ncols > 0 );
457 nrows = consdata->nrows;
458 ncols = consdata->ncols;
459 vars = consdata->vars;
465 for (
i = 0;
i < nrows; ++
i)
470 for (
i = 0;
i < nrows; ++
i)
472 for (j = 0; j < ncols; ++j)
475 lexminfixes[
i][j] = 1;
477 lexminfixes[
i][j] = 0;
479 lexminfixes[
i][j] = 2;
486 if ( *infeasible ==
TRUE )
493 for (
i = 0;
i < nrows; ++
i)
498 for (
i = 0;
i < nrows; ++
i)
500 for (j = 0; j < ncols; ++j)
503 lexmaxfixes[
i][j] = 0;
505 lexmaxfixes[
i][j] = 1;
507 lexmaxfixes[
i][j] = 2;
520 for (j = 0; j < ncols; ++j)
522 for (
i = 0;
i < nrows; ++
i)
524 if ( lexminfixes[
i][j] != lexmaxfixes[
i][j] )
532 cons, 0, infeasible, &success) );
541 for (
i = nrows - 1;
i >= 0; --
i)
546 for (
i = nrows - 1;
i >= 0; --
i)
578 int* minfixedrowlexmin;
579 int* minfixedrowlexmax;
595 assert( consdata->nrows > 0 );
596 assert( consdata->ncols > 0 );
599 nrows = consdata->nrows;
600 ncols = consdata->ncols;
601 vars = consdata->vars;
603 assert( inferinfo <= consdata->nrows );
609 for (
i = 0;
i < nrows; ++
i)
616 minfixedrowlexmin[ncols - 1] = -1;
618 for (
i = 0;
i < nrows; ++
i)
620 for (j = 0; j < ncols; ++j)
623 lexminfixes[
i][j] = 1;
625 lexminfixes[
i][j] = 0;
627 lexminfixes[
i][j] = 2;
641 for (
i = 0;
i < nrows; ++
i)
648 minfixedrowlexmax[0] = -1;
650 for (
i = 0;
i < nrows; ++
i)
652 for (j = 0; j < ncols; ++j)
655 lexmaxfixes[
i][j] = 0;
657 lexmaxfixes[
i][j] = 1;
659 lexmaxfixes[
i][j] = 2;
672 for (j = 0; j < ncols; ++j)
674 int ub =
MAX(minfixedrowlexmin[j], minfixedrowlexmax[j]);
676 for (
i = 0;
i <= ub; ++
i)
689 for (
i = nrows - 1;
i >= 0; --
i)
695 for (
i = nrows - 1;
i >= 0; --
i)
730 assert( consdata->nrows > 0 );
731 assert( consdata->ncols > 0 );
732 assert( ! consdata->ismodelcons );
734 vars = consdata->vars;
735 nrows = consdata->nrows;
736 ncols = consdata->ncols;
744 for (j = 1; j < ncols && *feasible; ++j)
746 for (
i = 0;
i < nrows; ++
i)
748 vars1[
i] =
vars[
i][j - 1];
795 vars = consdata->vars;
796 nrows = consdata->nrows;
797 ncols = consdata->ncols;
804 for (j = 0; j < ncols - 1 && ! *infeasible; ++j)
808 for (
i = 0;
i < nrows; ++
i)
827 for (k = 0; k <=
i; ++k)
913 for (
c = 0;
c < nconss && ! infeasible;
c++)
929 if ( enforce && !consdata->ismodelcons )
936 if (
c >= nusefulconss && ncuts > 0 )
945 else if ( ncuts > 0 )
983 assert( consdata->nrows > 0 );
984 assert( consdata->ncols > 0 );
986 vars = consdata->vars;
987 nrows = consdata->nrows;
988 ncols = consdata->ncols;
991 for (
i = 0;
i < nrows; ++
i)
993 for (j = 0; j < ncols; ++j)
1025 assert( consdata->nrows > 0 );
1026 assert( consdata->ncols > 0 );
1028 vars = consdata->vars;
1029 nrows = consdata->nrows;
1030 ncols = consdata->ncols;
1033 for (
i = 0;
i < nrows; ++
i)
1035 for (j = 0; j < ncols; ++j)
1127 sourcedata->resolveprop, sourcedata->ismodelcons) );
1146 SCIPdebugMsg(
scip,
"Separation of full orbitope constraint handler <%s> for LP solution.\n",
1170 SCIPdebugMsg(
scip,
"Separation of full orbitope constraint handler <%s> for primal solution.\n",
1191 SCIPdebugMsg(
scip,
"Enforcement for full orbitope constraint handler <%s> for LP solution.\n",
1209 SCIPdebugMsg(
scip,
"Enforcement for full orbitope constraint handler <%s> for relaxation solution.\n",
1232 if ( objinfeasible || solinfeasible )
1247 if ( !consdata->ismodelcons )
1284 if ( !consdata->ismodelcons )
1322 for (
c = 0;
c < nusefulconss && !infeasible; ++
c)
1330 nfixedvars += nfixed;
1337 SCIPdebugMsg(
scip,
"Propagation via orbitopal fixing proved node to be infeasible.\n");
1339 else if ( nfixedvars > 0 )
1342 SCIPdebugMsg(
scip,
"Propagated %d variables via orbitopal fixing.\n", nfixedvars);
1344 else if ( nusefulconss > 0 )
1347 SCIPdebugMsg(
scip,
"Propagation via orbitopal fixing did not find anything.\n");
1369 noldfixedvars = *nfixedvars;
1375 for (
c = 0;
c < nconss && !infeasible; ++
c)
1385 *nfixedvars += nfixed;
1393 SCIPdebugMsg(
scip,
"Full orbitope constraint <%s> is redundant: it does not contain active variables\n",
1408 else if ( *nfixedvars > noldfixedvars )
1412 else if ( nconss > 0 )
1415 SCIPdebugMsg(
scip,
"Presolving via orbitopal fixing did not find anything.\n");
1448 for (
c = 0;
c < nconss; ++
c)
1476 assert( consdata->nrows > 0 );
1477 assert( consdata->ncols > 0 );
1480 SCIPdebugMsg(
scip,
"Locking method for full orbitope constraint handler\n");
1482 nrows = consdata->nrows;
1483 ncols = consdata->ncols;
1484 vars = consdata->vars;
1487 for (
i = 0;
i < nrows; ++
i)
1489 for (j = 0; j < ncols; ++j)
1517 assert( consdata->nrows > 0 );
1518 assert( consdata->ncols > 0 );
1521 nrows = consdata->nrows;
1522 ncols = consdata->ncols;
1523 vars = consdata->vars;
1525 SCIPdebugMsg(
scip,
"Printing method for full orbitope constraint handler\n");
1529 for (
i = 0;
i < nrows; ++
i)
1531 for (j = 0; j < ncols; ++j)
1537 if (
i < nrows - 1 )
1571 SCIPdebugMsg(
scip,
"Copying method for full orbitope constraint handler.\n");
1575 assert( sourcedata->nrows > 0 );
1576 assert( sourcedata->ncols > 0 );
1583 if ( !sourcedata->ismodelcons && !conshdlrdata->forceconscopy )
1590 nrows = sourcedata->nrows;
1591 ncols = sourcedata->ncols;
1592 sourcevars = sourcedata->vars;
1595 for (
i = 0;
i < nrows && *
valid; ++
i)
1599 for (j = 0; j < ncols && *
valid; ++j)
1614 sourcedata->resolveprop, sourcedata->ismodelcons,
1615 initial,
separate, enforce, check,
propagate, local, modifiable, dynamic, removable, stickingatnode) );
1620 for (k =
i - 1; k >= 0; --k)
1651 if( strncmp(s,
"fullOrbitope(", 13) != 0 )
1675 endptr = strchr(endptr,
')');
1677 if( endptr ==
NULL || j > 0 )
1697 if( nrows > maxnrows )
1701 assert( nrows <= maxnrows );
1712 if( *s ==
'.' || *s ==
')' )
1714 else if( ncols > maxncols )
1718 assert( ncols <= maxncols );
1721 else if( ( j < ncols-1 ) == ( *s ==
'.' || *s ==
')' ) )
1736 if( *s ==
',' || *s ==
'.' )
1744 initial,
separate, enforce, check,
propagate, local, modifiable, dynamic, removable, stickingatnode) );
1747 for( k = nrows - 1; k >= 0; --k )
1768 if ( varssize < consdata->ncols * consdata->nrows )
1776 for (
i = 0;
i < consdata->nrows; ++
i)
1778 for (j = 0; j < consdata->ncols; ++j)
1779 vars[cnt++] = consdata->vars[
i][j];
1799 *
nvars = consdata->ncols * consdata->nrows;
1825 consEnfolpOrbitopeFull, consEnfopsOrbitopeFull, consCheckOrbitopeFull, consLockOrbitopeFull,
1849 "Whether orbitope constraints should be forced to be copied to sub SCIPs.",
1899 if ( conshdlr ==
NULL )
1914 for (
i = 0;
i < nrows; ++
i)
1918 for (j = 0; j < ncols; ++j)
1957 SCIP_CALL(
SCIPcreateCons(
scip, cons, name, conshdlr, consdata, initial,
separate, enforce, check,
propagate,
1958 local, modifiable, dynamic, removable, stickingatnode) );
1982 resolveprop, ismodelcons,
TRUE,
TRUE,
TRUE,
TRUE,
TRUE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE) );
#define CONSHDLR_NEEDSCONS
#define CONSHDLR_SEPAFREQ
#define CONSHDLR_CHECKPRIORITY
#define CONSHDLR_PROP_TIMING
#define CONSHDLR_MAXPREROUNDS
#define CONSHDLR_SEPAPRIORITY
#define CONSHDLR_PROPFREQ
#define CONSHDLR_PRESOLTIMING
#define CONSHDLR_EAGERFREQ
#define CONSHDLR_ENFOPRIORITY
#define CONSHDLR_DELAYSEPA
#define CONSHDLR_DELAYPROP
#define DEFAULT_FORCECONSCOPY
constraint handler for orbisack constraints
static SCIP_RETCODE checkRedundantCons(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *redundant)
static SCIP_RETCODE checkFullOrbitopeSolution(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool printreason, SCIP_Bool *feasible)
static SCIP_RETCODE separateConstraints(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss, int nusefulconss, SCIP_SOL *sol, SCIP_RESULT *result, SCIP_Bool enforce)
static SCIP_RETCODE propagateCons(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *infeasible, int *nfixedvars)
static SCIP_RETCODE resolvePropagationFullOrbitope(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons, int inferinfo, SCIP_BDCHGIDX *bdchgidx, SCIP_RESULT *result)
static SCIP_RETCODE findLexMaxFace(SCIP_VAR ***vars, int **lexmaxfixes, int *minfixedrowlexmax, SCIP_Bool *infeasible, int nrows, int ncols, SCIP_Bool resprop)
static SCIP_RETCODE separateCoversOrbisack(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, int *ngen, SCIP_Bool *infeasible)
static SCIP_RETCODE consdataFree(SCIP *scip, SCIP_CONSDATA **consdata)
static SCIP_RETCODE findLexMinFace(SCIP_VAR ***vars, int **lexminfixes, int *minfixedrowlexmin, SCIP_Bool *infeasible, int nrows, int ncols, SCIP_Bool resprop)
static SCIP_RETCODE consdataCreate(SCIP *scip, SCIP_CONSDATA **consdata, SCIP_VAR ***vars, int nrows, int ncols, SCIP_Bool resolveprop, SCIP_Bool ismodelcons)
static SCIP_RETCODE replaceAggregatedVarsOrbitopeFull(SCIP *scip, SCIP_CONS *cons)
constraint handler for full orbitope constraints w.r.t. the full symmetric group
Constraint handler for the set partitioning / packing / covering constraints .
SCIP_RETCODE SCIPcheckSolutionOrbisack(SCIP *scip, SCIP_SOL *sol, SCIP_VAR **vars1, SCIP_VAR **vars2, int nrows, SCIP_Bool printreason, SCIP_Bool *feasible)
SCIP_RETCODE SCIPcreateConsBasicOrbitopeFull(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR ***vars, int nrows, int ncols, SCIP_Bool resolveprop, SCIP_Bool ismodelcons)
SCIP_RETCODE SCIPcreateConsOrbitopeFull(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR ***vars, int nrows, int ncols, SCIP_Bool resolveprop, SCIP_Bool ismodelcons, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPincludeConshdlrOrbitopeFull(SCIP *scip)
int SCIPgetSubscipDepth(SCIP *scip)
SCIP_RETCODE SCIPgetVarCopy(SCIP *sourcescip, SCIP *targetscip, SCIP_VAR *sourcevar, SCIP_VAR **targetvar, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, SCIP_Bool *success)
SCIP_Bool SCIPisTransformed(SCIP *scip)
SCIP_STAGE SCIPgetStage(SCIP *scip)
SCIP_RETCODE SCIPdelCons(SCIP *scip, SCIP_CONS *cons)
void SCIPinfoMessage(SCIP *scip, FILE *file, const char *formatstr,...)
SCIP_RETCODE SCIPaddBoolParam(SCIP *scip, const char *name, const char *desc, SCIP_Bool *valueptr, SCIP_Bool isadvanced, SCIP_Bool defaultvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
int SCIPgetNLPBranchCands(SCIP *scip)
SCIP_RETCODE SCIPaddConflictBinvar(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPsetConshdlrFree(SCIP *scip, SCIP_CONSHDLR *conshdlr,)
SCIP_RETCODE SCIPsetConshdlrPresol(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRESOL((*conspresol)), int maxprerounds, SCIP_PRESOLTIMING presoltiming)
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 SCIPsetConshdlrEnforelax(SCIP *scip, SCIP_CONSHDLR *conshdlr,)
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 SCIPsetConshdlrParse(SCIP *scip, SCIP_CONSHDLR *conshdlr,)
SCIP_RETCODE SCIPsetConshdlrGetVars(SCIP *scip, SCIP_CONSHDLR *conshdlr,)
SCIP_RETCODE SCIPsetConshdlrPrint(SCIP *scip, SCIP_CONSHDLR *conshdlr,)
const char * SCIPconshdlrGetName(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPsetConshdlrCopy(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)),)
SCIP_CONSHDLR * SCIPfindConshdlr(SCIP *scip, const char *name)
SCIP_RETCODE SCIPsetConshdlrDelete(SCIP *scip, SCIP_CONSHDLR *conshdlr,)
SCIP_CONSHDLRDATA * SCIPconshdlrGetData(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPsetConshdlrTrans(SCIP *scip, SCIP_CONSHDLR *conshdlr,)
SCIP_RETCODE SCIPsetConshdlrResprop(SCIP *scip, SCIP_CONSHDLR *conshdlr,)
SCIP_RETCODE SCIPsetConshdlrExitpre(SCIP *scip, SCIP_CONSHDLR *conshdlr,)
SCIP_RETCODE SCIPsetConshdlrGetNVars(SCIP *scip, SCIP_CONSHDLR *conshdlr,)
SCIP_CONSDATA * SCIPconsGetData(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsDynamic(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsInitial(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsChecked(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsEnforced(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsActive(SCIP_CONS *cons)
SCIP_RETCODE SCIPcreateCons(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_CONSHDLR *conshdlr, SCIP_CONSDATA *consdata, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_Bool SCIPconsIsPropagated(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsLocal(SCIP_CONS *cons)
const char * SCIPconsGetName(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsModifiable(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsStickingAtNode(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsSeparated(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsRemovable(SCIP_CONS *cons)
SCIP_Bool SCIPisEfficacious(SCIP *scip, SCIP_Real efficacy)
SCIP_RETCODE SCIPaddRow(SCIP *scip, SCIP_ROW *row, SCIP_Bool forcecut, SCIP_Bool *infeasible)
int SCIPcalcMemGrowSize(SCIP *scip, int num)
#define SCIPallocBufferArray(scip, ptr, num)
#define SCIPreallocBufferArray(scip, ptr, num)
#define SCIPfreeBufferArray(scip, ptr)
#define SCIPallocBlockMemoryArray(scip, ptr, num)
#define SCIPfreeBlockMemory(scip, ptr)
#define SCIPfreeBlockMemoryArrayNull(scip, ptr, num)
#define SCIPallocBlockMemory(scip, ptr)
#define SCIPduplicateBlockMemoryArray(scip, ptr, source, num)
SCIP_RETCODE SCIPcacheRowExtensions(SCIP *scip, SCIP_ROW *row)
SCIP_RETCODE SCIPcreateEmptyRowCons(SCIP *scip, SCIP_ROW **row, SCIP_CONS *cons, const char *name, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
SCIP_RETCODE SCIPflushRowExtensions(SCIP *scip, SCIP_ROW *row)
SCIP_RETCODE SCIPaddVarToRow(SCIP *scip, SCIP_ROW *row, SCIP_VAR *var, SCIP_Real val)
SCIP_RETCODE SCIPprintRow(SCIP *scip, SCIP_ROW *row, FILE *file)
SCIP_RETCODE SCIPreleaseRow(SCIP *scip, SCIP_ROW **row)
SCIP_Real SCIPgetSolVal(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var)
SCIP_Real SCIPinfinity(SCIP *scip)
SCIP_Bool SCIPisInfinity(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisZero(SCIP *scip, SCIP_Real val)
SCIP_VAR * SCIPvarGetNegatedVar(SCIP_VAR *var)
SCIP_Bool SCIPvarIsActive(SCIP_VAR *var)
SCIP_Bool SCIPvarIsBinary(SCIP_VAR *var)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)
SCIP_Real SCIPvarGetObj(SCIP_VAR *var)
SCIP_RETCODE SCIPparseVarName(SCIP *scip, const char *str, SCIP_VAR **var, char **endptr)
SCIP_Real SCIPvarGetUbGlobal(SCIP_VAR *var)
SCIP_RETCODE SCIPaddVarLocksType(SCIP *scip, SCIP_VAR *var, SCIP_LOCKTYPE locktype, int nlocksdown, int nlocksup)
SCIP_Real SCIPgetVarUbAtIndex(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
SCIP_RETCODE SCIPreleaseVar(SCIP *scip, SCIP_VAR **var)
SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)
SCIP_Bool SCIPvarIsNegated(SCIP_VAR *var)
SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)
SCIP_RETCODE SCIPmarkDoNotMultaggrVar(SCIP *scip, SCIP_VAR *var)
SCIP_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 SCIPgetBinvarRepresentative(SCIP *scip, SCIP_VAR *var, SCIP_VAR **repvar, SCIP_Bool *negated)
SCIP_RETCODE SCIPgetTransformedVar(SCIP *scip, SCIP_VAR *var, SCIP_VAR **transvar)
SCIP_RETCODE SCIPcaptureVar(SCIP *scip, SCIP_VAR *var)
SCIP_Bool SCIPallowStrongDualReds(SCIP *scip)
SCIP_RETCODE SCIPskipSpace(char **s)
assert(minobj< SCIPgetCutoffbound(scip))
static SCIP_Bool propagate
memory allocation routines
public methods for managing constraints
public methods for message output
public methods for problem variables
public methods for branching rule plugins and branching
public methods for conflict handler plugins and conflict analysis
public methods for constraint handler plugins and constraints
public methods for problem copies
public methods for cuts and aggregation rows
public methods for the LP relaxation, rows and columns
public methods for memory management
public methods for message handling
public methods for numerical tolerances
public methods for SCIP parameter handling
public methods for global and local (sub)problems
public methods for the probing mode
public methods for solutions
public methods for SCIP variables
static SCIP_RETCODE separate(SCIP *scip, SCIP_SEPA *sepa, SCIP_SOL *sol, SCIP_RESULT *result)
Main separation function.
methods for handling symmetries
#define SCIP_DECL_CONSENFOLP(x)
#define SCIP_DECL_CONSDELETE(x)
struct SCIP_Cons SCIP_CONS
#define SCIP_DECL_CONSGETVARS(x)
#define SCIP_DECL_CONSPRINT(x)
struct SCIP_ConshdlrData SCIP_CONSHDLRDATA
#define SCIP_DECL_CONSSEPALP(x)
#define SCIP_DECL_CONSENFORELAX(x)
#define SCIP_DECL_CONSPROP(x)
#define SCIP_DECL_CONSGETNVARS(x)
#define SCIP_DECL_CONSRESPROP(x)
#define SCIP_DECL_CONSENFOPS(x)
#define SCIP_DECL_CONSPARSE(x)
#define SCIP_DECL_CONSTRANS(x)
#define SCIP_DECL_CONSPRESOL(x)
#define SCIP_DECL_CONSEXITPRE(x)
#define SCIP_DECL_CONSLOCK(x)
struct SCIP_Conshdlr SCIP_CONSHDLR
#define SCIP_DECL_CONSCOPY(x)
struct SCIP_ConsData SCIP_CONSDATA
#define SCIP_DECL_CONSCHECK(x)
#define SCIP_DECL_CONSHDLRCOPY(x)
#define SCIP_DECL_CONSFREE(x)
#define SCIP_DECL_CONSSEPASOL(x)
enum SCIP_Result SCIP_RESULT
enum SCIP_Retcode SCIP_RETCODE
@ SCIP_STAGE_TRANSFORMING
type definitions for symmetry computations
struct SCIP_BdChgIdx SCIP_BDCHGIDX
@ SCIP_VARSTATUS_MULTAGGR