LP file reader.
Definition in file reader_lp.c.
#include "blockmemshell/memory.h"
#include <ctype.h>
#include "scip/cons_and.h"
#include "scip/cons_bounddisjunction.h"
#include "scip/cons_nonlinear.h"
#include "scip/cons_indicator.h"
#include "scip/cons_knapsack.h"
#include "scip/cons_linear.h"
#include "scip/cons_logicor.h"
#include "scip/cons_setppc.h"
#include "scip/cons_sos1.h"
#include "scip/cons_sos2.h"
#include "scip/cons_varbound.h"
#include "scip/pub_cons.h"
#include "scip/pub_fileio.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/pub_reader.h"
#include "scip/pub_var.h"
#include "scip/reader_lp.h"
#include "scip/scip_cons.h"
#include "scip/scip_mem.h"
#include "scip/scip_message.h"
#include "scip/scip_numerics.h"
#include "scip/scip_param.h"
#include "scip/scip_prob.h"
#include "scip/scip_reader.h"
#include "scip/scip_var.h"
#include <stdlib.h>
#include <string.h>
Go to the source code of this file.
Macros | |
#define | READER_NAME "lpreader" |
#define | READER_DESC "file reader for MIPs in IBM CPLEX's LP file format" |
#define | READER_EXTENSION "lp" |
#define | DEFAULT_LINEARIZE_ANDS TRUE |
#define | DEFAULT_AGGRLINEARIZATION_ANDS TRUE |
#define | LP_MAX_LINELEN 65536 |
#define | LP_MAX_PUSHEDTOKENS 2 |
#define | LP_INIT_COEFSSIZE 8192 |
#define | LP_INIT_QUADCOEFSSIZE 16 |
#define | LP_MAX_PRINTLEN 561 |
#define | LP_MAX_NAMELEN 256 |
#define | LP_PRINTLEN 100 |
Functions | |
static void | syntaxError (SCIP *scip, LPINPUT *lpinput, const char *msg) |
static SCIP_Bool | hasError (LPINPUT *lpinput) |
static SCIP_Bool | isDelimChar (char c) |
static SCIP_Bool | isTokenChar (char c) |
static SCIP_Bool | isValueChar (char c, char nextc, SCIP_Bool firstchar, SCIP_Bool *hasdot, LPEXPTYPE *exptype) |
static SCIP_Bool | getNextLine (SCIP *scip, LPINPUT *lpinput) |
static void | swapPointers (char **pointer1, char **pointer2) |
static SCIP_Bool | getNextToken (SCIP *scip, LPINPUT *lpinput) |
static void | pushToken (LPINPUT *lpinput) |
static void | pushBufferToken (LPINPUT *lpinput) |
static void | swapTokenBuffer (LPINPUT *lpinput) |
static SCIP_Bool | isNewSection (SCIP *scip, LPINPUT *lpinput) |
static SCIP_Bool | isSign (LPINPUT *lpinput, int *sign) |
static SCIP_Bool | isValue (SCIP *scip, LPINPUT *lpinput, SCIP_Real *value) |
static SCIP_Bool | isSense (LPINPUT *lpinput, LPSENSE *sense) |
static SCIP_RETCODE | getVariable (SCIP *scip, char *name, SCIP_VAR **var, SCIP_Bool *created) |
static SCIP_RETCODE | readStart (SCIP *scip, LPINPUT *lpinput) |
static SCIP_RETCODE | readCoefficients (SCIP *scip, LPINPUT *lpinput, SCIP_Bool isobjective, char *name, int *coefssize, SCIP_VAR ***vars, SCIP_Real **coefs, int *ncoefs, int *quadcoefssize, SCIP_VAR ***quadvars1, SCIP_VAR ***quadvars2, SCIP_Real **quadcoefs, int *nquadcoefs, SCIP_Real *objoffset, SCIP_Bool *newsection) |
static SCIP_RETCODE | readObjective (SCIP *scip, LPINPUT *lpinput) |
static SCIP_RETCODE | createIndicatorConstraint (SCIP *scip, LPINPUT *lpinput, const char *name, SCIP_VAR *binvar, SCIP_Real binvalue) |
static SCIP_RETCODE | readConstraints (SCIP *scip, LPINPUT *lpinput) |
static SCIP_RETCODE | readBounds (SCIP *scip, LPINPUT *lpinput) |
static SCIP_RETCODE | readGenerals (SCIP *scip, LPINPUT *lpinput) |
static SCIP_RETCODE | readBinaries (SCIP *scip, LPINPUT *lpinput) |
static SCIP_RETCODE | readSemicontinuous (SCIP *scip, LPINPUT *lpinput) |
static SCIP_RETCODE | readSos (SCIP *scip, LPINPUT *lpinput) |
static SCIP_RETCODE | readLPFile (SCIP *scip, LPINPUT *lpinput, const char *filename) |
static | SCIP_DECL_HASHGETKEY (hashGetKeyVar) |
static | SCIP_DECL_HASHKEYEQ (hashKeyEqVar) |
static | SCIP_DECL_HASHKEYVAL (hashKeyValVar) |
static SCIP_RETCODE | getActiveVariables (SCIP *scip, SCIP_VAR ***vars, SCIP_Real **scalars, int *nvars, SCIP_Real *constant, SCIP_Bool transformed) |
static void | clearLine (char *linebuffer, int *linecnt) |
static void | endLine (SCIP *scip, FILE *file, char *linebuffer, int *linecnt) |
static void | appendLine (SCIP *scip, FILE *file, char *linebuffer, int *linecnt, const char *extension) |
static SCIP_RETCODE | printRow (SCIP *scip, FILE *file, const char *rowname, const char *rownameextension, const char *type, SCIP_VAR **linvars, SCIP_Real *linvals, int nlinvars, SCIP_EXPR *quadexpr, SCIP_Real rhs, SCIP_Bool transformed) |
static SCIP_RETCODE | printQuadraticCons (SCIP *scip, FILE *file, const char *rowname, SCIP_VAR **linvars, SCIP_Real *linvals, int nlinvars, SCIP_EXPR *quadexpr, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool transformed) |
static void | printSosCons (SCIP *scip, FILE *file, const char *rowname, SCIP_VAR **vars, SCIP_Real *weights, int nvars, int type) |
static SCIP_RETCODE | printAndCons (SCIP *scip, FILE *file, const char *consname, SCIP_CONS *cons, SCIP_Bool aggrlinearizationands, SCIP_Bool transformed) |
static SCIP_RETCODE | collectAggregatedVars (SCIP *scip, SCIP_VAR **vars, int nvars, SCIP_VAR ***aggvars, int *naggvars, int *saggvars, SCIP_HASHTABLE *varAggregated) |
static SCIP_RETCODE | printAggregatedCons (SCIP *scip, FILE *file, SCIP_Bool transformed, int nvars, int nAggregatedVars, SCIP_VAR **aggregatedVars) |
static void | checkVarnames (SCIP *scip, SCIP_VAR **vars, int nvars) |
static void | checkConsnames (SCIP *scip, SCIP_CONS **conss, int nconss, SCIP_Bool transformed) |
static | SCIP_DECL_READERCOPY (readerCopyLp) |
static | SCIP_DECL_READERFREE (readerFreeLp) |
static | SCIP_DECL_READERREAD (readerReadLp) |
static | SCIP_DECL_READERWRITE (readerWriteLp) |
SCIP_RETCODE | SCIPincludeReaderLp (SCIP *scip) |
SCIP_RETCODE | SCIPreadLp (SCIP *scip, SCIP_READER *reader, const char *filename, SCIP_RESULT *result) |
SCIP_RETCODE | SCIPwriteLp (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) |
Variables | |
static const char | commentchars [] = "\\" |
#define READER_NAME "lpreader" |
Definition at line 72 of file reader_lp.c.
#define READER_DESC "file reader for MIPs in IBM CPLEX's LP file format" |
Definition at line 73 of file reader_lp.c.
#define READER_EXTENSION "lp" |
Definition at line 74 of file reader_lp.c.
#define DEFAULT_LINEARIZE_ANDS TRUE |
Should possible "and"-constraints be linearized when writing the lp file?
Definition at line 76 of file reader_lp.c.
Referenced by SCIPincludeReaderLp(), SCIPincludeReaderMps(), and SCIPwriteLp().
#define DEFAULT_AGGRLINEARIZATION_ANDS TRUE |
Should an aggregated linearization for and constraints be used?
Definition at line 77 of file reader_lp.c.
Referenced by SCIPincludeReaderLp(), SCIPincludeReaderMps(), and SCIPwriteLp().
#define LP_MAX_LINELEN 65536 |
Definition at line 83 of file reader_lp.c.
#define LP_MAX_PUSHEDTOKENS 2 |
Definition at line 84 of file reader_lp.c.
#define LP_INIT_COEFSSIZE 8192 |
Definition at line 85 of file reader_lp.c.
#define LP_INIT_QUADCOEFSSIZE 16 |
Definition at line 86 of file reader_lp.c.
Referenced by readCoefficients().
#define LP_MAX_PRINTLEN 561 |
the maximum length of any line is 560 + '\0' = 561
Definition at line 87 of file reader_lp.c.
Referenced by appendLine(), endLine(), printRow(), printSosCons(), and SCIPwriteLp().
#define LP_MAX_NAMELEN 256 |
the maximum length for any name is 255 + '\0' = 256
Definition at line 88 of file reader_lp.c.
Referenced by checkConsnames(), checkVarnames(), printAggregatedCons(), printAndCons(), printRow(), printSosCons(), and SCIPwriteLp().
#define LP_PRINTLEN 100 |
Definition at line 89 of file reader_lp.c.
Referenced by appendLine().
enum LpSection |
Section in LP File
Enumerator | |
---|---|
LP_START | |
LP_OBJECTIVE | |
LP_CONSTRAINTS | |
LP_BOUNDS | |
LP_GENERALS | |
LP_BINARIES | |
LP_SEMICONTINUOUS | |
LP_SOS | |
LP_END |
Definition at line 101 of file reader_lp.c.
enum LpExpType |
Enumerator | |
---|---|
LP_EXP_NONE | |
LP_EXP_UNSIGNED | |
LP_EXP_SIGNED |
Definition at line 107 of file reader_lp.c.
enum LpSense |
Enumerator | |
---|---|
LP_SENSE_NOTHING | |
LP_SENSE_LE | |
LP_SENSE_GE | |
LP_SENSE_EQ |
Definition at line 113 of file reader_lp.c.
issues an error message and marks the LP data to have errors
scip | SCIP data structure |
lpinput | LP reading data |
msg | error message |
Definition at line 154 of file reader_lp.c.
References assert(), LP_END, NULL, SCIP_VERBLEVEL_MINIMAL, SCIPerrorMessage, SCIPsnprintf(), SCIPverbMessage(), and TRUE.
Referenced by createIndicatorConstraint(), readBinaries(), readBounds(), readCoefficients(), readConstraints(), readGenerals(), readSemicontinuous(), and readSos().
returns whether a syntax error was detected
lpinput | LP reading data |
Definition at line 181 of file reader_lp.c.
References assert(), NULL, and SCIP_Bool.
Referenced by createIndicatorConstraint(), readConstraints(), and readObjective().
|
static |
returns whether the given character is a token delimiter
c | input character |
Definition at line 192 of file reader_lp.c.
References c, FALSE, SCIP_Bool, and TRUE.
Referenced by getNextToken().
|
static |
returns whether the given character is a single token
c | input character |
Definition at line 213 of file reader_lp.c.
References c, FALSE, SCIP_Bool, and TRUE.
Referenced by getNextToken().
|
static |
returns whether the current character is member of a value string
c | input character |
nextc | next input character |
firstchar | is the given character the first char of the token? |
hasdot | pointer to update the dot flag |
exptype | pointer to update the exponent type |
Definition at line 237 of file reader_lp.c.
References assert(), c, FALSE, LP_EXP_NONE, LP_EXP_SIGNED, LP_EXP_UNSIGNED, NULL, SCIP_Bool, and TRUE.
Referenced by getNextToken().
reads the next line from the input file into the line buffer; skips comments; returns whether a line could be read
scip | SCIP data structure |
lpinput | LP reading data |
Definition at line 281 of file reader_lp.c.
References assert(), BMSclearMemoryArray, commentchars, FALSE, i, NULL, SCIP_Bool, SCIP_CALL_ABORT, SCIPcalcMemGrowSize(), SCIPfgets(), SCIPreallocBlockMemoryArray, and TRUE.
Referenced by getNextToken().
|
static |
swaps the addresses of two pointers
pointer1 | first pointer |
pointer2 | second pointer |
Definition at line 339 of file reader_lp.c.
Referenced by getNextToken(), pushBufferToken(), pushToken(), and swapTokenBuffer().
reads the next token from the input file into the token buffer; returns whether a token was read
scip | SCIP data structure |
lpinput | LP reading data |
Definition at line 353 of file reader_lp.c.
References assert(), FALSE, getNextLine(), isDelimChar(), isTokenChar(), isTokenChar(), isValueChar(), LP_END, LP_EXP_NONE, LP_MAX_LINELEN, NULL, SCIP_Bool, SCIPdebugMsg, swapPointers(), and TRUE.
Referenced by createIndicatorConstraint(), isNewSection(), readBinaries(), readBounds(), readCoefficients(), readConstraints(), readGenerals(), readSemicontinuous(), readSos(), and readStart().
|
static |
puts the current token on the token stack, such that it is read at the next call to getNextToken()
lpinput | LP reading data |
Definition at line 460 of file reader_lp.c.
References assert(), LP_MAX_PUSHEDTOKENS, NULL, and swapPointers().
Referenced by isNewSection(), readBounds(), readCoefficients(), readConstraints(), readSemicontinuous(), and readSos().
|
static |
puts the buffered token on the token stack, such that it is read at the next call to getNextToken()
lpinput | LP reading data |
Definition at line 473 of file reader_lp.c.
References assert(), LP_MAX_PUSHEDTOKENS, NULL, and swapPointers().
Referenced by readCoefficients(), readConstraints(), and readSos().
|
static |
swaps the current token with the token buffer
lpinput | LP reading data |
Definition at line 486 of file reader_lp.c.
References assert(), NULL, and swapPointers().
Referenced by isNewSection(), readCoefficients(), readConstraints(), and readSos().
checks whether the current token is a section identifier, and if yes, switches to the corresponding section
scip | SCIP data structure |
lpinput | LP reading data |
Definition at line 497 of file reader_lp.c.
References assert(), c, FALSE, getNextToken(), LP_BINARIES, LP_BOUNDS, LP_CONSTRAINTS, LP_END, LP_GENERALS, LP_MAX_LINELEN, LP_OBJECTIVE, LP_SEMICONTINUOUS, LP_SOS, NULL, pushToken(), SCIP_Bool, SCIP_OBJSENSE_MAXIMIZE, SCIP_OBJSENSE_MINIMIZE, SCIPdebugMsg, SCIPstrcasecmp(), swapTokenBuffer(), and TRUE.
Referenced by readBinaries(), readBounds(), readCoefficients(), readConstraints(), readGenerals(), readSemicontinuous(), readSos(), and readStart().
returns whether the current token is a sign
lpinput | LP reading data |
sign | pointer to update the sign |
Definition at line 708 of file reader_lp.c.
References assert(), FALSE, NULL, SCIP_Bool, and TRUE.
Referenced by createIndicatorConstraint(), readBounds(), readCoefficients(), readConstraints(), and readSos().
returns whether the current token is a value
scip | SCIP data structure |
lpinput | LP reading data |
value | pointer to store the value (unchanged, if token is no value) |
Definition at line 733 of file reader_lp.c.
References assert(), FALSE, NULL, SCIP_Bool, SCIP_Real, SCIPinfinity(), SCIPstrcasecmp(), and TRUE.
Referenced by createIndicatorConstraint(), readBounds(), readCoefficients(), readConstraints(), and readSos().
returns whether the current token is an equation sense
lpinput | LP reading data |
sense | pointer to store the equation sense, or NULL |
Definition at line 765 of file reader_lp.c.
References assert(), FALSE, LP_SENSE_EQ, LP_SENSE_GE, LP_SENSE_LE, NULL, SCIP_Bool, and TRUE.
Referenced by createIndicatorConstraint(), readBounds(), readCoefficients(), and readConstraints().
|
static |
returns the variable with the given name, or creates a new variable if it does not exist
scip | SCIP data structure |
name | name of the variable |
var | pointer to store the variable |
created | pointer to store whether a new variable was created, or NULL |
Definition at line 796 of file reader_lp.c.
References assert(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARTYPE_CONTINUOUS, SCIPaddVar(), SCIPcreateVar(), SCIPdebugMsg, SCIPfindVar(), SCIPgetBoolParam(), SCIPinfinity(), SCIPreleaseVar(), TRUE, and var.
Referenced by readBinaries(), readBounds(), readCoefficients(), readGenerals(), and readSemicontinuous().
|
static |
reads the header of the file
scip | SCIP data structure |
lpinput | LP reading data |
Definition at line 841 of file reader_lp.c.
References assert(), getNextToken(), isNewSection(), NULL, and SCIP_OKAY.
Referenced by readLPFile().
|
static |
reads an objective or constraint with name and coefficients
scip | SCIP data structure |
lpinput | LP reading data |
isobjective | indicates whether we are currently reading the coefficients of the objective |
name | pointer to store the name of the line; must be at least of size LP_MAX_LINELEN |
coefssize | size of vars and coefs arrays |
vars | pointer to store the array with variables (must be freed by caller) |
coefs | pointer to store the array with coefficients (must be freed by caller) |
ncoefs | pointer to store the number of coefficients |
quadcoefssize | size of quadvars1, quadvars2, quadcoefs arrays |
quadvars1 | pointer to store the array with first variables in quadratic terms (must be freed by caller) |
quadvars2 | pointer to store the array with second variables in quadratic terms (must be freed by caller) |
quadcoefs | pointer to store the array with coefficients in quadratic terms (must be freed by caller) |
nquadcoefs | pointer to store the number of quadratic coefficients |
objoffset | pointer to store an objective offset (or NULL if ! isobjective) |
newsection | pointer to store whether a new section was encountered |
Definition at line 862 of file reader_lp.c.
References assert(), FALSE, getNextToken(), getVariable(), isNewSection(), isSense(), isSign(), isValue(), LP_INIT_COEFSSIZE, LP_INIT_QUADCOEFSSIZE, LP_MAX_LINELEN, MAX, NULL, pushBufferToken(), pushToken(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBlockMemoryArray, SCIPdebugMsg, SCIPisZero(), SCIPmemccpy(), SCIPreallocBlockMemoryArray, SCIPvarGetName(), SCIPwarningMessage(), swapTokenBuffer(), syntaxError(), TRUE, var, and vars.
Referenced by createIndicatorConstraint(), readConstraints(), and readObjective().
|
static |
reads the objective section
scip | SCIP data structure |
lpinput | LP reading data |
Definition at line 1283 of file reader_lp.c.
References assert(), FALSE, hasError(), i, LP_MAX_LINELEN, NULL, readCoefficients(), SCIP_Bool, SCIP_CALL, SCIP_OBJSENSE_MINIMIZE, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPaddCons(), SCIPaddOrigObjoffset(), SCIPaddVar(), SCIPchgVarObj(), SCIPconsGetName(), SCIPcreateConsQuadraticNonlinear(), SCIPcreateVar(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPfreeBlockMemoryArrayNull, SCIPinfinity(), SCIPisZero(), SCIPreleaseCons(), SCIPreleaseVar(), SCIPvarGetObj(), TRUE, and vars.
Referenced by readLPFile().
|
static |
create indicator constraint
scip | SCIP data structure |
lpinput | LP reading data |
name | name of indicator constraint |
binvar | binary indicator variable |
binvalue | value of indicator part (0/1) |
Definition at line 1378 of file reader_lp.c.
References assert(), FALSE, getNextToken(), hasError(), isSense(), isSign(), isValue(), LP_MAX_LINELEN, LP_SENSE_EQ, LP_SENSE_GE, LP_SENSE_LE, LP_SENSE_NOTHING, NULL, propagate, readCoefficients(), SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_BINARY, SCIPaddCons(), SCIPchgVarLb(), SCIPchgVarType(), SCIPchgVarUb(), SCIPcreateConsIndicator(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPerrorMessage, SCIPfreeBlockMemoryArrayNull, SCIPgetNegatedVar(), SCIPisFeasEQ(), SCIPreleaseCons(), SCIPsnprintf(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), syntaxError(), and TRUE.
Referenced by readConstraints().
|
static |
reads the constraints section
Read linear and indicator constraints.
The CPLEX manual says that indicator constraints are of the following form:
[constraintname:] binaryvariable = value -> linear constraint
We also accept "<->".
scip | SCIP data structure |
lpinput | LP reading data |
Definition at line 1598 of file reader_lp.c.
References assert(), createIndicatorConstraint(), FALSE, getNextToken(), hasError(), isNewSection(), isSense(), isSign(), isValue(), LP_MAX_LINELEN, LP_SENSE_EQ, LP_SENSE_GE, LP_SENSE_LE, LP_SENSE_NOTHING, NULL, propagate, pushBufferToken(), pushToken(), readCoefficients(), SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPaddCons(), SCIPcreateConsLinear(), SCIPcreateConsQuadraticNonlinear(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPerrorMessage, SCIPfreeBlockMemoryArrayNull, SCIPinfinity(), SCIPisEQ(), SCIPreleaseCons(), SCIPsnprintf(), swapTokenBuffer(), syntaxError(), TRUE, and vars.
Referenced by readLPFile().
|
static |
reads the bounds section
scip | SCIP data structure |
lpinput | LP reading data |
Definition at line 1838 of file reader_lp.c.
References assert(), getNextToken(), getVariable(), isNewSection(), isSense(), isSign(), isValue(), LP_SENSE_EQ, LP_SENSE_GE, LP_SENSE_LE, LP_SENSE_NOTHING, NULL, pushToken(), SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPchgVarLb(), SCIPchgVarUb(), SCIPdebugMsg, SCIPerrorMessage, SCIPinfinity(), SCIPstrcasecmp(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), syntaxError(), and var.
Referenced by readLPFile().
|
static |
reads the generals section
scip | SCIP data structure |
lpinput | LP reading data |
Definition at line 2009 of file reader_lp.c.
References assert(), getNextToken(), getVariable(), isNewSection(), NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_INTEGER, SCIPchgVarType(), SCIPisFeasIntegral(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), SCIPwarningMessage(), syntaxError(), and var.
Referenced by readLPFile().
|
static |
reads the binaries section
scip | SCIP data structure |
lpinput | LP reading data |
Definition at line 2054 of file reader_lp.c.
References assert(), getNextToken(), getVariable(), isNewSection(), NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_BINARY, SCIPchgVarLb(), SCIPchgVarType(), SCIPchgVarUb(), SCIPisFeasEQ(), SCIPisFeasZero(), SCIPisInfinity(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), SCIPwarningMessage(), syntaxError(), and var.
Referenced by readLPFile().
|
static |
reads the semi-continuous section
scip | SCIP data structure |
lpinput | LP reading data |
Definition at line 2108 of file reader_lp.c.
References assert(), FALSE, getNextToken(), getVariable(), isNewSection(), NULL, pushToken(), SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddCons(), SCIPchgVarLb(), SCIPcreateConsBounddisjunction(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPreleaseCons(), SCIPsnprintf(), SCIPstrcasecmp(), SCIPvarGetLbGlobal(), SCIPvarGetName(), syntaxError(), TRUE, var, and vars.
Referenced by readLPFile().
|
static |
reads the sos section
The format is as follows:
SOS <constraint name>: [S1|S2]:: {<variable name>:<weight>} ... <constraint name>: [S1|S2]:: {<variable name>:<weight>}
scip | SCIP data structure |
lpinput | LP reading data |
Definition at line 2206 of file reader_lp.c.
References assert(), FALSE, getNextToken(), isNewSection(), isSign(), isValue(), NULL, propagate, pushBufferToken(), pushToken(), SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPABORT, SCIPaddCons(), SCIPaddVarSOS1(), SCIPaddVarSOS2(), SCIPconsGetName(), SCIPcreateConsSOS1(), SCIPcreateConsSOS2(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPerrorMessage, SCIPfindVar(), SCIPmemccpy(), SCIPreleaseCons(), SCIPsnprintf(), SCIPvarGetName(), swapTokenBuffer(), syntaxError(), TRUE, and var.
Referenced by readLPFile().
|
static |
reads an LP file
scip | SCIP data structure |
lpinput | LP reading data |
filename | name of the input file |
Definition at line 2416 of file reader_lp.c.
References assert(), hasError(), LP_BINARIES, LP_BOUNDS, LP_CONSTRAINTS, LP_END, LP_GENERALS, LP_OBJECTIVE, LP_SEMICONTINUOUS, LP_SOS, LP_START, NULL, readBinaries(), readBounds(), readConstraints(), readGenerals(), readObjective(), readSemicontinuous(), readSos(), readStart(), SCIP_CALL, SCIP_INVALIDDATA, SCIP_NOFILE, SCIP_OKAY, SCIPcreateProb(), SCIPerrorMessage, SCIPfclose(), SCIPfopen(), and SCIPprintSysError().
Referenced by SCIPreadLp().
|
static |
hash key retrieval function for variables
Definition at line 2494 of file reader_lp.c.
|
static |
returns TRUE iff the indices of both variables are equal
Definition at line 2501 of file reader_lp.c.
|
static |
returns the hash value of the key
Definition at line 2510 of file reader_lp.c.
References assert(), and SCIPvarGetIndex().
|
static |
transforms given variables, scalars, and constant to the corresponding active variables, scalars, and constant
scip | SCIP data structure |
vars | pointer to vars array to get active variables for |
scalars | pointer to scalars a_1, ..., a_n in linear sum a_1*x_1 + ... + a_n*x_n + c |
nvars | pointer to number of variables and values in vars and vals array |
constant | pointer to constant c in linear sum a_1*x_1 + ... + a_n*x_n + c |
transformed | transformed constraint? |
Definition at line 2518 of file reader_lp.c.
References assert(), NULL, nvars, scalars, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_NEGATED, SCIPABORT, SCIPerrorMessage, SCIPgetProbvarLinearSum(), SCIPreallocBufferArray, SCIPvarGetNegatedVar(), SCIPvarGetOrigvarSum(), SCIPvarGetStatus(), TRUE, and vars.
Referenced by printAggregatedCons(), printQuadraticCons(), and printRow().
|
static |
clears the given line buffer
linebuffer | line |
linecnt | number of characters in line |
Definition at line 2580 of file reader_lp.c.
References assert(), and NULL.
Referenced by endLine(), printRow(), printSosCons(), and SCIPwriteLp().
|
static |
ends the given line with '\0' and prints it to the given file stream
scip | SCIP data structure |
file | output file (or NULL for standard output) |
linebuffer | line |
linecnt | number of characters in line |
Definition at line 2594 of file reader_lp.c.
References assert(), clearLine(), LP_MAX_PRINTLEN, NULL, and SCIPinfoMessage().
Referenced by appendLine(), printRow(), printSosCons(), and SCIPwriteLp().
|
static |
appends extension to line and prints it to the give file stream if the line exceeded the length given in the define LP_PRINTLEN
scip | SCIP data structure |
file | output file (or NULL for standard output) |
linebuffer | line |
linecnt | number of characters in line |
extension | string to extent the line |
Definition at line 2617 of file reader_lp.c.
References assert(), endLine(), LP_MAX_PRINTLEN, LP_PRINTLEN, NULL, and SCIPdebugMsg.
Referenced by printRow(), printSosCons(), and SCIPwriteLp().
|
static |
scip | SCIP data structure |
file | output file (or NULL for standard output) |
rowname | row name |
rownameextension | row name extension |
type | row type ("=", "<=", or ">=") |
linvars | array of linear variables |
linvals | array of linear coefficient values |
nlinvars | number of linear variables |
quadexpr | quadratic expression |
rhs | right hand side |
transformed | transformed constraint? |
Definition at line 2648 of file reader_lp.c.
References appendLine(), assert(), clearLine(), endLine(), getActiveVariables(), LP_MAX_NAMELEN, LP_MAX_PRINTLEN, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPduplicateBufferArray, SCIPexprGetQuadraticBilinTerm(), SCIPexprGetQuadraticData(), SCIPexprGetQuadraticQuadTerm(), SCIPfreeBufferArray, SCIPgetVarExprVar(), SCIPisExprVar(), SCIPisInfinity(), SCIPisZero(), SCIPsnprintf(), SCIPvarGetName(), and var.
Referenced by printAggregatedCons(), and printQuadraticCons().
|
static |
prints given (linear or) quadratic constraint information in LP format to file stream
scip | SCIP data structure |
file | output file (or NULL for standard output) |
rowname | name of the row |
linvars | array of linear variables |
linvals | array of linear coefficients values (or NULL if all linear coefficient values are 1) |
nlinvars | number of linear variables |
quadexpr | quadratic expression (or NULL if nlinvars > 0) |
lhs | left hand side |
rhs | right hand side |
transformed | transformed constraint? |
Definition at line 2886 of file reader_lp.c.
References assert(), getActiveVariables(), NULL, printRow(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPisEQ(), and SCIPisInfinity().
Referenced by printAndCons(), and SCIPwriteLp().
|
static |
prints given SOS constraint information in LP format to file stream
scip | SCIP data structure |
file | output file (or NULL for standard output) |
rowname | name of the row |
vars | array of variables |
weights | array of weight values (or NULL) |
nvars | number of variables |
type | SOS type (SOS1 or SOS2) |
Definition at line 2974 of file reader_lp.c.
References appendLine(), assert(), clearLine(), endLine(), LP_MAX_NAMELEN, LP_MAX_PRINTLEN, NULL, nvars, SCIP_Real, SCIPsnprintf(), SCIPvarGetName(), and vars.
Referenced by SCIPwriteLp().
|
static |
prints a linearization of an and-constraint into the given file
scip | SCIP data structure |
file | output file (or NULL for standard output) |
consname | name of the constraint |
cons | and constraint |
aggrlinearizationands | print weak or strong realaxation |
transformed | transformed constraint? |
Definition at line 3033 of file reader_lp.c.
References assert(), LP_MAX_NAMELEN, NULL, nvars, printQuadraticCons(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPgetNVarsAnd(), SCIPgetResultantAnd(), SCIPgetVarsAnd(), SCIPinfinity(), SCIPsnprintf(), and vars.
Referenced by SCIPwriteLp().
|
static |
check whether given variables are aggregated and put them into an array without duplication
scip | SCIP data structure |
vars | variable array |
nvars | number of active variables in the problem |
aggvars | pointer to array storing the aggregated variables on output |
naggvars | pointer to number of aggregated variables on output |
saggvars | pointer to number of slots in aggvars array |
varAggregated | hashtable for checking duplicates |
Definition at line 3120 of file reader_lp.c.
References assert(), NULL, nvars, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_AGGREGATED, SCIP_VARSTATUS_MULTAGGR, SCIP_VARSTATUS_NEGATED, SCIPcalcMemGrowSize(), SCIPhashtableExists(), SCIPhashtableInsert(), SCIPreallocBlockMemoryArray, SCIPvarGetStatus(), var, and vars.
Referenced by SCIPwriteLp().
|
static |
print aggregated variable-constraints
scip | SCIP data structure |
file | output file (or NULL for standard output) |
transformed | TRUE iff problem is the transformed problem |
nvars | number of active variables in the problem |
nAggregatedVars | number of aggregated variables |
aggregatedVars | array storing the aggregated variables |
Definition at line 3176 of file reader_lp.c.
References assert(), getActiveVariables(), LP_MAX_NAMELEN, NULL, nvars, printRow(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPsnprintf(), and SCIPvarGetName().
Referenced by SCIPwriteLp().
method check if the variable names are not longer than LP_MAX_NAMELEN
scip | SCIP data structure |
vars | array of variables |
nvars | number of variables |
Definition at line 3230 of file reader_lp.c.
References assert(), FALSE, LP_MAX_NAMELEN, NULL, nvars, SCIP_Bool, SCIPvarGetName(), SCIPwarningMessage(), TRUE, and vars.
Referenced by SCIPwriteLp().
method check if the constraint names are not longer than LP_MAX_NAMELEN
scip | SCIP data structure |
conss | array of constraints |
nconss | number of constraints |
transformed | TRUE iff problem is the transformed problem |
Definition at line 3267 of file reader_lp.c.
References assert(), c, FALSE, LP_MAX_NAMELEN, NULL, SCIP_Bool, SCIP_Real, SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetName(), SCIPconsIsEnabled(), SCIPconsIsTransformed(), SCIPgetLhsLinear(), SCIPgetRhsLinear(), SCIPisEQ(), SCIPwarningMessage(), and TRUE.
Referenced by SCIPwriteLp().
|
static |
copy method for reader plugins (called when SCIP copies plugins)
Definition at line 3336 of file reader_lp.c.
References assert(), NULL, READER_NAME, SCIP_CALL, SCIP_OKAY, SCIPincludeReaderLp(), and SCIPreaderGetName().
|
static |
destructor of reader to free user data (called when SCIP is exiting)
Definition at line 3350 of file reader_lp.c.
References assert(), NULL, READER_NAME, SCIP_OKAY, SCIPfreeBlockMemory, SCIPreaderGetData(), and SCIPreaderGetName().
|
static |
problem reading method of reader
Definition at line 3364 of file reader_lp.c.
References result, SCIP_CALL, SCIP_OKAY, and SCIPreadLp().
|
static |
problem writing method of reader
Definition at line 3375 of file reader_lp.c.
References assert(), nbinvars, nintvars, NULL, nvars, objscale, READER_NAME, result, SCIP_CALL, SCIP_OKAY, SCIPreaderGetName(), SCIPwriteLp(), and vars.
|
static |
Definition at line 145 of file reader_lp.c.