OS instance language (OSiL) format file reader.
Definition in file reader_osil.c.
#include "blockmemshell/memory.h"
#include "scip/cons_bounddisjunction.h"
#include "scip/cons_nonlinear.h"
#include "scip/cons_linear.h"
#include "scip/cons_sos1.h"
#include "scip/cons_sos2.h"
#include "scip/expr_abs.h"
#include "scip/expr_erf.h"
#include "scip/expr_exp.h"
#include "scip/expr_log.h"
#include "scip/expr_pow.h"
#include "scip/expr_product.h"
#include "scip/expr_sum.h"
#include "scip/expr_trig.h"
#include "scip/expr_value.h"
#include "scip/expr_var.h"
#include "scip/pub_cons.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/pub_nlp.h"
#include "scip/pub_var.h"
#include "scip/reader_osil.h"
#include "scip/scip_cons.h"
#include "scip/scip_mem.h"
#include "scip/scip_numerics.h"
#include "scip/scip_param.h"
#include "scip/scip_prob.h"
#include "scip/scip_reader.h"
#include "scip/scip_var.h"
#include <stdlib.h>
#include <string.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" |
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 | readNConstraints (SCIP *scip, const XML_NODE *datanode, int *nconss, SCIP_Bool *doingfine) |
static SCIP_RETCODE | createConstraint (SCIP *scip, SCIP_VAR **linvars, SCIP_Real *lincoefs, int nlinvars, SCIP_VAR **quadvars1, SCIP_VAR **quadvars2, SCIP_Real *quadcoefs, int nquadterms, SCIP_EXPR *nlexpr, SCIP_Real lhs, SCIP_Real rhs, const char *name, SCIP_Bool objcons, SCIP_Bool initialconss, SCIP_Bool dynamicconss, SCIP_Bool dynamicrows) |
static SCIP_RETCODE | readConstraints (SCIP *scip, const XML_NODE *datanode, int nconss, SCIP_VAR ***linvars, SCIP_Real **lincoefs, int *nlinvars, SCIP_VAR ***quadvars1, SCIP_VAR ***quadvars2, SCIP_Real **quadcoefs, int *nquadterms, SCIP_EXPR **nlexprs, 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, int nconss, SCIP_VAR ***linvars, SCIP_Real **lincoefs, int *nlinvars, SCIP_Bool *doingfine) |
static SCIP_RETCODE | readQuadraticCoefs (SCIP *scip, const XML_NODE *datanode, SCIP_VAR **vars, int nvars, int nconss, SCIP_VAR ***quadvars1, SCIP_VAR ***quadvars2, SCIP_Real **quadcoefs, int *nquadterms, int *termssize, SCIP_Bool *doingfine) |
static SCIP_RETCODE | readExpression (SCIP *scip, SCIP_EXPR **expr, const XML_NODE *node, SCIP_VAR **vars, int nvars, SCIP_Bool *doingfine) |
static SCIP_RETCODE | readNonlinearExprs (SCIP *scip, const XML_NODE *datanode, SCIP_VAR **vars, int nvars, int nconss, SCIP_EXPR **exprs, 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 69 of file reader_osil.c.
#define READER_DESC "file reader for OS instance language (OSiL) format" |
Definition at line 70 of file reader_osil.c.
#define READER_EXTENSION "osil" |
Definition at line 71 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 occurred |
Definition at line 79 of file reader_osil.c.
References assert(), FALSE, NULL, nvars, SCIP_Bool, 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, vars, 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 occurred |
Definition at line 293 of file reader_osil.c.
References assert(), FALSE, NULL, nvars, SCIP_Bool, SCIP_CALL, SCIP_OBJSENSE_MAXIMIZE, SCIP_OBJSENSE_MINIMIZE, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPaddVar(), SCIPchgVarObj(), SCIPcreateVar(), SCIPerrorMessage, SCIPreleaseVar(), SCIPsetObjsense(), SCIPvarGetName(), vars, xmlFindNodeMaxdepth(), xmlFirstChild(), xmlGetAttrval(), xmlGetData(), and xmlNextSibl().
Referenced by SCIP_DECL_READERREAD().
|
static |
helper method to get the total number of constraints
scip | SCIP data structure |
datanode | XML root node for instance data |
nconss | pointer to store the total number of constraints |
doingfine | buffer to indicate whether no errors occurred |
Definition at line 436 of file reader_osil.c.
References assert(), FALSE, NULL, SCIP_Bool, SCIP_OKAY, SCIPerrorMessage, xmlFindNodeMaxdepth(), and xmlGetAttrval().
Referenced by SCIP_DECL_READERREAD().
|
static |
helper method to create and add a constraint (or a nonlinear objective constraint)
scip | SCIP data structure |
linvars | array containing the linear variables (might be NULL) |
lincoefs | array containing the coefficients of the linear variables (might be NULL) |
nlinvars | the total number of linear variables |
quadvars1 | array containing the first variables of the quadratic terms (might be NULL) |
quadvars2 | array containing the second variables of the quadratic terms (might be NULL) |
quadcoefs | array containing the coefficients of the quadratic terms (might be NULL) |
nquadterms | the total number of quadratic terms |
nlexpr | the nonlinear part (might be NULL) |
lhs | left-hand side |
rhs | right-hand side |
name | name of the constraint |
objcons | whether to add an objective 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? |
Definition at line 482 of file reader_osil.c.
References assert(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPaddCoefLinear(), SCIPaddCons(), SCIPaddVar(), SCIPappendExprSumExpr(), SCIPcreateConsLinear(), SCIPcreateConsNonlinear(), SCIPcreateExprQuadratic(), SCIPcreateExprSum(), SCIPcreateExprVar(), SCIPcreateVar(), SCIPinfinity(), SCIPisExprSum(), SCIPreleaseCons(), SCIPreleaseExpr(), SCIPreleaseVar(), and TRUE.
Referenced by readConstraints(), and SCIP_DECL_READERREAD().
|
static |
reads constraint-specific information; creates and adds linear and nonlinear constraints based on the information that have been collected by readLinearCoefs, readQuadraticCoefs, and readNonlinearExprs
scip | SCIP data structure |
datanode | XML root node for instance data |
nconss | total number of constraints |
linvars | array containing for each constraint the linear variables |
lincoefs | array containing for each constraint the coefficients of the linear variables |
nlinvars | array containing for each constraint the total number of linear variables |
quadvars1 | array containing for each constraint the first variables of the quadratic terms |
quadvars2 | array containing for each constraint the second variables of the quadratic terms |
quadcoefs | array containing for each constraint the coefficients of the quadratic terms |
nquadterms | array containing for each constraint the total number of quadratic terms |
nlexprs | array containing for each constraint the nonlinear part |
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 627 of file reader_osil.c.
References assert(), c, createConstraint(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, SCIPinfinity(), SCIPsnprintf(), 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 occurred |
Definition at line 781 of file reader_osil.c.
References assert(), FALSE, NULL, SCIP_Bool, SCIP_Real, 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 |
nconss | number of constraints |
linvars | array to store for each constraint the linear variables |
lincoefs | array to store for each constraint the coefficients of the linear variables |
nlinvars | array to store for each constraint the total number of linear variables |
doingfine | buffer to indicate whether no errors occurred |
Definition at line 847 of file reader_osil.c.
References assert(), c, FALSE, nterms, NULL, nvars, readMultIncr(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBlockMemoryArray, SCIPallocBufferArray, SCIPerrorMessage, SCIPfreeBufferArrayNull, SCIPisFinite, TRUE, vars, 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 |
nconss | number of constraints |
quadvars1 | array to store for each constraint the first variables of the quadratic terms |
quadvars2 | array to store for each constraint the second variables of the quadratic terms |
quadcoefs | array to store for each constraint the coefficients of the quadratic terms |
nquadterms | array to store for each constraint the total number of quadratic terms |
termssize | pointer to store the size of quadvars1, quadvars2, and quadcoefs |
doingfine | buffer to indicate whether no errors occurred |
Definition at line 1228 of file reader_osil.c.
References assert(), FALSE, NULL, nvars, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPcalcMemGrowSize(), SCIPerrorMessage, SCIPreallocBlockMemoryArray, vars, 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 |
vars | variables in order of OSiL indices |
nvars | total number of variables in problem |
doingfine | buffer to indicate whether no errors occurred |
Definition at line 1410 of file reader_osil.c.
References assert(), FALSE, i, M_PI, NULL, nvars, readExpression(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPcalcMemGrowSize(), SCIPcaptureExpr(), SCIPcreateExprAbs(), SCIPcreateExprCos(), SCIPcreateExprErf(), SCIPcreateExprExp(), SCIPcreateExprLog(), SCIPcreateExprPow(), SCIPcreateExprProduct(), SCIPcreateExprQuadratic(), SCIPcreateExprSignpower(), SCIPcreateExprSin(), SCIPcreateExprSum(), SCIPcreateExprValue(), SCIPcreateExprVar(), SCIPerrorMessage, SCIPfreeBufferArray, SCIPgetValueExprValue(), SCIPisExprValue(), SCIPisFinite, SCIPreallocBufferArray, SCIPreleaseExpr(), SCIPwarningMessage(), vars, xmlFirstChild(), xmlGetAttrval(), xmlGetName(), and xmlNextSibl().
Referenced by readExpression(), and 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 |
nconss | number of constraints |
exprs | array to store for each constraint a nonlinear expression |
doingfine | buffer to indicate whether no errors occurred |
Definition at line 2001 of file reader_osil.c.
References assert(), FALSE, NULL, nvars, readExpression(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPerrorMessage, vars, 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 2111 of file reader_osil.c.
References assert(), FALSE, NULL, nvars, propagate, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPABORT, SCIPaddCons(), SCIPaddVarSOS1(), SCIPaddVarSOS2(), SCIPcreateConsSOS1(), SCIPcreateConsSOS2(), SCIPerrorMessage, SCIPreleaseCons(), SCIPsnprintf(), TRUE, vars, 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 2306 of file reader_osil.c.
References assert(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPincludeReaderOsil().
|
static |
problem reading method of reader
Definition at line 2317 of file reader_osil.c.
References assert(), c, createConstraint(), FALSE, i, NULL, nvars, readConstraints(), readLinearCoefs(), readNConstraints(), readNonlinearExprs(), readObjective(), readQuadraticCoefs(), readSOScons(), readVariables(), result, SCIP_Bool, SCIP_CALL, SCIP_CALL_TERMINATE, SCIP_DIDNOTRUN, SCIP_OBJSENSE_MAXIMIZE, SCIP_OBJSENSE_MINIMIZE, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIP_READERROR, SCIP_Real, SCIP_SUCCESS, SCIPallocClearBlockMemoryArray, SCIPcreateProb(), SCIPdebug, SCIPerrorMessage, SCIPfreeBlockMemoryArrayNull, SCIPfreeBufferArrayNull, SCIPgetBoolParam(), SCIPgetObjsense(), SCIPinfinity(), SCIPreleaseExpr(), SCIPreleaseVar(), TRUE, vars, xmlFindNodeMaxdepth(), xmlFirstChild(), xmlFreeNode(), xmlGetData(), xmlProcess(), and xmlShowNode().