file reader for polynomial mixed-integer programs in PIP format
Definition in file reader_pip.c.
#include <ctype.h>
#include "blockmemshell/memory.h"
#include "scip/reader_pip.h"
#include "scip/cons_and.h"
#include "scip/cons_nonlinear.h"
#include "scip/cons_knapsack.h"
#include "scip/cons_linear.h"
#include "scip/cons_logicor.h"
#include "scip/cons_setppc.h"
#include "scip/cons_varbound.h"
#include "scip/expr_sum.h"
#include "scip/expr_var.h"
#include "scip/pub_cons.h"
#include "scip/pub_expr.h"
#include "scip/pub_fileio.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/pub_nlp.h"
#include "scip/pub_reader.h"
#include "scip/pub_var.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 "pipreader" |
#define | READER_DESC "file reader for polynomial mixed-integer programs in PIP format" |
#define | READER_EXTENSION "pip" |
#define | PIP_MAX_LINELEN 65536 |
#define | PIP_MAX_PUSHEDTOKENS 2 |
#define | PIP_INIT_MONOMIALSSIZE 128 |
#define | PIP_INIT_FACTORSSIZE 16 |
#define | PIP_MAX_PRINTLEN 561 |
#define | PIP_MAX_NAMELEN 256 |
#define | PIP_PRINTLEN 100 |
Functions | |
static void | syntaxError (SCIP *scip, PIPINPUT *pipinput, const char *msg) |
static SCIP_Bool | hasError (PIPINPUT *pipinput) |
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, PIPEXPTYPE *exptype) |
static SCIP_Bool | getNextLine (SCIP *scip, PIPINPUT *pipinput) |
static void | swapPointers (char **pointer1, char **pointer2) |
static SCIP_Bool | getNextToken (SCIP *scip, PIPINPUT *pipinput) |
static void | pushToken (PIPINPUT *pipinput) |
static void | pushBufferToken (PIPINPUT *pipinput) |
static void | swapTokenBuffer (PIPINPUT *pipinput) |
static SCIP_Bool | isNewSection (SCIP *scip, PIPINPUT *pipinput) |
static SCIP_Bool | isSign (PIPINPUT *pipinput, int *sign) |
static SCIP_Bool | isValue (SCIP *scip, PIPINPUT *pipinput, SCIP_Real *value) |
static SCIP_Bool | isSense (PIPINPUT *pipinput, PIPSENSE *sense) |
static SCIP_RETCODE | getVariable (SCIP *scip, char *name, SCIP_Bool dynamiccols, SCIP_VAR **var, SCIP_Bool *created) |
static SCIP_RETCODE | readStart (SCIP *scip, PIPINPUT *pipinput) |
static SCIP_RETCODE | ensureMonomialsSize (SCIP *scip, SCIP_EXPR ***monomials, SCIP_Real **monomialscoef, int *monomialssize, int minnmonomials) |
static SCIP_RETCODE | ensureFactorsSize (SCIP *scip, SCIP_VAR ***vars, SCIP_Real **exponents, int *factorssize, int minnfactors) |
static SCIP_RETCODE | readPolynomial (SCIP *scip, PIPINPUT *pipinput, char *name, SCIP_EXPR **expr, SCIP_Bool *islinear, SCIP_Bool *newsection) |
static SCIP_RETCODE | readObjective (SCIP *scip, PIPINPUT *pipinput) |
static SCIP_RETCODE | readConstraints (SCIP *scip, PIPINPUT *pipinput) |
static SCIP_RETCODE | readBounds (SCIP *scip, PIPINPUT *pipinput) |
static SCIP_RETCODE | readGenerals (SCIP *scip, PIPINPUT *pipinput) |
static SCIP_RETCODE | readBinaries (SCIP *scip, PIPINPUT *pipinput) |
static SCIP_RETCODE | readPIPFile (SCIP *scip, PIPINPUT *pipinput, 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 SCIP_Bool | isExprSignomial (SCIP *scip, SCIP_EXPR *expr) |
static SCIP_Bool | isExprPolynomial (SCIP *scip, SCIP_EXPR *expr) |
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 void | printSignomial (SCIP *scip, FILE *file, char *linebuffer, int *linecnt, SCIP_EXPR *expr, SCIP_Real coef, SCIP_Bool needsign) |
static void | printRowNl (SCIP *scip, FILE *file, const char *rowname, const char *rownameextension, const char *type, SCIP_EXPR *expr, SCIP_Real rhs) |
static void | printRowAnd (SCIP *scip, FILE *file, const char *rowname, SCIP_CONS *cons) |
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 SCIP_RETCODE | printNonlinearCons (SCIP *scip, FILE *file, const char *rowname, SCIP_EXPR *expr, SCIP_Real lhs, SCIP_Real rhs) |
static SCIP_RETCODE | collectAggregatedVars (int nvars, SCIP_VAR **vars, int *nAggregatedVars, SCIP_VAR ***aggregatedVars, SCIP_HASHTABLE **varAggregated) |
static SCIP_RETCODE | printAggregatedCons (SCIP *scip, FILE *file, SCIP_Bool transformed, int nvars, int nAggregatedVars, SCIP_VAR **aggregatedVars) |
static SCIP_Bool | isNameValid (const char *name) |
static void | checkVarnames (SCIP *scip, SCIP_VAR **vars, int nvars) |
static void | checkConsnames (SCIP *scip, SCIP_CONS **conss, int nconss, SCIP_Bool transformed) |
SCIP_RETCODE | SCIPwritePip (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 | SCIP_DECL_READERCOPY (readerCopyPip) |
static | SCIP_DECL_READERREAD (readerReadPip) |
static | SCIP_DECL_READERWRITE (readerWritePip) |
SCIP_RETCODE | SCIPincludeReaderPip (SCIP *scip) |
SCIP_RETCODE | SCIPreadPip (SCIP *scip, SCIP_READER *reader, const char *filename, SCIP_RESULT *result) |
Variables | |
static const char | delimchars [] = " \f\n\r\t\v" |
static const char | tokenchars [] = "-+:<>=*^" |
static const char | commentchars [] = "\\" |
static const char | namechars [] = "!#$%&;?@_" |
#define READER_NAME "pipreader" |
Definition at line 68 of file reader_pip.c.
#define READER_DESC "file reader for polynomial mixed-integer programs in PIP format" |
Definition at line 69 of file reader_pip.c.
#define READER_EXTENSION "pip" |
Definition at line 70 of file reader_pip.c.
#define PIP_MAX_LINELEN 65536 |
Definition at line 76 of file reader_pip.c.
Referenced by getNextLine(), getNextToken(), readConstraints(), readObjective(), readPolynomial(), and SCIPreadPip().
#define PIP_MAX_PUSHEDTOKENS 2 |
Definition at line 77 of file reader_pip.c.
Referenced by pushBufferToken(), pushToken(), and SCIPreadPip().
#define PIP_INIT_MONOMIALSSIZE 128 |
Definition at line 78 of file reader_pip.c.
Referenced by readPolynomial().
#define PIP_INIT_FACTORSSIZE 16 |
Definition at line 79 of file reader_pip.c.
Referenced by readPolynomial().
#define PIP_MAX_PRINTLEN 561 |
the maximum length of any line is 560 + '\0' = 561
Definition at line 80 of file reader_pip.c.
Referenced by appendLine(), endLine(), printRow(), printRowAnd(), printRowNl(), printSignomial(), and SCIPwritePip().
#define PIP_MAX_NAMELEN 256 |
the maximum length for any name is 255 + '\0' = 256
Definition at line 81 of file reader_pip.c.
Referenced by checkConsnames(), isNameValid(), printAggregatedCons(), printRow(), printRowNl(), and SCIPwritePip().
#define PIP_PRINTLEN 100 |
Definition at line 82 of file reader_pip.c.
Referenced by appendLine().
typedef enum PipSection PIPSECTION |
Definition at line 95 of file reader_pip.c.
typedef enum PipExpType PIPEXPTYPE |
Definition at line 103 of file reader_pip.c.
Definition at line 112 of file reader_pip.c.
typedef struct PipInput PIPINPUT |
Definition at line 135 of file reader_pip.c.
enum PipSection |
Section in PIP File
Enumerator | |
---|---|
PIP_START | |
PIP_OBJECTIVE | |
PIP_CONSTRAINTS | |
PIP_BOUNDS | |
PIP_GENERALS | |
PIP_BINARIES | |
PIP_END |
Definition at line 85 of file reader_pip.c.
enum PipExpType |
Enumerator | |
---|---|
PIP_EXP_NONE | |
PIP_EXP_UNSIGNED | |
PIP_EXP_SIGNED |
Definition at line 97 of file reader_pip.c.
enum PipSense |
Enumerator | |
---|---|
PIP_SENSE_NOTHING | |
PIP_SENSE_LE | |
PIP_SENSE_GE | |
PIP_SENSE_EQ |
Definition at line 105 of file reader_pip.c.
issues an error message and marks the PIP data to have errors
scip | SCIP data structure |
pipinput | PIP reading data |
msg | error message |
Definition at line 149 of file reader_pip.c.
References assert(), NULL, PIP_END, SCIP_VERBLEVEL_MINIMAL, SCIPerrorMessage, SCIPsnprintf(), SCIPverbMessage(), and TRUE.
Referenced by readBinaries(), readBounds(), readConstraints(), readGenerals(), and readPolynomial().
returns whether a syntax error was detected
pipinput | PIP reading data |
Definition at line 176 of file reader_pip.c.
References assert(), NULL, and SCIP_Bool.
Referenced by readConstraints(), and readObjective().
|
static |
returns whether the given character is a token delimiter
c | input character |
Definition at line 187 of file reader_pip.c.
References c, delimchars, NULL, and SCIP_Bool.
Referenced by getNextToken().
|
static |
returns whether the given character is a single token
c | input character |
Definition at line 196 of file reader_pip.c.
References c, NULL, SCIP_Bool, and tokenchars.
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 205 of file reader_pip.c.
References assert(), c, FALSE, NULL, PIP_EXP_NONE, PIP_EXP_SIGNED, PIP_EXP_UNSIGNED, 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 |
pipinput | PIP reading data |
Definition at line 249 of file reader_pip.c.
References assert(), BMSclearMemoryArray, commentchars, FALSE, i, NULL, PIP_MAX_LINELEN, SCIP_Bool, SCIPerrorMessage, SCIPfgets(), and TRUE.
Referenced by getNextToken().
|
static |
swaps the addresses of two pointers
pointer1 | first pointer |
pointer2 | second pointer |
Definition at line 294 of file reader_pip.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 |
pipinput | PIP reading data |
Definition at line 308 of file reader_pip.c.
References assert(), FALSE, getNextLine(), isDelimChar(), isTokenChar(), isTokenChar(), isValueChar(), NULL, PIP_END, PIP_EXP_NONE, PIP_MAX_LINELEN, SCIP_Bool, SCIPdebugMsg, swapPointers(), and TRUE.
Referenced by isNewSection(), readBinaries(), readBounds(), readConstraints(), readGenerals(), readPolynomial(), and readStart().
|
static |
puts the current token on the token stack, such that it is read at the next call to getNextToken()
pipinput | PIP reading data |
Definition at line 407 of file reader_pip.c.
References assert(), NULL, PIP_MAX_PUSHEDTOKENS, and swapPointers().
Referenced by isNewSection(), readBounds(), and readPolynomial().
|
static |
puts the buffered token on the token stack, such that it is read at the next call to getNextToken()
pipinput | PIP reading data |
Definition at line 420 of file reader_pip.c.
References assert(), NULL, PIP_MAX_PUSHEDTOKENS, and swapPointers().
Referenced by readPolynomial().
|
static |
swaps the current token with the token buffer
pipinput | PIP reading data |
Definition at line 433 of file reader_pip.c.
References assert(), NULL, and swapPointers().
Referenced by isNewSection(), and readPolynomial().
checks whether the current token is a section identifier, and if yes, switches to the corresponding section
scip | SCIP data structure |
pipinput | PIP reading data |
Definition at line 444 of file reader_pip.c.
References assert(), FALSE, getNextToken(), NULL, PIP_BINARIES, PIP_BOUNDS, PIP_CONSTRAINTS, PIP_END, PIP_GENERALS, PIP_OBJECTIVE, pushToken(), SCIP_Bool, SCIP_OBJSENSE_MAXIMIZE, SCIP_OBJSENSE_MINIMIZE, SCIPdebugMsg, SCIPstrcasecmp(), swapTokenBuffer(), and TRUE.
Referenced by readBinaries(), readBounds(), readGenerals(), readPolynomial(), and readStart().
returns whether the current token is a sign
pipinput | PIP reading data |
sign | pointer to update the sign |
Definition at line 577 of file reader_pip.c.
References assert(), FALSE, NULL, SCIP_Bool, and TRUE.
Referenced by readBounds(), readConstraints(), and readPolynomial().
returns whether the current token is a value
scip | SCIP data structure |
pipinput | PIP reading data |
value | pointer to store the value (unchanged, if token is no value) |
Definition at line 602 of file reader_pip.c.
References assert(), FALSE, NULL, SCIP_Bool, SCIP_Real, SCIPinfinity(), SCIPstrcasecmp(), and TRUE.
Referenced by readBounds(), readConstraints(), and readPolynomial().
returns whether the current token is an equation sense
pipinput | PIP reading data |
sense | pointer to store the equation sense, or NULL |
Definition at line 634 of file reader_pip.c.
References assert(), FALSE, NULL, PIP_SENSE_EQ, PIP_SENSE_GE, PIP_SENSE_LE, SCIP_Bool, and TRUE.
Referenced by readBounds(), readConstraints(), and readPolynomial().
|
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 |
dynamiccols | should columns be added and removed dynamically to the LP? |
var | pointer to store the variable |
created | pointer to store whether a new variable was created, or NULL |
Definition at line 665 of file reader_pip.c.
References assert(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARTYPE_CONTINUOUS, SCIPaddVar(), SCIPcreateVar(), SCIPdebugMsg, SCIPfindVar(), SCIPinfinity(), SCIPreleaseVar(), TRUE, and var.
Referenced by readBinaries(), readBounds(), readGenerals(), and readPolynomial().
|
static |
reads the header of the file
scip | SCIP data structure |
pipinput | PIP reading data |
Definition at line 704 of file reader_pip.c.
References assert(), getNextToken(), isNewSection(), NULL, and SCIP_OKAY.
Referenced by readPIPFile().
|
static |
ensure that an array of monomials can hold a minimum number of entries
scip | SCIP data structure |
monomials | pointer to current array of monomials |
monomialscoef | pointer to current array of monomial coefficients |
monomialssize | current size of monomials array at input; new size at exit |
minnmonomials | required minimal size of monomials array |
Definition at line 725 of file reader_pip.c.
References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPcalcMemGrowSize(), and SCIPreallocBufferArray.
Referenced by readPolynomial().
|
static |
ensure that arrays of exponents and variable indices can hold a minimum number of entries
scip | SCIP data structure |
vars | pointer to current array of variables |
exponents | pointer to current array of exponents |
factorssize | current size of arrays at input; new size at exit |
minnfactors | required minimal size of arrays |
Definition at line 769 of file reader_pip.c.
References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPcalcMemGrowSize(), SCIPreallocBufferArray, and vars.
Referenced by readPolynomial().
|
static |
reads an objective or constraint with name and coefficients
scip | SCIP data structure |
pipinput | PIP reading data |
name | pointer to store the name of the line; must be at least of size PIP_MAX_LINELEN |
expr | pointer to store the constraint function as expression |
islinear | pointer to store polynomial is linear |
newsection | pointer to store whether a new section was encountered |
Definition at line 808 of file reader_pip.c.
References assert(), ensureFactorsSize(), ensureMonomialsSize(), FALSE, getNextToken(), getVariable(), i, isNewSection(), isSense(), isSign(), isValue(), NULL, PIP_INIT_FACTORSSIZE, PIP_INIT_MONOMIALSSIZE, PIP_MAX_LINELEN, pushBufferToken(), pushToken(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPcreateExprMonomial(), SCIPcreateExprSum(), SCIPdebugMsg, SCIPfreeBufferArray, SCIPinfoMessage(), SCIPisIntegral(), SCIPprintExpr(), SCIPreleaseExpr(), SCIPstrncpy(), SCIPvarGetName(), swapTokenBuffer(), syntaxError(), TRUE, var, and vars.
Referenced by readConstraints(), and readObjective().
|
static |
reads the objective section
scip | SCIP data structure |
pipinput | PIP reading data |
Definition at line 1095 of file reader_pip.c.
References assert(), FALSE, hasError(), i, NULL, PIP_MAX_LINELEN, propagate, readPolynomial(), SCIP_Bool, SCIP_CALL, SCIP_OBJSENSE_MINIMIZE, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPaddCons(), SCIPaddVar(), SCIPappendExprSumExpr(), SCIPchgVarObj(), SCIPconsGetName(), SCIPcreateConsNonlinear(), SCIPcreateExprVar(), SCIPcreateVar(), SCIPcreateVarBasic(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPexprGetChildren(), SCIPexprGetNChildren(), SCIPgetCoefsExprSum(), SCIPgetConstantExprSum(), SCIPgetVarExprVar(), SCIPinfinity(), SCIPisExprVar(), SCIPreleaseCons(), SCIPreleaseExpr(), SCIPreleaseVar(), SCIPsetConstantExprSum(), SCIPvarGetObj(), TRUE, and var.
Referenced by readPIPFile().
|
static |
reads the constraints section
scip | SCIP data structure |
pipinput | PIP reading data |
Definition at line 1226 of file reader_pip.c.
References assert(), FALSE, getNextToken(), hasError(), i, isSense(), isSign(), isValue(), NULL, PIP_MAX_LINELEN, PIP_SENSE_EQ, PIP_SENSE_GE, PIP_SENSE_LE, PIP_SENSE_NOTHING, propagate, readPolynomial(), SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_READERROR, SCIP_Real, SCIPaddCons(), SCIPallocBufferArray, SCIPcreateConsLinear(), SCIPcreateConsNonlinear(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPerrorMessage, SCIPexprGetChildren(), SCIPexprGetNChildren(), SCIPfreeBufferArray, SCIPgetCoefsExprSum(), SCIPgetConstantExprSum(), SCIPgetVarExprVar(), SCIPinfinity(), SCIPisExprVar(), SCIPisInfinity(), SCIPreleaseCons(), SCIPreleaseExpr(), syntaxError(), TRUE, and vars.
Referenced by readPIPFile().
|
static |
reads the bounds section
scip | SCIP data structure |
pipinput | PIP reading data |
Definition at line 1395 of file reader_pip.c.
References assert(), getNextToken(), getVariable(), isNewSection(), isSense(), isSign(), isValue(), NULL, PIP_SENSE_EQ, PIP_SENSE_GE, PIP_SENSE_LE, PIP_SENSE_NOTHING, 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 readPIPFile().
|
static |
reads the generals section
scip | SCIP data structure |
pipinput | PIP reading data |
Definition at line 1566 of file reader_pip.c.
References assert(), getNextToken(), getVariable(), isNewSection(), NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARTYPE_INTEGER, SCIPchgVarType(), syntaxError(), and var.
Referenced by readPIPFile().
|
static |
reads the binaries section
scip | SCIP data structure |
pipinput | PIP reading data |
Definition at line 1601 of file reader_pip.c.
References assert(), getNextToken(), getVariable(), isNewSection(), NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARTYPE_BINARY, SCIPchgVarLb(), SCIPchgVarType(), SCIPchgVarUb(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), syntaxError(), and var.
Referenced by readPIPFile().
|
static |
reads a PIP file
scip | SCIP data structure |
pipinput | PIP reading data |
filename | name of the input file |
Definition at line 1645 of file reader_pip.c.
References assert(), hasError(), NULL, PIP_BINARIES, PIP_BOUNDS, PIP_CONSTRAINTS, PIP_END, PIP_GENERALS, PIP_OBJECTIVE, PIP_START, readBinaries(), readBounds(), readConstraints(), readGenerals(), readObjective(), readStart(), SCIP_CALL, SCIP_INVALIDDATA, SCIP_NOFILE, SCIP_OKAY, SCIPcreateProb(), SCIPerrorMessage, SCIPfclose(), SCIPfopen(), and SCIPprintSysError().
Referenced by SCIPreadPip().
|
static |
hash key retrieval function for variables
Definition at line 1715 of file reader_pip.c.
|
static |
returns TRUE iff the indices of both variables are equal
Definition at line 1722 of file reader_pip.c.
|
static |
returns the hash value of the key
Definition at line 1731 of file reader_pip.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 1739 of file reader_pip.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().
checks whether a given expression is a signomial
assumes simplified expression
scip | SCIP data structure |
expr | expression |
Definition at line 1804 of file reader_pip.c.
References assert(), c, FALSE, NULL, SCIP_Bool, SCIPexprGetChildren(), SCIPexprGetNChildren(), SCIPisExprPower(), SCIPisExprProduct(), SCIPisExprValue(), SCIPisExprVar(), and TRUE.
Referenced by isExprPolynomial(), and printSignomial().
checks whether a given expression is a sum of signomials (i.e., like a polynomial, but negative and fractional exponents allowed)
assumes simplified expression; does not check whether variables in powers with fractional exponent are nonnegative; does not check whether variables in powers with negative exponent are bounded away from zero (the format specification does not require that, too)
scip | SCIP data structure |
expr | expression |
Definition at line 1851 of file reader_pip.c.
References assert(), c, FALSE, isExprSignomial(), NULL, SCIP_Bool, SCIPexprGetChildren(), SCIPexprGetNChildren(), SCIPisExprSum(), and TRUE.
Referenced by SCIPwritePip().
|
static |
clears the given line buffer
linebuffer | line |
linecnt | number of characters in line |
Definition at line 1874 of file reader_pip.c.
References assert(), and NULL.
Referenced by endLine(), printRow(), printRowAnd(), printRowNl(), and SCIPwritePip().
|
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 1888 of file reader_pip.c.
References assert(), clearLine(), NULL, PIP_MAX_PRINTLEN, and SCIPinfoMessage().
Referenced by appendLine(), printRow(), printRowAnd(), printRowNl(), and SCIPwritePip().
|
static |
appends extension to line and prints it to the give file stream if the line exceeded the length given in the define PIP_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 1911 of file reader_pip.c.
References assert(), endLine(), NULL, PIP_MAX_PRINTLEN, PIP_PRINTLEN, and SCIPdebugMsg.
Referenced by printRow(), printRowAnd(), printRowNl(), printSignomial(), and SCIPwritePip().
|
static |
print linear or quadratic row in PIP format to file stream
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 1942 of file reader_pip.c.
References appendLine(), assert(), clearLine(), endLine(), getActiveVariables(), NULL, PIP_MAX_NAMELEN, PIP_MAX_PRINTLEN, 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 |
print signomial in PIP format to file stream
scip | SCIP data structure |
file | output file (or NULL for standard output) |
linebuffer | line buffer to append to |
linecnt | count on line buffer use |
expr | sigomial expression |
coef | coefficient |
needsign | whether a sign needs to be ensured |
Definition at line 2174 of file reader_pip.c.
References appendLine(), assert(), c, isExprSignomial(), PIP_MAX_PRINTLEN, REALABS, SCIP_Bool, SCIP_Real, SCIPexprGetChildren(), SCIPexprGetNChildren(), SCIPgetCoefExprProduct(), SCIPgetExponentExprPow(), SCIPgetValueExprValue(), SCIPgetVarExprVar(), SCIPisExprPower(), SCIPisExprProduct(), SCIPisExprValue(), SCIPisExprVar(), SCIPsnprintf(), and SCIPvarGetName().
Referenced by printRowNl(), and SCIP_DECL_NLHDLRESTIMATE().
|
static |
print polynomial row in PIP format to file stream
scip | SCIP data structure |
file | output file (or NULL for standard output) |
rowname | row name |
rownameextension | row name extension |
type | row type ("=", "<=", or ">=") |
expr | polynomial expression |
rhs | right hand side |
Definition at line 2264 of file reader_pip.c.
References appendLine(), assert(), c, clearLine(), endLine(), FALSE, NULL, PIP_MAX_NAMELEN, PIP_MAX_PRINTLEN, printSignomial(), SCIP_Bool, SCIP_Real, SCIPexprGetChildren(), SCIPexprGetNChildren(), SCIPgetCoefsExprSum(), SCIPgetConstantExprSum(), SCIPisExprSum(), SCIPsnprintf(), and TRUE.
Referenced by printNonlinearCons().
print "and" constraint as row in PIP format to file stream
scip | SCIP data structure |
file | output file (or NULL for standard output) |
rowname | row name |
cons | "and" constraint |
Definition at line 2332 of file reader_pip.c.
References appendLine(), assert(), clearLine(), endLine(), i, NULL, PIP_MAX_PRINTLEN, SCIPgetNVarsAnd(), SCIPgetResultantAnd(), SCIPgetVarsAnd(), and SCIPvarGetName().
Referenced by SCIPwritePip().
|
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 2380 of file reader_pip.c.
References assert(), getActiveVariables(), NULL, printRow(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPisEQ(), and SCIPisInfinity().
Referenced by SCIPwritePip().
|
static |
prints given nonlinear 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 |
expr | polynomial expression |
lhs | left hand side |
rhs | right hand side |
Definition at line 2467 of file reader_pip.c.
References assert(), NULL, printRowNl(), SCIP_OKAY, SCIP_Real, SCIPisEQ(), and SCIPisInfinity().
Referenced by SCIPwritePip().
|
static |
check whether given variables are aggregated and put them into an array without duplication
nvars | number of active variables in the problem |
vars | variable array |
nAggregatedVars | number of aggregated variables on output |
aggregatedVars | array storing the aggregated variables on output |
varAggregated | hashtable for checking duplicates |
Definition at line 2511 of file reader_pip.c.
References assert(), nvars, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_AGGREGATED, SCIP_VARSTATUS_MULTAGGR, SCIP_VARSTATUS_NEGATED, SCIPhashtableExists(), SCIPhashtableInsert(), SCIPvarGetStatus(), var, and vars.
Referenced by SCIPwritePip().
|
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 2551 of file reader_pip.c.
References assert(), getActiveVariables(), NULL, nvars, PIP_MAX_NAMELEN, printRow(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPsnprintf(), and SCIPvarGetName().
Referenced by SCIPwritePip().
|
static |
returns whether name is valid according to PIP specification
Checks these two conditions from http://polip.zib.de/pipformat.php:
In addition checks that the length is not zero.
name | name to check |
Definition at line 2612 of file reader_pip.c.
References assert(), FALSE, i, namechars, NULL, PIP_MAX_NAMELEN, SCIP_Bool, and TRUE.
Referenced by checkConsnames(), and checkVarnames().
method check if the variable names are valid according to PIP specification
scip | SCIP data structure |
vars | array of variables |
nvars | number of variables |
Definition at line 2648 of file reader_pip.c.
References assert(), isNameValid(), NULL, nvars, SCIPvarGetName(), SCIPwarningMessage(), and vars.
Referenced by SCIPwritePip().
|
static |
method check if the constraint names are valid according to PIP specification
scip | SCIP data structure |
conss | array of constraints |
nconss | number of constraints |
transformed | TRUE iff problem is the transformed problem |
Definition at line 2672 of file reader_pip.c.
References assert(), c, isNameValid(), NULL, PIP_MAX_NAMELEN, SCIP_Bool, SCIP_Real, SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetName(), SCIPconsIsEnabled(), SCIPconsIsTransformed(), SCIPgetLhsLinear(), SCIPgetRhsLinear(), SCIPisEQ(), and SCIPwarningMessage().
Referenced by SCIPwritePip().
|
static |
copy method for reader plugins (called when SCIP copies plugins)
Definition at line 3168 of file reader_pip.c.
References assert(), NULL, READER_NAME, SCIP_CALL, SCIP_OKAY, SCIPincludeReaderPip(), and SCIPreaderGetName().
|
static |
problem reading method of reader
Definition at line 3183 of file reader_pip.c.
References result, SCIP_CALL, SCIP_OKAY, and SCIPreadPip().
|
static |
|
static |
Definition at line 137 of file reader_pip.c.
|
static |
Definition at line 138 of file reader_pip.c.
|
static |
Definition at line 139 of file reader_pip.c.
|
static |
Definition at line 140 of file reader_pip.c.
Referenced by isNameValid().