Scippy

    SCIP

    Solving Constraint Integer Programs

    Detailed Description

    pseudo-Boolean file reader (opb format)

    Author
    Stefan Heinz
    Michael Winkler
    Dominik Kamp

    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
     

    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 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 [] = "*"
     

    Macro Definition Documentation

    ◆ READER_NAME

    #define READER_NAME   "opbreader"

    Definition at line 125 of file reader_opb.c.

    ◆ READER_DESC

    #define READER_DESC   "file reader for pseudo-Boolean problem in opb format"

    Definition at line 126 of file reader_opb.c.

    ◆ READER_EXTENSION

    #define READER_EXTENSION   "opb"

    Definition at line 127 of file reader_opb.c.

    ◆ GENCONSNAMES

    #define GENCONSNAMES   TRUE /* remove if no constraint names should be generated */

    Definition at line 129 of file reader_opb.c.

    ◆ INDICATORVARNAME

    #define INDICATORVARNAME   "indicatorvar" /* standard part of name for all indicator variables */

    Definition at line 130 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 131 of file reader_opb.c.

    ◆ TOPCOSTCONSNAME

    #define TOPCOSTCONSNAME   "topcostcons" /* standard name for artificial topcost constraint in wbo problems */

    Definition at line 132 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 137 of file reader_opb.c.

    ◆ OPB_MAX_PUSHEDTOKENS

    #define OPB_MAX_PUSHEDTOKENS   2

    Definition at line 138 of file reader_opb.c.

    ◆ OPB_INIT_COEFSSIZE

    #define OPB_INIT_COEFSSIZE   8192

    Definition at line 139 of file reader_opb.c.

    ◆ OPB_MAX_INTSIZE

    #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 142 of file reader_opb.c.

    Typedef Documentation

    ◆ OPBEXPTYPE

    typedef enum OpbExpType OPBEXPTYPE

    Definition at line 160 of file reader_opb.c.

    ◆ OPBSENSE

    typedef enum OpbSense OPBSENSE

    Definition at line 169 of file reader_opb.c.

    ◆ OPBINPUT

    typedef struct OpbInput OPBINPUT

    Definition at line 196 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 154 of file reader_opb.c.

    ◆ OpbSense

    enum OpbSense
    Enumerator
    OPB_SENSE_NOTHING 
    OPB_SENSE_LE 
    OPB_SENSE_GE 
    OPB_SENSE_EQ 

    Definition at line 162 of file reader_opb.c.

    Function Documentation

    ◆ syntaxError()

    static void syntaxError ( SCIP scip,
    OPBINPUT opbinput,
    const char *  msg 
    )
    static

    issues an error message and marks the OPB data to have errors

    Parameters
    scipSCIP data structure
    opbinputOPB reading data
    msgerror message

    Definition at line 205 of file reader_opb.c.

    References NULL, SCIPerrorMessage, and TRUE.

    Referenced by getVariableOrTerm(), readCoefficients(), and readConstraints().

    ◆ hasError()

    static SCIP_Bool hasError ( OPBINPUT opbinput)
    static

    returns whether a syntax error was detected

    Parameters
    opbinputOPB reading data

    Definition at line 229 of file reader_opb.c.

    References NULL.

    Referenced by readCoefficients(), readConstraints(), readOPBFile(), and setObjective().

    ◆ isDelimChar()

    static SCIP_Bool isDelimChar ( char  c)
    static

    returns whether the given character is a token delimiter

    Parameters
    cinput character

    Definition at line 240 of file reader_opb.c.

    References FALSE, and TRUE.

    Referenced by getNextToken().

    ◆ isTokenChar()

    static SCIP_Bool isTokenChar ( char  c)
    static

    returns whether the given character is a single token

    Parameters
    cinput character

    Definition at line 261 of file reader_opb.c.

    References FALSE, and TRUE.

    Referenced by getNextToken(), and getVariableOrTerm().

    ◆ isValueChar()

    static SCIP_Bool isValueChar ( char  c,
    char  nextc,
    SCIP_Bool  firstchar,
    SCIP_Bool hasdot,
    OPBEXPTYPE exptype 
    )
    static

    returns whether the current character is member of a value string

    Parameters
    cinput character
    nextcnext input character
    firstcharis the given character the first char of the token?
    hasdotpointer to update the dot flag
    exptypepointer to update the exponent type

    Definition at line 284 of file reader_opb.c.

    References FALSE, NULL, OPB_EXP_NONE, OPB_EXP_SIGNED, OPB_EXP_UNSIGNED, and TRUE.

    Referenced by getNextToken().

    ◆ getNextLine()

    static SCIP_Bool getNextLine ( SCIP scip,
    OPBINPUT opbinput 
    )
    static

    reads the next line from the input file into the line buffer; skips comments; returns whether a line could be read

    Parameters
    scipSCIP data structure
    opbinputOPB reading data

    Definition at line 328 of file reader_opb.c.

    References commentchars, FALSE, NULL, SCIP_CALL_ABORT, SCIPcalcMemGrowSize(), SCIPdebugMsg, SCIPfgets(), SCIPreallocBlockMemoryArray, and TRUE.

    Referenced by getNextToken().

    ◆ swapPointers()

    static void swapPointers ( char **  pointer1,
    char **  pointer2 
    )
    static

    swaps the addresses of two pointers

    Parameters
    pointer1first pointer
    pointer2second pointer

    Definition at line 383 of file reader_opb.c.

    Referenced by getNextToken(), pushBufferToken(), pushToken(), and swapTokenBuffer().

    ◆ getNextToken()

    static SCIP_Bool getNextToken ( SCIP scip,
    OPBINPUT opbinput 
    )
    static

    reads the next token from the input file into the token buffer; returns whether a token was read

    Parameters
    scipSCIP data structure
    opbinputOPB reading data

    Definition at line 397 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 void pushToken ( OPBINPUT opbinput)
    static

    puts the current token on the token stack, such that it is read at the next call to getNextToken()

    Parameters
    opbinputOPB reading data

    Definition at line 498 of file reader_opb.c.

    References NULL, OPB_MAX_PUSHEDTOKENS, and swapPointers().

    Referenced by getVariableOrTerm(), and readCoefficients().

    ◆ pushBufferToken()

    static void pushBufferToken ( OPBINPUT opbinput)
    static

    puts the buffered token on the token stack, such that it is read at the next call to getNextToken()

    Parameters
    opbinputOPB reading data

    Definition at line 511 of file reader_opb.c.

    References NULL, OPB_MAX_PUSHEDTOKENS, and swapPointers().

    Referenced by readCoefficients().

    ◆ swapTokenBuffer()

    static void swapTokenBuffer ( OPBINPUT opbinput)
    static

    swaps the current token with the token buffer

    Parameters
    opbinputOPB reading data

    Definition at line 524 of file reader_opb.c.

    References NULL, and swapPointers().

    Referenced by readCoefficients().

    ◆ isEndLine()

    static SCIP_Bool isEndLine ( OPBINPUT opbinput)
    static

    checks whether the current token is a section identifier, and if yes, switches to the corresponding section

    Parameters
    opbinputOPB reading data

    Definition at line 535 of file reader_opb.c.

    References FALSE, NULL, and TRUE.

    Referenced by readCoefficients(), readConstraints(), and setObjective().

    ◆ isSign()

    static SCIP_Bool isSign ( OPBINPUT opbinput,
    int *  sign 
    )
    static

    returns whether the current token is a sign

    Parameters
    opbinputOPB reading data
    signpointer to update the sign

    Definition at line 549 of file reader_opb.c.

    References FALSE, NULL, and TRUE.

    Referenced by readCoefficients(), and readConstraints().

    ◆ isValue()

    static SCIP_Bool isValue ( SCIP scip,
    OPBINPUT opbinput,
    SCIP_Real value 
    )
    static

    returns whether the current token is a value

    Parameters
    scipSCIP data structure
    opbinputOPB reading data
    valuepointer to store the value (unchanged, if token is no value)

    Definition at line 576 of file reader_opb.c.

    References FALSE, NULL, SCIPinfinity(), SCIPstrcasecmp(), and TRUE.

    Referenced by readCoefficients(), and readConstraints().

    ◆ isSense()

    static SCIP_Bool isSense ( OPBINPUT opbinput,
    OPBSENSE sense 
    )
    static

    returns whether the current token is an equation sense

    Parameters
    opbinputOPB reading data
    sensepointer to store the equation sense, or NULL

    Definition at line 610 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()

    static SCIP_Bool isStartingSoftConstraintWeight ( SCIP scip,
    OPBINPUT opbinput 
    )
    static

    returns whether the current token is a value

    Parameters
    scipSCIP data structure
    opbinputOPB reading data

    Definition at line 641 of file reader_opb.c.

    References FALSE, NULL, and TRUE.

    Referenced by readCoefficients().

    ◆ isEndingSoftConstraintWeight()

    static SCIP_Bool isEndingSoftConstraintWeight ( SCIP scip,
    OPBINPUT opbinput 
    )
    static

    returns whether the current token is a value

    Parameters
    scipSCIP data structure
    opbinputOPB reading data

    Definition at line 657 of file reader_opb.c.

    References FALSE, NULL, and TRUE.

    Referenced by readCoefficients().

    ◆ createVariable()

    static SCIP_RETCODE createVariable ( SCIP scip,
    SCIP_VAR **  var,
    char *  name 
    )
    static

    create binary variable with given name

    Parameters
    scipSCIP data structure
    varpointer to store the variable
    namename 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(), and SCIPreleaseVar().

    Referenced by getVariableOrTerm(), and readConstraints().

    ◆ getVariableOrTerm()

    static SCIP_RETCODE getVariableOrTerm ( SCIP scip,
    OPBINPUT opbinput,
    SCIP_VAR ***  vars,
    int *  nvars,
    int *  varssize 
    )
    static

    returns the variable with the given name, or creates a new variable if it does not exist

    Parameters
    scipSCIP data structure
    opbinputOPB reading data
    varspointer to store the variables
    nvarspointer to store the number of variables
    varssizepointer to store the varsize, if changed (should already be initialized)

    Definition at line 709 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 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

    reads an objective or constraint with name and coefficients

    Parameters
    scipSCIP data structure
    opbinputOPB reading data
    namepointer to store the name of the line; must be at least of size OPB_MAX_LINELEN
    linvarspointer to store the array with linear variables (must be freed by caller)
    lincoefspointer to store the array with linear coefficients (must be freed by caller)
    nlincoefspointer to store the number of linear coefficients
    lincoefssizepointer to store the size of linvars/lincoefs arrays
    termspointer to store the array with nonlinear variables (must be freed by caller)
    termcoefspointer to store the array with nonlinear coefficients (must be freed by caller)
    ntermvarspointer to store the number of nonlinear variables in the terms (must be freed by caller)
    termcoefssizepointer to store the size of terms/termcoefs
    ntermcoefspointer to store the number of nonlinear coefficients
    newsectionpointer to store whether a new section was encountered
    isNonlinearpointer to store if we have a nonlinear constraint
    issoftconspointer to store whether it is a soft constraint (for wbo files)
    weightpointer to store the weight of the soft constraint

    Definition at line 785 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 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

    set the objective section

    Parameters
    scipSCIP data structure
    opbinputOPB reading data
    senseobjective sense
    scaleobjective scale
    linvarsarray of linear variables
    coefsarray of objective values for linear variables
    ncoefsnumber of coefficients for linear part
    termsarray with nonlinear variables
    termcoefsarray of objective values for nonlinear variables
    ntermvarsnumber of nonlinear variables in the terms
    ntermcoefsnumber of nonlinear coefficients

    Definition at line 1150 of file reader_opb.c.

    References ABS, ARTIFICIALVARNAMEPREFIX, FALSE, hasError(), isEndLine(), NULL, 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(), and TRUE.

    Referenced by readConstraints().

    ◆ readConstraints()

    ◆ getCommentLineData()

    static SCIP_RETCODE getCommentLineData ( SCIP scip,
    OPBINPUT opbinput,
    SCIP_Real objscale,
    SCIP_Real objoffset 
    )
    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

    Parameters
    scipSCIP data structure
    opbinputOPB reading data
    objscalepointer to store objective scale
    objoffsetpointer to store objective offset

    Definition at line 1637 of file reader_opb.c.

    References commentchars, delimchars, NULL, SCIP_CALL_ABORT, SCIP_OKAY, SCIP_READERROR, SCIPcalcMemGrowSize(), SCIPdebugMsg, SCIPfgets(), and SCIPreallocBlockMemoryArray.

    Referenced by readOPBFile().

    ◆ readOPBFile()

    ◆ getBinVarsRepresentatives()

    static SCIP_RETCODE getBinVarsRepresentatives ( SCIP *const  scip,
    SCIP_VAR **const  vars,
    int const  nvars,
    SCIP_Bool const  transformed 
    )
    static

    transforms given and constraint variables to the corresponding active or negated variables

    Parameters
    scipSCIP data structure
    varsvars array to get active variables for
    nvarspointer to number of variables and values in vars and vals array
    transformedtransformed constraint?

    Definition at line 1893 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 SCIP_RETCODE getActiveVariables ( SCIP scip,
    SCIP_VAR ***  vars,
    SCIP_Real **  scalars,
    int *  nvars,
    int *  varssize,
    SCIP_Real constant,
    SCIP_Bool  transformed 
    )
    static

    transforms given variables, real scalars, and real constant to the corresponding active variables, real scalars, and real constant

    Parameters
    scipSCIP data structure
    varsvars array to get active variables for
    scalarsreal scalars a_1, ..., a_n in linear sum a_1*x_1 + ... + a_n*x_n + c
    nvarspointer to number of variables and values in vars and vals array
    varssizepointer to size of variable array
    constantpointer to real constant c in linear sum a_1*x_1 + ... + a_n*x_n + c
    transformedtransformed constraint?

    Definition at line 1957 of file reader_opb.c.

    References NULL, scalars, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPgetProbvarLinearSum(), SCIPreallocBufferArray, and SCIPvarGetOrigvarSum().

    Referenced by printLinearCons(), and printNonLinearCons().

    ◆ getActiveVariablesExact()

    static SCIP_RETCODE getActiveVariablesExact ( SCIP scip,
    SCIP_VAR ***  vars,
    SCIP_RATIONAL ***  scalars,
    int *  nvars,
    int *  varssize,
    SCIP_RATIONAL constant,
    SCIP_Bool  transformed 
    )
    static

    transforms given variables, exact scalars, and exact constant to the corresponding active variables, exact scalars, and exact constant

    Parameters
    scipSCIP data structure
    varsvars array to get active variables for
    scalarsexact scalars a_1, ..., a_n in linear sum a_1*x_1 + ... + a_n*x_n + c
    nvarspointer to number of variables and values in vars and vals array
    varssizepointer to size of variable array
    constantpointer to exact constant c in linear sum a_1*x_1 + ... + a_n*x_n + c
    transformedtransformed constraint?

    Definition at line 2006 of file reader_opb.c.

    References NULL, scalars, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPbuffer(), SCIPgetProbvarLinearSumExact(), SCIPrationalReallocBufferArray(), SCIPreallocBufferArray, SCIPvarGetOrigvarSumExact(), and TRUE.

    Referenced by printLinearConsExact().

    ◆ computeAndConstraintInfos()

    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
    Parameters
    scipSCIP data structure
    transformedtransformed problem?
    resvarspointer to store all resultant variables
    nresvarspointer to store the number of all resultant variables
    andvarspointer to store to all resultant variables their corresponding active( or negated) and-constraint variables
    nandvarspointer to store the number of all corresponding and-variables to their corresponding resultant variable
    existandconshdlrpointer to store whether the and-constrainthandler exists
    existandspointer to store if their exists some and-constraints

    Definition at line 2055 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.

    Referenced by SCIPwriteOpb().

    ◆ clearBuffer()

    static void clearBuffer ( char *  linebuffer,
    int *  linecnt 
    )
    static

    clears the given line buffer

    Parameters
    linebufferline
    linecntnumber of characters in line

    Definition at line 2259 of file reader_opb.c.

    References NULL.

    Referenced by printNLRow(), printRow(), printRowExact(), writeBuffer(), writeOpbFixedVars(), writeOpbObjective(), and writeOpbRelevantAnds().

    ◆ writeBuffer()

    static void writeBuffer ( SCIP scip,
    FILE *  file,
    char *  linebuffer,
    int *  linecnt 
    )
    static

    ends the given line with '\0' and prints it to the given file stream

    Parameters
    scipSCIP data structure
    fileoutput file (or NULL for standard output)
    linebufferline
    linecntnumber of characters in line

    Definition at line 2274 of file reader_opb.c.

    References clearBuffer(), NULL, OPB_MAX_LINELEN, and SCIPinfoMessage().

    Referenced by appendBuffer(), printNLRow(), printRow(), printRowExact(), writeOpbFixedVars(), writeOpbObjective(), and writeOpbRelevantAnds().

    ◆ appendBuffer()

    static void appendBuffer ( SCIP scip,
    FILE *  file,
    char *  linebuffer,
    int *  linecnt,
    const char *  extension 
    )
    static

    appends extension to line and prints it to the give file stream if the line buffer get full

    Parameters
    scipSCIP data structure
    fileoutput file (or NULL for standard output)
    linebufferline buffer
    linecntnumber of characters in line
    extensionstring to extent the line

    Definition at line 2297 of file reader_opb.c.

    References NULL, OPB_MAX_LINELEN, and writeBuffer().

    Referenced by printNLRow(), printRow(), printRowExact(), writeOpbFixedVars(), writeOpbObjective(), and writeOpbRelevantAnds().

    ◆ writeOpbObjective()

    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

    write objective function

    Parameters
    scipSCIP data structure
    fileoutput file, or NULL if standard output should be used
    varsarray with active (binary) variables
    nvarsnumber of active variables in the problem
    resvarsarray of resultant variables
    nresvarsnumber of resultant variables
    andvarscorresponding array of and-variables
    nandvarsarray of numbers of corresponding and-variables
    objsenseobjective sense
    objoffsetobjective offset from bound shifting and fixing
    objscalescalar applied to objective function; external objective value is extobj = objsense * objscale * (intobj + objoffset)
    objoffsetexactexact objective offset from bound shifting and fixing
    objscaleexactexact scalar applied to objective function; external objective value is extobjexact = objsense * objscaleexact * (intobjexact + objoffsetexact)
    multisymbolthe multiplication symbol to use between coefficient and variable
    existandsdoes some and-constraints exist?
    transformedTRUE iff problem is the transformed problem

    Definition at line 2320 of file reader_opb.c.

    References a, ABS, appendBuffer(), clearBuffer(), FALSE, INDICATORVARNAME, NULL, 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, w, and writeBuffer().

    Referenced by writeOpb().

    ◆ printNLRow()

    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
    Parameters
    scipSCIP data structure
    fileoutput file (or NULL for standard output)
    typerow type ("=" or ">=")
    varsarray of variables
    valsarray of real values
    nvarsnumber of variables
    lhsreal left hand side
    resvarsarray of resultant variables
    nresvarsnumber of resultant variables
    andvarscorresponding array of and-variables
    nandvarsarray of numbers of corresponding and-variables
    weightif we found a soft constraint this is the integral weight, otherwise 0
    multintegral multiplier for the coefficients
    multisymbolthe multiplication symbol to use between coefficient and variable

    Definition at line 2770 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(), SCIPround(), SCIPsnprintf(), SCIPsortedvecFindPtr(), SCIPvarGetIndex(), SCIPvarGetName(), SCIPvarGetNegatedVar(), SCIPvarIsNegated(), and writeBuffer().

    Referenced by printNonLinearCons().

    ◆ printNonLinearCons()

    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

    prints given real non-linear constraint information in OPB format to file stream

    Parameters
    scipSCIP data structure
    fileoutput file (or NULL for standard output)
    varsarray of variables
    valsarray of real coefficient values (or NULL if all coefficient values are 1)
    nvarsnumber of variables
    lhsreal left hand side
    rhsreal right hand side
    resvarsarray of resultant variables
    nresvarsnumber of resultant variables
    andvarscorresponding array of and-variables
    nandvarsarray of numbers of corresponding and-variables
    weightif we found a soft constraint this is the integral weight, otherwise 0
    transformedtransformed constraint?
    multisymbolthe multiplication symbol to use between coefficient and variable

    Definition at line 2943 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 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
    Parameters
    scipSCIP data structure
    fileoutput file (or NULL for standard output)
    typerow type ("=" or ">=")
    varsarray of variables
    valsarray of real values
    nvarsnumber of variables
    lhsreal left hand side
    weightif we found a soft constraint this is the integral weight, otherwise 0
    multintegral multiplier for the coefficients
    multisymbolthe multiplication symbol to use between coefficient and variable

    Definition at line 3040 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(), SCIPround(), SCIPsnprintf(), SCIPvarGetName(), SCIPvarGetNegatedVar(), SCIPvarIsNegated(), and writeBuffer().

    Referenced by printLinearCons().

    ◆ printRowExact()

    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
    Parameters
    scipSCIP data structure
    fileoutput file (or NULL for standard output)
    typerow type ("=" or ">=")
    varsarray of variables
    valsarray of exact values
    nvarsnumber of variables
    lhsexact left hand side
    weightif we found a soft constraint this is the exact weight, otherwise 0
    multexact multiplier for the coefficients
    multisymbolthe multiplication symbol to use between coefficient and variable

    Definition at line 3162 of file reader_opb.c.

    References appendBuffer(), clearBuffer(), INDICATORVARNAME, NULL, OPB_MAX_LINELEN, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPbuffer(), SCIPerrorMessage, SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsNegative(), SCIPrationalIsZero(), SCIPrationalMult(), SCIPrationalToString(), SCIPsnprintf(), SCIPvarGetName(), SCIPvarGetNegatedVar(), SCIPvarIsNegated(), and writeBuffer().

    Referenced by printLinearConsExact().

    ◆ printLinearCons()

    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

    prints given real linear constraint information in OPB format to file stream

    Parameters
    scipSCIP data structure
    fileoutput file (or NULL for standard output)
    varsarray of variables
    valsarray of real coefficient values (or NULL if all coefficient values are 1)
    nvarsnumber of variables
    lhsreal left hand side
    rhsreal right hand side
    weightif we found a soft constraint this is the integral weight, otherwise 0
    transformedtransformed constraint?
    multisymbolthe multiplication symbol to use between coefficient and variable

    Definition at line 3266 of file reader_opb.c.

    References getActiveVariables(), NULL, printRow(), SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPduplicateBufferArray, SCIPfreeBufferArrayNull, SCIPisEQ(), and SCIPisInfinity().

    Referenced by writeOpbConstraints().

    ◆ printLinearConsExact()

    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

    prints given exact linear constraint information in OPB format to file stream

    Parameters
    scipSCIP data structure
    fileoutput file (or NULL for standard output)
    varsarray of variables
    valsarray of exact coefficient values (or NULL if all coefficient values are 1)
    nvarsnumber of variables
    lhsexact left hand side
    rhsexact right hand side
    weightif we found a soft constraint this is the exact weight, otherwise 0
    transformedtransformed constraint?
    multisymbolthe multiplication symbol to use between coefficient and variable

    Definition at line 3357 of file reader_opb.c.

    References getActiveVariablesExact(), NULL, printRowExact(), SCIP_CALL, SCIP_OKAY, SCIPbuffer(), SCIPduplicateBufferArray, SCIPfreeBufferArrayNull, SCIPrationalCopyBufferArray(), SCIPrationalCreateBuffer(), SCIPrationalCreateBufferArray(), SCIPrationalDiff(), SCIPrationalFreeBuffer(), SCIPrationalFreeBufferArray(), SCIPrationalIsEQ(), SCIPrationalIsInfinity(), SCIPrationalIsNegInfinity(), and SCIPrationalSetReal().

    Referenced by writeOpbConstraints().

    ◆ determineTotalNumberLinearConss()

    static void determineTotalNumberLinearConss ( SCIP *const  scip,
    SCIP_CONS **const  conss,
    int const  nconss,
    int *  nlinearconss,
    int *  nindicatorconss 
    )
    static

    determine total number of split linear and indicator constraints

    Parameters
    scipSCIP data structure
    conssarray with constraints of the problem
    nconssnumber of constraints in the problem
    nlinearconsspointer to store the total number of split linear constraints
    nindicatorconsspointer to store the total number of indicator constraints

    Definition at line 3459 of file reader_opb.c.

    References NULL, SCIP_Bool, SCIP_Real, SCIPconsGetHdlr(), SCIPconsGetLhs(), SCIPconsGetLhsExact(), SCIPconsGetRhs(), SCIPconsGetRhsExact(), SCIPconshdlrGetName(), SCIPgetIndVarPseudoboolean(), SCIPisEQ(), SCIPisExact(), SCIPisInfinity(), SCIPrationalIsEQ(), SCIPrationalIsInfinity(), and SCIPrationalIsNegInfinity().

    Referenced by writeOpb().

    ◆ writeOpbConstraints()

    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

    write constraints

    Parameters
    scipSCIP data structure
    fileoutput file, or NULL if standard output should be used
    conssarray with constraints of the problem
    nconssnumber of constraints in the problem
    varsarray with active (binary) variables
    nvarsnumber of active variables in the problem
    resvarsarray of resultant variables
    nresvarsnumber of resultant variables
    andvarscorresponding array of and-variables
    nandvarsarray of numbers of corresponding and-variables
    multisymbolthe multiplication symbol to use between coefficient and variable
    existandconshdlrdoes and-constrainthandler exist?
    existandsdoes some and-constraints exist?
    transformedTRUE iff problem is the transformed problem

    Definition at line 3567 of file reader_opb.c.

    References FALSE, NULL, 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, and TRUE.

    Referenced by writeOpb().

    ◆ writeOpbFixedVars()

    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
    Parameters
    scipSCIP data structure
    fileoutput file, or NULL if standard output should be used
    varsarray with active (binary) variables
    nvarsnumber of active variables in the problem
    printedfixinghashmap to store if a fixed variable was already printed
    multisymbolthe multiplication symbol to use between coefficient and variable
    transformedTRUE iff problem is the transformed problem

    Definition at line 4127 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 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
    Parameters
    scipSCIP data structure
    fileoutput file, or NULL if standard output should be used
    resvarsarray of resultant variables
    nresvarsnumber of resultant variables
    andvarscorresponding array of and-variables
    nandvarsarray of numbers of corresponding and-variables
    printedfixinghashmap to store if a fixed variable was already printed
    multisymbolthe multiplication symbol to use between coefficient and variable
    transformedTRUE iff problem is the transformed problem

    Definition at line 4201 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 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 
    )
    static
    Parameters
    scipSCIP data structure
    fileoutput file, or NULL if standard output should be used
    nameproblem name
    transformedTRUE iff problem is the transformed problem
    objsenseobjective sense
    objoffsetobjective offset from bound shifting and fixing
    objscalescalar applied to objective function; external objective value is extobj = objsense * objscale * (intobj + objoffset)
    objoffsetexactexact objective offset from bound shifting and fixing
    objscaleexactexact scalar applied to objective function; external objective value is extobjexact = objsense * objscaleexact * (intobjexact + objoffsetexact)
    varsarray with active (binary) variables
    nvarsnumber of active variables in the problem
    conssarray with constraints of the problem
    nconssnumber of constraints in the problem
    resvarsarray of resultant variables
    nresvarsnumber of resultant variables
    andvarscorresponding array of and-variables
    nandvarsarray of numbers of corresponding and-variables
    existandconshdlrdoes and-constrainthandler exist?
    existandsdoes some and-constraints exist?
    resultpointer to store the result of the file writing call

    Definition at line 4466 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().

    Referenced by SCIPwriteOpb().

    ◆ SCIP_DECL_READERCOPY()

    static SCIP_DECL_READERCOPY ( readerCopyOpb  )
    static

    copy method for reader plugins (called when SCIP copies plugins)

    Definition at line 4827 of file reader_opb.c.

    References NULL, READER_NAME, SCIP_CALL, SCIP_OKAY, SCIPincludeReaderOpb(), and SCIPreaderGetName().

    ◆ SCIP_DECL_READERFREE()

    static SCIP_DECL_READERFREE ( readerFreeOpb  )
    static

    destructor of reader to free user data (called when SCIP is exiting)

    Definition at line 4842 of file reader_opb.c.

    References READER_NAME, SCIP_OKAY, SCIPfreeBlockMemory, SCIPreaderGetData(), and SCIPreaderGetName().

    ◆ SCIP_DECL_READERREAD()

    static SCIP_DECL_READERREAD ( readerReadOpb  )
    static

    problem reading method of reader

    Definition at line 4856 of file reader_opb.c.

    References SCIP_CALL, SCIP_OKAY, and SCIPreadOpb().

    ◆ SCIP_DECL_READERWRITE()

    static SCIP_DECL_READERWRITE ( readerWriteOpb  )
    static

    problem writing method of reader

    Definition at line 4867 of file reader_opb.c.

    References NULL, READER_NAME, SCIP_CALL, SCIP_OKAY, SCIP_WRITEERROR, SCIPerrorMessage, SCIPisExact(), SCIPreaderGetName(), and SCIPwriteOpb().

    Variable Documentation

    ◆ commentchars

    const char commentchars[] = "*"
    static

    Definition at line 198 of file reader_opb.c.

    Referenced by getCommentLineData(), and getNextLine().