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 "blockmemshell/memory.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_exactlinear.h"#include "scip/cons_logicor.h"#include "scip/cons_pseudoboolean.h"#include "scip/cons_setppc.h"#include "scip/cons_varbound.h"#include "scip/debug.h"#include "scip/pub_cons.h"#include "scip/pub_fileio.h"#include "scip/pub_message.h"#include "scip/pub_misc.h"#include "scip/pub_misc_sort.h"#include "scip/pub_reader.h"#include "scip/pub_var.h"#include "scip/reader_opb.h"#include "scip/rational.h"#include "scip/scip_cons.h"#include "scip/scip_exact.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_solvingstats.h"#include "scip/scip_var.h"#include <stdlib.h>#include <string.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 | 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 |
| #define | OPB_MAX_INTSIZE -1 |
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, int *lincoefssize, SCIP_VAR ****terms, SCIP_Real **termcoefs, int **ntermvars, int *termcoefssize, 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_Real const scale, 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, SCIP_Real objscale, int *nNonlinearConss) |
| static SCIP_RETCODE | getCommentLineData (SCIP *scip, OPBINPUT *opbinput, SCIP_Real *objscale, SCIP_Real *objoffset) |
| static SCIP_RETCODE | readOPBFile (SCIP *scip, SCIP_READER *reader, 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, int *varssize, SCIP_Real *constant, SCIP_Bool transformed) |
| static SCIP_RETCODE | getActiveVariablesExact (SCIP *scip, SCIP_VAR ***vars, SCIP_RATIONAL ***scalars, int *nvars, int *varssize, SCIP_RATIONAL *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 objoffset, SCIP_Real const objscale, SCIP_RATIONAL *const objoffsetexact, SCIP_RATIONAL *const objscaleexact, char const *const multisymbol, SCIP_Bool const existands, SCIP_Bool const transformed) |
| static SCIP_RETCODE | printNLRow (SCIP *const scip, FILE *const file, const char *const type, SCIP_VAR **const vars, SCIP_Real *const vals, int nvars, SCIP_Real lhs, SCIP_VAR **const resvars, int nresvars, SCIP_VAR **const *const andvars, const int *const nandvars, SCIP_Longint weight, SCIP_Longint *const mult, const char *const multisymbol) |
| static SCIP_RETCODE | printNonLinearCons (SCIP *const scip, FILE *const file, SCIP_VAR **const vars, SCIP_Real *const vals, int nvars, SCIP_Real lhs, SCIP_Real rhs, SCIP_VAR **const resvars, int nresvars, SCIP_VAR **const *const andvars, const int *const nandvars, SCIP_Longint weight, SCIP_Bool transformed, const char *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 | printRowExact (SCIP *scip, FILE *file, const char *type, SCIP_VAR **vars, SCIP_RATIONAL **vals, int nvars, SCIP_RATIONAL *lhs, SCIP_RATIONAL *weight, SCIP_RATIONAL *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 | printLinearConsExact (SCIP *scip, FILE *file, SCIP_VAR **vars, SCIP_RATIONAL **vals, int nvars, SCIP_RATIONAL *lhs, SCIP_RATIONAL *rhs, SCIP_RATIONAL *weight, SCIP_Bool transformed, const char *multisymbol) |
| static void | determineTotalNumberLinearConss (SCIP *const scip, SCIP_CONS **const conss, int const nconss, int *nlinearconss, int *nindicatorconss) |
| 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 objoffset, SCIP_Real objscale, SCIP_RATIONAL *objoffsetexact, SCIP_RATIONAL *objscaleexact, 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 objoffset, SCIP_Real objscale, SCIP_RATIONAL *objoffsetexact, SCIP_RATIONAL *objscaleexact, SCIP_VAR **vars, int nvars, int nbinvars, int nintvars, int nimplvars, int ncontvars, SCIP_VAR **fixedvars, int nfixedvars, SCIP_CONS **conss, int nconss, SCIP_Bool genericnames, SCIP_RESULT *result) |
| static | SCIP_DECL_READERCOPY (readerCopyOpb) |
| static | SCIP_DECL_READERFREE (readerFreeOpb) |
| 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 125 of file reader_opb.c.
| #define READER_DESC "file reader for pseudo-Boolean problem in opb format" |
Definition at line 126 of file reader_opb.c.
| #define READER_EXTENSION "opb" |
Definition at line 127 of file reader_opb.c.
Definition at line 129 of file reader_opb.c.
| #define INDICATORVARNAME "indicatorvar" /* standard part of name for all indicator variables */ |
Definition at line 130 of file reader_opb.c.
Referenced by printRow(), printRowExact(), 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 131 of file reader_opb.c.
Referenced by SCIPwriteOpb().
| #define TOPCOSTCONSNAME "topcostcons" /* standard name for artificial topcost constraint in wbo problems */ |
Definition at line 132 of file reader_opb.c.
Referenced by readOPBFile(), writeOpbConstraints(), and writeOpbObjective().
| #define OPB_MAX_LINELEN 65536 |
size of the line buffer for reading or writing
Definition at line 137 of file reader_opb.c.
Referenced by appendBuffer(), getNextToken(), printNLRow(), printRow(), printRowExact(), readConstraints(), SCIPreadOpb(), writeBuffer(), writeOpb(), writeOpbFixedVars(), writeOpbObjective(), and writeOpbRelevantAnds().
| #define OPB_MAX_PUSHEDTOKENS 2 |
Definition at line 138 of file reader_opb.c.
Referenced by pushBufferToken(), pushToken(), and SCIPreadOpb().
| #define OPB_INIT_COEFSSIZE 8192 |
Definition at line 139 of file reader_opb.c.
Referenced by readCoefficients().
| #define OPB_MAX_INTSIZE -1 |
maximum allowed "intsize" (i.e. the number of bits required to represent the sum of absolute values of all integers that appear in a constraint or objective function) or -1 for unlimited
Definition at line 140 of file reader_opb.c.
Referenced by SCIPincludeReaderOpb().
| typedef enum OpbExpType OPBEXPTYPE |
Definition at line 160 of file reader_opb.c.
Definition at line 169 of file reader_opb.c.
| typedef struct OpbInput OPBINPUT |
Definition at line 196 of file reader_opb.c.
| enum OpbExpType |
Section in OPB File
| Enumerator | |
|---|---|
| OPB_EXP_NONE | |
| OPB_EXP_UNSIGNED | |
| OPB_EXP_SIGNED | |
Definition at line 154 of file reader_opb.c.
| enum OpbSense |
| Enumerator | |
|---|---|
| OPB_SENSE_NOTHING | |
| OPB_SENSE_LE | |
| OPB_SENSE_GE | |
| OPB_SENSE_EQ | |
Definition at line 162 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 205 of file reader_opb.c.
References assert(), NULL, SCIPerrorMessage, and TRUE.
Referenced by getVariableOrTerm(), readCoefficients(), and readConstraints().
returns whether a syntax error was detected
| opbinput | OPB reading data |
Definition at line 229 of file reader_opb.c.
References assert(), NULL, and SCIP_Bool.
Referenced by readCoefficients(), readConstraints(), and setObjective().
|
static |
returns whether the given character is a token delimiter
| c | input character |
Definition at line 240 of file reader_opb.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 261 of file reader_opb.c.
References c, FALSE, SCIP_Bool, and TRUE.
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 284 of file reader_opb.c.
References assert(), c, FALSE, NULL, OPB_EXP_NONE, OPB_EXP_SIGNED, OPB_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 |
| opbinput | OPB reading data |
Definition at line 328 of file reader_opb.c.
References assert(), commentchars, FALSE, i, NULL, SCIP_Bool, SCIP_CALL_ABORT, SCIPcalcMemGrowSize(), SCIPdebugMsg, SCIPfgets(), SCIPreallocBlockMemoryArray, and TRUE.
Referenced by getNextToken().
|
static |
swaps the addresses of two pointers
| pointer1 | first pointer |
| pointer2 | second pointer |
Definition at line 383 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 397 of file reader_opb.c.
References assert(), FALSE, getNextLine(), isDelimChar(), isTokenChar(), isTokenChar(), isValueChar(), NULL, 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 498 of file reader_opb.c.
References assert(), NULL, 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 511 of file reader_opb.c.
References assert(), NULL, OPB_MAX_PUSHEDTOKENS, and swapPointers().
Referenced by readCoefficients().
|
static |
swaps the current token with the token buffer
| opbinput | OPB reading data |
Definition at line 524 of file reader_opb.c.
References assert(), NULL, and 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 535 of file reader_opb.c.
References assert(), FALSE, NULL, SCIP_Bool, and TRUE.
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 549 of file reader_opb.c.
References assert(), FALSE, NULL, SCIP_Bool, and TRUE.
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 576 of file reader_opb.c.
References assert(), FALSE, NULL, SCIP_Bool, SCIP_Real, SCIPinfinity(), SCIPstrcasecmp(), 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 610 of file reader_opb.c.
References assert(), FALSE, NULL, OPB_SENSE_EQ, OPB_SENSE_GE, OPB_SENSE_LE, SCIP_Bool, 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 641 of file reader_opb.c.
References assert(), FALSE, NULL, SCIP_Bool, and TRUE.
Referenced by readCoefficients().
returns whether the current token is a value
| scip | SCIP data structure |
| opbinput | OPB reading data |
Definition at line 657 of file reader_opb.c.
References assert(), FALSE, NULL, SCIP_Bool, and TRUE.
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 673 of file reader_opb.c.
References NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARTYPE_BINARY, SCIPaddVar(), SCIPaddVarExactData(), SCIPcreateVar(), SCIPdebugMsg, SCIPgetBoolParam(), SCIPisExact(), SCIPreleaseVar(), and var.
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 709 of file reader_opb.c.
References assert(), createVariable(), FALSE, getNextToken(), isTokenChar(), NULL, nvars, pushToken(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPcalcMemGrowSize(), SCIPfindVar(), SCIPgetNegatedVar(), SCIPreallocBufferArray, syntaxError(), TRUE, var, and vars.
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 |
| lincoefssize | pointer to store the size of linvars/lincoefs arrays |
| 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) |
| termcoefssize | pointer to store the size of terms/termcoefs |
| 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 785 of file reader_opb.c.
References assert(), FALSE, getNextToken(), getVariableOrTerm(), hasError(), isEndingSoftConstraintWeight(), isEndLine(), isSense(), isSign(), isStartingSoftConstraintWeight(), isValue(), NULL, OPB_INIT_COEFSSIZE, pushBufferToken(), pushToken(), SCIP_Bool, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPallocBlockMemoryArray, SCIPallocBufferArray, SCIPcalcMemGrowSize(), SCIPdebugMsg, SCIPdebugMsgPrint, SCIPfeof(), SCIPfreeBufferArray, SCIPgetNConss(), SCIPgetNVars(), SCIPisIntegral(), SCIPisZero(), SCIPmemccpy(), SCIPreallocBlockMemoryArray, 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 |
| scale | objective scale |
| 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 1150 of file reader_opb.c.
References ABS, ARTIFICIALVARNAMEPREFIX, assert(), FALSE, hasError(), isEndLine(), NULL, nvars, obj, SCIP_CALL, SCIP_CALL_TERMINATE, SCIP_IMPLINTTYPE_STRONG, SCIP_MAXSTRLEN, SCIP_OBJSENSE_MAXIMIZE, SCIP_OKAY, SCIP_READERROR, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPaddCons(), SCIPaddOrigObjoffset(), SCIPaddOrigObjoffsetExact(), SCIPaddVar(), SCIPaddVarObj(), SCIPbuffer(), SCIPceil(), SCIPchgVarObjExact(), SCIPcreateConsAnd(), SCIPcreateVarImpl(), SCIPdebugAddSolVal, SCIPdebugGetSolVal, SCIPdebugPrintCons, SCIPerrorMessage, SCIPgetOrigObjoffset(), SCIPisExact(), SCIPisFeasEQ(), SCIPisFeasZero(), SCIPrationalAdd(), SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalMultReal(), SCIPrationalSetReal(), SCIPreleaseCons(), SCIPreleaseVar(), SCIPsnprintf(), SCIPvarGetNegationVar(), SCIPvarGetObjExact(), SCIPvarIsNegated(), TRUE, var, and vars.
Referenced by readConstraints().
|
static |
reads the constraints section
| scip | SCIP data structure |
| opbinput | OPB reading data |
| objscale | objective scale |
| nNonlinearConss | pointer to store number of nonlinear constraints |
Definition at line 1336 of file reader_opb.c.
References ABS, assert(), createVariable(), FALSE, getNextToken(), hasError(), i, INDICATORVARNAME, isEndLine(), isSense(), isSign(), isValue(), NULL, objscale, OPB_MAX_LINELEN, OPB_SENSE_EQ, OPB_SENSE_GE, OPB_SENSE_LE, OPB_SENSE_NOTHING, propagate, readCoefficients(), READER_NAME, SCIP_Bool, SCIP_CALL, SCIP_CALL_TERMINATE, SCIP_INVALIDDATA, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_READERROR, SCIP_Real, SCIPaddCons(), SCIPbuffer(), SCIPceil(), SCIPchgVarObj(), SCIPcreateConsExactLinear(), SCIPcreateConsLinear(), SCIPcreateConsPseudoboolean(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPerrorMessage, SCIPfreeBlockMemoryArray, SCIPfreeBlockMemoryArrayNull, SCIPgetBoolParam(), SCIPinfinity(), SCIPisExact(), SCIPisInfinity(), SCIPrationalCreateBuffer(), SCIPrationalCreateBufferArray(), SCIPrationalFreeBuffer(), SCIPrationalFreeBufferArray(), SCIPrationalSetReal(), SCIPreleaseCons(), SCIPsnprintf(), separate(), setObjective(), syntaxError(), and TRUE.
Referenced by readOPBFile().
|
static |
read the first comment line which usually contains information about (1) the max size of "and" products and (2) the "intsize" which represents the number of bits required to represent the sum of the absolute values of all integers that appear in any constraint or the objective
| scip | SCIP data structure |
| opbinput | OPB reading data |
| objscale | pointer to store objective scale |
| objoffset | pointer to store objective offset |
Definition at line 1637 of file reader_opb.c.
References assert(), commentchars, delimchars, NULL, objscale, SCIP_CALL_ABORT, SCIP_OKAY, SCIP_READERROR, SCIP_Real, SCIPcalcMemGrowSize(), SCIPdebugMsg, SCIPfgets(), and SCIPreallocBlockMemoryArray.
Referenced by readOPBFile().
|
static |
reads an OPB file
| scip | SCIP data structure |
| reader | the file reader itself |
| opbinput | OPB reading data |
| filename | name of the input file |
Definition at line 1753 of file reader_opb.c.
References assert(), FALSE, getCommentLineData(), hasError(), i, NULL, nvars, objscale, readConstraints(), SCIP_CALL, SCIP_CALL_TERMINATE, SCIP_INVALIDDATA, SCIP_NOFILE, SCIP_OKAY, SCIP_Real, SCIPaddCons(), SCIPaddOrigObjoffset(), SCIPallocBufferArray, SCIPbuffer(), SCIPceil(), SCIPcreateConsExactLinear(), SCIPcreateConsLinear(), SCIPcreateProb(), SCIPdebugPrintCons, SCIPerrorMessage, SCIPfclose(), SCIPfeof(), SCIPfopen(), SCIPfreeBufferArray, SCIPgetNVars(), SCIPgetVars(), SCIPinfinity(), SCIPinfoMessage(), SCIPisExact(), SCIPisZero(), SCIPprintSysError(), SCIPrationalCreateBuffer(), SCIPrationalCreateBufferArray(), SCIPrationalFreeBuffer(), SCIPrationalFreeBufferArray(), SCIPrationalSetNegInfinity(), SCIPrationalSetReal(), SCIPreaderGetData(), SCIPreleaseCons(), SCIPvarGetObj(), TOPCOSTCONSNAME, TRUE, and vars.
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 1893 of file reader_opb.c.
References assert(), NULL, nvars, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPdebugMsg, SCIPgetBinvarRepresentative(), SCIPgetNegatedVar(), SCIPisEQ(), SCIPisZero(), SCIPvarGetOrigvarSum(), and vars.
Referenced by computeAndConstraintInfos().
|
static |
transforms given variables, real scalars, and real constant to the corresponding active variables, real scalars, and real constant
| scip | SCIP data structure |
| vars | vars array to get active variables for |
| scalars | real 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 |
| varssize | pointer to size of variable array |
| constant | pointer to real constant c in linear sum a_1*x_1 + ... + a_n*x_n + c |
| transformed | transformed constraint? |
Definition at line 1957 of file reader_opb.c.
References assert(), NULL, nvars, scalars, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPgetProbvarLinearSum(), SCIPreallocBufferArray, SCIPvarGetOrigvarSum(), and vars.
Referenced by printLinearCons(), and printNonLinearCons().
|
static |
transforms given variables, exact scalars, and exact constant to the corresponding active variables, exact scalars, and exact constant
| scip | SCIP data structure |
| vars | vars array to get active variables for |
| scalars | exact 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 |
| varssize | pointer to size of variable array |
| constant | pointer to exact constant c in linear sum a_1*x_1 + ... + a_n*x_n + c |
| transformed | transformed constraint? |
Definition at line 2006 of file reader_opb.c.
References assert(), NULL, nvars, scalars, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPbuffer(), SCIPgetProbvarLinearSumExact(), SCIPrationalReallocBufferArray(), SCIPreallocBufferArray, SCIPvarGetOrigvarSumExact(), TRUE, and vars.
Referenced by printLinearConsExact().
|
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 2055 of file reader_opb.c.
References a, assert(), c, FALSE, getBinVarsRepresentatives(), NULL, r, SCIP_Bool, 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 2259 of file reader_opb.c.
References assert(), and NULL.
Referenced by printNLRow(), printRow(), printRowExact(), 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 2274 of file reader_opb.c.
References assert(), clearBuffer(), NULL, OPB_MAX_LINELEN, and SCIPinfoMessage().
Referenced by appendBuffer(), printNLRow(), printRow(), printRowExact(), 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 2297 of file reader_opb.c.
References assert(), NULL, OPB_MAX_LINELEN, and writeBuffer().
Referenced by printNLRow(), printRow(), printRowExact(), 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 |
| objoffset | objective offset from bound shifting and fixing |
| objscale | scalar applied to objective function; external objective value is extobj = objsense * objscale * (intobj + objoffset) |
| objoffsetexact | exact objective offset from bound shifting and fixing |
| objscaleexact | exact scalar applied to objective function; external objective value is extobjexact = objsense * objscaleexact * (intobjexact + objoffsetexact) |
| 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 2320 of file reader_opb.c.
References a, ABS, appendBuffer(), assert(), c, clearBuffer(), FALSE, INDICATORVARNAME, NULL, nvars, obj, objscale, OPB_MAX_LINELEN, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_Longint, SCIP_LONGINT_FORMAT, SCIP_LONGINT_MAX, SCIP_OBJSENSE_MAXIMIZE, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_NEGATED, SCIP_VARSTATUS_ORIGINAL, SCIPABORT, SCIPbuffer(), SCIPconsGetHdlr(), SCIPconshdlrGetConss(), SCIPconshdlrGetName(), SCIPconshdlrGetNConss(), SCIPdebugMsg, SCIPerrorMessage, SCIPfindCons(), SCIPfindConshdlr(), SCIPgetCapacityKnapsack(), SCIPgetMessagehdlr(), SCIPgetNVarsExactLinear(), SCIPgetNVarsKnapsack(), SCIPgetNVarsLinear(), SCIPgetNVarsSetppc(), SCIPgetRhsExactLinear(), SCIPgetRhsLinear(), SCIPgetVarsExactLinear(), SCIPgetVarsKnapsack(), SCIPgetVarsLinear(), SCIPgetVarsSetppc(), SCIPinfoMessage(), SCIPisExact(), SCIPisIntegral(), SCIPisZero(), SCIPrationalCreateBuffer(), SCIPrationalDivReal(), SCIPrationalFreeBuffer(), SCIPrationalIsNegative(), SCIPrationalMessage(), SCIPrationalMultReal(), SCIPrationalToString(), SCIPround(), SCIPsnprintf(), SCIPsortedvecFindPtr(), SCIPvarGetIndex(), SCIPvarGetName(), SCIPvarGetNegationVar(), SCIPvarGetObj(), SCIPvarGetStatus(), SCIPvarIsNegated(), TOPCOSTCONSNAME, TRUE, var, vars, w, 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 real values |
| nvars | number of variables |
| lhs | real 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 integral weight, otherwise 0 |
| mult | integral multiplier for the coefficients |
| multisymbol | the multiplication symbol to use between coefficient and variable |
Definition at line 2770 of file reader_opb.c.
References a, ABS, appendBuffer(), assert(), clearBuffer(), NULL, nvars, OPB_MAX_LINELEN, SCIP_Bool, SCIP_INVALIDDATA, SCIP_Longint, SCIP_LONGINT_FORMAT, SCIP_LONGINT_MAX, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, SCIPinfoMessage(), SCIPisIntegral(), SCIPround(), SCIPsnprintf(), SCIPsortedvecFindPtr(), SCIPvarGetIndex(), SCIPvarGetName(), SCIPvarGetNegatedVar(), SCIPvarIsNegated(), var, vars, and writeBuffer().
Referenced by printNonLinearCons().
|
static |
prints given real 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 real coefficient values (or NULL if all coefficient values are 1) |
| nvars | number of variables |
| lhs | real left hand side |
| rhs | real 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 integral weight, otherwise 0 |
| transformed | transformed constraint? |
| multisymbol | the multiplication symbol to use between coefficient and variable |
Definition at line 2943 of file reader_opb.c.
References assert(), getActiveVariables(), NULL, nvars, printNLRow(), SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPisEQ(), SCIPisInfinity(), and vars.
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 real values |
| nvars | number of variables |
| lhs | real left hand side |
| weight | if we found a soft constraint this is the integral weight, otherwise 0 |
| mult | integral multiplier for the coefficients |
| multisymbol | the multiplication symbol to use between coefficient and variable |
Definition at line 3040 of file reader_opb.c.
References ABS, appendBuffer(), assert(), clearBuffer(), INDICATORVARNAME, NULL, nvars, OPB_MAX_LINELEN, SCIP_Bool, SCIP_INVALIDDATA, SCIP_Longint, SCIP_LONGINT_FORMAT, SCIP_LONGINT_MAX, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, SCIPinfoMessage(), SCIPisIntegral(), SCIPround(), SCIPsnprintf(), SCIPvarGetName(), SCIPvarGetNegatedVar(), SCIPvarIsNegated(), var, vars, and writeBuffer().
Referenced by printLinearCons().
|
static |
| scip | SCIP data structure |
| file | output file (or NULL for standard output) |
| type | row type ("=" or ">=") |
| vars | array of variables |
| vals | array of exact values |
| nvars | number of variables |
| lhs | exact left hand side |
| weight | if we found a soft constraint this is the exact weight, otherwise 0 |
| mult | exact multiplier for the coefficients |
| multisymbol | the multiplication symbol to use between coefficient and variable |
Definition at line 3162 of file reader_opb.c.
References appendBuffer(), assert(), clearBuffer(), INDICATORVARNAME, NULL, nvars, OPB_MAX_LINELEN, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPbuffer(), SCIPerrorMessage, SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsNegative(), SCIPrationalIsZero(), SCIPrationalMult(), SCIPrationalToString(), SCIPsnprintf(), SCIPvarGetName(), SCIPvarGetNegatedVar(), SCIPvarIsNegated(), var, vars, and writeBuffer().
Referenced by printLinearConsExact().
|
static |
prints given real 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 real coefficient values (or NULL if all coefficient values are 1) |
| nvars | number of variables |
| lhs | real left hand side |
| rhs | real right hand side |
| weight | if we found a soft constraint this is the integral weight, otherwise 0 |
| transformed | transformed constraint? |
| multisymbol | the multiplication symbol to use between coefficient and variable |
Definition at line 3266 of file reader_opb.c.
References assert(), getActiveVariables(), NULL, nvars, printRow(), SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPduplicateBufferArray, SCIPfreeBufferArrayNull, SCIPisEQ(), SCIPisInfinity(), and vars.
Referenced by writeOpbConstraints().
|
static |
prints given exact 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 exact coefficient values (or NULL if all coefficient values are 1) |
| nvars | number of variables |
| lhs | exact left hand side |
| rhs | exact right hand side |
| weight | if we found a soft constraint this is the exact weight, otherwise 0 |
| transformed | transformed constraint? |
| multisymbol | the multiplication symbol to use between coefficient and variable |
Definition at line 3357 of file reader_opb.c.
References assert(), getActiveVariablesExact(), NULL, nvars, printRowExact(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPbuffer(), SCIPduplicateBufferArray, SCIPfreeBufferArrayNull, SCIPrationalCopyBufferArray(), SCIPrationalCreateBuffer(), SCIPrationalCreateBufferArray(), SCIPrationalDiff(), SCIPrationalFreeBuffer(), SCIPrationalFreeBufferArray(), SCIPrationalIsEQ(), SCIPrationalIsInfinity(), SCIPrationalIsNegInfinity(), SCIPrationalSetReal(), and vars.
Referenced by writeOpbConstraints().
|
static |
determine total number of split linear and indicator constraints
| scip | SCIP data structure |
| conss | array with constraints of the problem |
| nconss | number of constraints in the problem |
| nlinearconss | pointer to store the total number of split linear constraints |
| nindicatorconss | pointer to store the total number of indicator constraints |
Definition at line 3459 of file reader_opb.c.
References assert(), c, NULL, SCIP_Bool, SCIP_Real, SCIPconsGetHdlr(), SCIPconsGetLhs(), SCIPconsGetLhsExact(), SCIPconsGetRhs(), SCIPconsGetRhsExact(), SCIPconshdlrGetName(), SCIPgetIndVarPseudoboolean(), SCIPisEQ(), SCIPisExact(), SCIPisInfinity(), SCIPrationalIsEQ(), SCIPrationalIsInfinity(), and SCIPrationalIsNegInfinity().
Referenced by writeOpb().
|
static |
write constraints
| 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 3567 of file reader_opb.c.
References assert(), c, FALSE, NULL, nvars, printLinearCons(), printLinearConsExact(), printNonLinearCons(), 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_CONTINUOUS, SCIPallocBufferArray, SCIPblkmem(), SCIPbuffer(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetConss(), SCIPconshdlrGetName(), SCIPconshdlrGetNConss(), SCIPconsIsEnabled(), SCIPconsIsTransformed(), SCIPduplicateBufferArray, SCIPerrorMessage, SCIPfindConshdlr(), SCIPfreeBufferArray, SCIPgetBinaryVarIndicator(), SCIPgetCapacityKnapsack(), SCIPgetIndVarPseudoboolean(), SCIPgetLhsExactLinear(), SCIPgetLhsLinear(), SCIPgetLhsVarbound(), SCIPgetLinearConsIndicator(), SCIPgetLinearConsPseudoboolean(), SCIPgetNVarsExactLinear(), SCIPgetNVarsKnapsack(), SCIPgetNVarsLinear(), SCIPgetNVarsLogicor(), SCIPgetNVarsSetppc(), SCIPgetRhsExactLinear(), SCIPgetRhsLinear(), SCIPgetRhsVarbound(), SCIPgetSlackVarIndicator(), SCIPgetTypeSetppc(), SCIPgetValsExactLinear(), SCIPgetValsLinear(), SCIPgetVarsExactLinear(), SCIPgetVarsKnapsack(), SCIPgetVarsLinear(), SCIPgetVarsLogicor(), SCIPgetVarsSetppc(), SCIPgetVarVarbound(), SCIPgetVbdcoefVarbound(), SCIPgetVbdvarVarbound(), SCIPgetWeightsKnapsack(), SCIPhashmapCreate(), SCIPhashmapFree(), SCIPhashmapGetImage(), SCIPhashmapInsert(), SCIPinfinity(), SCIPinfoMessage(), SCIPisExact(), SCIPprintCons(), SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsZero(), SCIPrationalSetRational(), SCIPrationalSetReal(), SCIPround(), SCIPvarGetNegationVar(), SCIPvarGetObj(), SCIPvarGetObjExact(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPwarningMessage(), TOPCOSTCONSNAME, TRUE, and vars.
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 4127 of file reader_opb.c.
References appendBuffer(), assert(), clearBuffer(), FALSE, NULL, nvars, OPB_MAX_LINELEN, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPgetBinvarRepresentative(), SCIPhashtableExists(), SCIPhashtableInsert(), SCIPisFeasIntegral(), SCIPsnprintf(), SCIPvarGetLbLocal(), SCIPvarGetLbOriginal(), SCIPvarGetName(), SCIPvarGetNegationVar(), SCIPvarGetUbLocal(), SCIPvarGetUbOriginal(), var, vars, 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 4201 of file reader_opb.c.
References a, appendBuffer(), assert(), clearBuffer(), FALSE, NULL, OPB_MAX_LINELEN, r, SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_LONGINT_FORMAT, SCIP_OKAY, SCIP_Real, SCIPgetBinvarRepresentative(), SCIPhashtableInsert(), SCIPisFeasIntegral(), SCIPsnprintf(), SCIPsortedvecFindPtr(), SCIPvarGetLbLocal(), SCIPvarGetLbOriginal(), SCIPvarGetName(), SCIPvarGetNegationVar(), SCIPvarGetUbLocal(), SCIPvarGetUbOriginal(), SCIPvarIsActive(), SCIPvarIsNegated(), TRUE, var, 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 |
| objoffset | objective offset from bound shifting and fixing |
| objscale | scalar applied to objective function; external objective value is extobj = objsense * objscale * (intobj + objoffset) |
| objoffsetexact | exact objective offset from bound shifting and fixing |
| objscaleexact | exact scalar applied to objective function; external objective value is extobjexact = objsense * objscaleexact * (intobjexact + objoffsetexact) |
| 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 4466 of file reader_opb.c.
References assert(), determineTotalNumberLinearConss(), NULL, nvars, objscale, OPB_MAX_LINELEN, READER_NAME, result, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_SUCCESS, SCIPblkmem(), SCIPgetBoolParam(), SCIPhashtableCreate(), SCIPhashtableFree(), SCIPinfoMessage(), SCIPsnprintf(), vars, writeOpbConstraints(), writeOpbFixedVars(), writeOpbObjective(), and writeOpbRelevantAnds().
Referenced by SCIPwriteOpb().
|
static |
copy method for reader plugins (called when SCIP copies plugins)
Definition at line 4827 of file reader_opb.c.
References assert(), NULL, READER_NAME, SCIP_CALL, SCIP_OKAY, SCIPincludeReaderOpb(), and SCIPreaderGetName().
|
static |
destructor of reader to free user data (called when SCIP is exiting)
Definition at line 4842 of file reader_opb.c.
References assert(), READER_NAME, SCIP_OKAY, SCIPfreeBlockMemory, SCIPreaderGetData(), and SCIPreaderGetName().
|
static |
problem reading method of reader
Definition at line 4856 of file reader_opb.c.
References result, SCIP_CALL, SCIP_OKAY, and SCIPreadOpb().
|
static |
problem writing method of reader
Definition at line 4867 of file reader_opb.c.
References assert(), NULL, nvars, objscale, READER_NAME, result, SCIP_CALL, SCIP_OKAY, SCIP_WRITEERROR, SCIPerrorMessage, SCIPisExact(), SCIPreaderGetName(), SCIPwriteOpb(), and vars.
|
static |
Definition at line 198 of file reader_opb.c.