74#include "scip/cons_alldifferent.h"
77#define READER_NAME "fznreader"
78#define READER_DESC "file reader for FlatZinc format"
79#define READER_EXTENSION "fzn"
82#define FZN_BUFFERLEN 65536
83#define FZN_INIT_LINELEN 65536
84#define FZN_MAX_PUSHEDTOKENS 1
149struct SCIP_ReaderData
168#define CREATE_CONSTRAINT(x) SCIP_RETCODE x (SCIP* scip, FZNINPUT* fzninput, const char* fname, char** ftokens, int nftokens, SCIP_Bool* created)
193 SCIP_Bool initialconss;
194 SCIP_Bool dynamicconss;
195 SCIP_Bool dynamiccols;
196 SCIP_Bool dynamicrows;
221 SCIP_Bool* varhasfloat;
250 return (
void*) constant->name;
271 for(
i = nelements - 1;
i >= 0; --
i )
302 if(
strlen(token) == 1 && *token ==
c )
327 else if(
strlen(name) == 5 &&
strncmp(name,
"false", 5) == 0 )
358 if( !
isalnum((
unsigned char)name[
i]) && name[
i] !=
'_' )
694 (*readerdata)->vararrays =
NULL;
695 (*readerdata)->nvararrays = 0;
696 (*readerdata)->vararrayssize = 0;
711 nvararrays = readerdata->nvararrays;
712 vararrayssize = readerdata->vararrayssize;
714 if( vararrayssize == nvararrays )
716 if( vararrayssize == 0 )
728 readerdata->vararrayssize = vararrayssize;
744 vararrayssize =
fzninput->vararrayssize;
746 if( vararrayssize == nvararrays )
748 if( vararrayssize == 0 )
760 fzninput->vararrayssize = vararrayssize;
775 nconstarrays =
fzninput->nconstarrays;
776 constarrayssize =
fzninput->constarrayssize;
778 if( constarrayssize == nconstarrays )
780 if( constarrayssize == 0 )
782 constarrayssize = 100;
787 constarrayssize *= 2;
792 fzninput->constarrayssize = constarrayssize;
855 (*target)->ndims =
source->ndims;
856 (*target)->size =
source->ndims;
887 (*vararray)->nvars =
nvars;
888 (*vararray)->type = type;
971 (*constarray)->nconstants = nconstants;
972 (*constarray)->type = type;
1032 nvararrays = readerdata->nvararrays;
1059 readerdata->vararrays[nvararrays] =
vararray;
1060 readerdata->nvararrays++;
1080 nvararrays = readerdata->nvararrays;
1088 readerdata->vararrays[nvararrays] =
vararray;
1089 readerdata->nvararrays++;
1137 nconstarrays =
fzninput->nconstarrays;
1158 SCIP_Real* lincoefs,
1165 SCIP_Bool initialconss,
1166 SCIP_Bool dynamicconss,
1167 SCIP_Bool dynamicrows
1173 quadvars2,
quadcoefs, lhs, rhs, initialconss,
TRUE,
TRUE,
TRUE,
TRUE,
FALSE,
FALSE, dynamicconss,
1194 SCIP_Bool initialconss,
1195 SCIP_Bool dynamicconss,
1196 SCIP_Bool dynamicrows
1217 const char* consname,
1225 SCIP_Real vals[] = {0.0,0.0};
1249 value1 = constant->value;
1265 value2 = constant->value;
1307 if( constant ==
NULL )
1312 *idx = (int) constant->value;
1526 SCIPwarningMessage(
scip,
"lower bound and upper bound mismatch in value type, assume %s variable type\n",
1527 fzninput->hasdot ?
"an integer" :
"a continuous");
1551 (*info)->size = size;
1569 if( nelements == size )
1574 (*info)->size = size;
1578 (*info)->lbs[nelements] = (int) lb;
1579 (*info)->ubs[nelements] = (int) ub;
1583 (*info)->ndims = nelements;
1602 if( output !=
NULL )
1720 SCIP_Real vals[] = {1.0,-1.0};
1734 else if( constant !=
NULL )
1780 if( *constant !=
NULL )
1783 if( type != (*constant)->type )
1789 value = (*constant)->value;
1808 (*constant)->type = type;
1810 (*constant)->value = value;
1924 if( type !=
FZN_INT || left != 1.0 || right <= 0.0 )
1930 *nelements = (int) right;
1975 SCIP_CALL(
SCIPcreateVar(
scip, &
varcopy, name, lb, ub, 0.0, vartype, !(
fzninput->dynamiccols),
fzninput->dynamiccols,
NULL,
NULL,
NULL,
NULL,
NULL) );
2019 for( v = 0; v <
nvars; ++v )
2105 for(
c = 0;
c < nconstants; ++
c )
2182 SCIPdebugMsg(
scip,
"found <%s> array named <%s> of type <%s> and size <%d> with bounds [%g,%g] (output %u)\n",
2184 type ==
FZN_BOOL ?
"bool" : type ==
FZN_INT ?
"integer" :
"float", nelements, lb, ub, output);
2319 if( constant ==
NULL )
2336 (*value) = constant->value;
2381 if(
sizevals <= *nvals + nelements )
2391 (*vals)[(*nvals)] = value;
2417 (*vals)[(*nvals)] =
constarray->constants[
c]->value;
2502 if( sizevars <= *
nvars + nelements )
2507 for( v = 0; v < nelements; ++v )
2523 if( constant !=
NULL )
2526 value = constant->value;
2565 for( v = 0; v <
vararray->nvars; ++v )
2567 (*vars)[(*nvars)] =
vararray->vars[v];
2608 for( v = 0; v < 3; ++v )
2635 SCIP_CALL(
createQuadraticCons(
scip, name, 1, &
vars[2], &
linval, 1, &
vars[0], &
vars[1], &
quadval, rhs, rhs,
2641 SCIP_CALL(
createQuadraticCons(
scip, name, 0,
NULL,
NULL, 1, &
vars[0], &
vars[1], &
quadval, rhs, rhs,
2679 rhs = rhs - vals[0]*vals[1];
2730 assert(nelements == 3 || nelements == 2);
2947 for( v = 0; v <
nvars; ++v )
2960 SCIP_Real vals[] = {1.0, 1.0};
3154 SCIPwarningMessage(
scip,
"constraints with '<' or '>' relation and continuous variables are not supported\n");
3306 SCIP_Real* vals =
NULL;
3307 int* durations =
NULL;
3308 int* demands =
NULL;
3352 durations[
i] = (
int)vals[
i];
3368 demands[
i] = (
int)vals[
i];
3384 capacity = (int)val;
3458 SCIP_Real vals[] = {1.0};
3485 while( token !=
NULL )
3597 else if( constant !=
NULL )
3599 SCIPdebugMsg(
scip,
"optimizing a constant is equal to a satisfiability problem!\n");
3677 for( v = 0; v <
nvars; ++v )
3701 const char* filename
3869 SCIP_Real* constant,
3870 SCIP_Bool transformed
3906 for( v = 0; v < *
nvars; ++v )
3916 *constant += (*scalars)[v];
3917 (*scalars)[v] *= -1.0;
3938 buffer[bufferpos] =
'\0';
3951 const char* extension
4025 for( v = 0; v <
nvars-1; ++v )
4054 for( v = 0; v <
nvars-1; ++v )
4107 SCIP_Bool transformed,
4239 SCIP_Bool transformed,
4243 SCIP_Real objoffset,
4289 SCIPinfoMessage(
scip, file,
"%% Variables : %d (%d binary, %d integer, %d implicit integer, %d continuous)\n",
4301 for( v = 0; v <
nvars; v++ )
4330 if( v < ndiscretevars )
4363 if( v < ndiscretevars )
4385 fznoutput.ndiscretevars = ndiscretevars;
4398 for( v = 0; v < ndiscretevars; v++ )
4405 for(
c = 0;
c < nconss;
c++ )
4438 consvars,
NULL, nconsvars, 1.0, 1.0, transformed,
FALSE) );
4458 SCIP_Longint* weights;
4466 for( v = 0; v < nconsvars; ++v )
4467 consvals[v] = (SCIP_Real)weights[v];
4502 for( v = 0; v < nconsvars; ++v )
4504 if( v < nconsvars - 1)
4516 for( v = 0; v < nconsvars; ++v )
4518 if( v < nconsvars - 1)
4530 for( v = 0; v < nconsvars; ++v )
4532 if( v < nconsvars - 1)
4555 for( v = 0; v <
nvars; v++ )
4568 SCIPdebugMsg(
scip,
"variable <%s> at pos <%d,%d> has an integral obj: %f=%f*%f\n",
4575 if( v < ndiscretevars && !
fznoutput.varhasfloat[v] )
4755 for( v = 0; v < readerdata->nvararrays; ++v )
4912 else if( transformed )
4982 vararrays = readerdata->vararrays;
4983 nvararrays = readerdata->nvararrays;
4988 for(
i = 0;
i < nvararrays; ++
i )
4996 if( info->ndims == 0 )
5010 for( v = 0; v < info->ndims; ++v )
5017 for( v = 0; v <
nvars; ++v )
Constraint handler for AND constraints, .
constraint handler for cumulative 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 "or" constraints, .
Constraint handler for the set partitioning / packing / covering constraints .
Constraint handler for variable bound constraints .
Constraint handler for XOR constraints, .
#define SCIP_HASHSIZE_NAMES
#define SCIP_CALL_ABORT(x)
#define SCIP_LONGINT_FORMAT
SCIP_FILE * SCIPfopen(const char *path, const char *mode)
int SCIPfeof(SCIP_FILE *stream)
int SCIPfclose(SCIP_FILE *fp)
char * SCIPfgets(char *s, int size, SCIP_FILE *stream)
int SCIPgetNVarsKnapsack(SCIP *scip, SCIP_CONS *cons)
SCIP_Real SCIPgetVbdcoefVarbound(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)
int * SCIPgetDurationsCumulative(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPcreateConsAnd(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *resvar, int nvars, SCIP_VAR **vars, 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 SCIPgetLhsLinear(SCIP *scip, SCIP_CONS *cons)
int SCIPgetNVarsLinear(SCIP *scip, SCIP_CONS *cons)
SCIP_Real * SCIPgetValsLinear(SCIP *scip, SCIP_CONS *cons)
SCIP_VAR * SCIPgetVbdvarVarbound(SCIP *scip, SCIP_CONS *cons)
int SCIPgetNVarsSetppc(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPcreateConsXor(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_Bool rhs, int nvars, SCIP_VAR **vars, 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 ** SCIPgetVarsCumulative(SCIP *scip, SCIP_CONS *cons)
SCIP_VAR ** SCIPgetVarsSetppc(SCIP *scip, SCIP_CONS *cons)
int * SCIPgetDemandsCumulative(SCIP *scip, SCIP_CONS *cons)
SCIP_VAR * SCIPgetVarVarbound(SCIP *scip, SCIP_CONS *cons)
SCIP_Longint * SCIPgetWeightsKnapsack(SCIP *scip, SCIP_CONS *cons)
int SCIPgetCapacityCumulative(SCIP *scip, 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_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 ** SCIPgetVarsLogicor(SCIP *scip, SCIP_CONS *cons)
SCIP_Real SCIPgetRhsVarbound(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 SCIPcreateConsOr(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *resvar, int nvars, SCIP_VAR **vars, 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)
int SCIPgetNVarsCumulative(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPcreateConsCumulative(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, int *durations, int *demands, int capacity, 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_SETPPCTYPE_PARTITIONING
@ SCIP_SETPPCTYPE_COVERING
@ SCIP_SETPPCTYPE_PACKING
SCIP_RETCODE SCIPprintSolReaderFzn(SCIP *scip, SCIP_SOL *sol, FILE *file)
SCIP_RETCODE SCIPincludeReaderFzn(SCIP *scip)
SCIP_RETCODE SCIPaddVar(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPaddCons(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPfreeProb(SCIP *scip)
SCIP_RETCODE SCIPsetObjsense(SCIP *scip, SCIP_OBJSENSE objsense)
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)
void SCIPhashtableFree(SCIP_HASHTABLE **hashtable)
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,...)
#define SCIPdebugMsgPrint
void SCIPwarningMessage(SCIP *scip, const char *formatstr,...)
SCIP_RETCODE SCIPgetBoolParam(SCIP *scip, const char *name, SCIP_Bool *value)
void SCIPswapPointers(void **pointer1, void **pointer2)
const char * SCIPconshdlrGetName(SCIP_CONSHDLR *conshdlr)
SCIP_CONSHDLR * SCIPconsGetHdlr(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsTransformed(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsEnabled(SCIP_CONS *cons)
SCIP_RETCODE SCIPreleaseCons(SCIP *scip, SCIP_CONS **cons)
#define SCIPfreeBuffer(scip, ptr)
#define SCIPfreeBlockMemoryArray(scip, ptr, num)
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 SCIPfreeBlockMemoryArrayNull(scip, ptr, num)
#define SCIPfreeBufferArrayNull(scip, ptr)
#define SCIPallocBlockMemory(scip, ptr)
#define SCIPduplicateBlockMemoryArray(scip, ptr, source, num)
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_READER * SCIPfindReader(SCIP *scip, const char *name)
SCIP_RETCODE SCIPsetReaderRead(SCIP *scip, SCIP_READER *reader,)
const char * SCIPreaderGetName(SCIP_READER *reader)
SCIP_RETCODE SCIPsetReaderFree(SCIP *scip, SCIP_READER *reader,)
SCIP_Real SCIPgetSolVal(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var)
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_Real SCIPinfinity(SCIP *scip)
SCIP_Bool SCIPisIntegral(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisInfinity(SCIP *scip, SCIP_Real val)
SCIP_Real SCIPround(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisFeasIntegral(SCIP *scip, SCIP_Real val)
SCIP_Longint SCIPconvertRealToLongint(SCIP *scip, SCIP_Real real)
SCIP_Bool SCIPisEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisZero(SCIP *scip, SCIP_Real val)
SCIP_RETCODE SCIPgetProbvarLinearSum(SCIP *scip, SCIP_VAR **vars, SCIP_Real *scalars, int *nvars, int varssize, SCIP_Real *constant, int *requiredsize, SCIP_Bool mergemultiples)
SCIP_RETCODE SCIPvarGetOrigvarSum(SCIP_VAR **var, SCIP_Real *scalar, SCIP_Real *constant)
SCIP_VAR * SCIPvarGetNegatedVar(SCIP_VAR *var)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)
SCIP_Real SCIPvarGetLbOriginal(SCIP_VAR *var)
SCIP_Real SCIPvarGetObj(SCIP_VAR *var)
SCIP_VARTYPE SCIPvarGetType(SCIP_VAR *var)
int SCIPvarGetProbindex(SCIP_VAR *var)
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbOriginal(SCIP_VAR *var)
SCIP_RETCODE SCIPreleaseVar(SCIP *scip, SCIP_VAR **var)
SCIP_Real SCIPvarGetLbLocal(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_RETCODE SCIPprintVar(SCIP *scip, SCIP_VAR *var, FILE *file)
SCIP_RETCODE SCIPchgVarObj(SCIP *scip, SCIP_VAR *var, SCIP_Real newobj)
void SCIPsortPtr(void **ptrarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), int len)
int SCIPsnprintf(char *t, int len, const char *s,...)
void SCIPprintSysError(const char *message)
int SCIPstrncpy(char *t, const char *s, int size)
char * SCIPstrtok(char *s, const char *delim, char **ptrptr)
assert(minobj< SCIPgetCutoffbound(scip))
static const SCIP_Real scalars[]
memory allocation routines
#define BMSclearMemoryArray(ptr, num)
BMS_BLKMEM * SCIPblkmem(SCIP *scip)
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
static SCIP_RETCODE parseArrayAssignment(SCIP *scip, FZNINPUT *fzninput, char ***elements, int *nelements, int selements)
static SCIP_Bool equalTokens(const char *token1, const char *token2)
static void freeVararray(SCIP *scip, VARARRAY **vararray)
static void parseRange(SCIP *scip, FZNINPUT *fzninput, FZNNUMBERTYPE *type, SCIP_Real *lb, SCIP_Real *ub)
static SCIP_RETCODE getActiveVariables(SCIP *scip, SCIP_VAR ***vars, SCIP_Real **scalars, int *nvars, SCIP_Real *constant, SCIP_Bool transformed)
static SCIP_RETCODE parseConstantArray(SCIP *scip, FZNINPUT *fzninput, const char *name, int nconstants, FZNNUMBERTYPE type)
static SCIP_RETCODE parseLinking(SCIP *scip, FZNINPUT *fzninput, const char *name, const char *type, SCIP_Real sidevalue)
static void flattenAssignment(SCIP *scip, FZNINPUT *fzninput, char *assignment)
static SCIP_RETCODE parseName(SCIP *scip, FZNINPUT *fzninput, char *name, SCIP_Bool *output, DIMENSIONS **info)
static void freeConstarray(SCIP *scip, CONSTARRAY **constarray)
static SCIP_RETCODE createQuadraticCons(SCIP *scip, 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 initialconss, SCIP_Bool dynamicconss, SCIP_Bool dynamicrows)
static SCIP_RETCODE parseAggregation(SCIP *scip, FZNINPUT *fzninput, const char *name, const char *type)
static SCIP_RETCODE copyDimensions(SCIP *scip, DIMENSIONS **target, DIMENSIONS *source)
static SCIP_RETCODE writeFzn(SCIP *scip, FILE *file, const char *name, SCIP_Bool transformed, SCIP_OBJSENSE objsense, SCIP_Real objscale, SCIP_Real objoffset, SCIP_VAR **vars, int nvars, int nbinvars, int nintvars, int nimplvars, int ncontvars, SCIP_CONS **conss, int nconss, SCIP_RESULT *result)
static void parseValue(SCIP *scip, FZNINPUT *fzninput, SCIP_Real *value, const char *assignment)
static SCIP_RETCODE parseQuadratic(SCIP *scip, FZNINPUT *fzninput, const char *name)
static void freeStringBufferArray(SCIP *scip, char **array, int nelements)
static SCIP_RETCODE parseSolveItem(SCIP *scip, FZNINPUT *fzninput)
static void computeLinearConsSides(SCIP *scip, FZNINPUT *fzninput, const char *name, SCIP_Real sidevalue, SCIP_Real *lhs, SCIP_Real *rhs)
static SCIP_RETCODE readFZNFile(SCIP *scip, SCIP_READERDATA *readerdata, FZNINPUT *fzninput, const char *filename)
struct FznConstant FZNCONSTANT
static const char tokenchars[]
static SCIP_RETCODE parseConstantArrayAssignment(SCIP *scip, FZNINPUT *fzninput, SCIP_Real **vals, int *nvals, int sizevals)
static const int nconstypes
struct FznOutput FZNOUTPUT
static void writeBuffer(SCIP *scip, FILE *file, char *buffer, int bufferpos)
static SCIP_RETCODE createLinearCons(SCIP *scip, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool initialconss, SCIP_Bool dynamicconss, SCIP_Bool dynamicrows)
static SCIP_Bool getNextLine(SCIP *scip, FZNINPUT *fzninput)
static SCIP_RETCODE fzninputAddConstarray(SCIP *scip, FZNINPUT *fzninput, const char *name, FZNCONSTANT **constants, int nconstants, FZNNUMBERTYPE type)
static const char commentchars[]
static void parseArrayType(SCIP *scip, FZNINPUT *fzninput, SCIP_Bool *isvararray, FZNNUMBERTYPE *type, SCIP_Real *lb, SCIP_Real *ub)
static SCIP_Bool isValue(const char *token, SCIP_Real *value)
static SCIP_RETCODE ensureConstarrySizeFznInput(SCIP *scip, FZNINPUT *fzninput)
static void parseArrayIndex(SCIP *scip, FZNINPUT *fzninput, int *idx)
static void flattenFloat(SCIP *scip, SCIP_Real val, char *buffer)
struct ConstArray CONSTARRAY
static SCIP_Bool isBoolExp(const char *name, SCIP_Bool *value)
enum FznNumberType FZNNUMBERTYPE
static SCIP_RETCODE parseVariableArray(SCIP *scip, SCIP_READERDATA *readerdata, FZNINPUT *fzninput, const char *name, int nvars, FZNNUMBERTYPE type, SCIP_Real lb, SCIP_Real ub, DIMENSIONS *info)
enum FznExpType FZNEXPTYPE
static SCIP_RETCODE printRow(SCIP *scip, FZNOUTPUT *fznoutput, const char *type, SCIP_VAR **vars, SCIP_Real *vals, int nvars, SCIP_Real rhs, SCIP_Bool hasfloats)
static SCIP_RETCODE parseList(SCIP *scip, FZNINPUT *fzninput, char ***elements, int *nelements, int selements)
static SCIP_RETCODE ensureVararrySizeFznInput(SCIP *scip, FZNINPUT *fzninput)
static void freeDimensions(SCIP *scip, DIMENSIONS **dim)
static SCIP_RETCODE readerdataAddOutputvararray(SCIP *scip, SCIP_READERDATA *readerdata, const char *name, SCIP_VAR **vars, int nvars, FZNNUMBERTYPE type, DIMENSIONS *info)
static void parseArrayDimension(SCIP *scip, FZNINPUT *fzninput, int *nelements)
static SCIP_RETCODE createVariable(SCIP *scip, FZNINPUT *fzninput, SCIP_VAR **var, const char *name, SCIP_Real lb, SCIP_Real ub, FZNNUMBERTYPE type)
static SCIP_RETCODE parseConstraint(SCIP *scip, FZNINPUT *fzninput)
static SCIP_RETCODE parseConstant(SCIP *scip, FZNINPUT *fzninput, FZNNUMBERTYPE type)
static SCIP_RETCODE printLinearCons(SCIP *scip, FZNOUTPUT *fznoutput, SCIP_VAR **vars, SCIP_Real *vals, int nvars, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool transformed, SCIP_Bool mayhavefloats)
static SCIP_Bool isValueChar(char c, char nextc, SCIP_Bool firstchar, SCIP_Bool *hasdot, FZNEXPTYPE *exptype)
#define CREATE_CONSTRAINT(x)
static void pushToken(FZNINPUT *fzninput)
static SCIP_RETCODE parsePredicate(SCIP *scip, FZNINPUT *fzninput)
static SCIP_RETCODE createConstantAssignment(SCIP *scip, FZNCONSTANT **constant, FZNINPUT *fzninput, const char *name, FZNNUMBERTYPE type, const char *assignment)
static SCIP_RETCODE createLinking(SCIP *scip, FZNINPUT *fzninput, const char *consname, const char *name1, const char *name2, SCIP_Real lhs, SCIP_Real rhs)
static SCIP_Bool isEndStatement(FZNINPUT *fzninput)
static SCIP_RETCODE readerdataAddOutputvar(SCIP *scip, SCIP_READERDATA *readerdata, SCIP_VAR *var, FZNNUMBERTYPE type)
static SCIP_RETCODE appendBuffer(SCIP *scip, char **buffer, int *bufferlen, int *bufferpos, const char *extension)
static SCIP_RETCODE readerdataCreate(SCIP *scip, SCIP_READERDATA **readerdata)
static VARARRAY * findVararray(FZNINPUT *fzninput, const char *name)
static SCIP_Bool isDelimChar(char c)
static SCIP_RETCODE createVararray(SCIP *scip, VARARRAY **vararray, const char *name, SCIP_VAR **vars, int nvars, FZNNUMBERTYPE type, DIMENSIONS *info)
static SCIP_Bool isChar(const char *token, char c)
struct Dimensions DIMENSIONS
static SCIP_Bool isIdentifier(const char *name)
static SCIP_RETCODE applyVariableAssignment(SCIP *scip, FZNINPUT *fzninput, SCIP_VAR *var, FZNNUMBERTYPE type, const char *assignment)
static void parseType(SCIP *scip, FZNINPUT *fzninput, FZNNUMBERTYPE *type, SCIP_Real *lb, SCIP_Real *ub)
static CONSTARRAY * findConstarray(FZNINPUT *fzninput, const char *name)
static void syntaxError(SCIP *scip, FZNINPUT *fzninput, const char *msg)
static SCIP_RETCODE ensureVararrySize(SCIP *scip, SCIP_READERDATA *readerdata)
#define FZN_MAX_PUSHEDTOKENS
static SCIP_RETCODE parseVariableArrayAssignment(SCIP *scip, FZNINPUT *fzninput, SCIP_VAR ***vars, int *nvars, int sizevars)
static const char delimchars[]
static void printValue(SCIP *scip, FILE *file, SCIP_Real value, FZNNUMBERTYPE type)
static SCIP_RETCODE parseVariable(SCIP *scip, SCIP_READERDATA *readerdata, FZNINPUT *fzninput)
static SCIP_Bool hasError(FZNINPUT *fzninput)
static SCIP_Bool isTokenChar(char c)
static SCIP_RETCODE createConstarray(SCIP *scip, CONSTARRAY **constarray, const char *name, FZNCONSTANT **constants, int nconstants, FZNNUMBERTYPE type)
static SCIP_RETCODE fzninputAddVararray(SCIP *scip, FZNINPUT *fzninput, const char *name, SCIP_VAR **vars, int nvars, FZNNUMBERTYPE type, DIMENSIONS *info)
static SCIP_RETCODE parseOutputDimensioninfo(SCIP *scip, FZNINPUT *fzninput, DIMENSIONS **info)
static SCIP_RETCODE parseArray(SCIP *scip, SCIP_READERDATA *readerdata, FZNINPUT *fzninput)
static SCIP_Bool getNextToken(SCIP *scip, FZNINPUT *fzninput)
public methods for constraint handler plugins and constraints
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 querying solving statistics
public methods for SCIP variables
enum SCIP_BoundType SCIP_BOUNDTYPE
#define SCIP_DECL_SORTPTRCOMP(x)
#define SCIP_DECL_HASHGETKEY(x)
enum SCIP_Objsense SCIP_OBJSENSE
#define SCIP_DECL_READERWRITE(x)
struct SCIP_ReaderData SCIP_READERDATA
#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
enum SCIP_Vartype SCIP_VARTYPE