88#include "zimpl/attribute.h"
89#include "zimpl/ratlptypes.h"
90#include "zimpl/lint.h"
93#include "zimpl/numb.h"
94#include "zimpl/bound.h"
95#include "zimpl/mono.h"
96#include "zimpl/term.h"
98#include "zimpl/xlpglue.h"
99#include "zimpl/zimpllib.h"
110#if defined(__clang__)
111#pragma clang diagnostic ignored "-Wnonnull"
114#define READER_NAME "zplreader"
115#define READER_DESC "file reader for ZIMPL model files"
116#define READER_EXTENSION "zpl"
123#if (ZIMPL_VERSION >= 341)
142#if defined(SCIP_WITH_GMP) && defined(SCIP_WITH_BOOST)
154 numb_get_mpq(numb, temp);
156 SCIPdebug(gmp_printf(
"the rational is: %Qd\n",temp));
158 SCIP_CALL( SCIPrationalCreateBlockGMP(mem, rational, temp) );
191 if( created !=
NULL )
226 readerdata->valid =
TRUE;
247 assert(!readerdata->readerror);
249 scip = readerdata->scip;
252 readerdata->retcode = createProb(
scip, readerdata, name);
255 return (Lps*) readerdata;
267bool xlp_conname_exists(
300 if( term_get_degree(term) == 2 )
321 for(
i = 0;
i < term_get_elements(term); ++
i )
323 monom = term_get_element(term,
i);
324 assert(!numb_equal(mono_get_coeff(monom), numb_zero()));
325 assert(mono_get_degree(monom) <= 2);
326 assert(mono_get_degree(monom) > 0);
327 if (mono_get_degree(monom) == 1)
329 linvars [nlinvars] = (
SCIP_VAR*)mono_get_var(monom, 0);
330 lincoefs[nlinvars] = numb_todbl(mono_get_coeff(monom));
335 assert(mono_get_degree(monom) == 2);
336 quadvar1 [nquadterms] = (
SCIP_VAR*)mono_get_var(monom, 0);
337 quadvar2 [nquadterms] = (
SCIP_VAR*)mono_get_var(monom, 1);
338 quadcoefs[nquadterms] = numb_todbl(mono_get_coeff(monom));
343 SCIP_CALL(
SCIPcreateExprQuadratic(
scip, expr, nlinvars, linvars, lincoefs, nquadterms, quadvar1, quadvar2, quadcoefs,
NULL,
NULL) );
378 for(
i = 0;
i < term_get_elements(term); ++
i )
380 monomial = term_get_element(term,
i);
382 assert(!numb_equal(mono_get_coeff(monomial), numb_zero()));
383 assert(mono_get_degree(monomial) > 0);
386 if( monomialssize == 0 )
392 else if( monomialssize < nmonomials + 1 )
402 for( j = 0; j < mono_get_degree(monomial); ++j )
407 exponent = exponent ==
SCIP_INVALID ? 1.0 : exponent + 1.0;
438 if( mono_get_function(monomial) == MFUN_NONE )
440 monomials[nmonomials] = monomialexpr;
441 coefs[nmonomials] = numb_todbl(mono_get_coeff(monomial));
448 coefs[nmonomials] = 1.0;
451 switch( mono_get_function(monomial) )
458 coefs[nmonomials] = 1.0 / log(10.0);
489 numb_todbl(mono_get_coeff(monomial)),
NULL,
NULL) );
493 numb_todbl(mono_get_coeff(monomial)),
NULL,
NULL) );
498 SCIPerrorMessage(
"ZIMPL function %d invalid here.\n", mono_get_function(monomial));
502 SCIPerrorMessage(
"ZIMPL function %d not supported\n", mono_get_function(monomial));
522 for( j = nmonomials - 1; j >= 0; --j )
524 if( monomials[j] !=
NULL )
599 readerdata->readerror =
TRUE;
624 assert(sciplhs == sciprhs);
630 readerdata->readerror =
TRUE;
637 initial = readerdata->initialconss;
645 usercut = (flags & LP_FLAG_CON_SEPAR) != 0;
646 lazycut = (flags & LP_FLAG_CON_CHECK) != 0;
649 if( usercut && lazycut )
668 if( term_is_linear(term) )
671 if ( flags & LP_FLAG_CON_INDIC )
673 bool lhsIndCons =
FALSE;
674 bool rhsIndCons =
FALSE;
677 "xpl_addcon_term: exact version for indicator constraints not supported\n") );
696 SCIPerrorMessage(
"invalid constraint type <%d> in ZIMPL callback xlp_addcon()\n", type);
697 readerdata->readerror =
TRUE;
705 initial,
separate, enforce, check,
propagate, local, readerdata->dynamicconss, readerdata->dynamicrows,
FALSE) );
708 for(
i = 0;
i < term_get_elements(term);
i++ )
712 const Mono* mono = term_get_element(term,
i);
715 scipvar = (
SCIP_VAR*)mono_get_var(mono, 0);
718 mfun = mono_get_function(mono);
719 if (mfun == MFUN_TRUE || mfun == MFUN_FALSE)
725 assert(!numb_equal(mono_get_coeff(mono), numb_zero()));
726 assert(mono_is_linear(mono));
728 scipval = -numb_todbl(mono_get_coeff(mono));
740 initial,
separate, enforce, check,
propagate, local, readerdata->dynamicconss, readerdata->dynamicrows,
FALSE) );
743 for(
i = 0;
i < term_get_elements(term);
i++ )
747 const Mono* mono = term_get_element(term,
i);
750 scipvar = (
SCIP_VAR*)mono_get_var(mono, 0);
753 mfun = mono_get_function(mono);
754 if (mfun == MFUN_TRUE || mfun == MFUN_FALSE)
760 assert(!numb_equal(mono_get_coeff(mono), numb_zero()));
761 assert(mono_is_linear(mono));
763 scipval = numb_todbl(mono_get_coeff(mono));
780 if( term_get_elements(term) == 1 )
788 assert(!numb_equal(mono_get_coeff(term_get_element(term, 0)), numb_zero()));
789 assert(mono_is_linear(term_get_element(term, 0)));
791 scipvar = (
SCIP_VAR*)mono_get_var(term_get_element(term, 0), 0);
847 initial,
separate, enforce, check,
propagate, local, modifiable, readerdata->dynamicconss, readerdata->dynamicrows,
FALSE) );
858 initial,
separate, enforce, check,
propagate, local, modifiable, readerdata->dynamicconss, readerdata->dynamicrows,
FALSE) );
861 for(
i = 0;
i < term_get_elements(term);
i++ )
863 assert(!numb_equal(mono_get_coeff(term_get_element(term,
i)), numb_zero()));
864 assert(mono_is_linear(term_get_element(term,
i)));
866 scipvar = (
SCIP_VAR*)mono_get_var(term_get_element(term,
i), 0);
877 initial,
separate, enforce, check,
propagate, local, modifiable, readerdata->dynamicconss, readerdata->dynamicrows,
FALSE) );
880 for(
i = 0;
i < term_get_elements(term);
i++ )
885 assert(!numb_equal(mono_get_coeff(term_get_element(term,
i)), numb_zero()));
886 assert(mono_is_linear(term_get_element(term,
i)));
888 scipvar = (
SCIP_VAR*)mono_get_var(term_get_element(term,
i), 0);
889 scipval = numb_todbl(mono_get_coeff(term_get_element(term,
i)));
902 "xpl_addcon_term: exact version for degree == 2 not supported\n") );
916 initial,
separate, enforce, check,
propagate, local, modifiable, readerdata->dynamicconss, readerdata->dynamicrows) );
950 if( term_is_linear(term) )
953 for(
i = 0;
i < term_get_elements(term);
i++ )
958 assert(!numb_equal(mono_get_coeff(term_get_element(term,
i)), numb_zero()));
959 assert(mono_is_linear(term_get_element(term,
i)));
961 scipvar = (
SCIP_VAR*)mono_get_var(term_get_element(term,
i), 0);
967 RcreateNumb(
SCIPblkmem(
scip), &scipvalrat, mono_get_coeff(term_get_element(term,
i)));
983 "xlp_addobj_termr: exact version not supported.\n") );
985 scipval = numb_todbl(mono_get_coeff(term_get_element(term,
i)));
1002 SCIPerrorMessage(
"Could not convert ZIMPL objective term into SCIP expression due to unsupported ZIMPL function.\n");
1026 RcreateNumb(
SCIPblkmem(
scip), &scipvalrat, term_get_constant(term));
1042bool xlp_addcon_term(
1059 scip = readerdata->scip;
1062 if( readerdata->retcode !=
SCIP_OKAY || readerdata->readerror )
1065 readerdata->retcode = addConsTerm(
scip, readerdata, name, type, lhs, rhs, flags, term, &created);
1076 VarClass usevarclass,
1079 const Numb* priority,
1080 const Numb* startval,
1098 switch( bound_get_type(lower) )
1108 case BOUND_MINUS_INFTY:
1114 SCIPerrorMessage(
"invalid lower bound type <%d> in ZIMPL reader\n", bound_get_type(lower));
1121 switch( bound_get_type(upper) )
1131 case BOUND_MINUS_INFTY:
1137 SCIPerrorMessage(
"invalid upper bound type <%d> in ZIMPL reader\n", bound_get_type(upper));
1145 switch( bound_get_type(lower) )
1148 lb = (
SCIP_Real)numb_todbl(bound_get_value(lower));
1153 case BOUND_MINUS_INFTY:
1158 SCIPerrorMessage(
"invalid lower bound type <%d> in ZIMPL reader\n", bound_get_type(lower));
1163 switch( bound_get_type(upper) )
1166 ub = (
SCIP_Real)numb_todbl(bound_get_value(upper));
1171 case BOUND_MINUS_INFTY:
1176 SCIPerrorMessage(
"invalid upper bound type <%d> in ZIMPL reader\n", bound_get_type(upper));
1182 switch( usevarclass )
1199 readerdata->readerror =
TRUE;
1202 initial = !(readerdata->dynamiccols);
1203 removable = readerdata->dynamiccols;
1207 SCIP_CALL(
SCIPcreateVarImpl(
scip, &
var, name, lb, ub, 0.0, vartype, varimpltype, initial, removable,
1213#ifdef SCIP_MORE_DEBUG
1226 if( !numb_equal(priority, numb_unknown()) )
1228 if( numb_is_int(priority) )
1229 branchpriority = numb_toint(priority);
1232 if( !readerdata->branchpriowarning )
1235 "ZIMPL reader: fractional branching priorities in input - rounding down to integer values\n");
1236 readerdata->branchpriowarning =
TRUE;
1238 branchpriority = (int)numb_todbl(priority);
1246 if( readerdata->valid )
1249 if( numb_equal(startval, numb_unknown()) )
1251 SCIPdebugMsg(
scip,
"primal solution candidate contains an unknown value for variable <%s>(%g)\n",
1253 readerdata->valid =
FALSE;
1278 (*zplvar) = (Var*)
var;
1290 VarClass usevarclass,
1293 const Numb* priority,
1294 const Numb* startval
1304 scip = readerdata->scip;
1309 if( readerdata->retcode !=
SCIP_OKAY || readerdata->readerror )
1312 readerdata->retcode = addVar(
scip, readerdata, name, usevarclass, lower, upper, priority, startval, &zplvar);
1336 "xlp_addsos_termr: exact version not supported.\n") );
1348 readerdata->initialconss,
separate, enforce, check,
propagate, local, readerdata->dynamicconss, readerdata->dynamicrows,
FALSE) );
1351 for(
i = 0;
i < term_get_elements(term);
i++ )
1356 assert( mono_is_linear(term_get_element(term,
i)) );
1358 var = (
SCIP_VAR*) mono_get_var(term_get_element(term,
i), 0);
1359 weight = numb_todbl(mono_get_coeff(term_get_element(term,
i)));
1373 readerdata->initialconss,
separate, enforce, check,
propagate, local, readerdata->dynamicconss, readerdata->dynamicrows,
FALSE) );
1375 for(
i = 0;
i < term_get_elements(term);
i++ )
1380 assert( mono_is_linear(term_get_element(term,
i)) );
1382 var = (
SCIP_VAR*) mono_get_var(term_get_element(term,
i), 0);
1383 weight = numb_todbl(mono_get_coeff(term_get_element(term,
i)));
1392 SCIPerrorMessage(
"invalid SOS type <%d> in ZIMPL callback xlp_addsos_term()\n", type);
1393 readerdata->readerror =
TRUE;
1405 const Numb* priority,
1416 scip = readerdata->scip;
1419 if( readerdata->retcode !=
SCIP_OKAY || readerdata->readerror )
1422 readerdata->retcode = addSOS(
scip, readerdata, name, type, term);
1428const char* xlp_getvarname(
1440 scip = readerdata->scip;
1448VarClass xlp_getclass(
1459 SCIPgetIntParam(readerdata->scip,
"write/implintlevel", &implintlevel);
1460 assert(implintlevel >= -2);
1461 assert(implintlevel <= 2);
1474 readerdata->readerror =
TRUE;
1492 BoundType boundtype;
1499 scip = readerdata->scip;
1502 if(
SCIP_ERROR == abortReadIfExact(
scip,
NULL,
"xlp_getlower: exact version not supported.\n") )
1504 readerdata->readerror =
TRUE;
1517 boundtype = BOUND_MINUS_INFTY;
1519 boundtype = BOUND_INFTY;
1522 boundtype = BOUND_VALUE;
1526 numb = numb_new_ascii(s);
1530 bound = bound_new(boundtype, numb);
1549 BoundType boundtype;
1556 scip = readerdata->scip;
1559 if(
SCIP_ERROR == abortReadIfExact(
scip,
NULL,
"xlp_getupper: exact version not supported.\n") )
1561 readerdata->readerror =
TRUE;
1574 boundtype = BOUND_MINUS_INFTY;
1576 boundtype = BOUND_INFTY;
1579 boundtype = BOUND_VALUE;
1581 numb = numb_new_ascii(s);
1585 bound = bound_new(boundtype, numb);
1609 scip = readerdata->scip;
1612 if( readerdata->retcode !=
SCIP_OKAY || readerdata->readerror )
1633 scip = readerdata->scip;
1636 if( readerdata->retcode !=
SCIP_OKAY || readerdata->readerror )
1639 readerdata->retcode = addObjTerm(
scip, readerdata, term);
1691 if( compression !=
NULL )
1694 *compextension =
'\0';
1703 if( chdir(path) != 0 )
1709 filename = namewithoutpath;
1733 readerdata->scip =
scip;
1734 readerdata->sol =
NULL;
1735 readerdata->valid =
FALSE;
1736 readerdata->branchpriowarning =
FALSE;
1737 readerdata->readerror =
FALSE;
1746 if( strcmp(paramstr,
"-") == 0 )
1749 if( !zpl_read(filename,
FALSE, (
void*)readerdata) )
1750 readerdata->readerror =
TRUE;
1757 return readerdata->retcode;
1763 char dummy[2] =
"x";
1769 len = (int) strlen(paramstr);
1783 while( p < len && paramstr[p] ==
' ' )
1787 while( p < len && paramstr[p] !=
' ' )
1789 switch( paramstr[p] )
1794 while( p < len && paramstr[p] !=
'"' )
1796 argv[argc][arglen] = paramstr[p];
1805 argv[argc][arglen] = paramstr[p];
1810 argv[argc][arglen] = paramstr[p];
1816 argv[argc][arglen] =
'\0';
1835 for(
i = 1;
i < argc; ++
i )
1842 if( !zpl_read_with_args(argv, argc,
FALSE, (
void*)readerdata) )
1843 readerdata->readerror =
TRUE;
1846 for(
i = argc - 1;
i >= 1; --
i )
1855 return readerdata->retcode;
1864 if( chdir(oldpath) != 0 )
1871 if( readerdata->valid )
1891 if( readerdata->readerror )
1897 if( readerdata->sol !=
NULL )
1922#ifdef SCIP_WITH_ZIMPL
1923#if (ZIMPL_VERSION >= 341)
1946 "reading/zplreader/changedir",
"should the current directory be changed to that of the ZIMPL file before parsing?",
1949 "reading/zplreader/usestartsol",
"should ZIMPL starting solutions be forwarded to SCIP?",
1952 "reading/zplreader/parameters",
"additional parameter string passed to the ZIMPL parser (or - for no additional parameters)",
1955 (void)
SCIPsnprintf(extcodename,
SCIP_MAXSTRLEN,
"ZIMPL %d.%d.%d", ZIMPL_VERSION/100, (ZIMPL_VERSION%100)/10, ZIMPL_VERSION%10);
1960 SCIPwarningMessage(
scip,
"SCIP does only support ZIMPL 3.4.1 and higher. Please update your ZIMPL version %d.%d.%d\n",
1961 ZIMPL_VERSION/100, (ZIMPL_VERSION%100)/10, ZIMPL_VERSION%10);
Constraint handler for linear constraints in their most general form, .
constraint handler for indicator constraints
Constraint handler for linear constraints in their most general form, .
constraint handler for nonlinear constraints specified by algebraic expressions
constraint handler for SOS type 1 constraints
constraint handler for SOS type 2 constraints
absolute expression handler
exponential expression handler
logarithm expression handler
power and signed power expression handlers
product expression handler
handler for sin expressions
SCIP_RETCODE SCIPaddLinearVarNonlinear(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real coef)
SCIP_RETCODE SCIPcreateConsExactLinear(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_RATIONAL **vals, SCIP_RATIONAL *lhs, SCIP_RATIONAL *rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPaddCoefLinear(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real val)
SCIP_RETCODE SCIPaddVarSOS1(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real weight)
SCIP_RETCODE SCIPcreateConsIndicator(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPcreateConsSOS1(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *weights, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPaddCoefExactLinear(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_RATIONAL *val)
SCIP_RETCODE SCIPcreateConsNonlinear(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_EXPR *expr, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable)
SCIP_RETCODE SCIPcreateConsSOS2(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *weights, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPcreateConsLinear(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPsetBinaryVarIndicator(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *binvar)
SCIP_RETCODE SCIPaddVarIndicator(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real val)
SCIP_RETCODE SCIPaddVarSOS2(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real weight)
SCIP_RETCODE SCIPcreateExprProduct(SCIP *scip, SCIP_EXPR **expr, int nchildren, SCIP_EXPR **children, SCIP_Real coefficient, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPcreateExprSin(SCIP *scip, SCIP_EXPR **expr, SCIP_EXPR *child, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPcreateExprCos(SCIP *scip, SCIP_EXPR **expr, SCIP_EXPR *child, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPcreateExprAbs(SCIP *scip, SCIP_EXPR **expr, SCIP_EXPR *child, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPcreateExprSignpower(SCIP *scip, SCIP_EXPR **expr, SCIP_EXPR *child, SCIP_Real exponent, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPcreateExprLog(SCIP *scip, SCIP_EXPR **expr, SCIP_EXPR *child, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPcreateExprExp(SCIP *scip, SCIP_EXPR **expr, SCIP_EXPR *child, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPcreateExprSum(SCIP *scip, SCIP_EXPR **expr, int nchildren, SCIP_EXPR **children, SCIP_Real *coefficients, SCIP_Real constant, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPcreateExprPow(SCIP *scip, SCIP_EXPR **expr, SCIP_EXPR *child, SCIP_Real exponent, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
void SCIPsplitFilename(char *filename, char **path, char **name, char **extension, char **compression)
SCIP_RETCODE SCIPincludeReaderZpl(SCIP *scip)
SCIP_RETCODE SCIPaddVar(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPaddCons(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPsetObjsense(SCIP *scip, SCIP_OBJSENSE objsense)
SCIP_RETCODE SCIPaddOrigObjoffset(SCIP *scip, SCIP_Real addval)
SCIP_OBJSENSE SCIPgetObjsense(SCIP *scip)
SCIP_RETCODE SCIPcreateProb(SCIP *scip, const char *name, SCIP_DECL_PROBDELORIG((*probdelorig)), SCIP_DECL_PROBTRANS((*probtrans)), SCIP_DECL_PROBDELTRANS((*probdeltrans)), SCIP_DECL_PROBINITSOL((*probinitsol)), SCIP_DECL_PROBEXITSOL((*probexitsol)), SCIP_DECL_PROBCOPY((*probcopy)), SCIP_PROBDATA *probdata)
SCIP_CONS * SCIPfindCons(SCIP *scip, const char *name)
SCIP_RETCODE SCIPaddOrigObjoffsetExact(SCIP *scip, SCIP_RATIONAL *addval)
void SCIPhashmapFree(SCIP_HASHMAP **hashmap)
SCIP_Real SCIPhashmapGetImageReal(SCIP_HASHMAP *hashmap, void *origin)
SCIP_RETCODE SCIPhashmapSetImageReal(SCIP_HASHMAP *hashmap, void *origin, SCIP_Real image)
int SCIPhashmapGetNElements(SCIP_HASHMAP *hashmap)
int SCIPhashmapGetNEntries(SCIP_HASHMAP *hashmap)
SCIP_HASHMAPENTRY * SCIPhashmapGetEntry(SCIP_HASHMAP *hashmap, int entryidx)
SCIP_RETCODE SCIPhashmapCreate(SCIP_HASHMAP **hashmap, BMS_BLKMEM *blkmem, int mapsize)
void * SCIPhashmapEntryGetOrigin(SCIP_HASHMAPENTRY *entry)
SCIP_RETCODE SCIPhashmapRemoveAll(SCIP_HASHMAP *hashmap)
SCIP_Real SCIPhashmapEntryGetImageReal(SCIP_HASHMAPENTRY *entry)
void SCIPverbMessage(SCIP *scip, SCIP_VERBLEVEL msgverblevel, FILE *file, const char *formatstr,...)
SCIP_VERBLEVEL SCIPgetVerbLevel(SCIP *scip)
void SCIPwarningMessage(SCIP *scip, const char *formatstr,...)
SCIP_RETCODE SCIPgetBoolParam(SCIP *scip, const char *name, SCIP_Bool *value)
SCIP_RETCODE SCIPaddStringParam(SCIP *scip, const char *name, const char *desc, char **valueptr, SCIP_Bool isadvanced, const char *defaultvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
SCIP_RETCODE SCIPgetStringParam(SCIP *scip, const char *name, char **value)
SCIP_RETCODE SCIPaddBoolParam(SCIP *scip, const char *name, const char *desc, SCIP_Bool *valueptr, SCIP_Bool isadvanced, SCIP_Bool defaultvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
SCIP_RETCODE SCIPgetIntParam(SCIP *scip, const char *name, int *value)
SCIP_RETCODE SCIPreleaseCons(SCIP *scip, SCIP_CONS **cons)
SCIP_Bool SCIPisExact(SCIP *scip)
SCIP_RETCODE SCIPcreateExprQuadratic(SCIP *scip, SCIP_EXPR **expr, int nlinvars, SCIP_VAR **linvars, SCIP_Real *lincoefs, int nquadterms, SCIP_VAR **quadvars1, SCIP_VAR **quadvars2, SCIP_Real *quadcoefs, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPcreateExprMonomial(SCIP *scip, SCIP_EXPR **expr, int nfactors, SCIP_VAR **vars, SCIP_Real *exponents, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPreleaseExpr(SCIP *scip, SCIP_EXPR **expr)
SCIP_RETCODE SCIPincludeExternalCodeInformation(SCIP *scip, const char *name, const char *description)
#define SCIPfreeBuffer(scip, ptr)
BMS_BLKMEM * SCIPblkmem(SCIP *scip)
BMS_BUFMEM * SCIPbuffer(SCIP *scip)
int SCIPcalcMemGrowSize(SCIP *scip, int num)
#define SCIPallocBufferArray(scip, ptr, num)
#define SCIPreallocBufferArray(scip, ptr, num)
#define SCIPfreeBufferArray(scip, ptr)
#define SCIPduplicateBufferArray(scip, ptr, source, num)
#define SCIPallocBuffer(scip, ptr)
#define SCIPfreeBufferArrayNull(scip, ptr)
SCIP_RETCODE SCIPrationalCreateBlock(BMS_BLKMEM *blkmem, SCIP_RATIONAL **rational)
void SCIPrationalAdd(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
SCIP_Real SCIPrationalGetReal(SCIP_RATIONAL *rational)
SCIP_RETCODE SCIPrationalCreateString(BMS_BLKMEM *mem, SCIP_RATIONAL **rational, const char *desc)
void SCIPrationalFreeBlock(BMS_BLKMEM *mem, SCIP_RATIONAL **rational)
int SCIPrationalToString(SCIP_RATIONAL *rational, char *str, int strlen)
void SCIPrationalDiv(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
SCIP_Bool SCIPrationalIsLT(SCIP_RATIONAL *rat1, SCIP_RATIONAL *rat2)
void SCIPrationalSetReal(SCIP_RATIONAL *res, SCIP_Real real)
SCIP_Bool SCIPrationalIsGT(SCIP_RATIONAL *rat1, SCIP_RATIONAL *rat2)
void SCIPrationalFreeBuffer(BMS_BUFMEM *bufmem, SCIP_RATIONAL **rational)
SCIP_Bool SCIPrationalIsPositive(SCIP_RATIONAL *rational)
SCIP_RETCODE SCIPrationalCreateBuffer(BMS_BUFMEM *bufmem, SCIP_RATIONAL **rational)
SCIP_Bool SCIPrationalIsGE(SCIP_RATIONAL *rat1, SCIP_RATIONAL *rat2)
SCIP_Bool SCIPrationalIsInfinity(SCIP_RATIONAL *rational)
SCIP_Real SCIPrationalRoundReal(SCIP_RATIONAL *rational, SCIP_ROUNDMODE_RAT roundmode)
SCIP_Bool SCIPrationalIsNegInfinity(SCIP_RATIONAL *rational)
SCIP_Bool SCIPrationalIsEQ(SCIP_RATIONAL *rat1, SCIP_RATIONAL *rat2)
SCIP_Bool SCIPrationalIsLE(SCIP_RATIONAL *rat1, SCIP_RATIONAL *rat2)
SCIP_RETCODE SCIPsetReaderCopy(SCIP *scip, SCIP_READER *reader,)
SCIP_RETCODE SCIPincludeReaderBasic(SCIP *scip, SCIP_READER **readerptr, const char *name, const char *desc, const char *extension, SCIP_READERDATA *readerdata)
SCIP_RETCODE SCIPsetReaderRead(SCIP *scip, SCIP_READER *reader,)
const char * SCIPreaderGetName(SCIP_READER *reader)
void SCIPreaderMarkExact(SCIP_READER *reader)
SCIP_RETCODE SCIPaddSolFree(SCIP *scip, SCIP_SOL **sol, SCIP_Bool *stored)
SCIP_RETCODE SCIPsetSolValExact(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var, SCIP_RATIONAL *val)
SCIP_RETCODE SCIPsetSolVal(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var, SCIP_Real val)
SCIP_RETCODE SCIPcreateSolExact(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
SCIP_Bool SCIPsolIsExact(SCIP_SOL *sol)
SCIP_Real SCIPinfinity(SCIP *scip)
SCIP_Bool SCIPisInfinity(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPvarIsImpliedIntegral(SCIP_VAR *var)
SCIP_RETCODE SCIPaddVarExactData(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *lb, SCIP_RATIONAL *ub, SCIP_RATIONAL *obj)
SCIP_Real SCIPvarGetObj(SCIP_VAR *var)
SCIP_VARTYPE SCIPvarGetType(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbGlobal(SCIP_VAR *var)
SCIP_RETCODE SCIPchgVarLbGlobalExact(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *newbound)
SCIP_RETCODE SCIPchgVarBranchPriority(SCIP *scip, SCIP_VAR *var, int branchpriority)
SCIP_RETCODE SCIPchgVarUbGlobalExact(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *newbound)
SCIP_RETCODE SCIPcreateVarImpl(SCIP *scip, SCIP_VAR **var, const char *name, SCIP_Real lb, SCIP_Real ub, SCIP_Real obj, SCIP_VARTYPE vartype, SCIP_IMPLINTTYPE impltype, SCIP_Bool initial, SCIP_Bool removable, SCIP_DECL_VARDELORIG((*vardelorig)), SCIP_DECL_VARTRANS((*vartrans)), SCIP_DECL_VARDELTRANS((*vardeltrans)), SCIP_DECL_VARCOPY((*varcopy)), SCIP_VARDATA *vardata)
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_RETCODE SCIPreleaseVar(SCIP *scip, SCIP_VAR **var)
SCIP_RATIONAL * SCIPvarGetLbGlobalExact(SCIP_VAR *var)
SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)
SCIP_IMPLINTTYPE SCIPvarGetImplType(SCIP_VAR *var)
SCIP_RETCODE SCIPprintVar(SCIP *scip, SCIP_VAR *var, FILE *file)
SCIP_RETCODE SCIPcreateVarBasic(SCIP *scip, SCIP_VAR **var, const char *name, SCIP_Real lb, SCIP_Real ub, SCIP_Real obj, SCIP_VARTYPE vartype)
SCIP_RETCODE SCIPchgVarObjExact(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *newobj)
SCIP_RETCODE SCIPchgVarObj(SCIP *scip, SCIP_VAR *var, SCIP_Real newobj)
SCIP_RATIONAL * SCIPvarGetObjExact(SCIP_VAR *var)
SCIP_RATIONAL * SCIPvarGetUbGlobalExact(SCIP_VAR *var)
SCIP_RETCODE SCIPaddVarObj(SCIP *scip, SCIP_VAR *var, SCIP_Real addobj)
int SCIPsnprintf(char *t, int len, const char *s,...)
int SCIPstrncpy(char *t, const char *s, int size)
SCIPfreeSol(scip, &heurdata->sol))
SCIPcreateSol(scip, &heurdata->sol, heur))
assert(minobj< SCIPgetCutoffbound(scip))
static SCIP_Bool propagate
struct BMS_BlkMem BMS_BLKMEM
public functions to work with algebraic expressions
public data structures and miscellaneous methods
public methods for NLP management
public methods for input file readers
public methods for problem variables
wrapper for rational number arithmetic
wrapper for rational number arithmetic that interacts with GMP
public methods for constraint handler plugins and constraints
public methods for exact solving
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 reader plugins
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.
miscellaneous datastructures
struct SCIP_Cons SCIP_CONS
struct SCIP_Expr SCIP_EXPR
struct SCIP_HashMap SCIP_HASHMAP
struct SCIP_HashMapEntry SCIP_HASHMAPENTRY
enum SCIP_Objsense SCIP_OBJSENSE
struct SCIP_Rational SCIP_RATIONAL
type definitions for input file readers
struct SCIP_ReaderData SCIP_READERDATA
struct SCIP_Reader SCIP_READER
#define SCIP_DECL_READERREAD(x)
#define SCIP_DECL_READERCOPY(x)
enum SCIP_Retcode SCIP_RETCODE
enum SCIP_ImplintType SCIP_IMPLINTTYPE
@ SCIP_VARTYPE_CONTINUOUS
enum SCIP_Vartype SCIP_VARTYPE