Detailed Description
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_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/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_solvingstats.h"
#include "scip/scip_var.h"
#include <stdlib.h>
#include <string.h>
#include <strings.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, 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 | getMaxAndConsDim (SCIP *scip, OPBINPUT *opbinput, SCIP_Real *objscale, SCIP_Real *objoffset) |
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 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 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 [] = "*" |
Macro Definition Documentation
◆ READER_NAME
#define READER_NAME "opbreader" |
Definition at line 126 of file reader_opb.c.
◆ READER_DESC
#define READER_DESC "file reader for pseudo-Boolean problem in opb format" |
Definition at line 127 of file reader_opb.c.
◆ READER_EXTENSION
#define READER_EXTENSION "opb" |
Definition at line 128 of file reader_opb.c.
◆ GENCONSNAMES
#define GENCONSNAMES TRUE /* remove if no constraint names should be generated */ |
Definition at line 130 of file reader_opb.c.
◆ LINEAROBJECTIVE
#define LINEAROBJECTIVE |
Definition at line 131 of file reader_opb.c.
◆ INDICATORVARNAME
#define INDICATORVARNAME "indicatorvar" /* standard part of name for all indicator variables */ |
Definition at line 133 of file reader_opb.c.
◆ INDICATORSLACKVARNAME
#define INDICATORSLACKVARNAME "indslack" /* standard part of name for all indicator slack variables; should be the same in cons_indicator */ |
Definition at line 134 of file reader_opb.c.
◆ TOPCOSTCONSNAME
#define TOPCOSTCONSNAME "topcostcons" /* standard name for artificial topcost constraint in wbo problems */ |
Definition at line 135 of file reader_opb.c.
◆ OPB_MAX_LINELEN
#define OPB_MAX_LINELEN 65536 |
size of the line buffer for reading or writing
Definition at line 140 of file reader_opb.c.
◆ OPB_MAX_PUSHEDTOKENS
#define OPB_MAX_PUSHEDTOKENS 2 |
Definition at line 141 of file reader_opb.c.
◆ OPB_INIT_COEFSSIZE
#define OPB_INIT_COEFSSIZE 8192 |
Definition at line 142 of file reader_opb.c.
Typedef Documentation
◆ OPBEXPTYPE
typedef enum OpbExpType OPBEXPTYPE |
Definition at line 151 of file reader_opb.c.
◆ OPBSENSE
Definition at line 160 of file reader_opb.c.
◆ OPBINPUT
typedef struct OpbInput OPBINPUT |
Definition at line 186 of file reader_opb.c.
Enumeration Type Documentation
◆ OpbExpType
enum OpbExpType |
Section in OPB File
Enumerator | |
---|---|
OPB_EXP_NONE | |
OPB_EXP_UNSIGNED | |
OPB_EXP_SIGNED |
Definition at line 145 of file reader_opb.c.
◆ OpbSense
enum OpbSense |
Enumerator | |
---|---|
OPB_SENSE_NOTHING | |
OPB_SENSE_LE | |
OPB_SENSE_GE | |
OPB_SENSE_EQ |
Definition at line 153 of file reader_opb.c.
Function Documentation
◆ syntaxError()
issues an error message and marks the OPB data to have errors
- Parameters
-
scip SCIP data structure opbinput OPB reading data msg error message
Definition at line 195 of file reader_opb.c.
References NULL, SCIPerrorMessage, and TRUE.
Referenced by getVariableOrTerm(), readCoefficients(), and readConstraints().
◆ hasError()
returns whether a syntax error was detected
- Parameters
-
opbinput OPB reading data
Definition at line 219 of file reader_opb.c.
References NULL.
Referenced by readCoefficients(), readConstraints(), readOPBFile(), and setObjective().
◆ isDelimChar()
|
static |
returns whether the given character is a token delimiter
- Parameters
-
c input character
Definition at line 230 of file reader_opb.c.
Referenced by getNextToken().
◆ isTokenChar()
|
static |
returns whether the given character is a single token
- Parameters
-
c input character
Definition at line 251 of file reader_opb.c.
Referenced by getNextToken(), and getVariableOrTerm().
◆ isValueChar()
|
static |
returns whether the current character is member of a value string
- Parameters
-
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 274 of file reader_opb.c.
References FALSE, NULL, OPB_EXP_NONE, OPB_EXP_SIGNED, OPB_EXP_UNSIGNED, and TRUE.
Referenced by getNextToken().
◆ getNextLine()
reads the next line from the input file into the line buffer; skips comments; returns whether a line could be read
- Parameters
-
scip SCIP data structure opbinput OPB reading data
Definition at line 318 of file reader_opb.c.
References commentchars, FALSE, NULL, SCIP_CALL_ABORT, SCIPcalcMemGrowSize(), SCIPdebugMsg, SCIPfgets(), SCIPreallocBlockMemoryArray, and TRUE.
Referenced by getNextToken().
◆ swapPointers()
|
static |
swaps the addresses of two pointers
- Parameters
-
pointer1 first pointer pointer2 second pointer
Definition at line 373 of file reader_opb.c.
Referenced by getNextToken(), pushBufferToken(), pushToken(), and swapTokenBuffer().
◆ getNextToken()
reads the next token from the input file into the token buffer; returns whether a token was read
- Parameters
-
scip SCIP data structure opbinput OPB reading data
Definition at line 387 of file reader_opb.c.
References FALSE, getNextLine(), isDelimChar(), isTokenChar(), isValueChar(), NULL, OPB_EXP_NONE, OPB_MAX_LINELEN, SCIP_Bool, SCIPdebugMsg, swapPointers(), and TRUE.
Referenced by getVariableOrTerm(), readCoefficients(), and readConstraints().
◆ pushToken()
|
static |
puts the current token on the token stack, such that it is read at the next call to getNextToken()
- Parameters
-
opbinput OPB reading data
Definition at line 488 of file reader_opb.c.
References NULL, OPB_MAX_PUSHEDTOKENS, and swapPointers().
Referenced by getVariableOrTerm(), and readCoefficients().
◆ pushBufferToken()
|
static |
puts the buffered token on the token stack, such that it is read at the next call to getNextToken()
- Parameters
-
opbinput OPB reading data
Definition at line 501 of file reader_opb.c.
References NULL, OPB_MAX_PUSHEDTOKENS, and swapPointers().
Referenced by readCoefficients().
◆ swapTokenBuffer()
|
static |
swaps the current token with the token buffer
- Parameters
-
opbinput OPB reading data
Definition at line 514 of file reader_opb.c.
References NULL, and swapPointers().
Referenced by readCoefficients().
◆ isEndLine()
checks whether the current token is a section identifier, and if yes, switches to the corresponding section
- Parameters
-
opbinput OPB reading data
Definition at line 525 of file reader_opb.c.
References FALSE, NULL, and TRUE.
Referenced by readCoefficients(), readConstraints(), and setObjective().
◆ isSign()
returns whether the current token is a sign
- Parameters
-
opbinput OPB reading data sign pointer to update the sign
Definition at line 539 of file reader_opb.c.
References FALSE, NULL, and TRUE.
Referenced by readCoefficients(), and readConstraints().
◆ isValue()
returns whether the current token is a value
- Parameters
-
scip SCIP data structure opbinput OPB reading data value pointer to store the value (unchanged, if token is no value)
Definition at line 566 of file reader_opb.c.
References FALSE, NULL, SCIPinfinity(), and TRUE.
Referenced by readCoefficients(), and readConstraints().
◆ isSense()
returns whether the current token is an equation sense
- Parameters
-
opbinput OPB reading data sense pointer to store the equation sense, or NULL
Definition at line 600 of file reader_opb.c.
References FALSE, NULL, OPB_SENSE_EQ, OPB_SENSE_GE, OPB_SENSE_LE, and TRUE.
Referenced by readCoefficients(), and readConstraints().
◆ isStartingSoftConstraintWeight()
returns whether the current token is a value
- Parameters
-
scip SCIP data structure opbinput OPB reading data
Definition at line 631 of file reader_opb.c.
References FALSE, NULL, and TRUE.
Referenced by readCoefficients().
◆ isEndingSoftConstraintWeight()
returns whether the current token is a value
- Parameters
-
scip SCIP data structure opbinput OPB reading data
Definition at line 647 of file reader_opb.c.
References FALSE, NULL, and TRUE.
Referenced by readCoefficients().
◆ createVariable()
|
static |
create binary variable with given name
- Parameters
-
scip SCIP data structure var pointer to store the variable name name for the variable
Definition at line 663 of file reader_opb.c.
References NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARTYPE_BINARY, SCIPaddVar(), SCIPcreateVar(), SCIPdebugMsg, SCIPgetBoolParam(), and SCIPreleaseVar().
Referenced by getVariableOrTerm(), and readConstraints().
◆ getVariableOrTerm()
|
static |
returns the variable with the given name, or creates a new variable if it does not exist
- Parameters
-
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 695 of file reader_opb.c.
References createVariable(), FALSE, getNextToken(), isTokenChar(), NULL, pushToken(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPcalcMemGrowSize(), SCIPfindVar(), SCIPgetNegatedVar(), SCIPreallocBufferArray, syntaxError(), and TRUE.
Referenced by readCoefficients().
◆ readCoefficients()
|
static |
reads an objective or constraint with name and coefficients
- Parameters
-
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 771 of file reader_opb.c.
References 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().
◆ setObjective()
|
static |
set the objective section
- Parameters
-
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 1136 of file reader_opb.c.
References ARTIFICIALVARNAMEPREFIX, FALSE, hasError(), isEndLine(), NULL, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OBJSENSE_MAXIMIZE, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_INTEGER, SCIPaddCons(), SCIPaddOrigObjoffset(), SCIPaddVar(), SCIPaddVarObj(), SCIPchgVarBranchPriority(), SCIPcreateConsAnd(), SCIPcreateConsPseudoboolean(), SCIPcreateVar(), SCIPdebugAddSolVal, SCIPdebugGetSolVal, SCIPdebugPrintCons, SCIPisFeasEQ(), SCIPisFeasGE(), SCIPisFeasLE(), SCIPisFeasZero(), SCIPreleaseCons(), SCIPreleaseVar(), SCIPsnprintf(), SCIPvarGetNegationVar(), SCIPvarIsNegated(), and TRUE.
Referenced by readConstraints().
◆ readConstraints()
|
static |
reads the constraints section
- Parameters
-
scip SCIP data structure opbinput OPB reading data objscale objective scale nNonlinearConss pointer to store number of nonlinear constraints
Definition at line 1345 of file reader_opb.c.
References createVariable(), FALSE, getNextToken(), hasError(), INDICATORVARNAME, isEndLine(), isSense(), isSign(), isValue(), NULL, 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, SCIPfreeBlockMemoryArray, SCIPfreeBlockMemoryArrayNull, SCIPgetBoolParam(), SCIPinfinity(), SCIPisInfinity(), SCIPreleaseCons(), SCIPsnprintf(), setObjective(), syntaxError(), and TRUE.
Referenced by readOPBFile().
◆ getMaxAndConsDim()
|
static |
tries to read the first comment line which usually contains information about the max size of "and" products
- Parameters
-
scip SCIP data structure opbinput OPB reading data objscale pointer to store objective scale objoffset pointer to store objective offset
Definition at line 1582 of file reader_opb.c.
References commentchars, delimchars, FALSE, NULL, SCIP_Bool, SCIP_CALL_ABORT, SCIP_OKAY, SCIP_READERROR, SCIPcalcMemGrowSize(), SCIPdebugMsg, SCIPfeof(), SCIPfgets(), SCIPreallocBlockMemoryArray, and TRUE.
Referenced by readOPBFile().
◆ readOPBFile()
|
static |
reads an OPB file
- Parameters
-
scip SCIP data structure opbinput OPB reading data filename name of the input file
Definition at line 1699 of file reader_opb.c.
References FALSE, getMaxAndConsDim(), hasError(), NULL, readConstraints(), SCIP_CALL, SCIP_Longint, SCIP_NOFILE, SCIP_OKAY, SCIP_Real, SCIPaddCons(), SCIPaddOrigObjoffset(), SCIPallocBufferArray, SCIPcreateConsLinear(), SCIPcreateProb(), SCIPdebugPrintCons, SCIPerrorMessage, SCIPfclose(), SCIPfeof(), SCIPfloor(), SCIPfopen(), SCIPfreeBufferArray, SCIPgetNVars(), SCIPgetVars(), SCIPinfinity(), SCIPisIntegral(), SCIPisZero(), SCIPprintSysError(), SCIPreleaseCons(), SCIPvarGetObj(), TOPCOSTCONSNAME, and TRUE.
Referenced by SCIPreadOpb().
◆ getBinVarsRepresentatives()
|
static |
transforms given and constraint variables to the corresponding active or negated variables
- Parameters
-
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 1803 of file reader_opb.c.
References NULL, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPdebugMsg, SCIPgetBinvarRepresentative(), SCIPgetNegatedVar(), SCIPisEQ(), SCIPisZero(), and SCIPvarGetOrigvarSum().
Referenced by computeAndConstraintInfos().
◆ getActiveVariables()
|
static |
transforms given variables, scalars, and constant to the corresponding active variables, scalars, and constant
- Parameters
-
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 1867 of file reader_opb.c.
References NULL, scalars, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPgetProbvarLinearSum(), SCIPreallocBufferArray, SCIPvarGetOrigvarSum(), and TRUE.
Referenced by printLinearCons(), and printNonLinearCons().
◆ computeAndConstraintInfos()
|
static |
- Parameters
-
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 1912 of file reader_opb.c.
References a, FALSE, getBinVarsRepresentatives(), NULL, r, 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.
◆ clearBuffer()
|
static |
clears the given line buffer
- Parameters
-
linebuffer line linecnt number of characters in line
Definition at line 2116 of file reader_opb.c.
References NULL.
Referenced by printNLRow(), printRow(), writeBuffer(), writeOpbFixedVars(), writeOpbObjective(), and writeOpbRelevantAnds().
◆ writeBuffer()
|
static |
ends the given line with '\0' and prints it to the given file stream
- Parameters
-
scip SCIP data structure file output file (or NULL for standard output) linebuffer line linecnt number of characters in line
Definition at line 2131 of file reader_opb.c.
References clearBuffer(), NULL, OPB_MAX_LINELEN, and SCIPinfoMessage().
Referenced by appendBuffer(), printNLRow(), printRow(), writeOpbFixedVars(), writeOpbObjective(), and writeOpbRelevantAnds().
◆ appendBuffer()
|
static |
appends extension to line and prints it to the give file stream if the line buffer get full
- Parameters
-
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 2154 of file reader_opb.c.
References NULL, OPB_MAX_LINELEN, and writeBuffer().
Referenced by printNLRow(), printRow(), writeOpbFixedVars(), writeOpbObjective(), and writeOpbRelevantAnds().
◆ writeOpbObjective()
|
static |
write objective function
- Parameters
-
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 2177 of file reader_opb.c.
References a, appendBuffer(), clearBuffer(), FALSE, INDICATORVARNAME, NULL, OPB_MAX_LINELEN, SCIP_Bool, SCIP_INVALIDDATA, SCIP_Longint, SCIP_LONGINT_FORMAT, SCIP_LONGINT_MAX, SCIP_OBJSENSE_MAXIMIZE, SCIP_OKAY, SCIP_Real, 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, w, and writeBuffer().
Referenced by writeOpb().
◆ printNLRow()
|
static |
- Parameters
-
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 2549 of file reader_opb.c.
References a, ABS, appendBuffer(), clearBuffer(), NULL, OPB_MAX_LINELEN, SCIP_Bool, SCIP_INVALIDDATA, SCIP_Longint, SCIP_LONGINT_FORMAT, SCIP_LONGINT_MAX, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, SCIPinfoMessage(), SCIPisIntegral(), SCIPisZero(), SCIPround(), SCIPsnprintf(), SCIPsortedvecFindPtr(), SCIPvarGetIndex(), SCIPvarGetName(), SCIPvarGetNegationVar(), SCIPvarIsNegated(), and writeBuffer().
Referenced by printNonLinearCons().
◆ printNonLinearCons()
|
static |
prints given maybe non-linear constraint information in OPB format to file stream
- Parameters
-
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 2683 of file reader_opb.c.
References getActiveVariables(), NULL, printNLRow(), SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPisEQ(), and SCIPisInfinity().
Referenced by writeOpbConstraints().
◆ printRow()
|
static |
- Parameters
-
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 2786 of file reader_opb.c.
References ABS, appendBuffer(), clearBuffer(), INDICATORVARNAME, NULL, OPB_MAX_LINELEN, SCIP_Bool, SCIP_INVALIDDATA, SCIP_Longint, SCIP_LONGINT_FORMAT, SCIP_LONGINT_MAX, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, SCIPinfoMessage(), SCIPisIntegral(), SCIPisZero(), SCIPround(), SCIPsnprintf(), SCIPvarGetName(), SCIPvarGetNegationVar(), SCIPvarIsNegated(), and writeBuffer().
Referenced by printLinearCons().
◆ printLinearCons()
|
static |
prints given linear constraint information in OPB format to file stream
- Parameters
-
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 2881 of file reader_opb.c.
References getActiveVariables(), NULL, printRow(), SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPisEQ(), and SCIPisInfinity().
Referenced by writeOpbConstraints().
◆ determineTotalNumberLinearConss()
|
static |
determine total number of split linear and indicator constraints
- Parameters
-
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 2975 of file reader_opb.c.
References NULL, SCIP_Bool, SCIP_Real, SCIPconsGetHdlr(), SCIPconsGetLhs(), SCIPconsGetRhs(), SCIPconshdlrGetName(), SCIPgetIndVarPseudoboolean(), SCIPisEQ(), and SCIPisInfinity().
Referenced by writeOpb().
◆ writeOpbConstraints()
|
static |
write constraints
- Parameters
-
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 3053 of file reader_opb.c.
References FALSE, NULL, printLinearCons(), 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_BINARY, SCIPallocBufferArray, SCIPblkmem(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetConss(), SCIPconshdlrGetName(), SCIPconshdlrGetNConss(), SCIPconsIsEnabled(), SCIPconsIsTransformed(), SCIPduplicateBufferArray, SCIPerrorMessage, SCIPfindConshdlr(), SCIPfreeBufferArray, SCIPgetBinaryVarIndicator(), SCIPgetCapacityKnapsack(), SCIPgetIndVarPseudoboolean(), SCIPgetLhsLinear(), SCIPgetLhsVarbound(), SCIPgetLinearConsIndicator(), SCIPgetLinearConsPseudoboolean(), SCIPgetNVarsKnapsack(), SCIPgetNVarsLinear(), SCIPgetNVarsLogicor(), SCIPgetNVarsSetppc(), SCIPgetRhsLinear(), SCIPgetRhsVarbound(), SCIPgetSlackVarIndicator(), SCIPgetTypeSetppc(), SCIPgetValsLinear(), SCIPgetVarsKnapsack(), SCIPgetVarsLinear(), SCIPgetVarsLogicor(), SCIPgetVarsSetppc(), SCIPgetVarVarbound(), SCIPgetVbdcoefVarbound(), SCIPgetVbdvarVarbound(), SCIPgetWeightsKnapsack(), SCIPhashmapCreate(), SCIPhashmapFree(), SCIPhashmapGetImage(), SCIPhashmapInsert(), SCIPinfinity(), SCIPinfoMessage(), SCIPprintCons(), SCIPround(), SCIPvarGetNegationVar(), SCIPvarGetObj(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPwarningMessage(), TOPCOSTCONSNAME, and TRUE.
Referenced by writeOpb().
◆ writeOpbFixedVars()
|
static |
- Parameters
-
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 3581 of file reader_opb.c.
References appendBuffer(), clearBuffer(), FALSE, NULL, 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().
◆ writeOpbRelevantAnds()
|
static |
- Parameters
-
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 3655 of file reader_opb.c.
References a, appendBuffer(), 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, and writeBuffer().
Referenced by writeOpb().
◆ writeOpb()
|
static |
- Parameters
-
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 3920 of file reader_opb.c.
References determineTotalNumberLinearConss(), NULL, OPB_MAX_LINELEN, READER_NAME, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_SUCCESS, SCIPblkmem(), SCIPgetBoolParam(), SCIPhashtableCreate(), SCIPhashtableFree(), SCIPinfoMessage(), SCIPsnprintf(), writeOpbConstraints(), writeOpbFixedVars(), writeOpbObjective(), and writeOpbRelevantAnds().
◆ SCIP_DECL_READERCOPY()
|
static |
copy method for reader plugins (called when SCIP copies plugins)
Definition at line 4261 of file reader_opb.c.
References NULL, READER_NAME, SCIP_CALL, SCIP_OKAY, SCIPincludeReaderOpb(), and SCIPreaderGetName().
◆ SCIP_DECL_READERREAD()
|
static |
problem reading method of reader
Definition at line 4276 of file reader_opb.c.
References SCIP_CALL, SCIP_OKAY, and SCIPreadOpb().
◆ SCIP_DECL_READERWRITE()
|
static |
problem writing method of reader
Definition at line 4287 of file reader_opb.c.
References SCIP_CALL, SCIP_OKAY, and SCIPwriteOpb().
Variable Documentation
◆ commentchars
|
static |
Definition at line 188 of file reader_opb.c.
Referenced by getMaxAndConsDim(), and getNextLine().