86#include "zimpl/attribute.h"
87#include "zimpl/ratlptypes.h"
88#include "zimpl/lint.h"
91#include "zimpl/numb.h"
92#include "zimpl/bound.h"
93#include "zimpl/mono.h"
94#include "zimpl/term.h"
96#include "zimpl/xlpglue.h"
97#include "zimpl/zimpllib.h"
108#if defined(__clang__)
109#pragma clang diagnostic ignored "-Wnonnull"
112#define READER_NAME "zplreader"
113#define READER_DESC "file reader for ZIMPL model files"
114#define READER_EXTENSION "zpl"
121#if (ZIMPL_VERSION >= 341)
140#if defined(SCIP_WITH_GMP) && defined(SCIP_WITH_BOOST)
152 numb_get_mpq(numb, temp);
154 SCIPdebug(gmp_printf(
"the rational is: %Qd\n",temp));
156 SCIP_CALL( SCIPrationalCreateBlockGMP(mem, rational, temp) );
189 if( created !=
NULL )
224 readerdata->valid =
TRUE;
245 assert(!readerdata->readerror);
247 scip = readerdata->scip;
250 readerdata->retcode = createProb(
scip, readerdata, name);
253 return (Lps*) readerdata;
265bool xlp_conname_exists(
298 if( term_get_degree(term) == 2 )
319 for(
i = 0;
i < term_get_elements(term); ++
i )
321 monom = term_get_element(term,
i);
322 assert(!numb_equal(mono_get_coeff(monom), numb_zero()));
323 assert(mono_get_degree(monom) <= 2);
324 assert(mono_get_degree(monom) > 0);
325 if (mono_get_degree(monom) == 1)
327 linvars [nlinvars] = (
SCIP_VAR*)mono_get_var(monom, 0);
328 lincoefs[nlinvars] = numb_todbl(mono_get_coeff(monom));
333 assert(mono_get_degree(monom) == 2);
334 quadvar1 [nquadterms] = (
SCIP_VAR*)mono_get_var(monom, 0);
335 quadvar2 [nquadterms] = (
SCIP_VAR*)mono_get_var(monom, 1);
336 quadcoefs[nquadterms] = numb_todbl(mono_get_coeff(monom));
341 SCIP_CALL(
SCIPcreateExprQuadratic(
scip, expr, nlinvars, linvars, lincoefs, nquadterms, quadvar1, quadvar2, quadcoefs,
NULL,
NULL) );
376 for(
i = 0;
i < term_get_elements(term); ++
i )
378 monomial = term_get_element(term,
i);
380 assert(!numb_equal(mono_get_coeff(monomial), numb_zero()));
381 assert(mono_get_degree(monomial) > 0);
384 if( monomialssize == 0 )
390 else if( monomialssize < nmonomials + 1 )
400 for( j = 0; j < mono_get_degree(monomial); ++j )
405 exponent = exponent ==
SCIP_INVALID ? 1.0 : exponent + 1.0;
436 if( mono_get_function(monomial) == MFUN_NONE )
438 monomials[nmonomials] = monomialexpr;
439 coefs[nmonomials] = numb_todbl(mono_get_coeff(monomial));
446 coefs[nmonomials] = 1.0;
449 switch( mono_get_function(monomial) )
456 coefs[nmonomials] = 1.0 / log(10.0);
487 numb_todbl(mono_get_coeff(monomial)),
NULL,
NULL) );
491 numb_todbl(mono_get_coeff(monomial)),
NULL,
NULL) );
496 SCIPerrorMessage(
"ZIMPL function %d invalid here.\n", mono_get_function(monomial));
500 SCIPerrorMessage(
"ZIMPL function %d not supported\n", mono_get_function(monomial));
520 for( j = nmonomials - 1; j >= 0; --j )
522 if( monomials[j] !=
NULL )
597 readerdata->readerror =
TRUE;
622 assert(sciplhs == sciprhs);
628 readerdata->readerror =
TRUE;
635 initial = readerdata->initialconss;
643 usercut = (flags & LP_FLAG_CON_SEPAR) != 0;
644 lazycut = (flags & LP_FLAG_CON_CHECK) != 0;
647 if( usercut && lazycut )
666 if( term_is_linear(term) )
669 if ( flags & LP_FLAG_CON_INDIC )
671 bool lhsIndCons =
FALSE;
672 bool rhsIndCons =
FALSE;
675 "xpl_addcon_term: exact version for indicator constraints not supported\n") );
694 SCIPerrorMessage(
"invalid constraint type <%d> in ZIMPL callback xlp_addcon()\n", type);
695 readerdata->readerror =
TRUE;
703 initial,
separate, enforce, check,
propagate, local, readerdata->dynamicconss, readerdata->dynamicrows,
FALSE) );
706 for(
i = 0;
i < term_get_elements(term);
i++ )
710 const Mono* mono = term_get_element(term,
i);
713 scipvar = (
SCIP_VAR*)mono_get_var(mono, 0);
716 mfun = mono_get_function(mono);
717 if (mfun == MFUN_TRUE || mfun == MFUN_FALSE)
723 assert(!numb_equal(mono_get_coeff(mono), numb_zero()));
724 assert(mono_is_linear(mono));
726 scipval = -numb_todbl(mono_get_coeff(mono));
738 initial,
separate, enforce, check,
propagate, local, readerdata->dynamicconss, readerdata->dynamicrows,
FALSE) );
741 for(
i = 0;
i < term_get_elements(term);
i++ )
745 const Mono* mono = term_get_element(term,
i);
748 scipvar = (
SCIP_VAR*)mono_get_var(mono, 0);
751 mfun = mono_get_function(mono);
752 if (mfun == MFUN_TRUE || mfun == MFUN_FALSE)
758 assert(!numb_equal(mono_get_coeff(mono), numb_zero()));
759 assert(mono_is_linear(mono));
761 scipval = numb_todbl(mono_get_coeff(mono));
778 if( term_get_elements(term) == 1 )
786 assert(!numb_equal(mono_get_coeff(term_get_element(term, 0)), numb_zero()));
787 assert(mono_is_linear(term_get_element(term, 0)));
789 scipvar = (
SCIP_VAR*)mono_get_var(term_get_element(term, 0), 0);
845 initial,
separate, enforce, check,
propagate, local, modifiable, readerdata->dynamicconss, readerdata->dynamicrows,
FALSE) );
856 initial,
separate, enforce, check,
propagate, local, modifiable, readerdata->dynamicconss, readerdata->dynamicrows,
FALSE) );
859 for(
i = 0;
i < term_get_elements(term);
i++ )
861 assert(!numb_equal(mono_get_coeff(term_get_element(term,
i)), numb_zero()));
862 assert(mono_is_linear(term_get_element(term,
i)));
864 scipvar = (
SCIP_VAR*)mono_get_var(term_get_element(term,
i), 0);
875 initial,
separate, enforce, check,
propagate, local, modifiable, readerdata->dynamicconss, readerdata->dynamicrows,
FALSE) );
878 for(
i = 0;
i < term_get_elements(term);
i++ )
883 assert(!numb_equal(mono_get_coeff(term_get_element(term,
i)), numb_zero()));
884 assert(mono_is_linear(term_get_element(term,
i)));
886 scipvar = (
SCIP_VAR*)mono_get_var(term_get_element(term,
i), 0);
887 scipval = numb_todbl(mono_get_coeff(term_get_element(term,
i)));
900 "xpl_addcon_term: exact version for degree == 2 not supported\n") );
914 initial,
separate, enforce, check,
propagate, local, modifiable, readerdata->dynamicconss, readerdata->dynamicrows) );
948 if( term_is_linear(term) )
951 for(
i = 0;
i < term_get_elements(term);
i++ )
956 assert(!numb_equal(mono_get_coeff(term_get_element(term,
i)), numb_zero()));
957 assert(mono_is_linear(term_get_element(term,
i)));
959 scipvar = (
SCIP_VAR*)mono_get_var(term_get_element(term,
i), 0);
965 RcreateNumb(
SCIPblkmem(
scip), &scipvalrat, mono_get_coeff(term_get_element(term,
i)));
981 "xlp_addobj_termr: exact version not supported.\n") );
983 scipval = numb_todbl(mono_get_coeff(term_get_element(term,
i)));
1000 SCIPerrorMessage(
"Could not convert ZIMPL objective term into SCIP expression due to unsupported ZIMPL function.\n");
1024 RcreateNumb(
SCIPblkmem(
scip), &scipvalrat, term_get_constant(term));
1040bool xlp_addcon_term(
1057 scip = readerdata->scip;
1060 if( readerdata->retcode !=
SCIP_OKAY || readerdata->readerror )
1063 readerdata->retcode = addConsTerm(
scip, readerdata, name, type, lhs, rhs, flags, term, &created);
1074 VarClass usevarclass,
1077 const Numb* priority,
1078 const Numb* startval,
1096 switch( bound_get_type(lower) )
1106 case BOUND_MINUS_INFTY:
1112 SCIPerrorMessage(
"invalid lower bound type <%d> in ZIMPL reader\n", bound_get_type(lower));
1119 switch( bound_get_type(upper) )
1129 case BOUND_MINUS_INFTY:
1135 SCIPerrorMessage(
"invalid upper bound type <%d> in ZIMPL reader\n", bound_get_type(upper));
1143 switch( bound_get_type(lower) )
1146 lb = (
SCIP_Real)numb_todbl(bound_get_value(lower));
1151 case BOUND_MINUS_INFTY:
1156 SCIPerrorMessage(
"invalid lower bound type <%d> in ZIMPL reader\n", bound_get_type(lower));
1161 switch( bound_get_type(upper) )
1164 ub = (
SCIP_Real)numb_todbl(bound_get_value(upper));
1169 case BOUND_MINUS_INFTY:
1174 SCIPerrorMessage(
"invalid upper bound type <%d> in ZIMPL reader\n", bound_get_type(upper));
1180 switch( usevarclass )
1197 readerdata->readerror =
TRUE;
1200 initial = !(readerdata->dynamiccols);
1201 removable = readerdata->dynamiccols;
1205 SCIP_CALL(
SCIPcreateVarImpl(
scip, &
var, name, lb, ub, 0.0, vartype, varimpltype, initial, removable,
1211#ifdef SCIP_MORE_DEBUG
1224 if( !numb_equal(priority, numb_unknown()) )
1226 if( numb_is_int(priority) )
1227 branchpriority = numb_toint(priority);
1230 if( !readerdata->branchpriowarning )
1233 "ZIMPL reader: fractional branching priorities in input - rounding down to integer values\n");
1234 readerdata->branchpriowarning =
TRUE;
1236 branchpriority = (int)numb_todbl(priority);
1244 if( readerdata->valid )
1247 if( numb_equal(startval, numb_unknown()) )
1249 SCIPdebugMsg(
scip,
"primal solution candidate contains an unknown value for variable <%s>(%g)\n",
1251 readerdata->valid =
FALSE;
1276 (*zplvar) = (Var*)
var;
1288 VarClass usevarclass,
1291 const Numb* priority,
1292 const Numb* startval
1302 scip = readerdata->scip;
1307 if( readerdata->retcode !=
SCIP_OKAY || readerdata->readerror )
1310 readerdata->retcode = addVar(
scip, readerdata, name, usevarclass, lower, upper, priority, startval, &zplvar);
1334 "xlp_addsos_termr: exact version not supported.\n") );
1346 readerdata->initialconss,
separate, enforce, check,
propagate, local, readerdata->dynamicconss, readerdata->dynamicrows,
FALSE) );
1349 for(
i = 0;
i < term_get_elements(term);
i++ )
1354 assert( mono_is_linear(term_get_element(term,
i)) );
1356 var = (
SCIP_VAR*) mono_get_var(term_get_element(term,
i), 0);
1357 weight = numb_todbl(mono_get_coeff(term_get_element(term,
i)));
1371 readerdata->initialconss,
separate, enforce, check,
propagate, local, readerdata->dynamicconss, readerdata->dynamicrows,
FALSE) );
1373 for(
i = 0;
i < term_get_elements(term);
i++ )
1378 assert( mono_is_linear(term_get_element(term,
i)) );
1380 var = (
SCIP_VAR*) mono_get_var(term_get_element(term,
i), 0);
1381 weight = numb_todbl(mono_get_coeff(term_get_element(term,
i)));
1390 SCIPerrorMessage(
"invalid SOS type <%d> in ZIMPL callback xlp_addsos_term()\n", type);
1391 readerdata->readerror =
TRUE;
1403 const Numb* priority,
1414 scip = readerdata->scip;
1417 if( readerdata->retcode !=
SCIP_OKAY || readerdata->readerror )
1420 readerdata->retcode = addSOS(
scip, readerdata, name, type, term);
1426const char* xlp_getvarname(
1438 scip = readerdata->scip;
1446VarClass xlp_getclass(
1457 SCIPgetIntParam(readerdata->scip,
"write/implintlevel", &implintlevel);
1458 assert(implintlevel >= -2);
1459 assert(implintlevel <= 2);
1472 readerdata->readerror =
TRUE;
1490 BoundType boundtype;
1497 scip = readerdata->scip;
1500 if(
SCIP_ERROR == abortReadIfExact(
scip,
NULL,
"xlp_getlower: exact version not supported.\n") )
1502 readerdata->readerror =
TRUE;
1515 boundtype = BOUND_MINUS_INFTY;
1517 boundtype = BOUND_INFTY;
1520 boundtype = BOUND_VALUE;
1524 numb = numb_new_ascii(s);
1528 bound = bound_new(boundtype, numb);
1547 BoundType boundtype;
1554 scip = readerdata->scip;
1557 if(
SCIP_ERROR == abortReadIfExact(
scip,
NULL,
"xlp_getupper: exact version not supported.\n") )
1559 readerdata->readerror =
TRUE;
1572 boundtype = BOUND_MINUS_INFTY;
1574 boundtype = BOUND_INFTY;
1577 boundtype = BOUND_VALUE;
1579 numb = numb_new_ascii(s);
1583 bound = bound_new(boundtype, numb);
1607 scip = readerdata->scip;
1610 if( readerdata->retcode !=
SCIP_OKAY || readerdata->readerror )
1631 scip = readerdata->scip;
1634 if( readerdata->retcode !=
SCIP_OKAY || readerdata->readerror )
1637 readerdata->retcode = addObjTerm(
scip, readerdata, term);
1690 if( compression !=
NULL )
1693 *compextension =
'\0';
1702 if( chdir(path) != 0 )
1708 filename = namewithoutpath;
1732 readerdata->scip =
scip;
1733 readerdata->sol =
NULL;
1734 readerdata->valid =
FALSE;
1735 readerdata->branchpriowarning =
FALSE;
1736 readerdata->readerror =
FALSE;
1745 if( strcmp(paramstr,
"-") == 0 )
1748 if( !zpl_read(filename,
FALSE, (
void*)readerdata) )
1749 readerdata->readerror =
TRUE;
1756 return readerdata->retcode;
1762 char dummy[2] =
"x";
1768 len = (int) strlen(paramstr);
1782 while( p < len && paramstr[p] ==
' ' )
1786 while( p < len && paramstr[p] !=
' ' )
1788 switch( paramstr[p] )
1793 while( p < len && paramstr[p] !=
'"' )
1795 argv[argc][arglen] = paramstr[p];
1804 argv[argc][arglen] = paramstr[p];
1809 argv[argc][arglen] = paramstr[p];
1815 argv[argc][arglen] =
'\0';
1834 for(
i = 1;
i < argc; ++
i )
1841 if( !zpl_read_with_args(argv, argc,
FALSE, (
void*)readerdata) )
1842 readerdata->readerror =
TRUE;
1845 for(
i = argc - 1;
i >= 1; --
i )
1854 return readerdata->retcode;
1863 if( chdir(oldpath) != 0 )
1870 if( readerdata->valid )
1890 if( readerdata->readerror )
1896 if( readerdata->sol !=
NULL )
1921#ifdef SCIP_WITH_ZIMPL
1922#if (ZIMPL_VERSION >= 341)
1945 "reading/zplreader/changedir",
"should the current directory be changed to that of the ZIMPL file before parsing?",
1948 "reading/zplreader/usestartsol",
"should ZIMPL starting solutions be forwarded to SCIP?",
1951 "reading/zplreader/parameters",
"additional parameter string passed to the ZIMPL parser (or - for no additional parameters)",
1954 (void)
SCIPsnprintf(extcodename,
SCIP_MAXSTRLEN,
"ZIMPL %d.%d.%d", ZIMPL_VERSION/100, (ZIMPL_VERSION%100)/10, ZIMPL_VERSION%10);
1959 SCIPwarningMessage(
scip,
"SCIP does only support ZIMPL 3.4.1 and higher. Please update your ZIMPL version %d.%d.%d\n",
1960 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
#define SCIP_STRINGEQ(name, reference, retcode)
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