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().