pseudo-Boolean file reader (opb format)
This file reader parses the opb format and is also used by the wbo reader for the wbo format. For a detailed description of this format see
The syntax of the input file format can be described by a simple Backus-Naur form. <formula> is the start symbol of this grammar.
<formula>::= <sequence_of_comments> [<objective>] | [<softheader>] <sequence_of_comments_or_constraints>
<sequence_of_comments>::= <comment> [<sequence_of_comments>] <comment>::= "*" <any_sequence_of_characters_other_than_EOL> <EOL> <sequence_of_comments_or_constraints>::=<comment_or_constraint> [<sequence_of_comments_or_constraints>] <comment_or_constraint>::=<comment>|<constraint>
<objective>::= "min:" <zeroOrMoreSpace> <sum> ";" <constraint>::= <sum> <relational_operator> <zeroOrMoreSpace> <integer> <zeroOrMoreSpace> ";"
<sum>::= <weightedterm> | <weightedterm> <sum> <weightedterm>::= <integer> <oneOrMoreSpace> <term> <oneOrMoreSpace>
<integer>::= <unsigned_integer> | "+" <unsigned_integer> | "-" <unsigned_integer> <unsigned_integer>::= <digit> | <digit><unsigned_integer>
<relational_operator>::= "\>=" | "="
<variablename>::= "x" <unsigned_integer>
<oneOrMoreSpace>::= " " [<oneOrMoreSpace>] <zeroOrMoreSpace>::= [" " <zeroOrMoreSpace>]
For linear pseudo-Boolean instances, <term> is defined as
<term>::=<variablename>
For non-linear instances, <term> is defined as
<term>::= <oneOrMoreLiterals> <oneOrMoreLiterals>::= <literal> | <literal> <oneOrMoreSpace> <oneOrMoreLiterals> <literal>::= <variablename> | "~"<variablename>
For wbo-files are the following additional/changed things possible.
<softheader>::= "soft:" [<unsigned integer>] ";"
<comment_or_constraint>::=<comment>|<constraint>|<softconstraint>
<softconstraint>::= "[" <zeroOrMoreSpace> <unsigned integer> <zeroOrMoreSpace> "]" <constraint>
Definition in file reader_opb.c.
#include <stdlib.h>
#include <assert.h>
#include <string.h>
#include <strings.h>
#include <ctype.h>
#include "scip/cons_and.h"
#include "scip/cons_indicator.h"
#include "scip/cons_knapsack.h"
#include "scip/cons_linear.h"
#include "scip/cons_logicor.h"
#include "scip/cons_pseudoboolean.h"
#include "scip/cons_setppc.h"
#include "scip/cons_varbound.h"
#include "scip/pub_misc.h"
#include "scip/reader_opb.h"
#include "scip/debug.h"
Go to the source code of this file.
Macros | |
#define | READER_NAME "opbreader" |
#define | READER_DESC "file reader for pseudo-Boolean problem in opb format" |
#define | READER_EXTENSION "opb" |
#define | GENCONSNAMES TRUE /* remove if no constraint names should be generated */ |
#define | LINEAROBJECTIVE |
#define | INDICATORVARNAME "indicatorvar" /* standard part of name for all indicator variables */ |
#define | INDICATORSLACKVARNAME "indslack" /* standard part of name for all indicator slack variables; should be the same in cons_indicator */ |
#define | TOPCOSTCONSNAME "topcostcons" /* standard name for artificial topcost constraint in wbo problems */ |
#define | OPB_MAX_LINELEN 65536 |
#define | OPB_MAX_PUSHEDTOKENS 2 |
#define | OPB_INIT_COEFSSIZE 8192 |
Typedefs | |
typedef enum OpbExpType | OPBEXPTYPE |
typedef enum OpbSense | OPBSENSE |
typedef struct OpbInput | OPBINPUT |
Enumerations | |
enum | OpbExpType { OPB_EXP_NONE, OPB_EXP_UNSIGNED, OPB_EXP_SIGNED } |
enum | OpbSense { OPB_SENSE_NOTHING, OPB_SENSE_LE, OPB_SENSE_GE, OPB_SENSE_EQ } |
Functions | |
static void | syntaxError (SCIP *scip, OPBINPUT *opbinput, const char *msg) |
static SCIP_Bool | hasError (OPBINPUT *opbinput) |
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, OPBEXPTYPE *exptype) |
static SCIP_Bool | getNextLine (SCIP *scip, OPBINPUT *opbinput) |
static void | swapPointers (char **pointer1, char **pointer2) |
static SCIP_Bool | getNextToken (SCIP *scip, OPBINPUT *opbinput) |
static void | pushToken (OPBINPUT *opbinput) |
static void | pushBufferToken (OPBINPUT *opbinput) |
static void | swapTokenBuffer (OPBINPUT *opbinput) |
static SCIP_Bool | isEndLine (OPBINPUT *opbinput) |
static SCIP_Bool | isSign (OPBINPUT *opbinput, int *sign) |
static SCIP_Bool | isValue (SCIP *scip, OPBINPUT *opbinput, SCIP_Real *value) |
static SCIP_Bool | isSense (OPBINPUT *opbinput, OPBSENSE *sense) |
static SCIP_Bool | isStartingSoftConstraintWeight (SCIP *scip, OPBINPUT *opbinput) |
static SCIP_Bool | isEndingSoftConstraintWeight (SCIP *scip, OPBINPUT *opbinput) |
static SCIP_RETCODE | createVariable (SCIP *scip, SCIP_VAR **var, char *name) |
static SCIP_RETCODE | getVariableOrTerm (SCIP *scip, OPBINPUT *opbinput, SCIP_VAR ***vars, int *nvars, int *varssize) |
static SCIP_RETCODE | readCoefficients (SCIP *const scip, OPBINPUT *const opbinput, char *const name, SCIP_VAR ***linvars, SCIP_Real **lincoefs, int *const nlincoefs, SCIP_VAR ****terms, SCIP_Real **termcoefs, int **ntermvars, int *const ntermcoefs, SCIP_Bool *const newsection, SCIP_Bool *const isNonlinear, SCIP_Bool *const issoftcons, SCIP_Real *const weight) |
static SCIP_RETCODE | setObjective (SCIP *const scip, OPBINPUT *const opbinput, const char *sense, SCIP_VAR **const linvars, SCIP_Real *const coefs, int const ncoefs, SCIP_VAR ***const terms, SCIP_Real *const termcoefs, int *const ntermvars, int const ntermcoefs) |
static SCIP_RETCODE | readConstraints (SCIP *scip, OPBINPUT *opbinput, int *nNonlinearConss) |
static SCIP_RETCODE | getMaxAndConsDim (SCIP *scip, OPBINPUT *opbinput, const char *filename) |
static SCIP_RETCODE | readOPBFile (SCIP *scip, OPBINPUT *opbinput, const char *filename) |
static SCIP_RETCODE | getBinVarsRepresentatives (SCIP *const scip, SCIP_VAR **const vars, int const nvars, SCIP_Bool const transformed) |
static SCIP_RETCODE | getActiveVariables (SCIP *scip, SCIP_VAR **vars, SCIP_Real *scalars, int *nvars, SCIP_Real *constant, SCIP_Bool transformed) |
static SCIP_RETCODE | computeAndConstraintInfos (SCIP *const scip, SCIP_Bool const transformed, SCIP_VAR ***resvars, int *nresvars, SCIP_VAR ****andvars, int **nandvars, SCIP_Bool *const existandconshdlr, SCIP_Bool *const existands) |
static void | clearBuffer (char *linebuffer, int *linecnt) |
static void | writeBuffer (SCIP *scip, FILE *file, char *linebuffer, int *linecnt) |
static void | appendBuffer (SCIP *scip, FILE *file, char *linebuffer, int *linecnt, const char *extension) |
static SCIP_RETCODE | writeOpbObjective (SCIP *const scip, FILE *const file, SCIP_VAR **const vars, int const nvars, SCIP_VAR **const resvars, int const nresvars, SCIP_VAR **const *const andvars, int const *const nandvars, SCIP_OBJSENSE const objsense, SCIP_Real const objscale, SCIP_Real const objoffset, char const *const multisymbol, SCIP_Bool const existands, SCIP_Bool const transformed) |
static SCIP_RETCODE | printNLRow (SCIP *const scip, FILE *const file, char const *const type, SCIP_VAR **const vars, SCIP_Real const *const vals, int const nvars, SCIP_Real lhs, SCIP_VAR **const resvars, int const nresvars, SCIP_VAR **const *const andvars, int const *const nandvars, SCIP_Longint weight, SCIP_Longint *const mult, char const *const multisymbol) |
static SCIP_RETCODE | printNonLinearCons (SCIP *const scip, FILE *const file, SCIP_VAR **const vars, SCIP_Real *const vals, int const nvars, SCIP_Real const lhs, SCIP_Real const rhs, SCIP_VAR **const resvars, int const nresvars, SCIP_VAR **const *const andvars, int const *const nandvars, SCIP_Longint weight, SCIP_Bool const transformed, char const *const multisymbol) |
static SCIP_RETCODE | printRow (SCIP *scip, FILE *file, const char *type, SCIP_VAR **vars, SCIP_Real *vals, int nvars, SCIP_Real lhs, SCIP_Longint weight, SCIP_Longint *mult, const char *multisymbol) |
static SCIP_RETCODE | printLinearCons (SCIP *scip, FILE *file, SCIP_VAR **vars, SCIP_Real *vals, int nvars, SCIP_Real lhs, SCIP_Real rhs, SCIP_Longint weight, SCIP_Bool transformed, const char *multisymbol) |
static SCIP_RETCODE | printPBRow (SCIP *const scip, FILE *const file, const char *type, SCIP_VAR **const linvars, SCIP_Real *const linvals, int const nlinvars, SCIP_VAR ***const termvars, int *const ntermvars, SCIP_Real *const termvals, int const ntermvals, SCIP_Bool **const negatedarrays, SCIP_VAR *const indvar, SCIP_Real lhs, SCIP_Longint *mult, const char *multisymbol) |
static SCIP_RETCODE | printPseudobooleanCons (SCIP *const scip, FILE *const file, SCIP_VAR **const linvars, SCIP_Real *const linvals, int const nlinvars, SCIP_VAR ***const termvars, int *const ntermvars, SCIP_Real *const termvals, int const ntermvals, SCIP_VAR *const indvar, SCIP_Real const lhs, SCIP_Real const rhs, SCIP_Bool transformed, const char *multisymbol) |
static SCIP_RETCODE | writeOpbConstraints (SCIP *const scip, FILE *const file, SCIP_CONS **const conss, int const nconss, SCIP_VAR **const vars, int const nvars, SCIP_VAR **const resvars, int const nresvars, SCIP_VAR **const *const andvars, int const *const nandvars, char const *const multisymbol, SCIP_Bool const existandconshdlr, SCIP_Bool const existands, SCIP_Bool const transformed) |
static SCIP_RETCODE | writeOpbFixedVars (SCIP *const scip, FILE *const file, SCIP_VAR **vars, int nvars, SCIP_HASHTABLE *const printedfixing, char const *const multisymbol, SCIP_Bool const transformed) |
static SCIP_RETCODE | writeOpbRelevantAnds (SCIP *const scip, FILE *const file, SCIP_VAR **const resvars, int const nresvars, SCIP_VAR **const *const andvars, int const *const nandvars, SCIP_HASHTABLE *const printedfixing, char const *const multisymbol, SCIP_Bool const transformed) |
static SCIP_RETCODE | writeOpb (SCIP *scip, FILE *file, const char *name, SCIP_Bool transformed, SCIP_OBJSENSE objsense, SCIP_Real objscale, SCIP_Real objoffset, SCIP_VAR **vars, int nvars, SCIP_CONS **conss, int nconss, SCIP_VAR **const resvars, int const nresvars, SCIP_VAR **const *const andvars, int const *const nandvars, SCIP_Bool const existandconshdlr, SCIP_Bool const existands, SCIP_RESULT *result) |
SCIP_RETCODE | SCIPreadOpb (SCIP *scip, SCIP_READER *reader, const char *filename, SCIP_RESULT *result) |
SCIP_RETCODE | SCIPwriteOpb (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_VAR **fixedvars, int nfixedvars, SCIP_CONS **conss, int nconss, SCIP_Bool genericnames, SCIP_RESULT *result) |
static | SCIP_DECL_READERCOPY (readerCopyOpb) |
static | SCIP_DECL_READERREAD (readerReadOpb) |
static | SCIP_DECL_READERWRITE (readerWriteOpb) |
SCIP_RETCODE | SCIPincludeReaderOpb (SCIP *scip) |
Variables | |
static const char | commentchars [] = "*" |
#define READER_NAME "opbreader" |
Definition at line 101 of file reader_opb.c.
Referenced by readConstraints(), SCIP_DECL_READERCOPY(), SCIPincludeReaderOpb(), and writeOpb().
#define READER_DESC "file reader for pseudo-Boolean problem in opb format" |
Definition at line 102 of file reader_opb.c.
Referenced by SCIPincludeReaderOpb().
#define READER_EXTENSION "opb" |
Definition at line 103 of file reader_opb.c.
Referenced by SCIPincludeReaderOpb().
#define GENCONSNAMES TRUE /* remove if no constraint names should be generated */ |
Definition at line 105 of file reader_opb.c.
#define LINEAROBJECTIVE |
Definition at line 106 of file reader_opb.c.
#define INDICATORVARNAME "indicatorvar" /* standard part of name for all indicator variables */ |
Definition at line 111 of file reader_opb.c.
Referenced by printPBRow(), printRow(), readConstraints(), SCIPwriteOpb(), and writeOpbObjective().
#define INDICATORSLACKVARNAME "indslack" /* standard part of name for all indicator slack variables; should be the same in cons_indicator */ |
Definition at line 112 of file reader_opb.c.
Referenced by SCIPwriteOpb().
#define TOPCOSTCONSNAME "topcostcons" /* standard name for artificial topcost constraint in wbo problems */ |
Definition at line 113 of file reader_opb.c.
Referenced by readOPBFile(), and writeOpbObjective().
#define OPB_MAX_LINELEN 65536 |
size of the line buffer for reading or writing
Definition at line 118 of file reader_opb.c.
Referenced by appendBuffer(), getNextLine(), getNextToken(), printNLRow(), printPBRow(), printRow(), readConstraints(), readOPBFile(), SCIPreadOpb(), writeOpb(), writeOpbFixedVars(), writeOpbObjective(), and writeOpbRelevantAnds().
#define OPB_MAX_PUSHEDTOKENS 2 |
Definition at line 119 of file reader_opb.c.
Referenced by pushBufferToken(), pushToken(), and SCIPreadOpb().
#define OPB_INIT_COEFSSIZE 8192 |
Definition at line 120 of file reader_opb.c.
Referenced by readCoefficients().
typedef enum OpbExpType OPBEXPTYPE |
Definition at line 129 of file reader_opb.c.
Definition at line 138 of file reader_opb.c.
typedef struct OpbInput OPBINPUT |
Definition at line 166 of file reader_opb.c.
enum OpbExpType |
Section in OPB File
Enumerator | |
---|---|
OPB_EXP_NONE | |
OPB_EXP_UNSIGNED | |
OPB_EXP_SIGNED |
Definition at line 123 of file reader_opb.c.
enum OpbSense |
Enumerator | |
---|---|
OPB_SENSE_NOTHING | |
OPB_SENSE_LE | |
OPB_SENSE_GE | |
OPB_SENSE_EQ |
Definition at line 131 of file reader_opb.c.
issues an error message and marks the OPB data to have errors
scip | SCIP data structure |
opbinput | OPB reading data |
msg | error message |
Definition at line 175 of file reader_opb.c.
References SCIPerrorMessage, and TRUE.
Referenced by getVariableOrTerm(), readCoefficients(), and readConstraints().
returns whether a syntax error was detected
opbinput | OPB reading data |
Definition at line 198 of file reader_opb.c.
Referenced by readCoefficients(), readConstraints(), readOPBFile(), and setObjective().
|
static |
returns whether the given character is a token delimiter
c | input character |
Definition at line 209 of file reader_opb.c.
Referenced by getNextToken().
|
static |
returns whether the given character is a single token
c | input character |
Definition at line 230 of file reader_opb.c.
Referenced by getNextToken(), and getVariableOrTerm().
|
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 253 of file reader_opb.c.
References FALSE, OPB_EXP_NONE, OPB_EXP_SIGNED, OPB_EXP_UNSIGNED, 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 |
opbinput | OPB reading data |
Definition at line 297 of file reader_opb.c.
References commentchars, FALSE, OPB_MAX_LINELEN, SCIPdebugMsg, SCIPfgets(), SCIPfseek(), SCIPwarningMessage(), and TRUE.
Referenced by getNextToken().
|
static |
swaps the addresses of two pointers
pointer1 | first pointer |
pointer2 | second pointer |
Definition at line 393 of file reader_opb.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 |
opbinput | OPB reading data |
Definition at line 407 of file reader_opb.c.
References FALSE, getNextLine(), isDelimChar(), isTokenChar(), isValueChar(), OPB_EXP_NONE, OPB_MAX_LINELEN, SCIP_Bool, SCIPdebugMsg, swapPointers(), and TRUE.
Referenced by getVariableOrTerm(), readCoefficients(), and readConstraints().
|
static |
puts the current token on the token stack, such that it is read at the next call to getNextToken()
opbinput | OPB reading data |
Definition at line 513 of file reader_opb.c.
References OPB_MAX_PUSHEDTOKENS, and swapPointers().
Referenced by getVariableOrTerm(), and readCoefficients().
|
static |
puts the buffered token on the token stack, such that it is read at the next call to getNextToken()
opbinput | OPB reading data |
Definition at line 526 of file reader_opb.c.
References OPB_MAX_PUSHEDTOKENS, and swapPointers().
Referenced by readCoefficients().
|
static |
swaps the current token with the token buffer
opbinput | OPB reading data |
Definition at line 539 of file reader_opb.c.
References swapPointers().
Referenced by readCoefficients().
checks whether the current token is a section identifier, and if yes, switches to the corresponding section
opbinput | OPB reading data |
Definition at line 550 of file reader_opb.c.
Referenced by readCoefficients(), readConstraints(), and setObjective().
returns whether the current token is a sign
opbinput | OPB reading data |
sign | pointer to update the sign |
Definition at line 564 of file reader_opb.c.
Referenced by readCoefficients(), and readConstraints().
returns whether the current token is a value
scip | SCIP data structure |
opbinput | OPB reading data |
value | pointer to store the value (unchanged, if token is no value) |
Definition at line 591 of file reader_opb.c.
References FALSE, SCIPinfinity(), and TRUE.
Referenced by readCoefficients(), and readConstraints().
returns whether the current token is an equation sense
opbinput | OPB reading data |
sense | pointer to store the equation sense, or NULL |
Definition at line 625 of file reader_opb.c.
References FALSE, OPB_SENSE_EQ, OPB_SENSE_GE, OPB_SENSE_LE, and TRUE.
Referenced by readCoefficients(), and readConstraints().
returns whether the current token is a value
scip | SCIP data structure |
opbinput | OPB reading data |
Definition at line 656 of file reader_opb.c.
Referenced by readCoefficients().
returns whether the current token is a value
scip | SCIP data structure |
opbinput | OPB reading data |
Definition at line 672 of file reader_opb.c.
Referenced by readCoefficients().
|
static |
create binary variable with given name
scip | SCIP data structure |
var | pointer to store the variable |
name | name for the variable |
Definition at line 688 of file reader_opb.c.
References SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARTYPE_BINARY, SCIPaddVar(), SCIPcreateVar(), SCIPdebugMsg, SCIPgetBoolParam(), and SCIPreleaseVar().
Referenced by getVariableOrTerm(), and readConstraints().
|
static |
returns the variable with the given name, or creates a new variable if it does not exist
scip | SCIP data structure |
opbinput | OPB reading data |
vars | pointer to store the variables |
nvars | pointer to store the number of variables |
varssize | pointer to store the varsize, if changed (should already be initialized) |
Definition at line 720 of file reader_opb.c.
References createVariable(), FALSE, getNextToken(), isTokenChar(), pushToken(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPcalcMemGrowSize(), SCIPfindVar(), SCIPgetNegatedVar(), SCIPreallocBufferArray, syntaxError(), and TRUE.
Referenced by readCoefficients().
|
static |
reads an objective or constraint with name and coefficients
scip | SCIP data structure |
opbinput | OPB reading data |
name | pointer to store the name of the line; must be at least of size OPB_MAX_LINELEN |
linvars | pointer to store the array with linear variables (must be freed by caller) |
lincoefs | pointer to store the array with linear coefficients (must be freed by caller) |
nlincoefs | pointer to store the number of linear coefficients |
terms | pointer to store the array with nonlinear variables (must be freed by caller) |
termcoefs | pointer to store the array with nonlinear coefficients (must be freed by caller) |
ntermvars | pointer to store the number of nonlinear variables in the terms (must be freed by caller) |
ntermcoefs | pointer to store the number of nonlinear coefficients |
newsection | pointer to store whether a new section was encountered |
isNonlinear | pointer to store if we have a nonlinear constraint |
issoftcons | pointer to store whether it is a soft constraint (for wbo files) |
weight | pointer to store the weight of the soft constraint |
Definition at line 796 of file reader_opb.c.
References FALSE, getNextToken(), getVariableOrTerm(), hasError(), isEndingSoftConstraintWeight(), isEndLine(), isSense(), isSign(), isStartingSoftConstraintWeight(), isValue(), OPB_INIT_COEFSSIZE, pushBufferToken(), pushToken(), SCIP_Bool, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPcalcMemGrowSize(), SCIPdebugMsg, SCIPdebugMsgPrint, SCIPfeof(), SCIPfreeBufferArray, SCIPgetNConss(), SCIPgetNVars(), SCIPisIntegral(), SCIPisZero(), SCIPmemccpy(), SCIPreallocBufferArray, SCIPvarGetName(), SCIPwarningMessage(), swapTokenBuffer(), syntaxError(), and TRUE.
Referenced by readConstraints().
|
static |
set the objective section
scip | SCIP data structure |
opbinput | OPB reading data |
sense | objective sense |
linvars | array of linear variables |
coefs | array of objective values for linear variables |
ncoefs | number of coefficients for linear part |
terms | array with nonlinear variables |
termcoefs | array of objective values for nonlinear variables |
ntermvars | number of nonlinear variables in the terms |
ntermcoefs | number of nonlinear coefficients |
Definition at line 1149 of file reader_opb.c.
References ARTIFICIALVARNAMEPREFIX, FALSE, hasError(), isEndLine(), SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OBJSENSE_MAXIMIZE, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_INTEGER, SCIPaddCons(), SCIPaddOrigObjoffset(), SCIPaddVar(), SCIPchgVarBranchPriority(), SCIPchgVarObj(), SCIPcreateConsAnd(), SCIPcreateConsPseudoboolean(), SCIPcreateVar(), SCIPdebugAddSolVal, SCIPdebugGetSolVal, SCIPdebugPrintCons, SCIPisFeasEQ(), SCIPisFeasGE(), SCIPisFeasLE(), SCIPisFeasZero(), SCIPreleaseCons(), SCIPreleaseVar(), SCIPsnprintf(), SCIPvarGetNegationVar(), SCIPvarGetObj(), SCIPvarIsNegated(), and TRUE.
Referenced by readConstraints().
|
static |
reads the constraints section
scip | SCIP data structure |
opbinput | OPB reading data |
nNonlinearConss | pointer to store number of nonlinear constraints |
Definition at line 1351 of file reader_opb.c.
References createVariable(), FALSE, getNextToken(), hasError(), INDICATORVARNAME, isEndLine(), isSense(), isSign(), isValue(), OPB_MAX_LINELEN, OPB_SENSE_EQ, OPB_SENSE_GE, OPB_SENSE_LE, OPB_SENSE_NOTHING, readCoefficients(), READER_NAME, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddCons(), SCIPchgVarObj(), SCIPcreateConsLinear(), SCIPcreateConsPseudoboolean(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPerrorMessage, SCIPfreeBufferArrayNull, SCIPgetBoolParam(), SCIPinfinity(), SCIPisInfinity(), SCIPreleaseCons(), SCIPsnprintf(), setObjective(), syntaxError(), and TRUE.
Referenced by readOPBFile().
|
static |
tries to read the first comment line which usually contains information about the max size of "and" products
scip | SCIP data structure |
opbinput | OPB reading data |
filename | name of the input file |
Definition at line 1575 of file reader_opb.c.
References commentchars, delimchars, FALSE, SCIP_Bool, SCIP_OKAY, SCIPdebugMsg, SCIPfclose(), SCIPfeof(), SCIPfgets(), SCIPfopen(), SCIPfseek(), and TRUE.
Referenced by readOPBFile().
|
static |
reads an OPB file
scip | SCIP data structure |
opbinput | OPB reading data |
filename | name of the input file |
Definition at line 1659 of file reader_opb.c.
References BMSclearMemoryArray, FALSE, getMaxAndConsDim(), hasError(), OPB_MAX_LINELEN, readConstraints(), SCIP_CALL, SCIP_Longint, SCIP_NOFILE, SCIP_OKAY, SCIP_Real, SCIPaddCons(), SCIPallocBufferArray, SCIPcreateConsLinear(), SCIPcreateProb(), SCIPdebugPrintCons, SCIPerrorMessage, SCIPfclose(), SCIPfeof(), SCIPfloor(), SCIPfopen(), SCIPfreeBufferArray, SCIPgetNVars(), SCIPgetVars(), SCIPinfinity(), SCIPisIntegral(), SCIPisZero(), SCIPprintSysError(), SCIPreleaseCons(), SCIPvarGetObj(), TOPCOSTCONSNAME, and TRUE.
Referenced by SCIPreadOpb().
|
static |
transforms given and constraint variables to the corresponding active or negated variables
scip | SCIP data structure |
vars | vars array to get active variables for |
nvars | pointer to number of variables and values in vars and vals array |
transformed | transformed constraint? |
Definition at line 1753 of file reader_opb.c.
References SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPdebugMsg, SCIPgetBinvarRepresentative(), SCIPgetNegatedVar(), SCIPisEQ(), SCIPisZero(), and SCIPvarGetOrigvarSum().
Referenced by computeAndConstraintInfos().
|
static |
transforms given variables, scalars, and constant to the corresponding active variables, scalars, and constant
scip | SCIP data structure |
vars | vars array to get active variables for |
scalars | 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 1817 of file reader_opb.c.
References SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPgetProbvarLinearSum(), SCIPreallocBufferArray, SCIPvarGetOrigvarSum(), and TRUE.
Referenced by printLinearCons(), printNonLinearCons(), and printPseudobooleanCons().
|
static |
scip | SCIP data structure |
transformed | transformed problem? |
resvars | pointer to store all resultant variables |
nresvars | pointer to store the number of all resultant variables |
andvars | pointer to store to all resultant variables their corresponding active( or negated) and-constraint variables |
nandvars | pointer to store the number of all corresponding and-variables to their corresponding resultant variable |
existandconshdlr | pointer to store whether the and-constrainthandler exists |
existands | pointer to store if their exists some and-constraints |
Definition at line 1862 of file reader_opb.c.
References FALSE, getBinVarsRepresentatives(), SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPallocBufferArray, SCIPallocMemoryArray, SCIPconsGetHdlr(), SCIPconshdlrGetConss(), SCIPconshdlrGetName(), SCIPconshdlrGetNConss(), SCIPdebug, SCIPdebugMsg, SCIPduplicateMemoryArray, SCIPfindConshdlr(), SCIPfreeBufferArray, SCIPgetNOrigConss(), SCIPgetNVarsAnd(), SCIPgetOrigConss(), SCIPgetResultantAnd(), SCIPgetVarsAnd(), SCIPprintVar(), SCIPreallocMemoryArray, SCIPsortedvecFindPtr(), SCIPsortPtrPtrInt(), SCIPwarningMessage(), and TRUE.
Referenced by SCIPwriteOpb().
|
static |
clears the given line buffer
linebuffer | line |
linecnt | number of characters in line |
Definition at line 2063 of file reader_opb.c.
Referenced by printNLRow(), printPBRow(), printRow(), writeBuffer(), writeOpbFixedVars(), writeOpbObjective(), and writeOpbRelevantAnds().
|
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 2078 of file reader_opb.c.
References clearBuffer(), and SCIPinfoMessage().
Referenced by appendBuffer(), printNLRow(), printPBRow(), printRow(), writeOpbFixedVars(), writeOpbObjective(), and writeOpbRelevantAnds().
|
static |
appends extension to line and prints it to the give file stream if the line buffer get full
scip | SCIP data structure |
file | output file (or NULL for standard output) |
linebuffer | line buffer |
linecnt | number of characters in line |
extension | string to extent the line |
Definition at line 2100 of file reader_opb.c.
References OPB_MAX_LINELEN, and writeBuffer().
Referenced by printNLRow(), printPBRow(), printRow(), writeOpbFixedVars(), writeOpbObjective(), and writeOpbRelevantAnds().
|
static |
write objective function
scip | SCIP data structure |
file | output file, or NULL if standard output should be used |
vars | array with active (binary) variables |
nvars | number of active variables in the problem |
resvars | array of resultant variables |
nresvars | number of resultant variables |
andvars | corresponding array of and-variables |
nandvars | array of numbers of corresponding and-variables |
objsense | objective sense |
objscale | scalar applied to objective function; external objective value is extobj = objsense * objscale * (intobj + objoffset) |
objoffset | objective offset from bound shifting and fixing |
multisymbol | the multiplication symbol to use between coefficient and variable |
existands | does some and-constraints exist? |
transformed | TRUE iff problem is the transformed problem |
Definition at line 2123 of file reader_opb.c.
References appendBuffer(), clearBuffer(), FALSE, INDICATORVARNAME, OPB_MAX_LINELEN, SCIP_Bool, SCIP_INVALIDDATA, SCIP_Longint, SCIP_LONGINT_MAX, SCIP_OBJSENSE_MAXIMIZE, SCIP_OKAY, SCIP_VARSTATUS_NEGATED, SCIP_VARSTATUS_ORIGINAL, SCIPABORT, SCIPconsGetHdlr(), SCIPconshdlrGetConss(), SCIPconshdlrGetName(), SCIPconshdlrGetNConss(), SCIPdebugMsg, SCIPerrorMessage, SCIPfindCons(), SCIPfindConshdlr(), SCIPgetCapacityKnapsack(), SCIPgetNVarsKnapsack(), SCIPgetNVarsLinear(), SCIPgetNVarsSetppc(), SCIPgetRhsLinear(), SCIPgetVarsKnapsack(), SCIPgetVarsLinear(), SCIPgetVarsSetppc(), SCIPinfoMessage(), SCIPisIntegral(), SCIPisZero(), SCIPround(), SCIPsnprintf(), SCIPsortedvecFindPtr(), SCIPvarGetIndex(), SCIPvarGetName(), SCIPvarGetNegationVar(), SCIPvarGetObj(), SCIPvarGetStatus(), SCIPvarIsNegated(), TOPCOSTCONSNAME, TRUE, and writeBuffer().
Referenced by writeOpb().
|
static |
scip | SCIP data structure |
file | output file (or NULL for standard output) |
type | row type ("=" or ">=") |
vars | array of variables |
vals | array of values |
nvars | number of variables |
lhs | left hand side |
resvars | array of resultant variables |
nresvars | number of resultant variables |
andvars | corresponding array of and-variables |
nandvars | array of numbers of corresponding and-variables |
weight | if we found a soft constraint this is the weight, otherwise 0 |
mult | multiplier for the coefficients |
multisymbol | the multiplication symbol to use between coefficient and variable |
Definition at line 2493 of file reader_opb.c.
References appendBuffer(), clearBuffer(), OPB_MAX_LINELEN, SCIP_Bool, SCIP_INVALIDDATA, SCIP_Longint, SCIP_LONGINT_MAX, SCIP_OKAY, SCIPerrorMessage, SCIPinfoMessage(), SCIPisIntegral(), SCIPisZero(), SCIPround(), SCIPsnprintf(), SCIPsortedvecFindPtr(), SCIPvarGetIndex(), SCIPvarGetName(), SCIPvarGetNegationVar(), SCIPvarIsNegated(), and writeBuffer().
Referenced by printNonLinearCons().
|
static |
prints given maybe non-linear constraint information in OPB format to file stream
scip | SCIP data structure |
file | output file (or NULL for standard output) |
vars | array of variables |
vals | array of coefficients values (or NULL if all coefficient values are 1) |
nvars | number of variables |
lhs | left hand side |
rhs | right hand side |
resvars | array of resultant variables |
nresvars | number of resultant variables |
andvars | corresponding array of and-variables |
nandvars | array of numbers of corresponding and-variables |
weight | if we found a soft constraint this is the weight, otherwise 0 |
transformed | transformed constraint? |
multisymbol | the multiplication symbol to use between coefficient and variable |
Definition at line 2627 of file reader_opb.c.
References getActiveVariables(), printNLRow(), SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPisEQ(), and SCIPisInfinity().
Referenced by writeOpbConstraints().
|
static |
scip | SCIP data structure |
file | output file (or NULL for standard output) |
type | row type ("=" or ">=") |
vars | array of variables |
vals | array of values |
nvars | number of variables |
lhs | left hand side |
weight | if we found a soft constraint this is the weight, otherwise 0 |
mult | multiplier for the coefficients |
multisymbol | the multiplication symbol to use between coefficient and variable |
Definition at line 2725 of file reader_opb.c.
References appendBuffer(), clearBuffer(), INDICATORVARNAME, OPB_MAX_LINELEN, SCIP_Bool, SCIP_INVALIDDATA, SCIP_Longint, SCIP_LONGINT_MAX, SCIP_OKAY, SCIPerrorMessage, SCIPinfoMessage(), SCIPisIntegral(), SCIPisZero(), SCIPround(), SCIPsnprintf(), SCIPvarGetName(), SCIPvarGetNegationVar(), SCIPvarIsNegated(), and writeBuffer().
Referenced by printLinearCons().
|
static |
prints given linear constraint information in OPB format to file stream
scip | SCIP data structure |
file | output file (or NULL for standard output) |
vars | array of variables |
vals | array of coefficients values (or NULL if all coefficient values are 1) |
nvars | number of variables |
lhs | left hand side |
rhs | right hand side |
weight | if we found a soft constraint this is the weight, otherwise 0 |
transformed | transformed constraint? |
multisymbol | the multiplication symbol to use between coefficient and variable |
Definition at line 2820 of file reader_opb.c.
References getActiveVariables(), printRow(), SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPisEQ(), and SCIPisInfinity().
Referenced by writeOpbConstraints().
|
static |
scip | SCIP data structure |
file | output file (or NULL for standard output) |
type | row type ("=" or ">=") |
linvars | array of variables |
linvals | array of values |
nlinvars | number of variables |
termvars | term array with array of variables to print |
ntermvars | array with number of variables in each term |
termvals | array of coefficient values for non-linear variables |
ntermvals | number non-linear variables in the problem |
negatedarrays | array of arrays to know which variable in a non-linear part is negated |
indvar | indicator variable, or NULL |
lhs | left hand side |
mult | multiplier for the coefficients |
multisymbol | the multiplication symbol to use between coefficient and variable |
Definition at line 2909 of file reader_opb.c.
References appendBuffer(), clearBuffer(), INDICATORVARNAME, OPB_MAX_LINELEN, SCIP_Bool, SCIP_INVALIDDATA, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIPinfoMessage(), SCIPisIntegral(), SCIPisZero(), SCIPround(), SCIPsnprintf(), SCIPvarGetName(), SCIPvarGetNegationVar(), SCIPvarGetObj(), SCIPvarIsNegated(), and writeBuffer().
Referenced by printPseudobooleanCons().
|
static |
prints given pseudo boolean constraint information in OPB format to file stream
scip | SCIP data structure |
file | output file, or NULL if standard output should be used |
linvars | array with variables of linear part |
linvals | array of coefficients values of linear part |
nlinvars | number variables in linear part of the problem |
termvars | term array with array of variables to print |
ntermvars | array with number of variables in each term |
termvals | array of coefficient values for non-linear variables |
ntermvals | number non-linear variables in the problem |
indvar | indicator variable, or NULL |
lhs | left hand side of constraint |
rhs | right hand side of constraint |
transformed | should the transformed problem be printed ? |
multisymbol | the multiplication symbol to use between coefficient and variable |
Definition at line 3046 of file reader_opb.c.
References BMSclearMemoryArray, getActiveVariables(), printPBRow(), SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPgetBinvarRepresentatives(), SCIPisEQ(), and SCIPisInfinity().
Referenced by writeOpbConstraints().
|
static |
scip | SCIP data structure |
file | output file, or NULL if standard output should be used |
conss | array with constraints of the problem |
nconss | number of constraints in the problem |
vars | array with active (binary) variables |
nvars | number of active variables in the problem |
resvars | array of resultant variables |
nresvars | number of resultant variables |
andvars | corresponding array of and-variables |
nandvars | array of numbers of corresponding and-variables |
multisymbol | the multiplication symbol to use between coefficient and variable |
existandconshdlr | does and-constrainthandler exist? |
existands | does some and-constraints exist? |
transformed | TRUE iff problem is the transformed problem |
Definition at line 3198 of file reader_opb.c.
References FALSE, printLinearCons(), printNonLinearCons(), printPseudobooleanCons(), SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIP_SETPPCTYPE_COVERING, SCIP_SETPPCTYPE_PACKING, SCIP_SETPPCTYPE_PARTITIONING, SCIP_VARSTATUS_AGGREGATED, SCIP_VARSTATUS_MULTAGGR, SCIP_VARSTATUS_NEGATED, SCIP_VARTYPE_BINARY, SCIPallocBufferArray, SCIPblkmem(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetConss(), SCIPconshdlrGetName(), SCIPconshdlrGetNConss(), SCIPconsIsEnabled(), SCIPconsIsTransformed(), SCIPduplicateBufferArray, SCIPerrorMessage, SCIPfindConshdlr(), SCIPfreeBufferArray, SCIPgetAndDatasPseudoboolean(), SCIPgetBinaryVarIndicator(), SCIPgetCapacityKnapsack(), SCIPgetIndVarPseudoboolean(), SCIPgetLhsLinear(), SCIPgetLhsPseudoboolean(), SCIPgetLhsVarbound(), SCIPgetLinDatasWithoutAndPseudoboolean(), SCIPgetLinearConsIndicator(), SCIPgetLinearConsPseudoboolean(), SCIPgetNAndsPseudoboolean(), SCIPgetNLinVarsWithoutAndPseudoboolean(), SCIPgetNVarsAnd(), SCIPgetNVarsKnapsack(), SCIPgetNVarsLinear(), SCIPgetNVarsLogicor(), SCIPgetNVarsSetppc(), SCIPgetRhsLinear(), SCIPgetRhsPseudoboolean(), SCIPgetRhsVarbound(), SCIPgetSlackVarIndicator(), SCIPgetTypeSetppc(), SCIPgetValsLinear(), SCIPgetVarsAnd(), SCIPgetVarsKnapsack(), SCIPgetVarsLinear(), SCIPgetVarsLogicor(), SCIPgetVarsSetppc(), SCIPgetVarVarbound(), SCIPgetVbdcoefVarbound(), SCIPgetVbdvarVarbound(), SCIPgetWeightsKnapsack(), SCIPhashmapCreate(), SCIPhashmapFree(), SCIPhashmapGetImage(), SCIPhashmapInsert(), SCIPinfinity(), SCIPinfoMessage(), SCIPisGT(), SCIPprintCons(), SCIPvarGetNegationVar(), SCIPvarGetObj(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPwarningMessage(), and TRUE.
Referenced by writeOpb().
|
static |
scip | SCIP data structure |
file | output file, or NULL if standard output should be used |
vars | array with active (binary) variables |
nvars | number of active variables in the problem |
printedfixing | hashmap to store if a fixed variable was already printed |
multisymbol | the multiplication symbol to use between coefficient and variable |
transformed | TRUE iff problem is the transformed problem |
Definition at line 3753 of file reader_opb.c.
References appendBuffer(), clearBuffer(), FALSE, OPB_MAX_LINELEN, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPgetBinvarRepresentative(), SCIPhashtableExists(), SCIPhashtableInsert(), SCIPisFeasIntegral(), SCIPsnprintf(), SCIPvarGetLbLocal(), SCIPvarGetLbOriginal(), SCIPvarGetName(), SCIPvarGetNegationVar(), SCIPvarGetUbLocal(), SCIPvarGetUbOriginal(), and writeBuffer().
Referenced by writeOpb().
|
static |
scip | SCIP data structure |
file | output file, or NULL if standard output should be used |
resvars | array of resultant variables |
nresvars | number of resultant variables |
andvars | corresponding array of and-variables |
nandvars | array of numbers of corresponding and-variables |
printedfixing | hashmap to store if a fixed variable was already printed |
multisymbol | the multiplication symbol to use between coefficient and variable |
transformed | TRUE iff problem is the transformed problem |
Definition at line 3827 of file reader_opb.c.
References appendBuffer(), clearBuffer(), FALSE, OPB_MAX_LINELEN, SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIPgetBinvarRepresentative(), SCIPhashtableInsert(), SCIPisFeasIntegral(), SCIPsnprintf(), SCIPsortedvecFindPtr(), SCIPvarGetLbLocal(), SCIPvarGetLbOriginal(), SCIPvarGetName(), SCIPvarGetNegationVar(), SCIPvarGetUbLocal(), SCIPvarGetUbOriginal(), SCIPvarIsActive(), SCIPvarIsNegated(), TRUE, and writeBuffer().
Referenced by writeOpb().
|
static |
scip | SCIP data structure |
file | output file, or NULL if standard output should be used |
name | problem name |
transformed | TRUE iff problem is the transformed problem |
objsense | objective sense |
objscale | scalar applied to objective function; external objective value is extobj = objsense * objscale * (intobj + objoffset) |
objoffset | objective offset from bound shifting and fixing |
vars | array with active (binary) variables |
nvars | number of active variables in the problem |
conss | array with constraints of the problem |
nconss | number of constraints in the problem |
resvars | array of resultant variables |
nresvars | number of resultant variables |
andvars | corresponding array of and-variables |
nandvars | array of numbers of corresponding and-variables |
existandconshdlr | does and-constrainthandler exist? |
existands | does some and-constraints exist? |
result | pointer to store the result of the file writing call |
Definition at line 4094 of file reader_opb.c.
References OPB_MAX_LINELEN, READER_NAME, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_SUCCESS, SCIPblkmem(), SCIPgetBoolParam(), SCIPhashtableCreate(), SCIPhashtableFree(), SCIPinfoMessage(), SCIPsnprintf(), writeOpbConstraints(), writeOpbFixedVars(), writeOpbObjective(), and writeOpbRelevantAnds().
Referenced by SCIPwriteOpb().
|
static |
copy method for reader plugins (called when SCIP copies plugins)
Definition at line 4424 of file reader_opb.c.
References READER_NAME, SCIP_CALL, SCIP_OKAY, SCIPincludeReaderOpb(), and SCIPreaderGetName().
|
static |
problem reading method of reader
Definition at line 4439 of file reader_opb.c.
References SCIP_CALL, SCIP_OKAY, and SCIPreadOpb().
|
static |
problem writing method of reader
Definition at line 4450 of file reader_opb.c.
References SCIP_CALL, SCIP_OKAY, and SCIPwriteOpb().
|
static |
Definition at line 168 of file reader_opb.c.
Referenced by getMaxAndConsDim(), and getNextLine().