81#define READER_NAME "mpsreader"
82#define READER_DESC "file reader for MIQPs in IBM's Mathematical Programming System format"
83#define READER_EXTENSION "mps"
85#define DEFAULT_LINEARIZE_ANDS TRUE
86#define DEFAULT_AGGRLINEARIZATION_ANDS TRUE
92#define MPS_MAX_LINELEN 1024
93#define MPS_MAX_NAMELEN 256
94#define MPS_MAX_VALUELEN 26
95#define MPS_MAX_FIELDLEN 20
101struct SCIP_ReaderData
191 (*mpsi)->haserror =
FALSE;
192 (*mpsi)->isinteger =
FALSE;
193 (*mpsi)->isnewformat =
FALSE;
194 (*mpsi)->buf [0] =
'\0';
195 (*mpsi)->probname[0] =
'\0';
196 (*mpsi)->objname [0] =
'\0';
230 return mpsi->section;
307 return mpsi->objname;
318 return mpsi->objsense;
329 return mpsi->haserror;
340 return mpsi->isinteger;
352 mpsi->section = section;
364 assert(strlen(probname) <
sizeof(mpsi->probname));
378 assert(strlen(objname) <
sizeof(mpsi->objname));
392 mpsi->objsense = sense;
404 mpsi->haserror =
TRUE;
413 const char* what_name,
415 const char* entity_name,
426 "Warning line %d: %s \"%s\" for %s \"%s\" ignored\n", mpsi->lineno, what, what_name, entity, entity_name);
438 for(
i = pos;
i < 80;
i++)
453 while( (beg <= end) && (buf[end] ==
BLANK) )
456 while( (beg <= end) && (buf[beg] ==
BLANK) )
459 for(
i = beg;
i <= end;
i++ )
480 mpsi->f0 = mpsi->f1 = mpsi->f2 = mpsi->f3 = mpsi->f4 = mpsi->f5 = 0;
487 if(
NULL ==
SCIPfgets(mpsi->buf, (
int)
sizeof(mpsi->buf), mpsi->fp) )
491 while( *mpsi->buf ==
'*' );
494 len = (
unsigned int) strlen(mpsi->buf);
496 for(
i = 0;
i < len;
i++ )
498 if( (mpsi->buf[
i] ==
'\t') || (mpsi->buf[
i] ==
'\n') || (mpsi->buf[
i] ==
'\r') )
504 while( len > 0 && mpsi->buf[len-1] ==
BLANK )
512 assert(strlen(mpsi->buf) >= 80);
515 if( *mpsi->buf !=
BLANK )
517 mpsi->f0 =
SCIPstrtok(&mpsi->buf[0],
" ", &nexttok);
527 if( !mpsi->isnewformat )
530 if( (mpsi->buf[14] ==
'$') && (mpsi->buf[13] ==
' ') )
532 else if( (mpsi->buf[39] ==
'$') && (mpsi->buf[38] ==
' ') )
536 space = mpsi->buf[12] | mpsi->buf[13]
537 | mpsi->buf[22] | mpsi->buf[23]
538 | mpsi->buf[36] | mpsi->buf[37] | mpsi->buf[38]
539 | mpsi->buf[47] | mpsi->buf[48]
540 | mpsi->buf[61] | mpsi->buf[62] | mpsi->buf[63];
550 number = isdigit((
unsigned char)mpsi->buf[24]) || isdigit((
unsigned char)mpsi->buf[25])
551 || isdigit((
unsigned char)mpsi->buf[26]) || isdigit((
unsigned char)mpsi->buf[27])
552 || isdigit((
unsigned char)mpsi->buf[28]) || isdigit((
unsigned char)mpsi->buf[29])
553 || isdigit((
unsigned char)mpsi->buf[30]) || isdigit((
unsigned char)mpsi->buf[31])
554 || isdigit((
unsigned char)mpsi->buf[32]) || isdigit((
unsigned char)mpsi->buf[33])
555 || isdigit((
unsigned char)mpsi->buf[34]) || isdigit((
unsigned char)mpsi->buf[35]);
571 mpsi->isnewformat =
TRUE;
576 mpsi->isnewformat =
TRUE;
600 if( !strcmp(mpsi->f2,
"'MARKER'") )
610 if( !strcmp(mpsi->f3,
"'INTORG'") )
611 mpsi->isinteger =
TRUE;
612 else if( !strcmp(mpsi->f3,
"'INTEND'") )
613 mpsi->isinteger =
FALSE;
617 if( !strcmp(mpsi->f3,
"'MARKER'") )
627 if( !strcmp(mpsi->f4,
"'INTORG'") )
628 mpsi->isinteger =
TRUE;
629 else if( !strcmp(mpsi->f4,
"'INTEND'") )
630 mpsi->isinteger =
FALSE;
640 is_empty = (mpsi->f0 ==
NULL && mpsi->f1 ==
NULL);
642 while( is_marker || is_empty );
689 const char*** varnames,
697 if( varnames !=
NULL )
711 const char*** consnames,
719 if( consnames !=
NULL )
880 const char*** consnames,
938 dynamic = mpsi->dynamicconss;
976 const char*** consnames,
1034 dynamic = mpsi->dynamicconss;
1082 const char*** varnames,
1135 SCIPerrorMessage(
"Coeffients of column <%s> don't appear consecutively (line: %d)\n",
1136 colname, mpsi->lineno);
1213 const char*** varnames,
1267 SCIPerrorMessage(
"Coeffients of column <%s> don't appear consecutively (line: %d)\n",
1268 colname, mpsi->lineno);
1403 if( *rhsname ==
'\0' )
1556 if( *rhsname ==
'\0' )
1703 if( *rngname ==
'\0' )
1848 if( *rngname ==
'\0' )
1997 goto READBOUNDS_FINISH;
2062 if( *bndname ==
'\0' )
2179 if( semicontsize <= nsemicont )
2182 if( semicont ==
NULL )
2192 semicont[nsemicont] =
var;
2253 assert(*bndname !=
'\0');
2279 for(
i = 0;
i < nsemicont; ++
i )
2372 goto READBOUNDS_FINISH;
2437 if( *bndname ==
'\0' )
2565 if( semicontsize <= nsemicont )
2568 if( semicont ==
NULL )
2578 semicont[nsemicont] =
var;
2645 assert(*bndname !=
'\0');
2660 SCIPerrorMessage(
"Exact solving mode cannot handle semicontinous variables at the moment \n");
2701 initial = mpsi->initialconss;
2707 dynamic = mpsi->dynamicconss;
2708 removable = mpsi->dynamicrows;
2712 SCIPerrorMessage(
"Exact solving mode cannot handle SOS constraints currently \n");
2752 assert( type == 1 || type == 2 );
2775 SCIP_CALL(
SCIPcreateConsSOS1(
scip, &cons, name, 0,
NULL,
NULL, initial,
separate, enforce, check,
propagate,
2776 local, dynamic, removable,
FALSE) );
2781 SCIP_CALL(
SCIPcreateConsSOS2(
scip, &cons, name, 0,
NULL,
NULL, initial,
separate, enforce, check,
propagate,
2782 local, dynamic, removable,
FALSE) );
2795 if( consType != 1 && consType != 2 )
2828 assert( consType == 1 || consType == 2 );
2893 SCIPdebugMsg(
scip,
"read %s objective\n", isQuadObj ?
"QUADOBJ" :
"QMATRIX");
2897 SCIPerrorMessage(
"Exact solving mode cannot handle QMatrix constraints currently \n");
2948 for( k = 1; k <= 2; ++k )
2974 coef = strtod(field, &endptr);
2975 if( endptr == field || *endptr !=
'\0' )
2996 quadvars1[cnt] = var1;
2997 quadvars2[cnt] = var2;
2998 quadcoefs[cnt] = coef;
3003 if( var1 == var2 || !isQuadObj )
3004 quadcoefs[cnt] /= 2.0;
3027 SCIP_Bool local, modifiable, dynamic, removable;
3063 retcode =
SCIPcreateConsQuadraticNonlinear(
scip, &cons,
"qmatrix", 1, &qmatrixvar, &minusone, cnt, quadvars1, quadvars2, quadcoefs, lhs, rhs,
3064 initial,
separate, enforce, check,
propagate, local, modifiable, dynamic, removable);
3121 SCIPerrorMessage(
"Exact solving mode cannot handle QCMatrix constraints currently \n");
3130 if( lincons ==
NULL )
3222 quadvars1[cnt] = var1;
3223 quadvars2[cnt] = var2;
3224 quadcoefs[cnt] = coef;
3309 SCIPerrorMessage(
"Exact solving mode cannot handle indicator constraints currently \n");
3314 initial = mpsi->initialconss;
3320 dynamic = mpsi->dynamicconss;
3321 removable = mpsi->dynamicrows;
3322 stickingatnode =
FALSE;
3352 SCIPerrorMessage(
"Indicator constraints need to be introduced by 'IF' in column 1.\n");
3359 if( lincons ==
NULL )
3377 if( binvar ==
NULL )
3436 for(
i = 0;
i < nlinvars; ++
i )
3439 vals[
i] = -linvals[
i];
3447 initial,
separate, enforce, check,
propagate, local, dynamic, removable, stickingatnode);
3476 initial,
separate, enforce, check,
propagate, local, dynamic, removable, stickingatnode) );
3506 const char* filename,
3507 const char*** varnames,
3508 const char*** consnames,
3534 SCIP_CALL_TERMINATE( retcode,
SCIPcreateProb(
scip, mpsi->probname,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL), TERMINATE );
3626 const char* filename,
3627 const char*** varnames,
3628 const char*** consnames,
3655 SCIP_CALL_TERMINATE( retcode,
SCIPcreateProb(
scip, mpsi->probname,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL), TERMINATE );
3742 return (
void*)consnamefreq->
consname;
3749 const char* string1 = (
const char*)key1;
3750 const char* string2 = (
const char*)key2;
3786 width =
MAX(8u, width);
3798 unsigned int maxnamelen
3801 unsigned int fieldwidth;
3809 assert( maxnamelen > 0 );
3827 unsigned int fieldwidth;
3833 assert( strlen(col1) <= 2 );
3835 assert( maxnamelen == -1 || maxnamelen > 0 );
3837 if( maxnamelen < 0 )
3845 (void)
SCIPsnprintf(format, 32,
" %%-2.2s %%-%ds ", fieldwidth);
3856 const char* varname,
3860 unsigned int maxnamelen
3867 assert( *recordcnt >= 0 && *recordcnt < 2 );
3871 if( *recordcnt == 0 )
3881 if( *recordcnt == 2 )
3936 (*matrix)->nentries = 0;
3937 (*matrix)->sentries = slots;
3953 if( matrix->nentries + capacity >= matrix->sentries )
3955 matrix->sentries = matrix->sentries * 2 + capacity;
4011 nactivevars =
nvars;
4022 for( v = 0; v < nactivevars; ++v )
4023 activevals[v] = 1.0;
4031 if( requiredsize > nactivevars )
4038 assert( requiredsize == nactivevars );
4042 for( v = 0; v < nactivevars; ++v )
4052 activeconstant += activevals[v];
4053 activevals[v] *= -1.0;
4060 assert( matrix->nentries + nactivevars < matrix->sentries );
4062 for( v = 0; v < nactivevars; ++v )
4064 matrix->values[matrix->nentries] = activevals[v];
4065 matrix->columns[matrix->nentries] = activevars[v];
4066 matrix->rows[matrix->nentries] =
consname;
4071 (*rhs) -= activeconstant;
4101 for( v = 0; v <
nvars; ++v )
4118 if ( *saggvars <= *naggvars )
4122 assert( newsize > *saggvars );
4124 *saggvars = newsize;
4127 (*aggvars)[*naggvars] =
var;
4130 assert( *naggvars <= *saggvars );
4144 unsigned int* maxnamelen,
4145 const char*** varnames,
4165 for( v = 0; v <
nvars; ++v )
4181 (*maxnamelen) =
MAX(*maxnamelen, (
unsigned int) l);
4191 (*varnames)[v] = varname;
4196 SCIPwarningMessage(
scip,
"there are %d variable names which have to be cut down to %d characters; LP might be corrupted\n",
4209 unsigned int* maxnamelen,
4210 const char*** consnames,
4229 hashGetKeyNamefreq, hashKeyEqString, SCIPhashKeyValString,
NULL) );
4231 for(
i = 0;
i < nconss; ++
i )
4247 SCIPwarningMessage(
scip,
"At least one name of a constraint is empty, so file will be written with generic names.\n");
4254 consnamefreqs[
i].
freq = 0;
4260 consnamefreq->
freq += 1;
4261 consnamefreqs[
i] = *consnamefreq;
4272 SCIPwarningMessage(
scip,
"Constraints have duplicate name and are too long to fix, so file will be written with generic names.\n");
4278 (*maxnamelen) =
MAX(*maxnamelen, (
unsigned int) l);
4314 assert(implintlevel >= -2);
4315 assert(implintlevel <= 2);
4324#define MPSINTCOMP_LEVEL(IMPLINTLEVEL) \
4326 SCIP_Bool integral1 = writeVarIsIntegral((SCIP_VAR*)elem1, IMPLINTLEVEL); \
4327 SCIP_Bool integral2 = writeVarIsIntegral((SCIP_VAR*)elem2, IMPLINTLEVEL); \
4329 if( integral1 != integral2 ) \
4330 return integral1 ? -1 : +1; \
4332 return SCIPvarComp(elem1, elem2); \
4344void printColumnSection(
4350 unsigned int maxnamelen,
4356 const char* varname;
4363 switch( implintlevel )
4366 SCIPsortPtrPtrReal((
void**) matrix->columns, (
void**) matrix->rows, matrix->values, mpsIntCompM2, matrix->nentries);
4369 SCIPsortPtrPtrReal((
void**) matrix->columns, (
void**) matrix->rows, matrix->values, mpsIntCompM1, matrix->nentries);
4372 SCIPsortPtrPtrReal((
void**) matrix->columns, (
void**) matrix->rows, matrix->values, mpsIntCompZ, matrix->nentries);
4375 SCIPsortPtrPtrReal((
void**) matrix->columns, (
void**) matrix->rows, matrix->values, mpsIntCompP1, matrix->nentries);
4378 SCIPsortPtrPtrReal((
void**) matrix->columns, (
void**) matrix->rows, matrix->values, mpsIntCompP2, matrix->nentries);
4390 for( v = 0; v < matrix->nentries; )
4392 var = matrix->columns[v];
4437 value = matrix->values[v];
4440 printEntry(
scip, file, varname, matrix->rows[v], value, &recordcnt, maxnamelen);
4443 while( v < matrix->nentries &&
var == matrix->columns[v] );
4445 if( recordcnt == 1 )
4465 const char** consnames,
4467 unsigned int maxnamelen,
4480 for(
c = 0;
c < nconss; ++
c )
4488 printEntry(
scip, file,
"RHS", consnames[
c], rhss[
c], &recordcnt, maxnamelen);
4494 printEntry(
scip, file,
"RHS",
"Obj", -objoffset, &recordcnt, maxnamelen);
4497 if( recordcnt == 1 )
4508 const char** consnames,
4510 unsigned int maxnamelen
4517 const char* conshdlrname;
4526 for(
c = 0;
c < nconss; ++
c )
4543 if( strcmp(conshdlrname,
"linear") == 0 )
4548 else if( strcmp(conshdlrname,
"varbound") == 0 )
4559 printEntry(
scip, file,
"RANGE", consnames[
c], rhs - lhs, &recordcnt, maxnamelen);
4589 const char** varnames,
4591 unsigned int maxnamelen
4599 const char* varname;
4606 sectionName =
FALSE;
4609 for( v = 0; v <
nvars; ++v )
4619 varname = varnames[v];
4767 for( v = 0; v < naggvars; ++v )
4779 varname = varnames[
nvars + v];
4799 for( v = 0; v < nfixvars; ++v )
4811 varname = varnames[
nvars + naggvars + v];
4896 SCIPerrorMessage(
"MPS reader cannot yet write problems in exact solving mode\n");
4900 SCIP_CALL(
SCIPwriteMps(
scip, reader, file, name, transformed, objsense, objoffset,
objscale, objoffsetexact, objscaleexact,
4901 vars,
nvars, nbinvars, nintvars, nimplvars, ncontvars, fixedvars, nfixedvars, conss, nconss,
result) );
4936 "reading/" READER_NAME "/linearize-and-constraints",
4937 "should possible \"and\" constraint be linearized when writing the mps file?",
4941 "should an aggregated linearization for and constraints be used?",
4952 const char* filename,
4954 const char*** varnames,
4955 const char*** consnames,
4969 retcode =
readMps(
scip, filename, varnames, consnames, varnamessize, consnamessize, nvarnames, nconsnames);
4971 retcode =
readMpsExact(
scip, filename, varnames, consnames, varnamessize, consnamessize, nvarnames, nconsnames);
5023 const char** consnames;
5026 const char* conshdlrname;
5034 const char* varname;
5035 const char** varnames;
5067 unsigned int maxnamelen;
5082 if( objoffsetexact !=
NULL )
5089 if( objscaleexact !=
NULL )
5133 saggvars = nfixedvars;
5137 if( nfixedvars > 0 )
5142 varFixedHash =
NULL;
5149 indicatorSlackHash =
NULL;
5161 if( readerdata->linearizeands )
5165 if( andconshdlr !=
NULL )
5169 for(
c = nconss - 1;
c >= 0; --
c )
5176 if( strcmp(conshdlrname,
"and") == 0 )
5178 if( readerdata->aggrlinearizationands )
5200 SCIPinfoMessage(
scip, file,
"* Variables : %d (%d binary, %d integer, %d implicit integer, %d continuous)\n",
5201 nvars, nbinvars, nintvars, nimplvars, ncontvars);
5219 for( v = 0; v <
nvars; ++v )
5234 assert( matrix->nentries < matrix->sentries );
5236 matrix->values[matrix->nentries] =
objscale * value;
5237 matrix->columns[matrix->nentries] =
var;
5238 matrix->rows[matrix->nentries] =
"Obj";
5245 for(
c = 0;
c < nconss; ++
c )
5266 if( strcmp(conshdlrname,
"linear") == 0 )
5292 else if( strcmp(conshdlrname,
"setppc") == 0 )
5313 else if( strcmp(conshdlrname,
"logicor") == 0 )
5323 else if( strcmp(conshdlrname,
"knapsack") == 0 )
5335 for(
i = 0;
i < nconsvars; ++
i )
5345 else if( strcmp(conshdlrname,
"varbound") == 0 )
5383 else if( strcmp(conshdlrname,
"indicator") == 0 )
5412 consIndicator[nConsIndicator++] = cons;
5415 else if( strcmp(conshdlrname,
"SOS1") == 0 )
5418 consSOS1[nConsSOS1++] = cons;
5430 else if( strcmp(conshdlrname,
"SOS2") == 0 )
5433 consSOS2[nConsSOS2++] = cons;
5444 else if( strcmp(conshdlrname,
"nonlinear") == 0 )
5470 if( changed && !infeasible )
5491 consQuadratic[nConsQuadratic] = cons;
5492 exprQuadratic[nConsQuadratic] = expr;
5501 for( j = 0; j < nquadexprs; ++j )
5538 for( j = 0; j < nlinexprs; ++j )
5553 consvars = quadvars;
5554 nconsvars = nquadexprs;
5561 else if( strcmp(conshdlrname,
"and") == 0 )
5563 if( readerdata->linearizeands )
5586 if( !readerdata->aggrlinearizationands )
5588 rowvars[0] = resultant;
5594 n = (int) log10((
double)nrowvars) + 1 + l;
5601 maxnamelen =
MAX(maxnamelen, (
unsigned int) n);
5604 for( v = 0; v < nrowvars; ++v )
5610 n = (int) log10((
double)v) + 2;
5623 assert(k < nconss + naddrows);
5624 consnames[k] = rowname;
5627 rowvars[1] = operands[v];
5641 for( v = nrowvars - 1; v >= 0; --v )
5643 rowvars[v] = operands[v];
5647 rowvars[nrowvars] = resultant;
5650 if( readerdata->aggrlinearizationands )
5663 maxnamelen =
MAX(maxnamelen, (
unsigned int) n);
5668 assert(k < nconss + naddrows);
5669 consnames[k] = rowname;
5674 rowvals[nrowvars] = (
SCIP_Real) nrowvars;
5688 rowvals[nrowvars] = 1.0;
5693 rhss[
c] = -nrowvars + 1.0;
5721 SCIPwarningMessage(
scip,
"there are %d and-constraint-rownames which have to be cut down to %d characters; MPS file might be corrupted\n",
5726 if( varFixedHash !=
NULL )
5729 if( indicatorSlackHash !=
NULL && nConsIndicator == 0 )
5744 for(
c = 0;
c < naggvars; ++
c )
5755 maxnamelen =
MAX(maxnamelen, (
unsigned int) l);
5761 varnames[
nvars +
c] = namestr;
5770 l = strlen(namestr);
5771 maxnamelen =
MAX(maxnamelen, (
unsigned int) l);
5772 consnames[nconss + naddrows +
c] = namestr;
5773 rhss[nconss + naddrows +
c] = 0.0;
5780 matrix->values[matrix->nentries] = -1.0;
5781 matrix->columns[matrix->nentries] = aggvars[
c];
5782 matrix->rows[matrix->nentries] = namestr;
5789 if( nfixedvars > 0 )
5791 int startpos =
nvars + naggvars;
5800 for( v = nfixedvars - 1; v >= 0; --v )
5812 maxnamelen =
MAX(maxnamelen, (
unsigned int) l);
5817 varnames[startpos + nfixvars] = namestr;
5818 fixvars[nfixvars] =
var;
5827 matrix->values[matrix->nentries] = 0.0;
5828 matrix->columns[matrix->nentries] =
var;
5829 matrix->rows[matrix->nentries] =
"Obj";
5836 printColumnSection(
scip, file, matrix, varnameHashmap, indicatorSlackHash, maxnamelen, implintlevel);
5846 printBoundSection(
scip, file,
vars,
nvars, aggvars, naggvars, fixvars, nfixvars, transformed, varnames, indicatorSlackHash, maxnamelen);
5848 if( nfixedvars > 0 )
5854 if( nConsSOS1 > 0 || nConsSOS2 > 0 )
5864 for(
c = 0;
c < nConsSOS1; ++
c )
5875 for( v = 0; v < nconsvars; ++v )
5883 if( sosweights !=
NULL )
5893 for(
c = 0;
c < nConsSOS2; ++
c )
5904 for( v = 0; v < nconsvars; ++v )
5912 if( sosweights !=
NULL )
5926 if( nConsQuadratic > 0 )
5928 const char* varname2;
5931 SCIPdebugMsg(
scip,
"start printing QCMATRIX sections for quadratic constraints\n");
5934 for(
c = 0;
c < nConsQuadratic; ++
c )
5938 cons = consQuadratic[
c];
5939 expr = exprQuadratic[
c];
5948 for( v = 0; v < nconsvars; ++v )
5955 if( sqrcoef == 0.0 )
5976 for( v = 0; v < nbilin; ++v )
6026 if( nConsIndicator > 0 )
6034 for(
c = 0;
c < nConsIndicator; ++
c )
6040 cons = consIndicator[
c];
6087 if( indicatorSlackHash !=
NULL )
6104 for( v =
nvars + naggvars + nfixvars - 1; v >= 0; --v )
6108 for(
c = nconss + naddrows + naggvars - 1;
c >= 0; --
c )
Constraint handler for AND constraints, .
constraint handler for bound disjunction constraints
Constraint handler for linear constraints in their most general form, .
constraint handler for indicator constraints
Constraint handler for knapsack constraints of the form , x binary and .
Constraint handler for linear constraints in their most general form, .
Constraint handler for logicor constraints (equivalent to set covering, but algorithms are suited fo...
constraint handler for nonlinear constraints specified by algebraic expressions
Constraint handler for the set partitioning / packing / covering constraints .
constraint handler for SOS type 1 constraints
constraint handler for SOS type 2 constraints
Constraint handler for variable bound constraints .
#define SCIP_STRINGEQ(name, reference, retcode)
#define SCIP_HASHSIZE_NAMES
#define SCIP_CALL_TERMINATE(retcode, x, TERM)
SCIP_FILE * SCIPfopen(const char *path, const char *mode)
int SCIPfclose(SCIP_FILE *fp)
char * SCIPfgets(char *s, int size, SCIP_FILE *stream)
int SCIPgetNVarsKnapsack(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPchgLhsExactLinear(SCIP *scip, SCIP_CONS *cons, SCIP_RATIONAL *lhs)
SCIP_Real SCIPgetVbdcoefVarbound(SCIP *scip, SCIP_CONS *cons)
SCIP_RATIONAL * SCIPgetLhsExactLinear(SCIP *scip, SCIP_CONS *cons)
int SCIPgetNVarsLogicor(SCIP *scip, SCIP_CONS *cons)
SCIP_Real SCIPgetRhsLinear(SCIP *scip, SCIP_CONS *cons)
SCIP_VAR ** SCIPgetVarsLinear(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPchgRhsLinear(SCIP *scip, SCIP_CONS *cons, SCIP_Real rhs)
SCIP_RATIONAL * SCIPgetRhsExactLinear(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPchgRhsExactLinear(SCIP *scip, SCIP_CONS *cons, SCIP_RATIONAL *rhs)
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_Real * SCIPgetWeightsSOS2(SCIP *scip, SCIP_CONS *cons)
SCIP_VAR ** SCIPgetVarsSOS2(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPaddCoefLinear(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real val)
SCIP_Real SCIPgetLhsLinear(SCIP *scip, SCIP_CONS *cons)
int SCIPgetNVarsLinear(SCIP *scip, SCIP_CONS *cons)
SCIP_VAR * SCIPgetResultantAnd(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPaddVarSOS1(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real weight)
SCIP_RETCODE SCIPcreateConsBounddisjunction(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_BOUNDTYPE *boundtypes, SCIP_Real *bounds, 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 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)
int SCIPgetNVarsAnd(SCIP *scip, SCIP_CONS *cons)
SCIP_Real * SCIPgetValsLinear(SCIP *scip, SCIP_CONS *cons)
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_VAR * SCIPgetVbdvarVarbound(SCIP *scip, SCIP_CONS *cons)
int SCIPgetNVarsSetppc(SCIP *scip, SCIP_CONS *cons)
int SCIPgetNVarsSOS2(SCIP *scip, SCIP_CONS *cons)
SCIP_Real * SCIPgetWeightsSOS1(SCIP *scip, SCIP_CONS *cons)
SCIP_VAR ** SCIPgetVarsSetppc(SCIP *scip, SCIP_CONS *cons)
SCIP_EXPR * SCIPgetExprNonlinear(SCIP_CONS *cons)
SCIP_Real SCIPgetRhsNonlinear(SCIP_CONS *cons)
SCIP_VAR * SCIPgetBinaryVarIndicator(SCIP_CONS *cons)
SCIP_VAR * SCIPgetVarVarbound(SCIP *scip, SCIP_CONS *cons)
SCIP_Longint * SCIPgetWeightsKnapsack(SCIP *scip, SCIP_CONS *cons)
SCIP_VAR * SCIPgetSlackVarIndicator(SCIP_CONS *cons)
SCIP_Longint SCIPgetCapacityKnapsack(SCIP *scip, SCIP_CONS *cons)
SCIP_Real SCIPgetLhsVarbound(SCIP *scip, SCIP_CONS *cons)
SCIP_SETPPCTYPE SCIPgetTypeSetppc(SCIP *scip, SCIP_CONS *cons)
SCIP_CONS * SCIPgetLinearConsIndicator(SCIP_CONS *cons)
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_VAR ** SCIPgetVarsSOS1(SCIP *scip, SCIP_CONS *cons)
SCIP_VAR ** SCIPgetVarsLogicor(SCIP *scip, SCIP_CONS *cons)
SCIP_Real SCIPgetRhsVarbound(SCIP *scip, SCIP_CONS *cons)
SCIP_VAR ** SCIPgetVarsAnd(SCIP *scip, SCIP_CONS *cons)
SCIP_VAR ** SCIPgetVarsKnapsack(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPcreateConsQuadraticNonlinear(SCIP *scip, SCIP_CONS **cons, const char *name, int nlinvars, SCIP_VAR **linvars, SCIP_Real *lincoefs, int nquadterms, SCIP_VAR **quadvars1, SCIP_VAR **quadvars2, SCIP_Real *quadcoefs, 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 SCIPcreateConsIndicatorLinConsPure(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, SCIP_CONS *lincons, 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 SCIPchgLhsLinear(SCIP *scip, SCIP_CONS *cons, SCIP_Real lhs)
int SCIPgetNVarsSOS1(SCIP *scip, SCIP_CONS *cons)
SCIP_Real SCIPgetLhsNonlinear(SCIP_CONS *cons)
SCIP_RETCODE SCIPaddVarSOS2(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real weight)
@ SCIP_SETPPCTYPE_PARTITIONING
@ SCIP_SETPPCTYPE_COVERING
@ SCIP_SETPPCTYPE_PACKING
SCIP_RETCODE SCIPwriteMps(SCIP *scip, SCIP_READER *reader, FILE *file, const char *name, SCIP_Bool transformed, SCIP_OBJSENSE objsense, SCIP_Real objoffset, SCIP_Real objscale, SCIP_RATIONAL *objoffsetexact, SCIP_RATIONAL *objscaleexact, SCIP_VAR **vars, int nvars, int nbinvars, int nintvars, int nimplvars, int ncontvars, SCIP_VAR **fixedvars, int nfixedvars, SCIP_CONS **conss, int nconss, SCIP_RESULT *result)
SCIP_RETCODE SCIPreadMps(SCIP *scip, SCIP_READER *reader, const char *filename, SCIP_RESULT *result, const char ***varnames, const char ***consnames, int *varnamessize, int *consnamessize, int *nvarnames, int *nconsnames)
SCIP_RETCODE SCIPincludeReaderMps(SCIP *scip)
SCIP_RETCODE SCIPaddVar(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPaddCons(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPdelCons(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPprintTransProblem(SCIP *scip, FILE *file, const char *extension, SCIP_Bool genericnames)
SCIP_RETCODE SCIPprintOrigProblem(SCIP *scip, FILE *file, const char *extension, SCIP_Bool genericnames)
SCIP_RETCODE SCIPsetObjsense(SCIP *scip, SCIP_OBJSENSE objsense)
SCIP_RETCODE SCIPaddOrigObjoffset(SCIP *scip, SCIP_Real addval)
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_VAR * SCIPfindVar(SCIP *scip, const char *name)
SCIP_CONS * SCIPfindCons(SCIP *scip, const char *name)
void SCIPhashmapFree(SCIP_HASHMAP **hashmap)
void * SCIPhashmapGetImage(SCIP_HASHMAP *hashmap, void *origin)
SCIP_RETCODE SCIPhashmapInsert(SCIP_HASHMAP *hashmap, void *origin, void *image)
SCIP_RETCODE SCIPhashmapCreate(SCIP_HASHMAP **hashmap, BMS_BLKMEM *blkmem, int mapsize)
SCIP_Bool SCIPhashmapExists(SCIP_HASHMAP *hashmap, void *origin)
void SCIPhashtableFree(SCIP_HASHTABLE **hashtable)
SCIP_Bool SCIPhashtableExists(SCIP_HASHTABLE *hashtable, void *element)
SCIP_RETCODE SCIPhashtableCreate(SCIP_HASHTABLE **hashtable, BMS_BLKMEM *blkmem, int tablesize, SCIP_DECL_HASHGETKEY((*hashgetkey)), SCIP_DECL_HASHKEYEQ((*hashkeyeq)), SCIP_DECL_HASHKEYVAL((*hashkeyval)), void *userptr)
void * SCIPhashtableRetrieve(SCIP_HASHTABLE *hashtable, void *key)
SCIP_RETCODE SCIPhashtableInsert(SCIP_HASHTABLE *hashtable, void *element)
void SCIPinfoMessage(SCIP *scip, FILE *file, const char *formatstr,...)
void SCIPverbMessage(SCIP *scip, SCIP_VERBLEVEL msgverblevel, FILE *file, const char *formatstr,...)
void SCIPwarningMessage(SCIP *scip, const char *formatstr,...)
SCIP_RETCODE SCIPgetBoolParam(SCIP *scip, const char *name, SCIP_Bool *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)
const char * SCIPconshdlrGetName(SCIP_CONSHDLR *conshdlr)
SCIP_CONSHDLR * SCIPfindConshdlr(SCIP *scip, const char *name)
SCIP_Bool SCIPconsIsDynamic(SCIP_CONS *cons)
SCIP_CONSHDLR * SCIPconsGetHdlr(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsInitial(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsChecked(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsDeleted(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsEnforced(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsPropagated(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsLocal(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsEnabled(SCIP_CONS *cons)
const char * SCIPconsGetName(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsModifiable(SCIP_CONS *cons)
SCIP_RETCODE SCIPreleaseCons(SCIP *scip, SCIP_CONS **cons)
SCIP_Bool SCIPconsIsSeparated(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsRemovable(SCIP_CONS *cons)
SCIP_Bool SCIPisExact(SCIP *scip)
void SCIPexprGetQuadraticBilinTerm(SCIP_EXPR *expr, int termidx, SCIP_EXPR **expr1, SCIP_EXPR **expr2, SCIP_Real *coef, int *pos2, SCIP_EXPR **prodexpr)
SCIP_Bool SCIPexprAreQuadraticExprsVariables(SCIP_EXPR *expr)
void SCIPexprGetQuadraticData(SCIP_EXPR *expr, SCIP_Real *constant, int *nlinexprs, SCIP_EXPR ***linexprs, SCIP_Real **lincoefs, int *nquadexprs, int *nbilinexprs, SCIP_Real **eigenvalues, SCIP_Real **eigenvectors)
SCIP_RETCODE SCIPreleaseExpr(SCIP *scip, SCIP_EXPR **expr)
SCIP_Bool SCIPisExprVar(SCIP *scip, SCIP_EXPR *expr)
SCIP_RETCODE SCIPcheckExprQuadratic(SCIP *scip, SCIP_EXPR *expr, SCIP_Bool *isquadratic)
SCIP_VAR * SCIPgetVarExprVar(SCIP_EXPR *expr)
void SCIPexprGetQuadraticQuadTerm(SCIP_EXPR *quadexpr, int termidx, SCIP_EXPR **expr, SCIP_Real *lincoef, SCIP_Real *sqrcoef, int *nadjbilin, int **adjbilin, SCIP_EXPR **sqrexpr)
SCIP_RETCODE SCIPduplicateExpr(SCIP *scip, SCIP_EXPR *expr, SCIP_EXPR **copyexpr, SCIP_DECL_EXPR_MAPEXPR((*mapexpr)), void *mapexprdata, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPsimplifyExpr(SCIP *scip, SCIP_EXPR *rootexpr, SCIP_EXPR **simplified, SCIP_Bool *changed, SCIP_Bool *infeasible, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
#define SCIPfreeBuffer(scip, ptr)
#define SCIPfreeBlockMemoryArray(scip, ptr, num)
BMS_BLKMEM * SCIPblkmem(SCIP *scip)
#define SCIPensureBlockMemoryArray(scip, ptr, arraysizeptr, minsize)
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 SCIPallocBlockMemoryArray(scip, ptr, num)
#define SCIPallocBuffer(scip, ptr)
#define SCIPreallocBlockMemoryArray(scip, ptr, oldnum, newnum)
#define SCIPfreeBlockMemory(scip, ptr)
#define SCIPfreeBufferArrayNull(scip, ptr)
#define SCIPallocBlockMemory(scip, ptr)
#define SCIPduplicateBlockMemoryArray(scip, ptr, source, num)
void SCIPrationalSetInfinity(SCIP_RATIONAL *res)
void SCIPrationalAdd(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
SCIP_Real SCIPrationalGetReal(SCIP_RATIONAL *rational)
#define SCIPrationalDebugMessage
void SCIPrationalAbs(SCIP_RATIONAL *res, SCIP_RATIONAL *op)
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)
void SCIPrationalDiff(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
SCIP_RETCODE SCIPrationalCreateBuffer(BMS_BUFMEM *bufmem, SCIP_RATIONAL **rational)
SCIP_Bool SCIPrationalIsZero(SCIP_RATIONAL *rational)
void SCIPrationalSetString(SCIP_RATIONAL *res, const char *desc)
SCIP_Bool SCIPrationalIsIntegral(SCIP_RATIONAL *rational)
void SCIPrationalCanonicalize(SCIP_RATIONAL *rational)
void SCIPrationalSetNegInfinity(SCIP_RATIONAL *res)
SCIP_Bool SCIPrationalIsNegative(SCIP_RATIONAL *rational)
SCIP_Bool SCIPrationalIsInfinity(SCIP_RATIONAL *rational)
SCIP_Bool SCIPrationalIsNegInfinity(SCIP_RATIONAL *rational)
SCIP_Bool SCIPrationalIsGTReal(SCIP_RATIONAL *rat, SCIP_Real real)
SCIP_Bool SCIPrationalIsEQ(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_READERDATA * SCIPreaderGetData(SCIP_READER *reader)
SCIP_RETCODE SCIPsetReaderWrite(SCIP *scip, SCIP_READER *reader,)
SCIP_RETCODE SCIPsetReaderRead(SCIP *scip, SCIP_READER *reader,)
const char * SCIPreaderGetName(SCIP_READER *reader)
SCIP_RETCODE SCIPsetReaderFree(SCIP *scip, SCIP_READER *reader,)
void SCIPreaderMarkExact(SCIP_READER *reader)
SCIP_Real SCIPinfinity(SCIP *scip)
SCIP_Bool SCIPisFeasEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisFeasZero(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisInfinity(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisFeasNegative(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisFeasIntegral(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisFeasGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisZero(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPtightenVarLb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
SCIP_RETCODE SCIPvarGetOrigvarSum(SCIP_VAR **var, SCIP_Real *scalar, SCIP_Real *constant)
SCIP_RETCODE SCIPtightenVarUbExact(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *newbound, SCIP_Bool *infeasible, SCIP_Bool *tightened)
SCIP_VAR * SCIPvarGetNegatedVar(SCIP_VAR *var)
SCIP_RETCODE SCIPchgVarUbExact(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *newbound)
SCIP_RETCODE SCIPchgVarLb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
int SCIPvarGetNLocksUpType(SCIP_VAR *var, SCIP_LOCKTYPE locktype)
SCIP_Bool SCIPvarIsImpliedIntegral(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)
SCIP_Real SCIPvarGetLbOriginal(SCIP_VAR *var)
SCIP_RETCODE SCIPaddVarExactData(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *lb, SCIP_RATIONAL *ub, SCIP_RATIONAL *obj)
SCIP_RETCODE SCIPchgVarUb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
SCIP_Real SCIPvarGetObj(SCIP_VAR *var)
SCIP_RETCODE SCIPtightenVarUb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
SCIP_VARTYPE SCIPvarGetType(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbGlobal(SCIP_VAR *var)
int SCIPvarGetIndex(SCIP_VAR *var)
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbOriginal(SCIP_VAR *var)
SCIP_RETCODE SCIPreleaseVar(SCIP *scip, SCIP_VAR **var)
SCIP_RETCODE SCIPgetProbvarLinearSum(SCIP *scip, SCIP_VAR **vars, SCIP_Real *scalars, int *nvars, int varssize, SCIP_Real *constant, int *requiredsize)
SCIP_RETCODE SCIPchgVarType(SCIP *scip, SCIP_VAR *var, SCIP_VARTYPE vartype, SCIP_Bool *infeasible)
SCIP_RETCODE SCIPgetNegatedVar(SCIP *scip, SCIP_VAR *var, SCIP_VAR **negvar)
SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)
SCIP_Bool SCIPvarIsNegated(SCIP_VAR *var)
SCIP_RATIONAL * SCIPvarGetLbGlobalExact(SCIP_VAR *var)
SCIP_RETCODE SCIPcreateVar(SCIP *scip, SCIP_VAR **var, const char *name, SCIP_Real lb, SCIP_Real ub, SCIP_Real obj, SCIP_VARTYPE vartype, SCIP_Bool initial, SCIP_Bool removable, SCIP_DECL_VARDELORIG((*vardelorig)), SCIP_DECL_VARTRANS((*vartrans)), SCIP_DECL_VARDELTRANS((*vardeltrans)), SCIP_DECL_VARCOPY((*varcopy)), SCIP_VARDATA *vardata)
SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)
SCIP_IMPLINTTYPE SCIPvarGetImplType(SCIP_VAR *var)
SCIP_RETCODE SCIPchgVarObjExact(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *newobj)
SCIP_RETCODE SCIPchgVarObj(SCIP *scip, SCIP_VAR *var, SCIP_Real newobj)
SCIP_RETCODE SCIPchgVarLbExact(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *newbound)
int SCIPvarGetNLocksDownType(SCIP_VAR *var, SCIP_LOCKTYPE locktype)
SCIP_RETCODE SCIPtightenVarLbExact(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *newbound, SCIP_Bool *infeasible, SCIP_Bool *tightened)
SCIP_RATIONAL * SCIPvarGetUbGlobalExact(SCIP_VAR *var)
void SCIPsortPtrPtrReal(void **ptrarray1, void **ptrarray2, SCIP_Real *realarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), int len)
int SCIPsnprintf(char *t, int len, const char *s,...)
void SCIPprintSysError(const char *message)
char * SCIPstrtok(char *s, const char *delim, char **ptrptr)
int SCIPmemccpy(char *dest, const char *src, char stop, unsigned int cnt)
assert(minobj< SCIPgetCutoffbound(scip))
static SCIP_Bool propagate
memory allocation routines
public methods for managing constraints
wrapper functions to map file i/o to standard or zlib file i/o
struct SCIP_File SCIP_FILE
public methods for message output
#define SCIPdebugPrintCons(x, y, z)
public data structures and miscellaneous methods
methods for sorting joint arrays of various types
public methods for input file readers
public methods for problem variables
wrapper for rational number arithmetic
#define DEFAULT_AGGRLINEARIZATION_ANDS
#define DEFAULT_LINEARIZE_ANDS
static void mpsinputEntryIgnored(SCIP *scip, MPSINPUT *mpsi, const char *what, const char *what_name, const char *entity, const char *entity_name, SCIP_VERBLEVEL verblevel)
static void mpsinputInsertField4(MPSINPUT *mpsi, const char *str)
static const char * mpsinputField5(const MPSINPUT *mpsi)
static SCIP_RETCODE checkVarnames(SCIP *scip, SCIP_VAR **vars, int nvars, unsigned int *maxnamelen, const char ***varnames, SCIP_HASHMAP **varnameHashmap)
static SCIP_RETCODE readMpsExact(SCIP *scip, const char *filename, const char ***varnames, const char ***consnames, int *varnamessize, int *consnamessize, int *nvarnames, int *nconsnames)
static SCIP_RETCODE readSOS(MPSINPUT *mpsi, SCIP *scip)
static void printRhsSection(SCIP *scip, FILE *file, int nconss, const char **consnames, SCIP_Real *rhss, unsigned int maxnamelen, SCIP_Real objoffset)
struct SparseMatrix SPARSEMATRIX
static const char * mpsinputField1(const MPSINPUT *mpsi)
static SCIP_RETCODE readObjsen(SCIP *scip, MPSINPUT *mpsi)
static SCIP_RETCODE checkSparseMatrixCapacity(SCIP *scip, SPARSEMATRIX *matrix, int capacity)
static SCIP_RETCODE readQMatrix(MPSINPUT *mpsi, SCIP_Bool isQuadObj, SCIP *scip)
#define MPSINTCOMP_LEVEL(IMPLINTLEVEL)
static SCIP_Bool mpsinputHasError(const MPSINPUT *mpsi)
static SCIP_RETCODE readRows(MPSINPUT *mpsi, SCIP *scip, const char ***consnames, int *consnamessize, int *nconsnames)
static void printBoundSectionName(SCIP *scip, FILE *file)
static const char * mpsinputField2(const MPSINPUT *mpsi)
static void clearFrom(char *buf, unsigned int pos)
static SCIP_RETCODE readColsExact(MPSINPUT *mpsi, SCIP *scip, const char ***varnames, int *varnamessize, int *nvarnames)
static SCIP_RETCODE readRhs(MPSINPUT *mpsi, SCIP *scip)
static void mpsinputSetObjname(MPSINPUT *mpsi, const char *objname)
static SCIP_RETCODE initializeMatrix(SCIP *scip, SPARSEMATRIX **matrix, int slots)
static void freeMatrix(SCIP *scip, SPARSEMATRIX *matrix)
static SCIP_RETCODE readObjname(SCIP *scip, MPSINPUT *mpsi)
enum MpsSection MPSSECTION
static SCIP_Bool mpsinputIsInteger(const MPSINPUT *mpsi)
static SCIP_RETCODE getLinearCoeffs(SCIP *scip, const char *consname, SCIP_VAR **vars, SCIP_Real *vals, int nvars, SCIP_Bool transformed, SPARSEMATRIX *matrix, SCIP_Real *rhs)
static void mpsinputSetProbname(MPSINPUT *mpsi, const char *probname)
static void printRangeSection(SCIP *scip, FILE *file, SCIP_CONS **conss, int nconss, const char **consnames, SCIP_Bool transformed, unsigned int maxnamelen)
static SCIP_OBJSENSE mpsinputObjsense(const MPSINPUT *mpsi)
static SCIP_RETCODE readCols(MPSINPUT *mpsi, SCIP *scip, const char ***varnames, int *varnamessize, int *nvarnames)
static SCIP_Bool mpsinputReadLine(MPSINPUT *mpsi)
static void mpsinputSetObjsense(MPSINPUT *mpsi, SCIP_OBJSENSE sense)
static void mpsinputInsertName(MPSINPUT *mpsi, const char *name, SCIP_Bool second)
static MPSSECTION mpsinputSection(const MPSINPUT *mpsi)
static SCIP_RETCODE addVarNameToStorage(SCIP *scip, const char ***varnames, int *varnamessize, int *nvars, const char *colname)
static const char * mpsinputField3(const MPSINPUT *mpsi)
static SCIP_RETCODE checkConsnames(SCIP *scip, SCIP_CONS **conss, int nconss, SCIP_Bool transformed, unsigned int *maxnamelen, const char ***consnames, SCIP_Bool *error)
static SCIP_RETCODE readRhsExact(MPSINPUT *mpsi, SCIP *scip)
static SCIP_RETCODE addConsNameToStorage(SCIP *scip, const char ***consnames, int *consnamessize, int *ncons, const char *rowname)
static SCIP_RETCODE readMps(SCIP *scip, const char *filename, const char ***varnames, const char ***consnames, int *varnamessize, int *consnamessize, int *nvarnames, int *nconsnames)
static void printRowType(SCIP *scip, FILE *file, SCIP_Real lhs, SCIP_Real rhs, const char *name)
static SCIP_RETCODE readRanges(MPSINPUT *mpsi, SCIP *scip)
static SCIP_RETCODE mpsinputCreate(SCIP *scip, MPSINPUT **mpsi, SCIP_FILE *fp)
static unsigned int computeFieldWidth(unsigned int width)
struct ConsNameFreq CONSNAMEFREQ
static void printBoundSection(SCIP *scip, FILE *file, SCIP_VAR **vars, int nvars, SCIP_VAR **aggvars, int naggvars, SCIP_VAR **fixvars, int nfixvars, SCIP_Bool transformed, const char **varnames, SCIP_HASHTABLE *indicatorSlackHash, unsigned int maxnamelen)
static const char * mpsinputField4(const MPSINPUT *mpsi)
static void printEntry(SCIP *scip, FILE *file, const char *varname, const char *consname, SCIP_Real value, int *recordcnt, unsigned int maxnamelen)
static void printStart(SCIP *scip, FILE *file, const char *col1, const char *col2, int maxnamelen)
static SCIP_RETCODE readIndicators(MPSINPUT *mpsi, SCIP *scip)
static void mpsinputSetSection(MPSINPUT *mpsi, MPSSECTION section)
static void printRecord(SCIP *scip, FILE *file, const char *col1, const char *col2, unsigned int maxnamelen)
static SCIP_RETCODE readRowsExact(MPSINPUT *mpsi, SCIP *scip, const char ***consnames, int *consnamessize, int *nconsnames)
static const char * mpsinputObjname(const MPSINPUT *mpsi)
static const char * mpsinputField0(const MPSINPUT *mpsi)
static void mpsinputSyntaxerror(MPSINPUT *mpsi)
static SCIP_RETCODE collectAggregatedVars(SCIP *scip, SCIP_VAR **vars, int nvars, SCIP_VAR ***aggvars, int *naggvars, int *saggvars, SCIP_HASHTABLE *varAggregated)
static SCIP_RETCODE readName(SCIP *scip, MPSINPUT *mpsi)
static SCIP_RETCODE readQCMatrix(MPSINPUT *mpsi, SCIP *scip)
static SCIP_RETCODE readRangesExact(MPSINPUT *mpsi, SCIP *scip)
static SCIP_RETCODE readBounds(MPSINPUT *mpsi, SCIP *scip)
static SCIP_RETCODE readBoundsExact(MPSINPUT *mpsi, SCIP *scip)
static SCIP_Bool writeVarIsIntegral(SCIP_VAR *var, int implintlevel)
static void patchField(char *buf, int beg, int end)
static void mpsinputFree(SCIP *scip, MPSINPUT **mpsi)
(extended) MPS file reader
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 querying solving statistics
public methods for SCIP variables
static SCIP_RETCODE separate(SCIP *scip, SCIP_SEPA *sepa, SCIP_SOL *sol, SCIP_RESULT *result)
Main separation function.
struct SCIP_Cons SCIP_CONS
struct SCIP_Conshdlr SCIP_CONSHDLR
struct SCIP_Expr SCIP_EXPR
enum SCIP_BoundType SCIP_BOUNDTYPE
enum SCIP_VerbLevel SCIP_VERBLEVEL
struct SCIP_HashMap SCIP_HASHMAP
#define SCIP_DECL_SORTPTRCOMP(x)
#define SCIP_DECL_HASHKEYEQ(x)
#define SCIP_DECL_HASHGETKEY(x)
#define SCIP_DECL_HASHKEYVAL(x)
struct SCIP_HashTable SCIP_HASHTABLE
enum SCIP_Objsense SCIP_OBJSENSE
struct SCIP_Rational SCIP_RATIONAL
#define SCIP_DECL_READERWRITE(x)
struct SCIP_ReaderData SCIP_READERDATA
struct SCIP_Reader SCIP_READER
#define SCIP_DECL_READERREAD(x)
#define SCIP_DECL_READERCOPY(x)
#define SCIP_DECL_READERFREE(x)
enum SCIP_Result SCIP_RESULT
enum SCIP_Retcode SCIP_RETCODE
@ SCIP_VARTYPE_CONTINUOUS
@ SCIP_VARSTATUS_MULTAGGR
@ SCIP_VARSTATUS_AGGREGATED
enum SCIP_Vartype SCIP_VARTYPE
enum SCIP_Varstatus SCIP_VARSTATUS