OS instance language (OSiL) format file reader.
Definition in file reader_osil.c.
#include <assert.h>
#include <string.h>
#include <math.h>
#include "scip/reader_osil.h"
#include "scip/scip.h"
#include "scip/cons_bounddisjunction.h"
#include "scip/cons_linear.h"
#include "scip/cons_quadratic.h"
#include "scip/cons_nonlinear.h"
#include "scip/cons_sos1.h"
#include "scip/cons_sos2.h"
#include "xml/xml.h"
Go to the source code of this file.
Macros | |
#define | READER_NAME "osilreader" |
#define | READER_DESC "file reader for OS instance language (OSiL) format" |
#define | READER_EXTENSION "osil" |
Enumerations | |
enum | CONSTYPE { LINEAR, QUADRATIC, NONLINEAR } |
Functions | |
static SCIP_RETCODE | readVariables (SCIP *scip, const XML_NODE *datanode, SCIP_VAR ***vars, int *nvars, SCIP_Bool initialconss, SCIP_Bool dynamicconss, SCIP_Bool dynamiccols, SCIP_Bool dynamicrows, SCIP_Bool *doingfine) |
static SCIP_RETCODE | readObjective (SCIP *scip, const XML_NODE *datanode, SCIP_VAR **vars, int nvars, SCIP_Bool dynamiccols, SCIP_Bool *doingfine) |
static SCIP_RETCODE | readConstraints (SCIP *scip, const XML_NODE *datanode, SCIP_CONS ***conss, CONSTYPE **constypes, int *nconss, SCIP_Bool initialconss, SCIP_Bool dynamicconss, SCIP_Bool dynamicrows, SCIP_Bool *doingfine) |
static void | readMultIncr (const XML_NODE *node, int *mult, int *incrint, SCIP_Real *incrreal, SCIP_Bool *doingfine) |
static SCIP_RETCODE | readLinearCoefs (SCIP *scip, const XML_NODE *datanode, SCIP_VAR **vars, int nvars, SCIP_CONS **conss, CONSTYPE *constypes, int nconss, SCIP_Bool *doingfine) |
static SCIP_RETCODE | readQuadraticCoefs (SCIP *scip, const XML_NODE *datanode, SCIP_VAR **vars, int nvars, SCIP_CONS **conss, CONSTYPE *constypes, int nconss, SCIP_CONS **objcons, CONSTYPE *objconstype, SCIP_Bool *doingfine) |
static SCIP_RETCODE | readExpression (SCIP *scip, SCIP_EXPR **expr, const XML_NODE *node, int *exprvaridx, int *nexprvars, int nvars, SCIP_Bool *doingfine) |
static SCIP_RETCODE | readNonlinearExprs (SCIP *scip, const XML_NODE *datanode, SCIP_VAR **vars, int nvars, SCIP_CONS **conss, CONSTYPE *constypes, int nconss, SCIP_CONS **objcons, CONSTYPE *objconstype, SCIP_Bool *doingfine) |
static SCIP_RETCODE | readSOScons (SCIP *scip, const XML_NODE *datanode, SCIP_VAR **vars, int nvars, SCIP_Bool initialconss, SCIP_Bool dynamicconss, SCIP_Bool dynamicrows, SCIP_Bool *doingfine) |
static | SCIP_DECL_READERCOPY (readerCopyOsil) |
static | SCIP_DECL_READERREAD (readerReadOsil) |
SCIP_RETCODE | SCIPincludeReaderOsil (SCIP *scip) |
#define READER_NAME "osilreader" |
Definition at line 41 of file reader_osil.c.
Referenced by SCIPincludeReaderOsil().
#define READER_DESC "file reader for OS instance language (OSiL) format" |
Definition at line 42 of file reader_osil.c.
Referenced by SCIPincludeReaderOsil().
#define READER_EXTENSION "osil" |
Definition at line 43 of file reader_osil.c.
Referenced by SCIPincludeReaderOsil().
enum CONSTYPE |
type of constraint
Enumerator | |
---|---|
LINEAR | linear constraint |
QUADRATIC | quadratic constraint |
NONLINEAR | general nonlinear constraint |
Definition at line 50 of file reader_osil.c.
|
static |
create variables with bounds and type according to xml data
scip | SCIP data structure |
datanode | XML root node for instance data |
vars | buffer to store pointer to variable array |
nvars | buffer to store number of variables |
initialconss | should model constraints be marked as initial? |
dynamicconss | should model constraints be subject to aging? |
dynamiccols | should columns be added and removed dynamically to the LP? |
dynamicrows | should rows be added and removed dynamically to the LP? |
doingfine | buffer to indicate whether no errors occured |
Definition at line 64 of file reader_osil.c.
References FALSE, NULL, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_INVALID, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_CONTINUOUS, SCIP_VARTYPE_INTEGER, SCIPaddCons(), SCIPaddVar(), SCIPallocBufferArray, SCIPceil(), SCIPcreateConsBounddisjunction(), SCIPcreateVar(), SCIPerrorMessage, SCIPfloor(), SCIPinfinity(), SCIPreleaseCons(), SCIPsnprintf(), SCIPvarGetName(), TRUE, xmlFindNodeMaxdepth(), xmlFirstChild(), xmlGetAttrval(), and xmlNextSibl().
Referenced by SCIP_DECL_READERREAD().
|
static |
setup linear coefficients and constant of objective and objective sense
scip | SCIP data structure |
datanode | XML root node for instance data |
vars | variables in order of OSiL indices |
nvars | number of variables |
dynamiccols | should columns be added and removed dynamically to the LP? |
doingfine | buffer to indicate whether no errors occured |
Definition at line 278 of file reader_osil.c.
References FALSE, NULL, SCIP_CALL, SCIP_OBJSENSE_MAXIMIZE, SCIP_OBJSENSE_MINIMIZE, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPaddVar(), SCIPchgVarObj(), SCIPcreateVar(), SCIPerrorMessage, SCIPreleaseVar(), SCIPsetObjsense(), SCIPvarGetName(), xmlFindNodeMaxdepth(), xmlFirstChild(), xmlGetAttrval(), xmlGetData(), and xmlNextSibl().
Referenced by SCIP_DECL_READERREAD().
|
static |
setup constraint sides as linear constraints
constraints are not added to the problem yet
scip | SCIP data structure |
datanode | XML root node for instance data |
conss | buffer to store array of (linear) constraints |
constypes | buffer to store type of constraints (will be all LINEAR) |
nconss | buffer to store number of constraints |
initialconss | should model constraints be marked as initial? |
dynamicconss | should model constraints be subject to aging? |
dynamicrows | should rows be added and removed dynamically to the LP? |
doingfine | buffer to indicate whether no errors occured |
Definition at line 424 of file reader_osil.c.
References FALSE, LINEAR, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPcreateConsLinear(), SCIPerrorMessage, SCIPinfinity(), SCIPsnprintf(), TRUE, xmlFindNodeMaxdepth(), xmlFirstChild(), xmlGetAttrval(), and xmlNextSibl().
Referenced by SCIP_DECL_READERREAD().
|
static |
reads mult and incr attributes of an OSiL node
if mult attribute is not present, then returns mult=1 if incr attribute is not present, then returns incrint=0 and incrreal=0
node | XML node to read attributes from |
mult | buffer to store mult |
incrint | buffer to store incr as int, or NULL if no int expected |
incrreal | buffer to store incr as real, or NULL if no real expected |
doingfine | buffer to indicate whether no errors occured |
Definition at line 594 of file reader_osil.c.
References FALSE, NULL, SCIPerrorMessage, SCIPisFinite, and xmlGetAttrval().
Referenced by readLinearCoefs().
|
static |
parse linear coefficients of constraints
scip | SCIP data structure |
datanode | XML root node for instance data |
vars | variables in order of OSiL indices |
nvars | number of variables |
conss | constraints in order of OSiL indices |
constypes | type of constraints (assumed to be LINEAR) |
nconss | number of constraints |
doingfine | buffer to indicate whether no errors occured |
Definition at line 660 of file reader_osil.c.
References FALSE, LINEAR, NULL, readMultIncr(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddCoefLinear(), SCIPallocBufferArray, SCIPerrorMessage, SCIPfreeBufferArrayNull, SCIPisFinite, TRUE, xmlFindNodeMaxdepth(), xmlFirstChild(), xmlGetAttrval(), xmlGetData(), xmlGetName(), and xmlNextSibl().
Referenced by SCIP_DECL_READERREAD().
|
static |
read quadratic coefficients of constraints and objective
scip | SCIP data structure |
datanode | XML root node for instance data |
vars | variables in order of OSiL indices |
nvars | number of variables |
conss | constraints in order of OSiL indices |
constypes | type of constraints (assumed to be LINEAR) |
nconss | number of constraints |
objcons | buffer to store constraint for nonlinear part of objective function, or to add to if already existing |
objconstype | buffer to store type of objective constraint, if created (should be QUADRATIC) |
doingfine | buffer to indicate whether no errors occured |
Definition at line 1000 of file reader_osil.c.
References FALSE, LINEAR, NULL, QUADRATIC, SCIP_CALL, SCIP_OBJSENSE_MAXIMIZE, SCIP_OBJSENSE_MINIMIZE, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPaddBilinTermQuadratic(), SCIPaddVar(), SCIPconsGetName(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPcreateConsQuadratic(), SCIPcreateVar(), SCIPerrorMessage, SCIPgetLhsLinear(), SCIPgetNVarsLinear(), SCIPgetObjsense(), SCIPgetRhsLinear(), SCIPgetValsLinear(), SCIPgetVarsLinear(), SCIPinfinity(), SCIPreleaseCons(), SCIPreleaseVar(), TRUE, xmlFindNodeMaxdepth(), xmlFirstChild(), xmlGetAttrval(), xmlGetName(), and xmlNextSibl().
Referenced by SCIP_DECL_READERREAD().
|
static |
transforms OSnL expression tree into SCIP expression
scip | SCIP data structure |
expr | buffer to store pointer to created expression |
node | root node of expression to be read |
exprvaridx | array with index of problem variables in expression graph |
nexprvars | number of variables in currently processed expression so far |
nvars | total number of variables in problem (and length of exprvaridx array) |
doingfine | buffer to indicate whether no errors occurred |
Definition at line 1214 of file reader_osil.c.
References SCIP_QuadElement::coef, FALSE, SCIP_QuadElement::idx1, SCIP_QuadElement::idx2, log(), M_PI, NULL, SCIP_CALL, SCIP_EXPR_ABS, SCIP_EXPR_CONST, SCIP_EXPR_DIV, SCIP_EXPR_EXP, SCIP_EXPR_INTPOWER, SCIP_EXPR_LOG, SCIP_EXPR_MAX, SCIP_EXPR_MIN, SCIP_EXPR_MUL, SCIP_EXPR_PRODUCT, SCIP_EXPR_REALPOWER, SCIP_EXPR_SQRT, SCIP_EXPR_SQUARE, SCIP_EXPR_SUM, SCIP_EXPR_VARIDX, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPblkmem(), SCIPcalcMemGrowSize(), SCIPerrorMessage, SCIPexprAdd(), SCIPexprCreate(), SCIPexprCreateLinear(), SCIPexprCreateQuadratic(), SCIPexprFreeDeep(), SCIPexprGetOperator(), SCIPexprGetOpReal(), SCIPexprMulConstant(), SCIPfreeBufferArray, SCIPisFinite, SCIPisIntegral(), SCIPreallocBufferArray, SCIPround(), xmlFirstChild(), xmlGetAttrval(), xmlGetName(), and xmlNextSibl().
Referenced by readNonlinearExprs().
|
static |
read nonlinear expressions of constraints and objective
scip | SCIP data structure |
datanode | XML root node for instance data |
vars | variables in order of OSiL indices |
nvars | number of variables |
conss | constraints in order of OSiL indices |
constypes | type of constraints (assumed to be LINEAR) |
nconss | number of constraints |
objcons | buffer to store constraint for nonlinear part of objective function, or to add to if already existing |
objconstype | buffer to store type of objective constraint, if created (should be QUADRATIC) |
doingfine | buffer to indicate whether no errors occurred |
Definition at line 1863 of file reader_osil.c.
References SCIP_QuadVarTerm::adjbilin, SCIP_QuadElement::coef, SCIP_BilinTerm::coef, FALSE, SCIP_QuadElement::idx1, SCIP_QuadElement::idx2, SCIP_QuadVarTerm::lincoef, LINEAR, MAX, MIN, SCIP_QuadVarTerm::nadjbilin, NONLINEAR, NULL, QUADRATIC, readExpression(), SCIP_CALL, SCIP_CALL_TERMINATE, SCIP_EXPR_VARIDX, SCIP_OBJSENSE_MAXIMIZE, SCIP_OBJSENSE_MINIMIZE, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPaddExprtreesNonlinear(), SCIPaddVar(), SCIPallocBufferArray, SCIPblkmem(), SCIPconsGetName(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsNonlinear(), SCIPcreateVar(), SCIPerrorMessage, SCIPexprCreate(), SCIPexprCreateQuadratic(), SCIPexprtreeCreate(), SCIPexprtreeFree(), SCIPexprtreeSetVars(), SCIPfindQuadVarTermQuadratic(), SCIPfreeBufferArray, SCIPgetBilinTermsQuadratic(), SCIPgetLhsLinear(), SCIPgetLhsNonlinear(), SCIPgetLinearCoefsNonlinear(), SCIPgetLinearVarsNonlinear(), SCIPgetNBilinTermsQuadratic(), SCIPgetNLinearVarsNonlinear(), SCIPgetNQuadVarTermsQuadratic(), SCIPgetNVarsLinear(), SCIPgetObjsense(), SCIPgetQuadVarTermsQuadratic(), SCIPgetRhsLinear(), SCIPgetRhsNonlinear(), SCIPgetValsLinear(), SCIPgetVarsLinear(), SCIPinfinity(), SCIPreleaseCons(), SCIPreleaseVar(), SCIPsortQuadVarTermsQuadratic(), SCIP_QuadVarTerm::sqrcoef, TRUE, SCIP_QuadVarTerm::var, xmlFindNodeMaxdepth(), xmlFirstChild(), xmlGetAttrval(), xmlGetName(), and xmlNextSibl().
Referenced by SCIP_DECL_READERREAD().
|
static |
read sos1 and sos2 constraints
sos constraints are expected to be given as a node of <instanceData> in the following way:
Weights are determined by the order in which the variables are given
scip | SCIP data structure |
datanode | XML root node for instance data |
vars | variables in order of OSiL indices |
nvars | number of variables |
initialconss | should model constraints be marked as initial? |
dynamicconss | should model constraints be subject to aging? |
dynamicrows | should rows be added and removed dynamically to the LP? |
doingfine | buffer to indicate whether no errors occurred |
Definition at line 2193 of file reader_osil.c.
References FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPABORT, SCIPaddCons(), SCIPaddVarSOS1(), SCIPaddVarSOS2(), SCIPcreateConsSOS1(), SCIPcreateConsSOS2(), SCIPerrorMessage, SCIPsnprintf(), TRUE, xmlFindNodeMaxdepth(), xmlFirstChild(), xmlGetAttrval(), xmlGetName(), and xmlNextSibl().
Referenced by SCIP_DECL_READERREAD().
|
static |
copy method for reader plugins (called when SCIP copies plugins)
Definition at line 2388 of file reader_osil.c.
References NULL, SCIP_CALL, SCIP_OKAY, and SCIPincludeReaderOsil().
|
static |
problem reading method of reader
Definition at line 2399 of file reader_osil.c.
References NULL, readConstraints(), readLinearCoefs(), readNonlinearExprs(), readObjective(), readQuadraticCoefs(), readSOScons(), readVariables(), SCIP_Bool, SCIP_CALL, SCIP_CALL_TERMINATE, SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIP_READERROR, SCIP_SUCCESS, SCIPaddCons(), SCIPcreateProb(), SCIPdebug, SCIPerrorMessage, SCIPfreeBufferArrayNull, SCIPgetBoolParam(), SCIPreleaseCons(), SCIPreleaseVar(), TRUE, xmlFindNodeMaxdepth(), xmlFirstChild(), xmlFreeNode(), xmlGetData(), xmlProcess(), and xmlShowNode().